Hi all,
I’m working with a Web Services SaaS connector in SailPoint IdentityNow / ISC, using GraphQL as the underlying API.
The target application does not support ADD or REMOVE operations for entitlements.
Instead, it only exposes a single mutation:
mutation UpdateUser
This mutation expects the full list of permission groups every time.
The problem
When SailPoint performs an Add Entitlement, it sends only the new value.
Because the API uses UpdateUser, the result is that:
-
Existing permission groups are overwritten
-
Instead of merging, the user ends up with only the new entitlement
Example:
-
Current groups:
[1] -
SailPoint adds group
7 -
API receives:
[7] -
Result: group
1is lost
While the desired outcome is:[1, 7]
Limitation
In a classic Web Services connector, I would solve this using a Before Provisioning Rule to:
-
Read current entitlements
-
Merge (ADD) or filter (REMOVE)
-
Send the full updated list back
However, the SaaS Web Services connector does not support Before Provisioning Rules.
Question
What is the recommended / best-practice approach in IdentityNow to handle this pattern?
Specifically:
-
How do you implement ADD / REMOVE semantics when the API only supports a SET via UpdateUser?
-
Is this typically solved via:
-
A Workflow (Read → Merge/Filter → Update)?
-
Transforms / JSONPath logic?
-
A single provisioning workflow handling both ADD and REMOVE?
-
Any examples, patterns, or documentation references would be greatly appreciated.
Thanks in advance!
Example scenario
-
Jan needs role1 in NIS.
SailPoint provisions role1 via GraphQL using theUpdateUsermutation. -
Piet needs role1 in NIS.
SailPoint provisions role1 via GraphQL in the same way. -
Klaas needs both role1 and role2 in NIS.
SailPoint first provisions role1 for Klaas via GraphQL.
Later, when role2 is requested, SailPoint performs an Add Entitlement and sends only role2 via the UpdateUser mutation.
Because the API uses a set/replace mechanism, the result is:
-
role1 is overwritten by role2
-
Klaas now only has role2
At the next update from SailPoint, the same overwrite happens again, causing roles to be lost.
This is not the desired behavior, as Klaas should end up with both role1 and role2.