Skip to main content

Identity Attribute Context in Transforms

Overview​

Transforms ship with the Apache Velocity template engine, which allows a transform to reference, transform, and render values passed into the transform context.

The following variables are available to the Apache Velocity template engine when a transform is used to source an identity attribute:

VariableTypeDescription
identitysailpoint.object.IdentityThis is the identity the attribute promotion is performed on.
attributeDefinitionsailpoint.object.ObjectAttributeThis is the definition of the attribute being promoted.
oldValueObjectThis is the attribute's previous value.

For available methods on these objects see our Rules Java Docs.

Examples​

These examples will help you learn what you can do with the identity context.

info

You can use $identity, as well as the other variables, in all transform operations.

Get the ID of the identity's manager​

You must use a firstValid. If the identity does not have a manager, getManager() returns null.

{
"type": "firstValid",
"attributes": {
"values": ["$identity.getManager().getId()", "no manager exists"]
}
}

Get the custom attribute of the identity's manager​

You must use a firstValid. If the identity does not have a manager, getManager() returns null.

{
"type": "firstValid",
"attributes": {
"values": ["$identity.getManager().getStringAttribute('country')", "no manager exists"]
}
}

Get manager status of the identity's manager​

This example would get the status of whether or not the identity's manager is currently actually a manager.

{
"type": "static",
"attributes": {
"value": "$identity.getManagerStatus()"
}
}

Get an identity's accounts​

This example would get an identity's various associated source accounts.

{
"type": "static",
"attributes": {
"value": "$identity.getLinks()"
}
}

Get a comma separated list of account names from an application/source​

This is the velocity logic of the transform:

/* Loop through accounts returned from get accounts by application id */
#foreach($account in $identity.getLinksByAppIdOrName("2c918088814e6a610181686b56977fa8",null))
#if($foreach.index + 1 != $identity.getLinks().size()) /* If we are not on the last item, include a comma */
$account.getNativeIdentity(),
#else
$account.getNativeIdentity()
#end
#end
{
"type": "static",
"attributes": {
"value": "#foreach($account in $identity.getLinksByAppIdOrName(\"2c918088814e6a610181686b56977fa8\",null))#if($foreach.index + 1 != $identity.getLinks().size())$account.getNativeIdentity(),#else$account.getNativeIdentity()#end#end"
}
}

Notes​

caution

If you assign a variable with the identity attribute context, doing so will cast the type to a string.

For example, you may do this if you wanted to assign the identity's manager object to a variable and then get additional data from it.

Invalid
{
"type": "static",
"attributes": {
"manager": "$identity.getManager()",
"value": "$manager.getStringAttribute('country')"
}
}
Valid
{
"type": "static",
"attributes": {
"managerCountry": "$identity.getManager().getStringAttribute('country')",
"value": "$managerCountry"
}
}