LogoLogo
User GuideDeveloper DocumentationIntegrationsRelease Notes
  • 🏠Veza Documentation
  • ☑️Getting Started
  • 📖Veza Glossary
  • ❓Product FAQ
  • 🛡️Security FAQ
    • Advanced Security FAQ
  • Release Notes
    • 🗒️Release Notes
      • Release Notes: 2025-05-28
      • Release Notes: 2025-05-14
      • Release Notes: 2025-04-30
      • Release Notes: 2025-04-16
      • Release Notes: 2025-04-02
      • Release Notes: 2025-03-19
      • Archive
        • 2024.9.23
        • 2024.9.16
        • 2024.9.9
        • 2024.9.2
        • 2024.8.26
        • 2024.8.19
        • 2024.8.12
        • 2024.8.5
        • 2024.7.29
        • 2024.7.22
        • 2024.7.15
        • 2024.7.1
        • 2024.6.24
        • 2024.6.17
        • 2024.6.10
        • 2024.6.3
        • 2024.5.27
        • 2024.5.20
        • 2024.5.13
        • 2024.5.6
        • 2024.4.29
        • 2024.4.22
        • 2024.4.15
        • 2024.4.8
        • 2024.4.1
        • 2024.3.25
        • 2024.3.18
        • 2024.3.11
        • 2024.3.4
        • 2024.2.26
        • 2024.2.19
        • 2024.2.12
        • 2024.2.5
        • 2024.1.29
        • 2024.1.22
        • 2024.1.15
        • 2024.1.8
        • 2024.1.1
        • 2023.12.18
        • 2023.12.11
        • 2023.12.4
        • 2023.11.27
        • 2023.11.20
        • 2023.11.13
        • 2023.11.6
        • 2023.10.30
        • 2023.10.23
        • 2023.10.16
        • 2023.10.9
        • 2023.10.2
        • 2023.9.25
        • 2023.9.18
        • 2023.9.11
        • 2023.9.4
        • 2023.8.28
        • 2023.8.21
        • 2023.8.14
        • 2023.8.7
        • 2023.7.31
        • 2023.7.24
        • 2023.7.17
        • 2023.7.10
        • 2023.7.3
        • 2023.6.26
        • 2023.6.19
        • 2023.6.12
        • 2023.6.5
        • 2023.5.29
        • 2023.5.22
        • 2023.5.15
        • 2023.5.8
        • 2023.5.1
        • 2023.4.24
        • 2023.4.17
        • 2023.4.10
        • 2023.4.3
        • 2023.3.27
        • 2023.3.20
        • 2023.3.13
        • 2023.3.6
        • 2023.2.27
        • 2023.2.20
        • 2023.2.13
        • 2023.2.6
        • 2023.1.30
        • 2023.1.23
        • 2023.1.16
        • 2023.1.9
        • 2023.1.2
        • 2022.12.12
        • 2022.12.5
        • 2022.11.28
        • 2022.11.14
        • 2022.11.7
        • 2022.10.31
        • 2022.10.24
        • 2022.10.17
        • 2022.10.1
        • 2022.6.2
        • 2022.6.1
        • 2022.5.1
        • 2022.4.1
        • 2022.3.1
  • Features
    • 🔎Access Visibility
      • Graph
      • Query Builder
      • Saved Queries
      • Filters
      • Query Mode
      • Intermediate Entities
      • Regular Expressions
      • Tags
      • Tagged Entity Search
      • Assumed AWS IAM Roles
      • Veza Query Language
        • Quick Start
        • Syntax
        • VQL API
    • 💡Access Intelligence
      • Overview
      • Dashboards
        • Reports
        • Scheduled Exports of Query Results via a Secure Email Link
      • Risks
      • Analyze
      • Compare
      • Rules and Alerts
      • Entities
    • 🤖NHI Security
      • NHI Identity Classification Logic
      • NHI Secrets
    • 🔏Access Reviews
      • Get Started: Access Reviewers
      • Get Started: Review Operators
      • Access Review Tasks
        • Assign Reviewers
        • Create a Configuration
        • Create a Review
        • Draft Reviews
        • Edit a Configuration
        • Filters and Bulk Actions
        • Manage Access Reviews
        • Using the Reviewer Interface
        • Row Grouping for Access Reviews
        • Schedule an Access Review
      • Access Review Configuration
        • Access Reviews Query Builder
        • Access Reviews Global Settings
        • Configuring a Global Identity Provider
          • Alternate Manager Lookup
        • Customizing Default Columns
        • Email Notifications and Reminders
        • Identity Provider and HRIS Enrichment
        • Entity Owners and Resource Manager Tags
        • Multi-Level Review
        • 1-Step Access Reviews
        • On-Demand Reviews
        • Veza Actions for Access Reviews
        • Review Intelligence Policies
        • Review Presentation Options
        • Reviewer Selection Methods
        • Reviewer Digest Notifications
      • Access Review Scenarios
        • Access Reviews: Active Directory Security Groups
        • Access Reviews: Okta App Assignments
        • Access Reviews: Okta Group Membership
        • Access Reviews: Okta Admin Roles
        • Access Reviews: Azure AD Roles
        • Access Reviews with Saved Queries
        • Source-Only Access Reviews
    • 📊Access Monitoring
    • 🔄Lifecycle Management
      • Lifecycle Management Dashboard
      • Activity Log
      • Implementation and Core Concepts
      • Access Profiles
      • Access Profile Types
      • Policies
      • Conditions and Actions
      • Attribute Sync and Transformers
        • Fallback Formatters
        • Lookup Tables
      • Identity Override Attributes
      • Integrations
        • Active Directory
        • Exchange Server
        • Okta
        • Salesforce
        • Workday
    • ⚖️Separation of Duties (SoD)
      • Managing SoD Risks with Veza
      • Creating SoD Detection Queries
      • Analyzing Separation of Duties Query Results
      • Example Separation of Duties Queries
      • SoD Manager Assignment
      • Access Reviews for SoD
  • Integrations
    • ✨Veza Integrations
      • Adobe Enterprise
      • Amazon Web Services
        • Add Existing AWS Accounts
        • Automatically Add New AWS Accounts
        • AWS DynamoDB
        • AWS KMS
        • AWS RDS MySQL
        • AWS RDS PostgreSQL
        • AWS Redshift
        • Activity Monitoring for AWS
        • Using AWS Secrets Manager for RDS Extraction
        • Notes & Supported Entities
      • Anaplan
      • Atlassian Cloud Products
      • Auth0
      • BambooHR
      • Bitbucket Data Center
      • BlackLine
      • Beeline
      • Boomi
      • Box
      • Bullhorn
      • Cassandra
      • Cisco Duo
      • Clickhouse
      • Concur
      • Confluence Server
      • Confluent
      • Coupa
      • Coupa Contingent Workforce
      • Crowdstrike Falcon
      • CSV Upload
        • CSV Upload Examples
        • CSV Upload Troubleshooting
        • CSV Upload API
      • Databricks (Single Workspace)
      • Databricks (Unity Catalog)
      • Delinea Secret Server
      • Device42
      • DocuSign
      • Dropbox
      • Egnyte
      • Expensify
      • Exchange Online (Microsoft 365)
      • Fastly
      • Google Cloud
        • Check Google Cloud Permissions
        • Notes & Supported Entities
      • Google Drive
      • GitHub
      • GitLab
      • HashiCorp Vault
      • HiBob
      • Hubspot
      • IBM Aspera
      • iManage
      • Ivanti Neurons
      • Jamf Pro
      • Jenkins
      • JFrog Artifactory
      • Jira Data Center
      • Kubernetes
      • LastPass
      • Looker
      • MongoDB
      • Microsoft Active Directory
      • Microsoft Azure
        • Azure SQL Database
        • Azure PostgreSQL Database
        • Microsoft Dynamics 365 CRM
        • Microsoft Dynamics 365 ERP
        • Notes & Supported Entities
      • Microsoft Azure AD
      • Microsoft SharePoint Online
      • Microsoft SharePoint Server
      • Microsoft SQL Server
      • MuleSoft
      • MySQL
      • NetSuite
      • New Relic
      • Okta
        • Okta MFA status
      • OneLogin
      • OpenAI
      • Oracle Cloud Infrastructure
      • Oracle Database
      • Oracle Database (AWS RDS)
      • Oracle E-Business Suite (EBS)
      • Oracle EPM
      • Oracle Fusion Cloud
      • Oracle JD Edwards EnterpriseOne
      • PagerDuty
      • Palo Alto Networks SASE/Prisma Access
      • PingOne
      • PostgreSQL
      • Power BI
      • Privacera
      • PTC Windchill
      • Qualys
      • QNXT
      • Ramp
      • Redis Cloud
      • Rollbar
      • Salesforce
      • Salesforce Commerce Cloud
      • SAP SuccessFactors
      • SCIM integration
      • ServiceNow
      • Slack
      • Smartsheet
      • Snowflake
        • Snowflake Native Application
        • Snowflake Row Access Policies
        • Snowflake Masking Policies
        • Exporting Saved Query Results to Snowflake
        • Audit Log Export
        • Event Export
      • Solarwinds
      • Spotio
      • Sumo Logic
      • Tableau Cloud
      • Teleport
      • Terraform
      • ThoughtSpot
      • Trello
      • Trino (PrestoSQL)
      • UKGPro
      • Veza
      • Windows Server
        • Enterprise Deployment
      • Workato
      • Workday
      • YouTrack
      • Zendesk
      • Zip
      • Zoom
      • Zscaler
      • 1Password
    • 🎯Integrations Overview
    • ⚠️Prerequisites and Connectivity
      • Insight Point
        • Deploying an Insight Point using the install script
        • Deploy with AWS EC2
        • Deploy with Virtual Appliance
          • Deploy with Virtual Appliance (Legacy)
        • Deploy with Azure Container Instances
        • Insight Point (Helm Chart)
      • Secrets Vaults
        • Azure Key Vault
      • Certificates with OpenSSL
    • ⚙️Configuring Integrations
      • Integrations FAQ
      • Extraction and Discovery Intervals
      • Custom Identity Mappings
      • Limiting Extractions
      • Enrichment Rules
      • ℹ️Running Veza Scripts with Python
  • Administration
    • 🛠️Veza Administration
      • Securing Your Veza Tenant
      • Veza Actions
        • Slack
        • ServiceNow
        • Jira
        • Webhooks
      • Virtual Private Veza
      • System Events
      • Sign-In Settings
        • SAML Single Sign-On
          • Single Sign-On with Okta
          • Single Sign-On with Microsoft Entra
          • Group Mapping for Okta
        • OIDC Single Sign-On
          • Single Sign-On with Okta (OIDC)
        • Attribute Mapping for SSO
        • Role Mapping for SSO
      • User Management
        • Multi-factor Authentication
        • Team Management
        • Support User Access
  • Developers
    • 🌐Veza APIs
      • Authentication
      • Troubleshooting
      • Pagination
      • Open Authorization API
        • Getting Started
        • Core Concepts
          • Connector Requirements
          • Using OAA Templates
          • Providers, Data Sources, Names and Types
          • Sourcing and Extracting Metadata
          • Naming and Identifying OAA Entities
          • Modeling Users, Permissions, and Roles
          • Custom Properties
          • Tagging with OAA
          • Cross Service IdP Connections
          • Incremental Updates
        • OAA Push API
          • OAA Operations
        • OAA Templates
          • Custom Application
          • Custom Identity Provider
          • Custom HRIS Provider
        • OAA .NET SDK
          • C# OAA Application Connector
        • OAA Python SDK
          • Application Outline
          • oaaclient modules
            • Client
            • Structures
            • Templates
            • Utils
        • Sample Apps
        • Example Connectors
      • Integration APIs
        • Enable/Disable Providers
        • Cloud Platforms and Data Providers
        • Identity Providers
        • Data Sources
        • Sync and Parse Status
      • Query APIs
        • Quick Start
        • Query Builder Terminology
        • Query Builder Parameters
        • Query Builder Results
        • List saved queries
        • Save a query
        • Get a saved query
        • Update a query
        • Delete a query
        • Get query node destinations
        • Get query nodes
        • Get query result
        • Get query spec node destinations
        • Get query spec nodes
        • Get query spec results
        • Private APIs
          • Get Access Relationship
          • Role Existence
          • Role Maintenance
          • Cohort Role Analysis
        • Tags
          • Create, Add, Remove Tag
          • Promoted Tags
      • Access Reviews APIs
        • Workflow Parameters Reference
        • List Workflows
        • List Certifications
        • List Certification Results
        • Update Certification Result
        • Force Update Result
        • Update Webhook Info
        • Get Certification Result
        • Manage Reviewer Deny List
        • Quick Filters
        • Help Page Templates
        • Smart Action Definitions
        • Delegate Reviewers
        • List Reviewer Infos
        • Get Access Graph
        • Automations API
        • Global Settings APIs
      • System Audit Logs
      • System Events
      • Notification Templates
        • Notification Templates API
      • Team and User Management APIs
        • Team API Keys
      • SCIM Provisioning
        • SCIM API Reference
        • SCIM Provisioning with Okta
  • Product Updates
    • 🆕Product Updates
      • Product Update: April'25
      • Product Update: March'25
      • Product Update: February'25
      • UX Update - Integration Management
      • Product Update: January'25
      • Product Update: December'24
      • Product Update: November'24
      • Product Update: October'24
      • Product Update: September'24
      • Product Update: August'24
      • UX Update: Veza Integrations
      • Product Update: July'24
      • Product Update: June'24
      • Product Update: May'24
      • Product Update: April'24
      • UX Update - Enhanced Reviewer Experience for Veza Access Reviews
      • Product Update: March'24
      • Product Update: February'24
      • Design Update: February'24
      • UX Update - New Navigation Experience
      • UX Update - Access Review Dashboards
      • Building Veza’s Platform and Products
      • Veza Product Update - Jan'24
      • Veza Product Update - 2H 2023
      • Veza Product Update - December'23
      • Veza Product Update - November'23
      • Veza Product Update - October'23
      • Veza Product Update - September'23
      • Veza Product Update - August'23
      • Veza Product Update - July'23
      • Veza Product Update - June'23
      • Veza Product Update - May'23
      • Veza Product Update - April'23
      • Veza Product Update - March'23
      • Veza Product Update - Feb'23
      • Veza Product Update - Jan'23
