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 0c7ef324b FINERACT-2070: COB business step order
0c7ef324b is described below

commit 0c7ef324b924944f95a5055e36f6015f383557ef
Author: Adam Saghy <[email protected]>
AuthorDate: Fri Nov 22 17:53:37 2024 +0100

    FINERACT-2070: COB business step order
---
 .../core/config/FineractProperties.java            |   3 +
 .../apache/fineract/test/api/ApiProperties.java    |   2 +
 .../test/api/FineractClientConfiguration.java      |   8 +-
 .../fineract/test/helper/WorkFlowJobHelper.java    |  44 ++++-
 .../base/BaseFineractInitializerConfiguration.java |   6 +-
 .../test/initializer/base/FineractInitializer.java |   7 -
 .../global/CobBusinessStepInitializerStep.java     |  30 +---
 .../test/stepdef/common/BusinessStepStepDef.java   | 178 ---------------------
 .../fineract/test/support/TestContextKey.java      |   1 -
 .../resources/fineract-test-application.properties |   2 +
 .../src/test/resources/features/0_COB.feature      |   2 -
 .../features/AssetExternalization.feature          |  96 -----------
 .../test/resources/features/EMICalculation.feature |  70 +-------
 .../src/test/resources/features/Loan.feature       |   6 -
 .../resources/features/LoanAccrualActivity.feature |  24 +--
 .../features/LoanAccrualTransaction.feature        |  12 +-
 .../test/resources/features/LoanRepayment.feature  |   2 -
 .../infrastructure/core/config/OkHttp3Config.java  |   6 +-
 .../src/main/resources/application.properties      |   3 +
 .../src/test/resources/application-test.properties |   4 +
 20 files changed, 87 insertions(+), 419 deletions(-)

