Share all details related to your problem, including any error messages you may have received.
Dear community,
I have requirement to change attribute value form upper case to lower case while aggregation from target.
How I can achieve this. This is an AD connected application. One of the group attribute needs this chnage.
You could do this by correlation rule for your application
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Rule language="beanshell" name="Correlation" type="Correlation">
<Description>Identity Correlation Rules are used to find identities to which new accounts can be attached.
A correlation rule must return a Map with one of the specified Return arguments.</Description>
<Signature returnType="Map">
<Inputs>
<Argument name="log">
<Description>
The log object associated with the SailPointContext.
</Description>
</Argument>
<Argument name="context">
<Description>
A sailpoint.api.SailPointContext object that can be used to query the database if necessary.
</Description>
</Argument>
<Argument name="environment" type="Map">
<Description>
Arguments passed to the aggregation task.
</Description>
</Argument>
<Argument name="application">
<Description>
Application being aggregated.
</Description>
</Argument>
<Argument name="account">
<Description>
A sailpoint.object.ResourceObject returned from the
collector.
</Description>
</Argument>
<Argument name="link">
<Description>
Existing link to this account.
</Description>
</Argument>
</Inputs>
<Returns>
<Argument name="identityName">
<Description>
The name of an Identity object.
</Description>
</Argument>
<Argument name="identity">
<Description>
A fully resolved Identity object if the rule wants
to do its own queries to locate the identity.
</Description>
</Argument>
<Argument name="identityAttributeName">
<Description>
The name of the extended attribute that can be used
to locate an existing identity.
</Description>
</Argument>
<Argument name="identityAttributeValue">
<Description>
The value of the named extended attribute that can be used
to locate an existing identity. This attribute is used
together with the identityAttributeName argument.
</Description>
</Argument>
</Returns>
</Signature>
<Source>
Map<String, Identity> returnMap = new HashMap<>();
Identity result = null;
String userName = account.getStringAttribute("User Name");
List<Identity> identities;
if (userName == null) {
log.debug("User Name was null! Skipping...");
} else {
String originalString = account.getAttribute("User Name");
account.setAttribute("User Name",originalString.toLowerCase());
identities = searchIdentities(context, name);
if (identities.size() == 1)
result = identities.get(0);
}
if (result == null)
log.debug("No match found!");
else
returnMap.put(IDENTITY, result);
return returnMap;
</Source>
</Rule>
I would say totally avoid these type of customization .writing any rule t will be expensive as theses rules will get executed for each and every group and also for each and every users during aggregation.
better ask them to make changes in AD itself if that don’t have huge impact .