Connect Zenegy to Microsoft Entra ID

Connect Zenegy to Microsoft Entra ID

Connect Zenegy to Microsoft Entra ID

When someone joins, moves or leaves in Zenegy, you want that change reflected in Microsoft Entra ID without anyone touching it by hand. To connect Zenegy to Microsoft Entra ID, Joinly reads each HR change at the source through the Zenegy API and applies it automatically to the right account. Zenegy stays your payroll and HR source of truth; Joinly is the engine that keeps every account accurate and traceable.

Key takeaways

  • Zenegy stays your source of truth; Joinly applies every joiner, mover and leaver to Entra ID automatically.

  • Joinly maps Zenegy departments and job titles to the right Entra ID groups and licences — role-to-group logic Zenegy itself doesn’t provide, since it has no native identity connector.

  • Joinly reads Zenegy’s future-dated changes, so a hire with a start date set ahead of time is provisioned on the actual start date, not the moment payroll enters it.

  • Leavers are disabled on the Zenegy termination date, closing the offboarding gap that manual exports leave open.

  • Every action is logged for a complete audit trail, aligned with NIS2 and GDPR, with data kept in the EU.

Zenegy

Joiner

Mover

Leaver

Microsoft Entra ID (formerly Azure AD)

Quick facts

Source system

Zenegy (Payroll & HR)

Target system

Microsoft Entra ID (formerly Azure AD)

Connection method

Zenegy API (OAuth 2.0) → Entra ID

Supported events

Joiner, mover, leaver (incl. department transfer, rehire)

Synced attributes

Name, email / UPN, department, job title, manager, employment start and end date

Authentication

OAuth 2.0 authorization-code flow with short-lived Bearer tokens

Real-time or batch

Frequent sync, multiple times per day

Compliance

NIS2-ready, GDPR (EU vendor / EU data)

How does Joinly sync Zenegy to Microsoft Entra ID?

Joinly reads each HR change in Zenegy through its OAuth 2.0 API and applies it to the matching Entra ID account automatically. Zenegy holds the authoritative payroll and employment record, so it is the starting point for each identity action.

  1. Joiner. Payroll or HR completes the hire in Zenegy. Joinly reads the new employee and employment record, determines the role from attributes like department and job title, then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — timed to the employment start date.

  2. Mover. When someone changes department or job title in Zenegy, Joinly updates their group membership, permissions and licences to match. Access that no longer fits the new role is revoked, so permissions stay aligned with the actual job.

  3. Leaver. On the termination date recorded in Zenegy, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and no unused licences quietly costing money.

Example: A hospitality group runs Zenegy for its restaurants and hotels and hires a front-desk supervisor with a start date next Monday, in its Copenhagen department. Joinly reads the future-dated record, waits until the start date, creates the Entra ID account, assigns an Office E1 licence and adds the supervisor to the Reception group. When that person later moves to the events team, Joinly swaps the groups the same day.

What manual user management costs

Without automation, every account starts as a message from payroll or a line in a spreadsheet that IT works through by hand. Because Zenegy has no native identity connector, the usual stopgap is a manual export into Entra Cloud Sync or a hand-built script — which can move attributes across but has no idea what a Zenegy department means, so the part that actually decides access still falls to people.

  • Onboarding delays. New joiners wait for accounts, licences and group access while a request sits in a queue, losing productive days in their first week.

  • Permissions that don’t keep up (privilege creep). When movers change department, old access often stays attached, so people accumulate rights they no longer need.

  • Forgotten offboarding. Accounts that aren’t disabled on time are both a security and audit risk, and unused licences keep costing money — and a manual export rarely reflects a leaver on the exact termination date.

Joinly vs. Entra Cloud Sync from a Zenegy export

Zenegy has no dedicated Entra provisioning connector, so the native fallback is Microsoft Entra Cloud Sync fed from a manual Zenegy export. That moves attributes, but it stops short of the part that actually decides access. Here’s how the two compare for a Zenegy-driven setup.


Joinly

Entra Cloud Sync from a Zenegy export

Source

Reads the Zenegy API directly over OAuth 2.0

Reads a manual CSV / scripted export of Zenegy

