Skip to content

Transformations

Direct (no transform specified)

Copies the resolved value of the source field directly to the target.

json
{
  "source": "MX_FIRSTNAME",
  "target": "data/name/givenName"
}

toString

Converts the resolved value to a string (useful when the source is numeric).

json
{
  "source": "MSKEY",
  "target": "data/externalId",
  "transform": "toString"
}

template

Builds a string from a template with placeholders replaced by source values.

Single source — use {{VALUE}}:

json
{
  "source": "MSKEYVALUE",
  "target": "data/description",
  "transform": "template",
  "template": "Identity unique identifier: {{VALUE}}"
}

Multiple sources — use {{VALUE1}}, {{VALUE2}}, etc.:

json
{
  "source": ["MX_FIRSTNAME", "MX_LASTNAME"],
  "target": "data/displayName",
  "transform": "template",
  "template": "{{VALUE1}} {{VALUE2}}"
}

Sources in a template can also reference headers/properties using path prefixes:

json
{
  "source": ["MSKEYVALUE", "header:roiam_customer_system_name"],
  "target": "data/description",
  "transform": "template",
  "template": "User {{VALUE1}} from system {{VALUE2}}"
}

appendExisting

Appends the resolved value to whatever already exists in the template at that target path. If the value already contains the incoming string, it is not duplicated.

json
{
  "source": "MSKEYVALUE",
  "target": "bulkId",
  "transform": "appendExisting",
  "separator": ":"
}

conditional

Selects which source and transformation to apply based on runtime conditions. First matching condition wins; if none match, the default branch is used.

json
{
  "target": "data/userName",
  "transform": "conditional",
  "conditions": [
    {
      "when": {
        "field": "MX_FS_IDENTITY_TYPE",
        "operator": "equals",
        "value": "Employee"
      },
      "source": "MX_MAIL_PRIMARY"
    },
    {
      "when": {
        "field": "MX_FS_IDENTITY_TYPE",
        "operator": "startsWith",
        "value": "Ext"
      },
      "source": "MSKEYVALUE",
      "transform": "template",
      "template": "C_{{VALUE}}"
    }
  ],
  "default": { "source": "DISPLAYNAME" }
}

Condition Structure

Each condition entry has:

PropertyDescription
when.fieldThe field to evaluate. Can be a source JSON field name, header:headerName, or prop:propertyName
when.operatorComparison operator (see table below)
when.valueThe value to compare against (not required for exists)

Plus any standard rule properties (source, constant, header, property, transform, template, prefix, separator) that define what to do when the condition matches.

Available Operators

OperatorDescriptionExample
equalsExact string match"value": "Employee"
notEqualsDoes not equal"value": "Inactive"
containsField value contains substring"value": "admin"
startsWithField value starts with string"value": "EXT_"
endsWithField value ends with string"value": "@company.com"
existsField is non-null and non-empty (no value needed)

Default Branch

The default object uses the same properties as a condition entry (minus the when block). It is applied when no condition matches. If omitted and no condition matches, nothing is written to the target.

See also