Sympa logoProtime logo

Leave, absence and time

Sympa to Protime integration: employees and working hours in Protime, approved absence back as a row in Sympa

With an integration between Sympa and Protime, every employee of the Dutch or Belgian units in Sympa appears in Protime automatically, with a contract based on the approved working-hours rows. KoppelHet writes absence approved in Protime back to Sympa as an absence row, so HR sees the leave in Sympa without retyping it.

What the integration does

Organisations that run HR in Sympa and clock with Protime in the Netherlands or Belgium enter new employees and changed working hours into Protime by hand. Leave and sickness are handled at the clock, but HR then retypes them in Sympa.

  1. The Sympa administrator sets up an API interface that allows reading employees and working hours and adding absence rows.
  2. KoppelHet puts new and changed employees in Protime, with a contract per approved working-hours row.
  3. A manager approves absence in Protime.
  4. KoppelHet collects the approved absence and adds it hourly in one request as rows in Sympa.
  5. If absence changes or disappears in Protime, KoppelHet adjusts the row in Sympa.
Sympa → KoppelHet → ProtimeSOURCESympaTARGETProtimeKoppelHetmapping · logging · monitoringSympa → KoppelHet → ProtimeSOURCESympaTARGETProtimeKoppelHetmapping · logging · monitoring
Out: Person with employee number and start and end date · Contract per approved working-hours row · Department and work location
Back: Approved absence as a new row in the absence table · Changes as an update of that row

What to watch for with Sympa and Protime

  • Sympa sets rows added through the API to approved straight away, and the approval status itself cannot be set through the API. That fits absence from Protime, which is already approved there. KoppelHet therefore does not pass on leave still awaiting approval in Protime.
  • Nothing can be deleted through Sympa's Integration API. If an absence disappears in Protime, KoppelHet cannot remove the row in Sympa. KoppelHet updates the row with a marker in a field the administrator adds to the interface for that purpose, and alerts HR to delete the row in Sympa.
  • Sympa allows a hundred requests per hour per interface, reading and writing combined. Protime reports each absence separately. Sympa can add rows for several employees in one request, so KoppelHet bundles an hour's absence into one request, keeping within the limit even in busy weeks.
  • What is written to Sympa can sometimes only be read back through the API after half an hour. KoppelHet therefore does not check a written row straight away, but in the daily comparison, and keeps its own record of which Protime absence belongs to which Sympa row, from the address Sympa returns.
  • In the classic version of Sympa a row changed through the API always gets the status approved; in the new version it keeps its status. KoppelHet therefore only changes rows in Sympa that it added itself, so a row HR is still handling does not get approved unnoticed.
  • Working-hours rows in Sympa have a validity period and an approval status. Protime wants a start date and contract hours in minutes on a contract. KoppelHet turns each approved working-hours row into a Protime contract with the same period, so a change in hours recorded in advance in Sympa takes effect on the right day.
  • A Sympa interface has no fixed fields: the administrator chooses what is in it and whether the interface may read, add or change. For this integration KoppelHet asks for reading on employees and working hours, and adding and changing only on the absence table.

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

Why leave in Protime and not in Sympa?

Because Protime does not accept absence through the API. Whoever arranges leave at the clock does so in Protime; Sympa receives the result.

Do clocked hours go to Sympa?

Not in this integration. Clocked hours for 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.

  • Sympa through the Integration API (OData v4, JSON) with X-ApiKey or basic authentication. Reading with $filter on modified and unit, $expand on the working-hours table with Approval eq 5 and since/until. Writing back with PATCH api/{interface} carrying rows for several cards in one request, or POST api/{interface}({id})/{table}; response 204 without body with a Location header; @odata.type required in the body. No DELETE, no approval fields; a hundred requests per hour shared over GET, POST and PATCH.
  • Protime through the Protime API (v1) with OAuth 2.0 client credentials. POST people with externalReferenceIdentifier, POST contracts (from, until, contractHoursInMinutes, fullTimeEquivalentInMinutes, numberOfWorkingDaysPerWeek, numberOfDaysInContractPeriod) and the history for department. Absence through webhooks on absences (changeType InsertOrUpdate or Delete, dayPart, durationInMinutes, approvalLevel Approved), signed with HMAC-SHA256.

Which fields are transferred

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

Field in SympaField in ProtimeNotes
Personeelsnummer (veld in de interface)@employee-number (externe referentie)Fixed key
Voornaam, achternaamfirstName, lastName
Dienstverbandregel (geldig van en tot)inServiceDate en outOfServiceDate
Werktijdregel (Approval 5, geldig van en tot)contract (from, until, contractHoursInMinutes, numberOfWorkingDaysPerWeek)
unitdepartment-history
Afwezigheidsdefinitie en duur (Protime, terug)Afwezigheidsregel in Sympa (soort, van, tot, uren)Fields as set up in the interface

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.