When someone joins, moves or leaves in Zoho People, you want that change reflected in Microsoft Entra ID without anyone touching it by hand. To connect Zoho People to Microsoft Entra ID, Joinly reads each HR change from the Zoho People Employees form at the source — through the Zoho People REST API — and applies it automatically to the right account. Zoho People stays your source of truth; Joinly is the engine that keeps every action accurate and traceable.
Key takeaways
Zoho People stays your source of truth; Joinly applies every joiner, mover and leaver to Entra ID automatically.
Joinly reads the Employees form through the Zoho People REST API and maps Zoho’s Department and Designation to the right Entra ID groups and licences — a mapping neither the native Entra nor Zoho Directory paths do outward from Zoho People.
Joinly connects to the correct Zoho data centre (.com, .eu, .in, .com.au and the rest) and authenticates with OAuth 2.0 through Zoho Accounts, so an EU tenant stays on the EU endpoint.
Because Zoho People is forms-based, Joinly maps your specific form fields per tenant rather than assuming a fixed schema, so custom fields land where you need them.
Every action is logged for a complete audit trail, aligned with NIS2 and ISO 27001.
Quick facts
Source system | Zoho People (Employees form) |
Target system | Microsoft Entra ID (formerly Azure AD) |
Connection method | Zoho People REST API → Entra ID |
Supported events | Joiner, mover, leaver (incl. rehire and department/designation change) |
Synced attributes | Name, email / UPN, department, designation (job title), manager, location, start and end date, plus mapped custom form fields |
Authentication | OAuth 2.0 via Zoho Accounts (region-specific: .com / .eu / .in / .com.au) |
Real-time or batch | Frequent sync, multiple times per day |
Compliance | ISO 27001, NIS2-ready, GDPR (EU data centre) |
How does Joinly sync Zoho People to Microsoft Entra ID?
Joinly reads each HR change from the Zoho People Employees form through the REST API and applies it to the matching Entra ID account automatically. Zoho People holds the authoritative employee record, so it is the starting point for each identity action.
Joiner. HR completes the hire in the Zoho People Employees form. Joinly reads the new record through the API and determines the role from fields like Department, Designation and location. 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, Designation or location in Zoho People, 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.
Leaver. On the exit date recorded in Zoho People, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and licences are freed up rather than quietly billed month after month.
Example: A growing IT-services company hires a support engineer in Zoho People with a start date next Monday, in its Amsterdam office, on the EU data centre. Joinly reads the Employees form through the .eu endpoint, waits until the start date, creates the Entra ID account, assigns an Office E3 licence and adds the engineer to the NL-Support group. When that engineer is later promoted and their Designation changes in Zoho People, Joinly swaps the groups the same day without anyone opening a ticket.
What manual user management costs
Without automation, every account starts as a Zoho People notification or a line in a spreadsheet that IT works through by hand. Microsoft’s native Entra gallery apps and Zoho Directory’s own sync provision users into Zoho, not out of it, so nothing reads the Zoho People Employees form and turns it into Entra ID access — that part 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 Designation, 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 long after someone has left.
Joinly vs. the native Zoho / Entra provisioning path
The first-party options — Microsoft’s Entra gallery apps for Zoho and Zoho Directory’s own sync — move users into Zoho over SCIM. None of them reads the Zoho People Employees form and provisions outward to Entra ID, which is exactly the direction most HR-driven setups need. Here’s how the two compare.
Joinly | Native Zoho / Entra path | |
|---|---|---|
Source | Reads the Zoho People Employees form via the REST API | Provisions INTO Zoho; does not read Zoho People as HR source |
Direction | Zoho People → Entra ID (HR-driven) | Entra ID → Zoho (app provisioning) |
Role-to-group mapping | Built in, rule-based on Department / Designation | Not applicable outward from Zoho People |
Data-centre region | Auto-targets the right .com / .eu / .in / .com.au endpoint | Configured per Zoho tenant |
Custom form fields | Mapped per tenant via Liquid templates | Fixed SCIM attribute set |
On-premise AD | Yes, own agent plus the native Microsoft agent | Zoho AD Sync pulls into Zoho, not outward |
Audit trail | Per-action logging tied to the HR source | Limited |
Watch-outs when connecting Zoho People to Microsoft Entra ID
A few Zoho People-specific details decide whether this connection stays reliable at scale.
Data-centre region and endpoint. Zoho runs separate data centres — .com (US), .eu (Netherlands), .in (India), .com.au (Australia) and others — and the API and OAuth domains differ per region. Point at the wrong one and authentication simply fails. Joinly connects to your tenant’s region, so an EU org keeps its data on the EU endpoint.
Forms-based data model. Zoho People stores data as form records with configurable fields, and field API names differ from one org to the next. Joinly maps your actual Employees-form fields per tenant instead of assuming a fixed schema, so custom fields are read correctly.
Mapping Department and Designation to Entra groups. Zoho’s Department and Designation 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, location code or controlled tiebreaker — so every UPN is unique and predictable from day one.
API pagination and rate limits. The Zoho People API returns records in pages (sIndex / rec_limit) and enforces rate limits. Joinly paginates and backs off automatically, so large imports complete reliably without tripping the limit.
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 Zoho People 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 an IT-services company with around 700 employees across three countries, running Zoho People as its HR core on the EU data centre while its identity provisioning never quite keeps up. Every new consultant, engineer or account manager starts as a Zoho People record that IT copies into Entra ID by hand — creating the account, picking licences, adding groups. With a steady stream of hires, promotions and the odd contractor conversion, the queue never empties, and new joiners sometimes wait until day two for a working login.
Connect Zoho People to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change from the Employees form at the source and acts on it automatically: new hires have their account, Office licence and group access ready on their start date, a change of Designation swaps the right groups the same day, and leavers are disabled on their exit date with a 30-day soft-delete grace window — all on the correct EU endpoint.
“Provisioning used to be a daily copy-paste job from Zoho People into Entra. Now an account is simply ready on the start date, a promotion just changes the groups, and we can show the auditor exactly which Zoho People change created every bit of access.” — Head of IT, IT-services company
The outcome this setup is designed for: onboarding drops from days to zero touch, privilege creep from old roles is eliminated, and the team can walk into its next NIS2 assessment with a complete, source-backed audit trail.
More than a connector
A standalone Zoho People 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 Zoho People 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 Zoho People integration in the Joinly marketplace
Open the Joinly marketplace and search for the Zoho People 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 Zoho People integration.
5. Follow the installation wizard
You may be redirected to integrations.joinly.app. Create an account there and authorise Joinly against Zoho: pick your data-centre region (.com, .eu, .in, .com.au and the rest) and complete the OAuth 2.0 consent through Zoho Accounts, which grants the read scope for form data. We only ask for the information needed to establish a successful connection with Zoho People. All data is encrypted and stored securely.

