
Payroll integration
Workday to Zenegy integration: Danish employees, resignations and absence from Workday in Zenegy Payroll
An integration between Workday and Zenegy creates Danish workers from Workday as a full payroll profile in Zenegy Payroll, with the right global value set, and passes on approved time off and leavers. A leaver is only deactivated in Zenegy after the payroll run covering the last working day, so the integration records the resignation and Zenegy completes it.
What the integration does
Organisations that record HR centrally in Workday and process Danish pay in Zenegy now enter Danish new hires and leavers in Zenegy by hand. Holiday and sickness already approved in Workday are retyped there by payroll, and a forgotten resignation runs along into the next payroll.
- HR completes a Hire in the Danish pay group in Workday.
- KoppelHet picks the global value set for the pay group and job profile through a lookup table, and creates the full profile in Zenegy with the Workday employee ID.
- Changes in name, address or pay go as a PATCH with only the changed fields.
- Approved holiday and sickness from Workday become approved absence registrations in Zenegy.
- On a Termination KoppelHet records the resignation data; after the run covering the last working day the integration checks that Zenegy has processed the resignation.
What to watch for with Workday and Zenegy
- Zenegy always requires CPR, name, address, postal number, city, employment date and seniority date on creation. Besides the Hire_Date, Workday also holds a Continuous_Service_Date; KoppelHet uses the latter for seniority, so a transferred employment does not start at zero.
- Without an employee number Zenegy builds one itself from the CPR number. KoppelHet therefore always sends the Workday employee ID, so both systems use the same key and no CPR ends up in a number.
- Settings such as ATP type, salary type, income type and pension hang on global values and sets in Zenegy. Workday does not know these Danish concepts. KoppelHet links pay group and job profile to the UID of a set that payroll has set up in Zenegy.
- A PATCH on a property that runs through a global value does not change the profile and returns no error either. KoppelHet therefore never patches those fields; a different set after a Job Change in Workday goes through reactivation, as Zenegy prescribes.
- An employee who has already been in a payroll run can no longer be deleted. If a Hire in Workday is rescinded after the first Danish run, KoppelHet reports this to payroll instead of deleting the profile.
- A resignation in Zenegy is only complete after a payroll run covering the last working day; isProcessed is then true. On a Termination in Workday KoppelHet only records the resignation data and follows that status, without starting a run itself.
- Only absence with status Approved counts in the Zenegy run, and one day can only hold one absence. Because the time off is already approved in Workday, KoppelHet writes it as Approved; a second type on the same day goes on the difference list.
- Signing in for the API runs through OAuth with a system administrator of the Zenegy platform, and per resource you choose READ or FULL. KoppelHet requests FULL only for employees and absence, and READ for the rest.
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. This page describes Denmark; Sweden is a second flow with its own fields and can be added later as an extension.
Does the integration also start the payroll run?
No. Zenegy warns that runs should follow the customer's own payroll rhythm. Payroll starts the run; KoppelHet only checks afterwards whether resignations were processed.
What if someone returns after leaving?
Zenegy has an endpoint to reactivate a profile, and a new global value set can be passed with it. KoppelHet uses that on a rehire in Workday instead of creating a second profile.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Workday is read through a RaaS report on the Danish pay group (Employee_ID, National_ID DNK, Legal_Name, Home Address, Hire_Date, Continuous_Service_Date, Job_Profile, Termination_Date, Time Off Entries) filtered on change date.
- Zenegy Payroll API with OAuth 2.0 authorization code flow and refresh token (credentials requested per environment through the Zenegy form). Create with Post employee including GlobalValueSetUid, change with PATCH employee (JSON Patch with op replace), leavers with Resign employee (dateOfResignation, lastWorkDay) and checking through Get employee resignations, absence with Create Absence; set UIDs through Get global value sets.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Workday | Field in Zenegy | Notes |
|---|---|---|
Employee_ID | employeeNumber | Otherwise Zenegy builds a number from the CPR |
National_ID (DNK) | cpr | Ten characters |
Legal_Name | name | |
Home address | address, postalNumber, city | |
Hire_Date | employmentDate | |
Continuous_Service_Date | seniorityDate | |
Pay group en job profile | GlobalValueSetUid | Through a lookup table with UIDs from Zenegy |
Time off type | absence type (bijvoorbeeld 0 Vacation, 1 Illness) | |
Termination_Date | lastWorkDay en dateOfResignation |
Related
Ashby → Workday
Ashby to Workday integration: hires to Workday, with a check on outcome and phone number
Bullhorn → Workday
Bullhorn to Workday integration: a consultant's first placement as a hire in Workday
Carerix → Workday
Carerix to Workday integration: a placed candidate becomes a pre-hire and starts the hire
Greenhouse → Workday
Greenhouse to Workday integration: hires as pre-hires, interim staff and contractors included