Exact → Microsoft Entra ID (formerly Azure AD)
Connect Exact to Microsoft Entra ID
When someone joins, moves or leaves in Exact, you want that change reflected in Microsoft Entra ID without anyone touching it by hand. To connect Exact to Microsoft Entra ID, Joinly reads each HR change in Exact Online at the source — through the Exact Online REST API — and applies it automatically to the right account. Exact stays your source of truth; Joinly is the engine that keeps every action accurate and traceable.
Key takeaways
Exact Online HRM stays your source of truth; Joinly applies every joiner, mover and leaver to Entra ID automatically.
Joinly maps Exact’s org model — division (administratie), department, cost centre and dienstverband — to the right Entra ID groups and licences, which no native Exact connector exists to do.
Joinly reads employee records per division, so a person who appears in more than one administratie is resolved to a single, correct Entra ID account.
Joinly handles Exact Online’s API rate limits (60 calls/minute, 5,000/day) with incremental syncs, so provisioning stays reliable without hitting throttling.
Every action is logged for a complete audit trail, aligned with NIS2 and ISO 27001.


Quick facts
Source system | Exact (Exact Online HRM) |
Target system | Microsoft Entra ID (formerly Azure AD) |
Connection method | Exact Online REST API → Entra ID |
Supported events | Joiner, mover, leaver (incl. rehire, cross-division employees) |
Synced attributes | Name, email / UPN, department, job title, manager, cost centre, division, employee number, start and end date |
Authentication | OAuth 2.0 (authorization code grant), division-scoped consent |
Real-time or batch | Frequent sync, multiple times per day |
Compliance | ISO 27001, NIS2-ready, GDPR (EU data centre) |
Liever in het Nederlands? Exact koppelen met Microsoft Entra ID
How does Joinly sync Exact to Microsoft Entra ID?
Joinly reads each HR change in Exact Online through the REST API and applies it to the matching Entra ID account automatically. Exact Online holds the authoritative employee record — scoped per division — so it is the starting point for each identity action.
Joiner. HR completes the hire in Exact Online. Joinly reads the new employee record from the payroll / HRM area — employee number, department, cost centre, manager and dienstverband — and determines the role. It then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups, timed to the recorded start date.
Mover. When someone changes department, cost centre or division in Exact Online, Joinly updates their group membership, permissions and licences to match. Access that no longer fits the new position is revoked, so permissions stay aligned with the actual job.
Leaver. On the end date recorded in Exact Online, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and a soft-delete grace window keeps the account recoverable for a set period before it is retired.
Example: An accountancy firm hires a junior auditor in Exact Online with a start date next Monday, in its Amsterdam division. Joinly reads the record, waits until the start date, creates the Entra ID account, assigns a Microsoft 365 E3 licence and adds the auditor to the Audit-Amsterdam group. When that auditor later transfers to the advisory department, Joinly swaps the group and updates the job title the same day, without anyone touching Entra ID by hand.
What manual user management costs
Without automation, every account starts as an Exact export or a line in a spreadsheet that IT works through by hand. Because Exact has no native provisioning connector, teams either build a custom integration on the Exact Online REST API or wire up a generic iPaaS flow — and in both cases the part that actually decides access, role-to-group mapping across divisions, still falls to people.
Onboarding delays. New joiners wait for accounts, licences and group access while a ticket sits in a queue, losing productive days in their first week.
Permissions that don’t keep up (privilege creep). When movers change department or division, 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 Microsoft 365 licences keep costing money every month.
Joinly vs. a custom Exact Online API integration
Exact ships no native identity-provisioning connector, so the realistic alternative is a custom build on the Exact Online REST API or a generic iPaaS flow. Here’s how that compares to Joinly for an Exact-driven setup.
Joinly | Custom API / iPaaS build | |
|---|---|---|
Source | Reads the Exact Online REST API directly | You build and maintain the API integration |
Role-to-group mapping | Built in, rule-based on department, cost centre and dienstverband | Hand-coded logic you own and maintain |
Division / administratie handling | Resolves cross-division employees to one account | Per-division calls you have to orchestrate yourself |
API rate limits | Incremental syncs that stay within 60/min and 5,000/day | Your responsibility to throttle and back off on 429s |
Licence assignment | Driven by role / attributes | Extra code or manual assignment |
On-premise AD | Yes, own agent plus the native Microsoft agent | A second integration to build separately |
Audit trail | Per-action logging tied to the HR source | None unless you build it |
Watch-outs when connecting Exact to Microsoft Entra ID
A few Exact-specific details decide whether this connection stays reliable at scale.
Division (administratie) scoping. Every Exact Online API call runs against a single division and data does not span divisions, so an employee who appears in more than one administratie can produce duplicate or partial records. Joinly reads across the divisions you authorise and resolves each person to a single, correct Entra ID account.
HR as a module on an accounting core. Exact is an ERP/accounting platform with HR as a module, so employee records can be thinner than a dedicated HR system and department and cost-centre links aren’t always populated the way you expect. Joinly maps exactly the fields you need and fills the gaps with your own rules.
API rate limits. Exact Online allows 60 calls per minute and 5,000 per day per app-company (30,000 on a Premium licence). A naive full re-read hits those limits fast. Joinly syncs incrementally, reading only what changed, so provisioning stays inside the limits without throttling.
Mapping departments and cost centres to Entra groups. Division, department and cost centre don’t translate one-to-one to Entra ID groups. Joinly builds explicit mapping rules from those structures to the correct groups and licences, so role drives access rather than manual 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, division code or controlled tiebreaker — so every UPN is unique and predictable from day one.
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 Exact 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 is ISO 27001 certified, runs in an EU data centre in Amsterdam, applies least-privilege by default, and is built to meet NIS2 and ISO 27001.
Example case
Picture a mid-sized accountancy and advisory firm with around 900 staff across three offices, running Exact Online for its finance and HR while its identity provisioning never quite keeps up. There is no native Exact-to-Entra connector, so a hand-built script reads the API on a schedule — but it only ever looked at one division, transfers between the audit and advisory departments were re-keyed by hand, and every busy-season intake of trainees meant a queue of tickets before anyone could log in.
Connect Exact to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in Exact Online at the source and acts on it automatically: new joiners have their account, Microsoft 365 licence and group access ready on their recorded start date, transfers between departments swap the right groups the same day, staff who sit in more than one administratie resolve to a single account, and leavers are disabled on their end date with a 30-day soft-delete grace window.
“The busy-season intake used to be a scramble of tickets and half-finished scripts. Now a trainee’s account is simply ready on day one, a transfer just changes the access, and we can show the auditor exactly which Exact change created every bit of access.” — Head of IT, accountancy and advisory firm
The outcome this setup is designed for: onboarding drops from days to zero touch, cross-division duplicate accounts stop entirely, and the team can walk into its next NIS2 assessment with a complete, source-backed audit trail.
Installation guide
Follow these steps to connect Exact 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.

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.

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 Exact integration in the Joinly marketplace
Open the Joinly marketplace and search for the Exact integration.
Don’t see your system listed? Get in touch at support@koppelhet.nl and we’ll help you out.