Powered by GitBook
On this page
  • Adding transformers
  • Formatters

Was this helpful?

Export as PDF
  1. Features
  2. Lifecycle Management

Attribute Sync and Transformers

Configure how user attributes from a source of identity are transformed and synchronized for target user accounts

When creating workflows in Lifecycle Management policies to create, sync, or de-provision identities, you will use attribute transformers to specify how user attributes for target accounts should be structured. The target attributes to create or update are typically mapped and optionally transformed from user metadata from the source of identity, such as an identity provider, HR system, or CSV upload. Attributes can be synchronized once or kept in continuous sync as changes occur over the user’s lifetime.

For example, attribute mapping and transformation can be used across Joiner, Mover, and Leaver scenarios:

  • Joiner: Set new Azure AD User Principal Name to {source username}@{your-email-domain.com}. This is an example of mapping multiple attributes and performing a transformation.

  • Mover: Always update a user’s “Manager” and “Department” attributes in Okta to match the user’s manager and department in Workday, a source of identity, whenever a department change or other employee mobility event occurs. This is an example of attribute mapping with continuous synchronization.

  • Leaver: Mote a user’s Active Directory account to an OU reserved for terminated accounts.

When synchronizing a user’s attributes, Veza can apply one (or more) transformations to convert the source attribute values to a more suitable format, and apply the result within the target application as user account attribute.

