← SailPoint ISC Greenfield Implementation Field Guide

SailPoint ISC Greenfield Implementation Field Guide

Lifecycle States and Joiner Mover Leaver Automation

Joiner, mover and leaver (JML) is the visible face of the program. This page describes how the automation was built from lifecycle states, event-triggered workflows, manager forms and scheduled jobs, and the places where it needed human help.

The lifecycle model

The HR-driven identity profile had five lifecycle states, all driven by the computed cloudLifecycleState attribute described on the identity model page.

StateMeaningAccount action
Pre JoinerHired, not yet startedEnable the directory accounts
ActiveEmployedEnable the directory accounts
IntermediateAnything that fits no other ruleNone
InactiveEmployment ended (end date reached at 22:00 local)Disable on a list of sources
Emergency TerminationManual immediate cut-offDisable on the directory sources
Lifecycle states and the actions on eachPre joiner, active, inactive, with intermediate for anything else and emergency termination as a manual cut-off.Pre Joinerhired, not startedenable directory accountsActiveemployedenable directory accountsInactiveend date reached, 22:00localdisable on listed sourcesstartend daterehireIntermediatefits no other ruleno account actionEmergencyterminationmanual cut-off, anytimedisable directory sourcesAccount created14 days before start, inthe user's time zoneLifecycle action source lists are explicita source not on the list is not disabled. Check everynew sourceState is computed by a cloud rule from HR status, end date and the person's time zone.
Five states. The action attached to each state names its target sources by identifier, so adding a source means adding it to the list.

The lifecycle action source list is explicit

This is the most expensive caveat in this section. Each lifecycle state action names its target sources by ID. At the end of the program the Inactive disable action covered 13 of 146 sources: the directories and the earliest crown-jewel applications. Sources added later were not on the list, including some with no other disable path.

That is not necessarily wrong. Several later applications were handled by compensating mechanisms, for example a scheduled workflow that disables accounts in a payroll SaaS on a half-month calendar, or a manual leaver process. But it has to be a decision, not an accident.

Make this a standing checklist item for every new source:

  1. Is the source account-managed by ISC (it can disable accounts)?
  2. If yes, is it on the Inactive and Emergency Termination action lists?
  3. If no, what disables or reviews access for a leaver, and who owns it?

There is also an organisation setting that controls whether a lifecycle change honours a source's own "can enable" feature flag. It was off. Know its value before you assume lifecycle actions are skipped for sources that cannot enable accounts.

Joiner, mover and leaver data flowHR changes are imported hourly, evaluated by rules, and drive directory and application changes; the login and email are written back to HR.HR systemISCDirectories and applicationsHR records the eventhire, change or terminationScheduled importpulled every 60minutesEmployee IDknown?Create identityjoinerUpdate identitymover or leavernoyesRules enginelifecycle state, birthrightroles, attribute syncJoiner onlytemporary credentials, welcome mail, credentialsto manager, IT requirements formCreate, update, disabledirectory and applicationconnectorstrigger connectorsUnique login and emailaggregated back into ISCwrite back login and email
General JML. Redrawn from the design's process figures for joiner, mover and leaver. Movers and leavers take the update branch; the rules engine decides what changes on each target.

The automation layer: events, schedules and forms

All JML behaviour sat in workflows reacting to platform events. The trigger types used:

TriggerFired byUsed for
Identity attributes changedA filtered change to one or more attributesLeaver off-boarding when an end date is set, mover on location change, HR writeback, email-change sync to an app
Post-provisioningA completed provisioning plan, filtered by target source and operation (create, enable)Joiner onboarding and rehire after the directory account exists
Form submittedA specific form definitionManager completes the joiner, mover or leaver form
Scheduled (cron)A timeWriteback sweep, a SaaS disable job, the daily leaver job, an "update the identity system" notice
External HTTPAn authenticated callA welcome email after account creation in a database application
Interactive process launchedA launcher in the user portalCustom access-request forms (see the forms page)

