Files
developer.sailpoint.com/docs/extensibility/transforms/guides/identity-context.md
darrell-thobe-sp 2cd5ccfc81 Prettified Code!
2024-04-18 10:31:05 +00:00

3.9 KiB

id, title, pagination_label, sidebar_label, sidebar_class_name, keywords, description, sidebar_position, slug, tags
id title pagination_label sidebar_label sidebar_class_name keywords description sidebar_position slug tags
identity-context Identity Attribute Context in Transforms Identity Attribute Context Identity Attribute Context identityContextTransform
transforms
guides
nested
lifecycle
Examples on how you might use the identity attribute context. 5 /extensibility/transforms/guides/identity-context-examples
Transforms
Guides
identity

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:

Variable Type Description
identity sailpoint.object.Identity This is the identity the attribute promotion is performed on.
attributeDefinition sailpoint.object.ObjectAttribute This is the definition of the attribute being promoted.
oldValue Object This 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.

:::warning Invalid

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

:::

:::tip Valid

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

:::