For example, a transformer might remove the domain from an email address, replace special characters, or convert a string from upper case to lower case. Transformers can apply to any attribute on the target user account with the complexity varying depending on your business requirements.

See the following sections for more information about formatting destination attributes and possible transformations:

Continuous Sync

Continuous Sync keeps identity attributes in target systems up to date with your source of truth. It has three configuration levels that work together to determine how attributes are synchronized:

Workflow Level

The workflow's continuous sync setting controls change detection:

  • When enabled: The workflow monitors for any changes in the source system

  • When disabled: The workflow only runs during initial provisioning

Action Level

For Sync Identity actions, this controls whether existing entities can be updated:

  • When enabled: The action can update existing entities

  • When disabled: The action only sets attributes during initial creation

Attribute Level

Individual attributes can be configured for continuous sync:

  • When enabled: The attribute will be updated when changes are detected

  • When disabled: The attribute is only set during initial creation

All three levels must be enabled for an attribute to be continuously synchronized. For example, if you want to keep an employee's department updated:

  1. Enable continuous sync on the workflow to monitor for changes

  2. Enable continuous sync on the sync action to allow updates

  3. Enable continuous sync on the department attribute transformer

Recommended Settings

Enable continuous sync for attributes that change during employment:

  • Employee name

  • Department

  • Title

  • Manager

  • Cost Center

  • AD Distinguished Name (DN)

  • AD User Principal Name (UPN)

  • AD Email

