Workday logoZenegy logo

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.

  1. HR completes a Hire in the Danish pay group in Workday.
  2. 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.
  3. Changes in name, address or pay go as a PATCH with only the changed fields.
  4. Approved holiday and sickness from Workday become approved absence registrations in Zenegy.
  5. 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.
Workday → KoppelHet → ZenegySOURCEWorkdayTARGETZenegyKoppelHetmapping · logging · monitoringWorkday → KoppelHet → ZenegySOURCEWorkdayTARGETZenegyKoppelHetmapping · logging · monitoring
Out: Employee profile with CPR, address, employment and seniority date · Global value set per type of employee · Absence registrations with Zenegy absence type · Resignation data with last working day

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, 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 · Complex

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

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 WorkdayField in ZenegyNotes
Employee_IDemployeeNumberOtherwise Zenegy builds a number from the CPR
National_ID (DNK)cprTen characters
Legal_Namename
Home addressaddress, postalNumber, city
Hire_DateemploymentDate
Continuous_Service_DateseniorityDate
Pay group en job profileGlobalValueSetUidThrough a lookup table with UIDs from Zenegy
Time off typeabsence type (bijvoorbeeld 0 Vacation, 1 Illness)
Termination_DatelastWorkDay en dateOfResignation

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.