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
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