Disable continuous sync for stable identifiers:

  • Active Directory sAMAccountName

  • Email Addresses (for Email Write-Back action)

This configuration ensures that dynamic attributes stay updated while preserving stable identifiers.

Common Transformers

As part of implementing lifecycle management processes with Veza, you should create sets of common transformers to define how values such as username, login, or ID should be sourced for each target application. These transformers can then be reused across all identity sync and de-provision workflows involving those targets. Create common transformers to consistently form attributes for specific entity types, and re-use them to avoid errors and save time when creating actions for that entity type.

For instance, defining a common synced attribute to describe how to format Azure AD account names {username}@evergreentrucks.com enables reuse across multiple workflow actions. You can also define synced attributes at the action level when they are used only once within a policy, such as setting the primary group DN and OU of de-provisioned identities to a group reserved for terminated accounts.

Common Transformer Examples:

Transformer & Entity Type
Attribute
Value Format
Continuous Sync
Description

ADAccountTransformer ActiveDirectoryUser

account_name

{display_full_name}

No

Basic account name

distinguished_name

CN={first_name} {last_name},OU={department},OU={location},DC=company,DC=local

Yes

Full AD path

user_principal_name

{username}@company.com

Yes

UPN format

email

{username}@company.com

Yes

Email address

OktaAccountTransformer OktaUser

login

{username}@company.com

No

Primary login

email

{username}@company.com

Yes

Email address

username_prefix

{first_name | SUB_STRING,0,1 | LOWER}{last_name | LOWER}

No

Username creation

AzureADTransformer AzureADUser

principal_name

{username}@company.com

No

Primary identifier

mail_nickname

{first_name | SUB_STRING,0,1 | LOWER}{last_name | LOWER}

No

Email alias

display_name

{first_name} {last_name}

Yes

Display name

GoogleAccountTransformer GoogleWorkspaceUser

email

{username}@company.com

No

Primary email

email_addresses

{username}@company.com

No

Email list

recovery_email

{personal_email}

Yes

