Skip to Content
Technical Articles

Time Off: Recalculation Options – Basic Concepts

Greetings to all exciting people working with SAP SuccessFactors Time Off Module (And not Only!)!

In this blog today I would like to go over with you on some very nice and practical functions we have in Time Off Business Rules Engine, which help us to produce automatic recalculations on Accruals.

This is especially important, in cases where a customer has different attributes and variables that need to be taken into account on their Accruals Calculations but at the same time, they might be dynamic or frequently changing.

An important note for you to be aware at this point is that when we are talking about such changes, we mean changes that take place on Employee’s Job Information Portlet.

So, somehow we need to create such a mechanism where all these changes that are taking place in the system will always be taken into account and affect at a real time the employees’ accruals.

As a general note, have in mind that the system supports triggering of:

  • Recalculations on Accruals
  • Recalculation on Absences
  • Recalculation on Timesheets

and we can also run these recalculation events manually if this is needed. What this means, is essentially that the Admin User is able to run a Job so that the existing accruals or Absences get recalculated based on some changes that have taken place in the system.

For example, we might need to manually run a recalculation event if we change something in one of the Time Objects the employee has assigned: Holiday Calendar, Work Schedule, Time Profile. Any changes within one of these objects, require a manual recalculation.

To achieve this, we can use the “Time Management Recalculation Event” object. We can find more details about this with this implementation guide: Recalculation in Employee Central Time Management.

The same object is being used to capture all the automatic recalculation events we will review in this blog.

Moving on though, to our topic:

First of all, we need to be aware of the system setup in order to be able to activate the automatic recalculation option in the system.

We should be able to do this once, and it will work for all accruals created from that point.

The first setup, is to create a record in the “Time Management Configuration”. This needs to be created with the exact External Code as in the screenshot below. What this record does, is essentially start taking into account all Job Information changes after the date we assign in this record.

Second, we need to activate the automatic recalculation in the relevant Time Types and Time Account Types, where we need this recalculation to take place. First on Time Type:

Then on Time Account Type:

  • Here it is important to include all fields we would like to take into account for recalculations. These fields should come from Job Information changes on employee’s profile.

Among the most common scenarios where we need to add Recalculation Fields in our Time Account Types are:

  • FTE Change
  • Standard Weekly Hours Change
  • Eligibility Change (in change an employee goes on a Leave of Absence)
  • Or it can be another attribute which needs to be taken into account in the Accrual Rules calculation (always an attribute in the Job Information though!)

Last, but not least – Include the fields we would like to take into account for any recalculation event in our Business Rules. Let’s put into context some specific Business Rules and how we can apply the recalculation fields:

Change of FTE throughout the year:

Case Scenario: We have an Yearly Accrual so the accrual amount is posted only one time on Accruable Start Date (Usually set on 01st of January). Throughout the year the FTE might change. With each change the original Accrual Amount posted on 01st January needs to be recalculated based on each change of the FTE amount.

Since we have an Yearly Accrual, we will get the same result for all changes in the FTE if we just calculate the Average FTE Value that has occurred throughout the Yearly Accrual Period. The calculation on the specific screenshot above will take into account number of months with different FTEs in order to result to an Average FTE.

Especially with FTE, have in mind that there are several different Variations of Business Rules we can use to get Average FTE for a Period. It is important to understand what is the difference of each function, so that we can get the exact recalculation we want based on our requirement.

We can find out more details about the differences in these functions in the guide: Employee Central Time Management: Rules and Concepts


Eligibility Change:

We could include this function in case we would like to recalculate Accruals based on the employee’s Leave of absence requests posted on their Time Off Workbench or in case we would like to find in our Business Rule the number of Eligible Days an employee has during the year.

Case Scenario: We have an Yearly Accrual so the accrual amount is posted only one time on Accruable Start Date (Usually set on 01st of January). Throughout the year the employee goes on a Leave of Absence for several months. Since the employee is not available for work during these months, there needs to be a recalculation on their total Accrual eligibility allowance that was posted on beginning of the year.

Now, specifically for the Eligibility Change Scenario, we will also need to do the below steps in order to activate this feature. First, we need to specify in the “Time Off Configuration” object, all Eligibility Rules, and include all Time Account Types where we would like to freeze Accruals, in case the employee goes on Leave of Absence. To do that, we will need to specify the Leave Of Absence Employee Job Information Status, as well as the Eligibility Status in each case. If we need these criteria to work only for specific Time Account Types, then we should also specify the Time Account Types (otherwise leave that column empty).

For more information on this feature, we can review the section of “Time Off Configuration” in Time Off implementation guide.

