BambooHR logoServiceNow logo

HR to ITSM

BambooHR to ServiceNow integration: users and onboarding requests right after a change in BambooHR

With an integration between BambooHR and ServiceNow, employees from BambooHR become users in ServiceNow, with department, location and manager, and a new hireDate or terminationDate automatically orders the onboarding or offboarding item from the ServiceNow service catalog. BambooHR reports every change through a signed webhook, so ServiceNow catches up within minutes.

What the integration does

Organisations that use BambooHR as their HR system and ServiceNow for IT have no BambooHR integration in the ServiceNow Store. New employees and leavers then reach the service desk through an email from HR, and a transfer often goes unnoticed in ServiceNow.

  1. KoppelHet creates a webhook through the BambooHR API that follows exactly the fields ServiceNow needs.
  2. On every webhook KoppelHet checks the signature and processes each employee in the message separately.
  3. Departments and locations go to ServiceNow first, then the user with manager.
  4. If the hireDate falls within the onboarding lead time, KoppelHet orders the onboarding item in the new user's name.
  5. On a terminationDate KoppelHet orders the offboarding item; after that date the user becomes inactive.
BambooHR → KoppelHet → ServiceNowSOURCEBambooHRTARGETServiceNowKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → ServiceNowSOURCEBambooHRTARGETServiceNowKoppelHetmapping · logging · monitoring
Out: User per employee · Department, division and location · Manager · Catalog request for onboarding and offboarding

What to watch for with BambooHR and ServiceNow

  • A webhook created through the BambooHR API can follow any field the API user has rights to; the global webhook from the settings follows a fixed list. KoppelHet therefore creates its own webhook on department, division, location, manager and the dates, so a move to another office reaches ServiceNow straight away.
  • BambooHR retries a failed webhook five times, the last time after forty minutes, and then gives up. KoppelHet therefore asks BambooHR every hour which employees were created, changed or deleted since the previous check, so an outage at ServiceNow does not lead to a missed leaver.
  • BambooHR signs every webhook with an HMAC over the content and a timestamp. KoppelHet checks both before anything goes to ServiceNow, so nobody can have a catalog request ordered with a forged message.
  • A BambooHR webhook can hold several employees at once. KoppelHet passes each one to ServiceNow separately, so one employee with an unknown department does not hold up the rest.
  • BambooHR gives the manager as their employeeNumber. That is also the key of users in ServiceNow, so KoppelHet can link the manager directly; if that user does not exist yet, KoppelHet loads the manager first.
  • Fields in custom tables in BambooHR are not included in webhooks. If the cost centre is in such a table, for example, the hourly check takes it to ServiceNow.
  • A BambooHR API key has the same rights as the user who creates it. We ask for a separate BambooHR user without access to pay and social security numbers, so the webhook cannot follow that data either.

This integration is also part of joiner, mover, leaver.

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, architecture and compliance

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.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Does ServiceNow have a BambooHR integration?

Not in the ServiceNow Store, as far as we found. Integration platforms such as Workato and Celigo have templates; KoppelHet builds directly on the APIs of both sides.

Does salary data go to ServiceNow?

No. The integration's BambooHR user has no access to it.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • BambooHR through a permissioned webhook (created through the API, JSON, HTTPS only, signed with SHA-256 HMAC in X-BambooHR-Signature with X-BambooHR-Timestamp, up to five retries) and GET /api/v1/employees/changed?since= (Inserted, Updated, Deleted) as a safety net. Fields employeeNumber, firstName, preferredName, lastName, workEmail, department, division, location, supervisorId, hireDate, terminationDate and status.
  • ServiceNow through the Import Set API (insertMultiple) with transform maps, coalesce on employee_number and run_after for cmn_department and cmn_location before sys_user. Catalog requests through POST /api/sn_sc/servicecatalog/items/{sys_id}/order_now with sysparm_requested_for.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in BambooHRField in ServiceNowNotes
employeeNumberemployee_numberCoalesce key
preferredName of firstName, lastNamefirst_name, last_name
workEmailemail
department en divisiondepartment (cmn_department)
locationlocation (cmn_location)
supervisorIdmanageremployeeNumber of the manager
status (Active, Inactive)active

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.