Backup email

ContractorTransformer ActiveDirectoryUser

account_name

c-{username}

No

Contractor prefix

distinguished_name

CN={first_name} {last_name},OU=Contractors,OU={department},DC=company,DC=local

Yes

Contractor OU

description

Contractor - {vendor_company} - Start Date: {start_date}

Yes

Metadata

RegionalEmailTransformer ExchangeUser

email_address

{username}@{region}.company.com

No

Regional email

alias

{first_name}.{last_name}@{region}.company.com

Yes

Regional alias

Adding transformers

Transformers can be defined at the policy level or when configuring an individual action in a workflow. To configure a transformer, add basic details as well as how to source the value of each attribute:

  1. Give the transformer a name and description, and specify the data source it applies to.

  2. Entity Type: Choose the target entity type in the destination system.

  3. Click Add Attribute. The Destination Attribute dropdown will list available attributes for the chosen entity type.

    1. Destination Attribute: Choose the attribute that Veza will create or update for the target entity.

    2. Continuous Sync: Enabling this option always syncs the attribute, whilst applying any defined transformations. By default, attributes will not sync if the target identity is already created.

After creating a common transformer, you can select it when editing a workflow action. You can edit or delete common transformers on the Edit Policy > Common Transformers tab.

Remember that “Sync Identity” and “De-Provision Identity” actions can have action-level transformers override common transformers. If the same destination attribute is defined in both, the action-level transformer will take precedence.

Formatters

Formatters specify the actual value of the attribute to synchronize. The target attribute can be set to a specific value, synchronized with a source attribute, transformed according to a function, or some combination of the three.

Note that some formatters should enable continuous synchronization for the attribute, while others should not. For example, the value of “Created By” should be immutable once a user account is provisioned. Other attributes that represent a state or status should be synchronized over the user or account lifecycle.

Simple Value Setting

To create a destination attribute with a fixed value, enter the desired value when configuring the formatter.

For setting the creator attribute:

Destination Attribute
Formatter
Continuous Sync

created_by

"Veza"

Disabled

For activating a re-hired employee:

Destination Attribute
Formatter
Continuous Sync

active

true

Enabled

Empty Values

To set empty values (common for de-provisioning flows):

Destination Attribute
Formatter
Continuous Sync

manager_id

" "

Enabled

active

false

Enabled

Source of Identity Formatters

Target attributes can be updated based on attributes belonging to the source of identity. To reference the value of a source entity attribute, use the format {<source_attribute_name>}.

Examples:

Destination Attribute
Formatter
Continuous Sync

first_name

{first_name}

Enabled

last_name

{last_name}

Enabled

email

{first_name}.{last_name}@domain.com

-

Transformation functions

Based on the user metadata that is available from your source of identity, you may need to convert a full email address to a valid username, standardize a date, or generate a unique identifier for users provisioned by Veza. If an attribute value needs to be altered for compatibility with the target system, you can transform the value of a source attribute, or apply a range of other functions to generate the target value.

Formatter expressions use the following syntax: {<source_attribute_name> | <FUNCTION_NAME>,<param1>,<param2>}

For example:

Destination Attribute
Formatter
Description

username

{email | REMOVE_DOMAIN}

Removes domain from email to create username

user_id

{id | UPPER}

Converts ID to uppercase

Table of transformation functions

See the table below for all supported functions and parameters. Some commonly used transformation functions include:

  • Replacing a character with a different one

  • Removing domains from email addresses

  • Transforming to upper, lower, camel, or snake case

  • Using a substring from the original value

Please contact Veza if additional transformations are required for your use case.

Function
Description
Parameters
Requires Input
Returns Multiple
Example

ASCII

Removes non-printable characters and replaces non-ASCII characters with their closest ASCII equivalents.

None

Yes

No

ASCII("Łukasz Gruba") results in Lukasz Gruba

COUNTRY_CODE_ISO3166

Transforms country code to ISO 3166 format.

Format (STRING, optional): [alpha2, alpha3, numeric], defaults to alpha2

Yes

No

COUNTRY_CODE_ISO3166("US", alpha3) results in USA

DATE_FORMAT

Transforms dates to a different format using Go time layout syntax.

Output Layout (STRING, required): Go time layout for output format. Input Layout (STRING, optional): Go time layout for input format

Yes

No

{start_date | DATE_FORMAT, "01/02/2006"} formats date as MM/DD/YYYY

FIRST_N

Picks the first N characters of a string.

Length (NUMBER, required): Number of characters to return

Yes

No

FIRST_N("first_name", 4) results in firs

FROM_ENTITY_ATTRIBUTE

Transforms a string from an attribute of another entity in the graph.

EntityType (STRING, required), SourceAttribute (STRING, required), TargetAttribute (STRING, required)

Yes

No

FROM_ENTITY_ATTRIBUTE("Employee", "ID", "ManagerID") results in the Manager ID for the employee

