Skip to Content
Technical Articles
Author's profile photo Eduardo Martins

Employee Referral: End-to-end solution with SuccessFactors Recruiting, Onboarding and Employee Central


I recently spoke with a customer who is exploring options to manage their Employee Referral Program in SuccessFactors. However, the current Employee Referral functionality available in Recruiting only allows you to track and report the potential Amount employees can receive if the candidate referred by them is hired, and the candidate status in the process.

The problem is customers need a solution that allows the tracking of Candidate Referrals, but that also integrates with Employee Central to capture the payment dates and details of the Referral Bonuses for their employees. So currently customers (if using the tool to track Employee Referral) must generate reports and manually manage and control these payments.

In addition to the requirement above, customers also need the flexibility in how these Referral Payments are recorded in Employee Central. For example, it is very common that a Referral Bonus will only be paid to an employee 6 months after the hire date of the referred candidate and only if both are still employed and active in the organization.

Solution Details

In this blog post I’ll share a solution I created to handle the Employee Referral process end-to-end in SuccessFactors, from the Referral in Recruiting all the way to the Referral Bonus payment in Employee Central.

Terminology used in this blog post:
RCM = SuccessFactors Recruiting Management
EC = SuccessFactors Employee Central
ONB = SuccessFactors Onboarding
ECP = Employee Central Payroll

The overall solution design is represented in the picture below:


Overall Recruit-To-Hire process (solution steps in yellow)

This solution has 3 major steps:

  1. Employee Referral recording and tracking in RCM or 3rd Party software
  2. Referral Bonus Details and Payment Schedule in EC
  3. Payment Recording in One-Time Payments section in EC

I’m not covering Payroll processing in this blog post, but after we have these payments recorded in EC they can be processed and paid via the standard employee data integrations with ECP or SAP HCM on-premise, or extracted via APIs or reports to integrate with 3rd party payroll systems.

1 – Employee Referral recording and tracking in RCM or 3rd Party software

For this solution I’m using the Employee Referral functionality in RCM, however this part can also be performed using a 3rd party solution and integrated directly with the object described in the next step.

In RCM the employee referral tracking uses one standard field in the Job Requisition to capture the Referral Amount, this field is required if you want to use the Referral Tracking dashboard under the Careers tab for internal employees. I’ll not cover this configuration in here but details can be found in the RCM implementation guide and in the KBA – 2081998 – Employee Referral – Recruiting Management.


ERP Amount – standard Requisition field

In addition to the field above I created a custom field with a picklist to indicate what is the payment schedule and conditions (number of payments and dates).


Picklist and fields can be adjust as per customers requirements

With this, after the above requisition is approved and posted, an internal employee can add a referral using the “Refer Friend to Job” in the Job Search page.


Refer Candidate via Job Search

Or using the “Add Referral” option in the Referral Tracking page.


Add a Referral

And the Referral Tracking becomes visible using the Amount provided in the Requisition and reflecting the Application status of the referred candidate.


Referral Tracking in RCM – ERP Amount and Application Status

2 – Referral Bonus Details and Payment Schedule in EC

The next step is to integrate the Referral Bonus payment details from RCM into EC so we can manage and schedule the payments amounts, dates and also check the required conditions before processing as pay components in the One-Time Payments section.

I created a custom MDF object to store the Referral and Candidate data from Recruiting, the New Hire information from Onboarding and EC and payment schedule (dates and amounts). Using a MDF object gives us the advantage of making this solution easy to integrate with other sources for the Referral and Candidate information, for example if you are using a 3rd party ATS you can integrate the required data into this MDF object using API and/or file uploads.


MDF Object – Employee Referrals Tracking

Object Definition (Parent):

Parent Object Configuration – Extension Center

Object Definition (Child):


Child Object Configuration – to capture each Referral Details

To integrate the data from RCM into the Employee Referrals Tracking MDF object I’m using Integration Center, where a scheduled job runs daily (it can be more frequent if needed), creates the record and populate some fields.


Integration Center – EE Referral – Create Items

This Integration Center job only insert the new referral information if the referred candidate has Application Status equal to “Hired”


Integration Center Job – Filter only Hired Candidates

The Integration Center job populates the MDF object with data from the CandidateEmployeeReferral API, and the key IDs (e.g. Candidate Id and Requisition Id) so we can match the candidate information with the employee information using business rules.


Fields mapped from RCM to EE Referral MDF object

Other fields are populated via Business Rules, the new hire ONB information is populated via a look-up on the Process Trigger and Process objects created for all candidates when their ONB process is initiated and maintained.


Business Rule – Lookup Employee ONB data (Save Rule Trigger)

