
HR to ERP
HiBob to SAP Concur integration: Bob employees as Concur users with approver, currency and cost centre
With an integration between HiBob and SAP Concur, every employee from Bob becomes a Concur user, with employee number, reimbursement currency, country, cost centre and the manager from Bob as expense approver. A departure in Bob sets the user in Concur to inactive, with the end date included.
What the integration does
Organisations that use HiBob as their HR system and SAP Concur for travel and expenses often fill Concur with an export from Bob or by hand. Approvers then lag behind the organisation in Bob, and expenses land on a cost centre that changed in Bob long ago.
- Bob reports a change; KoppelHet puts the employee in the queue for the next bundle.
- New employees first get their identity in Concur; only once it exists does the spend profile follow.
- KoppelHet translates site, department and cost centre into the values and list codes Concur knows.
- The manager from Bob becomes expense approver, if they have the right role in Concur themselves.
- KoppelHet follows every bundle until Concur is done and reports per employee what was rejected.
What to watch for with HiBob and SAP Concur
- According to SAP, the department and cost centre fields in Concur's enterprise data are not linked to the fields with the same name in Concur Expense. KoppelHet therefore also writes the cost centre from Bob into the list field the expense form uses, as a list item code that exists in Concur. Otherwise the cost centre is in the profile, but not on the expense report.
- Concur does not set the manager as approver by itself, and an approver must have the matching role in Concur. KoppelHet sets the manager from Bob as expense approver and checks that role first. If the new manager lacks the role, the Concur administrator gets an alert instead of a route that gets stuck.
- For a spend profile Concur asks for an ISO country code and a reimbursement currency. Bob has no currency per employee, but every employee belongs to a site in a country. KoppelHet derives country and currency from the site, so a move to the Dublin site also changes the currency in Concur.
- Concur only creates a spend profile if the user's identity already exists. Bob reports a new employee with one event. KoppelHet splits that into two steps and only sends the spend profile once Concur has confirmed the identity, so a new colleague is not created halfway.
- Concur does not support circular reporting lines and clears the field when it finds one. During a reorganisation someone in Bob can temporarily report to their own subordinate. KoppelHet looks for such loops before sending and holds those employees back, so Concur does not silently remove an approver.
- Bob's departure event only arrives after midnight on the effective date. Concur processes a bulk request in the background, with a timeout of two hours. KoppelHet sends the deactivation in the first bundle after that event and checks the status, so a departed employee can no longer submit expenses the next morning.
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
Do travel profiles go along too?
No, the first version only sets what is needed to submit expenses. Travel data can be added later as an extension.
Do approved expenses go back to Bob or payroll?
Not in this integration. Payment through payroll can be added later as an extension.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- HiBob through employee data webhooks (employee.created, employee.updated, employee.left) and POST /people/search with fields root.email, work.employeeIdInCompany, work.department, work.reportsTo and work.site. Fields without read permission are silently left out.
- SAP Concur through User Provisioning v4 (SCIM 2.0) - POST /profile/v4/Bulk/ (at most 100 operations or 400 KB), GET /profile/v4/provisions/{provisionId}/status at intervals of at least 5 seconds, timeout 120 minutes. Enterprise with companyId, employeeNumber, costCenter, department, terminationDate; spend with reimbursementCurrency, budgetCountryCode, customData (orgUnit1-6 and custom1-22 as list item code) and approvers (report, request). No circular reporting lines. Scopes user.provision.write and user.provision.read.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in HiBob | Field in SAP Concur | Notes |
|---|---|---|
/root/email | userName en emails | Unique across all Concur products |
/root/firstName, /root/surname | name.givenName, name.familyName | |
/work/employeeIdInCompany | enterprise.employeeNumber | Unique within the Concur company |
/work/site (land) | spend.budgetCountryCode en reimbursementCurrency | Table per site |
/work/department | orgUnit-lijstveld | List item code from Concur |
Kostenplaats (veld in Bob) | enterprise.costCenter en een custom-lijstveld | |
/work/reportsTo | Goedkeurder declaraties (report) | |
Lifecycle (vertrek) | active = false en enterprise.terminationDate |
Related
Ashby → HiBob
Ashby to HiBob integration: a hire from Ashby straight in as an employee in Bob
Bullhorn → HiBob
Bullhorn to HiBob integration: an approved placement as a new employee in Bob
Carerix → HiBob
Carerix to HiBob integration: successful match becomes a new employee in Bob
Greenhouse → HiBob
Greenhouse to HiBob integration: from a hire in Greenhouse to a new employee in Bob