LANGUAGE_RFC5646

Transforms language to RFC 5646 format.

None

Yes

No

LANGUAGE_RFC5646("Spanish") results in es

LAST_N

Picks the last N characters of a string.

Length (NUMBER, required): Number of characters to return

Yes

No

LAST_N("last_name", 5) results in name

LEFT_PAD

Left pads a string with a character.

Length (NUMBER, required), Pad (CHARACTER, optional): Default is space

Yes

No

LEFT_PAD("123", 5, "0") results in 00123

LOOKUP

Transforms a value using a lookup table.

Table Name (STRING, required), Column Name (STRING, required), Return Column Name (STRING, required)

Yes

No

LOOKUP("IL001", "locationTable", "location_code", "city") results in Chicago

LOWER

Transforms string to lowercase.

None

Yes

No

LOWER("HELLO") results in hello

LOWER_CAMEL_CASE

Transforms string to lower camel case.

None

Yes

No

LOWER_CAMEL_CASE("hello world") results in helloWorld

LOWER_SNAKE_CASE

Transforms string to lowercase with underscores.

None

Yes

No

LOWER_SNAKE_CASE("Hello World") results in hello_world

NEXT_NUMBER

Generates a set of integers as strings.

BeginInteger (NUMBER, required), Length (NUMBER, required)

No

Yes

NEXT_NUMBER(5, 3) results in 5, 6, 7

PHONE_NUMBER_E164

Transforms phone number to E.164 format.

Region (STRING, optional): ISO 3166-1 alpha-2 format

Yes

No

PHONE_NUMBER_E164("+1-800-555-1212") results in +18005551212

RANDOM_ALPHANUMERIC_GENERATOR

Generates a random alphanumeric string.

Length (NUMBER, required)

No

No

RANDOM_ALPHANUMERIC_GENERATOR(8) results in a1B2c3D4

RANDOM_NUMBER_GENERATOR

Generates a random number string.

Length (NUMBER, required)

No

No

RANDOM_NUMBER_GENERATOR(4) results in 4829

RANDOM_STRING_GENERATOR

Generates a random string.

Length (NUMBER, required)

No

No

RANDOM_STRING_GENERATOR(6) results in uFkLxw

REMOVE_CHARS

Removes all instances of specified characters from a string.

Characters (STRING, required): Characters to be removed

Yes

No

REMOVE_CHARS("First.Last@example.com", "@.") results in FirstLastexamplecom

REMOVE_DIACRITICS

Removes diacritics (accents, etc.) from input string.

None

Yes

No

REMOVE_DIACRITICS("José") results in Jose

REMOVE_DOMAIN

Removes the domain from an email.

None

Yes

No

REMOVE_DOMAIN("user@domain.com") results in user

REMOVE_WHITESPACE

Removes all whitespace characters from a string.

None

Yes

No

REMOVE_WHITESPACE("First Last") results in FirstLast

REPLACE_ALL

Replaces all instances of one string with another.

Original (STRING, required), New (STRING, required)

Yes

No

REPLACE_ALL("hello world", " ", "_") results in hello_world

RIGHT_PAD

Right pads a string with a character.

Length (NUMBER, required), Pad (CHARACTER, optional): Default is space

Yes

No

RIGHT_PAD("123", 5, "0") results in 12300

SPLIT

Splits a string and returns the string at the given index.

Split String (STRING, required), Index (NUMBER, required)

Yes

No

SPLIT("first.last@domain.com", "@", 0) results in first.last

SUB_STRING

Picks a substring from the original value.

Offset (NUMBER, required), Length (NUMBER, required)

Yes

No

SUB_STRING("hello", 0, 3) results in hel

TRIM

Removes spaces before and after a string.

None

Yes

No

TRIM(" hello ") results in hello

TRIM_CHARS

Removes all specified characters from the beginning and end of a string.

Characters (STRING, required): Characters to be trimmed

Yes

No

TRIM_CHARS("....first.last----", ".-") results in first.last

TRIM_CHARS_LEFT

Removes all specified characters from the beginning of a string.

Characters (STRING, required): Characters to be trimmed from the left

Yes

No

TRIM_CHARS_LEFT("....first.last----", ".-") results in first.last----

TRIM_CHARS_RIGHT

Removes all specified characters from the end of a string.

Characters (STRING, required): Characters to be trimmed from the right

Yes

No

TRIM_CHARS_RIGHT("....first.last----", ".-") results in ....first.last

UPPER

Transforms string to uppercase.

None

Yes

No

UPPER("hello") results in HELLO

UPPER_CAMEL_CASE

Transforms string to upper camel case.

None

Yes

No

UPPER_CAMEL_CASE("hello world") results in HelloWorld

UPPER_SNAKE_CASE

Transforms string to uppercase with underscores.

None

Yes

No

UPPER_SNAKE_CASE("hello world") results in HELLO_WORLD

