Hi Bhaskar,

I see multiple issues from what I understand from your email

1.  *Recalculate Interest For Loans Job *
The job "Recalculate Interest For Loans"  should run for all active loans
that have "interest recalculation-enabled," Even if the loan is a tranche
loan/multi-disbursement-enabled (with enable or disable
DisallowExpectedDisbursements ) or if it is a on-tranche
loan/multi-disbursement-disabled.

2. *DisallowExpectedDisbursements check box*
When Disabled, the user has to plan all the tranches before the disbursal
itself
But when enabled, the user can disburse any no of times (within the
configuration limit) without tranche planning ahead
Apart from that, functionally, there is no other difference - so you can
use anything that works for you

3. *LoanDisbursementDetails Table*
This table should contain the tranche details of the loan that are
tranche-enabled (even when the DisallowExpectedDisbursements check box  is
enabled or disabled)
This table will not contain the disbursement details of the loans with the
disabled multi-disbursement product config.

TL;DR
The product configuration (single or multi-disbursal -
DisallowExpectedDisbursements check box disabled or enabled) should be
based on your business requirement.
The job "Recalculate Interest For Loans" issue needs to be checked and
fixed if it is excluding the single disbursement loans for recalculation.

This is from my understanding so far. Anyone from the community can correct
me if my understanding is wrong.


Regards,
Bharath
Lead Implementation Analyst | Mifos Initiative
PMC Member | Apache Fineract
Mobile: +91.7019635592
http://mifos.org  <http://facebook.com/mifos>
<http://www.twitter.com/mifos>


On Tue, Oct 7, 2025 at 12:13 PM Bhaskar Tiwari <[email protected]> wrote:

> Hi Fineract Dev Team,
>
> I need some help understanding the *Floating interest rate* functionality
> in Fineract.
>
> I’ve enabled the floating interest rate at the loan product level, and
> it’s working as expected during loan creation. However, while testing the
> floating interest behavior post-disbursement, I noticed an issue.
>
> The scheduler job "*Recalculate Interest For Loans*" is responsible for
> updating the repayment schedule based on floating rates. However, this job
> was not triggering for my disbursed loan.
>
> On further investigation, I found that the method
> *fetchLoansForInterestRecalculation()* used in the job requires an entry
> in the *LoanDisbursementDetails* table. In my case, there’s no such entry
> for the loan, which seems to be why the recalculation logic is not kicking
> in.
>
> Looking at the code, I came across the following block, which creates an
> artificial disbursement detail if certain conditions are met:
>
> if (loan.loanProduct().isDisallowExpectedDisbursements()) {
>     List<LoanDisbursementDetails> filteredList =
> loan.getDisbursementDetails().stream()
>             .filter(disbursementDetails ->
> disbursementDetails.actualDisbursementDate() == null).toList();
>     if (filteredList.isEmpty()) {
>         final LocalDate artificialExpectedDate =
> loan.getExpectedDisbursedOnLocalDate();
>         LoanDisbursementDetails disbursementDetail = new
> LoanDisbursementDetails(artificialExpectedDate, null,
>                 loan.getDisbursedAmount(), null, false);
>         disbursementDetail.updateLoan(loan);
>         loan.getAllDisbursementDetails().add(disbursementDetail);
>     }
> }
>
>
> This seems to suggest that a *LoanDisbursementDetails *entry is created
> only when *isDisallowExpectedDisbursements()* is enabled at the loan
> product level.
>
> My question is:
>
> If I enable *isDisallowExpectedDisbursements* on the loan product to
> support floating interest rate recalculations, will it impact my existing
> single-tranche loan disbursement logic?
>
> Is this the recommended approach to ensure *LoanDisbursementDetails* is
> populated for single-disbursal loans using floating interest?
>
> Appreciate any guidance or suggestions from the community on handling this
> scenario correctly.
>
>
> *Bhaskar Tiwari*
>
> Senior Manager
>
> *+91 8800188152*
>
>
>
>
> *"Print this mail only if absolutely necessary. Save Paper. Save Trees."* *
> Disclaimer: *“This electronic mail message sent from StrideOne (Stride
> Fintree Private Limited) may contain Confidential/Restricted/Internal
> information and should only be viewed by the intended recipients. Under no
> circumstances may any such information be disclosed, copied, used or
> distributed to any unauthorized persons or entities without the written
> consent of Strideone. If you are not the intended recipient, any review,
> retransmission, dissemination or reliance on the content of these materials
> is strictly prohibited and may be the subject of legal action. If you
> received this email in error, please notify the sender and delete the
> message immediately.”
>

Reply via email to