BambooHR logo4PS Construct logo

HR to ERP

BambooHR to 4PS Construct integration: employees from BambooHR in the 4PS company of their location

With an integration between BambooHR and 4PS Construct, every employee of a location that works in 4PS automatically reaches the matching 4PS company, with name prefix, job, work email, start date and cost centre. A termination from BambooHR sets the end date in 4PS, and a rehire gets their existing 4PS card back instead of a second one.

What the integration does

Organisations that run HR in BambooHR and have their construction, installation or maintenance companies work in 4PS Construct retype technicians and site managers into 4PS. When a former employee returns, someone creates a second card in 4PS, and their old and new hours are split over two numbers.

  1. HR records a new employee or change in BambooHR, at a location that works in 4PS.
  2. BambooHR reports the change; KoppelHet fetches the employee.
  3. KoppelHet creates the employee in the 4PS company of the location, or updates the existing card.
  4. The cost centre from BambooHR goes on the employee as a default dimension, if it exists in 4PS.
  5. On a termination KoppelHet sets the end date; after the last working day the status changes to terminated.
BambooHR → KoppelHet → 4PS ConstructSOURCEBambooHRTARGET4PS ConstructKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → 4PS ConstructSOURCEBambooHRTARGET4PS ConstructKoppelHetmapping · logging · monitoring
Out: Employee with number, name and name prefix · Job and work email · Start date, end date and status · Cost centre as default dimension

What to watch for with BambooHR and 4PS Construct

  • BambooHR has no separate field for a name prefix, while the employee card under 4PS has a middle name field. KoppelHet takes a known prefix such as van or de out of the last name and puts it in that field, if you want, so sorting and searching in 4PS on the last name works.
  • When a former employee returns, BambooHR keeps the original hire date next to the new one. KoppelHet recognises them by employee number, sets the existing 4PS card back to active with the new start date and clears the end date, so all hours stay under one number.
  • BambooHR reports it when an employee is deleted, for example because they were created twice by mistake. The API under 4PS can delete an employee. KoppelHet only does so if there are no time registrations on the card; otherwise it sets the card to inactive and alerts HR.
  • BambooHR has no cost centre field by default; it lives in a custom field or a custom table. BambooHR sends no webhook for custom tables. KoppelHet fetches the changed table data daily, and puts a cost centre that exists as a dimension value in 4PS on the employee.
  • Dimension values are read-only in the standard API under 4PS. KoppelHet therefore does not create a new cost centre from BambooHR itself. The employee arrives without that dimension and finance sees in the platform which code still needs to be created.
  • A BambooHR webhook is retried up to five times on a server error, and not on any other error. KoppelHet acknowledges every notification immediately and processes the employee afterwards, so a temporary outage on the 4PS side does not lose notifications. The daily check catches the rest.
  • Only employees of locations that work in 4PS are included. BambooHR gives the location in the job info with an effective date. If a technician moves to a location with a different 4PS company, KoppelHet sets an end date in the old company and creates them in the new one on the effective date.

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

Where is the cost centre in BambooHR?

BambooHR has no fixed field for it. We agree on a custom field or table, or derive it from the department, before the integration goes live.

Do hours from 4PS go back to BambooHR?

Not in this integration. That 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.

  • BambooHR through the REST API with a user's API key. Event-based webhooks (employee.created, employee.updated with monitor fields, employee.deleted; retried up to five times on 5xx, not on 4xx) and the endpoint for changed table data. Fields employeeNumber, firstName, lastName, jobTitle, workEmail, location, hireDate, originalHireDate and terminationDate.
  • To 4PS through the Business Central API v2.0 per company: employees (POST, PATCH and DELETE with If-Match; number, givenName, middleName, surname, jobTitle, email, employmentDate, terminationDate with 0001-01-01 as empty date, status Active, Inactive or Terminated), timeRegistrationEntries per employee and defaultDimensions with parentType Employee. dimensionValues is read-only.

Which fields are transferred

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

Field in BambooHRField in 4PS ConstructNotes
employeeNumbernumber
firstNamegivenName
lastNamemiddleName en surnameName prefix separate, if you want
jobTitlejobTitle
workEmailemail
location4PS-administratie (company)Through a table
hireDate en terminationDateemploymentDate, terminationDate en status
Eigen veld of tabel kostenplaatsdefaultDimensionsExisting dimension values only

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.