Connect Yoobi to Microsoft Entra ID

Connect Yoobi to Microsoft Entra ID

Connect Yoobi to Microsoft Entra ID

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

Key takeaways

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

  • Joinly reads the Yoobi REST API (Employees and Employee contracts) over HTTPS, using either Basic auth or OAuth, so no custom middleware is needed.

  • Joinly maps Yoobi structure — department (afdeling), job function (functie) and contract dates — to the right Entra ID groups and licences, something Yoobi does not do at all on its own.

  • It reads the employee contract, not the project assignment, so identities are driven by the person’s actual employment rather than which project they happen to book hours on.

  • Every action is logged for a complete audit trail, aligned with NIS2 and ISO 27001.

Yoobi

Joiner

Mover

Leaver

Microsoft Entra ID (formerly Azure AD)

Quick facts

Source system

Yoobi (employee administration)

Target system

Microsoft Entra ID (formerly Azure AD)

Connection method

Yoobi REST API (Employees / Employee contracts) → Entra ID

Supported events

Joiner, mover, leaver (incl. contract changes and rehire)

Synced attributes

Name, email / UPN, department (afdeling), job function (functie), manager, contract start and end date

Authentication

HTTPS with Basic auth or OAuth, scoped per API user and object

Real-time or batch

Frequent sync, multiple times per day

Compliance

ISO 27001, NIS2-ready, GDPR (EU data centre)

How does Joinly sync Yoobi to Microsoft Entra ID?

Joinly reads each employee change in Yoobi through the REST API and applies it to the matching Entra ID account automatically. Yoobi holds the authoritative employee and contract record, so it is the starting point for each identity action.

  1. Joiner. HR completes the hire in Yoobi and the employee contract is set. Joinly reads the new employee and contract records through the REST API and determines the role from attributes like department and job function. It then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — timed to the contract start date.

  2. Mover. When someone changes department, function or contract in Yoobi, 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 contract end date recorded in Yoobi, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and external or freelance records that should never have an account are excluded by rule.

Example: A professional-services firm hires a consultant in Yoobi with a contract starting next Monday, in its Advisory department. Joinly reads the contract record, waits until the start date, creates the Entra ID account, assigns a Microsoft 365 E3 licence and adds the consultant to the Advisory group. When that consultant later moves to the Delivery department, Joinly swaps the groups the same day without anyone raising a ticket.

What manual user management costs

Without automation, every account starts as a Yoobi export or a line in a spreadsheet that IT works through by hand. Yoobi has no native path to Entra ID, so unless you build and maintain custom middleware on the REST API yourself, the part that actually decides access 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 function, 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 — especially easy to miss when a contract simply expires in Yoobi without a ticket being raised.

Joinly vs. building it yourself on the Yoobi API

Yoobi ships no provisioning to Entra ID, so the realistic alternative is custom middleware or a generic iPaaS flow on the REST API. Here’s how that compares to Joinly for a Yoobi-driven setup.


Joinly

Custom middleware on the Yoobi API

Source

Reads the Yoobi REST API directly (Employees / contracts)

You build and host the API integration

Role-to-group mapping

Built in, rule-based on department and function

You design and maintain the mapping logic

Contract-dated hires / leavers

Times account changes to contract start and end dates

You build the date-window handling

External / freelance filtering

Excludes non-employee records by rule

You write and maintain the filter

Licence assignment

Driven by role / attributes

You build it against Microsoft Graph

On-premise AD

Yes, own agent plus the native Microsoft agent

Separate build against LDAP

Audit trail

Per-action logging tied to the HR source

You build the logging

