BambooHR logoDy

Leave, absence and time

BambooHR to Dyflexis integration: Dutch employees and contract hours from BambooHR in the schedule

With an integration between BambooHR and Dyflexis, employees of the Dutch locations in BambooHR appear in Dyflexis automatically, with office, contract type, hours per week and termination date. A departure or a different location in BambooHR then also reaches scheduling, so nobody is rostered on a contract HR has already changed.

What the integration does

Organisations with BambooHR as the HR system for all countries and Dyflexis as scheduling for the Dutch sites now enter new shift workers in Dyflexis by hand. A change of hours or a departure in BambooHR only reaches the planner if they happen to hear about it.

  1. HR records an employee in BambooHR at a Dutch location, with employment status and hours per week.
  2. BambooHR reports the change; KoppelHet fetches the employee and checks whether the location is in the lookup table.
  3. The employee goes to Dyflexis with the BambooHR ID as fixed reference, and a contract with office, contract type, hours and days.
  4. An administrator links the new employee once in Dyflexis; after that every delivery updates them.
  5. On departure the employee and contract in Dyflexis get the end date from BambooHR.
BambooHR → KoppelHet → DyflexisSOURCEBambooHRTARGETDyflexisDyflexisKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → DyflexisSOURCEBambooHRTARGETDyflexisDyflexisKoppelHetmapping · logging · monitoring
Out: Employee with name, employee number and work email · Location, translated to a Dyflexis office · Employment status, translated to a Dyflexis contract type · Hours and average working days per week · Hire and termination date

What to watch for with BambooHR and Dyflexis

  • BambooHR stores standard hours per week as a whole number. A 22.5-hour contract does not fit, while Dyflexis accepts hours with decimals. If the organisation works with half hours, we record contract hours in a custom field in BambooHR and the integration reads that field.
  • BambooHR has no field for working days per week, and Dyflexis asks for the average number of days with every contract. KoppelHet fills it from a table per contract type, or from a custom field if days differ per employee.
  • The employment status in BambooHR, such as Full-Time, Part-Time or Contractor, plus custom values, becomes a Dyflexis contract type through a table. Contractors can be kept out of Dyflexis, or scheduled as their own contract type; scheduling decides that at the start.
  • BambooHR often contains employees from all countries. Only employees at a location linked to a Dyflexis office in the table go through. A colleague at the US office thus does not end up in the Dutch schedule.
  • BambooHR has no separate field for a Dutch name prefix, Dyflexis does. If "van den" is part of the last name, KoppelHet splits off the prefix, so scheduling sorts on surname the way that is usual in the Netherlands.
  • In BambooHR the termination date can only be changed through the employment status table. KoppelHet reads that table and sets the last day as end date on the employee and contract in Dyflexis, so the planner cannot roster them after that day.
  • BambooHR sends no direct notification for custom tables. If hours or working days sit in such a table, the integration picks them up in a scheduled round over changed table data.
  • Dyflexis can store an hourly wage per contract. KoppelHet only sends it for employees paid hourly in BambooHR, and only if scheduling wants to see labour cost; otherwise salary stays out of the integration.

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

Do worked hours go back to BambooHR?

No. BambooHR does not run Dutch payroll. The hours from Dyflexis belong with the payroll of the Dutch entity; that integration can be added later as an extension.

What if a location is not in the table yet?

Then the employee does not go through and scheduling gets an alert. After the table is completed, the next round picks them up.

Technical details for IT

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

  • BambooHR through the REST API with an API key that takes a user's permissions. Webhooks on changed fields (not for custom tables) and the endpoint for changed table data. Fields include employeeNumber, workEmail, hireDate, terminationDate (read-only, changed through the employmentStatus table), location, employmentStatus, standardHoursPerWeek (integer), jobTitle, payType, payRate and paidPer.
  • To Dyflexis through POST /api2/external-employees/{employeeReference} (lastName required; also firstName, lastNamePrefix, email, personnelNumber, employmentStart, employmentEnd, jobDescription) and POST /api2/external-employees/{employeeReference}/contracts (contractReference, office, type, start, end, hours, days, salary per hour). Scope external_employees; Authorization Token header; on 429 retry with backoff. Offices through GET /api2/offices, contract types through GET /api2/contract-types.

Which fields are transferred

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

Field in BambooHRField in DyflexisNotes
id (BambooHR-medewerker)employeeReferenceFixed key in the URL of the delivery
employeeNumberpersonnelNumber
firstName, lastNamefirstName, lastNamePrefix, lastNameName prefix split off, see specifics
workEmailemail
hireDate en terminationDateemploymentStart en employmentEnd
locationoffice (contract)Through a table from BambooHR locations to Dyflexis offices
employmentStatustype (contract)Through a table to the Dyflexis contract type
standardHoursPerWeek of eigen veldhours (contract)
Tabel per contracttype of eigen velddays (contract)
jobTitlejobDescription

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.