Search the marketplace for the Exact integration.
5. Follow the installation wizard
You may be redirected to integrations.joinly.app. Create an account there and authorise Joinly against Exact Online with OAuth 2.0. During consent you choose which divisions (administraties) Joinly may read. We only ask for the access needed to establish a successful connection with Exact. All data is encrypted and stored securely.

Authorise Joinly against Exact Online and pick the divisions to sync.
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 Exact fields.
Frequently asked questions
How do I map the manager? Reference the manager on the Exact employee record and Joinly resolves the link to the right manager automatically.
How do I handle someone in more than one division? Joinly reads across the divisions you authorise and resolves the person to a single account, so a cross-division employee doesn’t become a duplicate.
How do I prevent duplicate usernames? Use the
generateUniqueUsernamehelper, which falls back to the next pattern when the first one is already taken:{{ generateUniqueUsername: “{firstName}.{prefix}.{lastName}”, “{initials}.{prefix}.{lastName}” }}

Map Exact 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 Exact should run. Joinly reads incrementally so the sync stays within Exact Online’s API rate limits.
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 Exact flows straight through to Entra ID. Finally, add a threshold workflow with the Entra soft delete action that runs a set period after the end date (for example 30 days) to retire accounts safely.

Create a trigger-based onboarding workflow.

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

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 Exact to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.
Frequently asked questions
Does the Exact to Microsoft Entra ID connection work in real time?
It runs as a frequent sync that updates multiple times per day, so changes in Exact Online reach Entra ID quickly without waiting for a nightly batch.
How does Joinly handle employees who appear in more than one division?
Every Exact Online API call is scoped to a single division (administratie), so Joinly reads across the divisions you authorise and resolves each person to one Entra ID account rather than creating duplicates.
Does Joinly stay within Exact Online’s API rate limits?
Yes. Exact Online allows 60 calls per minute and 5,000 per day per app-company. Joinly syncs incrementally, reading only what changed, so provisioning stays inside those limits without hitting throttling.
Which attributes sync from Exact to Entra ID?
Name, email / UPN, department, job title, manager, cost centre, division, employee number, and start and end date. Additional Exact fields can be mapped via Liquid templates.
Does Joinly connect to Exact Online or to Exact Globe / Synergy?
Joinly connects to Exact Online through its REST API, which is where the HRM employee data and the OAuth 2.0 interface live. If your HR data sits in an on-premise Exact Globe or Synergy environment, contact support at support@koppelhet.nl to discuss the options.
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 Exact to Active Directory guide.
More than a connector
A standalone Exact 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.
Request installation support
Other guides
Frequently asked
Questions about connecting Exact to Microsoft Entra ID (formerly Azure AD)
How does Joinly connect Exact to Microsoft Entra ID?
The connection reads HR changes at the source (Exact Online REST API → Entra ID.) Authentication: OAuth 2.0 (authorization code grant), division-scoped consent. Joinly writes to Entra ID through Microsoft Graph, with its own app registration and application permissions — no synchronisation server, agent or extra infrastructure. If you prefer Microsoft's API-driven provisioning endpoint, Joinly can deliver the same changes as a SCIM 2.0 bulk request instead.
Which HR events does the Exact → Entra ID connection handle?
Joiner, mover, leaver (incl. rehire, cross-division employees). Each event runs the workflow you configured for it: a joiner gets an account, groups and licences before the start date, a mover has the access of the old position removed and the new one added, and a leaver is disabled on the termination date.
Which Exact attributes are synced to Entra ID?
Name, email / UPN, department, job title, manager, cost centre, division, employee number, start and end date. The mapping is configurable per field with Liquid templates, so your own naming convention for the user principal name, display name and e-mail address keeps applying.
How often does Joinly sync Exact with Entra ID?
Frequent sync, multiple times per day. The import schedule is yours to set — hourly, daily or weekly at a fixed time — and every run only processes what changed since the previous one.
Will Joinly overwrite the accounts that already exist in Entra ID?
No. Joinly first imports your existing directory and matches those accounts to the employees from Exact. Existing accounts are recognised and adopted rather than created twice. Which matching strategy applies — user principal name, e-mail address, employee ID or a person identifier — is a setting.
Can I try this without anything being written?
Yes. Run the import as a dry run and you get an Excel export of exactly what would happen. You can also leave the connection in read-only mode, where Joinly calculates everything but writes nothing, and set thresholds for how many creations, activations and deactivations one run may produce before it is blocked for approval.
Is Exact a ready-made connector in Joinly?
Yes. Exact is a ready-made HR connector in Joinly: you enable it, enter the details of your Exact environment and Joinly reads the employees from there. Nothing has to be developed on either side.
What happens when someone has more than one contract in Exact?
Joinly recognises that it is one person and decides which employment leads for the account, the manager and the department. You do not get two accounts for the same employee, and when one contract ends the account is only disabled when the last active employment ends.
Do I need a Microsoft Entra ID P1 or P2 licence for this?
Not for the Microsoft Graph path: Joinly uses its own app registration and the permissions you grant it. Microsoft's API-driven inbound provisioning endpoint, which Joinly can also target with SCIM bulk requests, follows Microsoft's own licensing for that feature.
Does the Exact → Entra ID connection support NIS2 and ISO 27001?
ISO 27001, NIS2-ready, GDPR (EU data centre). Every mutation lands in the audit log with its source — HR import, manual, from Entra, by the system or through an API key — and a link to the workflow that caused it. That is the evidence an auditor asks for when they want to know who had access to what, and why.
More on Exact
Everything Joinly publishes about Exact: the other installation guide, how the connection compares with Microsoft's own provisioning, what offboarding looks like, and the SCIM route.
Zien wat Joinly voor jouw organisatie doet?
Start direct met een gratis proefversie of neem contact op voor advies over jouw HR- en Microsoft-omgeving.