Knowledge Article
Best Practices: Provisioning Multi-Valued Attributes
Author
neil_mcglennon
SailPoint
Overview
During provisioning or when creating new accounts, sometimes you need to set multi-valued attributes. For example, if you are creating an LDAP account, you might need to set a value of an 'objectclass' attribute to contain multiple values pertaining to the class(es) of the user account you are creating.
IdentityNow has native support for multi-valued account attributes at provisioning time, and this is a nice alternative to having to implement rules to generate multi-valued array lists. This document illustrates how you might configure this feature for your implementation.
In order to configure multi-valued account attributes, you need to leverage the Source Provisioning Policies APIs, as it requires some advanced configuration settings which are not currently available in the IdentityNow user interface.
Note: This document assumes you are familiar with updating source account profiles via REST API.
Configuration
First, make an account profile attribute multi-valued by adding the following:
"multi": true,
This enables the attribute to be defined as a multi-valued attribute, which is essentially a list, or array, of string values.
Second, set the mapping or transform to return a delimited list of values. This can be done many ways, including concat transforms, generator rules, or even just static transforms. For example, here is a static transform which returns a list of two values, User and Person, which are delimited by a comma. You can use other (non-comma) delimiters as well.
"transform": { "attributes": { "value": "User,Person" }, "type": "static"},
Last, inform the account profile attribute how to parse the delimited list of values. This is done by specifying a cloudDelimiter property in the attributes section of the account profile attribute, as follows:
"attributes": { "cloudDelimiter": ","},
Putting these steps together, your account profile attribute might look something like this:
{ "attributes": { "cloudDelimiter": ","}, "isRequired": false, "multi": true, "name": "objectclass", "transform": { "attributes": { "value": "User,Person" }, "type": "static"}, "type": "string"}
This example takes the value of "User,Person" and converts it to a multi-valued list of "User" and "Person."
Troubleshooting
If your multi-valued account attributes are not working as expected, verify the configuration via Source Provisioning Policies REST APIs:
- Verify
multiis present and set totrue. - Verify
transformis present and returning a delimited-list of values. - Verify
attributesis present and contains acloudDelimiterrepresenting the character delimiting the values returned fromtransform.