UUID_GENERATOR

Generates a UUID.

None

No

No

UUID_GENERATOR() results in 123e4567-e89b-12d3-a456-426614174000

Using the ASCII Transformer

The ASCII transformer is particularly useful when working with international user data or systems that have strict character limitations. This transformer performs two main operations:

  1. Removes all non-printable characters (including control codes, zero-width spaces, tabs, and newlines)

  2. Converts non-ASCII characters to their closest ASCII equivalents

Whereas the REMOVE_DIACRITICS transformer only removes accent marks while preserving the basic character, the ASCII transformer performs a more comprehensive conversion, replacing characters like "Ł" with "L" and handling a wider range of non-ASCII characters.

Using the DATE_FORMAT Transformer

The DATE_FORMAT transformer formats date strings using Go time package layout syntax. This transformer is useful for converting between different date formats, such as transforming dates for LDAP integration or standardizing date formats across systems.

Go Time Layout Syntax

Date Components:

  • 2006 = 4-digit year

  • 06 = 2-digit year

  • 01 = 2-digit month (01-12)

  • 1 = 1-digit month (1-12)

  • Jan = 3-letter month abbreviation

  • January = full month name

  • 02 = 2-digit day (01-31)

  • 2 = 1-digit day (1-31)

  • _2 = space-padded day

Time Components:

  • 15 = 24-hour format hour (00-23)

  • 03 = 12-hour format hour (01-12)

  • 3 = 12-hour format hour without leading zero (1-12)

  • 04 = minute (00-59)

  • 4 = minute without leading zero (0-59)

  • 05 = second (00-59)

  • 5 = second without leading zero (0-59)

  • PM = AM/PM indicator

  • pm = am/pm indicator (lowercase)

Weekday Components:

  • Mon = 3-letter weekday abbreviation

  • Monday = full weekday name

Time Zone Components:

  • MST = time zone abbreviation

  • Z0700 = RFC3339 time zone format

  • Z07:00 = RFC3339 time zone format with colon

Common Layout Examples

Layout String
Format
Example Output

01/02/2006

MM/DD/YYYY

03/15/2023

2006-01-02

YYYY-MM-DD

2023-03-15

02-Jan-2006

DD-MMM-YYYY

15-Mar-2023

Jan 2, 2006

MMM D, YYYY

Mar 15, 2023

Monday, January 2, 2006

Full date

Wednesday, March 15, 2023

2006-01-02 15:04:05

Full timestamp

2023-03-15 14:30:25

03:04:05 PM

12-hour time

02:30:25 PM

15:04

24-hour time

14:30

20060102150405Z

LDAP Z time format

20230315143025Z

Usage Examples

Basic Date Formatting:

{start_date | DATE_FORMAT, "01/02/2006"}

Formats any recognized date input into MM/DD/YYYY format.

Converting Between Specific Formats:

{hire_date | DATE_FORMAT, "2006-01-02", "01/02/2006"}

Parses input in MM/DD/YYYY format and outputs in YYYY-MM-DD format.

LDAP Integration Example:

The DATE_FORMAT transformer was specifically enhanced to support LDAP Z time format requirements. The Z time format (20060102150405Z) is commonly used in LDAP directories and represents timestamps in UTC with a 'Z' suffix indicating zero UTC offset.

{timestamp | DATE_FORMAT, "20060102150405Z"}

Converts a date to LDAP Z time format for directory integration.

Example for LDAP account expiration:

{account_expires | DATE_FORMAT, "20060102150405Z"}

Human-Readable Format:

{event_date | DATE_FORMAT, "Monday, January 2, 2006"}

Outputs a full, human-readable date format.

Time Zone Handling:

{utc_time | DATE_FORMAT, "2006-01-02 15:04:05 MST"}

Includes time zone information in the output.

Notes on DATE_FORMAT Transformers

  • Input Format: When the second parameter (input layout) is omitted, the transformer attempts to parse the input using common date formats automatically

  • Case Sensitivity: Layout components are case-sensitive (e.g., PM vs pm)

  • Leading Zeros: Use 01, 02, etc. for zero-padded values, and 1, 2, etc. for non-padded values

  • Reference Time: All layouts must use the exact reference time digits: Mon Jan 2 15:04:05 MST 2006

String Manipulation Transformers

These transformers provide capabilities for cleaning, formatting, and standardizing string data from your source systems.

REMOVE_CHARS

The REMOVE_CHARS transformer removes all instances of specified characters from a string. This is useful for cleaning up data by removing unwanted punctuation, special characters, or formatting elements.

Use Cases:

  • User ID creation: {email | REMOVE_CHARS, "@._-"}

    • If email is "john.doe@example.com", the result is "johndoeexamplecom"

  • Phone number formatting: {phone_number | REMOVE_CHARS, "()- "}

    • If phone_number is "(123) 456-7890", the result is "1234567890"

  • Cleaning account names: {account_name | REMOVE_CHARS, "!@#$%"}

    • Removes special characters that might cause issues in target systems

