This is an automated email from the ASF dual-hosted git repository.

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 2620c61afa FINERACT-2418: add originator global config
2620c61afa is described below

commit 2620c61afaf5bcd8cbc6debf4c7723828b942f26
Author: Attila Budai <[email protected]>
AuthorDate: Tue Feb 3 15:30:50 2026 +0100

    FINERACT-2418: add originator global config
---
 .../api/GlobalConfigurationConstants.java          |  1 +
 .../loanorigination/module-changelog-master.xml    |  1 +
 .../0004_add_global_config_originator_creation.xml | 44 ++++++++++++++++++++++
 .../integrationtests/GlobalConfigurationTest.java  | 31 +++++++++++++++
 .../common/GlobalConfigurationHelper.java          |  8 ++++
 5 files changed, 85 insertions(+)

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 979eea042c..b41bf8a90f 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 0aa875a3fe..b2e74e5084 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 @@
   <include relativeToChangelogFile="true" 
file="parts/0001_initial_schema.xml"/>
   <include relativeToChangelogFile="true" file="parts/0002_permissions.xml"/>
   <include relativeToChangelogFile="true" 
file="parts/0003_mapping_permissions.xml"/>
+  <include relativeToChangelogFile="true" 
file="parts/0004_add_global_config_originator_creation.xml"/>
 </databaseChangeLog>
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 0000000000..79a87679d2
--- /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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog";
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                   
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
+                   
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd";>
+    <changeSet author="fineract" id="1" context="postgresql">
+        <sql>
+            SELECT SETVAL('c_configuration_id_seq', COALESCE(MAX(id), 0)+1, 
false)
+            FROM c_configuration;
+        </sql>
+    </changeSet>
+    <changeSet author="fineract" id="2">
+        <insert tableName="c_configuration">
+            <column name="name" 
value="enable-originator-creation-during-loan-application"/>
+            <column name="value"/>
+            <column name="date_value"/>
+            <column name="string_value"/>
+            <column name="enabled" valueBoolean="false"/>
+            <column name="is_trap_door" valueBoolean="false"/>
+            <column name="description"
+                    value="When enabled, allows creating new loan originators 
on-the-fly during loan application if the provided externalId does not exist in 
the registry"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
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 a4e0f702e8..c0ddce87c9 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 831ae45fc7..10f3290aa3 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<String, Object> 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;
     }
 

Reply via email to