Successfactors Employee Central – Integration of Terminated/Inactive Employee
In most of the employee data interfaces there are requirements where the downstream application(specially Payroll systems) require employees termination details. Also it is a common scenario, where employee withdraw his/her resignation for whatever reason.
In this blog i will explain
- Logic to find out terminated employees
- Logic to find out employees whose termination record has been deleted
Terminated employee
Once a termination action is initiated the data in successfactor will look like below.
Job Information data looks like below
Employee is always terminated in Home Employment.And only once the employee is terminated ( does not matter past dated,current dated or future dated) the field end date is populated.
However it is NOT recommended to use the employment information end date ( i.e /person/employment_information/end_date) to determine if the employee is current terminated or Not. The employment Information portlet is NOT effective dated and hence if there is a future re-hire record the end_date is overwritten ( blank) eventhough the employee is currently terminated/inactive.
So in this example employee is active till 15th Dec 2017, however from 16th Dec employee will be in inactive status.The CompoundEmployee API extract will show the latest job information as below
Logic to check if the employee is currently Terminated:
Look for the job where below criteria is matched.
{
- /person/employment_information/job_information/start_date<= current_date && /person/employment_information/job_information/end_date>= current_date AND
- /person/employment_information/job_information/emplStatus = T
}
Termination Date = /person/employment_information/job_information/start_date – 1 Day.
P.S -This check needs to be performed for the parent employment information where the employee is currently ( i.e either Home or host).
Deletion of termination Record:
Due to various reasons employees termination can be revoked ( e.g employee decides to withdraw resignation). As of today ( as far as i know), the only way to delete a termination record is to go to Job history of the employee and then manually delete the termination record.
The compound Employee *Does Not* report the deleted job. So there is no easy way to find out the deleted termination Job. The latest job record appears as below. The values for the highlighted fields are reverted with values of Job record prior to termination.
(Compound employee need to run in queryMode = Delta or periodDelta)
Also note, the termination deletion event is captured by the node “<job_event_information>”
So now if the Interface need to determine if any termination record has been deleted or not look for “<job_event_information>” where action = DELETE and even = 26
Nice Article Biplab! How about change in the termination date?
Thanks Raghu.
Change in termination date will be treated like any other data change, so no special handling required for that. API would detect the change and new termination end date can be mapped with the same logic mentioned.
Thanks for sharing, Biplab.
What about the case when termination is created backdated and another record in job info - Rehire or Data Change in the interval TerminationDate..CurrentDate?
It would be beneficial to have the same guidance for oData.
Hi Vasily,
For backdated termination as well same logic can be used. Lets say the transaction done today(30/12/2017) and the employee terminated effective dated 16/12/2017, in that case the termination job record will have start_date =16/12/2017 and end_date = 31/12/9999.
{
}
However, if there is a rehire record ( lets say effective 01/01/2018) - the above mentioned logic would work - as currently ( i.e as of 30/12/2017) the employee is terminated. Hope it make sense?
Regards
Biplab Das
Thanks, Biplab.
Not sure about the case, when rehire record is in the past (e.g. 17/12/2107 in your example)
Hi Biplab,
Nice Blog! I actually want to sent event reason for future dated terminated employee. How is that possible. I sleceted the query as emplstatus=Terminated and Event = Termination( code for termination). But it is not yielding any result. ANy help would be much appreciated. Thanks.
Hi Biplab , if we have a data changes done post the termination will it be possible to track down the termination cause in my report this employes get missed out , not sure why and how to fix it