Fields populated by the above rule:

To make this solution possible to integrate with other ATS or Employee Referral systems, I added the Source of Record field, so the rules to populate/update fields based on SF ONB objects only trigger if Source of Record is equal to “ONB”. This way if you want to populate this object from another system via API or even manually or via file import, you just need to select a different Source of Record and bypass these rules (picklist options can be expanded).


Source of Record field and Picklist

And lastly another Business Rule takes care of updating the Payment Amounts and Dates, based on the selected Pay Schedule on the Requisition or directly in the object. In this example I’m using the candidate Hire Date as the reference for the payment dates, however the rule can be easily adjusted to reflect the customer business requirement.


Business Rule to populate Payment Details (Save and Change Rule Triggers)

Fields populated by the above rule, in this example 2 payments, first with 50% of the amount on the candidate’s Hire Date and another after 6 months for the other 50%:

3 – Payment Recording in One-Time Payments section in EC

The final step is to publish the One-Time Payment in EC when the scheduled payment date becomes effective, having the payment recorded as a Pay Component in EC means that the payment can be sent (via integration or reports) and processed in payroll.

Pre-requisites in EC:

  • A non-recurring Pay Component must exist in the system (example below)
  • Assign the Pay Component to all countries, if you are restricting via association with the Country/Region object
  • Grant permission in RBP to view/edit the above pay component

The publishing process happens via Integration Center, this integration runs daily (or more frequently if needed) and creates the corresponding One-Time Payments based on the Payment dates in the MDF object.


Integration Center – Mapping MDF to One-Time Payments

However, we also need to confirm the payment is still valid according to the Employee Referral Program company rules. In my business example here I’m considering that both Employee and Referred Candidate (now also an employee), must still be active in the Organization on the effective date of payments.


Both Employee and Referred Candidate must be Active on the Effective date of payment

After the Integration runs, we can see the pay component published in the One-Time Payment section of the Employee and ready to be processed by payroll.

And in 6 months, if the above conditions are still true, then the second payment will also be published accordingly.

Additional Options/Information

If you want to make the Employee Referral custom MDF object visible on the People Profile, so employees and/or managers can see it. This is easily achievable by creating a screen UI for the object and assigning it to a sub-section in the People Profile configuration.

Then on the Profile Page:


Data can be viewed and maintained directly via People Profile

Also, like any other MDF object, this data can also be used in Reports and Dashboards. This way Managers, HR and Payroll can see what Referral Bonus payments are planned.


The above described solution represents an easy way to integrate Employee Referral from RCM to EC, still allowing the flexibility to integrate with 3rd party ATS systems, or even manual data entering.

Automation via Integration Center allows for systematic data validation before payments are recorded in EC, ensuring compliance with the company policies.

And the MDF object/rules configuration also gives the flexibility to adjust and meet the different business requirements, to accommodate additional payment options as schedules as needed.

Hope you enjoyed this blog post and feel free to reach out to me if you have any questions.

