NEWFlows V2 has been releasedSee what shipped
GUIDES22 OCTOBER 2026

JML automation buyer checklist: test movers, source conflicts and failed provisioning

Evaluate joiner, mover and leaver automation with practical tests for HRIS conflicts, changing roles, failed provisioning and audit evidence.

Harry LucasCTO & co-founder
PUBLISHED
CATEGORY
Guides
READ TIME
8 min
An employee record changing department, with old access removed and new access granted
Key takeaways
  • Test movers hardest: they are where old access quietly builds up.
  • Ask which system owns each field, and what happens when the HRIS and IdP disagree.
  • A leaver should never be marked complete while any removal has failed or is still open.

Joiner, mover and leaver (JML) automation should prove three things: new starters get the right access on day one, people who change role lose what they no longer need, and leavers are fully closed out even when something fails. Most demos show the first. The other two are where tools differ, and where access quietly builds up.

This checklist is for IT operations and identity owners connecting an HR system (HRIS) to their identity provider (IdP) and apps. It gives you scenario-based tests to run in an evaluation, with the outcome and evidence to ask for in each. For background, see identity lifecycle management.

What should JML automation actually prove?

A JML tool turns changes in people data into changes in access. To trust it, you need to see it handle:

  • Joiners: access planned before the start date and created on time, with exceptions routed rather than skipped.
  • Movers: access recalculated when someone's role changes, including removal of access the old role justified and the new one does not.
  • Leavers: every account, token and owned resource handled, with failures visible and retried.
  • Data conflicts: sensible behaviour when the HRIS and IdP disagree.
  • Evidence: a record of what changed, why, and what happened as a result.

Establish authoritative identity data

Automation is only as good as the data driving it. Before testing any flows, check how the tool decides which system is right.

Field ownership, sync timing and conflicting HRIS/IdP values

Ask the vendor to show:

  • Field ownership. For each field (department, title, manager, location, employment status, start and end dates), which system is the source, and whether that can be set per field.
  • Conflict handling. What happens when the HRIS says one thing and the IdP says another. A good answer is a defined rule plus a visible flag, not a silent overwrite.
  • Sync timing. How often changes are picked up from each source, and what that means for same-day changes. No integration is instantaneous, so know the real delay.
  • History. Whether each change is recorded with its old value, new value and source.

Ask to see a deliberate conflict in the demo: change a department in the IdP that disagrees with the HRIS, and watch what the tool does.

Test a joiner before day one

Joiners are the most demoed flow, but there is still detail worth testing.

Scheduled access, exceptions and readiness checks

Use a new starter whose record appears in the HRIS a week before their start date, in a team with a mix of standard and sensitive apps. Check that:

  • the access their role needs is worked out in advance, but not granted until the start date
  • accounts, licences and group memberships are created on the start date
  • access that needs approval (an admin role, a sensitive system) is routed to the right person rather than granted automatically or skipped
  • someone can see, before day one, whether everything is ready, and what is not

Then test a failure: an app that has run out of licences. The tool should retry, flag it and tell someone, rather than reporting the joiner as complete.

Test a mover without accumulating old privileges

Movers are where access builds up. If a tool only adds access when someone changes role, people collect permissions from every team they have been in. This is privilege creep.

Changed department, manager or employment status

Run at least three mover tests:

  1. Department change. Someone moves from Sales to Marketing. They should gain Marketing's standard access and lose Sales-only access.
  2. Manager change. Approvals and review tasks should move to the new manager.
  3. Employment status change. A contractor becoming an employee, or the reverse. Access rules for the two often differ.

Remove obsolete access and record the rationale

The key test: does the tool work out what the person should have now, based on their new role, rather than only adding the new role's access on top? Ask to see the list of what was removed after a move, and why.

Additive mover
  • Marketing access added
  • Sales CRM and pipeline tools kept
  • Next move adds more on top
Recalculated mover
  • Marketing access added
  • Sales-only access removed, with a reason
  • Exceptions flagged for review

Also check how it treats access granted by exception, outside the standard role. A sensible default is to flag it for review rather than remove it without warning, or keep it forever.