Watch-outs when connecting Yoobi to Microsoft Entra ID

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

  • Employees vs. external and freelance workers. Yoobi holds internal employees alongside external and freelance (ZZP) workers who book hours on projects. A naive sync would create Entra ID accounts for people who should never have one. Joinly filters on the employee and contract record so only genuine employees are provisioned.

  • Contract record, not project assignment. In Yoobi a person’s identity is defined by the employee contract — department, function, start and end date — while project assignments only say what they book hours against. Joinly drives every account from the contract, so the home department, not a project, decides access.

  • The API module and its permissions. The Yoobi REST API is an optional module activated per organisation, with permissions set per API user and object. Joinly needs read access to Employees and Employee contracts on your tenant subdomain; we help you scope a least-privilege API user during setup.

  • Mapping department and function to Entra groups. Yoobi’s afdeling and functie 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, department 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 Yoobi 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 consultancy and professional-services agency with around 350 employees, running Yoobi for its employee administration, time registration and project billing while its identity management never quite keeps up. IT exports a list from Yoobi every so often and works through it by hand, but with freelancers booking hours alongside staff, and consultants moving between advisory and delivery teams, the list is always slightly wrong — external workers occasionally end up with accounts they shouldn’t have, and a consultant’s move to a new department takes days to reflect in their access.

Connect Yoobi to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each employee change in Yoobi at the source and acts on it automatically: new hires have their account, Microsoft 365 licence and group access ready on their contract start date, moves between departments swap the right groups the same day, freelancers are excluded by rule, and leavers are disabled on their contract end date with a soft-delete grace window.

“The messy part was always telling staff apart from freelancers and keeping department moves current. Now an account is simply ready on the start date, a move just swaps the groups, and we can show exactly which Yoobi change created every bit of access.” — Head of IT, professional-services agency

The outcome this setup is designed for: onboarding drops from days to zero touch, external workers never get accounts by accident, and the team can walk into its next NIS2 assessment with a complete, source-backed audit trail.

More than a connector

A standalone Yoobi 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 Yoobi to Microsoft Entra ID

Connect Yoobi to Microsoft Entra ID

Installation guide

Follow these steps to connect Yoobi 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 Yoobi integration in the Joinly marketplace

Open the Joinly marketplace and search for the Yoobi 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 Yoobi integration.

5. Follow the installation wizard

You may be redirected to integrations.joinly.app. Create an account there and enter your Yoobi connection details: your Yoobi tenant subdomain (the API base URL, e.g. https://<tenant>.yoobi.nl/api/v1/) and the credentials of an API user with read access to Employees and Employee contracts (Basic auth or OAuth). Make sure the API module is activated on your Yoobi environment first. We only ask for the information needed to establish a successful connection with Yoobi. All data is encrypted and stored securely.


Joinly installation wizard for entering Yoobi connection details


Enter your Yoobi tenant subdomain and API-user 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 Yoobi fields.

Frequently asked questions

  • How do I map the manager? Reference the manager on the Yoobi employee record and Joinly resolves the link to the right manager automatically.

  • How do I exclude freelancers and external workers? Filter on the employee and contract record so only genuine employees are provisioned; external and ZZP records are skipped.

  • 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 Yoobi attributes using Liquid templates


Map Yoobi 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 Yoobi 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 Yoobi flows straight through to Entra ID. Finally, add a threshold workflow with the Entra soft delete action that runs a set period after the contract end 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 Yoobi to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.

Frequently asked questions

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

How does Joinly avoid creating accounts for freelancers and external workers?
Joinly drives provisioning from the Yoobi employee and contract records and filters out external and freelance (ZZP) records, so only genuine employees get an Entra ID account.

How are new hires and leavers timed?
Joinly reads the contract start and end dates on the Yoobi employee record, so an account is created on the start date and disabled on the end date rather than the moment HR saved the record.

Which attributes sync from Yoobi to Entra ID?
Name, email / UPN, department (afdeling), job function (functie), manager, and contract start and end date. Other Yoobi fields can be mapped via Liquid templates.

Do I need anything special on the Yoobi side?
Yes. The Yoobi REST API is an optional module that has to be activated for your organisation, and you need an API user with read access to Employees and Employee contracts (Basic auth or OAuth). We help you set this up during onboarding.

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 Yoobi to Active Directory guide.

Request installation support