Resolution
When testing Lifecycle Manager features in development with a provisioning environment that is not fully configured, simulated provisioning can help speed the testing process. Access Governance Suite versions 5.2 and higher include a TestProvisioningConnector that can be used for this simulation.
Execute these steps to implement simulated provisioning:
- Create an application definition whose connector is the TestProvisioningConnector (see example below).
- Include each application for which this simulated provisioning is to be done in a <ManagedResource> tag. (In version 5.2p1 and earlier, these are encapsulated in a <ManagedResources> section; beginning with release 5.2p2, the <ManagedResources> tag is no longer valid and these entries are added directly within the <ProvisioningConfig> section.)
- Include logic in the <PlanInitializerScript> to set the provisioning result status into the AccountRequest's result status. A committed status will cause the changes to be persisted to the Identity, Link, etc. Other statuses can be set through the PlanInitializerScript to test failures, retries, etc. The available provisioning status messages are documented in the Javadocs for the sailpoint.object.ProvisioningResult object (found in [iiqhome]/doc/javadoc/sailpoint/object/ProvisioningResult.html).
The application definition should look something like this:
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE Application PUBLIC "sailpoint.dtd" "sailpoint.dtd"><Application name="Provisioning Application" connector="sailpoint.integration.TestProvisioningConnector" type="XML" featuresString="PROVISIONING"><Schemas><Schema objectType="account" identityAttribute="name" includePermissions="true"><AttributeDefinition name="name" type="string" /></Schema></Schemas><ProvisioningConfig saveProvisioningRequests='true'><ManagedResources> <!-- This tag omitted for version 5.2p2+ --> <ManagedResource name="Active_Directory"><ApplicationRef><Reference class="sailpoint.object.Application" name="Active_Directory" /></ApplicationRef></ManagedResource></ManagedResources> <!-- This tag omitted for version 5.2p2+ --><PlanInitializerScript><Source> import sailpoint.object.*; import sailpoint.object.ProvisioningPlan.AccountRequest; import sailpoint.object.ProvisioningPlan.AttributeRequest; import sailpoint.object.ProvisioningPlan; import sailpoint.object.ProvisioningResult; import sailpoint.integration.TestProvisioningConnector; List accountRequests = plan.getAccountRequests(); for (AccountRequest acctReq : accountRequests) { acctReq.put(TestProvisioningConnector.ARG_RESULT_STATUS, ProvisioningResult.STATUS_COMMITTED); }</Source></PlanInitializerScript></ProvisioningConfig></Application>