Use lookup tables to transform identity attributes for target systems
You can use Lookup transformers to convert identity attributes from a source system into appropriate values for target systems based on CSV reference tables. This is particularly useful when mapping values between systems that use different naming conventions, codes, or formats for the same conceptual data.
For example, you might need to transform a "Location" attribute from Workday (which might be stored as location codes like "MN001") into corresponding values for country, country code, or city names in a target system.
Use Table Lookup Transformers when:
You need to map source attribute values to different values in target systems
You have standardized reference data that must be consistent across applications
You need to extract different pieces of information from a single attribute value
You have complex mapping requirements that built-in transformers cannot support
Geographic Information:
Transform location codes to country, region, city, or time zone information
Map office codes to physical addresses or facility types
Organizational Mapping:
The Table Lookup Transformer references CSV-based mappings between source and destination values. When synchronizing user attributes, Veza:
Takes the source attribute value
Looks up this value in the specified lookup table
Returns the corresponding value from the designated return column
Applies this value to the target attribute
Lookup tables are CSV files with columns that map values from a source of identity to destination values. Each row represents a mapping entry. The first row must contain the column headers.
For example, a location mapping table might look like:
To create a new lookup table:
Navigate to the Lookup Tables tab within your policy configuration
Enter Edit mode on a draft policy version (you can only add lookup tables to a draft)
Click Create Lookup Table
Provide a Name and optional Description for the lookup table
From the Lookup Tables tab, you can:
Export the table's CSV
Edit the table's name, description, or CSV. Renaming a table also updates the formatters that reference it by its old name
Delete tables that are no longer needed. Delete is unavailable while an action, workflow, condition, transformer, or transformer function still references the table
To update an existing lookup table:
Create a new policy draft version.
Delete the CSV from the existing lookup table (do not delete the table itself).
Upload the updated CSV.
Publish the draft.
To use a Table Lookup Transformer in a common or action-synced attribute:
In Destination Attribute, choose the attribute on the target entity that will be updated
In Formatter, choose the source attribute to transform
In Then Apply, enter the lookup function: the lookup table name, the column to match against, the column containing values to return, and (optionally) a default value to return when no match is found.
Then Apply holds the function chain on its own, with no braces and starting with a pipe, for example | LOOKUP, "locationTable", "location_code", "city". Veza applies it to the value that Formatter produces.
The equivalent complete expression, used wherever a single field carries both the source value and its transformations, is:
Where:
<value> is the source attribute to transform (for example, location)
<table_name> is the name (or ID) of the lookup table to use
<column_name> is the column in the table to match against
Separate the function name from its parameters with a comma, and enclose each parameter in double quotes, as shown above. Veza matches the table name and both column names exactly, including case.
Assuming a user has "location": "CA001" and a lookup table named locationTable structured as shown earlier:
You can combine lookup transformations with other transformation functions in a pipeline:
This would look up the state_code corresponding to the location value and convert it to lowercase.
By default, when a source value is not found in the lookup table, the transformation fails for that attribute. To return a fallback value instead of failing, supply an optional fourth parameter that sets a default value:
When the source value is not found in the table, the transformer returns the default value (Unknown location in this example) instead of failing. To return an empty string on a miss, pass an empty default ("").
The default value applies only when the lookup runs but finds no matching row. It does not cover configuration errors: if the lookup table, the match column, or the return column cannot be found, the transformation still fails, even when a default value is provided.
For full coverage, ensure your lookup table includes entries for all possible source values that may be encountered during provisioning, or supply a default value to handle unmatched inputs.
To ensure robust provisioning workflows, include all expected values in your lookup table, validate source data before implementing lookup transformations, and test transformations with representative data sets.
Lookup tables are immutable and automatically deleted when no longer referenced by any policy version
Multiple policy versions can reference the same lookup table (for example, an active version and a draft version)
Lookup tables are defined at the policy level and can be referenced by any transformer within the policy
Lookup tables can have multiple columns to support different transformations from the same reference data
Standardize Naming: A lookup-based transformer references the table by the Name you gave it when you created it (or by its table ID), not by the CSV file name. Apply consistent conventions for both the table and columns.
Document Mappings: Add descriptions for each lookup table to explain its purpose
Validate Data: Ensure lookup tables are complete and accurate before using them in transformers. Consider how lookup tables will be maintained over time, especially for values expected to change.
Convert department codes to department names or business units
Map cost centers to budget codes or accounting categories
System-Specific Configurations:
Transform job titles to role designations in target systems
Convert skill codes to certification requirements or training needs
Drag a CSV file or click Browse to upload your reference data (one CSV file, up to 10 MB)
Review the preview of the uploaded rows
Click Save to store the lookup table
<return_column_name> is the column containing the value to return
<default_value> is an optional value to return when no matching row is found. Omit it to make the transformation fail when there is no match. See .
location_code,state_code,state,city
MN001,MN,Minnesota,Minneapolis
CA001,CA,California,Los Angeles
TX001,TX,Texas,Houston
TX002,TX,Texas,Austin{<value> | LOOKUP, "<table_name>", "<column_name>", "<return_column_name>", "<default_value>"}{location | LOOKUP, "locationTable", "location_code", "city"}
"Los Angeles"
{location | LOOKUP, "locationTable", "location_code", "state"}
"California"
{location | LOOKUP, "locationTable", "location_code", "state_code"}
{location | LOOKUP, "locationTable", "location_code", "state_code" | LOWER}{location | LOOKUP, "locationTable", "location_code", "city", "Unknown location"}Value not found in lookup table
Add the missing mapping to the lookup table, or supply a default value as the fourth LOOKUP parameter
Incorrect column name referenced
Check the column names in your lookup table (they are case-sensitive). A default value does not cover this error
Lookup table name not found
"CA"
Check that the name matches the table's Name exactly, including case, and that the table exists in the same policy version
Unexpected transformation results
Verify the lookup table content and ensure the correct columns are specified
