Share all details about your problem, including any error messages you may have received.
We user a certification event when a user is considered a mover, as the new manager needs to review the access its employee has.
We want to remove bundles when this happens, and leave only EntitlementGroups to certified, however, creating a provisioning plan in the exclusion rule to remove the roles, will end in a DB error: how can I solve this DB issue: [Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): EntitlementGroups]
Has anyone had a similar ask in the past?
once again, the error I’m getting is: An unexpected error occurred: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [sailpoint.object.EntitlementGroup#
“Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): EntitlementGroups”
is caused because of executing a provisioning plan inside the exclusion rule. The reason this fails is because the exclusion rule runs while SailPoint is still processing certification items within an active Hibernate session. Trying to modify the same identity (like removing roles) during this time can lead to session conflicts, since those objects are still being tracked and used.
Instead of provisioning directly in the exclusion rule, I’d suggest separating the two steps:
Use the exclusion rule only to exclude the roles from certification (like removing Bundle items from the items list).
Then handle the actual removal of roles via provisioning in a separate rule or flow — such as a post-certification rule, a workflow step, or an identity lifecycle event rule (for example, triggered by a move).
This should prevent the session conflict and allow both certification and provisioning to work as expected.
Hope this helps — let me know how it goes if you try it this way.
If I would want to use the exclusion rule, aren’t any recommended locking options at hand that I could use? Reason for asking is, I’d like to avoid creating another WF for this item, even if I understand it may be better to separate the processes.
I understand your intention to avoid adding another workflow.
As far as I know, there’s no supported locking mechanism available within the exclusion rule context. Even if we try to introduce a delay or flag, the session-level conflict would still occur, and there’s no safe way to lock or pause the transaction at the rule level.
For some reason, after I used a lock and saved and committed the transaction, the rule ended without error, however, the role and the entitlements that it contains remained on the identity.
However, in the certification, all looks good, the role does not appear in the list of exclusions (as expected and wanted), and only the entitlements I wanted were included, however, I don’t fully understand why the role hasn’t been removed this time.
Did they remain on the identity after a refresh? I believe that if a refresh including roles hasn’t been done yet, you wouldn’t necessarily see the updated information.
Apologies for late reply, I refreshed the identity before attempting to trigger a certification, and after the mover certification event was triggered. The role still remained on the identity.