End of Day actions in Kwara
Each day at midnight (your organisation's time) Kwara automatically performs some operations to ensure all account states, days in arrears, penalties, and fees are up to date in accordance with the transactions posted so far.
These automatic actions are known as “cronjobs” in Kwara, follow a particular sequence, and contains 2 type of jobs: daily and hourly jobs. When the cron runs, if it wasn't already executed on that day, then it runs daily and hourly jobs. Otherwise, it runs only hourly jobs. At both types of jobs have finished, backup jobs are executed.
are executed if not already in progress or completed. Daily jobs are executed sequentially, exactly in this order:
Early organization jobs
Loan jobs, savings jobs
Account jobs (Yes, account jobs are executed twice. See note below for details.)
Late organization jobs
REDRAW_TRANSFER -> make automatic transfers from the Redraw Balance to the loan account. It will automatically pay a loan if there is something in the redraw balance (>0) and if there is any balance to pay (principal + interest + fee + penalty > 0).
AUTOMATED_TRANSFERS -> automated transfers from deposit settlement accounts to loan accounts, as per loan account schedule
UPDATE_SAVINGS_WITH_PRODUCT_SETTINGS -> update deposits accounts with any changes made to underlying Deposit Product Settings
UPDATE_LOANS_WITH_PRODUCT_SETTINGS -> update loan accounts with any changes made to underlying Loan Product Settings
As noted above, Account jobs are executed twice as part of the daily jobs. This behaviour is necessary to support certain business scenarios (especially those involving backdated or adjusted transactions), but does result in slightly unexpected behaviour in rare cases. For example, when disbursing a loan where the first repayment date is either in the past or on the current day, Kwara will collect the loan repayment with two transfer transactions rather than just one.
If you have additional questions about Kwara's End of Day actions, please contact us at firstname.lastname@example.org.
Early organization jobs
RESET_GL_JOURNAL_ENTRY_SUMMARIES_INFO -> reset all the information related to journal entry summary items in order to be able to recreate them from scratch
GENERATE_GL_JOURNAL_ENTRY_SUMMARIES -> generate the GL journal entries summary items for the accounting entries logged since the last EOD job was executed
UPDATE_JOURNAL_ENTRIES_FOR_EARLY_INTEREST_ACCRUAL -> update the journal entries reflecting the accrues interest before the accrual takes place
AUTO_CLOSE_PAID_OFF_LOANS -> automatic closure of loan accounts with zero balances, based on the Loan Product Dormancy settings
AMOUNTS_AMORTIZATION -> Fee amortization in accounting
INTEREST_RATE_UPDATE -> Update Interest Rate based on Index Interest Rate changes
TAX_RATE_UPDATE -> update tax rate based on Tax Rate changes
CREATE_REVOLVING_CREDIT_DUE_REPAYMENTS -> create repayment schedule for Revolving Credit loan accounts
LOCK_CAPPING_CHECKER -> check if capping constraints are exceeded and pass the loan account into locked capping state if necessary
LOAN_INTEREST_APPLY -> application of interest accrued
LATE_LOANS_CHECKER -> set the loan accounts to "In Arrears" state
PENALTIES_APPLY-> application of the penalties
AUTO_LOCK_ARREARS_LOANS -> lock the loan accounts that have been in arrears for a specific period of time as defined in Loan Product setup
DUE_AMOUNTS_UPDATE -> update all due amounts
SAVINGS_ACCOUNT_APPRAISER:accrue and apply interest (positive and overdraft interest)for saving accounts with Tiered Interest -> update Interest Rate and loan transaction if neededupdate overdraft account state -> update account state from Active to Active In Arrears and log activity when Expiry date is met and account's balance is negative
AUTO_DORMANT_INACTIVE_SAVINGS_ACCOUNTS -> set deposit accounts as Dormant as defined in Deposit Product Settings
Late organization jobs
UPDATE_JOURNAL_ENTRIES_FOR_LTE_INTEREST_ACCRUAL -> update journal entries reflecting the accrued interest after the accrual takes place
END_OF_DAY_CLOSURE -> perform end of day accounting closures
UPCOMING_REPAYMENTS_CHECKER -> search for all the repayments which are in Pending or Partially Paid state and trigger reminder Notifications using templates (check the due dates equal to today plus a configured number of days (how many days before that due date) and create notifications)
ACCOUNT_IN_ARREARS_CHECKER -> triggers notifications after a configured number of days since the account is passed into arrears state
UPCOMING_DISBURSEMENT_CHECKER -> triggers notifications for Approved accounts with a configured number of days before the expected disbursement date (loans and tranches)
ENFORCE_USER_PASSWORD_RESET -> reset user passwords if the period defined in "Internal Controls" is up
ORGANIZATION_SNAPSHOT -> create a snapshot of all indicators for organization
are executed after daily jobs and they are:
SEND_QUEUED_NOTIFICATIONS -> check for queued notifications and send them
BACKGROUND_PROCESS_EVICTION -> clean any background process (technical)
are executed after daily and hourly jobs. They are not executed during business hours or if they are already in progress or completed. They are executed on Production only, not on Sandbox. Backup jobs are
DATABASE_BACKUP, which will create a copy for the database at that moment.
SMS notifications are not sent at midnight, but starting at 9:00 AM (your organization's time).
Manual End of Day Processing
Kwara also allows manually executing the End of Day processes, instead of having it run automatically every night. Manual execution guarantees that Kwara will not run account appraisals every night, but it will still take the regular database backups every night.
Note that End of Day process need to be run before closing accounting books, to make sure that all the accounts are up to date.
To enable manual End of Day Processing, you must have the feature activated and have your admin switch the processing type to manual from the Kwara Administration section.
Triggering the End of Day Processing can be done from the user interface, by hitting the "Run" button, and also from the UI, by calling the dedicated API 2.0 endpoint.
Please be Aware
This option can be enabled upon request to Kwara support.
Triggering the End of Day processing manually will run both the hourly and daily jobs. If the daily jobs already ran for the day, then only the hourly jobs will run.