I’m building an access workflow in SailPoint ISC and have a requirement where the access duration should be based on the remaining time until a predefined expiry date, not a fixed duration from the time the role is granted.
The recommended approach would be to grant the role after approval without a removeDuration, then use a Wait Until step based on the expiryDate and perform a second sp:access:manage action to revoke the role. This ensures the access expires at the intended absolute time regardless of approval delays.
So, ISC removes the access at that fixed time regardless of when the approval actually completes.
Instead of the Manage Access action, try using an HTTP Request step after approval and call POST /v3/access-requests with your trigger’s expiryDate directly as removeDate:
That way you don’t need to calculate expiryDate - now at all. ISC handles the sunset on its own at that exact time. No duration math, no long running Wait steps, no second revoke call.
I would suggest to add a Compare Dates check after approval to make sure expiryDate is still in the future before firing the request. If the approver took too long and the window already passed, the API will reject it since removeDate needs to be a future timestamp. Better to catch that early and notify the requester than let it fail silently.