Human Capital Management Blogs by SAP
Get insider info on SAP SuccessFactors HCM suite for core HR and payroll, time and attendance, talent management, employee experience management, and more in this SAP blog.
Showing results for 
Search instead for 
Did you mean: 
Product and Topic Expert
Product and Topic Expert
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


Case 1

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.


Thank you