Pick your Zoho data-centre region and complete the OAuth consent 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 Zoho People form fields.
Frequently asked questions
How do I map the manager? Reference the reporting-manager field in the mapping and Joinly resolves the link to the right manager automatically.
How do I handle custom fields? Because Zoho People is forms-based, map the exact field API names from your Employees form; Joinly reads whatever fields your org has configured.
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 Zoho People 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 Zoho People 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 Zoho People flows straight through to Entra ID. Finally, add a threshold workflow with the Entra soft delete action that runs a set period after the exit 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 Zoho People to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.
Frequently asked questions
Does the Zoho People to Microsoft Entra ID connection work in real time?
It runs as a frequent sync that updates multiple times per day, so changes in Zoho People reach Entra ID quickly without waiting for a nightly batch.
Which Zoho data centre does Joinly connect to?
Whichever region your tenant runs on — .com (US), .eu (Netherlands), .in (India), .com.au (Australia) and the others. Joinly authenticates with OAuth 2.0 through the matching Zoho Accounts domain, so an EU org keeps its data on the EU endpoint.
How does Joinly handle custom fields in Zoho People?
Zoho People is forms-based, so field API names differ per org. Joinly maps the exact fields from your Employees form via Liquid templates, so custom fields like an employee number land in the right place.
Which attributes sync from Zoho People to Entra ID?
Name, email / UPN, department, designation (job title), manager, location, and start and end date. Custom form fields can be mapped via Liquid templates.
Do the native Entra or Zoho Directory provisioning apps do this already?
No. Those apps provision users into Zoho over SCIM; they don’t read the Zoho People Employees form and provision outward to Entra ID. Joinly reads Zoho People as the HR source and takes over the account creation, role-to-group mapping and offboarding.
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 Zoho People to Active Directory guide.


