Hello,
I’m setting up a transform based on a specific match of ID number to set the manager field to null, otherwise, set the manager field based on the data source. case.
However, when the transform is set to " " or null etc., it defaults back to the value passed through from the data source - which I believe is expected behaviour.
If there is a better way to do this within SailPoint, I’m all ears so please do suggest away.
My transform is below:
{
"id": "",
"name": "Transform Example",
"type": "firstValid",
"attributes": {
"values": \[
{
"type": "lookup",
"attributes": {
"input": {
"type": "trim",
"attributes": {
"input": {
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "IDNumber"
}
}
}
},
"table": {
"1111": "",
"default": null
}
}
},
{
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "SupervisorFullName"
}
}
\],
"ignoreErrors": true
},
"internal": false
}
Thanks in advance for any assistance on this, much appreciated.
MattUribe
(Matt Uribe)
April 24, 2026, 2:41pm
2
Consider a static transform with your initial transform, or something like it, nested inside. That way you can evaluate the data from the nested transform and, based on criteria, determine whether or not it should return a value.
{
"id": "",
"name": "Transform Example",
"type": "static",
"attributes": {
"IDNumber": {
"type": "firstValid",
"attributes": {
"values": [
{
"type": "trim",
"attributes": {
"input": {
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "IDNumber"
}
}
}
},
{
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "SupervisorFullName"
}
},
"EMPTY"
]
}
},
"value": "#if(!$IDNumber.equals(\"EMPTY\") && !$IDNumber.equals(\"1111\"))$IDNumber#end"
},
"internal": false
}
By using the VTL in the value field, you can prevent data from being returned in certain cases. In the above example, if there is no value for IDNumber or it’s 1111, then no data is returned. In essence, the attribute will be null.
Thanks, this looks great to fix the NULL issue, and appears to work from initial testing.
It does however set the value to IDNumber if not null, whereas this should be set to the SupervisorFullName value instead.
I guess its that variable used on the end of the value line, can you suggest how that may need to be tweaked to correct that?
Thanks again
Hi Daniel,
Try this…
// If the ID number matches, something, set manager to null
Otherwise, set the manager to the data source value
If the manager is blank or null, it's not doing anything
{
"id": "",
"name": "Transform Example",
"type": "static",
"attributes": {
"IDNumber": {
"type": "firstValid",
"attributes": {
"values": [
{
"type": "trim",
"attributes": {
"input": {
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "IDNumber"
}
}
}
},
"EMPTY"
]
}
},
"supervisor" : {
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "SupervisorFullName"
}
},
"nullValue" : {
"type": "static",
"attributes": {
"value": "",
}
},
"value": "#if($IDNumber && !$IDNumber.equals(\"EMPTY\") && !$IDNumber.equals(\"1111\"))$nullValue#{else}$supervisor#end"
},
"internal": false
}
punna0001
(harish Punna)
April 24, 2026, 3:55pm
6
The issue is that IDNumber is being used for both the condition and the output. Because of that, it returns the ID itself instead of the supervisor.
You need to separate them: use IDNumber only for the condition and return SupervisorFullName explicitly.
Can you please check this:
{
"id": "",
"name": "Transform Example",
"type": "static",
"attributes": {
"IDNumber": {
"type": "firstValid",
"attributes": {
"values": [
{
"type": "trim",
"attributes": {
"input": {
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "IDNumber"
}
}
}
},
"EMPTY"
]
}
},
"SupervisorFullName": {
"type": "firstValid",
"attributes": {
"values": [
{
"type": "accountAttribute",
"attributes": {
"sourceName": "HR Data",
"attributeName": "SupervisorFullName"
}
},
"EMPTY"
]
}
},
"value": "#if($IDNumber.equals(\"1111\") || $SupervisorFullName.equals(\"EMPTY\"))#{else}$SupervisorFullName#end"
},
"internal": false
}
Thank you very much - this worked perfectly. Much appreciated!