diff --git 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
 
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
index c0b648336..39f75109f 100644
--- 
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
+++ 
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
@@ -39,6 +39,9 @@ public class FineractProperties {
     private String idempotencyKeyHeaderName;
 
     private Boolean insecureHttpClient;
+    private long clientConnectTimeout;
+    private long clientReadTimeout;
+    private long clientWriteTimeout;
 
     private FineractTenantProperties tenant;
 
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
index db76dddc2..099288cc6 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
@@ -36,4 +36,6 @@ public class ApiProperties {
     private String strongPassword;
     @Value("${fineract-test.api.tenant-id}")
     private String tenantId;
+    @Value("${fineract-test.client-read-timeout}")
+    private long readTimeout;
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
index dcdff97c9..5f705b301 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
@@ -18,6 +18,7 @@
  */
 package org.apache.fineract.test.api;
 
+import java.time.Duration;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.client.util.FineractClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,11 +38,10 @@ public class FineractClientConfiguration {
         String username = apiProperties.getUsername();
         String password = apiProperties.getPassword();
         String tenantId = apiProperties.getTenantId();
-
+        long readTimeout = apiProperties.getReadTimeout();
         String apiBaseUrl = baseUrl + "/fineract-provider/api/";
-
         log.info("Using base URL '{}'", apiBaseUrl);
-
-        return FineractClient.builder().basicAuth(username, 
password).tenant(tenantId).baseURL(apiBaseUrl).insecure(true).build();
+        return 
FineractClient.builder().readTimeout(Duration.ofSeconds(readTimeout)).basicAuth(username,
 password).tenant(tenantId)
+                .baseURL(apiBaseUrl).insecure(true).build();
     }
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
index c77b2e921..431e67b8d 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
@@ -21,29 +21,57 @@ package org.apache.fineract.test.helper;
 import java.io.IOException;
 import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.client.models.BusinessStep;
 import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
+import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
 import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.support.TestContext;
-import org.apache.fineract.test.support.TestContextKey;
 import org.springframework.stereotype.Component;
 import retrofit2.Response;
 
 @RequiredArgsConstructor
 @Component
+@Slf4j
 public class WorkFlowJobHelper {
 
     private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS = 
"LOAN_CLOSE_OF_BUSINESS";
 
     private final BusinessStepConfigurationApi businessStepConfigurationApi;
 
-    public void saveOriginalCOBWorkflowJobBusinessStepList() throws 
IOException {
-        Response<GetBusinessStepConfigResponse> businessStepConfigResponse = 
businessStepConfigurationApi
+    public void setWorkflowJobs() throws IOException {
+        List<BusinessStep> businessSteps = List.of(new 
BusinessStep().stepName("APPLY_CHARGE_TO_OVERDUE_LOANS").order(1L), //
+                new 
BusinessStep().stepName("LOAN_DELINQUENCY_CLASSIFICATION").order(2L), //
+                new 
BusinessStep().stepName("CHECK_LOAN_REPAYMENT_DUE").order(3L), //
+                new 
BusinessStep().stepName("CHECK_LOAN_REPAYMENT_OVERDUE").order(4L), //
+                new 
BusinessStep().stepName("CHECK_DUE_INSTALLMENTS").order(5L), //
+                new 
BusinessStep().stepName("UPDATE_LOAN_ARREARS_AGING").order(6L), //
+                new 
BusinessStep().stepName("ADD_PERIODIC_ACCRUAL_ENTRIES").order(7L), //
+                new 
BusinessStep().stepName("ACCRUAL_ACTIVITY_POSTING").order(8L), //
+                new 
BusinessStep().stepName("LOAN_INTEREST_RECALCULATION").order(9L), //
+                new 
BusinessStep().stepName("EXTERNAL_ASSET_OWNER_TRANSFER").order(10L)//
+        );
+        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
+        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
+                .execute();
+        ErrorHelper.checkSuccessfulApiCall(response);
+        // --- log changes ---
+        logChanges();
+    }
+
+    private void logChanges() throws IOException {
+        // --- log changes ---
+        Response<GetBusinessStepConfigResponse> changesResponse = 
businessStepConfigurationApi
                 
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
-        ErrorHelper.checkSuccessfulApiCall(businessStepConfigResponse);
-        List<BusinessStep> businessSteps = 
businessStepConfigResponse.body().getBusinessSteps();
-        businessSteps.sort(Comparator.comparingLong(BusinessStep::getOrder));
-        
TestContext.GLOBAL.set(TestContextKey.ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST,
 businessSteps);
+        List<BusinessStep> businessStepsChanged = 
changesResponse.body().getBusinessSteps();
+        List<String> changes = businessStepsChanged//
+                .stream()//
+                .sorted(Comparator.comparingLong(BusinessStep::getOrder))//
+                .map(BusinessStep::getStepName)//
+                .collect(Collectors.toList());//
+
+        log.debug("Business steps has been CHANGED to the following:");
+        changes.forEach(e -> log.debug(e));
     }
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
index afb74e3ec..f1a624e97 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
@@ -21,7 +21,6 @@ package org.apache.fineract.test.initializer.base;
 import java.util.List;
 import org.apache.fineract.test.config.CacheConfiguration;
 import org.apache.fineract.test.helper.BusinessDateHelper;
-import org.apache.fineract.test.helper.WorkFlowJobHelper;
 import 
org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
 import 
org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
 import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -40,8 +39,7 @@ public class BaseFineractInitializerConfiguration {
     @Bean
     public FineractInitializer 
fineractInitializer(List<FineractGlobalInitializerStep> globalInitializerSteps,
             List<FineractSuiteInitializerStep> suiteInitializerSteps, 
List<FineractScenarioInitializerStep> scenarioInitializerSteps,
-            BusinessDateHelper businessDateHelper, WorkFlowJobHelper 
workFlowJobHelper) {
-        return new FineractInitializer(globalInitializerSteps, 
suiteInitializerSteps, scenarioInitializerSteps, businessDateHelper,
-                workFlowJobHelper);
+            BusinessDateHelper businessDateHelper) {
+        return new FineractInitializer(globalInitializerSteps, 
suiteInitializerSteps, scenarioInitializerSteps, businessDateHelper);
     }
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
index a67ce2125..d08129406 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
@@ -23,7 +23,6 @@ import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.test.helper.BusinessDateHelper;
-import org.apache.fineract.test.helper.WorkFlowJobHelper;
 import 
org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
 import 
org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
 import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -39,7 +38,6 @@ public class FineractInitializer implements InitializingBean {
     private final List<FineractSuiteInitializerStep> suiteInitializerSteps;
     private final List<FineractScenarioInitializerStep> 
scenarioInitializerSteps;
     private final BusinessDateHelper businessDateHelper;
-    private final WorkFlowJobHelper workFlowJobHelper;
 
     @Override
     public void afterPropertiesSet() throws Exception {
@@ -63,7 +61,6 @@ public class FineractInitializer implements InitializingBean {
         for (FineractGlobalInitializerStep initializerStep : 
globalInitializerSteps) {
             initializerStep.initialize();
         }
-
         businessDateHelper.setBusinessDateToday();
     }
 
@@ -71,16 +68,13 @@ public class FineractInitializer implements 
InitializingBean {
         for (FineractSuiteInitializerStep initializerStep : 
suiteInitializerSteps) {
             initializerStep.initializeForSuite();
         }
-
         businessDateHelper.setBusinessDateToday();
-        workFlowJobHelper.saveOriginalCOBWorkflowJobBusinessStepList();
     }
 
     public void setupDefaultsForScenario() throws Exception {
         for (FineractScenarioInitializerStep scenarioInitializerStep : 
scenarioInitializerSteps) {
             scenarioInitializerStep.initializeForScenario();
         }
-
         businessDateHelper.setBusinessDateToday();
     }
 
@@ -88,7 +82,6 @@ public class FineractInitializer implements InitializingBean {
         for (FineractSuiteInitializerStep initializerStep : 
suiteInitializerSteps) {
             initializerStep.resetAfterSuite();
         }
-
         businessDateHelper.setBusinessDateToday();
     }
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
index 4167d36cc..b5f08f40e 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
@@ -18,42 +18,18 @@
  */
 package org.apache.fineract.test.initializer.global;
 
-import java.util.Comparator;
-import java.util.List;
 import lombok.RequiredArgsConstructor;
-import org.apache.fineract.client.models.BusinessStep;
-import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
-import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
-import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.helper.ErrorHelper;
+import org.apache.fineract.test.helper.WorkFlowJobHelper;
 import org.springframework.stereotype.Component;
-import retrofit2.Response;
 
 @RequiredArgsConstructor
 @Component
 public class CobBusinessStepInitializerStep implements 
FineractGlobalInitializerStep {
 
-    private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS = 
"LOAN_CLOSE_OF_BUSINESS";
-    private static final String BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING = 
"ACCRUAL_ACTIVITY_POSTING";
-    private final BusinessStepConfigurationApi businessStepConfigurationApi;
+    private final WorkFlowJobHelper workFlowJobHelper;
 
     @Override
     public void initialize() throws Exception {
-        // --- Adding ACCRUAL_ACTIVITY_POSTING to default COB steps ---
-        Response<GetBusinessStepConfigResponse> businessStepConfigResponse = 
businessStepConfigurationApi
-                
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
-        ErrorHelper.checkSuccessfulApiCall(businessStepConfigResponse);
-        List<BusinessStep> businessSteps = 
businessStepConfigResponse.body().getBusinessSteps();
-        businessSteps.sort(Comparator.comparingLong(BusinessStep::getOrder));
-        Long lastOrder = businessSteps.get(businessSteps.size() - 
1).getOrder();
-
-        BusinessStep accrualActivityPosting = new 
BusinessStep().stepName(BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING).order(lastOrder
 + 1);
-        businessSteps.add(accrualActivityPosting);
-
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
+        workFlowJobHelper.setWorkflowJobs();
     }
 }
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
deleted file mode 100644
index 554999713..000000000
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * 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.
- */
-package org.apache.fineract.test.stepdef.common;
-
-import io.cucumber.java.en.Given;
-import io.cucumber.java.en.Then;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.fineract.client.models.BusinessStep;
-import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
-import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
-import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.data.CobBusinessStep;
-import org.apache.fineract.test.helper.ErrorHelper;
-import org.apache.fineract.test.stepdef.AbstractStepDef;
-import org.apache.fineract.test.support.TestContext;
-import org.apache.fineract.test.support.TestContextKey;
-import org.springframework.beans.factory.annotation.Autowired;
-import retrofit2.Response;
-
-@Slf4j
-public class BusinessStepStepDef extends AbstractStepDef {
-
-    private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS = 
"LOAN_CLOSE_OF_BUSINESS";
-    private static final String 
BUSINESS_STEP_NAME_APPLY_CHARGE_TO_OVERDUE_LOANS = 
"APPLY_CHARGE_TO_OVERDUE_LOANS";
-    private static final String 
BUSINESS_STEP_NAME_LOAN_DELINQUENCY_CLASSIFICATION = 
"LOAN_DELINQUENCY_CLASSIFICATION";
-    private static final String BUSINESS_STEP_NAME_CHECK_LOAN_REPAYMENT_DUE = 
"CHECK_LOAN_REPAYMENT_DUE";
-    private static final String 
BUSINESS_STEP_NAME_CHECK_LOAN_REPAYMENT_OVERDUE = 
"CHECK_LOAN_REPAYMENT_OVERDUE";
-    private static final String BUSINESS_STEP_NAME_UPDATE_LOAN_ARREARS_AGING = 
"UPDATE_LOAN_ARREARS_AGING";
-    private static final String 
BUSINESS_STEP_NAME_ADD_PERIODIC_ACCRUAL_ENTRIES = 
"ADD_PERIODIC_ACCRUAL_ENTRIES";
-    private static final String 
BUSINESS_STEP_NAME_EXTERNAL_ASSET_OWNER_TRANSFER = 
"EXTERNAL_ASSET_OWNER_TRANSFER";
-    private static final String BUSINESS_STEP_NAME_CHECK_DUE_INSTALLMENTS = 
"CHECK_DUE_INSTALLMENTS";
-    private static final String BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING = 
"ACCRUAL_ACTIVITY_POSTING";
-    private static final List<BusinessStep> ORIGINAL_COB_BUSINESS_STEPS = 
TestContext.GLOBAL
-            .get(TestContextKey.ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST);
-
-    @Autowired
-    private BusinessStepConfigurationApi businessStepConfigurationApi;
-
-    @Given("Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow")
-    public void putExternalAssetOwnerTransferJobInCOB() throws IOException {
-        List<BusinessStep> businessSteps = new 
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
-        Long lastOrder = businessSteps.get(businessSteps.size() - 
1).getOrder();
-
-        BusinessStep externalAssetOwnerTransfer = new 
BusinessStep().stepName(BUSINESS_STEP_NAME_EXTERNAL_ASSET_OWNER_TRANSFER)
-                .order(lastOrder + 1);
-        businessSteps.add(externalAssetOwnerTransfer);
-
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
-
-        // --- log changes ---
-        logChanges();
-    }
-
-    @Then("Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow")
-    public void removeExternalAssetOwnerTransferJobInCOB() throws IOException {
-        setBackBusinessStepsToOriginal();
-    }
-
-    @Given("Admin puts CHECK_DUE_INSTALLMENTS job into LOAN_CLOSE_OF_BUSINESS 
workflow")
-    public void putCheckDueInstallmentsJobInCOB() throws IOException {
-        List<BusinessStep> businessSteps = new 
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
-        Long lastOrder = businessSteps.get(businessSteps.size() - 
1).getOrder();
-
-        BusinessStep checkDueInstallments = new 
BusinessStep().stepName(BUSINESS_STEP_NAME_CHECK_DUE_INSTALLMENTS).order(lastOrder
 + 1);
-        businessSteps.add(checkDueInstallments);
-
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
-
-        // --- log changes ---
-        logChanges();
-    }
-
-    @Then("Admin removes CHECK_DUE_INSTALLMENTS job from 
LOAN_CLOSE_OF_BUSINESS workflow")
-    public void removeCheckDueInstallmentsJobInCOB() throws IOException {
-        setBackBusinessStepsToOriginal();
-    }
-
-    @Given("Admin puts {string} business step into LOAN_CLOSE_OF_BUSINESS 
workflow")
-    public void putGivenJobInCOB(String businessStepName) throws IOException {
-        List<BusinessStep> businessSteps = new 
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
-        Long lastOrder = businessSteps.get(businessSteps.size() - 
1).getOrder();
-
-        CobBusinessStep cobBusinessStep = 
CobBusinessStep.valueOf(businessStepName);
-        String stepName = cobBusinessStep.getValue();
-
-        BusinessStep businessStepToAdd = new 
BusinessStep().stepName(stepName).order(lastOrder + 1);
-        businessSteps.add(businessStepToAdd);
-
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
-
-        // --- log changes ---
-        logChanges();
-    }
-
-    @Then("Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial 
state")
-    public void setBackCOBToInitialState() throws IOException {
-        setBackBusinessStepsToOriginal();
-    }
-
-    @Then("Admin removes {string} business step into LOAN_CLOSE_OF_BUSINESS 
workflow")
-    public void removeGivenJobInCOB(String businessStepName) throws 
IOException {
-        List<BusinessStep> businessSteps = new 
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
-
-        CobBusinessStep cobBusinessStep = 
CobBusinessStep.valueOf(businessStepName);
-        String stepName = cobBusinessStep.getValue();
-
-        businessSteps.removeIf(businessStep -> 
businessStep.getStepName().equals(stepName));
-
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
-
-        // --- log changes ---
-        logChanges();
-    }
-
-    private void setBackBusinessStepsToOriginal() throws IOException {
-        log.debug("Setting back Business steps to original...");
-        UpdateBusinessStepConfigRequest request = new 
UpdateBusinessStepConfigRequest().businessSteps(ORIGINAL_COB_BUSINESS_STEPS);
-
-        Response<Void> response = 
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
 request)
-                .execute();
-        ErrorHelper.checkSuccessfulApiCall(response);
-
-        // --- log changes ---
-        logChanges();
-    }
-
-    private void logChanges() throws IOException {
-        // --- log changes ---
-        Response<GetBusinessStepConfigResponse> changesResponse = 
businessStepConfigurationApi
-                
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
-        List<BusinessStep> businessStepsChanged = 
changesResponse.body().getBusinessSteps();
-        List<String> changes = businessStepsChanged//
-                .stream()//
-                .sorted(Comparator.comparingLong(BusinessStep::getOrder))//
-                .map(BusinessStep::getStepName)//
-                .collect(Collectors.toList());//
-
-        log.debug("Business steps has been CHANGED to the following:");
-        changes.forEach(e -> log.debug(e));
-    }
-}
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
index 553b6cf0b..6cc09c694 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
@@ -24,7 +24,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public abstract class TestContextKey {
 
-    public static final String ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST = 
"originalCOBWorkflowJobBusinessStepList";
     public static final String CLIENT_CREATE_RESPONSE = "clientCreateResponse";
     public static final String CLIENT_CREATE_SECOND_CLIENT_RESPONSE = 
"clientCreateSecondClientResponse";
     public static final String LOAN_CREATE_RESPONSE = "loanCreateResponse";
diff --git 
a/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
 
b/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
index 63365475e..2561aea99 100644
--- 
a/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
+++ 
b/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
@@ -38,3 +38,5 @@ fineract-test.messaging.jms.topic-name=${ACTIVEMQ_TOPIC_NAME:}
 
 fineract-test.event.wait-timeout-in-sec=${EVENT_WAIT_TIMEOUT_IN_SEC:5}
 fineract-test.event.verification-enabled=${EVENT_VERIFICATION_ENABLED:false}
+
+fineract-test.client-read-timeout=${CLIENT_READ_TIMEOUT:60}
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature 
b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
index e67b36b27..3a0cf00c2 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
@@ -216,7 +216,6 @@ Feature: COBFeature
 
   @TestRailId:C3044 @AdvancedPaymentAllocation
   Scenario: Verify that LoanAccountCustomSnapshotBusinessEvent is created with 
proper business date when installment is due date and COB runs
-    Given Admin puts CHECK_DUE_INSTALLMENTS job into LOAN_CLOSE_OF_BUSINESS 
workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set "LP2_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION" loan 
product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment 
allocation rule
@@ -228,6 +227,5 @@ Feature: COBFeature
     When Admin sets the business date to "17 January 2024"
     When Admin runs inline COB job for Loan
     Then LoanAccountCustomSnapshotBusinessEvent is created with business date 
"17 January 2024"
-    Then Admin removes CHECK_DUE_INSTALLMENTS job from LOAN_CLOSE_OF_BUSINESS 
workflow
 
 
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
 
b/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
index 05f120a12..eb0f9453e 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
@@ -3,7 +3,6 @@ Feature: Asset Externalization
 
   @TestRailId:C2722
   Scenario: Verify that all fields and values are correct in case of a SALES 
request by loan id and user-generated transferExternalId
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -24,11 +23,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status  | effectiveFrom | 
effectiveTo | Transaction type |
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
9999-12-31  | SALE             |
     Then Asset externalization details has the generated transferExternalId
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2723
   Scenario: Verify that all fields and values are correct in case of a SALES 
request by loan id system-generated transferExternalId
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -49,11 +46,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status  | effectiveFrom | 
effectiveTo | Transaction type |
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
9999-12-31  | SALE             |
     Then Asset externalization details has the generated transferExternalId
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2724
   Scenario: Verify that all fields and values are correct in case of a SALES 
request by loan external id user-generated transferExternalId
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -74,11 +69,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status  | effectiveFrom | 
effectiveTo | Transaction type |
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
9999-12-31  | SALE             |
     Then Asset externalization details has the generated transferExternalId
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2725
   Scenario: Verify that all fields and values are correct in case of a SALES 
request by loan external id system-generated transferExternalId
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -99,11 +92,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status  | effectiveFrom | 
effectiveTo | Transaction type |
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
9999-12-31  | SALE             |
     Then Asset externalization details has the generated transferExternalId
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2727
   Scenario: Verify that Asset externalization details are correct after CoB in 
case of a SALES request by loan id
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -123,11 +114,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status  | effectiveFrom | 
effectiveTo | Transaction type |
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2729
   Scenario: Verify that Asset externalization details has the correct data in 
case of a BUYBACK request placed before the settlementDate with a same 
settlementDate as the sales one
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -159,11 +148,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | BUYBACK   | 2023-05-10    | 
2023-05-21  | BUYBACK          |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-21    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-21    | 
2023-05-21  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2730
   Scenario: Verify that Asset externalization details has the correct data in 
case of a BUYBACK request placed on a business date before the settlementDate 
of sales request and with a settlementDate for buyback after the sales got 
active
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -200,11 +187,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-10    | 
2023-05-30  | BUYBACK          |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
2023-05-30  | SALE             |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2731
   Scenario: Verify that Asset externalization details has the correct data in 
case of a BUYBACK request placed after the settlementDate
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -245,11 +230,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
2023-05-30  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
2023-05-30  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2732
   Scenario: Verify that BUYBACK request on a loan with PENDING ownership where 
BUYBACK settlement date is earlier than SALE settlement date results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -268,11 +251,9 @@ Feature: Asset Externalization
     Then BUYBACK transaction results a 403 error and proper error message when 
its settlementDate is earlier than the original settlementDate
       | Transaction type | settlementDate |
       | buyback          | 2023-05-15     |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2733
   Scenario: Verify that SALES request on a fully paid loan results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -284,11 +265,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "LOAN_NOT_ACTIVE" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-21     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2734
   Scenario: Verify that SALES request on an overpaid loan results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -300,11 +279,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "LOAN_NOT_ACTIVE" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-21     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2735
   Scenario: Verify that SALES request on a loan with ACTIVE ownership results 
an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -330,11 +307,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "ASSET_OWNED_CANNOT_BE_SOLD" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-30     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2736
   Scenario: Verify that BUYBACK request on a fully paid loan can be done 
successfully
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -367,11 +342,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
9999-12-31  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2737
   Scenario: Verify that BUYBACK request on an overpaid loan can be done 
successfully
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -404,11 +377,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
9999-12-31  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2738
   Scenario: Verify that BUYBACK request on a loan with INACTIVE ownership 
results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -418,11 +389,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "ASSET_NOT_OWNED_CANNOT_BE_BOUGHT" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | buyback          | 2023-05-21     |                    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2739
   Scenario: Verify that SALES request can NOT be placed on a loan which is not 
APPROVED yet
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -430,11 +399,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "LOAN_NOT_ACTIVE" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-30     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2740
   Scenario: Verify that SALES request can NOT be placed on a loan which is not 
DISBURSED yet
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -443,11 +410,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "LOAN_NOT_ACTIVE" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-30     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2741
   Scenario: Verify that SALES request on a loan with PENDING ownership results 
an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -466,11 +431,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "ALREADY_PENDING" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-30     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2742
   Scenario: Verify that SALES with settlement date earlier than actual 
business date results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -480,11 +443,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "SETTLEMENT_DATE_IN_THE_PAST" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-04-21     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2743
   Scenario: Verify that SALES with null owner external id results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -494,11 +455,9 @@ Feature: Asset Externalization
     Then Asset externalization SALES transaction with ownerExternalId = null 
and the following data results a 400 error and "INVALID_REQUEST" error message
       | settlementDate | purchasePriceRatio |
       | 2023-05-21     | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2744
   Scenario: Verify that SALES with null purchase price ratio results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -508,11 +467,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
400 error and "INVALID_REQUEST" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             | 2023-05-21     |                    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2745
   Scenario: Verify that SALES with null settlement date results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -522,11 +479,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
400 error and "INVALID_REQUEST" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | sale             |                | 1                  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2746
   Scenario: Verify that BUYBACK request on a loan with PENDING BUYBACK 
ownership result an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -563,11 +518,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "BUYBACK_ALREADY_IN_PROGRESS_CANNOT_BE_BOUGHT" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | buyback          | 2023-05-30     |                    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2747
   Scenario: Verify that BUYBACK with settlement date earlier than actual 
business date results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -594,11 +547,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
403 error and "SETTLEMENT_DATE_IN_THE_PAST" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | buyback          | 2023-05-21     |                    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2748
   Scenario: Verify that BUYBACK with ownerExternalId=NULL can be placed, and 
results a 200OK response
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -628,11 +579,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
9999-12-31  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2749
   Scenario: Verify that BUYBACK with purchasePriceRatio=NULL can be placed, 
and results a 200OK response
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -664,11 +613,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
9999-12-31  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2750
   Scenario: Verify that SALES with null settlement date results an error
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -695,11 +642,9 @@ Feature: Asset Externalization
     Then Asset externalization transaction with the following data results a 
400 error and "INVALID_REQUEST" error message
       | Transaction type | settlementDate | purchasePriceRatio |
       | buyback          |                |                    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2751 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: no other transactions
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -757,11 +702,9 @@ Feature: Asset Externalization
       | glAccountType | glAccountCode | glAccountName    | entryType | amount  
|
       | ASSET         | 112601        | Loans Receivable | DEBIT     | 1000.00 
|
       | ASSET         | 112601        | Loans Receivable | CREDIT    | 1000.00 
|
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2752 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: fee applied before sale, and penalty applied before 
buyback
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -834,11 +777,9 @@ Feature: Asset Externalization
       | INCOME        | 404007        | Fee Income              | CREDIT    | 
20.00   |
       | ASSET         | 112601        | Loans Receivable        | CREDIT    | 
1000.00 |
       | ASSET         | 112603        | Interest/Fee Receivable | CREDIT    | 
30.00   |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2753 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: Repyment while status is ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -899,11 +840,9 @@ Feature: Asset Externalization
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 200.00  |
       | LIABILITY     | 145023        | Suspense/Clearing account | DEBIT     
| 200.00  |
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 800.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2754 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: GOODWILL_CREDIT transaction while status is ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -964,11 +903,9 @@ Feature: Asset Externalization
       | ASSET         | 112601        | Loans Receivable         | CREDIT    | 
200.00  |
       | EXPENSE       | 744003        | Goodwill Expense Account | DEBIT     | 
200.00  |
       | ASSET         | 112601        | Loans Receivable         | CREDIT    | 
800.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2755 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: MERCHANT_ISSUED_REFUND transaction while status is 
ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1029,11 +966,9 @@ Feature: Asset Externalization
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 200.00  |
       | LIABILITY     | 145023        | Suspense/Clearing account | DEBIT     
| 200.00  |
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 800.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2756 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: PAYOUT_REFUND transaction while status is ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1094,11 +1029,9 @@ Feature: Asset Externalization
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 200.00  |
       | LIABILITY     | 145023        | Suspense/Clearing account | DEBIT     
| 200.00  |
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 800.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2757 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: REPAYMENT_ADJUSTMENT_REFUND chargeback transaction 
while status is ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1164,11 +1097,9 @@ Feature: Asset Externalization
       | ASSET         | 112601        | Loans Receivable          | DEBIT     
| 800.00  |
       | LIABILITY     | 145023        | Suspense/Clearing account | CREDIT    
| 800.00  |
       | ASSET         | 112601        | Loans Receivable          | CREDIT    
| 800.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2758 @AssetExternalizationJournalEntry
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: CHARGE ADJUSTMENT transaction while status is ACTIVE
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1237,11 +1168,9 @@ Feature: Asset Externalization
       | INCOME        | 404007        | Fee Income              | DEBIT     | 
100.00  |
       | ASSET         | 112601        | Loans Receivable        | CREDIT    | 
1000.00 |
       | ASSET         | 112603        | Interest/Fee Receivable | CREDIT    | 
200.00  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2759
   Scenario: Verify that LoanOwnershipTransferBusinessEvent and 
LoanAccountSnapshotBusinessEvent is created with correct data
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1277,11 +1206,9 @@ Feature: Asset Externalization
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
2023-05-30  | BUYBACK          |
     Then LoanOwnershipTransferBusinessEvent is created
     Then LoanAccountSnapshotBusinessEvent is created
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2760
   Scenario: Verify that LoanOwnershipTransferBusinessEvent and 
LoanAccountSnapshotBusinessEvent is created with correct data for partial 
repayment, fee, penalty
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1320,11 +1247,9 @@ Feature: Asset Externalization
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-25    | 
2023-05-30  | BUYBACK          |
     Then LoanOwnershipTransferBusinessEvent is created
     Then LoanAccountSnapshotBusinessEvent is created
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2771
   Scenario: Verify that SALE and BUYBACK can be cancelled in right order
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1361,11 +1286,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | BUYBACK   | 2023-05-10    | 
2023-05-10  |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-10    | 
2023-05-10  |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-01    | 
2023-05-10  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2772
   Scenario: Verify that SALE can be cancelled
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1385,11 +1308,9 @@ Feature: Asset Externalization
       | settlementDate | purchasePriceRatio | status    | effectiveFrom | 
effectiveTo |
       | 2023-05-21     | 1                  | PENDING   | 2023-05-01    | 
2023-05-10  |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-01    | 
2023-05-10  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2773
   Scenario: Verify that active SALE can not be cancelled
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1410,11 +1331,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
     When Admin send "cancel" command on "SALE" transaction it will throw an 
error
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2774
   Scenario: Verify that Asset cannot be cancelled after SALE and BUYBACK is 
completed
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1452,11 +1371,9 @@ Feature: Asset Externalization
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-10    | 
2023-05-30  | BUYBACK          |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
2023-05-30  | SALE             |
     When Admin send "cancel" command on "SALE" transaction it will throw an 
error
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2775
   Scenario: Verify that SALE and BUYBACK can be cancelled in right order with 
double cancel test
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1513,11 +1430,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | BUYBACK   | 2023-05-10    | 
2023-05-10  |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-10    | 
2023-05-10  |
       | 2023-05-21     | 1                  | CANCELLED | 2023-05-01    | 
2023-05-10  |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2785
   Scenario: Verify that when a loan with PENDING SALES is fully paid asset 
transfer status will be DECLINED
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1539,11 +1454,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING  | 2023-05-01    | 
2023-05-15  | SALE             |
       | 2023-05-21     | 1                  | DECLINED | 2023-05-15    | 
2023-05-15  | SALE             |
     Then LoanOwnershipTransferBusinessEvent with transfer status: "DECLINED" 
and transfer status reason "BALANCE_ZERO" is created
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2786
   Scenario: Verify that when a loan with PENDING SALES is overpaid asset 
transfer status will be DECLINED
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1565,11 +1478,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING  | 2023-05-01    | 
2023-05-15  | SALE             |
       | 2023-05-21     | 1                  | DECLINED | 2023-05-15    | 
2023-05-15  | SALE             |
     Then LoanOwnershipTransferBusinessEvent with transfer status: "DECLINED" 
and transfer status reason "BALANCE_NEGATIVE" is created
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2787
   Scenario: Verify that when a loan with PENDING BUYBACK is fully paid BUYBACK 
transaction can be done successfully
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1607,11 +1518,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
2023-05-25  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-22    | 
2023-05-25  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2788
   Scenario: Verify that when a loan with PENDING BUYBACK is overpaid BUYBACK 
transaction can be done successfully
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1649,11 +1558,9 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | PENDING | 2023-05-01    | 
2023-05-21  | SALE             |
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
2023-05-25  | SALE             |
       | 2023-05-30     | 1                  | BUYBACK | 2023-05-22    | 
2023-05-25  | BUYBACK          |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
   @TestRailId:C2811
   Scenario: Verify that transaction and transaction adjustment events has the 
proper external owner
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a new default Loan with date: "1 May 2023"
@@ -1676,12 +1583,10 @@ Feature: Asset Externalization
       | 2023-05-21     | 1                  | ACTIVE  | 2023-05-22    | 
9999-12-31  | SALE             |
     And Customer makes "AUTOPAY" repayment on "22 May 2023" with 10 EUR 
transaction amount and check external owner
     When Customer adjust "1"th repayment on "22 May 2023" with amount "9" and 
check external owner
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
 
 
   @TestRailId:C3193
   Scenario: Verify that Asset externalization SALES and BUYBACK has the 
correct Journal entries: no other transactions - interest bearing loan
-    Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "1 May 2023"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -1774,4 +1679,3 @@ Feature: Asset Externalization
       | INCOME        | 404000        | Interest Income         | CREDIT    | 
0.33    |
       | ASSET         | 112603        | Interest/Fee Receivable | DEBIT     | 
0.33    |
       | INCOME        | 404000        | Interest Income         | CREDIT    | 
0.33    |
-    Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from 
LOAN_CLOSE_OF_BUSINESS workflow
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature 
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
index b406dd041..632bd2004 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
@@ -1871,7 +1871,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3226
   Scenario: Verify interest recalculation in case of overdue installments: UC1 
- 1st installment overdue, interest recalculation: daily, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -1914,11 +1913,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 February 2024 | Accrual          | 0.24   | 0.0       | 0.24     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3227
   Scenario: Verify interest recalculation in case of overdue installments: UC2 
- 1st installment overdue, interest recalculation: daily, till rest frequency 
date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -1961,11 +1958,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 February 2024 | Accrual          | 0.24   | 0.0       | 0.24     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3228
   Scenario: Verify interest recalculation in case of overdue installments: UC3 
- 1st installment overdue, interest recalculation: same as repayment period, 
till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2008,11 +2003,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 February 2024 | Accrual          | 0.26   | 0.0       | 0.26     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3229
   Scenario: Verify interest recalculation in case of overdue installments: UC4 
- 1st installment overdue, interest recalculation: same as repayment period, 
till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2055,11 +2048,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 February 2024 | Accrual          | 0.26   | 0.0       | 0.26     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3230
   Scenario: Verify interest recalculation in case of overdue installments: UC5 
- 1st and 2nd installment overdue, interest recalculation: daily, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2104,11 +2095,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.09   | 0.0       | 0.09     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.12   | 0.0       | 0.12     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3231
   Scenario: Verify interest recalculation in case of overdue installments: UC6 
- 1st and 2nd installment overdue, interest recalculation: daily, till rest 
frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2153,11 +2142,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.09   | 0.0       | 0.09     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.12   | 0.0       | 0.12     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3232
   Scenario: Verify interest recalculation in case of overdue installments: UC7 
- 1st and 2nd installment overdue, interest recalculation: same as repayment 
period, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2202,11 +2189,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.09   | 0.0       | 0.09     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.15   | 0.0       | 0.15     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3233
   Scenario: Verify interest recalculation in case of overdue installments: UC8 
- 1st and 2nd installment overdue, interest recalculation: same as repayment 
period, till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2251,11 +2236,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.09   | 0.0       | 0.09     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.15   | 0.0       | 0.15     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3234
   Scenario: Verify interest recalculation in case of overdue installments: UC9 
- 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: daily, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2319,11 +2302,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.11   | 0.0       | 0.11     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3235
   Scenario: Verify interest recalculation in case of overdue installments: 
UC10 - 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: daily, till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2387,11 +2368,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.11   | 0.0       | 0.11     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3236
   Scenario: Verify interest recalculation in case of overdue installments: 
UC11 - 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: same as repayment period, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2455,11 +2434,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.13   | 0.0       | 0.13     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3237
   Scenario: Verify interest recalculation in case of overdue installments: 
UC12 - 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: same as repayment period, till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2523,11 +2500,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 February 2024 | Accrual          | 0.58   | 0.0       | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 09 March 2024    | Accrual          | 0.13   | 0.0       | 0.13     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3238
   Scenario: Verify interest recalculation in case of overdue installments: 
UC13 - 1st installment paid on due date, 2nd installment overdue with partial 
late repayment, interest recalculation: daily, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2612,11 +2587,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 05 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
       | 09 March 2024    | Accrual          | 0.11   | 0.0       | 0.11     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3239
   Scenario: Verify interest recalculation in case of overdue installments: 
UC14 - 1st installment paid on due date, 2nd installment overdue with partial 
late repayment, interest recalculation: daily, till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2701,11 +2674,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 05 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
       | 09 March 2024    | Accrual          | 0.11   | 0.0       | 0.11     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3240
   Scenario: Verify interest recalculation in case of overdue installments: 
UC15 - 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: same as repayment period, till preclose
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2790,11 +2761,9 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 05 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
       | 09 March 2024    | Accrual          | 0.13   | 0.0       | 0.13     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3241
   Scenario: Verify interest recalculation in case of overdue installments: 
UC16 - 1st installment paid on due date, 2nd installment overdue, interest 
recalculation: same as repayment period, till rest frequency date
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -2879,7 +2848,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 March 2024    | Accrual          | 0.49   | 0.0       | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 05 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
       | 09 March 2024    | Accrual          | 0.13   | 0.0       | 0.13     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3244
   Scenario: Verify support of interest rate calculation with frequency Whole 
term  configured for progressive loan
@@ -3266,7 +3234,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 # TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3251
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC1: 360/30, early repayment with amount less then due interest
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3324,12 +3291,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 January 2024  | Accrual          | 0.02   | 0.0       | 0.02     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 0.2    | 0.0       | 0.2      | 
0.0  | 0.0       | 100.0        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3252
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC2: 360/30, early repayment with amount 1 cent more then due 
interest
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3387,12 +3352,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 January 2024  | Accrual          | 0.02   | 0.0       | 0.02     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 0.27   | 0.01      | 0.26     | 
0.0  | 0.0       | 99.99        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3253
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC3: 360/30, early repayment with less than EMI amount
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3450,12 +3413,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.02   | 0.0       | 0.02     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 15.0   | 14.74     | 0.26     | 
0.0  | 0.0       | 85.26        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3254
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC4: 360/30, early repayment with only 1 cent less than EMI amount
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3511,12 +3472,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 17.0   | 16.74     | 0.26     | 
0.0  | 0.0       | 83.26        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3255
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC5: 360/30, multiple early repayments for the same installment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3578,12 +3537,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.02   | 0.0       | 0.02     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 15.0   | 14.74     | 0.26     | 
0.0  | 0.0       | 85.26        | false    | false    |
       | 20 January 2024  | Repayment        | 2.01   | 1.93      | 0.08     | 
0.0  | 0.0       | 83.33        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3256
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC6: 360/30, early repayment with exact EMI amount
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3639,12 +3596,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 13 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 14 January 2024  | Accrual          | 0.01   | 0.0       | 0.01     | 
0.0  | 0.0       | 0.0          | false    | false    |
       | 15 January 2024  | Repayment        | 17.01  | 16.75     | 0.26     | 
0.0  | 0.0       | 83.25        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3257
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC7: 360/30, early repayment with twice than EMI amount
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3689,12 +3644,10 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 15 January 2024  | Repayment        | 34.02  | 33.76     | 0.26     | 
0.0  | 0.0       | 66.24        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
   @Skip @TestRailId:C3258
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC8: 360/30, preclose after early repayment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3744,13 +3697,11 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 15 January 2024  | Repayment        | 17.01  | 16.75     | 0.26     | 
0.0  | 0.0       | 83.25        | false    | false    |
       | 20 January 2024  | Repayment        | 83.33  | 83.25     | 0.08     | 
0.0  | 0.0       | 0.0          | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
 #  TODO unskip and check when PS-2076 and PS-2106 is done
 #  TODO is it till preclose or tillrestperiod?
   @Skip @TestRailId:C3259
   Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT 
installment - UC9: 360/30, interest modification after early repayment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -3800,7 +3751,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 15 January 2024  | Repayment        | 17.01  | 16.75     | 0.26     | 
0.0  | 0.0       | 83.25        | false    | false    |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3269
   Scenario: UC1 - Single disbursement, full refund within first installment 
period
@@ -4383,7 +4333,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3288
   Scenario: Verify the recalculated EMI after interest rate change on the 
repayment schedule
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -4404,8 +4353,7 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
     When Admin runs inline COB job for Loan
     When Admin sets the business date to "02 February 2024"
     When Admin runs inline COB job for Loan
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
-    Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
+        Then Loan Repayment schedule has 6 periods, with the following data 
for periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
@@ -4735,7 +4683,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3297
   Scenario: Verify the Loan reschedule - Interest modification - UC1: Interest 
modification after early payment with Adjustment to NEXT installment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -4785,8 +4732,7 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
     When Admin runs inline COB job for Loan
     When Admin sets the business date to "20 January 2024"
     When Admin runs inline COB job for Loan
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
-    Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
+        Then Loan Repayment schedule has 6 periods, with the following data 
for periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 15 January 2024  | 83.25           | 
16.75         | 0.26     | 0.0  | 0.0       | 17.01 | 17.01 | 17.01      | 0.0  
| 0.0         |
@@ -4807,7 +4753,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3298
   Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest 
modification after early partial payment with Adjustment to NEXT installment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -4857,8 +4802,7 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
     When Admin runs inline COB job for Loan
     When Admin sets the business date to "20 January 2024"
     When Admin runs inline COB job for Loan
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
-    Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
+        Then Loan Repayment schedule has 6 periods, with the following data 
for periods:
       | Nr | Days | Date             | Paid date  | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |            | 100.0           |          
     |          | 0.0  |           | 0.0   | 0.0   |            |      |        
     |
       | 1  | 31   | 01 February 2024 |            | 83.24           | 16.76    
     | 0.25     | 0.0  | 0.0       | 17.01 | 17.0  | 17.0       | 0.0  | 0.01   
    |
@@ -4879,7 +4823,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3311
   Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest 
modification after early partial payment with Adjustment to LAST installment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
 loan product "DEFAULT" transaction type to "LAST_INSTALLMENT" future 
installment allocation rule
@@ -4930,8 +4873,7 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
     When Admin runs inline COB job for Loan
     When Admin sets the business date to "20 January 2024"
     When Admin runs inline COB job for Loan
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
-    Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
+        Then Loan Repayment schedule has 6 periods, with the following data 
for periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 |                  | 83.64           | 
16.36         | 0.44     | 0.0  | 0.0       | 16.8  | 0.0   | 0.0        | 0.0  
| 16.8        |
@@ -4953,7 +4895,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
 
   @TestRailId:C3299
   Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest 
modification after first installment with Adjustment to NEXT installment
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
 loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future 
installment allocation rule
@@ -5004,7 +4945,6 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
     When Admin runs inline COB job for Loan
     When Admin sets the business date to "16 February 2024"
     When Admin runs inline COB job for Loan
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -5164,4 +5104,4 @@ Feature: EMI calculation and repayment schedule checks 
for interest bearing loan
       | 22 January 2021  | Interest Refund        | 5.7     | 0.0       | 5.7  
    | 0.0  | 0.0       | 0.0          | true     | false    |
       | 22 January 2021  | Accrual                | 5.7     | 0.0       | 5.7  
    | 0.0  | 0.0       | 0.0          | false    | false    |
     Then In Loan Transactions the "2"th Transaction has Transaction 
type="Merchant Issued Refund" and is reverted
-    Then In Loan Transactions the "3"th Transaction has Transaction 
type="Interest Refund" and is reverted
\ No newline at end of file
+    Then In Loan Transactions the "3"th Transaction has Transaction 
type="Interest Refund" and is reverted
diff --git a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature 
b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
index 4ff7af13d..e07a9f224 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
@@ -6062,7 +6062,6 @@ Feature: Loan
     And Admin successfully approves the loan on "1 January 2024" with "100" 
amount and expected disbursement date on "1 January 2024"
     When Admin successfully disburse the loan on "1 January 2024" with "100" 
EUR transaction amount
     When Admin sets the business date to "15 July 2024"
-    When Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin runs inline COB job for Loan
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due   | Paid | In advance | Late | 
Outstanding |
@@ -6073,7 +6072,6 @@ Feature: Loan
       | 4  | 30   | 01 May 2024      |           | 34.28           | 16.43     
    | 0.58     | 0.0  | 0.0       | 17.01 | 0.0  | 0.0        | 0.0  | 17.01    
   |
       | 5  | 31   | 01 June 2024     |           | 17.85           | 16.43     
    | 0.58     | 0.0  | 0.0       | 17.01 | 0.0  | 0.0        | 0.0  | 17.01    
   |
       | 6  | 30   | 01 July 2024     |           | 0.0             | 17.85     
    | 0.58     | 0.0  | 0.0       | 18.43 | 0.0  | 0.0        | 0.0  | 18.43    
   |
-    When Admin removes "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
 
   Scenario: Interest recalculation - S2 2 overdue
     Given Global configuration "enable-business-date" is enabled
@@ -6085,7 +6083,6 @@ Feature: Loan
     And Admin successfully approves the loan on "1 January 2024" with "100" 
amount and expected disbursement date on "1 January 2024"
     When Admin successfully disburse the loan on "1 January 2024" with "100" 
EUR transaction amount
     When Admin sets the business date to "10 March 2024"
-    When Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin runs inline COB job for Loan
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due   | Paid | In advance | Late | 
Outstanding |
@@ -6096,7 +6093,6 @@ Feature: Loan
       | 4  | 30   | 01 May 2024      |           | 33.87           | 16.71     
    | 0.3      | 0.0  | 0.0       | 17.01 | 0.0  | 0.0        | 0.0  | 17.01    
   |
       | 5  | 31   | 01 June 2024     |           | 17.06           | 16.81     
    | 0.2      | 0.0  | 0.0       | 17.01 | 0.0  | 0.0        | 0.0  | 17.01    
   |
       | 6  | 30   | 01 July 2024     |           | 0.0             | 17.06     
    | 0.1      | 0.0  | 0.0       | 17.16 | 0.0  | 0.0        | 0.0  | 17.16    
   |
-    When Admin removes "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
 
   Scenario: Interest recalculation - S3 1 paid, 1 overdue
     Given Global configuration "enable-business-date" is enabled
@@ -6110,7 +6106,6 @@ Feature: Loan
     When Admin sets the business date to "1 February 2024"
     And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 
EUR transaction amount
     When Admin sets the business date to "10 March 2024"
-    When Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin runs inline COB job for Loan
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
@@ -6121,7 +6116,6 @@ Feature: Loan
       | 4  | 30   | 01 May 2024      |                  | 33.74           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 5  | 31   | 01 June 2024     |                  | 16.93           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.93         | 0.1      | 0.0  | 0.0       | 17.03 | 0.0   | 0.0        | 0.0  
| 17.03       |
-    When Admin removes "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
 
   Scenario: Loan Details Emi Amount Variations - AssociationsAll
     Given Global configuration 
"is-interest-to-be-recovered-first-when-greater-than-emi" is enabled
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
index 0f5cad26c..20b8eb89c 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
@@ -1778,12 +1778,12 @@ Feature: LoanAccrualActivity
       | Nr | Days | Date            | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due   | Paid | In advance | Late | 
Outstanding |
       |    |      | 01 January 2024 |           | 1000.0          |            
   |          | 0.0  |           | 0.0   | 0.0  |            |      |           
  |
       | 1  | 5    | 06 January 2024 |           | 750.64          | 249.36     
   | 1.64     | 0.0  | 0.0       | 251.0 | 0.0  | 0.0        | 0.0  | 251.0     
  |
-      | 2  | 5    | 11 January 2024 |           | 500.87          | 249.77     
   | 1.23     | 0.0  | 0.0       | 251.0 | 0.0  | 0.0        | 0.0  | 251.0     
  |
-      | 3  | 5    | 16 January 2024 |           | 250.69          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0 | 0.0  | 0.0        | 0.0  | 251.0     
  |
-      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.69     
   | 0.41     | 0.0  | 0.0       | 251.1 | 0.0  | 0.0        | 0.0  | 251.1     
  |
+      | 2  | 5    | 11 January 2024 |           | 500.96          | 249.68     
   | 1.32     | 0.0  | 0.0       | 251.0 | 0.0  | 0.0        | 0.0  | 251.0     
  |
+      | 3  | 5    | 16 January 2024 |           | 250.78          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0 | 0.0  | 0.0        | 0.0  | 251.0     
  |
+      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.78     
   | 0.41     | 0.0  | 0.0       | 251.19| 0.0  | 0.0        | 0.0  | 251.19    
  |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid | In 
advance | Late | Outstanding |
-      | 1000.0        | 4.1      | 0.0  | 0.0       | 1004.1 | 0.0  | 0.0      
  | 0.0  | 1004.1      |
+      | 1000.0        | 4.19     | 0.0  | 0.0       | 1004.19| 0.0  | 0.0      
  | 0.0  | 1004.19     |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 1000.0 | 0.0       | 0.0      | 
0.0  | 0.0       | 1000.0       | false    | false    |
@@ -1866,12 +1866,12 @@ Feature: LoanAccrualActivity
       | Nr | Days | Date            | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due    | Paid  | In advance | Late | 
Outstanding |
       |    |      | 01 January 2024 |           | 1000.0          |            
   |          | 0.0  |           | 0.0    | 0.0   |            |      |         
    |
       | 1  | 5    | 06 January 2024 |           | 750.5           | 249.5      
   | 1.5      | 0.0  | 0.0       | 251.0  | 150.0 | 150.0      | 0.0  | 101.0   
    |
-      | 2  | 5    | 11 January 2024 |           | 500.73          | 249.77     
   | 1.23     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
-      | 3  | 5    | 16 January 2024 |           | 250.55          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
-      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.55     
   | 0.41     | 0.0  | 0.0       | 250.96 | 0.0   | 0.0        | 0.0  | 250.96  
    |
+      | 2  | 5    | 11 January 2024 |           | 500.77          | 249.73     
   | 1.27     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
+      | 3  | 5    | 16 January 2024 |           | 250.59          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
+      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.59     
   | 0.41     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due     | Paid  | In 
advance | Late | Outstanding |
-      | 1000.0        | 3.96     | 0.0  | 0.0       | 1003.96 | 150.0 | 150.0  
    | 0.0  | 853.96      |
+      | 1000.0        | 4.0      | 0.0  | 0.0       | 1004.0  | 150.0 | 150.0  
    | 0.0  | 854.0       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 1000.0 | 0.0       | 0.0      | 
0.0  | 0.0       | 1000.0       | false    | false    |
@@ -1928,12 +1928,12 @@ Feature: LoanAccrualActivity
       | Nr | Days | Date            | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due    | Paid  | In advance | Late | 
Outstanding |
       |    |      | 01 January 2024 |           | 1000.0          |            
   |          | 0.0  |           | 0.0    | 0.0   |            |      |         
    |
       | 1  | 5    | 06 January 2024 |           | 750.5           | 249.5      
   | 1.5      | 0.0  | 0.0       | 251.0  | 150.0 | 150.0      | 0.0  | 101.0   
    |
-      | 2  | 5    | 11 January 2024 |           | 500.73          | 249.77     
   | 1.23     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
-      | 3  | 5    | 16 January 2024 |           | 250.55          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
-      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.55     
   | 0.41     | 0.0  | 0.0       | 250.96 | 0.0   | 0.0        | 0.0  | 250.96  
    |
+      | 2  | 5    | 11 January 2024 |           | 500.77          | 249.73     
   | 1.27     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
+      | 3  | 5    | 16 January 2024 |           | 250.59          | 250.18     
   | 0.82     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
+      | 4  | 5    | 21 January 2024 |           | 0.0             | 250.59     
   | 0.41     | 0.0  | 0.0       | 251.0  | 0.0   | 0.0        | 0.0  | 251.0   
    |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due     | Paid  | In 
advance | Late | Outstanding |
-      | 1000.0        | 3.96     | 0.0  | 0.0       | 1003.96 | 150.0 | 150.0  
    | 0.0  | 853.96      |
+      | 1000.0        | 4.0      | 0.0  | 0.0       | 1004.0  | 150.0 | 150.0  
    | 0.0  | 854.0       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 1000.0 | 0.0       | 0.0      | 
0.0  | 0.0       | 1000.0       | false    | false    |
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
index 0c95d1a03..71a8415ab 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
@@ -916,16 +916,16 @@ Feature: LoanAccrualTransaction
       | Nr | Days | Date          | Paid date | Balance of loan | Principal 
due | Interest | Fees | Penalties | Due    | Paid | In advance | Late | 
Outstanding |
       |    |      | 05 April 2024 |           | 500.0           |              
 |          | 0.0  |           | 0.0    | 0.0  |            |      |            
 |
       | 1  | 15   | 20 April 2024 |           | 334.47          | 165.53       
 | 2.47     | 0.0  | 0.0       | 168.0  | 0.0  | 0.0        | 0.0  | 168.0      
 |
-      | 2  | 15   | 05 May 2024   |           | 168.12          | 166.35       
 | 1.65     | 0.0  | 0.0       | 168.0  | 0.0  | 0.0        | 0.0  | 168.0      
 |
-      | 3  | 15   | 20 May 2024   |           | 0.0             | 168.12       
 | 0.83     | 0.0  | 0.0       | 168.95 | 0.0  | 0.0        | 0.0  | 168.95     
 |
+      | 2  | 15   | 05 May 2024   |           | 168.94          | 165.53       
 | 2.47     | 0.0  | 0.0       | 168.0  | 0.0  | 0.0        | 0.0  | 168.0      
 |
+      | 3  | 15   | 20 May 2024   |           | 0.0             | 168.94       
 | 0.83     | 0.0  | 0.0       | 169.77 | 0.0  | 0.0        | 0.0  | 169.77     
 |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance |
       | 05 April 2024    | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 500.0        |
-      | 24 April 2024    | Accrual          | 2.47   | 0.0       | 2.47     | 
0.0  | 0.0       | 0.0          |
-      | 24 April 2024    | Accrual          | 0.44   | 0.0       | 0.44     | 
0.0  | 0.0       | 0.0          |
+      | 24 April 2024    | Accrual          | 0.66   | 0.0       | 0.66     | 
0.0  | 0.0       | 0.0          |
+      | 25 April 2024    | Accrual          | 2.47   | 0.0       | 2.47     | 
0.0  | 0.0       | 0.0          |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid | In 
advance | Late | Outstanding |
-      | 500.0         | 4.95     | 0.0  | 0.0       | 504.95 | 0.0  | 0.0      
  | 0.0  | 504.95      |
+      | 500.0         | 5.77     | 0.0  | 0.0       | 505.77 | 0.0  | 0.0      
  | 0.0  | 505.77      |
     When Admin sets the business date to "26 April 2024"
     And Admin successfully disburse the loan on "26 April 2024" with "500" EUR 
transaction amount
     Then Loan Repayment schedule has 3 periods, with the following data for 
periods:
@@ -938,7 +938,7 @@ Feature: LoanAccrualTransaction
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance |
       | 05 April 2024    | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 500.0        |
-      | 24 April 2024    | Accrual          | 1.05   | 0.0       | 1.05     | 
0.0  | 0.0       | 0.0          |
+      | 25 April 2024    | Accrual          | 2.47   | 0.0       | 2.47     | 
0.0  | 0.0       | 0.0          |
       | 26 April 2024    | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 1000.0       |
       | 26 April 2024    | Accrual          | 2.47   | 0.0       | 2.47     | 
0.0  | 0.0       | 0.0          |
     Then Loan Repayment schedule has the following data in Total row:
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
index 2e620e887..78fb7bfd3 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
@@ -3501,7 +3501,6 @@ Feature: LoanRepayment
 
   @TestRailId:C3224
   Scenario: Verify that interest recalculation works properly when triggered 
by COB
-    Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into 
LOAN_CLOSE_OF_BUSINESS workflow
     When Admin sets the business date to "01 April 2024"
     When Admin creates a client with random data
     When Admin creates a fully customized loan with the following data:
@@ -3549,7 +3548,6 @@ Feature: LoanRepayment
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance |
       | 05 April 2024    | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 500.0        |
       | 20 April 2024    | Accrual          | 2.47   | 0.0       | 2.47     | 
0.0  | 0.0       | 0.0          |
-    Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
 
   @TestRailId:C3225
   Scenario: Verify that payment allocation is correct in case of fee charged 
on an OVERPAID Loan and payment is backdated
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
index eb5d81c1b..cfae68f35 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
@@ -22,6 +22,7 @@ package org.apache.fineract.infrastructure.core.config;
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
+import java.time.Duration;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
@@ -41,7 +42,10 @@ public class OkHttp3Config {
 
     @Bean
     public OkHttpClient okHttpClient() throws Exception {
-        var okBuilder = new OkHttpClient.Builder();
+        var okBuilder = new OkHttpClient.Builder()//
+                
.connectTimeout(Duration.ofSeconds(fineractProperties.getClientConnectTimeout()))//
+                
.readTimeout(Duration.ofSeconds(fineractProperties.getClientReadTimeout()))//
+                
.writeTimeout(Duration.ofSeconds(fineractProperties.getClientWriteTimeout())); 
//
 
         if (Boolean.TRUE.equals(fineractProperties.getInsecureHttpClient())) {
             final X509TrustManager insecureX509TrustManager = new 
X509TrustManager() {
diff --git a/fineract-provider/src/main/resources/application.properties 
b/fineract-provider/src/main/resources/application.properties
index 877b05ba9..2d5cbbafd 100644
--- a/fineract-provider/src/main/resources/application.properties
+++ b/fineract-provider/src/main/resources/application.properties
@@ -181,6 +181,9 @@ 
fineract.sampling.resetPeriodSec=${FINERACT_SAMPLING_RESET_PERIOD_IN_SEC:60}
 fineract.module.investor.enabled=${FINERACT_MODULE_INVESTOR_ENABLED:true}
 
 fineract.insecure-http-client=${FINERACT_INSECURE_HTTP_CLIENT:true}
+fineract.client-connect-timeout=${FINERACT_CLIENT_CONNECT_TIMEOUT:30}
+fineract.client-read-timeout=${FINERACT_CLIENT_READ_TIMEOUT:30}
+fineract.client-write-timeout=${FINERACT_CLIENT_WRITE_TIMEOUT:30}
 
 # sql validation
 
diff --git a/fineract-provider/src/test/resources/application-test.properties 
b/fineract-provider/src/test/resources/application-test.properties
index 56ee77356..243d4d36c 100644
--- a/fineract-provider/src/test/resources/application-test.properties
+++ b/fineract-provider/src/test/resources/application-test.properties
@@ -274,3 +274,7 @@ 
resilience4j.retry.instances.postInterest.exponential-backoff-multiplier=2
 
resilience4j.retry.instances.postInterest.retryExceptions=org.springframework.dao.CannotAcquireLockException,org.springframework.orm.ObjectOptimisticLockingFailureException
 
 spring.cloud.aws.region.static=eu-central-1
+fineract.insecure-http-client=true
+fineract.client-connect-timeout=30
+fineract.client-read-timeout=30
+fineract.client-write-timeout=30

Reply via email to