Filters use JSONPath over the event payload. A leaver trigger watches for cloudLifecycleState changing to inactive; a rehire trigger watches the same attribute going from inactive to active or preJoiner. These filters are exact, so keep the attribute names and values stable.

Joiner

  1. HR creates the person. The design asked for at least 14 calendar days between request and start date.
  2. The HR source aggregates hourly. ISC creates the identity, computes lifecycle state, login name and email, and moves the lifecycle to preJoiner once the start date is within the processing window.
  3. The lifecycle action enables the directory account. Creation happens in the user's local time zone, 14 days before start.
  4. Directory provisioning sets the identity-derived attributes, places the account in the right organisational unit, adds baseline groups and generates an initial password.
  5. A post-provisioning workflow fires on the committed directory create. It waits (a sleep step) so downstream sync can settle, then:
  • emails the line manager the credentials and a link to the IT requirements form,
  • notifies local IT, the HR contact, the finance contact and the central team,
  • writes the email and login name back to HR (see the identity page).
  1. When the manager submits the form, a form-submitted workflow branches on the answers (for example which applications are needed) and sends mails to the ITSM mailbox that opens tickets. Each branch is a comparison step, so the workflow grows with every application option.

Joiner caveats

IssueDetailMitigation
No visibility of form completionISC could not tell whether the pre-joiner form had been filled in, so it could not re-trigger when the manager changed before the start dateBuild a re-send path: an externally triggered workflow or a manually run job. We resent forms by hand dozens of times
Wrong manager in HRHR tags the wrong manager when creating the record; the form goes to the wrong personFix the data in HR first, then re-send. Do not paper over it in ISC
Manager does not know the processManagers on leave, or never told, never complete the form, so the equipment is not released and access is not requestedCommunication and training before go-live; reminders; delegate approval
Duplicate display namesThe directory create failed on a duplicate distinguished name or UPNUnique login names, unique UPN, a retry path (re-provision from ISC after fixing)
Pre-existing accountsPeople who joined before go-live had accounts created by the old tool and needed groups re-pushedA "new joiner" flag in the identity (hire date compared to today) so legacy cases are handled separately
Audit evidenceThe audit process needed an ITSM ticket per joiner; no manager response meant no ticketCreate the ticket when the form is launched, update it when the form is submitted

Leaver

The leaver design had three coordinated parts.

  1. Reminders and the manager form. When an end date is set or changes, a workflow compares it to now and starts a reminder sequence: weekly reminders to the manager until a week before separation, then daily, with the country HR contact copied. The manager completes a leaver form (asset recovery, out-of-office text, who gets the mailbox).
  2. The termination moment. At 22:00 local on the end date the lifecycle becomes inactive. The Inactive action disables the account on the listed sources. The directory disable policy moves the account to a disabled container, hides it from the address list and stamps a note.
  3. Aftercare. A daily scheduled workflow finds leavers by their next-processing date through a search call and loops over them to finish off-boarding. Notifications go to the central team, HR, the finance contact, local IT and the manager.

Leaver caveats

  • Timing and time zones. Automated tasks run in the user's local time after midnight; the cut-off is 22:00 local on the end date. A last day entered wrongly in HR (or an earlier "IDM disable date" than the stated end date) disables the person early. Several tickets were exactly this.
  • Group removal is abrupt. On the first day of production the disable removed all groups, including the one that must always remain (the cloud-sync group), cutting a user off from mail who was still active in HR. Fix: keep a list of groups that are never removed, and delay removal of the rest for a number of days after the end date. The design said "seven days after termination only the base groups remain"; build it that way.
  • Re-adding groups on rehire is not automatic. Previously removed groups do not come back; users must request them again. State this in comms.
  • Mailbox side effects need a home. Converting the mailbox to shared, setting an out-of-office message, assigning a leaver licence and hiding from the address list were scripted steps in the legacy tool. Inventory them, decide which remain scripts, which become group-driven, and which become workflow steps. Do not assume ISC does them.
  • Contractors and vendors. Vendor contract expiry arrives as a disable request, not an HR event. Provide an intake and an approval path.
  • Extended access. HR sometimes asks to extend access after a recorded end date (handover, garden leave). The only clean path is to change the disable date in HR before it passes. Tell HR.

