SAP SuccessFactors logoZenegy logo

Payroll integration

SAP SuccessFactors to Zenegy integration: Danish employees from Employee Central as a payroll profile in Zenegy

With an integration between SAP SuccessFactors and Zenegy, Danish employees from Employee Central reach Zenegy as a full payroll profile, and their departure follows with the last working day. KoppelHet decides salary type and global value set per job, so payroll does not have to decide that again.

What the integration does

Organisations that use Employee Central worldwide and process Danish pay in Zenegy now enter Danish starters in Zenegy by hand. Whether someone gets a fixed salary or hourly pay, and is paid monthly in advance or every fourteen days, is then decided again by payroll, separately from what is in SuccessFactors.

  1. HR records a hire at the Danish legal entity in Employee Central.
  2. KoppelHet reads person, CPR, address and job data through OData and determines salary type and global value set from the lookup table.
  3. KoppelHet creates the profile in Zenegy with the SuccessFactors ID as employee number.
  4. On a termination KoppelHet prepares the resignation and follows it until Zenegy has processed it after the run.
SAP SuccessFactors → KoppelHet → ZenegySOURCESAP SuccessFactorsTARGETZenegyKoppelHetmapping · logging · monitoringSAP SuccessFactors → KoppelHet → ZenegySOURCESAP SuccessFactorsTARGETZenegyKoppelHetmapping · logging · monitoring
Out: Full payroll profile with CPR, address and seniority date · Salary type and payout period · Global value set per type of employee · Resignation with last working day

What to watch for with SAP SuccessFactors and Zenegy

  • Zenegy's salary types include Fixed, TimePaidWithHoliday, TimePaidWithoutHoliday and CasualWorker, and its payouts are monthly in advance, every fourteen days or monthly in arrears. Employee Central does not record that in Danish terms. KoppelHet derives it from the employee class and pay group of the Danish legal entity.
  • Zenegy requires a seniority date on creation. Employee Central has a separate date for that on the employment, which differs from the start date for a transferred employment. KoppelHet sends that date and only uses the start date when the field is empty.
  • PerNationalId can hold numbers from several countries. Zenegy asks for a ten-character CPR and builds its own number from that CPR when no employee number is given. KoppelHet only sends the number with country DNK and always the personIdExternal as employee number.
  • A PATCH in Zenegy may only contain the changed properties, and a property that runs through a global value does not change, without an error. A job change in SuccessFactors that needs a different set therefore does not go as a PATCH but through the route Zenegy describes for sets.
  • An employee who has been in a Zenegy run can no longer be deleted. If HR reverses a hire in Employee Central after the first Danish run, KoppelHet reports it to payroll; before that run KoppelHet may still delete the profile.
  • Employee Central returns only what applies today by default. KoppelHet requests a termination with an end date next month with fromDate and toDate, so the resignation is ready in Zenegy before the run covering the last working day.

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 leave from SuccessFactors also go to Zenegy?

Not in the first version. Zenegy only counts approved absence and only one per day; that can be added later as an extension.

Does this also work for Swedish employees?

This page is about Zenegy's Danish payroll. For Sweden we find out at the start which API applies.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • SuccessFactors through OData v2: PerPerson, PerPersonal, PerNationalId, PerAddressDEFLT, EmpEmployment, EmpJob (filter on company and lastModifiedDateTime, with fromDate/toDate) and EmpEmploymentTermination. OAuth 2.0 with SAML bearer assertion.
  • Zenegy Payroll API with OAuth 2.0 and refresh token, with READ or FULL rights per resource. Create with Post employee including GlobalValueSetUid and salaryType, change with PATCH employee (changed properties only), leavers with Resign employee (dateOfResignation, lastWorkDay); set UIDs through Get global value sets.

Which fields are transferred

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

Field in SAP SuccessFactorsField in ZenegyNotes
PerPerson.personIdExternalemployeeNumberOtherwise Zenegy builds a number from the CPR
PerNationalId (country DNK)cpr
PerPersonal.firstName, lastNamename
PerAddressDEFLTaddress, postalNumber, city
EmpEmployment.startDateemploymentDate
EmpEmployment.seniorityDateseniorityDateFalls back to startDate when empty
EmpJob.employeeClass en payGroupsalaryType (Fixed, TimePaidWithHoliday) en salaryPayoutPeriodLookup table
EmpJob.jobCodeGlobalValueSetUidUIDs from Zenegy
EmpEmploymentTermination.endDatelastWorkDay 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.