Configuring Data Transformation
The Transform configuration tells the system how to format the extracted data. Objects and properties extracted from the IdentityIQ database may be transformed into something that can easily be exported in a JSON format to be more friendly to BI tools. The Transform YAML configuration defines how you want that done by listing the configuration for each object and how to do the actual JSON transformations. View YAML configurations from the Debug > Object Browser page.
You may generate a Transform YAMLConfig in the IdentityIQ console. See IIQ Console Commands. The following example creates the base default Transform config for the Identity object called IdentityTransformConfig:
>dataextract generatetransform --classes Identity --write IdentityTransformConfig
Customize your transform YAMLs according to your organization's needs. If you want to write your own transformers, use the existing IdentityIQ plugin interface and it can be called by Data Extract. See Working with Plugins in IdentityIQ.
You might use transformers for things like converting a timestamp to a specific format, or converting a string that refers to another object to an extract reference to that object, or converting the xml attributes to JSON containing a select set of attributes.
Each transformer is just one operation, but there are many ways to customize the JSON output by stacking transformers such that the output of one becomes the input of the next. Properties are transformed first – for example, transforming a UNIX time into a formatted date string – then object transformers are applied, such as adding a composite key or a hash value. Transformers are applied in the order listed.
A transform configuration may look like this example:
identity:
includeHash: true
objectClassName: sailpoint.object.Identity
imagePropertyConfigDescriptors:
- property: id
- property: name
- property: managerStatus
- attribute: email
Adding a hash by setting includeHash to True lets you quickly know if extracted objects are the same or different. Properties and attributes are those that you would like to export; this example includes id, name, manager status, and email. You may also export extended attributes, which are those that are defined only for your implementation.
Property transformers apply to a single property. For instance, you can use a property transformer to change the date format. Just add dateFormat (see Java's SimpleDateFormat) and optionally timeZone as shown in the example below:
1 imageConfigDescriptors:
2 identity:
3 objectClassName: sailpoint.object.Identity
4 imagePropertyConfigDescriptors:
5 - property: id
6 - property: name
7 - property: created
8 type: date
9 dateFormat: EEEE MMMM d yyyy ('julian day' - DD) - h:m:s a
10 timeZone: CST
1 dataextract transform identity james.smith deExamples
The result is a new format for the date – note that this example adjusts to CST instead of UTC (5 hours earlier):
1{
2 "created": "Wednesday September 7 2022 (julian day - 250) - 9:29:20 AM",
3 "name": "James.Smith",
4 "id": "ac130b1283181a728183185b0138065d"
5}
At the end of a list of specified transformers, you may use special YAML properties to make it easier to add 'built-in' transformers. This can be helpful if you want to add wrappers to convert values to ImageValues or want to use hashExclude to exclude values from a hash.
For an example of a complete Transform YAML Configuration, seeSample Transform YAML Config.