Definition of Batch Jobs
Overview
Batch Jobs are long-running daily processes that perform certain necessary activities across the entire loan portfolio. These activities include changing the system date and daily interest accrual. Batch jobs may be scheduled to run automatically at specific times, or you may schedule these on an ad-hoc basis.
CL Loan Batch Jobs
The following is the list of CL Loan batch jobs. Some of these are run as part of the Start of Day (SOD) job, as indicated in the table below.
Subsequent to the SOD job chain, the Multiple Payment Method Support jobs are run if the Multiple Payment Support option is selected in the Start of Day Chaining custom settings. This sequence is followed by the ACH jobs if Lock Based ACH option is selected, and lastly, the Loan Diagnostic Job is run, if selected. Ad-hoc jobs can be scheduled as per need.
Batch Job Name | Description | Technical Name of the Batch Job |
---|---|---|
End Of Day | This is the first job that gets executed. It ends the current day for all the loan accounts. The system is advanced to the next day immediately upon completion of this job. It chains Start Of Day job to be executed next. This job is run as part of Start Next Day process. Input: It is operated on all the loan accounts. Output: At the end of this job, the EOD_Finished__c flag of Day_Process__c loan object is marked as True for the current date. | EndOfDayJob |
Initialize Start of Day | This job divides the list of contracts into groups for parallel processing. Input: Gets all active, matured, and closed loans. Uses the value of the Concurrent Batch Jobs org parameter to divide the loans into batches. Output: Starts parallel threads of Start Of Day job. | InitializeSODProcessJob |
Start of Day | This job calculates daily interest of loans and updates the Interest Accrued Not Due on Loans This job is run as part of Start Next Day process. The interest accrual for all the loan accounts happens in this job. It chains Periodic Charge Job to be executed next. It can also be run independently as Accrual Job. This job begins the next day for all the loan accounts. Input: It is operated on all the loan accounts. Output: Loan object name Day_Process__c flag SOD_Process_Started__c is marked True. | StartOfDayJob |
Accrual Entry | This job picks up the contracts whose All contracts whose Next Accrual Entry Date is same or earlier than the SOD date and creates accrual entries for them. This job can also be run on demand. | AccrualEntryJob |
Change Interest Rate | This job is executed if the interest rate on loans is changed. It refers to the fixed rate entries tin the rate schedule to update the Current Interest Rate on the contract and the Next Rate Change Date. | ChangeInterestRateJob |
Late Charge Creator | This job creates charges with time of charge as Late Charge for loans. If bills are due and not paid by the permitted due date, then late charges are created on loans for the overdue bills. | LateChargeCreatorJob |
Pay Off Generator | This job calculates the loan payoff amount till date for a contract. | PayOffGeneratorJob |
Broker Payout | This job is executed for loans which are protect enabled or are having brokers linked. It calculates Broker Commission till date. | BrokerPayoutJob |
Interest Posting | This job is executed only for the loans where Interest Posting is enabled. From This job Interest Posting Transactions are created where each IPT shows the Interest Accrued for that cycle only . If Capitalization is enabled for the Loans, then the Interest Capitalized is also updated in this job. If interest posting is enabled, this job creates regular IPTs (such transactions represent how much principal and interest is due/posted) and interest on arrears (IOA) type transactions (such transactions represent arrear interest generated on unpaid due principal and or interest. Input: Interest Posting Enabled Loans. Output: Interest Posting Transactions are created where each IPT shows the Interest Accrued for that cycle only. If Capitalization is enabled for the Loans, then the Interest Capitalized is also updated in this job. Error conditions: If in between the system dates are changed, IPTs may not be created. | InterestPostingJob |
Interest Posting AMZ | This job generates intrerest on arrears if applicable for a loan contract if 'Is Interest posting' is enabled on 'Flexible Amz Loan'. Input: It is for the flexible Amz loans where next Posting Date is less than or equal to the crrent system date. Output: It is for interest posting transactions with different types (Regular, IOA on Unpaid P/I, IOA on IOA). | InterestPostingAmzJob |
Periodic Charge | This job is processed to apply the charges if periodic charges have been set up on Loans. This job is run as part of Start Next Day process. The job calculates the periodic charges and updates the loan accounts with that. It chains Billing Job to be executed next. Input: It is operated on all the loan accounts. Output: All the loan accounts' Charge object is updated. | PeriodicChargeJob |
Billing | This job generates bills for interest bearing loans, at the end of periodic cycle defined, which may be monthly, weekly, quarterly or annual. This job calculates the normal loan bills. It is run as part of Start Next Day process, and can also be run independently as the Billing job. It chains Billing LOC job to be executed next. Input: Eligible loan accounts: For example, the duration of bill generation is monthly, then all those accounts which have reached a month are updated with the payment amount. The due principal and interest are taken from Repayment Schedule Summary (RSS) summary Output: New bills are updated or created for the loans. (Loan object name: Loan_Account__c) | BillingJob |
Billing LOC | This job generates Bills for LOC loans, at the end of periodic cycle defined, which may be monthly, weekly, quarterly or annual. This calculates the LOC bills and it chains Billing Amortization job to be executed next. This job can be run independently too, from the Run Batch Jobs page. Input: Eligible loan accounts. For example, the duration of bill generation is monthly, then all those accounts which have reached a month are updated with the payment amount. The due principal and interest are taken from RSS summary. Output: New bills are updated for the loans. | BillingLocJob |
Billing AMZ | This job generates Bills for Amz loans, at the end of periodic cycle defined, which may be monthly, weekly, quarterly or annual | BillingAMZJob |
Billing IOA | This job generates IOA Bills, at the end of periodic cycle defined, which may be monthly, weekly, quarterly or annual | BillingIOAJob |
Floating Rate Interest Revision | This job processes all the LOC contracts where floating interest rates are defined, and updates the interest rate if the floating rate revision date is reached on the contract. | FloatingRateInterestRevisionJob |
Delinquency Processing | This job runs for only those loans if a loan has bills due, then it marks those loans as Active Bad Standing. This job is run as part of Start Next Day process as well as independently as Delinquency job when delinquent bills are present A bill is called delinquent if not paid timely. This job handles all the delinquent bills and updates the interest over the delinquent bills. Input: Delinquent bills from loan accounts. Output: Interest and other delinquent charges updated on bills. | DelinquencyProcessingJob |
Credit Bureau Payment History | This job runs by default but can be skipped by selecting 'Skip Credit Bureau Payment History' checkbox in 'Start of Day Chaining' custom setting. | CreditBureauPaymentHistoryJob |
Amortization Processing | This job is run as part of Start Next Day process as well as independently. For amortization based loans, the balance, fees paid, and transactions are calculated. It chains the Broker Commission Disbursal job to get executed as next. Input: Amortized based loans. Output: Accounting info is created for AmzTxns and FeeAmzTxns | AmortizationProcessingJob |
Broker Commission Disbursal | This job is processed to disburse the commission of brokers. | BrokerCommissionDisbJob |
Suspend ACH for Protect Claim | This job operates on protect claims of all loans. It either suspends or resumes the protect claims. This job can also be skipped Input: Protect Claims of Protect Enabled Loans. Output: Records Suspended and Resumed Claims as Other Transactions | SuspendACHForProtectClaimJob |
ACH Processing | This job creates an ACH file for eligible LPT records. | ACHProcessingJob |
Credit ACH Processing | This job is run as part of the Start Next Day process. It chains SOD Accounting job to get executed as next. It creates a bank branch wise document for all the disbursal transactions happened during that day. Input: Loan disbursal transaction. Object name: Loan_Disbursal_Transaction__c Output: ACH file or document. | CreditACHProcessingJob |
Loan Block Code Expiry | This job checks if block codes applied on the contract have expired and resumes the suspended actions on the contract. | LoanBlockCodeExpiryProcessingJob |
SOD Accounting | This job is run as part of Start Next Day process as can also be run independently. Excess for Amortized based Loans job is chained as next job. For all the branch users from Day_Process__c object, Loan_Accounting_Done__c flag is marked true to depict the accounting is finished for that particular day. Input: User_Branch_Info__c Output: Day_Process__c Loan_Accounting_Done__c is marked trueOffice_Name__c's branches Current_System_Date__c is set to present day. | SODAccountingJob |
Protect Claim Bill Waiver | This job creates and saves the eligible waived LPT's for a claim. Input: Active Protect Claims for Loans for which the waivers have to be posted. Output: Loans are updated with Waived LPT's. | ProtectClaimBillWaiverJob |
Excess For Amortization Based Loans | This job is run as part of Start Next Day process. For amortization based loans which are about to mature, the payment transactions are verified and payments are cleared and then the loan is marked as closed. It chains the Start of Day job to get executed as next . Note: If excess payment is made on the loan, it is cleared before the loan is marked as closed. Input: Amortized based loans Output: Payment Transactions are updated in Loan_Account__c | ExcessForAmzBasedLoansJob |
From this point onward, other jobs run based on parameters defined in 'Start of Day Chaining' |
Multiple Payment Method Support jobs
If the Multiple Payment Method Support option is selected in the SOD Chaining custom setting, the following jobs are run in the listed sequence.
Batch Job Name | Description | Technical Name of the Batch Job |
---|---|---|
Investor Fund Txn Filegen Job | It generates investor fund transaction files, one for each payment mode defined. | InvestorFundTxnFilegenJob |
Fee Payment Filegen Job | For each payment modes, it creates files for fee payments received. | FeePaymentFilegenJob |
Investor Withdrawal Txn Filegen | All the Active Investor's Funds Payment Transactions are clubbed together into a file. | InvestorWithdrawalTxnFilegenJob |
Loan Payment Transaction Creation | Processes contracts where automated payment is set up, as per the batch size specified in ACH Parameters, to create payment transaction records. The Payment Processing class of this job is integrated with CLS' Unit of Work framework whereby failure in one contract does not cause failure of the entire batch. This integration needs the "Enable Fault Tolerant Batch Processing" org parameter to be selected in Custom Settings. | LoanPaymentTransactionCreationJob |
Loan Payment Filegen | All the Active Loan Account's Payments are clubbed together into a file. | LoanPaymentFilegenJob |
Loan Disbursal Filegen Job or Disbursal Distribution Filegen Job | Loan Disbursal Filegen Job/ DisbursalDistributionFilegenJob:
| LoanDisbursalFilegenJob DisbursalDistributionFilegenJob |
Investor Payment Txn Filegen | All the Active Investor Loan Account Payment transactions are clubbed together into a file and sent for ACH processing. | InvestorPaymentTxnFilegenJob |
Broker Txn Sweep To ACH | Creates an ACH file for broker transactions to be created. | BrokerTxnSweepToACHJob |
Investor Fund Transaction Clearing | This job clears the investor funds transactions based on response received from bank. | InvestorFundTxnClearingJob |
LoanPaymentTxnClearingJob | This job clears the loan payment transactions based on response received from bank. | |
LoanPayoffPaymentTxnClearingJob | This job clears the loan payment transactions marked as "Payoff" payments based on response received from bank. | |
Excess for Amz Based Loans Payoff | This job creates an Excess LPT based on any excess amount on the contract, if hte excess can fully pay off the loan. | ExcessforAmzBasedLoansPayoffJob |
Loan Repayment Refund Txn Sweep To ACH Job | This job creates an ACH file of all refund transactions to be made to borrower. | LoanRepaymentRefundTxnSweepToACHJob |
Reschedule Transaction Job | This job reschedules all the loans for which Reschedule status is 'Pending'. Reschedule status changes to Pending whenever any pre-payment is done. Prepayment is defined when the excess amount on a transaction crosses the 'excess threshold % (of remaining principal) for reschedule' defined for the lending product. During reschedule, the delinquency is maintained as is, and post reschedule, loan's reschedule status is changed to 'Success'. Else, status is changed to 'Failure' and the reason for failure is provided in the batch process log for this job for each loan. | LoanRescheduleJob |
Loan Closure | This job is processed to change the contract status from Active - Marked for Closure. In the next run of the SOD job, the Loan Closure job processes all contracts that are marked for closure. | LoanClosureJob |
ACH jobs
If the ACH Jobs option is selected in the SOD Chaining custom setting, the following jobs are run in the listed sequence leading to creation of ACH files:
Batch Job Name | Description | Technical Name of the Batch Job |
---|---|---|
Investor Fund Txn Sweep To ACH | All the Investor Fund transactions which need to be moved to ACH are recorded in a File. | InvestorFundTxnSweepToACHJob |
Fee Payment Sweep To ACH | All the Fee Payment Transactions which needs to be moved to ACH are recorded in a File. | FeePaymentSweepToACHJob |
Investor Withdrawal Txn Sweep To ACH | All the Investor Withdrawal Amount transactions which need to be moved to ACH are recorded in a File. | InvestorWithdrawalTxnSweepToACHJob |
Loan Payment Txn Sweep To ACH | LoanPaymentTxnSweepToACHJob | |
Loan Disbursal Txn Sweep To ACH | Loan Disbursal TxnSweepToACH Job: All the loan disbursal transactions or disbursal distributions, which need to be sent to ACH are recorded in a file based on the value of the attribute 'Use Disbursal Distribution for Filegen' in the Start of Day Chaining custom setting.This setting allows users to choose between running the LoanDisbursalFilegenJob and DisbursalDistributionFilegenJob. This is set to False by default, meaning that the LoanDisbursalFilegenJob is run by default. If you do not have more than one party in any of the disbursals, and same details are provided on the LDT, the behavior of both jobs is the same | LoanDisbursalTxnSweepToACHJob |
Investor Payment Txn Sweep To ACH Job | All the Investor Payments which needs to be moved to ACH are recorded in a File. | InvestorPaymentTxnSweepToACHJob |
Broker Txn Sweep To ACH Job | BrokerTxnSweepToACHJob | |
Investor Fund Txn Clearing Job | InvestorFundTxnClearingJob | |
All jobs subsequent to the Broker Txn Sweep to ACH Job, in the Multiple Payment Method Support jobs sequence. |
Loan Diagnostics job
This job is run at the end.
Batch Job Name | Description | Technical Name of the Batch Job |
---|---|---|
Loan Diagnostics | This job is run independently. For all the loan disbursals, payment transactions, invoices, charges, rate schedule, and repayment schedule summary (RSS), the amortized balances are checked and warnings are created for discrepancies. (The objects are checked and verified with respect to correct values.) No job is chained after it. Input: It is operated on all the loan accounts. Output: Loan Accounts are updated with warnings. | LoanDiagnosticsJob |
Ad-hoc jobs
You can schedule the following ad-hoc batch jobs independently based on business need and contract processing stages.
Investor Payout | This job is enhanced to separate the interest accrual from the payout job and it is run independently. The interest and principal amount is paid out to specific investors. Scheduling an Investment Order Interest Accrual Job explicitly is a prerequisite for this job. This job is not part of the SOD chaining process. Input: Loan Payment Transactions from loan accounts. Output: Investor accounts are updated with the payment amounts. | InvestorPayoutJob |
Month End | This job is run at month end as part of Start Next Day process to update the loss provisions in the loan account. No job is chained after this job. Input: Month_Process__c and Loan_Product__c Output: Loan Loss provisioning transactions are updated in loan accounts. | MonthEndJob |
Maturity Processing | This job is run independently on loan accounts that have matured. It chains Start Of Day job to get executed as next.A loan is called matured when only the last bill is uncleared. In this job, eligible loan's maturity flag is set to True. Input: It is operated on all the loan accounts. Output: Loan Accounts with Maturity flag updated. | MaturityProcessingJob |
Process Jobs | Process ACH Return Job: This job runs when ACH payments are returned by the bank
The following jobs are not supported starting CL Loan 2.2008.4.
| ProcessACHReturnJob ProcessChargesInterfaceRecsJob ProcessConsolidatedLoanPayIfaceRecsJob ProcessDisbursalTxnJob ProcessDuesInterfaceRecsJob ProcessFlexiRateSetupIntRecsJob ProcessLoanPaymentTxnInterfaceRecsJob ProcessRepaymentSummaryRecsJob |
Bank Transaction | This job processes all the bank transactions involved with all the loans. | BankTransactionJob |
Floating Rate Loan Reset | This job runs after the Floating Rate Reset Controller to reset the floating rate loans. | FloatingRateLoanResetJob |
Investor AMZ Schedule Calculator | This job modifies the records of amortization schedule for an investor corresponding to each investment order when a new investor amortization schedule is generated. This is a schedulable class and runs on daily basis and checks if "loan__Collect_Service_Fees_on_Total_Payment__c" is changed in Custom Settings and call InvestorAMZScheduleCalc class if the change occurs. | InvestorAMZScheduleCalcJob |
Loan Account History | This job schedules all the history records associated with all the loan accounts. This job is Deprecated | LoanAccountHistoryJob |
Regenerate AMZ Schedule for Int | This job generates interest only EMIs for all the loan accounts. It is run during generation of EMI Schedule for a Loan. | RegenerateAMZScheduleforIntJob |
Regenerate AMZ Schedule for Prin And Int | This job generates the EMIs involving principal and interest payoffs for all the loan accounts. It gets triggered when Regeneration of Principal and Interest Payments is requested under Repayment Schedule. | RegenerateAMZScheduleforPrinAndIntJob |
Investment Order Interest Accrual Job | This job is run independently. This accrues interest for all investment orders on daily basis. It chains Investor Payout Job to get executed as next job in chain. | InvestmenOrderInterestAccrualJob |