Connect Zucchetti to Microsoft Entra ID

Connect Zucchetti to Microsoft Entra ID

Connect Zucchetti to Microsoft Entra ID

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

Key takeaways

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

  • Joinly maps Zucchetti’s organizational model — unità organizzativa, centro di costo and role — to the right Entra ID groups and licences, which a generic connector can’t do on its own.

  • The matricola (payroll employee number) is treated as a stable key, so a person is matched reliably even though it is not an email address.

  • CCNL-driven contract types and payroll cessazione dates are read correctly, so start and end of access follow the real employment, not a rough leave date.

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

Zucchetti

Joiner

Mover

Leaver

Microsoft Entra ID (formerly Azure AD)

Quick facts

Source system

Zucchetti (HR Infinity)

Target system

Microsoft Entra ID (formerly Azure AD)

Connection method

Zucchetti HR Infinity API / web services → Entra ID

Supported events

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

Synced attributes

Name, email / UPN, department, job title, manager, matricola, cost center, organizational unit, start and end date

Real-time or batch

Frequent sync, multiple times per day

Compliance

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

How does Joinly sync Zucchetti to Microsoft Entra ID?

Joinly reads each HR change in HR Infinity through the Zucchetti API and applies it to the matching Entra ID account automatically. The Zucchetti employee master (anagrafica dipendente) holds the authoritative record, so it is the starting point for each identity action.

  1. Joiner. HR completes the hire in HR Infinity. Joinly reads the new employee record and determines the role from attributes like the organizational unit, cost center and job title. It then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — matched on the matricola so there is no duplicate.

  2. Mover. When someone changes organizational unit, cost center or role in HR Infinity, 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.

  3. Leaver. On the cessazione (termination) date recorded in Zucchetti’s payroll, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and the payroll end date — not a rough manual entry — drives the exact moment access is removed.

Example: An Italian manufacturer hires a production planner in HR Infinity, assigned to the Stabilimento Nord organizational unit under a metalworking CCNL. Joinly reads the record, creates the Entra ID account, assigns an Office E3 licence and adds the planner to the Operations-Nord group — matched on the matricola. When that planner later transfers to a different centro di costo, Joinly swaps the groups the same day without breaking sign-in.

What manual user management costs

Without automation, every account starts as a Zucchetti ticket or a line in a spreadsheet that IT works through by hand. Microsoft’s generic HR-driven inbound provisioning can move attributes across, but it has no understanding of Zucchetti’s organizational model, matricola or CCNL and maps roles to groups through manual rules — so 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 organizational unit or cost center, 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 leave date entered by hand rarely matches the real payroll cessazione date.

Joinly vs. native Entra HR-driven provisioning

Microsoft’s generic HR-driven / API-driven inbound provisioning is a fine baseline, but it stops short of the part that actually decides access. Here’s how the two compare for an HR Infinity-driven setup.


Joinly

Entra HR-driven provisioning

Source

Reads the Zucchetti API directly, matched on matricola

Generic connector; no native Zucchetti app

Role-to-group mapping

Built in, rule-based on the organizational model

Manual expression mappings; no role-to-group out of the box

Organizational model

Understands unità organizzativa and centro di costo

Flat attribute copy; no org-model logic

Payroll dates (CCNL / cessazione)

Uses the real start and cessazione dates

Needs custom date handling

Licence assignment

Driven by role / attributes

Manual or group-based only

On-premise AD

Yes, own agent plus the native Microsoft agent

Provisioning agent required, limited mapping

Audit trail

Per-action logging tied to the HR source

Limited

Watch-outs when connecting Zucchetti to Microsoft Entra ID

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

  • Matricola as the matching key. In Zucchetti the matricola (payroll employee number) is the stable identifier, not an email address. Joinly matches people on the matricola, so rehires and name changes attach to the right existing account instead of creating a duplicate.

  • Modular suite and the authoritative record. HR Infinity is modular — Paghe (payroll), Presenze (attendance), Workflow — and the same person can appear in more than one module. Joinly pins the authoritative record and the organizational unit before mapping, so access is driven by the right source data.

  • Mapping the organizational model to Entra groups. Unità organizzativa and centro di costo are separate hierarchies and neither maps 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.

  • CCNL-driven dates. Contract type and the payroll calendar (start date, cessazione) come from the CCNL rather than a simple leave field. Joinly reads the real payroll dates, so access starts and ends on the right day.

  • UPN format with duplicate names. When two employees share a name, a naive UPN rule produces collisions. Joinly applies custom transformation rules — a suffix, a code or the matricola as a 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 Zucchetti 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 Italian manufacturer with around 3,500 employees across four plants, running HR Infinity as its HR core while its identity provisioning never quite keeps up. A generic connector handles the simple cases, yet the modular split between Paghe and Presenze, transfers between organizational units and matching on anything other than the matricola keep breaking it — rehired seasonal staff end up with duplicate accounts, and leavers stay active because a manual leave date never matched the real cessazione.

Connect Zucchetti to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in HR Infinity at the source and acts on it automatically: new hires have their account, Office licence and group access ready on their start date, transfers between organizational units swap the right groups the same day, rehires reattach to the existing account on the matricola, and leavers are disabled on their payroll cessazione date with a 30-day soft-delete grace window.

“Matching on the matricola and the real payroll dates fixed the two things that broke every sync. Now an account is simply ready on the start date, a transfer just swaps the groups, and we can show the auditor exactly which Zucchetti change created every bit of access.” — Head of IT, Italian manufacturer

The outcome this setup is designed for: onboarding drops from days to zero touch, duplicate-account and stale-leaver errors stop entirely, and the team can walk into its next NIS2 assessment with a complete, source-backed audit trail.

More than a connector

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

Connect Zucchetti to Microsoft Entra ID

Installation guide

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

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

5. Follow the installation wizard

You may be redirected to integrations.joinly.app. Create an account there and enter your Zucchetti HR Infinity connection details: your API endpoint and the credentials issued for your tenant. We only ask for the information needed to establish a successful connection with Zucchetti. All data is encrypted and stored securely.


Joinly installation wizard for entering Zucchetti connection details


Enter your Zucchetti API endpoint and tenant 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 HR Infinity fields.

Frequently asked questions

  • How do I map the manager? Reference the manager from the organizational model and Joinly resolves the link to the right manager automatically.

  • How do I match people reliably? Use the matricola as the matching key so rehires and name changes attach to the existing account.

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


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

Frequently asked questions

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

How does Joinly match people from Zucchetti?
On the matricola, the payroll employee number, which is stable across name changes and rehires — so people attach to the right existing account instead of creating a duplicate.

How are Zucchetti’s payroll dates handled?
Joinly reads the real start date and the cessazione (termination) date from the payroll record, so access begins and ends on the correct day rather than a manually entered leave date.

Which attributes sync from Zucchetti to Entra ID?
Name, email / UPN, department, job title, manager, matricola, cost center, organizational unit, and start and end date. Additional HR Infinity fields can be mapped via Liquid templates.

Is there a native Zucchetti provisioning app for Entra ID?
There is no purpose-built native Zucchetti-to-Entra app. Microsoft’s generic HR-driven provisioning can copy attributes, but Joinly adds the org-model mapping, matricola matching and role-to-group logic it doesn’t provide, and maintains it as your Zucchetti 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 Zucchetti to Active Directory guide.

Request installation support