Business Hours at Contract Level
Overview
You can create multiple Business Hours and define Holidays in CL Loan and attach it to the lending products to calculate the dates for the amortization schedule. This requires the creation of multiple lending products where there is no difference in the product itself. To eliminate the need of creating multiple lending products, the Oxygen release of CL Loan has brought about the ability to define Business Hours at the contract level.
With this ability, the contract servicing such as billing, rescheduling, payment creation, amortization schedules, and more can support multiple time zones.
For example, when a loan officer in Los Angeles (LA) reschedules a contract for a borrower residing in Hawaii, the holidays or business days defined for Hawaii, and not of Los Angeles, are applied to the contract.
Define Business Hours in a Contract
This section explains how to define Business Hours at the contract level.
Prerequisites
Before defining the Business Hours in the contract, ensure that the following prerequisite is met:
-
Enable the Business Hours On Contract flag in Setup > Custom Settings > Enable Loan Features.
Note:This flag is disabled by default.
-
Enable Loan Features
Note:To know more about Enable Loan Features, see the Enable Loan Features section of the CL Loan Administration Guide.
Steps
To define the Business Hours in the contract:
Log in to your Salesforce account.
Click (App Launcher).
Search for
CL Loan
, and then click it.-
While creating a contract, in the Additional Parameters section, select the Business Hours to apply the business holidays on the contract.
To know how to create a contract, see Create a Simple Loan Contract.
-
Complete creating the contract.
This creates a contract with Business Hours defined at the contract level.
If the borrower Account or Contact contains an address whose pin code is that of Canada, then the Business Hours that match this time zone is autopopulated on the contract. If there is no match found, then the system considers the default Business Hours of the product.
The time zone selected by the system for the corresponding pin code is illustrated as follows:
Pin Code Starts With |
Time Zone |
---|---|
'S', 'R', 'X0C' |
America/Chicago |
'J', 'G', 'H', 'L', 'K', 'M', 'N', 'X0A' |
America/New_York |
'T', 'X0B' |
America/Denver |
'V', 'Y' |
America/Los_Angeles |
'B', 'C', 'E' |
America/Halifax |
'A' |
America/St_Johns |
Impact
Defining Business Hours at the contract level affects the following:
-
Due Date in the Repayment Schedule:
The repayment schedule updates its Due Date as per the Business Hours defined in the contract. This means that if the due date falls on a holiday as per the Business Hours defined in the contract, then it gets moved to the next due date as per the parameters such as the Move Across Months and Schedule Adjustment Method defined in the Holiday Treatment.
When a loan is rescheduled, if the Due Date in the repayment schedule falls on a holiday of the Business Hours defined in the contract, then it gets moved to a working date as defined by the Holiday Treatment and the Business Hours defined in the contract.
-
Next Due Date and Next Due Generation Date:
When Holiday Treatment is applied to pre-bill days, if the Next Due Generation Date falls on a holiday, then it is moved to the next working date as per the Business Hours defined in the contract and the Holiday Treatment parameters defined.
Debit Date on APS (Automated Payment Setup): When Holiday Treatment is applied to APS, if the Debit Date falls on a holiday as per the time zone of the Business Hours defined in the contract, then it is moved to the next working date as defined by the Holiday Treatment parameters.
-
The Holiday Treatment decides the next date based on the parameters such as the Move Across Months and Schedule Adjustment Method.
To know more about Holiday Treatment, see the Holiday Treatment Setup section in this guide.
Next Due Generation Date is the date on which the bill is generated.
The movement of the date follows the Business Hours at the contract level, and not the default Business Hours at the org level.
Example
Let us understand how defining the Business Hours at the contract level affects the Amortization Schedule with the help of an example.
Default Business Hours at the Org level
Let us say the user of the CL Loan application is from Los Angeles whose time zone is Pacific Daylight Time, and so the default Business Hours at the org level is as highlighted in the following image:
Business Hours at Org Level
Lending Product Parameters
Let us define the parameters for the Holiday Treatment in the lending product as follows:
Parameter | Value |
---|---|
Move Across Months | True |
Schedule Adjustment Method | After |
Business Hours in the Contract
Now let us say, we associate a borrower with Ontario Business Hours to the contract.
Business Hours at Contract Level
Business Hours Setup
The Ontario Business Hours has a Saturday and Sunday defined as No Working Hours in the Business Hours setup.
Business Hours Setup
Contract Parameters
Consider the following parameters of the contract:
Parameter | Value |
---|---|
Current System Date | March 15, 2021 |
Repayment Start Date | March 15, 2021 |
Payment Frequency | Monthly |
Next Due Date | April 15, 2021 |
Amortization Schedule
The Amortization Schedule should have the due date on the 15th of every month. But, as per the Holiday Treatment parameters defined in the lending product of this contract, and as per the Business Hours selected for this contract, we can see that the Amortization Schedule is generated as follows:
Amortization Schedule
As highlighted in the preceding image, when the due date falls on a holiday of the Business Hours selected, the due date in the Amortization Schedule changes.
For example, as per the schedule, the next due date, after April 15, 2021, should have been May 15, 2021 (5/15/2021), but, as per the time zone of the Ontario Business Hours at the contract level, because it falls on a holiday (Saturday) and the next day (5/16/2021) too falls on a holiday (Sunday), the Due Date is updated to the next date that is May 17, 2021 (5/17/2021).
This is explained in the following table:
Due Date | Holiday/No Business Hours/Business Hours | Move Across Months Applied | Schedule Adjustment Method Applied | New Due Date |
---|---|---|---|---|
April 15, 2021 | Business Hours | No | No | Remains the same |
May 15, 2021 | No Business Hours (Saturday) | Yes | Yes (After) | May 17, 2021 |
August 15, 2021 | No Business Hours (Sunday) | Yes | Yes (After) | August 16, 2021 |
The Internal Logic Used
As per the Business Hours at org level, the time zone is Pacific Daylight Time, and so it is 3 hours behind the Business Hours at contract level, which follows the Eastern Standard Time time zone. This means that when the administrator in LA runs a billing job and if the next bill date is calculated to be on a Friday as per the org time zone at 11:30pm, then after converting it to the contract Business Hours, it would be calculated as Saturday 2:30am, which is a no Business Hours, and hence the system moves it to a working date that is Monday 12am in the contract Business Hours time zone. When this is converted back to LA time zone, it is a Sunday 9pm, which is a no Business Hours in LA, which is not a correct calculation.
To summarize this, when the processing user in LA finds out the working dates for all time zones using Salesforce's BusinessHours
class methods, it first converts given date to corresponding time zones in Business Hours and verifies whether it is a working date or not. If it is not a working day, then finding the next working date returns the working date at midnight in the corresponding time zones and converts it back to the processing user's time zone.
Thus conversion between the processing user's Business Hours at org level and the Business Hours time zone at contract level takes place when finding out the next working date, thereby returning incorrect values. When the system encounters a date, it should know whether that date is a holiday or not, and does not require a combination of date and time. This is because the CL Loan system does date-wise comparisons for its processes such as checking if the next billing date is due or the next payment date is due. However, BusinessHours
checks a combination of date and time to identify whether it is a working date or not. To resolve this problem, CL Loan uses an offset between the differing time zones, where offset is the time difference between processing user's time zone and the contract Business Hours time zone.
Using offset, if the next billing date is on Friday at 11:30pm in LA, then after adding an offset of -3 hours to it, it changes to Friday 8:30pm in LA. Now when this is converted to Ontario, it would be Friday 11:30pm in Ontario, and because it is not a holiday, the date remains the same and is then converted back to the LA's time zone keeping it as a working date, which is a correct calculation.
To implement this logic, the methods in the HolidayUtil
class are overloaded and are used in FinCalc and loan product.
The offset value used here is a negative value as the contract Business Hours time zone is ahead of the LA time zone. If the contract Business Hours belonged to a time zone that is behind the LA time zone, then the offset would have been a positive value.