REMOVE_WHITESPACE

The REMOVE_WHITESPACE transformer removes all whitespace characters (spaces, tabs, newlines) from a string. It can help create compact identifiers or ensuring data consistency.

Use Cases:

  • Username generation: {display_name | REMOVE_WHITESPACE}

    • If display_name is "John A. Doe", the result is "JohnA.Doe"

  • Tag creation: {department | REMOVE_WHITESPACE | LOWER}

    • If department is "Human Resources", the result is "humanresources"

  • Creating system identifiers: {cost_center | REMOVE_WHITESPACE}

    • Ensures cost center codes have no embedded spaces

TRIM, TRIM_CHARS, TRIM_CHARS_LEFT, and TRIM_CHARS_RIGHT

These transformers help clean up strings by removing unwanted characters from the beginning and/or end of strings. This is essential for data hygiene and ensuring consistent formatting.

TRIM: Removes leading and trailing whitespace

  • Basic cleanup: {display_name | TRIM}

    • If display_name is " John Doe ", the result is "John Doe"

TRIM_CHARS: Removes specified characters from both ends

  • Cleaning employee IDs: {employee_id | TRIM_CHARS, "0."}

    • If employee_id is "000.123.000", the result is "123"

  • Removing padding characters: {code | TRIM_CHARS, "-_"}

    • If code is "---ABC123___", the result is "ABC123"

TRIM_CHARS_LEFT: Removes specified characters from the beginning only

  • Removing leading zeros: {cost_center | TRIM_CHARS_LEFT, "0"}

    • If cost_center is "00012345", the result is "12345"

  • Cleaning prefixes: {identifier | TRIM_CHARS_LEFT, "x"}

    • If identifier is "xxxABC123", the result is "ABC123"

TRIM_CHARS_RIGHT: Removes specified characters from the end only

  • Removing trailing characters: {office_code | TRIM_CHARS_RIGHT, "0"}

    • If office_code is "ABC12300", the result is "ABC123"

  • Cleaning suffixes: {code | TRIM_CHARS_RIGHT, "temp"}

    • If code is "ABC123temp", the result is "ABC123"

Pipeline Functions

You can pipeline multiple transformation functions together, separated by a |. Each will apply in sequence, allowing for complex attribute formatters that use the output of one function as the input of another.

Example Pipeline Functions

  • {name | UPPER}

    • If name = Smith, the result is SMITH.

  • {first_name | SUB_STRING,0,1 | LOWER}.{last_name | LOWER}

    • If first_name = John and last_name = Smith, the result is j.smith.

  • {email | REMOVE_DOMAIN}

    • If email = john.smith@domain.com, the result is john.smith.

  • {email | REPLACE_ALL, " ", "."}

    • If email = john smith@domain.com, the result is john.smith@domain.com.

  • {location | LOOKUP locationTable, location_code, city}

    • If location = IL001, the result is Chicago (using a lookup table named locationTable).

  • {start_date | DATE_FORMAT, "01/02/2006" | UPPER}

    • If start_date = 2023-03-15, the result is 03/15/2023 (DATE_FORMAT doesn't typically need UPPER, but shows pipeline capability).

  • {hire_date | DATE_FORMAT, "Jan 2, 2006" | REPLACE_ALL, " ", "_"}

    • If hire_date = 2023-03-15, the result is Mar_15,_2023.

  • {office_code | TRIM_CHARS_LEFT, ".0" | TRIM_CHARS_RIGHT, ".USCA"}

    • If office_code = 000.8675309.USCA, the result is 8675309.

  • {username | REMOVE_CHARS, ".-_" | TRIM | UPPER}

    • If username = "--john.doe_--", the result is JOHNDOE.

  • {employee_id | REMOVE_CHARS, "#" | TRIM_CHARS, "0" | LEFT_PAD, 6, "0"}

    • If employee_id = "##001234##", the result is 001234.

  • {department | REMOVE_WHITESPACE | LOWER | REPLACE_ALL, "&", "and"}

    • If department = "Sales & Marketing", the result is salesandmarketing.

PreviousConditions and ActionsNextFallback Formatters

Last updated 4 days ago

Was this helpful?

Formatter: Choose how the destination attribute should be formatted. Specify the value, a {source_attribute}, or apply .

Pipeline Functions: Combine attribute formatters with the | character to apply more complex transformations, such as combining the first letter of a first_name and the first four characters of a last_name to generate a local username. See for more examples

Go time layouts use a specific reference time: Monday, January 2, 15:04:05 MST 2006, which is Unix time 1136239445. All layout strings must use the exact digits and format from this reference time. For more information about Go time layouts, refer to the .

🔄
official Go time package documentation
Transformation Functions
Pipeline Functions