When someone joins, moves or leaves in Deel, you want that change reflected in Microsoft Entra ID without anyone touching it by hand. To connect Deel to Microsoft Entra ID, Joinly reads each HR change in Deel at the source — through the Deel Public REST API — and applies it automatically to the right account, whether the person is an EOR employee, a direct payroll employee or a contractor. Deel stays your source of truth; Joinly is the engine that keeps every action accurate and traceable.
Key takeaways
Deel stays your source of truth; Joinly applies every joiner, mover and leaver to Entra ID automatically across every worker type.
Joinly reads Deel’s worker types — EOR employee, direct (global payroll) employee and contractor — and applies different rules per type, so a contractor doesn’t get the same account and licences as a full employee.
Joinly maps Deel’s legal entity, group and location to the right Entra ID groups and licences — something Deel’s own SCIM can’t do, because its SCIM API has no Group resource.
Multi-country teams are handled correctly: workers spread across many legal entities and countries are provisioned on their own local start and end dates, not one global batch.
Every action is logged for a complete audit trail, aligned with NIS2 and ISO 27001.
Quick facts
Source system | Deel (Deel HR) |
Target system | Microsoft Entra ID (formerly Azure AD) |
Connection method | Deel Public REST API → Entra ID |
Supported events | Joiner, mover, leaver (incl. EOR, direct payroll and contractor workers, worker-type changes) |
Synced attributes | Name, email / UPN, worker type, group, legal entity, location, job title, manager, start and end date |
Authentication | Bearer API token (organization or personal) or OAuth 2.0 |
Real-time or batch | Frequent sync, multiple times per day |
Compliance | ISO 27001, NIS2-ready, GDPR (EU data centre) |
How does Joinly sync Deel to Microsoft Entra ID?
Joinly reads each HR change in Deel through the Public REST API and applies it to the matching Entra ID account automatically. Deel holds the authoritative worker record — including the worker type, legal entity and group — so it is the starting point for each identity action.
Joiner. HR completes the hire in Deel — an EOR contract, a global-payroll direct employee or a contractor agreement. Joinly reads the new worker record and determines the role from attributes like worker type, group, legal entity and location. It then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — with a different profile for a contractor than for a full employee.
Mover. When someone changes group, location or is converted from contractor to EOR employee in Deel, Joinly updates their group membership, permissions and licences to match. Access that no longer fits the new situation is revoked, so permissions stay aligned with the actual engagement.
Leaver. On the end date recorded in Deel — the last day of an EOR contract, a payroll termination or the end of a contractor agreement — Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and each worker’s own local end date drives the timing rather than a single global run.
Example: A remote-first company hires a designer as an EOR employee in Portugal with a start date next Monday, and at the same time renews two contractors in Brazil. Joinly reads each Deel record, creates the Portuguese employee’s Entra ID account on Monday with an Office E3 licence and the Design group, and gives the Brazilian contractors a restricted account with no mailbox — all driven from the same Deel source, each on its own worker type and start date.
What manual user management costs
Without automation, every account starts as a Deel notification or a line in a spreadsheet that IT works through by hand. Deel’s own SCIM and its direct Okta/Entra integrations can push a user across, but they have no Group resource and no worker-type logic, so the part that actually decides access — which groups, which licence, and whether a contractor should get a full account at all — 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 — and with a distributed team the request often arrives in a different time zone than the admin.
Permissions that don’t keep up (privilege creep). When movers change group or convert from contractor to employee, 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 with contractors and EOR contracts ending on many different local dates, it is easy to miss one.
Joinly vs. Deel’s native SCIM provisioning
Deel’s own SCIM and its direct Okta/Entra ID integrations are a fine baseline, but they stop short of the part that actually decides access. Here’s how the two compare for a Deel-driven setup.
Joinly | Deel SCIM / native integration | |
|---|---|---|
Source | Reads the Deel Public REST API directly | Deel SCIM pushes to the IdP |
Role-to-group mapping | Built in, rule-based on worker type, group and entity | No Group resource in SCIM; no role-to-group |
Worker-type handling | Different rules for EOR, direct payroll and contractor | All workers treated the same |
Multi-country / multi-entity | Per-entity, per-country start and end dates | Single user stream, no entity logic |
Licence assignment | Driven by role / worker type | Manual or group-based only |
On-premise AD | Yes, own agent plus the native Microsoft agent | No; cloud IdP only |
Audit trail | Per-action logging tied to the HR source | Limited |
Watch-outs when connecting Deel to Microsoft Entra ID
A few Deel-specific details decide whether this connection stays reliable at scale.
Mixed worker types in one org. A single Deel organisation holds EOR employees, direct global-payroll employees and independent contractors side by side. They should not all get the same account: a contractor often needs a restricted account with no mailbox or licence. Joinly reads the worker type and applies a different provisioning profile per type.
EOR vs direct employment. For an EOR worker, Deel’s own entity is the legal employer, while the person actually works for your company. A naive rule that maps the Deel EOR entity to a group or licence gets it wrong. Joinly maps to your organisation’s groups from the group and location, not the EOR entity.
Multi-country and multi-entity timing. Workers span many legal entities and countries, each with its own start date, notice period and end date. Joinly acts on each worker’s own local dates, so an account is created or disabled on the right day per country rather than in one global batch.
No Group resource in Deel’s SCIM. Deel’s SCIM API exposes only the User resource, so group and role mapping can’t come from SCIM at all. Joinly reads the richer Deel REST API — group, entity, location and worker type — and builds explicit mapping rules to Entra ID groups and licences.
UPN format with duplicate names. When two workers share a name, a naive UPN rule produces collisions. Joinly applies custom transformation rules — a suffix, entity 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 Deel 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 remote-first software company with around 400 people across 30 countries, running Deel for everything from EOR employees to a large bench of independent contractors, while its identity provisioning never quite keeps up. Deel’s native SCIM push handles the simple cases, yet it treats a contractor in Argentina exactly like a full EOR employee in Germany — both land with the same Entra ID account and licence — and every group assignment is still done by hand because Deel’s SCIM has no group concept at all.
Connect Deel to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in Deel at the source and acts on it automatically: EOR and payroll employees get their account, Office licence and group access ready on their local start date, contractors get a restricted no-mailbox account, a contractor-to-employee conversion upgrades access the same day, and leavers are disabled on their end date with a 30-day soft-delete grace window.
“We hire in 30 countries through Deel, and half of them are contractors. Joinly finally tells the difference — a contractor gets a locked-down account, an EOR hire gets the full stack, and every group is mapped from Deel automatically instead of by hand.” — Head of IT, remote-first software company
The outcome this setup is designed for: onboarding drops from days to zero touch, contractors and employees get exactly the access their worker type warrants, and the team can walk into its next NIS2 assessment with a complete, source-backed audit trail.
More than a connector
A standalone Deel 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 guide
Follow these steps to connect Deel 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 Deel integration in the Joinly marketplace
Open the Joinly marketplace and search for the Deel 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 Deel integration.
5. Follow the installation wizard
You may be redirected to integrations.joinly.app. Create an account there and enter your Deel connection details: a Deel API token (an organization token is recommended so Joinly can read every worker type) or OAuth credentials. We only ask for the information needed to establish a successful connection with Deel. All data is encrypted and stored securely.

