Skip to Content


In this blog, I intend to explain the various data extraction mechanism that can be used to retrieve current snapshot and future dated data from SuccessFactors Employee Central using the compound employee API. Though this is a basic functionality of the API, I think it’s important to understand what query should be used and in which business scenarios.


Business Scenarios

In HR transformation projects, it’s not very uncommon to have full load interfaces in the integration landscape. By full load interfaces, I meant interfaces, where a set of employees ( based on country, company etc..) are sent across to downstream systems on a regular interval ( e.g daily once, weekly once etc..) irrespective of there is data change or not compare to the last interface run.Though it is a good practice to use delta/incremental interface wherever possible, that does not work out always, as sometimes it’s the downstream application system, which is not capable enough to absorb the data in delta/incremental manner, sometimes, it’s the project timeline/scope which does not demand a change in the as-is extraction type.

I will try to explain with examples on how to extract the current snapshot of employee data and also extract both current and future dated data.

I’ve used the tool Soap UI to demonstrate the API query.It does matter which middleware ( e.g Dell Boomi, SCI/HCI, SAP PO, Mulesoft etc.) one uses, the query and the underlying logic would remain same.

How to extract a current snapshot of employee data

In this diagram, the employee has 2 home address records, once current ( valid till 5th Sept) and the other one is a future dated record ( valid from 6th Sept). The requirement here is to extract only the current data and NOT the future record.

To extract current data one can use the below query in CompoundEmployee API in the full transmission query mode ( which is a default query mode – so no need to explicitly use this parameter in the query). Also note, address information is just an example – the API will fetch current data from all the portlets.

SOAP UI query request  screenshot

SOAP UI query response screenshot, which has returned just one address record which is a current record.

how to extract a current snapshot+ future dated record

In this diagram, the employee has 2 home address records, once current ( valid till 5th Sept) and the other one is a future dated record ( valid from 6th Sept). The requirement here is to extract both the records.

The query is same as current data query with only difference being there is “>” (greater than) is added along with “=”.

API request for current +future record

API response with both current and future dated records.

For non-effective dated portlets ( e.g email, phone, national id etc),  API will always return only one record as these portlets do not store history.


Blog on – How to extract delta data


To report this post you need to login first.


You must be Logged on to comment or reply to a post.

  1. Jay Malla

    Hi Biplab,

    I have a question for you.  We are running into an issue with the compound employee api.

    Let’s say we have an employee that was changed on January 16th, to add a future termination date of January 19th.  When we run the compound employee API on January 17th call to get all employees changed from January 10th (one week before this job running), then the future record is retrieved.  No issue here.

    The problem we are having is that, when we run the compound employee API a week later on January 24th to get all of the employees changed since January 17th, we expected to get the employee that had the future termination of January 19th.  However, this record is not picked up.  So it looks like a future dated event does not generate the system event at that given date.  Have you seen this behavior?  So it looks this event falls through the cracks…  It looks like we need to do another query (to get all employees with a termination date within the last week).

    Any thoughts?  Your feedback would be appreciated.  I can also create a question – but I thought you might be able to provide some light since you have this BLOG.




    1. Jay Malla

      Actually – i think I found the approach – I need to pass the from and to date:

      This way even if the change date itself was outside the period delta, the effective date is within the period delta so we can capture this change.

      SELECT person, personal_information, address_information, email_information, phone_information, person_relation, employment_information, global_assignment_information, job_information, alternative_cost_distribution, compensation_information, paycompensation_recurring, paycompensation_non_recurring, payment_information FROM CompoundEmployee WHERE last_modified_on > to_datetime(‘2018-01-18T00:00:00Z’) and fromDate = to_date(‘2018-01-18′,’yyyy-MM-dd’) and toDate = to_date(‘2018-01-24′,’yyyy-MM-dd’)   ORDER BY start_date DESC





  2. Biplab Das Post author

    Hi Jay,

    Sorry for the late response. Yes, you are correct. You have to use fromDate and toDate. Just using lastModifedDate >= lastRunDate won’t in this case because as per your example, termination record was created on 16th Jan ( effective 19th Jan), so if query is run on 24th which checks records changed from last 1 week( i.e 17th), it will never fetch the termination record. However, if you use the fromDate and toDate, query will pick the effective date records which falls within the fromDate/toDate bracket.



    Biplab Das


Leave a Reply