Test a leaver with partial integration failures

Leavers rarely fail completely. They fail partly: most accounts are removed, and one or two are not.

Retries, manual tasks and verification

A leaver with one failed removal
  1. TriggerEnd date landsThe HRIS sets a leaving date; the exit opens.
  2. Most appsAccess removedIntegrated apps deprovisioned and confirmed.
  3. One appAPI call failsThe failure is visible, then retried.
  4. No integrationOwner taskChased until the owner confirms.

Set up a leaver whose access includes an integrated app, an app with no integration, an account outside the directory, and an admin role. Then check:

  • the integrated app is deprovisioned, and the tool confirms it
  • the app with no integration becomes a task for its owner, with a deadline and reminders
  • the account outside the directory is found and included
  • the admin role cannot simply disappear without a successor
  • if one removal fails (simulate an API error), the failure is visible and retried
  • the leaver cannot be marked complete while any item is still open

For more on what a complete exit covers, see our employee offboarding checklist.

Evaluate policies, approvals and history

Beyond the three flows, check how the rules are managed:

  • Policy definition. Can you express "people in this department get this access" without writing a separate workflow for each team?
  • Exceptions and approvals. Who approves access outside the standard, and can approvals escalate?
  • Change history. For any person, can you see every access change, what caused it, and when?
  • Reviews. Does lifecycle data feed your access reviews, so a reviewer can see someone has moved team?

A scenario-based vendor evaluation checklist

Run these scenarios in each evaluation. They are illustrative tests, not customer stories. Adapt them to your own teams and apps.

JML evaluation scenarios
ScenarioChangeExpected outcomeFailure routeEvidence to ask for
JoinerNew HRIS record, start date in 7 daysAccess planned now, created on the start dateLicence shortage flagged and retriedReadiness view before day one
Joiner with sensitive accessRole includes an admin systemAdmin access routed for approvalEscalation if not approved in timeApproval record with approver and time
Department moverSales to MarketingMarketing access added; Sales-only access removedFailed removal flagged and retriedList of removals with reasons
Manager changeNew manager in the HRISApprovals and reviews move to the new managerOpen approvals reassignedChange history showing old and new values
Source conflictIdP department differs from HRISDefined source wins; conflict flaggedNo silent overwriteField-level source and history
Leaver, partial failureEnd date set; one API call failsAll other access removed; failure retriedOwner task for apps without integrationTracker that will not close while items are open

How Ploy lifecycle and workflows fit together

Ploy's lifecycle management keeps a live access plan for every employee and recalculates it when their identity, role, team, tools or policies change. It watches 24 employee fields, and each field names its owning source and can be locked, so two systems disagreeing does not become a silent overwrite. Each change records the old value, new value and source.

When someone moves, Ploy works out what they should have in their new role rather than comparing against the old one: what the new role needs is granted, what is no longer justified is removed, and each decision is recorded. For joiners, policy works out the access before the start date and accounts are created on the day. For leavers, the tracker cannot be marked complete while any account or task is still open.

Workflows handle the steps around this: flows triggered by HR events, with retries on failed steps, and a "run failed" event that can itself start a flow. Ploy connects to HR systems including HiBob, Humaans, Personio and Workday. What can be automated in each app depends on its integration and your configuration.

To run these scenarios against your own setup, book a demo.

Frequently asked questions

How should access change when an employee changes department?

Their access should be recalculated for the new role: standard access for the new department added, access only the old role justified removed, and anything granted by exception flagged for review. Every change should be recorded with its reason.

How do HRIS and identity provider conflicts affect provisioning?

If both systems can set the same field, they can disagree, and a tool that simply takes the latest value may provision the wrong access. Define which system owns each field, and choose a tool that flags conflicts instead of silently overwriting.

What is the most important JML scenario to test?

The mover. Joiners and leavers are well understood. Movers are where access builds up over time, and where tools vary most in whether they remove old access or only add new.

What should we ask to see in a JML demo?

Ask for a department move that removes old access, a deliberate data conflict between the HRIS and IdP, and a leaver where one removal fails. Then ask for the change history for that person.

See what Ploy can do for you.