EC Time and Attendance – new features Q1 2019
Hello Time Folks,
I am a bit late this time due to other priorities, but better late than never. So no long introduction on weather or other things, we nail directly the facts.
What´s in the Q1 2019 release regarding time management?
We worked again a lot on easing configuration with lots of small checks and validations to ensure customers are not configuring things that won´t work or cause data inconsistency. Stability and performance improvements have also be done on the things behind the scene (business rules, jobs). And the development team worked also directly in interacting with customers and fixed some issues or gave insights in how the system works via the support channels. Cause based on the fact that EC Time Management is such a big success in customer numbers the development team needs also spend an increasing portion of their time to deal with supporting this growing customer number. More customers create inevitably more support tickets. Some of them are rather consulting questions, some of them are really bugs cause albeit our extensive testing one or the other bug slides through.
This figures give you an idea what is going on in our datacenters:
Time Off application has now more than 1130 live customers – spread around the world with more than 2 Mio Users requesting more than 20 Mio leave requests in the last 12 months.
And Time Sheet has doubled its customer numbers within 12 months to more than 220 customers. Nearly 400.000 users created more than 11 Mio time sheets (!) in the last 12 months.
So, what can this customers and users and the many more to come in this year expect from the new release?
1. New time sheet report showing planned / recorded time sheets with approval status
2. Cost center field available in External Time Data import
3. Gap handling and dynamic breaks
4. Full or partial dynamic break deduction
5. Automated pay out of remaining time account balances via the time account period end processing
6. Support of migration from leave of absence to Fiori Time Off
Lets deep dive:
1. New time sheet report showing planned / recorded times with time sheet approval status
This feature has been build by our reporting colleagues. A big thanks to them cause it helps many customers to find time sheets that are for example not yet approved. Imagine you got hourly employees – or even salaried becoming overtime payments or shift differentials – and payroll is due to run. But lots of time sheets are not yet approved. And when they aren´t approved the employees won´t get paid.
So, what better if we could provide a list of time sheets that are not yet approved? And not only the time sheets, but also the name of the approver who is due in approving the time sheets? Here we go:
This new pre-delivered time sheet report that you can find in the Analytical Report application gives you amongst other start / end date of the time sheet, approval status, sum of planned time and sum of recorded time to see at a glance if times are missing or if too many hours have been recorded. But it gives you also the workflow details like workflow ID, creation date and the approver name. For this kind of association to the workflow details the platform team had to develop some features – thanks.
So, this seems to me as a very useful tool to find easily time sheets at a certain date in a specific approval status. You can use this report as a pattern and add your own fields, rearrange them so that it gives you the information in the way you want to have it.
Next feature is one that was eagerly awaited by lots of customers:
2. Cost Center field added to the External Time Data import service
Just to recap- what is the external time data import service? With this service (Odata API or blain file import) you can import into the time sheet time records from the outside world. This can be attendance time types, on call times or breaks. You can send for multiple employees / multiple days one or several records. They are validated (for example collision check with absences) in a staging area and then posted to the time sheet automatically where time valuation picks it up and creates time valuation results for payroll or time off in lieu postings. Check out my previous blog posts to learn more on this Odata API.
However, there was one field missing in this import service and this was the Cost Center. And the gap is filled now. Means, you can upload a duration or clock times based attendance record with a cost center. The effect is that all pay types (or wage types in SAP ERP Time speak) that are created in time valuation based on this record inherit the cost center information. If you have connected an EC Payroll or SAP onprem Payroll the record gets transferred to the IT2010 with the cost center information, Payroll picks it up and can perform a cost center split which can then be further send to Finance Systems.
Means in concret words: you can send from the outside world time records with a cost center information and at the very end of the chain the monetary value of this record (which payroll calculates) is charged to this cost center.
From a business process point of view there has nothing been changed in the time sheet – cause the web user interface did already allow right from the beginning to enter a deviating cost center. But the import service did not allow – which has now been changed.
Let´s check the next one:
3. Gap handling and dynamic breaks
Now it is getting a bit more tricky – and you need to be a bit familiar with our “dynamic break” feature that has been released in Q4 2018. Please read my blog on Q4 to find out more on this. A short summary:
Up to Q4 EC Time had only “fix breaks”, which is a break defined with a fix start and end clock time like from 12:00 – 13:00. But when you have got flexible working times and the employee starts his work at 11:00 a fix break deduction already after 1 hour makes not really much sense. Dynamic breaks allow here – yes, more “dynamic”. Dynamic breaks take the start of the working time and calculate based on a configured duration the automated break deduction. Like for example “after 6 hours 30 minute break; after 9 hours another 15min break”.
Furthermore, this kind of break regulation is mentioned in many laws and regulation like the European Working Time directive. Yes, you can accomodate this even with fix breaks, but the setup of the workschedules is much more complex and you would have got lots of workschedules then.
Hence, dynamic breaks allow a much more smarter realisation of the European Working Time Legislative (and Working Time laws like in Switzerland and Germany and other european countries) that stipulate, that an employee is not allowed to work more than 6 hours with a break.
Now, software cannot do and control each and anything. Software can´t check if an employee really performs his break. But software can ensure that the break is deducted from the working time when the employee does not record sufficient or non break at all. And based on this employees are rather encouraged to take their break times – cause usually they are not paid during this time.
So, this feature was released in Q4. But it is a big and complex topic when you think on all the constellations that might happen on a day and we used the Q1 release to bring more configuration option to deal with the edge cases.
Dynamic breaks deduct a break after a specified number of attendance time has passed. For example after 6 hours of attendance time 30 minutes break shall be deducted. But what when the employee records:
Working time from 08:00 – 12:00
Working time from 13:00 – 17:00
There is a gap inbetween of recorded working time.
This might happen – cause time recording is so divers amongst customers. Some demand the explicit break recording, others don´t. And it could even be that the employee records:
Working time from 08:00 – 12:00
Working time from 12:10 – 13:00
Break from 13:00 – 13:15
Working time from 13:15 – 17:00
So, we got a small break recorded that is not sufficient for our break rule and a gap.
And if you ask customers I bet you get a 50:50 vote on the question if this gaps shall be regarded as break times or not.
And the new configuration option offers now exactly to set this up as the cutomer likes it to be. You can configure now if gaps inbetween of working time shall be regarded as break or not. In Q4 gaps were not regarded as breaks at all, now you can choose via configuration.
So the default behaviour in the first example above is that no additional break is created – cause the gap is regarded as break and with it´s 1 hour duration it is big enough to accomodate the break rule with 30 minutes.
The second example gives a bit a more complex result. We got a gap from 12:00 – 12:10 and a manual recorded break of 15 minutes. When the new option is configured the gap counts as break and we got 10 minutes gap, 15 minutes recorded break so we end up with 25 minutes overall as break relevant time. Means to meet the break rule another 5 minutes break needs to be generated. And the remaining break would then be generated into the working time as soon as the 6 hours attendance time is reached – which would be from 15:05 – 15:10 (when my calculation is correct ;-)).
But here it is important to draw your attention to one important thing. The dynamic break feature creates a break time type automatically into overlapping attendance times (and we will later see: into absences as well). So, a real time record is created and visualized to the employee in his time sheet. Cause otherwise this would not be transparent to an employee. But if gaps are set as to count as breaks – we don´t generate a time type for it. The gap is non-recorded time and just leads to the fact that no additional break is created when the gap is large enough. Here we do not “fill” a gap with a break record, we just regard the gap as break relevant time. Makes in the end no difference in calculation, but is worthwhile mentioning it.
And where is this configured? This is configured in the already existing dynamic break object:
And this object is assigned to the employee in the job information. This allows a huge flexibility when the customers has got different locations or employee groups where this is handled differently. And moreover, time administrators can easily check in the employees job information which break rule is assigned to this employee when questions from the employee regarding break calculations come up. Unlike in other systems, this is not hard coded or hidden in lots of different configuration groupings, it is assigned directly to the employee. Transparent and flexible.
The next configuration option is again a rather sophisticated but necessary feature around dynamic break handling:
4. Full or partial break deduction ?
Imagine you got the dynamic break rule assigned that after 6 hours 30 minutes break are generated.
You got 2 employees – one is a bit sharky. Employee A works 6:20 and gets the break deducted of 30 minutes so that his paid daily net time is only 05:50. And employee B – the sharky one – leaves deliberatly earlier than employee A, he leaves after a duration of 5:55. With the result that no break is generated cause the threshold is not crossed. And worse: this employee is even paid more than his colleague that stays longer. Life is unfair might employee A think – only the cheeky and sharky ones are on the sunny side of life. But here comes the big world justice: change your configuration with our new option ;-). Cause you can now set up a “full” or “partial” break deduction. What does this mean?
You got the option to configure when the attendance time is not sufficient for a full break deduction only a break record with the duration “above” the break threshold is created. Complex, technical speak, lets look at an example:
We got an employee that works 06:20. The new option allows to really create hard and uncomprisingly 30 minutes break or, a bit more employee friendly only 20 minutes break so that in the end depending on the configuration 5:50 (full break deduction) or 6:00 (partial break deduction) paid times remain.
And as described above this is done in our dynamic break object which is assigned to employees in the job information allowing to handle employees / employee groups / whole locations differently than others.
Based on my consulting experience in Time Management (okay, already some years ago 😉 but some things never change) I dare to say that the question on full or partial deduction is again one that customers a) can´t answer immediately and need themselve do some investigations how this is handled actually and b) the outcome is a 50:50 result. Some do it this way, others the other way. Drop me a comment when you have made different experiences on this. There might even be some country and continental differences in this that I am not aware of. But due to the fact that there is no strict handling we made this option configurable. You configure it again in the dynamic break object:
Enough with complex dizzy-making dynamic break things. But before I come the next feature, let me just mention one last thing – and this is only for the hardcore time valuation configurators now:
The behaviour with dynamic break handling and absences has changed a bit compared to Q4. From this release onwards time sheet calculates a break record even when overlapping absence record exist. You might ask: what? Breaks into absences? Yes, cause:
Many absences are paid absences. There are different flavours of it:
-“average principle” – this is calculated by payroll based on an employees last 3 months earning for example
– “as-if payement” – which is payment as-if the employee has worked which is then time valuations task to generate the pay types with all shift differentials and extra premiums for weekend work for example
– “base pay only” for hourly employees which is again time valuation task as well to generate it.
So, when there is a full day absence from 08:00 – 17:00 breaks need to be deducted cause otherwise the duration of the break is too long. You need to cut out the breaks from the absence time in the time valuation rules. And here you need to use the break time record that is now generated. For fix work schedule breaks this specific break record is not created, it could be derived in time valuation from the workschedule. But in the case of dynamic breaks you get this break record cause there is non in the workschedule and even the concrete time slot where the break is generated depends for partial absence recording on the other time records. But this is now really to complex and I stop here. Just keep this in mind: a dedicated break time record overlapping absences is now created in the time sheet.
And, another important thing:
We introduced a new time category to differentiate the dynamic breaks (not part of the workschedule object) from the fix breaks that are part of the workschedule.
This new time category holds the break times coming from the break rule object. This is important when you want to reduce the “scheduled time” with the breaks in order to get the net duration of the planned work schedule time (for overtime calculation for example). Remember: fix breaks are defined directly in the work schedule (and you get this break times in time valuation rules in the “scheduled break” time category), but for dynamic breaks there is no entry in the workschedule cause it is assigned to the employee directly. And this is why a new time category has been created, the so called “scheduled dynamic breaks”. So when you use a time valuation rule that deducts from the planned working time (or scheduled time) the breaks in order to get the net planned time (without breaks), you better do it in one shot and deduct the possible “schedule break” category and the “scheduled dynamic break” category. For each day only a scheduled break or a dynamic scheduled break can exists, they can´t exist in parallel. And to avoid having to double workschedules into those with fix breaks and those where a dynamic break is applied or to double time valuation rule that deducts the break from the scheduled time, you better apply both time categories when cutting out breaks from the scheduled time.
Puhh, this was even difficult for me to write ;-). Lets quickly come to an more easy understandable feature:
5. Automated payout of time accounts via period end processing
Ever wanted to automatically payout a remaining time account balance at the end of the year? Lots of customers want to do this. And you thought this is not possible in EC Time – only caps or carry forward of remaining balances? Well, now you can. The period end processing allows now to automatically payout remaining balances.
A new business rule scenario is provided that contains on top of the already known functionality a new rule parameter that allows a payout. When your time account is generally set up to be pay out enabled, this time account can now be paid out via the period end processing.
Of course you can create complex scenarios where you mix the variants and parts of a remaining balance are carry forward, parts paid out and parts forfeit. No limits.
Here is a sample rule with the new parameter and a rather simple business case: payout the remaining balance and close the time account:
And last but not least an information that is relevant for the customers that use the leave of absence application (LoA) for long term leaves. This application is not supported in Fiori and the customers need to migrate to Time Off to benefit from the overall new Fiori User interfaces and the new functionality that comes with them. We provide tools and guidelines to support this upgrade process:
6. Support of migration from leave of absence to Fiori Time Off
Customers using the leave of absence application (LoA) are excluded from Fiori Uis and they need to enable the Time Off application which handles the Leave of Absence use cases as well. But for old LoA records there is a migration necessary and Time Off needs to have some rudimentary configuration of course.
There is a step-to-step description of the migration activities in the time off implementation handbook. And to minimize the effort there are automated upgrade activities that can be run via the upgrade center.
Essentially 2 steps are needed:
- Assign permissions to create Leave Requests in Time off
- Create time records in time off for unfinished leave if absence records
If you are interested in this topic, check out this video produced by my colleague Hans-Georg Bingler that explains the process:
That´s it, as usual: I hope you like what we did in the last release and as usual: more to come in 3 months.