Time Off: Periodic Time Account Updates
Greetings to all exciting people working with SAP SuccessFactors Time Off Module (And not Only!)!
In this blog today, I would like to demonstrate a specific scenario of how to configure and apply a new function that has been released in the new H1 2020 Release in SAP SuccessFactors Employee Central – Called: ‘Periodic Time Account Updates’.
This function allows you to schedule periodic and automatic updates on Time Accounts, based on certain parameters you apply on your rule.
You can find all relevant information of what this function can do, if you read the revised Time Off Implementation Guide or the revised Implementation Guide for Time Management Scenarios.
Before deep diving in the cool stuff, here are some important highlights you need to have in mind for this function:
- It can run automatically using various frequency options!!
- You can review all relevant postings using the new screen ‘Review Periodic Time Account Updates’
- It cannot be used in Recurring Time Accounts (if you need to do something similar in recurring Time Accounts, you should use the ‘Interim Account Update Rule’ function)
- This function generates postings with posting Type: ‘Periodic Update’ only.
- It cannot close Time Accounts
- It cannot transfer balances to different time accounts (i.e. in time off in lieu)
- Posting Date needs to be the Period End Date
You can of course use this function in its simplest form, which would be to update the Time Account with the current Time Account Balance, at the time of execution, and taking into account the applied frequency. It is relatively quite easy to configure this function, if you just follow the steps from the guides provided.
In this blog, I was urged to challenge myself a bit more (Time Off does that to me a lot! ?), and demonstrate to you a more complex scenario of using this function. Let’s get to it!
We will not go through the steps on how to activate and assign the Periodic Update Account Rules, since this is very well explained in the Time Off Implementation Guides.
Note at this point: I have not found or become aware of any other function or process that can actually handle such cases, so please feel free to comment or share your own experiences if you had this request and if/how you were able to implement it! The configuration I will be demonstrating is very custom approach, so if there is a more standard approach to handle this, it would be great to hear about.
HR Admin can add one day of On Call Balance to an employee’s Time Account Type for them to use. If the added day is not used by the employee in one month’s period, then the added day needs to be ‘expired’ and removed from the balance.
By reading the above business requirement, someone can directly say that this has way too many variants and anything can go sideways in a configuration approach.
For example, how can we check in the system when the added balance has been posted, so that we know when to get it expired? Or,
How do we know for which added day, should we add an expiring negative day, each time? Or,
What happens, if we have more than one day added in the one month interval?
And so many other vague points.
I have tried to create some scenarios first in an excel sheet and then tried to reproduce them in the system, and after several attempts I have managed to get it to a point where I am pretty confident that I have actually figured it out!
Let’s see the proposed configuration setup and the relevant Business Rule that does the magic and then break it down:
As you can see from the above setup, I preferred having a validation of an employee’s balance done on a weekly basis, in order to generate a relevant periodic update.
I did not go for a monthly update, since this would be too broad, and the required time for making any relevant adjustments (periodic updates) would be too far away from the day they should be posted.
On the other hand, I did not go for a daily update (although this would be a more accurate approach for updating on the exact day), since this would mean too many periodic updates records on the time account being posted.
So by having a weekly update frequency, I then had to find a way to check on each week the balance of the employee two months before each periodic update, and also check any absences during the month before the periodic update.
In order to be able to put this into context, I am sharing the below excel with some scenarios used:
- 1 day added on 06th January 2020.
- If the day is not consumed until 06th February 2020 –> it should be removed from balance
One step further:
- 1 additional day added on 22nd January 2020
- In the same sense, if this day is not consumed by 22nd February 2020 –> it should be removed from balance.
- The system checks past transactions every week. So on the 06th January 2020, we would need to check any previous manual adjustments added two months before, and whether any absence has been posted the month following (in this way we ensure the one month validation).
- When we repeat these checks on a weekly basis, we get a relatively accurate result with an offset of around 6 days.
Based on the Business Rule Screenshot, here is the logic behind each pinpoint:
- Design of the Variable: Get the total number of days that should be periodically updated on employee Time Account Balance by calculating the below elements:
1. Calculate number of days posted two months before periodic update, taking into account posting types of “Manual Adjustment”, “Periodic Update”, “Employee Time”. I need all three posting types, since I also need to ensure that I take into consideration past updates or absences posted.
2. Calculate and remove from first element, any Absences occurred during the past one month before periodic update. So this way I ensure that I get a clear remaining balance of whatever is left in balance from the past month when I deduct the second element from the first.
Then, moving to our IF criteria for a Periodic Update to take place; in this section I am using essentially the same mindset as above, to capture the criteria of when the rule should trigger a periodic update based on the past transactions between two and one month before the next periodic update.
3. I am using the same function in pinpoint 3, since I am only interested to capture any relevant transactions that took place in the past two months and were bigger than Zero (so it means there is some balance still pending to be expired).
In 4 and 5 I want to essentially make my above check more specific and check whether there are any Time Absences during the past month, and so therefore, covered from the relevant past transactions that took place two months before. In this way I am doing a validation for one month. If the result is >= 0, it means there are still pending balances that have not been used.
I am using the Opposite Sign in 5 , since the calculation of balances on Employee Time and Periodic Update actually result to positive amount (even though you see them in your UI as negative amounts!)
6 Finally, if all the above criteria are met, then the next periodic rule should post a new Periodic Update Record with the amount resulted in my Variable calculated in pinpoints 1 minus 2.
Again, here I am using the opposite sign, since I need to actually deduct this ‘remaining balance’ from the employee’s time account.
And now let’s put all these little functions in effect to see the end result! I have replicated the same steps as the transactions recorded in my Excel Sheet above. In the below screenshot you can see the final effect of how this weekly periodic update rule has progressed through time, since the first time it started running on January 07th 2020 (Remember: start date was set on January 01st 2020 and was running on a weekly basis).
And Voila!! Pretty cool right?? All the expected periodic updates based on that excel sheet, were posted on spot.
The only weak spots I have for this approach are mainly two:
- The system will post a Periodic Update record even if the amount is Zero. So you end up having a huge list of records. It would be great if at least, you could filter these records out on the employee UI, based on amount, not only type as it currently is possible.
- The weekly frequency has a minor slag on the dates that each periodic update should occur. For example, if you compare the dates of periodic updates between the excel sheet and the instance, you would see that the latter happen just a few days after the expected transaction should.
Other than that, I am still playing around with this and examining different scenarios and so far it works very nice.. so hopefully this will keep working in a stable way!
So, this concludes this blog on how to use the new function of Periodic Update Rule (with a bit more ambition than normal!)
I hope you have enjoyed this, and please leave your feedback and comments below of any thoughts of improvement or similar experience!
Thanks for sharing the wonderful blog.
Have some doubts as below:-
Hi Baladeba, I am glad you like it!
You can very easily add Manual Adjustments records in a mass approach for your employees. All you have to do is Export the "Time Account" Object, open the Time Account File, so that you can get information for which employee and for which year the appropriate Time Account External Code you should use.
Then you will use the Time Account-Time Account Details File to fill in your file. You will use the Time Accounts External Code from above. The Posting Type on this file should be set to MANUAL_ADJUSTMENT.
Thank you for this huge explanation about time off.
I have 4 Recurring Time account type created, I need to program the update of this time account runs weekly or monthly (I think daily its not possible) but when I read your article, you mention
Is not possible to used in recurring time account? you know other way to program the update of this time account type? I already have a Interim Account Update Rule assigned to the time account that update the Booking Possible Until and Booking Possible From (Attaching screenshot)
Thank you for your help!!
Unfortunately I am not able to see your screenshot.
Periodic Updates as per the SAP Guide mentioned in the article above are unfortunately currently supported only for Permanent Time Accounts (maybe this will change in the future).
It really depend on what exactly your requirement is, to make sure we analyze this fully. Maybe you do not need to use Interim account update rules to update dates (not sure why you do that?).
If you need more help, feel free to share you requirements here and we can try and help more!
I used the Interim account update rules following this kba https://launchpad.support.sap.com/#/notes/2309405
I wanted to extended the bookable period until to 31/12/9999
But in this case I have "Vacation 2021" Recurring Time account type and what i´m looking for is to find someway that this calendars runs daily or weekly automatically and no manually by the option "Manage Time Off Calendars" to catch the changes in time accounts.
Thank you for your answer!
Hi Fabiana, I think it's worth trying out to convert your Recurring Time Account into a Permanent Account so that you can take advantage the use of Periodic Updates.
Glad to know the solution work, I am confused on the point on why we need to consider the balance of the past two months and deduct the absence in the last the month alone(Step 1) ?.
Can you please throw some light on this ? Thanks in advance.
Hi Vijey! apologies for the late reply - it's been a crazy busy period..
Basically this check is totally depended on the business requirement I had for the specific example. The customer wanted to check the balance and expire any unused days every month - therefore this meant that I somehow had to compare balances that took place before the past month (so up to two months in the past) and then also check any absences during the month before the periodic update took place.
I guess this was the way I thought it would work more effectively, but it's not strict to any other ways!
Hope this is clear,
What would be the changes to the above configuration if the amount to the time account would be added manually but after three months ,if the employee did not consume ,it will expire automatically.
and the manual adjustment date and period end date would vary user to user .So, the calendar would run for each user individually and automatically on the different dates? Like let say I set reference date as Jan 1st 2023 and offset as 3 months. For a user manual adjustment is done on 5th jan he did not use balances till next period update cycle run i.e.1 April ..the balances should be expired on 5th April but calendar already ran on 1st April so in this case he can use those balances till next calendar run cycle that is in July?
Kindly help with these doubts.
Many Thanks in Advance!