Skip to Content
Technical Articles
Author's profile photo Walter Matsuo

External Candidate ID into Employee Central (customized)

Hello everyone!

We have an increasing amount of customers that have been implementing the SAP HXM SuccessFactors solutions which includes the Recruiting, Onboarding and Employee Central modules.

And today I bring you a solution that I have delivered for a customer that I believe others have faced as well.

Process Requirement

Considering that integrated landscape, several EH&S systems will need to consume data from the SAP SuccessFactors platform at some points as some candidates goes through the Health Checks before starting to work as an employee.

However, we find some different states that a person can become within that process flow as I describe below:

  • Recruiting: the person applies for a job requisition, fill out the profile and goes through the recruiting process as CANDIDATE.
  • Onboarding: after completing the Recruiting process that person is chosen and has some activities to do such as providing further personal information, signing contracts as an ONBOARDEE.
  • Employee Central: finally, after the Onboarding process is finished, the person is hired as an EMPLOYEE.


Person: Candidate – Onboardee – Employee

The SAP SuccessFactors platform does integrate in a smooth way, that is seamless to the end-user.

However we may find some technical limitations that makes us struggle to “link” the person throughout that process for other systems in the API, let me put some light into it considering that Health Check scenario:

  • Recruiting: The person while in Recruiting module is considered a Candidate as I described above, and receives a Candidate ID. Then we can use a status in the Recruiting pipeline as Health Check to send this candidate information to the EH&S system.
    • Often, the EH&S systems also works with Candidate / Employee definitions.
  • Employee Central: After that person is hired as an Employee, it receives an Employee ID which is different from the Candidate ID.


Technical Challenge

From an API perspective, there’s no link from between Candidate and Employee tables. That means that if we use the API to check on Candidate data and Employee data, we will not find a connection of that person as candidate and employee even though we have that same person in both tables.

That makes it difficult or impossible for the EH&S system to link the Candidate and the Employee.

So let’s consider John Lastname as our person:

  • In Recruiting, John is the Candidate 2345, and his information such as Name, Date of Birth is sent to EH&S for Health Check using the API.
  • Then after he’s gone through hiring process in Employee Central, he is now the Employee 20000123.
    • Then the EH&S system needs to convert the Candidate 2345 to the Employee 20000123 in their system.


Candidate ID vs Employee ID



In the searches for the solution, I found a PDC post (Partner Delivery Community – Partners and SAP Only) which Andy Athanur (SAP Employee):

So in order to create a way that other systems can merge the person in their system, we can set up some configurations in Recruting and Employee Central:

First, in Recruting, in the Candidate Profile Template (CPT) datamodel, add Candidate ID field below if not configured yet:


Candidate Profile Template – Candidate ID

In Employee Central, add a custom-string field for the External Candidate ID in Employment Info block (portlet):


Employment Information – External Candidate ID (custom-string)

Then on Candidate to Employee integration template, add below field-mapping in order to link the External Candidate ID to that custom string field created in Employee Central.


Candidate to Employee Integration Template – Field-mapping

The look of the information in the Manage Pending Hires is this:


Manage Pending Hires – External Candidate ID


After that, set a onSave rule to take out the .00 of the end of the “double” number of the External Candidate ID:


Business Rule – .00 Substring


Then the final result is that:


Final result


We have some KBA’s that could have helped if were clearer into the system behavior:

2829436 – How to find the Employee Id from the Candidate entity – Recruiting Management

  • The User ID is synced to the Internal Candidate profile ONLY (as per some of my personal testings)
    • External Candidate: Someone “outside” of the organization that registers itself as a External Candidate using its own personal email for a Job requisition.
    • Internal Candidate: Every employee is granted a Internal Candidate Profile to apply to internal opportunityes (Careers tab)
    • KBA = 2921329 – Internal candidates must apply on the internal career site

2249476 – External to Internal Candidate Profile conversion – Recruiting Management

2711168 – Candidate Search using Employee ID does not show any result


So if anyone has faced this and could manage to “link” Candidate into Employee in a standard way please let me know in the comments.


Hope it can be helpful for you as it was for me and my customer.


Thank you Andy!

Assigned Tags

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

      Thanks for the callout, Walter. I'm glad I could help solve your customer's issues.


      Author's profile photo Raju Aitha
      Raju Aitha

      Nice explanation  Walter!! Thanks for sharing your Insights.

      Raju Aitha

      SF Solution Architect

      Author's profile photo Arata Kaga
      Arata Kaga

      thank you.
      but this is a workaround for unexpected ODataAPI design.
      As SAP standard design, OData API should have returned Candidate-ID and PersonIdExternal link.
      I'm waiting officially cover it by ODataAPI.

      Author's profile photo Tali Palgi
      Tali Palgi

      Thanks Walter for the detailed explanation.
      We are still missing some requirements though - if we want to use Candidate ID query in API, we must have the custom-string field with specific settings: Searchable/ Filterable. which is not the case when we use custom-string in Employment Info.
      Would you able to suggest an alternative solution for this ?