IdentityNow Transforms - Lookup
The transform documentation listed here is outdated and is nonger actively maintained. Please refer to https://developer.sailpoint.com/idn/docs/transforms for IdentityNow Transform documentation.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Hi @hari_patel
Hope you're doing great.
We're planning to use this lookup transform, to format incoming data and pass it to downstream apps. Is there a limit on the size of the table we define in this transform (We may need to have 500-1000 rows in the table). Also, If there is a way of defining a table without size limit in IDN and having the transform do lookup from that table, I will follow that approach.
Thanks in advance.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
SailPoint recommends keeping the table to be 100 entries or less. While there are technically no hard size constraints on the number of keys and values, the larger these objects are they more difficult to maintain and use, and larger tables can slow down transform fetching and calculation.
We have seen customers have a 1000 or more. Its not ideal, but it will work... slower.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@neil_mcglennonDoes the lookup transform perform like a hash table or a switch statement? Also does it need to be loaded for each user or is it loaded one time then applied to all of the users?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Hi @neil_mcglennon ,
I need to use this transform and check if the value is empty, otherwise I use default. It seems not to be working. Do you have any idea about how to do it ?
Thanks.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Same here. I would also like to have empty-string "" or NULL or "empty_or_null" as an option. How do I do that? That doesn't seem like a far fetched feature.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Hi @Florian81 ,
I finally used the « Static » type transform with the « firstValid » option. Basically, you specify your source attribute and, if not set, you can define a static value, and compare on it on the « value » attribute.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Thank you for your insight. Seems like a feasible workaround. I would prefer though, if we had the option to do it "right" within the lookup-table.
my 2 cents
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
If you're interested, here's what I did :
{
"name": "<name_here>",
"type": "static",
"attributes": {
"<attribute_name_here>": {
"attributes": {
"values": [
{
"attributes": {
"sourceName": "<source_name_here>",
"attributeName": "<attribute_name_here>"
},
"type": "accountAttribute"
},
"0"
]
},
"type": "firstValid"
},
"value": "#if($<attribute_name_here>==0)#Value1{else}Value2#end"
}
}
Keep me posted if you find how to do it with Lookup transform
Thanks.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@Florian81, @khalilgahbiche
You can use a combination of first valid and lookup transforms.
You can use your first valid transform as your input into the lookup table, here is an example:
{
"attributes": {
"input": {
"attributes": {
"values": [
{
"attributes": {
"attributeName": "attribute1",
"sourceName": "Source1"
},
"type": "accountAttribute"
},
"0"
]
},
"type": "firstValid"
}
,
"table": {
"0": "Value 1",
"default": "Value 2"
}
},
"id": "Lookup with first valid input",
"type": "lookup"
}
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Hi @Irshaad_Laher_WS ,
I'll definitely test it, and if it works, it'll be awesome
Thanks for sharing this.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
Is there a possibility to use $input in default key in the table like "default": "$input". I have tried and it is not considering the $input value whenever the $input returns other than the key in the table.
Any suggerstions?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@sureshkumar_p123Can you define the logic for input in the default value? In the example below, the accountAttribute transform type can be changed to fit your use case.
{
"attributes": {
"table": {
"default": {
"type": "accountAttribute",
"attributes": {
"attributeName": "location",
"sourceName": "PeopleSoft"
}
},
"512": "Austin",
"281": "Houston",
"214": "Dallas",
"210": "San Antonio"
}
},
"type": "lookup",
"name": "Test Lookup Transform"
}
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@ethompson Thank you for sharing, I have tried with Identity attribute on default which gives an error (Lookup table has no entry for input) when there is a new value which is not part of lookup table.
I am expecting the transform to return the department value by default from identity attribute when table key is not matching.
Here is the transform:
{
"name": "Dept Transform",
"type": "lookup",
"attributes": {
"input": {
"type": "replaceAll",
"attributes": {
"input": {
"attributes": {
"values": [
{
"attributes": {
"name": "department"
},
"type": "identityAttribute"
},
"None"
]
},
"type": "firstValid"
},
"table": {
"[ ]": ""
}
}
},
"table": {
"IT": "IT Team",
"ACC": "Accounting",
"None": "",
"Default": {
"type": "identityAttribute",
"attributes": {
"name": "department"
}
}
}
},
"internal": false
}
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@sureshkumar_p123 Make sure default is all lowercase. Is this transform being used on an Identity or Account attribute? It is not recommended to use the identityAttribute type for other Identity Attributes due to its multi threaded nature. I would recommend using accountAttribute type directly or if there is a transform on the department attribute, using reference in that case.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@ethompson I have made the changes and it works perfectly. Thank you again!! Below is the transform for the reference.
{
"name": "Dept Transform",
"type": "lookup",
"attributes": {
"input": {
"type": "replaceAll",
"attributes": {
"input": {
"attributes": {
"values": [
{
"attributes": {
"id": "Generate department"
},
"type": "reference"
},
"None"
]
},
"type": "firstValid"
},
"table": {
"[ ]": ""
}
}
},
"table": {
"IT": "IT Team",
"ACC": "Accounting",
"None": "",
"default": {
"attributes": {
"id": "Generate department"
},
"type": "reference"
}
}
},
"internal": false
}
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@sureshkumar_p123 I have a similar requirement, to look for different attributes on the same source and do lookups based upon the first valid result. Wrote something but I am getting 403 forbidden. Can you please help here
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Content to Moderator
@aakanksha The transform looks good, seems issue is the credential to create a transform. Are you using Admin credential to create the transform?