Enter your Deel API token or OAuth credentials 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 Deel fields.
Frequently asked questions
How do I handle contractors differently from employees? Branch on the worker type: give EOR and direct employees the full account and licence, and contractors a restricted account with no mailbox.
How do I map the manager? Reference the manager on the Deel worker record and Joinly resolves the link to the right manager automatically.
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 Deel 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 Deel 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 Deel 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 Deel to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.
Frequently asked questions
Does the Deel to Microsoft Entra ID connection work in real time?
It runs as a frequent sync that updates multiple times per day, so changes in Deel reach Entra ID quickly without waiting for a nightly batch.
How does Joinly handle contractors versus EOR and payroll employees?
Joinly reads the Deel worker type and applies a different profile per type: EOR and direct payroll employees get a full account and licence, while contractors get a restricted account — for example no mailbox — so access always matches the engagement.
Can Joinly map Deel groups and entities to Entra ID groups?
Yes. Joinly reads the Deel Public REST API — group, legal entity, location and worker type — and builds explicit mapping rules to Entra ID groups and licences. Deel’s own SCIM can’t do this because it has no Group resource.
Which attributes sync from Deel to Entra ID?
Name, email / UPN, worker type, group, legal entity, location, job title, manager, and start and end date. Additional Deel fields can be mapped via Liquid templates.
Do I still need Deel’s native SCIM integration?
No. Joinly takes over the provisioning, role-to-group mapping and worker-type handling that Deel’s SCIM does not do, and maintains it as your Deel data changes.
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 Deel to Active Directory guide.