Standard Weekly Hours:

Case Scenario: We have an Yearly Accrual so the accrual amount is posted only one time on Accruable Start Date (Usually set on 01st January). Throughout the year the employee’s Standard Weekly Hours might change. With each change the original Accrual Amount posted on 01st January needs to be recalculated based on each change of that field.

We need this function, so that we can make sure we get all changes that take place on Standard Weekly Hours during the Accruable Period. If we did not use that function, we would only get the Standard Weekly Hours Amount that the employee would have on the exact time the Rule was triggered, so only on 01st January. Instead, with this function, we take always the latest change on that field (that’s why we use the accruable end date in the parameters).

Example: Employee needs to accrue Vacation on an Yearly Basis. Annual Entitlement needs to be adjusted based on the Standard Weekly Hours. Annual Vacation Days is kept on employee’s Job Information Portlet to keep a relevant amount.

Accrual Calculation rule: (Annual Vacation Days * Standard-Weekly Hours)/12

Standard Weekly Hours on 01/01/2020: 40

Annual Vacation Days on 01/01/2020: 5

Accrual Rule on 01/01/2020: (5*40)/12 = 16.66 days

Standard Weekly Hours needs to change on 01st July 2020 to: 25

Accrual Recalculation on 01/01/2020:  (5*25)/12 = 10.41 days

To promote an accrual recalculation on such fields, SAP SF provides three very nice functions we can use, depending on the field type we need to use.

  • Get Job Info Date Field Value on Key Date()
  • Get Job Info Numeric Field Value on Key Date()
  • Get Job Info String Field Value on Key Date()

Some important points we need to have in mind when using these functions:

  • Always assign the field with the external code taken from Business Configuration Screen – Job Information Portlet (Data Model) – Do not assign the field in the Rule from navigation to the corresponding Job Information Field
  • Make sure the field we are using for this rule is not a Picklist or a Record from an Object – The Rule will only support fields which are free text (Date, Number, String)


So, here it is, you can now use in your Business Rules useful functions so that you can produce Accrual Recalculations! The above consists only the foundation (the least steps you can do) to achieve this. Of course, your business requirements along with your imagination can go much beyond that!!

I hope you enjoyed this blog and as always any feedback or comments on your personal experiences is welcome!



