You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2022/05/31 19:49:44 UTC

[fineract] branch develop updated: remove unused jobs

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

arnold 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 e7b2d6dff remove unused jobs
e7b2d6dff is described below

commit e7b2d6dff5d6781203b056555e948cf2dd90fca2
Author: taskain7 <ta...@gmail.com>
AuthorDate: Tue May 31 09:58:49 2022 +0200

    remove unused jobs
---
 .../infrastructure/jobs/service/JobName.java       |   6 +-
 .../service/SavingsSchedularServiceImpl.java       |  48 +++-----
 .../service/ScheduledJobRunnerService.java         |   4 -
 .../service/ScheduledJobRunnerServiceImpl.java     | 121 ---------------------
 .../db/changelog/tenant/changelog-tenant.xml       |   1 +
 .../tenant/parts/0014_remove_unused_jobs.xml       |  31 ++++++
 .../integrationtests/SchedulerJobsTest.java        |  10 +-
 .../integrationtests/SchedulerJobsTestResults.java | 113 -------------------
 8 files changed, 56 insertions(+), 278 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
index 2bbc911cd..23baa55cd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
@@ -20,9 +20,9 @@ package org.apache.fineract.infrastructure.jobs.service;
 
 public enum JobName {
 
-    UPDATE_LOAN_SUMMARY("Update loan Summary"), UPDATE_LOAN_ARREARS_AGEING("Update Loan Arrears Ageing"), UPDATE_LOAN_PAID_IN_ADVANCE(
-            "Update Loan Paid In Advance"), APPLY_ANNUAL_FEE_FOR_SAVINGS("Apply Annual Fee For Savings"), APPLY_HOLIDAYS_TO_LOANS(
-                    "Apply Holidays To Loans"), POST_INTEREST_FOR_SAVINGS("Post Interest For Savings"), TRANSFER_FEE_CHARGE_FOR_LOANS(
+    UPDATE_LOAN_ARREARS_AGEING("Update Loan Arrears Ageing"), APPLY_ANNUAL_FEE_FOR_SAVINGS(
+            "Apply Annual Fee For Savings"), APPLY_HOLIDAYS_TO_LOANS("Apply Holidays To Loans"), POST_INTEREST_FOR_SAVINGS(
+                    "Post Interest For Savings"), TRANSFER_FEE_CHARGE_FOR_LOANS(
                             "Transfer Fee For Loans From Savings"), ACCOUNTING_RUNNING_BALANCE_UPDATE(
                                     "Update Accounting Running Balances"), PAY_DUE_SAVINGS_CHARGES(
                                             "Pay Due Savings Charges"), APPLY_CHARGE_TO_OVERDUE_LOAN_INSTALLMENT(
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java
index 915369fb2..4fd88edac 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java
@@ -32,6 +32,8 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
 import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
@@ -43,19 +45,16 @@ import org.apache.fineract.infrastructure.jobs.service.JobName;
 import org.apache.fineract.portfolio.savings.data.SavingsAccountData;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
 
 @Service
+@Slf4j
+@RequiredArgsConstructor
 public class SavingsSchedularServiceImpl implements SavingsSchedularService {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SavingsSchedularServiceImpl.class);
-
     private final SavingsAccountAssembler savingAccountAssembler;
     private final SavingsAccountWritePlatformService savingsAccountWritePlatformService;
     private final SavingsAccountReadPlatformService savingAccountReadPlatformService;
@@ -67,23 +66,6 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
     private Queue<List<SavingsAccountData>> queue = new ArrayDeque<>();
     private int queueSize = 1;
 
-    @Autowired
-    public SavingsSchedularServiceImpl(final SavingsAccountAssembler savingAccountAssembler,
-            final SavingsAccountWritePlatformService savingsAccountWritePlatformService,
-            final SavingsAccountReadPlatformService savingAccountReadPlatformService,
-            final SavingsAccountRepositoryWrapper savingsAccountRepository, final ApplicationContext applicationContext,
-            final ConfigurationDomainService configurationDomainService, final JdbcTemplate jdbcTemplate,
-            final TransactionTemplate transactionTemplate) {
-        this.savingAccountAssembler = savingAccountAssembler;
-        this.savingsAccountWritePlatformService = savingsAccountWritePlatformService;
-        this.savingAccountReadPlatformService = savingAccountReadPlatformService;
-        this.savingsAccountRepository = savingsAccountRepository;
-        this.applicationContext = applicationContext;
-        this.configurationDomainService = configurationDomainService;
-        this.jdbcTemplate = jdbcTemplate;
-        this.transactionTemplate = transactionTemplate;
-    }
-
     @Override
     @CronTarget(jobName = JobName.POST_INTEREST_FOR_SAVINGS)
     public void postInterestForAccounts(Map<String, String> jobParameters) throws JobExecutionException {
@@ -98,14 +80,14 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
 
         long start = System.currentTimeMillis();
 
-        LOG.info("Reading Savings Account Data!");
+        log.info("Reading Savings Account Data!");
         List<SavingsAccountData> savingsAccounts = this.savingAccountReadPlatformService
                 .retrieveAllSavingsDataForInterestPosting(backdatedTxnsAllowedTill, pageSize, ACTIVE.getValue(), maxSavingsIdInList);
 
         if (savingsAccounts != null && savingsAccounts.size() > 0) {
             savingsAccounts = Collections.synchronizedList(savingsAccounts);
             long finish = System.currentTimeMillis();
-            LOG.info("Done fetching Data within {} milliseconds", finish - start);
+            log.info("Done fetching Data within {} milliseconds", finish - start);
             if (savingsAccounts != null) {
                 queue.add(savingsAccounts);
             }
@@ -113,7 +95,7 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
             if (!CollectionUtils.isEmpty(queue)) {
                 do {
                     int totalFilteredRecords = savingsAccounts.size();
-                    LOG.info("Starting Interest posting - total records - {}", totalFilteredRecords);
+                    log.info("Starting Interest posting - total records - {}", totalFilteredRecords);
                     List<SavingsAccountData> queueElement = queue.element();
                     maxSavingsIdInList = queueElement.get(queueElement.size() - 1).getId();
                     postInterest(queue.remove(), threadPoolSize, batchSize, executorService, backdatedTxnsAllowedTill, pageSize,
@@ -156,7 +138,7 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
             }
 
             while (queue.size() <= queueSize) {
-                LOG.info("Fetching while threads are running!");
+                log.info("Fetching while threads are running!");
                 List<SavingsAccountData> savingsAccountDataList = Collections.synchronizedList(this.savingAccountReadPlatformService
                         .retrieveAllSavingsDataForInterestPosting(backdatedTxnsAllowedTill, pageSize, ACTIVE.getValue(), maxId));
                 if (savingsAccountDataList == null || savingsAccountDataList.isEmpty()) {
@@ -207,21 +189,21 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
             }
 
             while (queue.size() <= queueSize) {
-                LOG.info("Fetching while threads are running!..:: this is not supposed to run........");
+                log.info("Fetching while threads are running!..:: this is not supposed to run........");
                 savingsAccounts = Collections.synchronizedList(this.savingAccountReadPlatformService
                         .retrieveAllSavingsDataForInterestPosting(backdatedTxnsAllowedTill, pageSize, ACTIVE.getValue(), maxId));
                 if (savingsAccounts == null || savingsAccounts.isEmpty()) {
                     break;
                 }
                 maxId = savingsAccounts.get(savingsAccounts.size() - 1).getId();
-                LOG.info("Add to the Queue");
+                log.info("Add to the Queue");
                 queue.add(savingsAccounts);
             }
 
             checkCompletion(responses);
-            LOG.info("Queue size {}", queue.size());
+            log.info("Queue size {}", queue.size());
         } catch (InterruptedException e1) {
-            LOG.error("Interrupted while postInterest", e1);
+            log.error("Interrupted while postInterest", e1);
         }
     }
 
@@ -253,12 +235,12 @@ public class SavingsSchedularServiceImpl implements SavingsSchedularService {
             }
             allThreadsExecuted = noOfThreadsExecuted == responses.size();
             if (!allThreadsExecuted) {
-                LOG.error("All threads could not execute.");
+                log.error("All threads could not execute.");
             }
         } catch (InterruptedException e1) {
-            LOG.error("Interrupted while interest posting entries", e1);
+            log.error("Interrupted while interest posting entries", e1);
         } catch (ExecutionException e2) {
-            LOG.error("Execution exception while interest posting entries", e2);
+            log.error("Execution exception while interest posting entries", e2);
         }
     }
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerService.java b/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerService.java
index e0f0cc560..b5239bf3c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerService.java
@@ -22,10 +22,6 @@ import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException;
 
 public interface ScheduledJobRunnerService {
 
-    void updateLoanSummaryDetails();
-
-    void updateLoanPaidInAdvance();
-
     void applyAnnualFeeForSavings();
 
     void applyDueChargesForSavings() throws JobExecutionException;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerServiceImpl.java
index bb03e7296..862dc0d71 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerServiceImpl.java
@@ -113,127 +113,6 @@ public class ScheduledJobRunnerServiceImpl implements ScheduledJobRunnerService
         this.databaseTypeResolver = databaseTypeResolver;
     }
 
-    @Transactional
-    @Override
-    @CronTarget(jobName = JobName.UPDATE_LOAN_SUMMARY)
-    public void updateLoanSummaryDetails() {
-
-        final JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSourceServiceFactory.determineDataSourceService().retrieveDataSource());
-
-        boolean isMySQL = databaseTypeResolver.isMySQL();
-
-        String alias = isMySQL ? "l." : "";
-        final String selectPart = new StringBuilder().append(" (SELECT ml.id AS loan_id, ")
-                .append("SUM(mr.principal_amount) as principal_disbursed_derived, ")
-                .append("SUM(COALESCE(mr.principal_completed_derived,0)) as principal_repaid_derived, ")
-                .append("SUM(COALESCE(mr.principal_writtenoff_derived,0)) as principal_writtenoff_derived, ")
-                .append("SUM(COALESCE(mr.interest_amount,0)) as interest_charged_derived, ")
-                .append("SUM(COALESCE(mr.interest_completed_derived,0)) as interest_repaid_derived, ")
-                .append("SUM(COALESCE(mr.interest_waived_derived,0)) as interest_waived_derived, ")
-                .append("SUM(COALESCE(mr.interest_writtenoff_derived,0)) as interest_writtenoff_derived, ")
-                .append("SUM(COALESCE(mr.fee_charges_amount,0)) + ")
-                .append("COALESCE((select SUM(lc.amount) from m_loan_charge lc where lc.loan_id = ml.id and lc.is_active = true")
-                .append(" and lc.charge_time_enum=1),0) as fee_charges_charged_derived, ")
-                .append("SUM(COALESCE(mr.fee_charges_completed_derived,0)) + ")
-                .append("COALESCE((select SUM(lc.amount_paid_derived) from m_loan_charge lc where lc.loan_id = ml.id and lc.is_active = true")
-                .append(" and lc.charge_time_enum = 1), 0) as fee_charges_repaid_derived, ")
-                .append("SUM(COALESCE(mr.fee_charges_waived_derived,0)) as fee_charges_waived_derived, ")
-                .append("SUM(COALESCE(mr.fee_charges_writtenoff_derived,0)) as fee_charges_writtenoff_derived, ")
-                .append("SUM(COALESCE(mr.penalty_charges_amount,0)) as penalty_charges_charged_derived, ")
-                .append("SUM(COALESCE(mr.penalty_charges_completed_derived,0)) as penalty_charges_repaid_derived, ")
-                .append("SUM(COALESCE(mr.penalty_charges_waived_derived,0)) as penalty_charges_waived_derived, ")
-                .append("SUM(COALESCE(mr.penalty_charges_writtenoff_derived,0)) as penalty_charges_writtenoff_derived ")
-                .append("FROM m_loan ml ").append("INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id ")
-                .append("WHERE ml.disbursedon_date is not null ").append("GROUP BY ml.id").append(") x").toString();
-
-        final String setPart = new StringBuilder().append(" SET ").append(alias)
-                .append("principal_disbursed_derived = x.principal_disbursed_derived, ").append(alias)
-                .append("principal_repaid_derived = x.principal_repaid_derived, ").append(alias)
-                .append("principal_writtenoff_derived = x.principal_writtenoff_derived, ").append(alias)
-                .append("principal_outstanding_derived = (x.principal_disbursed_derived - (x.principal_repaid_derived + x.principal_writtenoff_derived)), ")
-                .append(alias).append("interest_charged_derived = x.interest_charged_derived, ").append(alias)
-                .append("interest_repaid_derived = x.interest_repaid_derived, ").append(alias)
-                .append("interest_waived_derived = x.interest_waived_derived, ").append(alias)
-                .append("interest_writtenoff_derived = x.interest_writtenoff_derived, ").append(alias)
-                .append("interest_outstanding_derived = (x.interest_charged_derived - (x.interest_repaid_derived + x.interest_waived_derived + x.interest_writtenoff_derived)), ")
-                .append(alias).append("fee_charges_charged_derived = x.fee_charges_charged_derived, ").append(alias)
-                .append("fee_charges_repaid_derived = x.fee_charges_repaid_derived, ").append(alias)
-                .append("fee_charges_waived_derived = x.fee_charges_waived_derived, ").append(alias)
-                .append("fee_charges_writtenoff_derived = x.fee_charges_writtenoff_derived, ").append(alias)
-                .append("fee_charges_outstanding_derived = (x.fee_charges_charged_derived - (x.fee_charges_repaid_derived + x.fee_charges_waived_derived + x.fee_charges_writtenoff_derived)), ")
-                .append(alias).append("penalty_charges_charged_derived = x.penalty_charges_charged_derived, ").append(alias)
-                .append("penalty_charges_repaid_derived = x.penalty_charges_repaid_derived, ").append(alias)
-                .append("penalty_charges_waived_derived = x.penalty_charges_waived_derived, ").append(alias)
-                .append("penalty_charges_writtenoff_derived = x.penalty_charges_writtenoff_derived, ").append(alias)
-                .append("penalty_charges_outstanding_derived = (x.penalty_charges_charged_derived - (x.penalty_charges_repaid_derived + x.penalty_charges_waived_derived + x.penalty_charges_writtenoff_derived)), ")
-                .append(alias)
-                .append("total_expected_repayment_derived = (x.principal_disbursed_derived + x.interest_charged_derived + x.fee_charges_charged_derived + x.penalty_charges_charged_derived), ")
-                .append(alias)
-                .append("total_repayment_derived = (x.principal_repaid_derived + x.interest_repaid_derived + x.fee_charges_repaid_derived + x.penalty_charges_repaid_derived), ")
-                .append(alias)
-                .append("total_expected_costofloan_derived = (x.interest_charged_derived + x.fee_charges_charged_derived + x.penalty_charges_charged_derived), ")
-                .append(alias)
-                .append("total_costofloan_derived = (x.interest_repaid_derived + x.fee_charges_repaid_derived + x.penalty_charges_repaid_derived), ")
-                .append(alias)
-                .append("total_waived_derived = (x.interest_waived_derived + x.fee_charges_waived_derived + x.penalty_charges_waived_derived), ")
-                .append(alias)
-                .append("total_writtenoff_derived = (x.interest_writtenoff_derived +  x.fee_charges_writtenoff_derived + x.penalty_charges_writtenoff_derived), ")
-                .append(alias)
-                .append("total_outstanding_derived = (x.principal_disbursed_derived - (x.principal_repaid_derived + x.principal_writtenoff_derived)) + ")
-                .append("(x.interest_charged_derived - (x.interest_repaid_derived + x.interest_waived_derived + x.interest_writtenoff_derived)) + ")
-                .append("(x.fee_charges_charged_derived - (x.fee_charges_repaid_derived + x.fee_charges_waived_derived + x.fee_charges_writtenoff_derived)) + ")
-                .append("(x.penalty_charges_charged_derived - (x.penalty_charges_repaid_derived + x.penalty_charges_waived_derived + x.penalty_charges_writtenoff_derived))")
-                .toString();
-
-        String wherePart = " x.loan_id = l.id";
-
-        final StringBuilder updateSqlBuilder = new StringBuilder();
-        updateSqlBuilder.append("UPDATE m_loan l");
-        if (isMySQL) {
-            updateSqlBuilder.append(" JOIN").append(selectPart).append(" ON").append(wherePart).append(' ').append(setPart);
-        } else {
-            updateSqlBuilder.append(setPart).append(" FROM").append(selectPart).append(" WHERE").append(wherePart);
-        }
-        final int result = jdbcTemplate.update(updateSqlBuilder.toString());
-
-        LOG.info("{}: Records affected by updateLoanSummaryDetails: {}", ThreadLocalContextUtil.getTenant().getName(), result);
-    }
-
-    @Transactional
-    @Override
-    @CronTarget(jobName = JobName.UPDATE_LOAN_PAID_IN_ADVANCE)
-    public void updateLoanPaidInAdvance() {
-
-        final JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSourceServiceFactory.determineDataSourceService().retrieveDataSource());
-
-        jdbcTemplate.execute("truncate table m_loan_paid_in_advance");
-
-        final StringBuilder updateSqlBuilder = new StringBuilder(900);
-
-        updateSqlBuilder.append(
-                "INSERT INTO m_loan_paid_in_advance(loan_id, principal_in_advance_derived, interest_in_advance_derived, fee_charges_in_advance_derived, penalty_charges_in_advance_derived, total_in_advance_derived)");
-        updateSqlBuilder.append(" select ml.id as loanId,");
-        updateSqlBuilder.append(" SUM(coalesce(mr.principal_completed_derived, 0)) as principal_in_advance_derived,");
-        updateSqlBuilder.append(" SUM(coalesce(mr.interest_completed_derived, 0)) as interest_in_advance_derived,");
-        updateSqlBuilder.append(" SUM(coalesce(mr.fee_charges_completed_derived, 0)) as fee_charges_in_advance_derived,");
-        updateSqlBuilder.append(" SUM(coalesce(mr.penalty_charges_completed_derived, 0)) as penalty_charges_in_advance_derived,");
-        updateSqlBuilder.append(
-                " (SUM(coalesce(mr.principal_completed_derived, 0)) + SUM(coalesce(mr.interest_completed_derived, 0)) + SUM(coalesce(mr.fee_charges_completed_derived, 0)) + SUM(coalesce(mr.penalty_charges_completed_derived, 0))) as total_in_advance_derived");
-        updateSqlBuilder.append(" FROM m_loan ml ");
-        updateSqlBuilder.append(" INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id ");
-        updateSqlBuilder.append(" WHERE ml.loan_status_id = 300 ");
-        updateSqlBuilder.append(" and mr.duedate >= " + sqlGenerator.currentDate() + " ");
-        updateSqlBuilder.append(" GROUP BY ml.id");
-        updateSqlBuilder
-                .append(" HAVING (SUM(coalesce(mr.principal_completed_derived, 0)) + SUM(coalesce(mr.interest_completed_derived, 0)) +");
-        updateSqlBuilder.append(
-                " SUM(coalesce(mr.fee_charges_completed_derived, 0)) + SUM(coalesce(mr.penalty_charges_completed_derived, 0))) > 0.0");
-
-        final int result = jdbcTemplate.update(updateSqlBuilder.toString());
-
-        LOG.info("{}: Records affected by updateLoanPaidInAdvance: {}", ThreadLocalContextUtil.getTenant().getName(), result);
-    }
-
     @Override
     @CronTarget(jobName = JobName.APPLY_ANNUAL_FEE_FOR_SAVINGS)
     public void applyAnnualFeeForSavings() {
diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
index 079c5e474..9d28ead57 100644
--- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
+++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
@@ -33,4 +33,5 @@
     <include file="parts/0011_add_credit_balance_refund_permission.xml" relativeToChangelogFile="true"/>
     <include file="parts/0012_add_merchantissuedrefund_payoutrefund_goodwillcredit_permissions.xml" relativeToChangelogFile="true"/>
     <include file="parts/0013_remove_topics.xml" relativeToChangelogFile="true"/>
+    <include file="parts/0014_remove_unused_jobs.xml" relativeToChangelogFile="true"/>
 </databaseChangeLog>
diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0014_remove_unused_jobs.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0014_remove_unused_jobs.xml
new file mode 100644
index 000000000..30027f08d
--- /dev/null
+++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0014_remove_unused_jobs.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="fineract" id="1">
+        <delete tableName="job">
+            <where>name='Update loan Summary'</where>
+        </delete>
+        <delete tableName="job">
+            <where>name='Update Loan Paid In Advance'</where>
+        </delete>
+    </changeSet>
+</databaseChangeLog>
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
index 5f093d72d..c36a2db90 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
@@ -28,6 +28,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.fineract.infrastructure.jobs.service.JobName;
 import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
 import org.apache.fineract.integrationtests.common.Utils;
@@ -63,7 +64,7 @@ public class SchedulerJobsTest {
     @AfterEach
     public void tearDown() {
         schedulerJobHelper.updateSchedulerStatus(originalSchedulerStatus);
-        for (int jobId = 1; jobId < JobName.values().length; jobId++) {
+        for (Integer jobId : schedulerJobHelper.getAllSchedulerJobIds()) {
             schedulerJobHelper.updateSchedulerJob(jobId, originalJobStatus.get(jobId));
         }
     }
@@ -74,9 +75,10 @@ public class SchedulerJobsTest {
         // is a
         // java.util.Date)
         schedulerJobHelper.updateSchedulerStatus(true);
-        schedulerJobHelper.updateSchedulerJob(1, true);
-        String nextRunTimeText = await().until(() -> (String) schedulerJobHelper.getSchedulerJobById(1).get("nextRunTime"),
-                nextRunTime -> nextRunTime != null);
+        int minJobId = schedulerJobHelper.getAllSchedulerJobIds().stream().mapToInt(number -> number).min().orElse(Integer.MAX_VALUE);
+        schedulerJobHelper.updateSchedulerJob(minJobId, true);
+        String nextRunTimeText = await().until(() -> (String) schedulerJobHelper.getSchedulerJobById(minJobId).get("nextRunTime"),
+                Objects::nonNull);
         DateTimeFormatter.ISO_INSTANT.parse(nextRunTimeText);
     }
 
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
index 27211eb63..e3cf9eada 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
@@ -67,7 +67,6 @@ import org.apache.fineract.portfolio.account.domain.AccountTransferType;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.MethodOrderer.MethodName;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
@@ -454,118 +453,6 @@ public class SchedulerJobsTestResults {
                 "Verifying Arrears Aging after Running Update Loan Arrears Aging Scheduler Job");
     }
 
-    @Test
-    public void testUpdateLoanPaidInAdvanceJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(requestSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todayDate = Calendar.getInstance();
-
-        todayDate.add(Calendar.MONTH, -1);
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate = Calendar.getInstance();
-        todayDate.add(Calendar.DATE, -5);
-        final String LOAN_FIRST_REPAYMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        final Integer clientID = ClientHelper.createClient(requestSpec, responseSpec);
-        Assertions.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assertions.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assertions.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(requestSpec, responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        String loanDetails = this.loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID,
-                JsonPath.from(loanDetails).get("netDisbursalAmount").toString());
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        ArrayList<HashMap> loanScheduleBefore = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, responseSpec, loanID);
-
-        Float totalDueForCurrentPeriod = (Float) loanScheduleBefore.get(1).get("totalDueForPeriod");
-
-        this.loanTransactionHelper.makeRepayment(LOAN_FIRST_REPAYMENT_DATE, totalDueForCurrentPeriod, loanID);
-
-        String JobName = "Update Loan Paid In Advance";
-        this.schedulerJobHelper.executeAndAwaitJob(JobName);
-        // Retrieving Loan Repayment Schedule after the successful
-        // completion of
-        // Update Loan Paid in Advance Scheduler Job
-        ArrayList<HashMap> loanScheduleAfter = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, responseSpec, loanID);
-
-        Float totalPaidInAdvance = (Float) loanScheduleAfter.get(1).get("totalPaidInAdvanceForPeriod");
-
-        Assertions.assertEquals(totalDueForCurrentPeriod, totalPaidInAdvance,
-                "Verifying Loan Repayment in Advance after Running Update Loan Paid in Advance Scheduler Job");
-    }
-
-    // Invalid test case as it won't affect summary (Loan summary is properly
-    // updated before running this job)
-    @Disabled
-    @Test
-    public void testUpdateLoanSummaryJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(requestSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-
-        todaysDate.add(Calendar.MONTH, -1);
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.DATE, -5);
-
-        final Integer clientID = ClientHelper.createClient(requestSpec, responseSpec);
-        Assertions.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assertions.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assertions.assertNotNull(loanID);
-
-        Integer disburseChargeId = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
-        Assertions.assertNotNull(disburseChargeId);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getDisbursementChargesForLoanAsJSON(disburseChargeId.toString()));
-        ArrayList<HashMap> chargesPendingState = this.loanTransactionHelper.getLoanCharges(loanID);
-        Assertions.assertEquals(1, chargesPendingState.size());
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(requestSpec, responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        String loanDetails = this.loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID,
-                JsonPath.from(loanDetails).get("netDisbursalAmount").toString());
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        HashMap loanSummaryBefore = this.loanTransactionHelper.getLoanSummary(requestSpec, responseSpec, loanID);
-
-        String JobName = "Update loan Summary";
-        this.schedulerJobHelper.executeAndAwaitJob(JobName);
-        Float expectedSummaryAfterJob = (Float) loanSummaryBefore.get("totalExpectedRepayment")
-        /* - (Float) loanSummaryBefore.get("feeChargesPaid") */;
-        HashMap loanSummaryAfter = this.loanTransactionHelper.getLoanSummary(requestSpec, responseSpec, loanID);
-        Assertions.assertEquals(expectedSummaryAfterJob, (Float) loanSummaryAfter.get("totalExpectedRepayment"),
-                "Verifying Loan Summary after Running Update Loan Summary Scheduler Job");
-    }
-
     @Test
     public void testExecuteStandingInstructionsJobOutcome() throws InterruptedException {
         this.schedulerJobHelper = new SchedulerJobHelper(requestSpec);