Background:
It’s reasonable to expect most companies do not have a unified workforce management source. In the case for non-employees wether it be Contractors or Interns, there’s a general contract for conversions wether it be Contractor to Full-Time, and in rare cases the inverse. In these scenarios, different sources are used to aggregate worker types and thus requires multiple identity profiles to onboard each member into Sailpoint. The challenge with Sailpoint then becomes a problem with identity profile priorities and no recourse for transferring an identity from one identity profile to the other.
Problem:
In my case, ADP is our authoritative source for Full-Time Employees while Contingent workers are tracked in another source. Since Identity profiles have a 1:1 relationship to sources, the only recourse would be to invest significant engineering resources into building and maintaining a database that effectively aggregates all authoritative sources and internally draws correlation between workerTypes and their progression within the workforce to preserve a Sailpoint identity. This is not ideal.
As for the current state, the problem that we’re facing can be seen in the following:
Explaination:
John Doe starts as a Contractor and is onboarded into sailpoint with the userID: OID-A. At some point, he’s converted to a Full-Time employee (FTE), but because FTE’s are sourced from ADP, a new sailpoint user is created with userID: OID-B. This results in a duplicate identity in Sailpoint and often results with the other being disabled. While the duplication is unavoidable within this architecture, there’s no method to transfer the access history from one sailpoint user to another. Therefore the access history will be reset upon the new start date although it’s the same person.
Other concerns:
In this example, at some point the “stale” record would be marked as terminated since the previous work assignment has expired. This especially applies to the FTE > CON conversions where in ADP we have an FTE that is terminated (cannot delete from ADP), however he’s an active contractor. We can’t necessarily “filter” terminated identities from ADP so-as-to prevent them from deleting their user object in Sailpoint and to maintain the identity for historical purposes as “terminated” to follow-up and verify off-boarding tasks are completed. So in sailpoint, both records are present and when requesting access, users will see both despite not knowing which is stale.
Recommendations \ Feature Request(s)
- Feature #1 - to promote conversions for correlated identity profile identities:
When an identity is correlated through multiple identity profiles, provide an option to transfer access history and components to the active record. It would be ideal to allow conversions from one identity profile to the other so-long as there’s a persistent identifier (i.e. employeeNumber or email) that permits the override to take place and whichever direction the core identity and access history is preserved. This may replace the OID of the new record with the old and would allow for the stale record to be deleted or be complemented by #2. The primary goal would be to provide a unified solution to customers for converting identities wether they have multiple sources or not. The latter is simply a huge undertaking that some costumers may not be able to afford.
- Feature #2 (required) - to flag \ hide duplicate identities:
This would significantly improve QoL for both admins and users by enabling a feature to hide \ ignore identities to request on behalf of or to eliminate confusion for records that are duplicate and have both active \ terminated states. Could be accomplished by a simple “Tag” or allowing for an API to modify an attribute that hides the identity. This compliments Option 2.
Currently in planning (needs more urgency)
Hide terminated users when requesting access - Discussion and Questions - SailPoint Developer Community Forum
https://ideas.sailpoint.com/ideas/GOV-I-1864
Without these features, we’re left with the following options
This requires that all Contractors, Interns, and Employees be maintained within the same source. In this case, PeopleOps would need to be responsible for tracking all workers from these workerTypes in ADP and transition workers internally. This is not a surefire solution but would be an ideal model, however requires a lot of pull, time, and effort to reprioritize the other organizations workstreams.
This requires that we accept the risk associated with conversions for the current design and compensate for the deficiencies by triggering a recertification of all access items for the work assignment. This does not however solve for the duplication \ presence of stale objects as they would remain visible to both Admins and Users.
Create a central database instead of aggregating Contractors, Interns, and Full-Time employees from separate sources. This would require extensive development to account for all worker transitions and to support operations, triggers, and workflows for existing worker management. Not ideal, and requires rigorous testing and maintenance to ensure the integrity of this consolidated authoritative source.
Synopsis
There’s little to be desired for the core feature limitations when it comes to converting identities, especially if they belong to separate authoritative sources. It would be extremely helpful to know if others have faced these design challenges and came up with a viable solution or support the need for the desired features mentioned above. I am otherwise relatively new to the product, however the community forums, professional services (third-party), and documentation have lead me to the above problem statement.