You must be Logged on to comment or reply to a post.
  • Thank you Evangelia for a very helpful blog. Can you please confirm my understanding that I only need to configure 'Absence Recalculation Relevance' against absence in case the absence itself impact accrual? If I have annual accrual allocated at the beginning of year, and my absence only reduces balance, absence does need to have the recalculation set? In this case I would only configure recalculation against time account type and specify the recalculation relevant fields? Thank you.

    • Hi Petra Rana, and thank you for the comment!

      All the above points described are concerning Accruals and Accruals Recalculations. If we have time types where we only record absences, we do not need to do anything relevant.

      Please let me know if this replies to your question.

      Thank you,


  • Hi Evangelia,

    Thanks for this blog .

    I think for recalculation we need to keep one new field in Job Information which carry the eligible amount and based on that Time Account Type Accrual Rule and Hiring Rule does work . Am i correct ?




    • Hi Sankarsan,

      I don't really understand your requirement but in general:

      you don't need to keep any eligible amount in the job information portlet unless you need to keep a different accrual entitlement for each employee on a case by case scenario.

      Instead if you have more universal criteria four your accrual entitlements, You can use a custom table if you need to keep different accrual entitlements based on different criteria or different seniority.

      You can then just include in your accrual rule a variable to calculate the Job Information field you would like to use with one of the above "Get job Info" Functions, and then use that variable in your IF criteria.

      Hope this is clear,


  • Hi Evangelia Panagiotou ,

    Good blog. But i have some doubts on this. Please dont mind if it looks so silly as i have just started to read time off concepts.

    I have an employee who was hired on April 2020 and have a annual TAT which gives 20 days per year. I have hire accrual written and normal accrual written as well.

    However today i have just changed the FTE of that employee to 0.5 and i went to TMRE and followed all the instructions as you said and did all the settings as soon as i have saved job info, Job ran but result looks like recalculation has not changed, it says time accounts have skipped.

    I have not written any specific rule for this. Where am i missing?



  • Hi BP, thank you for your feedback! First of All, there is no such a thing with silly comments or questions!! everything can be valid and any other person including me had started off from the beginning at some point in our lives!

    Now regarding our question, first of all, make sure that you have followed and assigned all relevant points I am describing in the guide above, starting from point 1:

    • Set the Time Management Configuration
    • Set the Accrual Recalculation fields on Time Account Type (i.e. FTE)
    • Activate Full Accrual on both Time Type and Time Account Type
    • and then, of course choose the relevant function in the accrual Business Rule for calculating the FTE (as mentioned in the guide above this can be one of the several available functions).
    • If you include all above steps, then there should not be a reason not to get the automatic recalculation.
    • If you still do not, feel free to share a sample of the Accrual Rule used and we can further check it out.
    • P.S. Make sure you first have all the relevant configuration in place and the Initial Accrual Amounts generated for the year, before you actually go on to change an employee's FTE (within the same accruable period of course).




  • Great blog, Evangelia!

    There is something I do not understand. In case of using the variable "Get Job Info Date Field Value on Key Date()", you say that we can make sure we get all changes that take place on Standard Weekly Hours during the Accruable Period. With this function, we take always the latest change on that field (that’s why we use the accruable end date in the parameters).

    But when using accruable end date, what happens is that recalculation is done based only on the last change from Job Info...

    I am trying this one not for standard weekly hours, but for number of working days per week.

    This is my case:

    Total yearly entitlement = 30 days

    01.01.01 - for 5 days a week = full entitlement 30 days

    Change in Job Info to 2.5 days a week starting 1st of July - recalculation show me now a total of 15 days (which corresponds to a full year with 2.5 days a week) and not 22.5 days (15 days for first half of the year +  7.5 days for the second).

    Am I missing something? How to set it up so the recalculation works properly?

    Tried as well with function of getting average on this Job Info field, but result is also not a satisfactory one...

    Many thanks for your advice!

  • Hi Gabriela! thank you for the comments!

    I must say all these variations are a bit tricky and you always need to differentiate or combine Functions based on your exact requirements you may have.

    Now, have in mind, as per the description provided above, the purpose we use the “Get Job Info” Function, is Only so that we can read information based on latest Job Information changes (within our Accruable Period). So if you use only this function in your rule, you will get a full recalculation for your Yearly Accrual based on the latest Job Info Change. But in your case, you do not need this!

    I have tried to replicate your above requirement so that you can see what the result should look like. I have only used the “Calculate Average Value For Numeric Job Info Field()” however. Please check the Accrual Rule I designed for that purpose – and the Result I get is 22.43 days which makes sense. You can also round the final amounts so that it makes more sense for the End User.

    I hope this can clarify things a bit more. Let me know if you have any issues.


    Accrual Example


    Accrual Result

  • Hi Evangelina! Thank you for this value information.
    Im trying to make the recalculation of time account type based in employee type changes.

    I already follow your steps:

    • Time off configuration its active.
    • Time Type and Time account time have full accrual recalculation
    • Employee type field is assigned to Time account type recalculation field.
    • In Accrual business its include employee type

    But still the recalculation don't reproduce automatic when I make a change in employee type in the employee profile

    i'm attaching screenshot of accrual business rule

    Thanks in advance!

    • HI Vilma! Thank you for your comments!

      As mentioned above, it is indeed tricky to manage the correct business rules to work based on your requirements.

      In your case, since you take the Employee Type into account for a change on the Accrual Amount, I would recommend to include in your business rules the "Get Job Info String Field Value on Key Date()" function, so that your rule can actually identify the latest changes on this field.

      Currently your rule above doesn't really include anything which tells the system to check latest records or average records or something else which indicate an actual change. This is what is missing.

      Hope this clarifies things! Let me know if you still need any further clarifications. Good Luck!



  • Hi Evangelina

    Thanks for your prompt response!

    I'm trying to use that rule function, which makes me doubt if I should use it as "if" or in the "then" because to obtain the value of Amount Posted I use a Lookup table query to query depending on the employment type and in seniority it brings up the amount of accrual days (As I show you in my screen shot)

    What do you think?


    • HI Vilma!

      You can try to incorporate this based on the screenshot example I have above. Create a Variable with this function to get the Employee Type as of end of Accruable Period (to get the latest change), and then use the variable to call this field on your Then Section in your Lookup Function.

      Have in mind though! Employee Type would need to be a String (Text, not picklist) Field to be able to be captured with the "Get Job Info" Function.




  • Oh! That's a very important point, because employment-type is a picklist, you know another function I can use?


    Thanks for you quick reply!!

    • Unfortunately, yes that's currently how it works. What I usually have to do is create another Field in Job Information which just copied the value from employee type and have this hidden - so only use it in your accrual rule.

      But, I would recommend you first to try this out with any other text field within the Job Information just to make sure your Rule is working properly before you create a new custom field for this purpose.