Skip to Content
Technical Articles

How to calculate time in management function for use by talent modules, considering that this information can be obtained from time in one or more Employee Classes

Business Scenario:

Some customers, especially in the Public Sector industry, need to know the time an employee occupied a management position within the company to make decisions for their talent processes, such as succession management.

This calculation can be challenging, because usually this information can be obtained only by reading all the historical data contained in Job Information and, additionally, this value changes over time.

Another situation that may happen is that the employee might have occupied management positions in a non-continuous way.

In this blog post I will explain how to accomplish this requirement by calculating this value on Employee Central side and synchronizing it to Employee Profile for use by talent modules.



The assumption here is that the time in management position (let’s call it management experience) can be calculated based on Employee Class field within Job Information.

The reason for this assumption, as we will see later in this blog, is because this solution is based on the use of a business rule function called “Get Work History Days ADD ALL”.

For example, let’s consider that the Employee Class is defined as shown below:

The management experience of an employee will be considered the sum of all the periods where Employee Class = Manager.


Solution Approach:

This solution will take the following steps:

  1. Create a custom field in Employment Details element, which will contain the number of years of manager experience. This field should be synchronized to a field on Employee Profile for use by talent modules.
  2. Create a business rule to calculate the management experience based on historical data contained in Job Information, where Employee Class = Manager, and save the result on the custom field created before. This rule will be triggered with onSave Event Type on Employment Details.
  3. Create an integration using Integration Center to read the Employment Details record and overwrite it with the same data. This procedure is just to trigger the business rule created before.



  1. Create a custom field in Employment Details, e.g., named Management Experience:

                Synchronize this field to Employee Profile, e.g., custom01:

  1. Create a business rule to calculate the management experience, using “Get Work History Days ADD ALL” function. This function should use Employment Details as base object. Although the documentation says that it should be used with Job Information as base object and with onView Event Type, it can be used with Employment Details as base object and with onSave Event Type as well. We will attach this rule to this later Event Type, i.e., onSave.

As the result of “Get Work History Days ADD ALL” is in days, we will divide it by 365.25 (average number of days in a year) and round to two decimal places.

Note that the parameter of “Get Work History Days ADD ALL” is Employee Class. This parameter is used to exclude the non-manager values of Employee Class from the calculation, i.e., only Employee Class = Manager will be taken into account.

This business rule should be assigned to Employment Details, with onSave Event Type:

3. Create an integration using Integration Center, reading Employment Details and overwriting this record with the same data. The objective is to trigger the business rule created before to calculate the management experience and saving the result on Management Experience custom field under Employment Details.

Go to Integration Center and create a new integration by selecting “More Integration Types”.

Select the following options:

  • Trigger Type = Scheduled
  • Source Type = SuccessFactors
  • Destination Type = SuccessFactors
  • Format = OData v2

                Select Employment Details as Starting Entity:

                The Configure Fields step will be used to map Employment Details to Employment Details with the same data:

                This integration can be scheduled to run, for example, daily:

                When the integration is run, the business rule will calculate management experience and store on Employment Details:



                This field is then synchronized to Employee Profile for talent module use:





Below are some important outcomes I would like to emphasize with this blog:

  • Sometimes we need to get some information from the system, such as the time in management function an employee occupied within the company for other uses (e.g., talent modules). Within some boundaries, like the assumption stated here that the required information can be obtained from Employee Class, we can propose suitable solutions for a customer.
  • Using different tools available in our SAP SuccessFactors system can be a good option to find solutions for customer requirements that would not be achievable using only one feature, such as Business Rules. As explained here, this solution proposal is based on the use of Business Rules, as well as Integration Center, to update a custom field in Employee Central, which in turn will be used by other processes.
You must be Logged on to comment or reply to a post.
  • Hi,,

    Many thanks for the tips.

    Have you thought about using an off cycle rule batch that would trigger the employment details rule instead of an Integration Center process? It could be a bit lighter..?




    • Hi Loui,


      Sorry for my late response and thanks for your valuable comments.


      I totally agree that using the Off Cycle Event Batch feature is a very good approach for this scenario and could be used as well.


      Thanks again for your suggestion,



  • Hi, thanks for sharing.


    Just to make sure my understanding is correct.

    The integration step, basically will just save existing data, In order to trigger the business rule execution and to have that new field with the correct value every single day....right?



    • Hi Luis,


      Your understanding is correct. The only purpose of the integration step is to save existing data to trigger the business rule and update the desired field.


      You can also refer to the above comment from our colleague Louis Cordier proposing an alternative approach.





  • I have set up a similar scenario calculating time in position as a whole, and in MBC, assigned it onSave in Employment Details HRIS.  If I edit the portlet in the instance, and save, it calculates correctly and updates the field.

    However, with IC, it would only update this if there is an initial value in the field.  And Emp Details does not support the operation Create / Post.  Any ideas around this?