Understanding Transforms in SailPoint Identity Security Cloud

Transforms are helpful in transforming data into our required format or validating data before processing into SailPoint or processing from SailPoint to target applications.

To learn more about transforms have a look on sailpoint offical documentation.

https://developer.sailpoint.com/docs/extensibility/transforms

Below are some use cases for transforms.

1.Build display name by reading first name and last name from the HR System. (performed null check as well)

{

"name": "Transform_HR_System_DisplayName_Kp",

"type": "concat",

"attributes": {

"values": [

{

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "firstname"

}

},

""

],

"ignoreErrors": false

}

},

" ",

{

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "lastname"

}

},

""

],

"ignoreErrors": false

}

}

]

},

"internal": false}

2. Extract first two letters of firstname

{

"name": "HRMS_SubString_first2Letters_fname_KP",

"type": "substring",

"attributes": {

"begin": 0,

"end": 2,

"value": {

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "firstname"

}

}

},

"internal": false

}

3. Extract last 2 letters of the last name

{

"name": "HRMS_SubStrng_Last2Letters_lastname_KP",

"type": "rule",

"attributes": {

"name": "Cloud Services Deployment Utility",

"operation": "getEndOfString",

"numChars": "2",

"input": {

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "lastname"

}

},

"None"

],

"ignoreErrors": false

}

}

},

"internal": false}

4. You receive a country as below , need to return their country code.

India : IN

Netherlands : NL

United States of America : USA

Germany : DE

Canada : CA

Nepal : NP

France : FR

Philippines : PH

{

"name": "HRMS_LookUp_CountryCode_KP",

"type": "lookup",

"attributes": {

"table": {

"India": "IN",

"Netherlands": "NL",

"United States of America": "USA",

"Germany": "DE",

"Canada": "CA",

"Nepal": "NP",

"France": "FR",

"Philippines": "PH",

"United Kingdom": "UK",

"default": "None"

}

},

"internal": false

}

5. We receive mobile number from the HR System but it doesn’t have any country code, use the country from the HR Source and calculate mobile number with the country code.

{

"id": "cf84be09-8f56-4a9a-8c93-22b7daaa92a7",

"name": "HRMS_CountryCode_Kp",

"type": "concat",

"attributes": {

"values": [

{

"input": {

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "countrycode"

}

},

"US"

],

"ignoreErrors": false

}

},

"type": "lookup",

"attributes": {

"table": {

"US": "+1",

"CA": "+1",

"GB": "+44",

"AU": "+61",

"IN": "+91",

"DE": "+49",

"FR": "+33",

"IT": "+39",

"ES": "+34",

"MX": "+52",

"BR": "+55",

"CN": "+86",

"JP": "+81",

"KR": "+82",

"RU": "+7",

"ZA": "+27",

"SA": "+966",

"AE": "+971",

"AR": "+54",

"ID": "+62",

"default": "+1"

}

}

},

" ",

{

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "phone"

}

},

"1234567890"

],

"ignoreErrors": false

}

}

]

},

"internal": false

}

6. You receive a lastname from HR System, but there are chances that some identities didn’t have lastname. How do you handle this?

{

"name": "HRMS_ChkLastname_Kp",

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "lastname"

}

},

""

],

"ignoreErrors": false

},

"internal": false

}

7. Generate email in below format.

Format1 : firstnamelastname@domain.com

Format2: first letter of (firstname) +lastname@domain.com

Format3: employeeID@domain.com

Domain should be calculated based on below:

TCS: @tcs.com

Zudio: @zudio.com

Tanishq: @tanishq.com

Croma: @croma.com

IRCTC: @irctc.com

Format1 is below. Format2 and format3 are similar to that.

{

"name": "HRMS_email_generator_Kp",

"type": "concat",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "firstname"

}

},

".",

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "lastname"

}

},

{

"input": {

"type": "firstValid",

"attributes": {

"values": [

{

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "domain"

}

},

"default"

],

"ignoreErrors": false

}

},

"type": "lookup",

"attributes": {

"table": {

"TCS": "@tcs.com",

"Zudio": "@zudio.com",

"Tanishq": "@tanishq.com",

"Croma": "@croma.com",

"IRCTC": " @irctc.com",

"default": "@default.com"

}}}]},

"internal": false

}

8. Convert the lastname to lowercase.

{

"name": "HRMS_lastname_lowercase_Kp",

"type": "lower",

"attributes": {

"input": {

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "lastname"

}

}

},

"internal": false

}

9.convert the first name to uppercase.

Similar to lower :: change type as “upper”

10.convert first name :: first letter has to be in capital letter and remaining all has to be in small letters.

{

"name": "HRMS_firstname_selectedformat_Kp",

"type": "static",

"attributes": {

"value": {

"type": "concat",

"attributes": {

"values": [

{

"type": "upper",

"attributes": {

"input": {

"type": "substring",

"attributes": {

"begin": -1,

"end": 1,

"input": {

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "firstname"

}}}}}},

{

"type": "lower",

"attributes": {

"input": {

"type": "substring",

"attributes": {

"begin": 1,

"input": {

"type": "accountAttribute",

"attributes": {

"sourceName": "HRMS_KP",

"attributeName": "firstname"

}}}}}}]}}},

"internal": false

}

I appreciate you reading till the end! Let me know your thoughts or if there's anything I should add. Cheers! 🎉

0
Subscribe to my newsletter

Read articles from Kranthi Kumar Puttapaka directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Kranthi Kumar Puttapaka
Kranthi Kumar Puttapaka

I specialize in Java, IAM, and SailPoint, solving identity security challenges and always open to discussions on java, access governance and authentication.