Mover

A mover is any change in a mapped attribute, but only some changes need action.

ChangeWhat happens
Location, region or countryA mover workflow fires, the manager gets a form (asset return, new move date), the directory moves the object to the new container, and the parties are notified
First or last nameHR changes it; the directory logic generates a new email, UPN and aliases, keeps the old address as an alias, and notifies. Users may need to sign in again because the UPN changed
Title, department, functionSynced to the directory only if the attribute sync for that attribute is on
Move to or from a regional delivery centreKept as a manual process inherited from the old tool: new account, new mailbox, old account disabled. The user deliberately gets no access to previous mail or profile
Return from maternity leave to a new roleNot detected as a mover by location logic, so no notification or access change reached local IT. Decide whether role changes should raise a mover form

Attribute sync is the mover engine

ISC pushes only the attributes you enable in the source's attribute sync configuration. In the directory source about 8 attributes were on and 9 were off (names, display name, phone, employee ID, country code, user type, department were off at the end). This is by design: sync what the application team asked for, nothing else.

Rehire

Rehire is a lifecycle transition from inactive back to active or preJoiner for an identity that already exists.

  • The directory account is re-enabled and moved out of the disabled container.
  • A new initial password is generated and sent to the manager.
  • Baseline groups return; business groups do not (see above).
  • The workflow variant for a second directory domain triggers on enable rather than create.
  • Rehire workflows showed many canceled executions. Investigate cancellations before accepting them as normal; ours were a mix of expected branches and unfinished waits.

Notifications and ITSM routing

Mail was the glue between ISC and everything else. Treat notification design as its own workstream.

ConcernGuidance
Sender identityProduction mail came from an internal no-reply address; sandbox came from the vendor's default. Tests in sandbox must never go to production distribution lists
Ticket creationISC created ITSM tickets by sending mail to a mailbox with a fixed subject convention. The ITSM side parsed the subject to route to the right queue. Changing the subject breaks routing
Routing by locationAfter go-live the subject gained the location so tickets could be assigned to the right local team. Add routing keys early
Who gets whatKeep a matrix of event by audience (manager, initiator, HR, finance, local IT, central team, ITSM). After go-live the matrix changed: local IT and HR also received the filled form details; central support got a "user account disabled" notice; credentials were restricted to the manager only
Credentials in mailSending credentials to several parties was removed. Send to the manager only, force a reset on first sign-in, and note it in the SOP
TemplatesThe tenant ended with about 60 notification templates. Name them by event and audience

Hypercare showed that most "SailPoint is broken" tickets from regions were notification gaps: a distribution list not updated, a contact wrong in the lookup table, a manager who never received the form, or an ITSM queue not receiving mail. Test every mail path end to end with real recipients before go-live.

Nightly validation during rollout

For the first weeks of production the team exported a joiner list and a leaver list each night from search (display name, email, created date, lifecycle state, source account count, start or end date, manager) and compared them to HR. Source account count was a cheap health signal: a joiner with fewer accounts than the baseline had a provisioning gap. This took an hour a day and caught problems before users did.

Design cautions

  • Wait steps and form steps leave many executions in Executing or Canceled. Monitor the count, and know what a normal ratio looks like.
  • A mover or joiner workflow branching on a dozen application flags becomes unmaintainable. Prefer data-driven branches (a form that lists requested access items) over one comparison step per application.
  • Do not trigger a workflow from an attribute you also edit for testing. We kept "manual trigger" workflows keyed to a department change; they are a hack and should be disabled once real triggers work.
  • Put the scheduled catch-up next to every event trigger. Events are lost, and the sweep repairs them.

Actions

  • Enumerate lifecycle states and write down each state's account actions and source list.
  • Add "update the lifecycle source list" to every source onboarding checklist.
  • Build the re-send mechanism for forms before go-live.
  • Define groups that are never removed and delay the removal of the rest.
  • Inventory legacy mailbox and licensing scripts and assign each a new owner.
  • Build the notification matrix and test every path end to end.