Share all details about your problem, including any error messages you may have received.
I am able to Provision and Revoke Entitlements. However I could see that the request Executing Status goes in to Verifying state (Which is expected Behavior). However this move to complete state once the “Perform Identity Request Maintainance” Task is triggered. The question is how can I make my request complete as soon as provisioning Task is completed.
To move the status of an Identity Request from “Verifying” to “Completed,” two actions need to be happen.
Account Aggregation: If you configure the “Get Object” HTTP operation, this will facilitate single account aggregation. This updates the link record in IdentityIQ with the latest State.
Run Perform Identity Request Maintenance: The “Perform Identity Request Maintenance” task, which runs automatically (typically around 1 AM).However, to bypass the automatic schedule and ensure the request transitions to “Completed” as soon as the provisioning task is finished, you can create an After Provisioning Rule that scans the Identity Request and programmatically updates its status to “Completed” as soon as the provisioning process is complete.
You can add the below logic in after provisioning which will scan the identity request.
Attributes args = new Attributes();
IdentityRequestProvisioningScanner scanner = new IdentityRequestProvisioningScanner(context,args);
scanner.scan(identityRequestID);
Thanks for the suggestion, Just wanted to know how can I extract / get identityRequestID in AfterProvisioning Rule? I see Plan, but how can I extract that?
Mean while I was able to get the identityRequestId, however I still see that that Request Execution status is still in Verifying state, I am trying to check it and debug.
After provisioning rule should include the IdentityRequestProvisioningScanner, which will handle the identity request maintenance for the specified identity request.
if (plan != null) {
Attributes args = new Attributes();
IdentityRequestProvisioningScanner scanner = new IdentityRequestProvisioningScanner(context,args);
ProvisioningResult provisioningResult = plan.getResult();
for (AccountRequest accountRequest : plan.getAccountRequests("Application Name")) {
if(accountRequest != null && accountRequest.getResult().getStatus().equalsIgnoreCase("Committed")){
String identityRequest = plan.get("identityRequestId").toString();
IdentityRequest ir = context.getObject(IdentityRequest.class,identityRequest);
scanner.scan(ir);
}
}
}