Role-to-group mapping

Built in, rule-based on department and job title

No role-to-group out of the box; manual

Future-dated hires

Times account creation to the employment start date

Depends on when the export happens to run

Licence assignment

Driven by role / attributes

Manual or group-based only

On-premise AD

Yes, own agent plus the native Microsoft agent

Separate cloud-sync agent, limited mapping

Audit trail

Per-action logging tied to the HR source

Limited

Watch-outs when connecting Zenegy to Microsoft Entra ID

A few Zenegy-specific details decide whether this connection stays reliable at scale.

  • No native role-to-group logic. Zenegy models the organisation as departments and employments, not as Entra security groups. Joinly builds explicit mapping rules from department and job title to the correct groups and licences, so role drives access rather than manual assignment.

  • Future-dated payroll changes. Zenegy stores hires, salary steps and pension changes as future-dated records well before they take effect. Provisioning too early or too late both cause problems. Joinly reads the effective start and end dates and times each action to them, so access is ready on the right day and not before.

  • Flat department model. Because Zenegy is built for lean Danish payroll, its structure is deliberately shallow. Joinly enriches it with your own rules — combining department, job title and location — so a small source model still produces precise Entra ID group and licence assignment.

  • UPN format with duplicate names. When two employees share a name, a naive UPN rule produces collisions. Joinly applies custom transformation rules — a suffix, department code or controlled tiebreaker — so every UPN is unique and predictable from day one.

  • Token and API hygiene. Zenegy’s API uses short-lived OAuth 2.0 Bearer tokens that must be refreshed. Joinly manages the authorization-code flow and token refresh for you, so the connection stays live without manual re-authentication.

Joinly handles each of these by default with custom mapping and transformation.

Always audit-ready

Every account action Joinly performs is logged: who was affected, when it happened, which access changed and which Zenegy change triggered it. For NIS2 that matters directly: access can be traced back to an authorised HR source rather than an ad-hoc request. Joinly runs in an EU data centre in Amsterdam, applies least-privilege by default, and is built to meet NIS2 and GDPR.

Example case

Picture a hospitality group with around 900 employees across a dozen restaurants and two hotels, running Zenegy for payroll and HR while its identity provisioning never quite keeps up. There is no native Zenegy-to-Entra path, so IT works from a weekly export: new front-of-house staff wait days for an account, seasonal contracts pile up, and when someone moves from one venue to another the old group access simply stays attached.

Connect Zenegy to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in Zenegy at the source and acts on it automatically: new hires have their account, Office licence and group access ready on their employment start date, a move between venues swaps the right groups the same day, and leavers are disabled on their termination date with a 30-day soft-delete grace window.

“Seasonal hiring used to bury us in account requests. Now an account is simply ready on the start date, a move to another venue just swaps the access, and we can show exactly which Zenegy change created every login.” — Head of IT, hospitality group

The outcome this setup is designed for: onboarding drops from days to zero touch, privilege creep from old venues stops, and the team has a complete, source-backed audit trail for its next security review.

More than a connector

A standalone Zenegy to Entra ID connection is a good start, but identity rarely stops at one target. Joinly manages the complete chain from joiner to leaver across all your systems, with logging and governance built in. You review the exceptions; Joinly maintains the chain.

Schedule a demo

Installation manual

Installation manual

Connect Zenegy to Microsoft Entra ID

Connect Zenegy to Microsoft Entra ID

Installation guide

Follow these steps to connect Zenegy to Microsoft Entra ID with Joinly. The entire cloud setup happens in the platform, with no scripts or local software required.

1. Create your account

Go to platform.joinly.app and create your account.

Note: charges may apply for using the platform after the trial period ends.


Joinly account creation screen at platform.joinly.app


Sign up at platform.joinly.app to get started.

2. Connect your Microsoft account

Open platform.joinly.app/settings/provisioning/idp-setup and connect your Microsoft tenant. Select the scopes you need. For provisioning you don’t need any additional scopes.


Joinly identity provider setup screen for connecting a Microsoft Entra tenant


Connect your Microsoft tenant and pick your scopes.

3. Import your existing accounts from Entra ID