Assigned Tags

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

      Congrats Eduardo, very detailed and nicely explained solution.

      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Guilherme!

      Author's profile photo Syambabu Allu
      Syambabu Allu

      Hi Eduardo,

      Nice blog..with detailed information.

      Thank you,


      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Syam!

      Author's profile photo Rinky Karthik
      Rinky Karthik

      Hi Eduardo,


      Nice use case, explanation of configuration and very helpful feature. Thanks for sharing.



      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Rinky, I'm glad you enjoyed it 🙂

      Author's profile photo Gaurav Gupta
      Gaurav Gupta

      Hi Eduardo,

      Very detailed and useful business case. Hope you are doing well.




      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Gaurav, it's all good here hope you're doing well too.

      Author's profile photo Eduardo Haesbaert
      Eduardo Haesbaert

      Hi Eduardo,
      Great blog post!

      Everything is very well explained, and the approach is very clever. Given that I mostly work with RCM, that was something that I always wondered, to transfer this information. It always felt somehow disconnected from the Referrer or Referee when on EC.

      Thanks for sharing!

      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Eduardo!

      Author's profile photo Karthikk Prabakaran
      Karthikk Prabakaran

      Thank you for sharing this Eduardo. It's very detailed and well explained.



      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Thanks Karthikk!

      Author's profile photo Kalyani Sundari Boominathan
      Kalyani Sundari Boominathan

      Thank you so much Eduardo. I was looking for this for a long time!

      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      That's great Kalyani! Thank you!

      Author's profile photo Edociana DSouza
      Edociana DSouza

      Thank you Eduardo.  Very  detailed explanation.  I am currently working on this and this is very helpful.



      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Awesome! Thanks Edociana!

      Author's profile photo Duy Tran Dinh
      Duy Tran Dinh

      Thank you Eduardo, this is very detailed and so helpful, awsome post!

      But i have a question:

      You are mapping Issue date of One time payment with Pay Date 1 of custom MDF in the integration, in the case we have two pay date, why the system can understand and create One time payment record base the information of Pay date 2 (Issue Date and Amount)?

      Can you help me explaining more details in this case?

      Thank you so much,

      Duy Tran

      Author's profile photo Mostafa Keshtari
      Mostafa Keshtari

      Hi Eduardo Martins ,


      Thank you so much, It's very helpful.


      Please i have 2 questions, First to map "Employee Referral Tracking_Effective Date" field i map it to "Created Date" in the CandidateEmployeeReferral , but i face an issue with the date type, I change from test view  the date type to be date instead of date time but still have an error when i run preview record, Is the mapping field correct ?

      The second question the Source of Record field , what is the field of mapping , how it behave ?


      Kind Regards,

      Mostafa Keshtari

      Author's profile photo Eduardo Martins
      Eduardo Martins
      Blog Post Author

      Hi Mostafa,

      In my mapping I'm using the Last Modified Date form the CandidateEmployeeReferral, that is a datetime data type.

      The Source of Record field is a custom field I created to control if you want to populate other fields in the custom mdf object using business rules or manually input, in my example basically if you want it to populate with data from ONB objects.




      Author's profile photo Mostafa Keshtari
      Mostafa Keshtari

      Hi Eduardo,

      I appreciate your assist, Kindly how i can change the Field type to be Date, Because on my screenshot it showing Date and time.

      Thank you for your support,


      Author's profile photo Thang Nguyen Dai
      Thang Nguyen Dai

      Hi Diego,

      Please help me to show the mapping between Application Status from custom MDF and Application Status from Employee Referral? I tried many mappings but cannot find the correct mapping.

      Thank you so much,


      Author's profile photo Duy Tran
      Duy Tran

      Hi Eduardo,

      I cannot sync the correct Application Status acording your screenshot, can you share more details how can you sync the correct Application Status for each candidate?

      Thank you so much,


      Author's profile photo foram gandhi
      foram gandhi

      Hi Eduardo Martins,

      Thank you for detailed blog.

      I am working on this solution and facing issues while save EE Referral and Employee Referral Tracking Objects in Configure Object definition.

      Can you please provide full screenshots of both the objects including association?

      While adding EE referral child object in association with Parent Object Employee Referral Tracking, its giving me below error if Association Type is Composite:

      Error: Object definition cust_EE_Referrals_Tracking has a composite association cust_EE_Referrals with destination object cust_EE_Referrals. An object used as destination object must have effective dating property as From Parent.

      Below is the Association I am using:


      I did try to change effective dating as From Parent in Child Object but then I am getting another error in saving child object which is EE Referral:

      Error: Invalid subject user field externalCode of object definition cust_EE_Referrals was found. The subject user field should come from an object definition that is not of from parent type.


      Can you please help me resolving this issue?


      Foram Gandhi



      Author's profile photo foram gandhi
      foram gandhi

      Hi Eduardo Martins,

      Can you please respond to my query stated above?


      Foram Gandhi

      Author's profile photo Poushali Bhandari
      Poushali Bhandari

      Hi Eduardo Martins,

      Thanks for the detailed blog.

      We have 3 payment dates and amounts in custom MDF object, You are mapping Issue date of One time payment with Pay Date 1 of custom MDF and Amount of One time payment with Payment1 of custom MDF in the integration, now how to pass payment 2 and payment 3 on Pay date 2 and Pay date 3 in one time Payment?


      Poushali Bhandari

      Author's profile photo Fuad Garayev
      Fuad Garayev

      Hello Eduardo,

      Thanks a lot for your blog and it is very informative.

      My question is:

      You update your custom child object source of record field via business rule. What parameters are you using for it ? Could you pls share your rule for filling source of record field ?

      Thanks in advance!


      Author's profile photo Mostafa Keshtari
      Mostafa Keshtari

      Hi Mates,


      Hope you doing well,


      Kindly did anyone implement this in the instance?, I need an assist please.




      Author's profile photo Jan Erik Malicse
      Jan Erik Malicse

      Hi Everyone,

      I hope you are doing well, does this solution apply only for onboarding 2.0 or also for the previous version of onboarding 1.0? Since I started to configure the functionality but there are several parts that do not quite fit starting with the extension center and when making the rules, even so I already have all the administrator permissions.

      I hope you can help me,


      Author's profile photo Berg Song
      Berg Song

      Thank for sharing it, it is a great blog.