Prior to IdentityIQ release 4.0p7, multiplex created application objects were unique, as they did not have a connector or featuresString set on the Application tag.
Example 1: Non multiplexed created application
<Application
connector="sailpoint.connector.JDBCConnector"
featuresString="EXAMPLE"
name="NotMultiPlexed"
type="JDBC"
...
</Application>
Example 2: Multiplexed created application
<Application
name="NotMultiPlexed 2"
type="JDBC"
...
</Application>
These multiplex created applications were never intended for use in aggregation, but instead were used to certify against.
Starting with IdentityIQ 4.0p7 and later, the default behavior was changed, via ETN 5714, in that multiplex created applications will mirror the original application which created it. For example, the multiplex created application will have both connector and featureString attribute values. If one wishes to go back to the pre 4.0p7 behavior, or desires to modify the application during the creation process, the following needs to be done:
Add the following xml to your multiplex application (in the Attributes Map):
<entry key="proxyGeneratorRule" value="generateMultiplexApplicationsRule"/>
(In this example, the name of our rule is generateMultiplexApplicationsRule)
Import the attached sample "generateMultiplexApplicationsRule" rule.
Note: This sample rule creates an application with the same information as pre IdentityIQ 4.0p7. You may edit as needed.
HI,
I added this rule to the application but it does not seem to be executed during the aggregation to create the multiplexed applications
Please help
The rule worked fine after I deleted the existing apps. It seems to only create but not update the app..
This only seem to create the application but when there is an update to the application attribute, the application does not get updated.
Is there a flag to use?
What is not updated the are extra application attributes... I can set them within GenerateMultiplexApplicationsRule.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Rule language="beanshell" name="GenerateMultiplexApplicationsRule">
<Source>
<![CDATA[
import sailpoint.object.Application;
import sailpoint.object.Schema;
import sailpoint.tools.xml.XMLObjectFactory;
Application app = new Application();
app.setType(sourceApplication.getType());
XMLObjectFactory f = XMLObjectFactory.getInstance();
Application current = context.getObjectById(Application.class, sourceApplication.getId());
Application clone = (Application)f.clone(current, null);
List schemas = new ArrayList();
schemas = clone.getSchemas();
if (schemas != null) {
for (Schema s : schemas)
s.setId(null);
}
app.setSchemas(schemas);
app.setCorrelationRule(sourceApplication.getCorrelationRule());
app.setCreationRule(sourceApplication.getCreationRule());
app.setManagerCorrelationRule(sourceApplication.getManagerCorrelationRule());
app.setCustomizationRule(sourceApplication.getCustomizationRule());
app.setName(generatedAppName);
String [] appNameStrArray = generatedAppName.split(" - ");
String appID = appNameStrArray[0];
if(appID!= null){
app.setAttribute("Application Inventory ID",appID.trim());
}
// these are not updated the after the apps are created
app.setAttribute("Business Process Type","Business Application");
app.setAttribute("Included in Leavers Process","true");
app.setAttribute("AccountIncludesCertOwner","true");
app.setAttribute("Included in People Leader and Orphan UAR","true");
app.setAttribute("Included in Transfer UAR","true");
return app;
]]>
</Source>
</Rule>
In order to update definitions, you'll have to create a rule or task that iterates over the created applications (identified by the proxy pointing to the parent application) and copies the necessary details.
One exception, though: the schema! There is a hidden option on the aggregation task to update the schema from the parent application to the generated applications.
How can we set dynamic values to application attributes in proxy generator rule. I have the values stored in database which I want to populate in application level attributes during multiplexing.