

Recruitment to HR
Bullhorn to SAP SuccessFactors integration: placements as employees or contingent workers in Employee Central
With an integration between Bullhorn and SAP SuccessFactors, the first approved placement of a candidate who joins your payroll becomes an employee in Employee Central, with the start date of paid employment, position code and hours. A contractor from Bullhorn becomes a contingent worker with a work order, or stays out of Employee Central if you set it up that way.
What the integration does
Organisations that place people through Bullhorn and manage their own workforce in Employee Central enter every new employee and every contractor in SAP SuccessFactors by hand. Employees and contractors need a different kind of record there, and HR has to copy the position code from Bullhorn itself.
- The recruiter creates a Placement in Bullhorn and sets it to approved.
- KoppelHet reads the placement from the event queue and looks at status and employee type.
- For an employee KoppelHet creates person, employment and job; for a contractor person, employment and work order.
- If the person already exists in Employee Central, a notice goes to HR.
- A rejection by Employee Central is shown with the reason in the KoppelHet platform.
What to watch for with Bullhorn and SAP SuccessFactors
- Bullhorn has a positionCode field on the Placement that, according to its own documentation, is meant for payroll integrations. Recruiters fill in the position from Employee Central there, so the job lands on the right position without HR looking up a number.
- SAP creates a contingent worker with a work order instead of a regular job, in its own order of upserts. Per value of the employee type in Bullhorn, such as Employee or Contractor, we record which of the two routes KoppelHet takes, or whether the placement stays out of Employee Central.
- If a contractor later becomes an employee, SAP wants a new employment for the same person with a new user ID. KoppelHet recognises the person by the Bullhorn candidate number and passes that change to HR instead of creating a second person.
- A Placement in Bullhorn cannot be changed directly; a change goes through a change request that is approved first. KoppelHet therefore only reacts to the approved state of the placement and overwrites nothing in Employee Central afterwards, but reports a changed start date to HR.
- Bullhorn records working time as hours per day. Employee Central works with hours per week in the job, so KoppelHet multiplies by the number of working days agreed per job and stops with a notice when the field is empty.
- A placement in Bullhorn can be linked to an umbrella company. Such a person is not on your payroll and therefore does not become an employee in Employee Central; KoppelHet skips those placements.
How we build and run it
- The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
- Every sync and every error is visible in the functional log; on an error your administrator is notified.
- A change that cannot go through is not half-applied but queued for another attempt.
- KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
- After go-live we manage the integration and adjust it when your process changes.
- The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.
Implementation and price
This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.
A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.
Frequently asked questions
Does Bullhorn have its own SuccessFactors integration?
We did not find one in the public documentation of Bullhorn or SAP. KoppelHet builds on the APIs of both.
Do contingent workers have to be in Employee Central?
No, you choose that per employee type. Contingent workers must first be set up in Employee Central, though.
Does the end of a placement also go to Employee Central?
Not in the first version. HR gets a notice when a placement is set to terminated; automatic termination can be added later.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Bullhorn through the REST API after OAuth 2.0 and a REST login with BhRestToken. Event subscription on Placement (INSERTED and UPDATED), read with GET event/subscription. Placement fields status (default Placed; also Approved, Completed, Terminated), employeeType, employmentStartDate, dateBegin, positionCode, hoursPerDay and vendorClientCorporation; Candidate firstName, lastName, dateOfBirth, email and mobile. Changes through PlacementChangeRequest.
- SAP SuccessFactors Employee Central through OData v2. Employee - PerPerson, EmpEmployment, EmpJob (jobCode, startDate, eventReason, company, businessUnit, managerId) and PerPersonal. Contingent worker - User, PerPersonal, EmpEmployment, PerPerson, WorkOrder, EmpJob and PerEmail. Move from contingent worker to employee with EmpEmployment on the same person ID and a different user ID.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Bullhorn | Field in SAP SuccessFactors | Notes |
|---|---|---|
Candidate.id | personIdExternal | With a prefix; recognises a later placement |
Candidate.firstName en lastName | PerPersonal firstName en lastName | |
Candidate.dateOfBirth | PerPerson.dateOfBirth | |
Candidate.email en mobile | PerEmail en PerPhone (privé) | |
Placement.employmentStartDate (anders dateBegin) | EmpEmployment.startDate en EmpJob.startDate | |
Placement.positionCode | EmpJob position of jobCode | Through a table if the codes differ |
Placement.employeeType | Medewerker, contingent worker of niets | Through a table per type |
Placement.hoursPerDay | Uren in de job | Converted to hours per week |
Related
Bullhorn → AFAS Profit
Bullhorn to AFAS integration: a consultant's first placement starts onboarding
Bullhorn → BambooHR
Bullhorn to BambooHR integration: first placement as an employee with a status row in BambooHR
Bullhorn → Dayforce
Bullhorn to Dayforce integration: first placement of an employee as an employee in Dayforce
Bullhorn → Deel
Bullhorn to Deel integration: first placement as a direct employee with a contract in Deel