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.
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:
This solution has 3 major steps:
- Employee Referral recording and tracking in RCM or 3rd Party software
- Referral Bonus Details and Payment Schedule in EC
- 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.
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).
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.
Or using the “Add Referral” option in the Referral Tracking page.
And the Referral Tracking becomes visible using the Amount provided in the Requisition and reflecting the Application status of the referred candidate.
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.
Object Definition (Child):
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.
This Integration Center job only insert the new referral information if the referred candidate has Application Status equal to “Hired”
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.
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.
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).
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.
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.
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.
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.
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:
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.
Congrats Eduardo, very detailed and nicely explained solution.
Nice blog..with detailed information.
Nice use case, explanation of configuration and very helpful feature. Thanks for sharing.
Thanks Rinky, I'm glad you enjoyed it 🙂
Very detailed and useful business case. Hope you are doing well.
Thanks Gaurav, it's all good here hope you're doing well too.
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!
Thank you for sharing this Eduardo. It's very detailed and well explained.
Thank you so much Eduardo. I was looking for this for a long time!
That's great Kalyani! Thank you!
Thank you Eduardo. Very detailed explanation. I am currently working on this and this is very helpful.
Awesome! Thanks Edociana!
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,
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 ?
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.
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,
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,
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,
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?
Hi Eduardo Martins,
Can you please respond to my query stated above?
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?
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!
Hope you doing well,
Kindly did anyone implement this in the instance?, I need an assist please.
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,
Thank for sharing it, it is a great blog.