Skip to Content
Author's profile photo Biplab Das

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

  1. Logic to find out terminated employees
  2. 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.


  1. /person/employment_information/job_information/start_date<= current_date && /person/employment_information/job_information/end_date>= current_date   AND
  2. /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


Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Nice Article Biplab! How about change in the termination date?

      Author's profile photo Biplab Das
      Biplab Das
      Blog Post Author

      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.


      Author's profile photo Vasily Baranovsky
      Vasily Baranovsky

      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.


      Author's profile photo Biplab Das
      Biplab Das
      Blog Post Author

      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.


      1. /person/employment_information/job_information/start_date<= current_date && /person/employment_information/job_information/end_date>= current_date   AND
      2. /person/employment_information/job_information/emplStatus = T


      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?



      Biplab Das

      Author's profile photo Vasiliy Baranovskiy
      Vasiliy Baranovskiy

      Thanks, Biplab.

      Not sure about the case, when rehire record is in the past (e.g. 17/12/2107 in your example)

      Author's profile photo Vaishali Rani
      Vaishali Rani

      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.

      Author's profile photo Alexander Pelaminraj
      Alexander Pelaminraj

      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