Recalculating Time accruals based on Seniority and FTE using Off Cycle Event Rule
Most of the customers have a requirement to grant accruals based on seniority, FTE or working days per week. Granting accruals is not an issue but imagine if an employee converts from part-time to full time i.e 0.5 FTE to 1 FTE or changes his seniority mid of the year. Some customers would like to average out the accruals for that period say Jan – Dec. This is sometimes tricky for a consultant if he is not aware of the right functions and tools to accomplish this. In the below blog, I am going to demonstrate one such approach which can be used to achieve this functionality.
We are going to make use of a special time off rule function “ to calculate the average of a numeric job info field”. The idea is to have a custom field in job info to store the accrual amount based on FTE. Moreover, we will have an onSave rule in job info to populate that field. In addition, we will have an off-cycle event batch rule to insert a job info record for an employee completing say 5 years, 10 years of seniority. The off-cycle batch rule will populate the custom field again based on the employee’s seniority and this will lead to recalculation of accruals which would be posted to his/her time account
Hopefully, the design and concept are clear from the above paragraph.
Now let’s get to the configuration
Create a custom field in job info say custom-double20
Create an event reason to ensure that these changes are recorded against the correct event. You can practically use any event reason. For the demo, I have named it as accrual eligibility change
Write an on Save rule populating this field based on seniority and FTE
The rule is very simple. Gives 30 days for a Full Time employee below 5 years and 35 for with seniority between 5 to 10
Create a new time account type and accrual rule. The accrual rule takes the custom field and calculates the average for the entire accrual period i.e Jan – Dec
In addition, add the fields FTE and custom field as recalculation relevant fields as shown above.
The below is the accrual rule
For handling seniority, we need an off-cycle batch event rule. The config is as listed below
Offset acts as a filter and is set to 1 year since every year from hire date, we would like the seniority rule to recalculate accruals
Testing the solution
Hire an employee say from Feb 18th, 2015. He completes the seniority of 5 years starting Feb 18th, 2020 (today)
He gets 30 days as per his FTE as of Jan 1 2020 since he has not completed his seniority of 5 years yet
Now run the off-cycle batch job on Feb 18th, 2020 (today) from provisioning
After the off-cycle batch is run, we can see a new job info record being created with a change in the custom field value. It is updated to 35 days effective from Feb 18th, 2020 automatically without any manual intervention. The off-cycle batch can be scheduled daily from provisioning and systems runs it automatically for you.
This leads to a recalculation of accruals automatically and they are recalculated as below
The calculation works like 48/366 (days between Jan 1st to Feb 17) * 30 + 318/366 (days between Feb 18th to Dec 31st) *35 = 1440 + 11130 / 366 = 34.34
This is exactly what we got after recalculation.
Case 2: Employee converts from 1 FTE to 0.5 FTE and this also leads to recalculation or averaging of accruals. User is hired in 2018 and hence he gets 30 days as of Jan1 2020
His FTE is changed effective from 1st July 2020 to 0.5
Accrual eligibility is changed to 15 based on FTE
Accruals are recalculated as follows
182/366 *30 + 184/366 * 15 = 5460 + 2760 = 8220/366 = 22.45 which is exactly we got above
Disclaimer: You can have various ways of doing this. I have demonstrated an effective way of using off-cycle event batch to do this.