Connect Keka to Microsoft Entra ID

Connect Keka to Microsoft Entra ID

Connect Keka to Microsoft Entra ID

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

Key takeaways

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

  • Joinly maps Keka’s org structure — legal entity, business unit, department, location and cost center — to the right Entra ID groups and licences, something Keka’s API cannot do on its own.

  • There is no pre-built Microsoft connector for Keka, so the native path is Entra’s generic API-driven inbound provisioning that you have to build and feed; Joinly ships the Keka integration ready to use.

  • Keka’s India statutory fields (UAN, PF, ESI, PAN) stay in HR and payroll — Joinly maps only the directory attributes you choose, so statutory data never leaks into Entra ID.

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

Keka

Joiner

Mover

Leaver

Microsoft Entra ID (formerly Azure AD)

Quick facts

Source system

Keka (Keka HR)

Target system

Microsoft Entra ID (formerly Azure AD)

Connection method

Keka REST API → Entra ID

Supported events

Joiner, mover, leaver (incl. rehire, transfer between legal entities)

Synced attributes

Name, email / UPN, department, job title, manager, cost center, legal entity, business unit, location, start and end date

Authentication

OAuth 2.0 (client id, client secret and API key, scope ‘kekaapi’)

Real-time or batch

Frequent sync, multiple times per day

Compliance

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

How does Joinly sync Keka to Microsoft Entra ID?

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

  1. Joiner. HR completes the hire in Keka. Joinly reads the new employee record and determines the role from attributes like department, job title, legal entity and cost center. It then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — timed to the recorded joining date.

  2. Mover. When someone changes department, business unit or legal entity in Keka, 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 Date of Exit recorded in Keka, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and the leaver action keys off the recorded exit date rather than the moment the record was edited.

Example: A growing IT-services company runs Keka across two legal entities and hires a support engineer with a joining date next Monday. Joinly reads the record, waits until the joining date, creates the Entra ID account, assigns a Microsoft 365 Business Premium licence and adds the engineer to the Support-Team group scoped to the right legal entity. When that engineer later transfers to the professional-services business unit, Joinly swaps the groups the same day and leaves the UPN untouched.

What manual user management costs

Without automation, every account starts as a Keka ticket or a line in a spreadsheet that IT works through by hand. Because Microsoft ships no pre-built Keka connector, the native option is Entra’s generic API-driven inbound provisioning — a bulk endpoint you have to build a script or middleware around — 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 department or legal entity, 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 when a Date of Exit is entered late or in a bulk upload.

Joinly vs. native API-driven provisioning for Keka

There is no packaged Microsoft connector for Keka, so the native path is Entra’s generic API-driven inbound provisioning — a SCIM bulk endpoint fed by a custom script or an iPaaS broker. It can move attributes, but it stops short of the part that actually decides access. Here’s how the two compare.


Joinly

Entra API-driven provisioning (custom / iPaaS)

Source

Reads the Keka REST API directly

Needs a custom script or middleware to read Keka

Role-to-group mapping

Built in, rule-based on legal entity, business unit and department

No role-to-group out of the box; manual

Multi-legal-entity awareness

Maps per legal entity and business unit

Flat; entity logic must be coded

Statutory data handling

Keeps UAN, PF, ESI and PAN out of the directory by design

Whatever the script forwards; easy to over-share

Licence assignment

Driven by role / attributes

Manual or group-based only

On-premise AD

Yes, own agent plus the native Microsoft agent

Separate provisioning agent required, limited mapping

Audit trail

Per-action logging tied to the HR source

Limited

Watch-outs when connecting Keka to Microsoft Entra ID

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

  • No native Microsoft connector. Keka isn’t in the Entra HR-driven provisioning gallery the way SuccessFactors and Workday are, so the do-it-yourself route means building and maintaining a script or iPaaS around Entra’s generic bulk endpoint. Joinly ships the Keka integration ready to use, so there is nothing custom to keep alive.

  • India statutory fields. Keka records carry UAN, PF, ESI and PAN, and the UAN is portable across employers. These belong in HR and payroll, not the directory. Joinly maps only the attributes you choose and never uses a statutory identifier as an account key, so nothing sensitive leaks into Entra ID.

  • Multiple legal entities and business units. One Keka subscription can span several legal entities, each with its own business units and departments. A flat rule breaks quickly. Joinly builds explicit mapping from legal entity, business unit and department to the correct Entra groups and licences.

  • UPN format with duplicate names. When two employees share a name, a naive UPN rule produces collisions. Joinly applies custom transformation rules — a suffix, legal-entity code or controlled tiebreaker — so every UPN is unique and predictable from day one.

  • API rate limits. The Keka API is rate-limited, so a large initial load or a big bulk change has to be paced. Joinly reads incrementally and backs off automatically, so a first sync of thousands of employees never trips 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 Keka 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 900 employees across two legal entities, running Keka as its HR core while account creation lags behind. There is no pre-built Keka connector for Entra ID, so a small script pushes a nightly export — but it can’t tell one legal entity from another, transfers between business units are handled by hand, and every new engineer waits for someone to set up their account and licence before they can start on a client project.

Connect Keka to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in Keka at the source and acts on it automatically: new hires have their account, Microsoft 365 licence and group access ready on their joining date, transfers between business units swap the right groups the same day, statutory fields stay in payroll where they belong, and leavers are disabled on their Date of Exit with a 30-day soft-delete grace window.

“We used to keep a fragile export script alive just to get people into Entra. Now an account is simply ready on the joining date, transfers move themselves, and we can show exactly which Keka 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, the custom export script is retired, and the team can walk into its next audit with a complete, source-backed trail.

More than a connector

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

Connect Keka to Microsoft Entra ID

Installation guide

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

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

5. Follow the installation wizard

You may be redirected to integrations.joinly.app. Create an account there and enter your Keka connection details: your Keka client id, client secret and API key (generate the key as a Global Admin under Global admin settings → Integrations & Automation → API access, and give it the scope you need). We only ask for the information needed to establish a successful connection with Keka. All data is encrypted and stored securely.


Joinly installation wizard for entering Keka connection details


Enter your Keka client id, client secret and API key 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 Keka fields.

Frequently asked questions

  • How do I map the manager? Reference the manager in the Keka record and Joinly resolves the link to the right manager automatically.

  • How do I keep statutory fields out of the directory? Simply don’t map UAN, PF, ESI or PAN; Joinly only sends the attributes you configure, so payroll data stays in Keka.

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


Map Keka 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 Keka should run. Joinly reads incrementally and paces requests to stay within the Keka API rate limit.

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

Frequently asked questions

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

Is there a native Microsoft connector for Keka?
No. Unlike SuccessFactors or Workday, Keka is not in the Entra HR-driven provisioning gallery, so the native option is Entra’s generic API-driven inbound provisioning that you build and feed yourself. Joinly ships the Keka integration ready to use, including role-to-group mapping.

How does Joinly keep Keka’s statutory data out of Entra ID?
Joinly only sends the attributes you map. Leave UAN, PF, ESI and PAN unmapped and they never leave Keka, so India payroll identifiers stay in HR where they belong.

Which attributes sync from Keka to Entra ID?
Name, email / UPN, department, job title, manager, cost center, legal entity, business unit, location, and start and end date. You choose the exact set in the field mapping.

How does Joinly handle multiple legal entities in one Keka tenant?
Joinly maps per legal entity and business unit, so groups, licences and naming rules can differ per entity while a single account follows the employee across transfers.

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

Request installation support