Payroll integration
Personio to Zenegy integration: Danish employees as a payroll profile in Zenegy, with time off and leavers
With an integration between Personio and Zenegy, Danish employees from Personio reach Zenegy as a full payroll profile, and approved time off as absence. KoppelHet also records the departure as soon as Personio has the end date, so payroll no longer retypes anything.
What the integration does
Organisations with HR in Personio and a Danish entity paid in Zenegy record new colleagues, time off and leavers in Personio. Payroll then puts the same data into Zenegy again, often just before the run.
- A Zenegy system administrator gives KoppelHet OAuth access with only the required resources.
- Every hour KoppelHet reads the changed employees of the Danish entity in Personio.
- A new employee becomes a payroll profile in Zenegy with the agreed global value set.
- Approved time off goes to Zenegy as approved absence, one registration per day.
- For a leaver KoppelHet records the resignation; Zenegy deactivates the profile after the run covering the last working day.
What to watch for with Personio and Zenegy
- Zenegy asks for CPR number, name, address, postcode, city, employment date and seniority date for every new profile. Personio has no standard field for the CPR number and no separate seniority date; KoppelHet reads a custom attribute and uses the start date as seniority date, unless HR records another date.
- Values that apply to many employees are handled in Zenegy with global values and sets. Changing a global value through the API does not change the profile and returns no error either. KoppelHet therefore only picks an existing set when creating a profile and leaves set management in Zenegy.
- A profile can only be deleted in Zenegy while it has not been in any payroll run, and deleted data cannot be restored. If a new employee withdraws in Personio, KoppelHet only deletes the profile before the first run; after that it becomes a resignation.
- Zenegy only deactivates a leaver once a run covering the last working day has been processed, and Zenegy advises against starting runs on odd dates for that. KoppelHet records the resignation as soon as Personio has the end date and follows through isProcessed when it is complete.
- Absence only counts in Zenegy if the registration is Approved, and only users with an elevated role may set that. Because the time off is already approved in Personio, KoppelHet writes with such a role, and never two registrations on the same day.
- Zenegy wants the CPR number as ten characters. In a custom attribute in Personio it is often stored with a hyphen, such as 010199-1212. KoppelHet removes the hyphen and checks the length before the profile goes to Zenegy.
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
Does this also work for Swedish employees?
Zenegy has a separate API per country. Sweden can follow later as an extension, with its own fields.
What if someone drops out before the start?
Before the first run KoppelHet deletes the profile. After that it becomes a resignation, because Zenegy no longer allows a profile with a run to be deleted.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through API v2 (GET /v2/persons with updated_at.gt, scope personio:persons:read) and the employments and absences of the Danish entity.
- Zenegy through the dev portal API with OAuth, access granted by a system administrator with READ or FULL per resource; employees (create and PATCH with only changed fields), resignations with isProcessed, absence with status Approved.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in Zenegy | Notes |
|---|---|---|
Eigen attribuut CPR in Personio | CPR | Without an employee number Zenegy derives it from the CPR |
first_name, last_name | Naam in Base | |
Adres in Personio | Adres, postcode en plaats | |
Startdatum dienstverband | Indiensttredingsdatum en anciënniteitsdatum | |
Verloftype vakantie | Absence type Vacation (ferie) of VacationFreeDay (feriefri) | Each type has its own balance in Zenegy |
Einddatum dienstverband | Resignation met laatste werkdag |
Related
Ashby → Personio
Ashby to Personio integration: hires with hours and entity as new employees in Personio
Bullhorn → Personio
Bullhorn to Personio integration: placements as a person with employment in Personio
Carerix → Personio
Carerix to Personio integration: successful placement as a new employee in Personio
Greenhouse → Personio
Greenhouse to Personio integration: hired candidates as employees in Personio