diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
index 979eea042..b41bf8a90 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
@@ -79,6 +79,7 @@ public final class GlobalConfigurationConstants {
public static final String ASSET_OWNER_TRANSFER_OUTSTANDING_INTEREST_CALCULATION_STRATEGY = "outstanding-interest-calculation-strategy-for-external-asset-transfer";
public static final String ALLOWED_LOAN_STATUSES_FOR_EXTERNAL_ASSET_TRANSFER = "allowed-loan-statuses-for-external-asset-transfer";
public static final String ALLOWED_LOAN_STATUSES_OF_DELAYED_SETTLEMENT_FOR_EXTERNAL_ASSET_TRANSFER = "allowed-loan-statuses-of-delayed-settlement-for-external-asset-transfer";
+ public static final String ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION = "enable-originator-creation-during-loan-application";
private GlobalConfigurationConstants() {}
}
diff --git a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
index 0aa875a3f..b2e74e508 100644
--- a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
+++ b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
@@ -25,4 +25,5 @@
+
diff --git a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml
new file mode 100644
index 000000000..79a87679d
--- /dev/null
+++ b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+ SELECT SETVAL('c_configuration_id_seq', COALESCE(MAX(id), 0)+1, false)
+ FROM c_configuration;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
index a4e0f702e..c0ddce87c 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
@@ -125,4 +125,35 @@ public class GlobalConfigurationTest {
assertEquals(403, exception.getResponse().code());
assertTrue(exception.getMessage().contains("error.msg.password.reset.days.value.must.be.greater.than.zero"));
}
+
+ @Test
+ public void testOriginatorCreationConfigurationExists() {
+ String configName = GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION;
+ GlobalConfigurationPropertyData config = globalConfigurationHelper.getGlobalConfigurationByName(configName);
+
+ Assertions.assertNotNull(config, "Configuration should exist");
+ assertEquals(configName, config.getName(), "Configuration name should match");
+ assertEquals(false, config.getEnabled(), "Configuration should be disabled by default");
+ assertEquals(false, config.getTrapDoor(), "Configuration should not be a trap door");
+ }
+
+ @Test
+ public void testOriginatorCreationConfigurationCanBeEnabled() {
+ String configName = GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION;
+ GlobalConfigurationPropertyData config = globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ Assertions.assertNotNull(config);
+
+ try {
+ globalConfigurationHelper.updateGlobalConfiguration(configName, new PutGlobalConfigurationsRequest().enabled(true));
+ GlobalConfigurationPropertyData enabledConfig = globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ assertEquals(true, enabledConfig.getEnabled(), "Configuration should be enabled after update");
+
+ globalConfigurationHelper.updateGlobalConfiguration(configName, new PutGlobalConfigurationsRequest().enabled(false));
+ GlobalConfigurationPropertyData disabledConfig = globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ assertEquals(false, disabledConfig.getEnabled(), "Configuration should be disabled after update");
+ } finally {
+ globalConfigurationHelper.updateGlobalConfiguration(configName,
+ new PutGlobalConfigurationsRequest().enabled(config.getEnabled()));
+ }
+ }
}
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
index 831ae45fc..10f3290aa 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
@@ -585,6 +585,14 @@ public class GlobalConfigurationHelper {
"ACTIVE,TRANSFER_IN_PROGRESS,TRANSFER_ON_HOLD,OVERPAID,CLOSED_OBLIGATIONS_MET");
defaults.add(allowedLoanStatusesForDelayedSettlementExternalAssetTransfer);
+ HashMap enableOriginatorCreationDuringLoanApplication = new HashMap<>();
+ enableOriginatorCreationDuringLoanApplication.put("name",
+ GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION);
+ enableOriginatorCreationDuringLoanApplication.put("value", 0L);
+ enableOriginatorCreationDuringLoanApplication.put("enabled", false);
+ enableOriginatorCreationDuringLoanApplication.put("trapDoor", false);
+ defaults.add(enableOriginatorCreationDuringLoanApplication);
+
return defaults;
}