Import all existing accounts from Entra ID at platform.joinly.app/settings/provisioning/entra-import. This gives Joinly a baseline of every account that already exists, so it can match people to their current account instead of creating duplicates.

4. Find the Zenegy integration in the Joinly marketplace

Open the Joinly marketplace and search for the Zenegy integration.

Don’t see your system listed? Get in touch at support@koppelhet.nl and we’ll help you out.


Joinly marketplace showing available HR integrations


Search the marketplace for the Zenegy integration.

5. Follow the installation wizard

You may be redirected to integrations.joinly.app. Create an account there and authorise the Zenegy connection: Joinly walks you through the Zenegy OAuth 2.0 authorization-code flow and selects the company you want to sync. We only ask for the information needed to establish a successful connection with Zenegy. All data is encrypted and stored securely.


Joinly installation wizard for authorising the Zenegy connection


Authorise the Zenegy connection through the OAuth flow in the wizard.

6. Configure your field mapping

Set up all your field mappings here. Templates support Liquid, so you can build your display name, UPN and other attributes dynamically from Zenegy fields.

Frequently asked questions

  • How do I map the manager? Reference the manager’s Zenegy identifier in the mapping and Joinly resolves the link to the right manager automatically.

  • How do I derive access from a flat department model? Combine department, job title and location in your mapping rules so a lean Zenegy structure still produces precise groups.

  • How do I prevent duplicate usernames? Use the generateUniqueUsername helper, which falls back to the next pattern when the first one is already taken:
    {{ generateUniqueUsername: “{firstName}.{prefix}.{lastName}”, “{initials}.{prefix}.{lastName}” }}


Joinly field mapping screen for Zenegy attributes using Liquid templates


Map Zenegy fields to Entra ID attributes with Liquid templates.

7. Configure the scheduled import

At platform.joinly.app/settings/import-configs, configure how often the import from Zenegy should run.

8. Configure your workflows

Workflows are where Joinly turns each HR change into the right action in Entra ID. Create an onboarding (joiner) and offboarding (leaver) workflow with trigger-based execution, then an Identity updated workflow with a Create/update employee in Entra action so every change in Zenegy flows straight through to Entra ID. Finally, add a threshold workflow with the Entra soft delete action that runs a set period after the termination date (for example 30 days) to retire accounts safely.


Joinly workflow editor creating an employee onboarding workflow


Create a trigger-based onboarding workflow.


Adding the create or update employee in Entra action to a workflow


Add the create/update action, then set your matching strategy and field mapping.


Adding the Entra soft delete action to remove accounts on employee leave


Add the Entra soft delete action to retire accounts safely.

## AD on-premise support

Need to provision to an on-premise Active Directory as well? See our dedicated guide on connecting Zenegy to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.

Frequently asked questions

Does the Zenegy to Microsoft Entra ID connection work in real time?
It runs as a frequent sync that updates multiple times per day, so changes in Zenegy reach Entra ID quickly without waiting for a nightly batch.

Does Zenegy have a native connector for Entra ID?
No. Zenegy’s API is built to push payroll and accounting data, not to create identity accounts, so there is no vendor-supplied joiner-mover-leaver path to Entra ID. Joinly reads the Zenegy API and provides that provisioning, role-to-group mapping and offboarding on top.

How are future-dated hires handled?
Joinly reads the employment start date on the Zenegy record and times account creation to it, so access is ready on the start date rather than the moment payroll saved the record.

Which attributes sync from Zenegy to Entra ID?
Name, email / UPN, department, job title, manager, and employment start and end date. Additional Zenegy fields can be mapped via Liquid templates.

How does Joinly authenticate to Zenegy?
Through Zenegy’s public API using the OAuth 2.0 authorization-code flow. Joinly manages the short-lived Bearer access token and refresh cycle for you, so the connection stays live without manual re-authentication.

Does Joinly also support AD on-premise or hybrid provisioning?
Yes. Joinly has its own AD on-premise agent and also supports the native Microsoft Entra provisioning agent, so you can provision users to your on-premise AD environment as well. See the Zenegy to Active Directory guide.

Request installation support