Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Introduction to Lifecycle Management with Veza
Veza's Lifecycle Management (LCM) solution empowers organizations to automate and streamline the management of user identities and access rights throughout the employee lifecycle. From onboarding to role changes and offboarding, automated LCM workflows ensure that the right people have the correct access at the right time.
Automated Provisioning and De-provisioning: Streamline granting and revoking entitlements as employees join, move within, or leave the organization
Environment-wide Synchronization: Keep user attributes and access rights consistent across applications and platforms
Customizable Workflows: Design tailored processes for different lifecycle events and user segments
Compliance and Audit Support: Maintain detailed records of access changes to support compliance and audit efforts
Integration with Identity Providers: Integrate with identity providers and HR systems, import HR data from CSV, or use a custom OAA template
Policies define the rules and actions for managing identities throughout their lifecycle. They specify what actions should occur when there are changes in a source of identity, such as when a user is created or their attributes change.
After configuring a policy for a source of identity in your organization, Veza Lifecycle Management tracks the source for changes. When employee records are added or changed, actions will trigger based on the workflows and actions specified in the policy.
Workflows are sequences of actions within a policy that execute based on specific conditions. They enable automation of lifecycle management processes such as onboarding, role changes, and offboarding.
Workflows only execute actions on users that meet specific conditions, and Policies can contain more than one Workflow. This enables you to create a single policy for your source of identity that contains multiple workflows, with one applying to new hires, another applying to terminated employees, and so on for the different JML scenarios you want to automate.
Learn more about Workflows
Access Profiles define sets of entitlements (such as group memberships or role assignments within a target application) that should be granted to users based on their role within the organization (or another distinguishing attribute). You can use Access Profiles to define both Business Roles – segments of employees, and Profiles – collections of entitlements in a target application.
Assigning Business Roles to the Profiles they should inherit enables you to define the birthright entitlements for different types of employees in your organization. You can then assign those Business Roles when configuring workflows that add or remove access to an application.
Learn more about Access Profiles
Lifecycle Management Actions are tasks performed within a workflow, such as creating a user account, assigning group memberships, or disabling an account. Actions can be combined to trigger in sequence when there are changes in the source of identity. Actions can run for any identity that meets the workflow conditions, or only apply when action-level conditions are met.
Learn more about available Actions
Transformers allow you to modify and format user attributes when synchronizing data between systems, ensuring consistency and compatibility when creating users across applications.
Lifecycle Management will provision new users with these attributes and can keep their accounts up-to-date when there are changes in the source of identity. Target entity attributes can be set to specific values or use metadata from the source of identity, and support a range of transformation functions.
Learn about Transformers
Customize email notifications sent during Lifecycle Management events and Access Request workflows. You can personalize messaging, add branding, and include event-specific information through placeholders.
Learn more about Notification Templates
Enable Integrations: Configure your data sources and enable them for Lifecycle Management. Lifecycle Management Integrations
Define Access Profiles: Create profiles that map your organizational structure to application-specific entitlements. Creating Access Profiles
Create Policies: Add policies to automate identity management processes. Building Lifecycle Management Policies
Configure Workflows: Design workflows within policies to handle specific lifecycle events. Configuring Workflows
For an overview of Lifecycle Management configuration using Okta, Workday, and Active Directory, see Lifecycle Management with Workday, Okta, and Active Directory.
For API documentation, see Lifecycle Management APIs.
Managing and monitoring Lifecycle Management from a central dashboard
The Lifecycle Management Dashboard provides a centralized interface for monitoring automatic provisioning and deprovisioning of user access - both birthright access granted by Veza Lifecycle Management and just-in-time access granted by Veza Access Reviews. This dashboard gives you an at-a-glance view of your configuration, status, and recent activity.
The dashboard is the primary landing page for Lifecycle Management and Access Requests and can help with routine monitoring, error resolution, policy validation, activity review, and integration health checks.
The dashboard is organized into several key sections:
Policies: Displays your most recently updated Lifecycle Management Policies and their status
Access Profiles: Shows configured Access Profiles and usage metrics
Identities: Provides a visualization of managed identities
Integrations: Top Integrations enabled for Lifecycle Management and Access Requests along with any error statuses
Access Requests: Tracks pending and completed access requests
Errors: Displays recent Lifecycle Management and Access Requests errors requiring attention (past day, week, or month)
Recent Activity: Shows the most recent Lifecycle Management and Access Requests Events
To navigate to more detailed information, click on any section heading to open the related overview. Click on specific items (such as a policy or integration) to view or edit configuration details.
From the dashboard, you can perform common tasks including:
Create a new policy: Click the "Create Policy" button in the Policies section
Configure Access Profiles: Click the "Create Access Profile" button in the Access Profiles section
Set up a new integration: Click the "Set up Integration" button in the Integrations section
Monitor system health: Review the Errors section for any issues
Track recent changes: Review the Recent Activity section for a log of recent events
Filter activity by time period: Use the time period dropdown (e.g., "Past day") to adjust the view
The Policies section displays all configured Lifecycle Management policies with their current status. Each policy shows its name, associated identity source, number of identities managed, and current status (Running/Stopped).
You can view all policies at a glance, create new ones with the "Create Policy" button, see which policies are actively running, access detailed configuration by clicking on a specific policy, and verify that policies in "Running" status should be active. Learn more about creating and managing policies.
The Access Profiles section shows the total number of configured access profiles and provides a visual representation of profile activity. Access profiles define sets of entitlements granted to users based on their roles.
You can see the total number of configured profiles, create new ones using the "Create Access Profile" button, view profile activity and utilization, and access detailed configuration by clicking into the section. Learn more about Configuring Access Profiles.
The Identities section provides a visual representation of all identities managed through Lifecycle Management and Access Requests. The chart displays the distribution of identities by type or status, giving you an immediate understanding of your identity landscape.
This visualization helps you understand the overall composition of your managed identities, identify distribution patterns across different categories, and track changes in identity distribution over time.
The Integrations section lists all systems connected to Lifecycle Management and Access Requests, displaying the total number of integrations, error status and counts, recently created integrations, and last update timestamps. For each integration, you can see its name and type, current status (including error indicators), and last update timestamp. You can set up new integrations using the "Set up Integration" button, identify and troubleshoot integration errors, and view all integrations by clicking "View all." Review this section regularly to identify any integrations with error states. See Lifecycle Management integrations for more information.
The Access Requests section tracks pending access requests, recently completed requests, and request status (Pending, Completed, Rejected, Cancelled). This section provides visibility into the access request process, allowing you to monitor request volume and status, track completion rates, and identify potential bottlenecks in the access request workflow.
The Errors section displays any Lifecycle Management and Access Requests errors that require attention. When functioning normally with no issues, this section will display "No issues found." If errors occur, this section will list the specific errors, provide context about when and where they occurred, and offer guidance on troubleshooting and resolution. Check this section regularly for any reported issues.
The Recent Activity section shows a chronological log of Lifecycle Management and Access Requests events, including event type, timestamp, affected identity, and entity name. Examine this section to identify any unusual patterns or failed operations. This activity log helps you track recent actions, verify that expected changes have occurred, identify patterns or issues in lifecycle events, and monitor the overall health of your Lifecycle Management or Access Requests implementation.
After familiarizing yourself with the dashboard:
Understanding and configuring different types of Access Profiles for Lifecycle Management and Access Requests
Access Profile Types determine the behavior of for Veza Lifecycle Management and Veza Access Requests. They define common characteristics such as:
Whether the profile can inherit entitlements from other profiles
If the profile can grant entitlements in one or more target applications
The maximum number of entitlements the profile can grant
The specific integrations where entitlements can be granted
Veza provides built-in profile types, such as Profiles and Business Roles, for hierarchical management of birthright entitlements by employee population. You can also create new profile types to meet your organization's Access Requests and Lifecycle Management needs.
Access Profiles define collections of entitlements within one or more target applications that can be assigned to an identity. Depending on the profile type, an access profile can include certain groups or roles, or inherit entitlements from another profile.
For example, you can create different types to organize profiles by:
Applications: Granting access to an application without specific entitlements, such as access to Zoom
Single Entitlements: Defining a single entitlement within a single application, such as a user being added to the DNS Admin group in Active Directory or the Domain Name Administrator role in Entra ID
Application Entitlements: Defining multiple entitlements within a single application, such as access to several Okta Groups
Multi-Application Entitlements: Defining multiple entitlements across different applications, such as for site reliability engineers who need access to GitHub, AWS, Jira, and Snowflake, along with one or more roles and group memberships within each of those applications
Business Roles: Inheriting combinations of other profile types to model sophisticated access privileges, such as all US Call Center employees inheriting US Employee access
Use Access Profile Types to set rules for all profiles using that type. You can create new profile types to implement Lifecycle Management and Access Requests based on how and what access you will grant to employees.
Open Lifecycle Management > Settings
In the Profile Types section, click New Profile Type
In the sidebar, configure the new type:
Basic Information shown when creating Access Profiles:
Name: Display name for the profile type, shown when creating new Access Profiles
Description: Extended description to document the purpose of the profile type
Instructions: Optional custom instructions for using the profile type, shown when creating new profiles. Note that this is useful if allowing self-service Access Profile creation.
On Create Behavior: Set the default policy state for Access Profiles created with this profile type:
Default: Uses Veza's default behavior (currently sets the profile to Initial state, but this may change in future releases)
Initial: The Access Profile is created but remains inactive/non-functional until a user explicitly starts it to move it to Running state
Running: The Access Profile starts in an active state and is immediately functional with no additional action required
Initial Start By Admin: The Access Profile starts in Initial state but requires an administrator (not a regular user) to explicitly start it to move it to Running state
Relationship Options:
Allow Inheritance from Other Access Profiles: When enabled, profiles with this type can use another access profile to specify the exact entitlements.
Allow Direct Relationships: When enabled, you will specify the exact entitlements when creating a profile with this type. When disabled, profiles with this type can only inherit entitlements from another profile
Access Request Policy: Choose the default Access Request Policy to apply access duration controls and approval workflow.
Allow overwrite of Access Request Policy: Enable selection of an alternative policy when Access Profile creators and owners create Access Profiles of this type.
Integrations: Choose if the Access Profile of this type supports multiple integrations, integrations of a single type, or a single instance of a single integration:
Allow multiple integration types: Profiles can have specific entitlements in more than one target integration type (such as one or more entitlements from any Active Directory or Okta integration)
Limit to a single integration type: Entitlements must be within integrations of a specific type (such as one or more entitlements from any Okta integration)
Limit to a single integration: Profiles are limited to a single integration (such as one or more entitlements from a specific Okta integration)
Create a local user account only (if limited to a single integration): Create a local user account without specific entitlements.
Entitlements: Set the maximum number of entitlements that can be added to profiles with this type (0 for unlimited entitlements).
Access Profile creators and owners can choose specific entitlements when editing the profile.
Create New Entitlement if None Exists: Configure the CREATE_ENTITLEMENT action to run when the policy is applied, including:
The target integration and entity type to create
Any member conditions (ANY to apply to all identities, or restricted by a condition string)
Attributes for the created entities using the specified .
Enabling Continuous Sync to periodically recreate and reapply entitlements if removed within the target system.
Click Create Profile Type to save the changes
After saving a profile type, you can edit or delete it on the Lifecycle Management Settings > Profile Types tab.
To manage the users or groups allowed to create profiles of that type, click Actions > Manage Permissions.
To view profiles with a specific type, choose a profile type and click Show Access Profiles.
When working with Access Profile Types, consider the following best practices:
Consistent Naming: Use clear, descriptive names for profile types that indicate their purpose and scope
Appropriate Granularity: Create profile types with the right level of granularity for your organization's needs
Documentation: Add thorough descriptions and instructions to help others understand when to use each profile type
Inheritance Planning: Carefully plan which profile types should inherit from others to create a logical hierarchy
Regular Review: Periodically review profile types to ensure they continue to meet your organization's needs
Good Hygiene: Eliminate profile types that are no longer in use (when the count of Access Profiles with that type equals zero)
Computed properties for advanced workflow triggering and conditional transformations in Lifecycle Management
System attributes are computed properties that Lifecycle Management automatically generates during identity processing. These attributes enable advanced automation scenarios by providing runtime information about identity changes and transformation results.
All system attributes follow the sys_attr__
prefix convention and cannot be manually set or modified.
sys_attr__is_mover
A persistent boolean attribute that indicates whether an identity has undergone changes to monitored properties.
Type: Boolean Persistence: Stored with identity record Available in: Workflow triggers, conditions, and transformers
Configuration: Define monitored properties in the policy configuration:
{
"mover_properties": ["department", "manager_id", "title", "location"]
}
Workflow Trigger Example:
sys_attr__is_mover eq true
Combined Condition Example:
sys_attr__is_mover eq true and department eq "Engineering" and active eq true
The attribute is automatically set to true
when any property in mover_properties
changes during identity update. It is cleared when the identity is unchanged in an extraction cycle, and excluded from change detection to prevent recursive updates.
System attribute names are case-sensitive and must be lowercase in all expressions.
sys_attr__would_be_value
A transient attribute that provides a preview of the transformation result during conditional evaluation.
Type: String Persistence: Transient (exists only during IF statement evaluation) Available in: Conditional transformers only
Usage Example - Conditional Domain Addition:
IF sys_attr__would_be_value co "@"
{email | LOWER}
ELSE
{email | LOWER}@company.com
The above transformer will check if the transformed email already contains "@", preserve existing email addresses, and add domain only when needed.
sys_attr__would_be_value_len
A transient attribute that provides the character length of the transformation result during conditional evaluation.
Type: Number Persistence: Transient (exists only during IF statement evaluation) Available in: Conditional transformers only
Usage Example - Progressive Username Truncation:
IF sys_attr__would_be_value_len le 30
{first_name | LOWER}.{last_name | LOWER | NEXT_NUMBER, 2, 3}
ELSE IF sys_attr__would_be_value_len le 20
{first_name | LOWER | FIRST_N, 10}.{last_name | LOWER | NEXT_NUMBER, 2, 3}
ELSE
{first_name | LOWER | FIRST_N, 1}.{last_name | LOWER | FIRST_N, 1 | NEXT_NUMBER, 2, 3}
For "Leonevenkataramanathan Foster":
First check (≤30 chars): leonevenkataramanathan.foster
(30 chars - passes first condition)
If >30 chars, second check (≤20 chars): leonevenkataramana.foster
(25 chars - fails second condition)
If >20 chars, fallback: l.f
(3 chars - always succeeds)
Alternatives with NEXT_NUMBER: l.f2
, l.f3
, l.f4
NEXT_NUMBER
Preview attributes work with the NEXT_NUMBER
transformer for generating unique alternatives:
IF sys_attr__would_be_value_len le 15
{username | NEXT_NUMBER, 2, 5}
ELSE IF sys_attr__would_be_value_len le 15
{username | FIRST_N, 13 | NEXT_NUMBER, 2, 5}
This evaluates the base value length before applying numbering, ensuring the final result (including numbers) meets constraints.
Only one NEXT_NUMBER transformer is allowed per conditional branch.
The sys_attr__is_mover
attribute supports additional trigger properties for fine-grained control:
{
"trigger_properties": ["department", "location"],
"trigger_string": "sys_attr__is_mover eq true and active eq true"
}
This workflow triggers only when:
The identity is marked as a mover (department or location changed)
The identity is active
At least one of the trigger_properties
has changed since last extraction
Performance Notes
Mover Detection: Comparison occurs for all properties in
mover_properties
during each extractionPreview Evaluation: Each IF branch with preview attributes requires transformation execution
Optimization: Place most common conditions first to minimize preview evaluations
Caching: Preview values are calculated once per condition branch and reused
Transformer Functions Reference - Complete list of transformation functions
Transformers - Attribute transformation concepts and examples
Policies - Configuring mover properties and workflows
Configure fallback formatters for uniquely identifying attributes during identity synchronization
Fallback formatters can help resolve conflicts when provisioning identities with unique attributes. This is particularly useful when automated provisioning requires unique identifiers, but the standard generated values are already in use.
When provisioning new identities through Lifecycle Management, unique attributes like usernames, login IDs, or email addresses must not conflict with existing values. Fallback formatters provide an automated way to generate alternative values when conflicts arise, ensuring provisioning can proceed without manual intervention.
You can configure fallback formatters when configuring a to ensure new users can be onboarded efficiently, regardless of naming conflicts.
The most common use case for fallback formatters is handling username conflicts. For example:
Your organization uses a standard username format of first initial + last name (e.g., jsmith
for John Smith).
When multiple employees have similar names, this can lead to conflicts:
John Smith already has jsmith
Jane Smith already has jsmith1
James Smith already has jsmith2
When Jennifer Smith joins, the fallback formatter automatically assigns jsmith3
, maintaining your naming convention while ensuring uniqueness.
Fallback formatters can be configured as part of the "Sync Identities" action within a Lifecycle Management workflow:
Edit or create a Lifecycle Management policy
Edit the workflow containing the Sync Identities action
In the Sync Identities action configuration, click Add Fallback
Configure the to use as a fallback pattern for the unique attribute that might experience conflicts
Close the action sidebar and save your changes to the policy.
Several transformers can be used for implementing fallback formatters depending on your specific use case.
A typical approach is to use the NEXT_NUMBER
transformer, which is specifically designed to generate sequential numerical alternatives when naming conflicts occur.
The NEXT_NUMBER
transformer:
Generates a set of sequential integers as strings
Takes two parameters: BeginInteger (starting number) and Length (how many numbers to generate)
Is unique among transformers in that it returns multiple values, making it ideal for fallback scenarios
In addition to NEXT_NUMBER
, other transformers can be valuable for creating fallback formatters:
Using Random Alphanumeric for Unique Usernames:
This could generate usernames like jsmith8f3d
instead of sequential jsmith1
, jsmith2
, etc.
Using UUID for Guaranteed Uniqueness:
This would append the first 8 characters of a UUID, creating identifiers like jsmith-a7f3e9c2
.
When configuring a fallback formatter with the NEXT_NUMBER
transformer:
Select the attribute that requires uniqueness (e.g., username, email)
Configure the primary pattern (e.g., {first_initial}{last_name}
)
Add a fallback using the NEXT_NUMBER
transformer to generate sequential alternatives:
This will generate up to 10 alternatives: jsmith1, jsmith2, ... jsmith10
Here are some commonly used fallback patterns:
When Lifecycle Management attempts to provision a new identity with a unique attribute value that already exists:
The system first tries the primary format (e.g., jsmith
)
If a conflict is detected, it automatically tries the first alternative using the NEXT_NUMBER
transformer (e.g., jsmith1
)
If that value also exists, it tries the next alternative (e.g., jsmith2
)
This process continues until either:
A unique value is found
All alternatives from the NEXT_NUMBER
range are exhausted (in which case an error would be reported)
This automated conflict resolution ensures provisioning can proceed without manual intervention, even when your standard naming conventions result in conflicts.
{first_initial}{last_name}{RANDOM_ALPHANUMERIC_GENERATOR(4)}
{first_initial}{last_name}-{UUID_GENERATOR() | SUB_STRING,0,8}
{first_initial}{last_name}{NEXT_NUMBER(1, 10)}
{first_initial}{last_name}
{first_initial}{last_name}{NEXT_NUMBER(1, 10)}
jsmith, jsmith1, jsmith2, etc.
{first_name}.{last_name}
{first_name}.{last_name}{NEXT_NUMBER(1, 10)}
john.smith, john.smith1, john.smith2
{username}@domain.com
{username}{NEXT_NUMBER(1, 10)}@domain.com
{first_name}{last_initial}
{first_name}{last_initial}{NEXT_NUMBER(1, 10)}
johns, johns1, johns2
This guide describes how to enable and configure Active Directory for Lifecycle Management in Veza, including supported capabilities and required configuration steps.
Active Directory integration with Lifecycle Management enables automated user provisioning, access management, and de-provisioning capabilities. This includes creating and managing AD users, group memberships, and disabling accounts when employees leave the organization.
Active Directory serves as an Identity Provider in Lifecycle Management workflows and supports custom properties defined in the integration configuration.
Controls relationships between users and Active Directory groups.
Entity Types: Active Directory Groups
Assignee Types: Active Directory Users
Supports Removing Relationships: Yes
Example Use Cases:
Add users to specific Active Directory groups to manage access
Remove users from groups when access requirements change
Synchronizes identity attributes between Active Directory and downstream systems.
Create Allowed: Yes (New user identities can be created if not found)
Supported Attributes:
Required (Unique Identifiers):
AccountName (No Continuous Sync)
DistinguishedName
UserPrincipalName
Optional:
Email, GivenName, DisplayName, SurName, Title
Description, ManagerID, PrimaryGroupDN
StreetAddress, City, StateOrProvinceName
CountryCode, PostalCode, Company
PhysicalDeliveryOfficeName, JobTitle
Department, CountryOrRegion, Office
Example Use Cases:
Create new user accounts when users are added
Keep user information synchronized across integrated systems
Safely removes or disables access when users leave or no longer need access.
Entity Type: Active Directory Users
Remove All Relationships: Yes (Removes existing group memberships)
De-provisioning Method: Disabled (Users are marked as disabled rather than deleted)
Example Use Cases:
Disable accounts when employees leave
Remove group memberships while retaining audit information
Create a dedicated AD user with minimum required permissions:
Open Active Directory Users and Computers
Navigate to the target Organizational Unit
Right-click > New > User
Complete the new user details form
Recommended name: "Veza AD Lifecycle Manager"
Set a strong password
Uncheck "User must change password at next logon"
New-ADUser -Name "Veza AD Lifecycle Manager" `
-Path "OU=<your_OU>,DC=<domain>,DC=<tld>" `
-GivenName "Veza" `
-Surname "AD Lifecycle Manager" `
-SamAccountName "veza-ad-lcm" `
-AccountPassword (ConvertTo-SecureString -AsPlainText "<password>" -Force) `
-ChangePasswordAtLogon $False `
-DisplayName "Veza AD Lifecycle Manager" `
-Enabled $True
Grant the service account permissions to manage users in the target OUs:
Navigate to the target Organizational Unit
Right-click > Delegate Control
Click Add and enter the service account name
Select these delegated tasks:
Create, delete, and manage user accounts
Reset user passwords and force password change
Read all user information
Modify group membership
Import-Module ActiveDirectory
$OrganizationalUnit = "OU=<your_OU>,DC=<domain>,DC=<tld>"
$Users = [GUID]"bf967aba-0de6-11d0-a285-00aa003049e2"
Set-Location AD:
$User = Get-ADUser -Identity "veza-ad-lcm"
$UserSID = [System.Security.Principal.SecurityIdentifier] $User.SID
$Identity = [System.Security.Principal.IdentityReference] $UserSID
# Create permission for managing users
$RuleCreateDeleteUsers = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, "CreateChild, DeleteChild", "Allow", $Users, "All"
# Create permission for password resets
$ResetPassword = [GUID]"00299570-246d-11d0-a768-00aa006e0529"
$RuleResetPassword = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($Identity,
"ExtendedRight", "Allow", $ResetPassword, "Descendents", $Users)
# Apply permissions
$ACL = Get-Acl -Path $OrganizationalUnit
$ACL.AddAccessRule($RuleCreateDeleteUsers)
$ACL.AddAccessRule($RuleResetPassword)
Set-Acl -Path $OrganizationalUnit -AclObject $ACL
Navigate to Configurations > Integrations
Either:
Create a new Active Directory integration
Edit an existing Active Directory integration
Enable Lifecycle Management:
Check Enable Lifecycle Management
Enter the Lifecycle Management Username (service account created above)
Enter the Lifecycle Management Password
Save the configuration
Note: The AD User created for lifecycle management can be the same as the primary AD User created for extraction, provided that the user has all required permissions listed above.
How source system properties become Veza attributes
When connecting to integrated systems (see Veza Integrations), Veza ingests properties from the source systems (e.g., Workday, Okta, Active Directory) and normalizes them into standardized attributes that appear when configuring Workflow trigger conditions, configuring Actions, and in Identities views.
While these standardized attributes are intended to ensure consistent naming across different systems, it is important to understand that some attributes may appear differently than their original names in the source system.
You can retrieve the original attribute names for enabled Lifecycle Management integrations using the ListLifecycleManagerDatasources API.
Veza normalizes all property names for consistency:
Employee ID
employee_id
Spaces → underscores
BusinessTitle
business_title
CamelCase → snake_case
Cost-Center
cost_center
Special chars removed
Department Code
customprop_department_code
Custom fields prefixed
The following normalization rules typically apply:
Source properties are converted to lowercase
Any spaces and hyphens become underscores
Special characters removed
CamelCase converted to snake_case
Custom fields are identified with a customprop_
prefix
System-computed fields are identified with the sys_attr__
prefix
The following sections include some examples of how Veza handles attributes from common integrations.
Veza recognizes and standardizes many common attributes across source systems:
employee_id
string
Employee identifier
E-98765
email
string
Primary email
department
string
Department name
Engineering
title
string
Job title
Senior Engineer
business_title
string
Business position
Senior Engineer
manager
string
Manager reference
managers
list
List of managers
[John Smith]
is_active
boolean
Active status
true
hire_date
date
Employment start date
2024-01-15
cost_center
string
Financial allocation
CC-1000
Veza will make conversions to some attribute names from the source integration. For example, sAMAccountName
in Microsoft Active Directory is shown as account_name
for Active Directory Users in Veza Access Graph.
Workday → Veza
Worker ID
workday_id
Unique worker identifier
Employee ID
employee_id
Employee number
Business Title
business_title
Job position
Cost Center
cost_center
Financial allocation
Employee Type
employee_types
List (e.g., Full Time)
Manager
managers
List of manager names
Okta → Veza
login
login
Username
email
Primary email
status
status
ACTIVE, SUSPENDED, etc.
department
department
Department name
manager
manager
Manager's email/ID
Active Directory → Veza
sAMAccountName
account_name
Pre-Windows 2000 login
distinguishedName
distinguished_name
Full LDAP path
userPrincipalName
user_principal_name
user@domain format
memberOf
member_of
List of group DNs
department
department
Department name
title
title
Job title
Some integrations support custom property extraction for organization-specific fields from custom reports or extended schemas:
Always prefixed with customprop_
Automatically discovered during extraction once enabled
Follow standard normalization rules (lowercase, underscores)
Examples:
customprop_department_code
- Custom department identifier
customprop_employeeou
- Organizational unit
customprop_region
- Geographic region
customprop_project_code
- Project allocation
Some entity attributes are computed by Veza, and not derived from source data:
sys_attr__is_mover
- Identity has changed monitored properties
sys_attr__would_be_value
- Preview value in conditional transformers
sys_attr__would_be_value_len
- Preview value length in conditional transformers
See System Attributes for details.
When configuring a Workflow trigger condition or an action that syncs attributes, you can choose from available attributes using a dropdown menu.
Primary Source - Attributes from the main identity source appear without prefixes:
workday_id
employee_id
business_title
hire_date
email
customprop_department_code
Secondary Sources - Attributes from additional sources are prefixed with the entity type:
OktaUser.login
OktaUser.department
AzureADUser.job_title
ActiveDirectoryUser.distinguished_name
In Workflow Conditions:
employee_types co "Full Time" and department eq "Engineering"
In Transformers:
{first_name}.{last_name}@{customprop_domain}.com
With Secondary Sources:
OktaUser.status eq "ACTIVE" and WorkdayWorker.is_active eq true
System Attributes - Computed attributes for advanced scenarios
Transformers - Modifying and combining attribute values
Policies - Using attributes in workflow conditions
Before you begin creating draft for automating Lifecycle Management workflows, you should establish and document how employees in your organization are mapped to business roles, and corresponding birthright entitlements (default access permissions granted based on an employee's role) such as groups and roles in target applications.
Implementing Veza Lifecycle Management will require:
Defining segmentation criteria in terms of Business Roles for identities in your organization.
Defining Role Conditions used in Lifecycle Management policies that Veza will use to match roles to identities, based on attributes from the source of identity.
Defining Profiles for each target application that will map Business Roles to application-specific entitlements.
Assigning Profiles to Business Roles to enable business rules.
The topics in this document will help you structure your Lifecycle Management implementation, and establish foundations that you can use to simplify access management throughout the employee lifecycle.
Key considerations and requirements
Is a lifecycle management process defined for your organization?
If yes: Begin assessing your current policies for implementation with Veza Lifecycle Management.
If no: Work with application owners, HR administrators, and other stakeholders to establish protocols for granting and revoking access as employees join, depart, or change roles.
Do you have one, or even multiple sources of truth for employee identity metadata?
At least one source of identity is required to trigger Lifecycle Management actions when there are changes in the data source. This data source could be an HRIS system, identity provider, directory service, or an exported report.
Veza supports importing employee records from built-in , OAA integrations using the , and .
For example, you may have different sources of identity for full-time and employees and contractors.
What scenarios will be automated?
A range of applications can be sources of identity and targets for Lifecycle Management, with different actions supported for each integration. See and for the current capabilities.
Begin by identifying and cataloging the different roles that can be assigned to employees and their digital identities within your organization. Users will be granted entitlements within target applications based on these business roles based on your Lifecycle Management .
This list of business roles might be sourced from an organization chart, or a human resources information system (HRIS). These roles can be defined in terms of any discriminating attributes from a source of identity, such as:
Employee or contractor status
Roles and job positions
Business Units (BUs)
Locations
Define and list the different populations of employees with different levels of access in your organization (such as by roles, regions, and teams).
Organize the populations hierarchically, each inheriting the access granted to its parent population. For example, you might have a structure "All Employees" > "Sales Team" > "Sales Managers," with each inheriting the access granted to the parent.
Create a in Veza to model each segment.
Example Business Roles:
Sales
Developers
Executive Employees
US Employees
China Employees
Identify the attributes and conditions that will identify the segment each user belongs to. The possible attributes will depend on the employee metadata provided by your HRIS or other source of truth for identity.
For example, you might assign certain Active Directory groups only to US employees, identified by a source Workday Worker's work_location
. To define these conditions, you will need to understand what attributes are available within the source of truth, and how the values map to each employee segment.
Consider how employee records are structured in your source of identity, including all the built-in attributes belonging to an identity, and the possible values.
Check if any custom attributes can be used to define role conditions, and ensure these are enabled in the Veza authorization graph.
Document how employee populations correspond to the attribute values contained in the source of identity.
Examples: Source attributes for role conditions
The following standard attributes are available by all HRIS integrations that use an Open Authorization API template, along with any enabled for the integration. You can typically import data from any HRIS system to Veza using this template, sourced from a generated report, API calls, or CSV data.
Using this standard identity metadata, a Lifecycle Management workflow runs specific actions for identities where some or all of the conditions are true:
Employment Status equals "Pending"
Employment Types equals "Full Time"
Department equals "Engineering"
Work Location equals "US"
Cost Center equals "R&D"
Start Date on or after "2025-01-01"
A Profile defines a set of entitlements for a specific application that can be assigned to users. For each target application, application owners will need to establish levels of birthright entitlements by defining Profiles mapped to groups, roles, or other entitlements that can be assigned to a user.
Review target applications to validate that the expected entitlements are configured, with the correct scopes and permissions for the Profiles they will be associated with.
Create Lifecycle Management mapped to those entitlements.
Examples: Access Profiles
When configuring the action, administrators can grant or revoke access by choosing a Business Role that inherits the desired Profile.
Configure to inherit the corresponding access profiles, mapping entitlements to employee segments.
Create Business Roles for each segment.
For each Business Role, inherit a corresponding access profile.
Assign one or more Profiles to each Business Role as needed to fully define the birthright entitlements for each position.
Examples: Map Business Roles to Profiles
Asia Employees
US Employees
Developers
Attributes from the source of identity can determine the attributes of users in target systems when creating or updating a target entity.
For example, a provisioned Okta User's country_code
might be set to a source Workday Worker's work_location
. Additionally, the Okta User manager
attribute could be continually synchronized to match the Worker’s manager
.
Target synced attributes can have fixed values (e.g., always true
), can match a source attribute, or contain a combination of source values, transformed as needed to match the required format. Rules for synchronizing attributes are managed with .
For each application, understand the supported attributes for provisioned users.
Assess the identity metadata from your source of truth to decide how source entity attributes will be used to set the values of target entity attributes.
Veza can synchronize attributes during provisioning and de-provisioning workflows, and whenever a change is detected in the source of identity. Decide which attributes should be kept in Continuous Sync, and which should only be created (and never modified after creating an entity).
Examples: Synced Attributes
Sync Active Directory Accounts for Active Employees (Joiners/Movers)
When provisioning AD Users, create user attributes based on values in the source of identity. These attributes can also be kept up-to-date with the source of identity when there are changes, by enabling Continuous Sync.
Sync Active Directory Attributes for Withdrawn Employees (Leavers)
When disabling AD Users, update the DN and Primary Group DN to a group and OU reserved for terminated employees:
Moving leavers into a "Terminated Users" group (via the primary_group_dn attribute) effectively restricts access to systems that rely on Active Directory for authentication and authorization.
Updating the distinguished_name to place leavers in a specific organizational unit (OU), like "Evergreen Termination," separates active users from inactive ones, and enables the application of policies, scripts, and queries that target inactive users without affecting active employees.
Configuring the GitHub integration for Veza Lifecycle Management.
The Veza integration for GitHub enables automated user lifecycle management, with support for user provisioning, team membership management, and account deprovisioning.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as organization and team memberships for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities by suspending accounts
✅
SOURCE_OF_IDENTITY
GitHub can act as a source system for identity lifecycle policies
❌
This document includes steps to enable the GitHub integration for use in Lifecycle Management, along with supported actions and notes. See Supported Actions for more details.
You will need administrative access in Veza to configure the integration and site administrator privileges in GitHub Enterprise Server.
Ensure you have an existing GitHub integration in Veza or add a new one for use with Lifecycle Management.
Verify your GitHub integration has completed at least one successful extraction
The GitHub integration will need the additional required GitHub App permissions:
Organization permissions - Members (Write)
- Required for managing organization memberships
Organization permissions - Administration (Write)
- Required for administrative operations
Repository permissions - Administration (Write)
- Required for managing team memberships
Important: GitHub LCM operations use Admin API endpoints that require site administrator privileges. These operations are typically available in GitHub Enterprise Server environments, not GitHub.com.
To enable the integration:
In Veza, go to the Integrations overview
Search for or create a GitHub integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your GitHub data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for GitHub in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
GitHub can be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following lifecycle management Actions:
Primary action for user management (creating or updating users):
User login cannot be changed after creation
GitHub usernames must be unique and follow GitHub naming rules (39 characters max, alphanumeric plus hyphens)
Email addresses must be unique across the GitHub instance
Requires site administrator privileges for user creation operations
The following attributes can be synchronized:
Both adding and removing memberships are supported. Organization and team memberships are automatically removed during deprovisioning.
Add and remove organization memberships with member role
Add and remove team memberships with member role
Synchronize access assignments based on external identity changes
Track membership changes for audit purposes
When a user is deprovisioned:
User account is suspended in GitHub Enterprise Server
All organization and team memberships are removed automatically
Commit history and attribution are preserved for audit and compliance
Account can be reactivated if needed (unsuspended)
User receives appropriate error messages when attempting to access GitHub
Create GitHub accounts and assign appropriate access for new developers:
Identity Sync: Create user account with basic profile information
Organization Access: Add user to primary GitHub organization
Team Assignment: Assign to development teams based on department
Profile Setup: Configure public email and display name
Update GitHub access when employees change departments or roles:
Relationship Updates: Remove existing team memberships
New Access: Add memberships for new role requirements
Audit Trail: Track all membership changes for compliance
Securely remove access while preserving development history:
Account Suspension: Suspend GitHub account to prevent access
Membership Removal: Remove all organization and team memberships
History Preservation: Maintain commit attribution and repository history
Compliance: Generate audit trail of all access removal actions
Employee Number
Unique identifier for the employee.
Company
The company or subsidiary the employee works for.
First Name
Employee's first name.
Last Name
Employee's last name.
Preferred Name
Employee's preferred first name.
Display Full Name
Full name for display; includes preferred first name if available.
Canonical Name
Employee's canonical name.
Username
Username as shown in the integration UI.
Employee's work email (unique).
IDP ID
ID for connecting to the destination IDP provider.
Personal Email
Employee's personal email.
Home Location
Employee's home location.
Work Location
Employee's work location.
Cost Center
Cost center ID associated with the employee.
Department
Department ID (Group ID) of the employee.
Managers
List of employee IDs of the employee's managers.
Groups
List of group IDs the employee is associated with.
Employment Status
Employment status, e.g., ACTIVE
, PENDING
, or INACTIVE
.
Is Active
Indicates if the employee is active.
Start Date
The date the employee started working.
Termination Date
Employee's termination date, if applicable.
Job Title
Employee's job title.
Employment Types
Type of employment, e.g., FULL_TIME
, PART_TIME
, INTERN
, CONTRACTOR
, or FREELANCE
.
Primary Time Zone
Employee's primary time zone.
AD Executive Employees
Active Directory
Executive Employee - Manager US (Active Directory Group)
AD Engineering Managers
Active Directory
Engineering - Manager US (Active Directory Group)
Azure Helpdesk Role
Azure
Helpdesk Administrator (Azure AD Role)
Google China Employees
Google Cloud
Google China Employees (Google Group)
account_name
display_full_name
{display_full_name}
distinguished_name
first_name, last_name
CN={first_name} {last_name},OU=Minnetonka,OU=US,OU=Evergreen Staff,DC=evergreentrucks,DC=local
user_principal_name
username
{username}@evergreentrucks.com
username
{username}@evergreentrucks.com
display_name
display_full_name
{display_full_name}
given_name
first_name
{first_name}
sur_name
last_name
{last_name}
country_code
work_location
{work_location}
job_title
job_title
{job_title}
primary_group_dn
-
CN=Domain Users,CN=Users,DC=evergreentrucks,DC=local
account_name
display_full_name
{display_full_name}
distinguished_name
first_name, last_name
CN={first_name} {last_name},OU=Evergreen Termination,OU=Evergreen Staff,DC=evergreentrucks,DC=local
primary_group_dn
-
CN=Terminated Users,OU=Evergreen Groups,DC=evergreentrucks,DC=local
This guide describes how to enable and configure Workday for Lifecycle Management in Veza, including supported capabilities and configuration steps.
Workday integration enables automated Lifecycle Management workflows using Workday as a source of truth for employee identity information, including:
Automated security group assignments for new employees
Dynamic group membership updates during role changes
Access removal during offboarding
Email synchronization between Workday and downstream systems
Workday serves as an authoritative source for employee identity information:
Entity Type: Workday Worker
Purpose: Used as the source of truth to trigger lifecycle management workflows based on worker record changes
Controls access to Workday security groups.
Entity Types: Workday Security Group
Assignee Types: Workday Account
Supports Relationship Removal: Yes
Updates email addresses in Workday worker records to maintain consistency with other systems.
Entity Type: Workday Worker
Purpose: Ensures Workday remains the single source of truth for employee email addresses
The integration supports custom attributes defined in your Workday configuration, which can be used in lifecycle management conditions and transformers.
Log into Workday and search for Edit Business process security policy
Under Business Process Type, select Work Contact Change
Find "Initiating Action: Change Work Contact Information (REST Service)"
Create a Segment-Based Security Group
Configure the security group:
Add the security group created for Veza integration
Add "Worker" scope to Access Rights
Verify the security group appears in Initiating Action Security groups
Click OK and Done to save changes
Search for Activate Pending Security Policy Changes
Review changes, add a comment, and click OK
Verify changes in Business Process Security Policy
Add these Domain Permissions to the security group:
View and Modify
Workday Query Language
View and Modify
Person Data: Work Email
View and Modify
Person Data: Work Contact Information
View and Modify
Worker Data: Staffing
View and Modify
Worker Data: Public Worker Reports
Get Only
Security Configuration
Get Only
Business Process Administration
View and Modify
Security Administration
View and Modify
Workday accounts
View and Modify
Special OX Web Services
Get and Put
User-Based Security Group Administration
Open Edit API Client
Add required scopes:
Staffing
Contact Information
System
Tenant Non-Configurable
Organizations and Roles
Navigate to Configurations > Integrations
Either:
Create a new Workday integration
Edit an existing Workday integration
Enable Lifecycle Management:
Check Enable Lifecycle Management
If using custom attributes, configure them in the Custom Properties section
The integration uses these API endpoints for email write-back:
%s/ccx/api/person/v3/%s/workContactInformationChanges/%s/emailAddresses
%s/ccx/api/person/v3/%s/workContactInformationChanges/%s/submit
%s/ccx/api/staffing/v5/%s/workers/%s/workContactInformationChanges
For general metadata discovery, WQL queries access:
allWorkdayAccounts
allWorkers
securityGroups
domainSecurityPolicies
businessProcessTypes
Workday Workers are the primary entity for identity information
Bidirectional management of Account-Security Group relationships is supported
Email write-back operates on Worker entities, not Account entities
Custom attribute availability depends on your Workday configuration
The Sync Identities action is not currently supported for Workday
Configuring the Oracle Database integration for Veza Lifecycle Management
The Veza integration for Oracle DB enables automated user provisioning, access management, and deprovisioning capabilities. This integration allows you to synchronize identity information, manage group memberships, and automate the user lifecycle from onboarding to offboarding.
This document outlines the steps to enable Oracle DB integration for use in Lifecycle Management, including supported actions and relevant notes. See for more details.
You will need administrative access in Veza to configure the integration.
Ensure you have an existing integration in Veza or add a new one for use with Lifecycle Management.
Verify your Oracle DB integration has completed at least one successful extraction.
Database administrator privileges in Oracle DB (ability to create common users and grant privileges)
For multi-tenant configurations: access to CDB$ROOT container
Supported Oracle Database versions: 19c, 21c, or 23ai
Configuration Steps
To enable the integration:
In Veza, go to the Integrations overview
Search for or create an Oracle DB integration
Check the box, Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your Oracle DB data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for Oracle DB in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Oracle DB can serve as a source for identity information in Lifecycle Management . User identity details are synchronized from Oracle DB, with changes propagated to connected systems.
Oracle DB can also be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following Lifecycle Management :
The following attributes can be synchronized:
Entity Type: OracleDB User
Create Allowed: Yes
Method: SQL CREATE USER / ALTER USER
Entity Types: OracleDB Role
Assignee Types: OracleDB User
Supports Remove: Yes
Method: SQL GRANT ROLE / REVOKE ROLE
Entity Type: OracleDB User
Method: DISABLED (account lock via ALTER USER ... ACCOUNT LOCK)
Removes Relationships: Yes
Entity Type: OracleDB User
Method: Permanent deletion via DROP USER
Create an Oracle DB user account with the Sync Identities action
Assign default role based on department with Manage Relationships
Set password (requires change on first login)
Configure profiles and tablespaces
Update user attributes (profile, tablespaces) with Sync Identities
Remove old role assignments with Manage Relationships
Grant new roles appropriate for the new position
Lock user account with Deprovision Identity (ACCOUNT LOCK)
Remove all role assignments
Preserve the user record for audit purposes
Optional: Delete user permanently with Delete Identity (DROP USER)
Configuring the Snowflake integration for Veza Lifecycle Management.
The Veza integration for Snowflake enables automated user lifecycle management, with support for user provisioning and de-provisioning, role assignment management, and attribute synchronization.
This document includes steps to enable the Snowflake integration for use in Lifecycle Management, along with supported actions and notes. See for more details.
You will need administrative access in Veza to configure the integration and USERADMIN
role or equivalent privileges in Snowflake.
Ensure you have an existing in Veza or add a new one for use with Lifecycle Management.
Verify your Snowflake integration has completed at least one successful extraction
The Snowflake integration will need the additional required privileges:
CREATE USER
privilege on the account for user provisioning
GRANT ROLE
privilege for role assignments
OWNERSHIP
privilege on target roles for role management
Access to a warehouse for executing queries during lifecycle operations
Important: The Snowflake user account used for Lifecycle Management operations should have USERADMIN
role or higher privileges to ensure proper user and role management capabilities.
To enable the integration:
In Veza, go to the Integrations overview
Search for or create a Snowflake integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your Snowflake data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for Snowflake in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Snowflake can be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following lifecycle management :
Primary action for user management (creating or updating users):
User names must be unique and follow Snowflake identifier naming conventions
Login names are used for authentication and must be unique
Passwords are automatically generated and set to require change on first login
Users are created with appropriate default settings for the Snowflake environment
The following attributes can be synchronized:
Role assignment management for users:
Add and remove role assignments for users
Synchronize role memberships from source systems
Support for direct role grants to users
Roles must exist in Snowflake before assignment
Within Snowflake, roles can be associated with:
Database and schema access permissions
Table and view privileges
Warehouse usage rights
Administrative privileges for account management
When a user is deprovisioned:
User account is disabled (set DISABLED = TRUE
)
Role assignments are removed to revoke access
User attributes are preserved for audit purposes
Account can be reactivated if needed for compliance requirements
Automated provisioning when a new employee joins:
Create User Account: Sync identity attributes from HR system to create Snowflake user with name and login details
Assign Department Role: Grant role based on department attribute (e.g., SALES_ANALYST, DATA_ENGINEER)
Set Default Role: Configure default role for the user's session
Add Email and Comments: Populate user profile with contact information and descriptive notes
Managing access when employees change roles:
Update User Attributes: Sync changed attributes like email or comments
Remove Old Roles: Revoke previous role assignments that are no longer appropriate
Grant New Roles: Assign roles appropriate for the new position
Update Default Role: Change the user's default role for new sessions
Secure access removal when employees leave:
Disable Account: Set user account to disabled status
Revoke All Roles: Remove all role assignments to eliminate data access
Preserve Audit Trail: Maintain user record and history for compliance
Optional Cleanup: Remove user completely with DROP USER if no audit trail is needed
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships for identities
✅
DEPROVISION_IDENTITY
Safely removes or suspends access for identities
✅
DELETE_IDENTITY
Deletes the identity name, specifically the unique identifier associated with it.
✅
CREATE_ENTITLEMENT
Creates entitlements such as groups or roles
❌
SOURCE_OF_IDENTITY
Oracle DB provides worker data as input for identity lifecycle policies
❌
username
Yes
String
User name Identifier
Must be unique, follow Oracle identifier naming rules
password
No
String
User password
Auto-generated if not provided, requires change on first login
account_status
No
String
Account status
Values: OPEN, LOCKED, EXPIRED, etc.
profile
No
String
User profile
Profile must exist in the Oracle DB
default_tablespace
No
String
Default tablespace
Tablespace must exist
temporary_tablespace
No
String
Temporary tablespace.
Typically TEMP
authentication_type
No
String
Authentication method
PASSWORD, EXTERNAL, GLOBAL, etc.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls role assignments for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities
✅
SOURCE_OF_IDENTITY
Snowflake can act as a target system for identity lifecycle policies from other sources
✅
name
Yes
String
User name identifier
Unique identifier, immutable
login_name
No
String
Login identifier for authentication
Defaults to name if not provided
No
String
User's email address
Must be valid email format
comment
No
String
User description or notes
default_role
No
String
Default role for user sessions
Role must exist in Snowflake
password
No
String
User password
Auto-generated if not provided
disabled
No
Boolean
User account status
true = disabled, false = active
Understanding the Lifecycle Management Activity Log for tracking provisioning operations
The Lifecycle Management Activity Log provides visibility into all provisioning operations performed by Veza's Lifecycle Management system. It serves as a record of all activities, including successful actions, errors, and failures.
A Lifecycle Management policy defines automated workflows that execute when changes occur in a source of identity. The Activity Log tracks all aspects of these operations through a hierarchical structure:
Policies define the overall automation framework for managing identities
Workflows determine which actions should be executed for specific identities
Actions represent specific operations to be performed on target systems
Jobs are individual tasks executed as part of actions
Events record atomic changes resulting from successful jobs
The Activity Log provides four views of this activity across different tabs: Events, Jobs, Actions, and Workflow Tasks.
Each tab can help track recent actions, verify that expected changes have occurred, identify patterns or issues in lifecycle events, and monitor the overall health of your Lifecycle Management implementation.
The Events tab shows individual changes made to entities and relationships within the system. Each event represents an atomic change resulting from a successful action.
Event Type
The type of event that occurred (e.g., REMOVE_RELATIONSHIP, ADD_RELATIONSHIP, SYNC_IDENTITY)
Timestamp
When the event occurred
Success
Whether the event completed successfully (True/False)
Identity
The identity associated with the event
Entity Name
The name of the entity affected by the event
Entitlement Entity
The entitlement entity involved in the event, if applicable
Message
Additional details or error messages related to the event
The Jobs tab displays individual jobs executed as part of actions. Jobs represent specific tasks performed on target systems, such as creating a user account or updating attributes. Use this tab to review whether individual jobs executed successfully or encountered an error and could not be completed.
Started At
When the job started
Completed At
When the job completed
Action Name
The name of the action that initiated the job
Action Type
The type of action (e.g., SYNC_IDENTITIES, MANAGE_RELATIONSHIPS)
Identity
The identity associated with the job
State
The current state of the job (Completed, Errored)
Any Changes
Whether the job resulted in changes to the system
Error Message
Detailed error information if the job failed
The Actions tab shows high-level operations triggered by workflows. Actions typically involve one or more jobs that work together to accomplish a specific goal.
Started At
When the action started
Completed At
When the action completed
Action Name
The name of the action
Action Type
The type of action (e.g., SYNC_IDENTITIES, MANAGE_RELATIONSHIPS)
State
The current state of the action (Completed, Errored)
Jobs Started
Number of jobs initiated by this action
Any Changes
Whether the action resulted in changes to the system
See Actions for more details on supported actions and configuration options.
The Workflow Tasks tab displays workflows executed for specific identities. Workflows represent a sequence of actions executed as part of a Lifecycle Management Policy.
Workflow
The name of the workflow
Identity
The identity for which the workflow was executed
Scheduled For
When the workflow was scheduled to run, if applicable
Started At
When the workflow started
Completed At
When the workflow completed
Entity Type
The type of entity processed by the workflow
State
The current state of the workflow (Completed, Errored)
Messages
Additional details or error messages related to the workflow
For each identity, Lifecycle Management follows this process:
Validation: The system validates the identity against workflow trigger conditions
Execution Determination: The system determines whether execution is needed based on:
Identity state (e.g., CREATED, CHANGED, UNCHANGED)
Continuous sync settings
Last execution time (for unchanged identities)
Task Creation: If execution is needed, a workflow task is created
Action Execution: The system executes conditions and actions via the task runner
Result Storage: The result is stored as an event in the Activity Log
The Activity Log provides filtering and search options to help locate particular events:
Filter by time period: Use the date range filters to focus on date ranges
Search by identity or entity: Use the search fields to find activities related to unique identities or entities
Filter by event type or state: Use the dropdown filters to focus on event type or state
View error messages: Review issues by checking for error messages in the Message column
Veza maintains all Lifecycle Management activity logs for audit purposes. These logs are retained even if the associated integration is removed, maintaining a full historical record of all provisioning operations.
Note: Events shown in the Activity Log are distinct from the system-wide Event Logs found in the Veza Administration section.
Configure the conditions and actions that execute when workflows run.
When creating Lifecycle Management Policies, you can configure workflows that define actions to execute during different employment lifecycle scenarios, such as when an employee is onboarded, changes function or role, or is withdrawn from the organization. Actions can be executed in sequence based on specific conditions, enabling you to automate onboarding and offboarding actions within Lifecycle Management, across systems in your environment.
Policies and workflows define how Veza automates identity management tasks across your environment by describing conditional actions to execute for different employee populations.
Define the overall automation framework for managing identities throughout their lifecycle
Specify which source of identity triggers the automation
Can contain multiple workflows to handle different scenarios (joiner, mover, leaver)
Support continuous synchronization to keep identities up-to-date
Enable email notifications and webhooks for action-related events
Define specific sequences of actions that execute based on trigger conditions
Handle different lifecycle scenarios (e.g., new hire onboarding, role changes, terminations)
Support conditional execution based on user attributes (department, location, role, etc.)
Allow for complex decision trees through nested conditions
Execute actions in a defined order when conditions are met
Define when specific actions should occur within a workflow
Can be based on any attribute from the source of identity
Support SCIM filter expressions for precise targeting
Can be nested to create sophisticated logic trees
Can trigger multiple actions when met
Can spawn additional conditions after successful action completion
Example Conditions for Lifecycle Management Actions:
Add to engineering groups based on department:
department eq "Engineering"
Grant manager access based on role:
is_manager eq true
Assign cost center groups:
cost_center eq "IT-1234"
Add to contractor AD groups:
employment_type eq "CONTRACTOR"
Represent specific tasks such as creating users, syncing attributes, or managing access
Types of actions include:
SYNC_IDENTITIES: Create/update user accounts
MANAGE_RELATIONSHIPS: Grant/revoke access
CREATE_EMAIL: Generate email addresses
DEPROVISION_IDENTITY: Disable/remove access
WRITE_BACK_EMAIL: Update source system
PAUSE: Add workflow delays
SEND_NOTIFICATION: Trigger alerts
The following workflow configuration for a Lifecycle Management Policy enables provisioning actions for Active Directory users when workers are added in Workday:
Create an Active Directory user, synchronizing attributes with the source Workday Worker
Create email addresses for new employees in Exchange Server
Update the Workday Worker and AD User records to include the new email
Grant entitlements by assigning Access Profiles according to the Worker's department
When provisioning users, Veza synchronizes attributes for active employees and creates them during AD User provisioning. These attributes can be transformed from attributes in the source of identity (Workday):
account_name
display_full_name
{display_full_name}
distinguished_name
first_name, last_name
CN={first_name} {last_name},OU=Minnetonka,OU=US,OU=Evergreen Staff,DC=evergreentrucks,DC=local
user_principal_name
username
{username}@evergreentrucks.com
username
{username}@evergreentrucks.com
display_name
display_full_name
{display_full_name}
given_name
first_name
{first_name}
sur_name
last_name
{last_name}
country_code
work_location
{work_location}
job_title
job_title
{job_title}
primary_group_dn
-
CN=Domain Users,CN=Users,DC=evergreentrucks,DC=local
To de-provision users, Veza moves accounts to a terminated users group and adds them to an OU for terminated employees:
account_name
display_full_name
{display_full_name}
distinguished_name
first_name, last_name
CN={first_name} {last_name},OU=Evergreen Termination,OU=Evergreen Staff,DC=evergreentrucks,DC=local
primary_group_dn
-
CN=Terminated Users,OU=Evergreen Groups,DC=evergreentrucks,DC=local
Moving leavers into a "Terminated Users" group (via the primary_group_dn
attribute) effectively restricts access to systems that rely on Active Directory for authentication and authorization
Updating the distinguished_name
to place leavers in a specific organizational unit (OU) like "Evergreen Termination" separates active users from inactive ones and enables the application of policies, scripts, and queries that target inactive users without affecting active employees
Note on Action Hierarchy: The "Sync Identities" action is the only action type that can be declared at the root condition level. All other actions (such as Manage Relationships, Create Email, etc.) must be defined within sub-conditions after establishing a root condition with "Sync Identities". The UI enforces this hierarchy and will show a warning when adding non-Sync actions at the root level.
Synchronizes identity attributes between systems, with options to:
Create new identities if they don't exist
Update attributes of existing identities
Enable continuous sync to keep attributes aligned with the source of truth
Example Use Cases:
Create new user accounts in target systems when employees join
Update user attributes when information changes in HR systems
Ensure consistent user information across multiple platforms
Entity Type
The data source and type of identity to sync (e.g., Okta User, Azure AD User)
Create Allowed
Whether new identities can be created if not found
Continuous Sync
Keep attributes in sync even after initial creation
Common Synced Attributes
Shared transformation rules across multiple sync actions
Action Synced Attributes
Create, format, and modify the specified target attributes. See for more details
Controls entitlements such as group memberships and role assignments for identities.
Example Use Cases:
Add users to appropriate security groups, roles, permission sets, or other access-grant entities
Remove users from groups during role changes
Update entitlements when employees move between departments
Access Profiles
Groups or roles to which to add the identity. See for more details about managing birthright entitlements
Remove Existing Relationships
Whether to remove current relationships created during other Lifecycle Management actions before adding new ones
Integrates with an email provider to create email addresses for identities. This action is often used in combination with other actions in new hire and temp-to-hire workflows.
Example Use Cases:
Create corporate email accounts for new employees
Establish shared mailboxes for teams or projects
Entity Type
The type of identity to create an email for
Action Synced Attributes
Define how email attributes should be formatted. See for more details
Sync Action Name
Reference to sync action for conflict resolution
Safely removes or disables access for identities when they withdraw from the organization.
Example Use Cases:
Disable accounts when employees or contractors leave
Revoke access while maintaining audit records
Transition resources and non-human identities when owners depart
Entity Type
The data source and target entity type to disable, delete, or lock
Remove All Relationships
Whether to remove existing group memberships and role assignments
Relationships to Create
Access Profile to apply after deprovisioning (e.g., move to specific groups)
Common Synced Attributes
Shared transformation rules across multiple deprovisioning actions
Action Synced Attributes
Target attributes to create, format, and modify for de-provisioned entities
Updates HRIS or other systems with email addresses created in other actions.
Example Use Cases:
Update employee records with newly created email addresses
Sync email information back to master HR systems
Ensure consistent email records across all platforms
Entity Type
The type of entity to update with email information
Introduces a deliberate delay in the workflow execution.
Example Use Cases:
Allow time for system propagation between actions
Implement rate limiting in multi-step workflows
Coordinate timing with external processes
Duration in seconds
Number of seconds to pause the workflow
Triggers email notifications and webhooks based on lifecycle events and action success or failure. Notifications can be added to any action type under Edit Action > Action Notification Settings.
Example Use Cases:
Alert IT staff when provisioning is complete
Notify managers of access changes
Create a service desk ticket for any manual steps
Send standardized notifications using custom templates across workflows
Notification Type
Select Email, Webhook, or Service Now
Email Template
(Email notifications only) Select the template to use for the notification. Choose "Default template" to use the event-specific template, or select a custom email template. See for details
Recipients
(Email notifications only) Specify email addresses to receive the notification, or select user attributes containing email addresses
Notification Settings
(Action notification settings) Configure email alerts on action success and/or failure for the specified recipients
Webhook Configuration
Configure webhooks to trigger on success and/or failure by specifying the URL to send the payload and optional auth header for the POST request
Veza Action
Select an existing Veza Action for pre-configured webhook or email settings
Email Template Selection:
When configuring email notifications (either as a Send Notification action or in Action Notification Settings), you can choose which template to use:
Default template: Uses the built-in event-specific template based on the lifecycle event being processed
Custom template: Uses a reusable custom email template you've created, allowing consistent messaging across multiple workflows
Custom templates support the same placeholders as event-specific templates, enabling dynamic content like identity names, workflow names, and action results. See Notification Templates for placeholder reference and template management.
Overview of supported Lifecycle Management integrations in Veza, with capabilities and supported actions for target applications and sources of identity.
This document provides an introduction to the integrations supported by Veza Lifecycle Management (LCM), including their capabilities and the actions they support. These integrations enable you to automate identity and access management workflows across your identity sources and target applications.
Veza's Open Authorization API (OAA) can support provisioning and deprovisioning for applications not natively supported by the Veza platform. With OAA, Veza or customers can build integrations to any application that has a suitable and accessible API or integration interface.
Identity sources are authoritative systems that provide information about user identities. While Veza does not require write permissions to the identity source of truth, some of these integrations are also supported as provisioning targets. Integrations can also allow write-back of a user's newly created email address to the user's record in the source of identity as part of the initial provisioning workflow.
Veza currently supports the following as sources of identity for Lifecycle Management workflows:
The entire catalog of Veza application integrations is Lifecycle Management-ready. Target application support in Lifecycle Management leverages Veza's existing native- and OAA-based integrations plus an intelligent shim layer in order to provide support for provisioning and de-provisioning.
As such, target application support in Lifecycle Management can be enabled for nearly every Veza-supported integration.
Validated Integrations
The following table lists the out-of-the-box, Veza-validated target application integrations for Lifecycle Management.
Other Supported Integrations
For any Veza-supported application not listed above, please contact your Customer Success Manager for more details and instructions on how to enable the specific Veza integration for use with Lifecycle Management as a target application for provisioning and de-provisioning.
An Insight Point is required to enable Lifecycle Management operations and identity discovery for systems that Veza cannot access directly, such as an on-premises application server behind a firewall. The Insight Point is a lightweight connector that runs in your environment, enabling secure gathering and processing of authorization metadata for LCM tasks.
A Veza Insight Point is typically deployed as a Docker container or VM OVA, running within your network for metadata discovery and LCM job execution. This ensures secure communication between your environment and Veza.
For deployment instructions, refer to the .
You can configure extraction intervals for your integrations to ensure data is regularly updated for Lifecycle Management processes.
Go to Veza Administration > System Settings
In the Pipeline > Extraction Interval section, set the global extraction interval
To override the global setting for specific integrations, use the Active Overrides section
Available extraction intervals are:
Auto (hourly, but may take longer when the extraction pipeline is full)
15 Minutes
1 Hour
6 Hours
12 Hours
1 Day
2 Days
3 Days
7 Days
30 Days
To manually trigger an extraction:
Go to Integrations > All Data Sources
Search for the desired data source
Select Actions > Start Extraction
Note: Custom application payloads are extracted after the payload is pushed to Veza using the Open Authorization API.
To enable Lifecycle Management for a specific integration:
Browse to the main Veza Integrations page, or go to Lifecycle Management > Integrations
Search for the integration you want to enable
Toggle the Lifecycle Management option to Enabled
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
For more information:
Refer to individual integration documentation for detailed LCM capabilities
Consult the Lifecycle Management user guide for troubleshooting and best practices
Contact Veza support for assistance with enabling or configuring LCM for your integrations
Configuring the Okta integration for Veza Lifecycle Management.
The Veza integration for Okta enables automated user lifecycle management, with support for user provisioning and de-provisioning, group membership management, and attribute synchronization.
This document includes steps to enable the Okta integration for use in Lifecycle Management, along with supported actions and notes. See for more details.
You will need administrative access in Veza to configure the integration and grant API scopes in Okta.
Ensure you have an existing in Veza or add a new one for use with Lifecycle Management.
Verify your Okta integration has completed at least one successful extraction
The Okta integration will need the additional required API scopes:
okta.users.manage
- For user lifecycle operations
okta.groups.manage
- For group membership management
To enable the integration:
In Veza, go to the Integrations overview
Search for or create an Okta integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your Okta data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for Okta in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Okta can serve as a source for identity information in Lifecycle Management . User identity details are synchronized from Okta with changes propagated to connected systems
Okta can also be a target for identity management actions, based on changes in another external source of truth or as part of a workflow:
The integration supports the following lifecycle management :
Primary action for user management (creating or updating users):
Login ID cannot be changed after creation
Email addresses must be unique
Required attributes must be present (login, email, first_name, last_name)
The following attributes can be synchronized:
Both adding and removing memberships are supported. Group memberships are removed in deprovisioning.
Add and remove group memberships
Synchronize group assignments
Track membership changes
When a user is deprovisioned:
User account is disabled
Group memberships are removed
Attribute history is preserved for audit
Account can be reactivated if needed
Entity Types: Okta Groups
Assignee Types: Okta Users
Supports Relationship Removal: Yes
Within Okta, groups can be associated with:
Application group assignments controlling SSO access
Permissions to resources within specific applications
Synchronized AWS SSO groups
Role-based access controls within Okta
Allows password reset operations for Okta users:
Requires the login
attribute as a unique identifier
Non-idempotent action (each execution creates a new password reset event)
Will trigger Okta's standard password reset flow for the specified user
Configuring the Coupa Contingent Workforce integration for Veza Lifecycle Management.
The Veza integration for Coupa Contingent Workforce (CCW) enables automated identity synchronization as a source of truth for contingent worker lifecycle management. Coupa CCW serves as an authoritative source for contingent worker information that can be synchronized with other systems in your environment.
This document includes steps to enable the Coupa CCW integration for use in Lifecycle Management, along with supported actions and notes. See for more details.
You will need administrative access in Veza to configure the integration and Customer Integration Admin privileges in Coupa CCW.
Ensure you have an existing in Veza or add a new one for use with Lifecycle Management.
Verify your Coupa CCW integration has completed at least one successful extraction
The Coupa CCW integration will need the required API scope:
ccw.contingent_workers
- For accessing contingent worker data
To enable the integration:
In Veza, go to the Integrations overview
Search for or create a Coupa CCW integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your Coupa CCW data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for Coupa CCW in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Coupa CCW can serve as a source for identity information in Lifecycle Management . Contingent worker identity details are synchronized from Coupa CCW with changes propagated to connected target systems.
Important: Coupa CCW is a source-only integration for Lifecycle Management. It provides authoritative identity information but cannot be used as a provisioning target.
The integration supports the following lifecycle management :
As a source-only system, Coupa CCW provides:
Contingent worker identity information synchronized to downstream systems
Organizational structure data (Account Segments, Cost Centers, Departments)
Employment status and contract details for lifecycle decisions
Manager relationships for approval workflows
When a new contingent worker is added to Coupa CCW:
Identity Sync: Coupa CCW provides worker details to Veza Lifecycle Management
Access Provisioning: Based on department, cost center, and role, appropriate access is granted in target systems
Manager Assignment: Hiring manager relationships are established for approval workflows
Group Assignment: Worker is added to relevant organizational groups based on Account Segment and Department
When a contingent worker's status changes (contract end, role change):
Status Detection: Coupa CCW reflects updated employment status
Access Review: Lifecycle policies evaluate continued access needs
De-provisioning: If terminated, appropriate access removal is triggered in target systems
Audit Trail: All changes are tracked for compliance reporting
When a contingent worker transitions to full-time employee:
Status Update: Employment type change is detected in Coupa CCW
Access Migration: Existing access is evaluated and potentially expanded
System Updates: Worker identity is updated across all connected systems
Process Completion: Manager and HR notifications confirm successful transition
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships and role assignments for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities, includes user logout support
✅
CREATE_ENTITLEMENT
Creates entitlements such as Okta groups
✅
RESET_PASSWORD
Allows password reset operations for Okta users
✅
SOURCE_OF_IDENTITY
Okta can act as a source system for identity lifecycle policies
✅
login
Yes
String
Primary login identifier
Unique identifier
Yes
String
User's email address
Unique
first_name
Yes
String
Given name
last_name
Yes
String
Family name
display_name
No
String
User's display name
user_type
No
String
User type
department
No
String
Organizational department
title
No
String
Job title
manager
No
String
Manager's name
manager_id
No
String
Manager's identifier
employee_id
No
String
Employee identifier
division
No
String
Business division
organization
No
String
Organization name
cost_center
No
String
Cost center
country_code
No
String
Country code
second_email
No
String
Secondary email address
nickname
No
String
User's nickname
unique_id
Yes
String
Group identifier
description
No
String
Group description
type
No
String
Group type
source
No
String
Group source
last_membership_updated_at
No
Timestamp
Last membership update time
A shift-based workforce management system for high-volume personnel business
Cloud-based platform for business spend management service
Custom IDP
A platform to integrate your authentication systems to manage user access and corporate resources
Custom human resource information system integration using OAA templates
HR platform for modern businesses
An HR platform for user onboarding/offboarding and automated self-service
Cloud-based identity management service
HR database for storing and managing employee-related data
Cloud-based human capital management platform
Yes
Human capital management cloud
Yes
UKGPro
Human capital management (HCM) and workforce management solution
Cloud-based human capital management platform
Yes
✅
✅
✅
Reset Password, Create Entitlements
ActiveDirectoryGroup
✅
✅
✅
Delete Identity
AtlassianCloudAdminGroup
✅
✅
✅
Create Entitlement
AwsSsoGroup
✅
✅
✅
Create Email, Create Entitlement
AzureADGroup, AzureADRole, ExchangeOnlineDistributionGroup, AzureADLicense
Custom Application (OAA Template)
✅
✅
✅
-
Application Groups
❌
❌
❌
Create Email
-
✅
✅
✅
-
GithubOrganization, GithubTeam
✅
✅
✅
-
GoogleWorkspaceGroup
✅
✅
✅
Reset Password, Create Entitlement
OktaGroup
❌
✅
✅
-
-
❌
✅
❌
-
-
✅
✅
✅
-
SalesforceGroup, SalesforcePermissionSet, SalesforcePermissionSetGroup, SalesforceProfile, SalesforceUserRole
SAP ECC
✅
✅
✅
-
SapEccRole
❌
✅
✅
-
-
ServiceNow
❌
❌
❌
Custom Action
-
✅
✅
✅
-
SnowflakeRole
SwiftConnect
❌
✅
✅
-
-
✅
✅
❌
-
WorkdaySecurityGroup
Veza
✅
✅
✅
-
VezaRoleBinding, VezaAccessProfile, VezaGroup
Map application entitlements to user populations based on common roles, functions, levels, or locations in the organization.
Access Profiles govern how application entitlements are assigned to employees across your organization. These profiles define how birthright access should be granted based on segmentation criteria, which could include business role, job function, seniority level, location, or group membership. Access Profiles are used by the Manage Relationship action to assign users to specific groups, roles, permission sets, or other access-granting entities when specific conditions are met.
Profiles can be configured hierarchically to create a fine-grained model of how access should be assigned to different groups of employees. Administrators can position child profiles underneath a parent profile, with each child profile inheriting the entitlements from the parent profile.
For instance, a parent profile might be "Sales" (defining all the application entitlements that an individual belonging to the Sales organization should be granted), with child Profiles for "Account Executive," "Sales Engineering," "Sales Operations," and "Inside Sales." Each child Profile will have additional application entitlements specific to those roles. With these profiles configured, a workflow in policy for sales engineers can use just the "Sales Engineering" Profile, which includes the access defined by the "Sales" profile.
Executive Employees
Active Directory
Executive Employee - Manager US (Active Directory Group)
US Engineering Managers
Active Directory
Engineering - Manager US (Active Directory Group)
Azure Helpdesk Role
Azure
Helpdesk Administrator (Azure AD Role)
Google Asia Employees
Google Cloud
Google Asia Employees (Google Group)
Since workflows in Lifecycle Management policies can apply these Profiles at all stages in a user's lifecycle, defining Profiles enables Veza to serve as a source of truth for birthright entitlements for all employees. Access Profiles also define what access-granting relationships to remove from users during de-provisioning workflows.
The access granted by a Profile can be defined by both:
Explicitly-defined, application-specific entitlements, such as roles, groups, permission sets, etc., within the Profile. A single Access Profile can support granting one or more entitlements across one or more applications simultaneously.
Any entitlements inherited from a parent Profile.
The example below shows Business Roles for teams, managers, and all employees, along with Profiles for different applications. When configuring workflow actions, administrators can choose from one or more Business Profiles to assign the entitlements granted by the child Profiles.
Veza offers two types of built-in Access Profile types for defining birthright entitlements by user segments:
Profiles are a type of Access Profile for defining access-granting relationships (such as user assignments to groups or roles) within the applications you will provision to users. Profiles are intended to represent a specific set of entitlements across one or more applications that should be granted based on a user's segmentation criteria.
Profiles should be configured in coordination with the application owner, who will best understand the exact permissions and privileges granted by various groups, roles, and other entitlements in each specific application.
Business roles are a type of Access Profile used to model your organization's structure, based on a hierarchy of job functions, locations, and titles. Ideally by itself, a Business Role should not describe specific entitlements but can inherit relationships from other Profiles. These will usually be named according to logical segments that should be assigned to different applications with different levels of access, such as "Sales," "QA Contractors," or "Engineering Managers."
Business Roles can inherit Profiles to enable a hierarchical approach to birthright access management. You should draft and review Access Profiles to create a map of user entitlements for each application (such as "GitHub Developers" or "Salesforce Administrators").
Create Business Roles that align with your organizational structure, especially taking location, business unit, and functional organization into consideration. Then, configure these Business Roles to inherit Profiles that describe the birthright entitlements granted to different user populations.
To create and manage Access Profiles, go to Lifecycle Management > Access Profiles.
Click Create Access Profile
Under Access Profile Details, choose the Profile Type to create:
Business Role: Business roles are intended to represent logical units within your organizational structure, and can inherit entitlements defined in other Access Profiles. Use Business Roles to establish segmentation criteria based on location, role, business unit, or functional organization.
Profile: Profiles define entitlements that can be assigned to users in target applications, such as groups, roles, or permission sets assigned to users as birthright entitlements. Profiles cannot be inherited from other Access Profiles, but can be inherited by Business Roles. Use this profile type to define the birthright entitlements within one or more applications (such as group memberships or role assignments).
Profile Name and Description: You should follow a standard naming convention for all profiles to help identify them, describing the employee segment or applications the Access Profile applies to.
Profile Labels: Labels are available for quickly finding access profiles when configuring actions in a policy. Apply and create labels as needed to organize your Access Profiles by the employee segments and applications they apply to.
Assigned Relationships:
Click Add Relationship
Choose the type of relationship to add:
Access Profile: Use the Relationship menu to pick one or more Access Profiles to grant those business roles or entitlements. This option is not available for Access Profiles with the "Profile" type.
Relationship: Choose the target data source and specific entities the Profile will govern access to (such as Google Cloud Platform > Google Group). This option is not available for Access Profiles with the "Business Role" type.
Click Assign to save the changes.
After saving an Access Profile, you can view details, edit, or pause and resume it on the Lifecycle Management > Access Profiles page.
When configuring a policy to include the Manage Relationships action, you can choose from any active profiles for the target data source.
Configuring the Azure integration for Veza Lifecycle Management
The Veza integration for Azure AD (Microsoft Entra ID) enables automated user provisioning, access management, and de-provisioning capabilities as a target system. This integration allows you to provision users from authoritative sources, manage group memberships, assign licenses, and automate the user lifecycle based on changes in external identity sources.
This document includes steps to enable the Azure integration for use in Lifecycle Management, along with supported actions and notes. See for more details.
You will need administrative access in Veza to configure the integration.
Ensure you have an existing in Veza or add a new one for use with Lifecycle Management.
Verify your Azure integration has completed at least one successful extraction.
The Azure integration will need the following additional Microsoft Graph API permissions:
Directory.ReadWrite.All - Required for creating, updating, and managing directory objects
Group.ReadWrite.All - Required for creating and managing groups
GroupMember.ReadWrite.All - Required for managing group memberships
User.EnableDisableAccount.All - Required for enabling/disabling user accounts
To enable the integration:
In Veza, go to the Integrations overview
Search for or create an Azure integration
Check the box to Enable usage for Lifecycle Management
For complete Azure integration setup instructions, including how to create an App Registration and grant permissions, please refer to the
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Azure AD serves as a target for identity management actions in Lifecycle Management , based on changes in another external source of truth (such as Workday, Okta, or Oracle HCM) or as part of a workflow.
Note: Azure AD is not currently supported as a source of identity for Lifecycle Management. It can only be used as a target system for provisioning, deprovisioning, and access management actions.
The integration supports the following lifecycle management :
Primary action for user management (creating or updating users):
Entity Types: Azure AD User
Create Allowed: Yes (New user identities can be created if not found)
The following attributes can be synchronized:
Creates guest user accounts in Azure AD by sending invitations:
Required Attributes:
invited_user_email_address - Email address of the person to invite
invite_redirect_url - URL where the user is redirected after accepting the invitation
Optional Attributes:
principal_name - User principal name (if not provided, generated from email)
display_name - Display name (if not provided, generated from email)
mail_nickname - Mail nickname (if not provided, generated from email)
Other standard user attributes as needed
Controls relationships between users and Azure AD entities:
Supported Relationship Types:
Groups: Add or remove users from Azure AD groups
Roles: Assign or remove Azure AD roles
Licenses: Assign or remove license assignments
Distribution Lists: Manage Exchange Online distribution list memberships
Assignee Types: Azure AD Users
Supports Removing Relationships: Yes
Creates or enables email functionality for users in Azure AD:
Implementation: Assigns Exchange Online license to the user
Requirements: Available Exchange Online license in your tenant
Results: Email-enabled user account with Exchange Online capabilities
Creates new entitlements in Azure AD, including groups and distribution lists:
Azure AD Group Creation:
Required Attributes: name
Optional Attributes:
mail_enabled - Whether the group is mail-enabled
is_security_group - Whether it's a security group
visibility - Privacy setting (Public, Private, HiddenMembership)
description - Group description
Distribution Group Creation:
Required Attributes: name
Optional Attributes:
identity - Unique identifier
alias - Email alias
primary_smtp_address - Primary email address
group_type - Type of distribution group
When a user is deprovisioned:
Entity Type: Azure AD Users
Remove All Relationships: Yes (Removes group memberships, role assignments, and license assignments)
De-provisioning Method: Disabled (Users are marked as disabled rather than deleted)
Additional Options:
User Logout - Force user to log out from all active sessions
Remove All Licenses - Remove all license assignments
Remove All Personal Devices - Remove device registrations
Specifically handles deprovisioning of guest user accounts:
Required Attributes:
invited_user_email_address - Email address of the guest user
Optional Attributes:
display_name - Display name of the guest user
Azure AD integration supports custom properties defined in your tenant. These can be configured in the integration settings and used in attribute transformers for Lifecycle Management actions.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships, role assignments, and license assignments
✅
CREATE_GUEST_USER
Creates guest user accounts by sending invitations
✅
CREATE_ENTITLEMENT
Creates new entitlements in Azure AD, including groups and distribution lists
✅
CREATE_EMAIL
Creates or enables email functionality for users
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities, includes user logout support
✅
DISABLE_GUEST_ACCOUNT
Specifically handles deprovisioning of guest user accounts
✅
principal_name
Yes
String
User Principal Name
Unique identifier
mail_nickname
Yes
String
Mail nickname
display_name
Yes
String
Display name
account_enabled
No
Boolean
Enable/disable account
country_or_region
No
String
User's country or region
department
No
String
User's department
employee_id
No
String
Employee identifier
employee_type
No
String
Employee type
first_name (given_name)
No
String
User's first name
job_title
No
String
Job title or position
No
String
Email address
manager_principal_name
No
String
Manager's principal name
office
No
String
Office location
other_mails
No
Array
Additional email addresses
password_policies
No
String
Password policy settings
password_profile_force_change_password_next_sign_in
No
Boolean
Force password change on next sign-in
password_profile_password
No
String
Initial password setting
nickname
No
String
User's nickname
street_address
No
String
Street address
last_name (surname)
No
String
User's last name
usage_location
No
String
Usage location for licensing
user_type
No
String
Type of user
Configuring the Oracle HCM integration for Veza Lifecycle Management.
Early Access: Oracle HCM integration is currently in Early Access. Please contact our customer success team to enable the INTEG_ORACLE_HCM_HRIS feature flag for your environment.
The Veza integration for Oracle HCM enables automated identity lifecycle management with support for identity synchronization and email write-back capabilities. Oracle HCM is designed to serve as a source of identity for Lifecycle Management workflows.
SOURCE_OF_IDENTITY
Oracle HCM provides worker data as input for identity lifecycle policies
✅
EMAIL_WRITE_BACK
Writes email addresses from target systems back to Oracle HCM worker records
✅
SYNC_IDENTITIES
Synchronizes identity attributes to Oracle HCM (as target)
❌
CREATE_IDENTITY
Creates new user accounts or worker records
❌
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships and role assignments
❌
DEPROVISION_IDENTITY
Safely removes or disables access for identities
❌
CREATE_ENTITLEMENT
Creates entitlements such as groups or roles
❌
This document includes steps to enable the Oracle HCM integration for use in Lifecycle Management, along with supported actions and notes. See Supported Actions for more details.
You will need administrative access in Veza to configure the integration and appropriate access in Oracle HCM.
Ensure you have an existing Oracle HCM integration in Veza or add a new one for use with Lifecycle Management.
Verify your Oracle HCM integration has completed at least one successful extraction
The Oracle HCM service account requires specific permissions for different operations:
REST API Permissions (Read-only):
/hcmRestApi/resources/11.13.18.05/workers
- View worker records
/hcmRestApi/resources/11.13.18.05/jobs
- View job information
/hcmRestApi/resources/11.13.18.05/actionsLOV
- View available actions
SCIM API Permissions:
/hcmRestApi/scim/Users
- User management endpoint
GET: Read user by ID, person number, or username
PATCH: Update user email addresses only (write-back functionality)
Note: Only email updates are performed; full user creation/deletion not used
BI Publisher Permissions:
Execute reports via the QueryDM interface
Access to custom report path (must start with /Custom
and end with .xdo
)
Retrieve CSV-formatted report output
Uses same BI Publisher infrastructure as Oracle Fusion Cloud integration.
Important: Oracle HCM integration requires specific report configurations and API access. Ensure your Oracle HCM user account has sufficient privileges to read worker data and update email addresses.
Technical Requirements:
Oracle HCM REST API version: 11.13.18.05
REST Framework version: 4
SCIM 2.0 support for user operations
HTTP Basic Authentication
Concurrent request limit: 8 (for optimal performance)
Configuration Parameters:
url: Oracle HCM instance URL (required)
username: Service account username (required)
password: Service account password (required)
report_path: BI Publisher report path starting with /Custom
(required)
additional_columns: Comma-separated list of additional CSV columns to extract (optional)
identity_mapping: Custom identity mapping configuration (optional)
To enable the integration:
In Veza, go to the Integrations overview
Search for or create an Oracle HCM integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your Oracle HCM data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for Oracle HCM in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Oracle HCM integration relies on BI Publisher reports to extract worker data. The report must be properly configured with specific requirements:
Must be an absolute path starting with /Custom
Must end with .xdo
extension
Example: /Custom/HCM/WorkerDataReport.xdo
The BI Publisher report must output CSV data with these exact column headers:
Core Required Columns:
CORRELATION_ID
- Unique worker identifier (required)
EMPLOYEE_ID
- Employee number/ID (required)
FIRST_NAME
- Worker's first name (required)
LAST_NAME
- Worker's last name (required)
STATUS
- Employment status (must be "ACTIVE" for active workers)
START_DATE
- Employment start date in YYYY-MM-DD format
Additional Standard Columns:
NAME
- Full name
COMPANY_NAME
- Company name
PREFERRED_FIRST_NAME
- Preferred first name
DISPLAY_NAME
- Display name
CANONICAL_NAME
- Canonical name
USER_NAME
- Username
EMAIL
- Primary email address
PERSONAL_EMAIL
- Personal email
HOME_LOCATION
- Home location
LOCATION
- Work location
COST_CENTER
- Cost center code
DEPARTMENT_NAME
- Department name
MANAGER
- Manager's correlation ID
ACTIVE
- Active flag (Y/N)
TERM_DATE
- Termination date in YYYY-MM-DD format
TITLE
- Job title
EMPLOYEE_TYPE
- Employment type (full time, part time, contractor)
Date Format: All dates must use YYYY-MM-DD format
Employment Status: Must be exactly "ACTIVE" for active workers (case-sensitive)
Boolean Values: Use "Y" or "N" for the ACTIVE column
Duplicate Records: System handles duplicates by keeping the most recent active record
Oracle HCM serves as a source for identity information in Lifecycle Management Policies. Based on the implementation configuration, Oracle HCM supports only two specific actions:
Oracle HCM provides authoritative worker information for identity lifecycle policies:
Data Flow: FROM Oracle HCM TO target systems (unidirectional)
Purpose: Serves as the authoritative source for worker identity data
Scope: Worker records from BI Publisher reports are made available to lifecycle policies
Usage: Target systems can query Oracle HCM worker data for provisioning decisions
Available Worker Attributes for Lifecycle Management:
Oracle HCM uses a multi-layer attribute system:
BI Publisher Report Fields: Over 20 fields available for reading worker data (see BI Publisher Report Configuration)
Lifecycle Management Attributes: Only 3 attributes are available for synchronization:
user_name
Yes
String
userName
Worker username
Primary identifier, required for all operations
No
String
emails[0].value
Worker's email address
Can be updated via write-back, single email only
display_name
No
String
displayName
Worker's display name
May experience update delays
Important: The SCIM API only supports these three attributes for write operations. All other worker data from BI Publisher reports is read-only.
Workers can be identified using multiple approaches:
Person Number (Preferred): Extracted from entity ID for most operations
Entity ID: Used for direct operations and testing scenarios
SCIM User ID: Used specifically for email write-back operations
Oracle HCM supports writing email addresses from target systems back to worker records:
Direction: Unidirectional - writes email addresses FROM provisioned target systems TO Oracle HCM worker records
Method: Uses SCIM PATCH operation to update worker email addresses
Worker Identification: Supports both entity ID-based and person number-based worker identification
Limitation: Oracle HCM SCIM API supports only one email address per worker record
Logic: Only updates if the new email address differs from the existing value
When an email address is created in a target system (such as Exchange or Google Workspace), the write-back action updates the corresponding Oracle HCM worker record with the new email address via the /hcmRestApi/scim/Users
endpoint.
Oracle HCM can serve as the source of truth for new hire provisioning workflows:
Worker Added in Oracle HCM: New worker record is created with basic information
Identity Sync: Worker attributes are synchronized to target systems (Active Directory, Okta, etc.)
Email Creation: Corporate email account is created in the target email system
Email Write-Back: The newly created email address is written back to the Oracle HCM worker record
When worker information changes in Oracle HCM:
Attribute Changes: Worker attributes are updated in Oracle HCM (department, title, etc.)
Continuous Sync: Changes are automatically propagated to connected target systems
Consistency Maintenance: All systems maintain consistent worker information
For workers who need new email addresses:
Email Creation: Target email system creates a new email account
Write-Back Process: Oracle HCM worker record is updated with the new email address via SCIM API
Identity Sync: Updated email information is synchronized across all connected systems
Report Path Errors:
Ensure report path starts with /Custom
and ends with .xdo
Verify the report exists and is accessible
Check BI Publisher permissions
Column Mapping Issues:
Verify all required column headers are present in CSV output
Check column name spelling (case-sensitive)
Ensure date columns use YYYY-MM-DD format
Authentication Failures:
Verify HTTP Basic Authentication credentials
Check user has access to required API endpoints
Confirm SCIM permissions for email write-back
Data Processing Problems:
STATUS column must contain "ACTIVE" for active workers
CORRELATION_ID must be unique for each worker
Handle duplicate records appropriately
Email Write-Back Issues:
Verify worker exists and is identifiable by person number or entity ID
Check SCIM endpoint permissions
Only one email address per worker is supported
This guide describes how to enable and configure Exchange Server for Lifecycle Management in Veza, including supported capabilities and configuration steps.
Supports the creation of email accounts for users within Exchange Server.
Entity Type: Exchange Server Users
Attributes Available for Configuration:
Identity (Required)
Alias (Optional)
Example Use Cases:
Create email accounts for new employees joining the organization
Assign email aliases to users to facilitate communication
Find the Exchange Management Shell shortcut in the Start Menu
Right-click > More > Open File Location
Right-click the shortcut icon > Properties
Copy the Target field value
Note the two important paths from the target:
PowerShell Path: (e.g., C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
)
Remote Exchange Path: (e.g., C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1
)
Open IIS Manager and create a new application pool
Name the application pool
Configure the application pool:
Right-click > Advanced Settings
Under Process Model, set the Identity
Add the application to "Default Web Site"
Configure the application:
Set alias to "VezaProvisioner"
Select the application pool created above
Configure authentication:
Disable Anonymous Authentication
Enable Basic Authentication
Install the VezaProvisioner.msi
installer provided by Veza support on the Exchange Server. This component handles email address creation for users provisioned in Active Directory.
Go to Configurations > Integrations
Click Add New and select Exchange Server
Complete the following fields:
Insight Point
Select if using an Insight Point to access Exchange Server
Name
Friendly name for the integration
Instance URL
https://<exchange_server_host>/VezaProvisioner
Username
Domain username with required Exchange permissions
Password
Password for the account
PowerShell Path
Path to PowerShell.exe noted in step 1
Remote Exchange Path
Path to RemoteExchange.ps1 noted in step 1
Enable Lifecycle Management by checking Enable Lifecycle Management
Save the configuration
After configuration, the Exchange Server integration will be available for use in Lifecycle Management policies, specifically for the Create Email action. This action can be used in workflows for new employee onboarding or other scenarios requiring email account creation.
Reference guide for supported transformation functions and parameters for attribute transformers
This page includes a comprehensive list of all supported transformer 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
See for more information about using attribute transformers to update or create attributes in downstream systems based on changes in your source of identity.
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 timezone information
Map office codes to physical addresses or facility types
Organizational Mapping:
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
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
Click Edit mode to enable policy changes
Click Add New to create a new lookup table
Provide a Name and optional Description for the lookup table
Drag a CSV file or click Browse to upload your reference data
Review the automatically detected column names
Click Save to store the lookup table
From the Lookup Tables tab, you can:
Edit table descriptions or upload a new CSV
Delete tables that are no longer needed
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 Pipeline Functions, specify the lookup table name, the column to match against, and the column containing values to return.
The full syntax for using lookup table transformers is:
Where:
<value>
is the source attribute to transform (e.g., {location}
)
<table_name>
is the name of the lookup table to use
<column_name>
is the column in the table to match against
<return_column_name>
is the column containing the value to return
Assuming a user has "location": "IL001"
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.
When a lookup value is not found in the table, the transformation will fail for that specific attribute.
For full coverage, ensure your lookup table includes entries for all possible source values that may be encountered during provisioning.
To ensure robust provisioning workflows, it's important to 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 (e.g., 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: To use a lookup-based transformer, you will reference the table by 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.
Configuring PostgreSQL Integration for Veza Lifecycle Management
The Veza integration for PostgreSQL enables automated user provisioning, access management, and deprovisioning capabilities. This integration allows you to synchronize identity information, manage group memberships, and automate the user lifecycle from onboarding to offboarding.
This document outlines the steps to enable PostgreSQL integration for use in Lifecycle Management, including supported actions and relevant notes. See for more details.
You will need administrative access in Veza to configure the integration and grant API scopes in PostgreSQL.
Ensure you have an existing PostgreSQL integration in Veza or add a new one for use with Lifecycle Management.
Verify your PostgreSQL integration has completed at least one successful extraction.
Ensure the integration service account has the required privileges. The service account must be a superuser to manage other PostgreSQL roles, including those with elevated privileges:
Note: SUPERUSER is required because Lifecycle Management may need to create or modify roles with SUPERUSER, BYPASSRLS, or other elevated privileges. Without SUPERUSER, the service account cannot manage roles with privileges equal to or greater than its own.
Configuration Steps
To enable the integration:
In Veza, go to the Integrations overview
Search for or create a PostgreSQL integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your PostgreSQL data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for PostgreSQL in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
PostgreSQL can serve as a source for identity information in Lifecycle Management . User identity details are synchronized from PostgreSQL, with changes propagated to connected systems.
PostgreSQL can also be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following Lifecycle Management :
Primary action for user management (creating or updating users):
Entity Types: PostgreSQL User
Create Allowed: Yes (New user identities can be created if not found)
SQL Command: CREATE ROLE {username} WITH LOGIN PASSWORD 'password' [attributes]
Note: In PostgreSQL's architecture, users are roles with the LOGIN privilege. When Veza creates a user, it uses CREATE ROLE
with the LOGIN attribute. This is functionally identical to PostgreSQL's CREATE USER
command, which is simply an alias for CREATE ROLE ... WITH LOGIN
.
The following attributes can be synchronized:
Controls relationships between users and PostgreSQL groups:
Supported Relationship Types:
PostgreSQL Group: Manages group membership for users
Assignee Types: PostgreSQL User
Supports Removing Relationships: Yes
Technical details:
Adding a user to a group: GRANT {group} TO {user}
Removing a user from a group: REVOKE {group} FROM {user}
Group memberships use PostgreSQL's role inheritance system, where users inherit permissions from their assigned groups
Disables a user's ability to authenticate to PostgreSQL while preserving the role and its attributes:
Entity Type: PostgreSQL User
Action: Revokes the LOGIN privilege (equivalent to ALTER ROLE {username} WITH NOLOGIN
)
Removes All Group Memberships: Yes (user is removed from all PostgreSQL groups)
Preserves:
The role itself (can be re-enabled later)
All role attributes (SUPERUSER, CREATEDB, CREATEROLE, REPLICATION, BYPASSRLS)
Ownership of database objects (tables, schemas, etc.)
Granted permissions on database resources
Use case: Temporary offboarding or leave of absence where you may need to restore access later.
Security note: A deprovisioned superuser cannot log in but retains SUPERUSER status. If the role is re-enabled without updating attributes, it will have full superuser privileges. Consider using a Sync Identities action to revoke SUPERUSER before deprovisioning if this is a concern.
Permanently removes a user role from PostgreSQL:
Entity Type: PostgreSQL User
Action: Drops the role from the database (equivalent to DROP ROLE {username}
)
Impact: Complete and irreversible removal of the role
Important limitations:
Will fail if the user owns database objects: PostgreSQL prevents dropping roles that own schemas, tables, functions, or other database objects. PostgreSQL will return an error: role "username" cannot be dropped because some objects depend on it
Will fail if the user has granted permissions: If the role has granted permissions to other roles or is referenced in default privileges, the drop will fail
Will fail if referenced in policies: Row-level security policies or other database policies that reference the role must be removed first
Note: Unlike some database systems, PostgreSQL allows dropping roles with active connections, but the operation will still fail if any of the above dependencies exist.
Recommended workflow:
Use Deprovision Identity first to revoke LOGIN and remove group memberships
Verify the user has no owned objects, granted permissions, or policy references
Use Delete Identity only when permanent removal is required
Alternative for users with dependencies: PostgreSQL administrators can manually run REASSIGN OWNED BY {username} TO {new_owner}
followed by DROP OWNED BY {username}
before triggering deletion through Veza, or handle the deletion entirely through PostgreSQL.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones.
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships for identities.
✅
DEPROVISION_IDENTITY
Safely removes or suspends access for identities.
✅
DELETE_IDENTITY
Deletes the identity name, specifically the unique identifier associated with it.
✅
ALTER ROLE veza_service WITH SUPERUSER CREATEROLE;
name
Yes
String
The role name (unique identifier). Must follow PostgreSQL naming rules: start with a letter or underscore, contain only alphanumeric characters and underscores, maximum 63 bytes.
is_super_user
No
Boolean
Grants SUPERUSER privilege. Superusers bypass all permission checks and have full control over the database. Use with extreme caution.
can_create_db
No
Boolean
Grants CREATEDB privilege, allowing the role to create new databases.
can_create_role
No
Boolean
Grants CREATEROLE privilege, allowing the role to create, alter, and drop other roles. Cannot modify superusers unless the role is also a superuser.
can_initiate_streaming_replication
No
Boolean
Grants REPLICATION privilege. Allows the role to connect in replication mode and access Write-Ahead Log (WAL) streams. Typically used for replication standby servers.
can_by_pass_all_row_level_security
No
Boolean
Grants BYPASSRLS privilege. Allows the role to bypass Row-Level Security (RLS) policies on all tables. Use when the role needs unrestricted access to data regardless of RLS policies.
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>}
{location} | LOOKUP locationTable, location_code, city
"Chicago"
{location} | LOOKUP locationTable, location_code, state
"Illinois"
{location} | LOOKUP locationTable, location_code, state_code
"IL"
{location | LOOKUP locationTable, location_code, state_code | LOWER}
Value not found in lookup table
Add the missing mapping to the lookup table with the correct source value
Incorrect column name referenced
Check the column names in your lookup table (they are case-sensitive)
Unexpected transformation results
Verify the lookup table content and ensure the correct columns are specified
Configure automated workflows for Lifecycle Management actions, including common attribute transformers and event notification settings
Lifecycle Management policies define the workflows that are triggered when a user is added or other events are detected at a specific source of identity. Workflows contained in a policy describe conditional sequences of actions that can be structured based on the specific joiner, mover, leaver (JML) scenarios that you want to automate. This might include hiring a new employee, terminating an existing employee, transferring an existing employee to another department, or other actions triggered by changes in status.
A policy can contain one or more workflows that run under different conditions. For example, one workflow might be applied when employees enter an "Active" state (for Joiner/Rehire scenarios), and another when an employee becomes "Inactive" (for Leaver scenarios). A workflow could also be triggered when an employee's hire date falls within a certain threshold, such as being less than 4 days away, or when it is related to any other employee property within the source of identity.
For most enterprise deployments, Veza recommends:
One policy for each source of identity integrated with Lifecycle Management
Two workflows within each policy:
One for active users to cover Joiner and/or Mover scenarios (including Re-hire)
Another for inactive users to cover Leaver scenarios
To create a policy for a source of identity:
Go to Policies.
Click Create Policy.
Enter a policy name and description.
The policy name is used to identify it on the Policies list and event logs
The name should indicate the source of identity that the policy applies to
Select a Primary Identity Source using the arrows to display a list of available data source integrations.
The selected identity source will trigger workflows in the policy
For the identity source to appear in the menu list, the integration must have Lifecycle Management enabled and be available as a source of identity (SOI).
See Integrations for a list of supported providers and the steps to enable a Lifecycle Management data source.
Note: A Lifecycle Management data source can only be used to trigger workflows in one policy at a time. However, you can assign multiple Lifecycle Management data sources to a single policy as Primary Identity Sources. For example, Company A merges with Company B using Active Directory as its Primary Identity Source. The Primary Identity Source can be comprised of two integrations: Company A AD (from a CSV Upload integration) and Company B Employee Directory (from an OAA integration).
(Optional) Use the Additional Identity Source to add more data sources and correlating attributes.
Click Add Source.
Use the arrows to search for an Identity Source.
In Primary Attributes, select a primary attribute from the dropdown menu.
In Additional Attributes, select another attribute from the dropdown menu.
Click Add to add more Primary Attributes and/or Additional Attributes.
The Only enrich identity if existing in Primary Identity Source option controls identity creation:
Enabled: Only adds data to existing identities from the Primary Identity Source. Does not create new LCM identities.
Disabled: Creates new LCM identities when users exist in the Additional Identity Source but not in the Primary Identity Source.
Click Save. The policy is automatically set to the Initial state.
The Dry Run allows you to simulate and preview how a Policy would process an identity, without making actual changes to target systems. This testing tool helps you validate workflow conditions, preview potential changes, and understand what actions would be triggered for specific identities.
The Dry Run evaluates workflow logic but does not interact with target integrations. Verify integration health to ensure target systems are accessible before running actual policies. Dry Run takes a policy and an identity to simulate:
The workflows triggered
All actions that would run
What Access Profiles would be assigned
Any potential changes to entities and attributes
You can test how policies would respond to identity attribute changes for different scenarios during a Dry Run simulation without impacting the actual identity attribute values.
You can initiate a Dry Run in two ways:
From a Lifecycle Management Policy
When editing a policy, open the Dry Run tool to preview changes for any identity:
Go to Policies.
Click a policy to view its details.
Click Dry Run Policy at the top right.
Choose the identity and policy to test workflows.
Select one or more attributes to sync. You can modify attributes to simulate potential changes.
Click Show Results.
Review the results:
Check the Workflows Run section to see which workflows were triggered.
Check the Potential Changes section to see all job requests that would be generated (e.g., edits to user attributes, adding/removing access profiles).
From Identity Details
You can start a Dry Run when viewing details for any account on the Identities page:
Go to Identities.
Search for an identity and click to view its details.
Expand the Actions menu at the top right and click Policy Dry Run.
Select a policy, customize entity attributes, and click Show Results.
Dry Run Notes:
Result: 0 Changes
When a dry run returns "0 changes", it means:
The selected identity does not meet any of the trigger conditions defined in your policy's workflows
No actions would be executed for this identity when the policy runs
This is not an error - it simply means the identity doesn't qualify for any of the configured workflows
Limitations
Dry Run has several important limitations:
Dry Run evaluates whether workflow conditions are met, not whether actions would succeed
It does not check whether integrations are functioning properly and whether target systems are accessible
It does not validate that changes could be successfully applied
A broken integration might cause workflow-defined changes not to be applied to an identity
Best Practices
Use Dry Run to validate that policies and their workflows are working as intended before enabling them in a live environment.
Test with Representative Identities: Select identities that represent different scenarios (new hires, role changes, terminations) to validate all workflows in your policy.
Simulate Different Scenarios: Modify identity attributes during Dry Run to test trigger conditions such as:
Department changes
Employment status updates
Location transfers
Role modifications
Test Edge Cases: Use Dry Run to test unusual scenarios or edge cases that might not occur frequently in your environment.
A Dry Run executes the workflow logic end-to-end, making no external changes. It evaluates conditions, decides which actions would run, and logs the decisions and payloads. That makes it ideal for probing unusual or risky situations without touching real accounts or entitlements. Here are some edge case examples:
Handling long names or names with special characters
Department and location change at once
Same-day rehire after termination
Policies can be version-controlled, allowing for a method to refine and test changes in your automation workflows. You can create draft versions to test changes and validate updates before deployment while maintaining a history of previous configurations. Each policy can have only one active version and one draft version at a time, with automatic archival of retired versions.
Policies have a current state that is based on their workflow operations.
The Policy state includes:
Initial - Initially created before the first workflow version is published
Running - Actively processing with one or more workflows
Paused - Temporarily disabled
Pending - Waiting for activation
Dry Run - In test mode
Note: In the Policies page, click on the Action overflow icon (three dots) to Start the policy in the Initial state, and Pause or Unpause at the Running state.
The Workflow Version state includes:
Draft - In draft mode for editing and modification
Published - Functional and active
Retired - No longer active or usable
The Policy Draft Mode is a state where a policy is saved but not yet active. In Policy Draft Mode, you can create, edit, and test policy configurations (such as workflows, actions, or mappings) without affecting real users, identities, or access profiles. Once you are satisfied, you can publish the policy, which moves it from the work-in-progress state to an operational state.
To enable the Policy Draft Mode, perform the following:
On the Lifecycle Management Dashboard page, click Settings in the top menu.
The Lifecycle Management Settings page appears. Click Policy Settings.
Switch ON the Enable Policy Draft Mode button.
Test Policy Workflows using Draft Versioning
You can test and refine your policy workflows to ensure that it is working as expected through a series of draft versions with Dry Run simulations. Once the workflow’s result is satisfactory, publishing the version will change the policy status to ‘active’.
Perform the following steps to test your policy workflow:
Create and save a new policy.
Create a new workflow and Save.
After creating a new workflow, click Publish.
By publishing your workflow, it is ready for activation by going to the Actions menu (three dots icon) and clicking Start. The Create Draft button is enabled.
Click the overflow menu (three dots) and select Perform Dry Run to test your workflow.
If you are not satisfied with the results of the Dry Run simulation, then click Create Draft. Your workflow will be labeled with a new version number.
Click Edit Workflow to make changes to your workflow.
Continue to modify your workflow using the previous steps until your workflow displays the expected results. Click Publish.
You can view the history of your workflow versions and rollback any draft version for use.
Published Policy
A published policy is activated and deployed with the following characteristics:
Enforces the defined rules in your environments, including:
Creating, modifying, or removing user access.
Synchronizing identity attributes.
Triggering workflows or notifications.
Becomes visible in reporting, monitoring, and compliance views.
It can still be updated by moving it back into Policy Draft Mode first.
Use the Policies page for an overview of initial, running, and paused policies. New policies are created in the "Initial" state, enabling a review period before activating the policy. Active ("Running") policies will apply the next time the data source is extracted.
To manage policies on the main Policies overview:
Go to Lifecycle Management > Policies
Find the policy you want to manage
Search for a specific policy by name
Filter to show all providers by their current state
Click the three dots icon ⋮ in the rightmost column to expand the Actions menu
View Details - Displays the date (or timeframe) the policy was last updated and its integrations. Use this view to create a workflow, transformer, property, password complexity rules, or transformer functions.
Pause - Pause the Running state of the policy.
Delete - Deletes the policy.
Policies contain one or more workflows. Typically, workflows correspond to Active and Inactive user states, but not always. More specifically, workflows define a sequence of actions to run when a condition is met, based on events and identity changes captured at the source of identity. These workflows apply to scenarios such as new employee hiring, internal employee mobility changes (e.g., promotions, transfers, new managers), or employee departures.
Workflows comprise a tree-like sequence of conditions designed to meet the specific requirements of your joiner, mover, and leaver processes. For example, you may want to grant specific entitlements to users with specific roles, locations, or groups.
Workflows and Trigger Conditions
Trigger Conditions refer to rules or filters that initiate (or delay) provisioning and deprovisioning workflows based on certain events, criteria within identity data sources, or lifecycle workflows.
They are often tied to HR events, such as employee hiring (joiner), role changes (mover), or termination (leaver). For instance, provisioning flows can be triggered when an employee is hired or deprovisioned when terminated.
Trigger Conditions can be time-based, such as “create the Active Directory account 15 days prior to a new employee’s start date”.
Advanced implementations also support relationship-based triggers (e.g., launching workflows when a worker is added to a specific department). Note: Trigger conditions can also encompass transformer functions embedded in SCIM filter conditions, which enable more complex or refined triggering logic within workflows (e.g., matching specific attribute filters to drive provisioning).
To add a workflow, perform the following:
Select a policy.
Click Create Workflow.
In Details, enter the workflow name and description.
In the Priority field, use the dropdown menu to select:
Not set
Low
Normal
Medium
High
Critical
The levels dictate the order/priority in which the workflows are run. The higher-priority setting will be processed first. A fairness algorithm is built in to prevent lower-priority workflow tasks from being starved.
In the New Workflow pane, click the trigger attribute. The Edit Workflow pane appears.
Enable Continuous Sync to set controls change detection:
When enabled, the workflow monitors for any changes in the source of identity
When disabled, the workflow only runs during initial provisioning
See Attribute Sync and Transformers for more information on Continuous Sync.
In the Trigger Condition field, select a conditional string from the dropdown menu to create a logical syntax that automatically starts the workflow. Once a condition has been set, another conditional string can follow, or an action can be taken.
In the Trigger Details field, select the Attribute to Get the Execute Date from the dropdown menu to specify when the workflow actions should run.
In the Date Formatters, click Add Date Formatter.
Click the Formatter field to display a dropdown menu of operator functions, the Conditional Express function, and attributes.
Click the Pipeline Functions field to display a dropdown menu of operator functions. The Pipeline Functions combine a series of attribute formatters with the pipe (|) character, which runs the value of an attribute in sequential order. The output of one formatter becomes the input of the following formatter.
In the Local Time Zone Diff From UTC field, use the arrows to set your UTC offset:
Eastern Standard Time (EST): -5
Pacific Standard Time (PST): -8
Note: US UTC offset varies during Daylight Saving Time
In the Trigger At Local Time Hour field, use the arrows to set execution time in 1-hour intervals (e.g., 6, 12, 24)
In the Delay before triggering actions field, set the delay timeframe based on hours, minutes, and seconds.
Click Save Workflow. Note: All errors in the workflow must be resolved before it can be saved.
Clone or Delete a Workflow
Once an LCM Policy workflow is saved, the clone and delete options appear alongside the workflow name:
Click on the copy icon to clone the workflow.
Click on the trash bin icon to delete the workflow.
A transformer is a rule or function that takes incoming identity or attribute data and modifies it into the format or value that the target system requires.
They’re used when the data source system and target system represent or store information differently. For example, transformers can:
Converting a username from “First.Last” format into all lowercase.
Mapping a department value like “HR” in the source to “Human_Resources” in the target.
Adding a prefix or suffix to attributes (e.g., appending a domain name to create an email).
Transformers act as data processors inside a policy, ensuring that the right values are sent when provisioning, updating, or deprovisioning identities and entitlements.
To add a transformer, perform the following:
Select a policy.
Click Transformers.
Click Add Transformer.
In the New Transformer window, enter a transformer name and description.
Click the Integration field to display a dropdown menu of integrations of a target system.
Click the Entity Type field to display target entity types based on the integration that was previously selected.
In Attributes, click Add Attribute.
In Unique Identifier, click the Destination Attribute field to display a list of attributes.
Click the Formatter field to display a dropdown menu of operator functions, the Conditional Express function, and attributes.
Click the Pipeline Functions field to display a dropdown menu of operator functions. The Pipeline Functions combine a series of attribute formatters with the pipe (|) character, which runs the value of an attribute in sequential order. The output of one formatter becomes the input of the following formatter.
Optionally, click Add Attribute to add more attributes and repeat the attribute steps.
The Fallback Formatters option appears. Click this option to provide an alternative formatter when a conflict occurs if the primary formatter generates a value that is already in use.
Optionally, enable the Continuous Sync function to keep the target entity up-to-date with values from the source of truth.
Click Save.
See Transformer Reference for available transformation functions.
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.
This example is a location mapping table, which is a typical format for a Lookup Table:
location_code,state_code,state,city
MN001,MN,Minnesota,Minneapolis
CA001,CA,California,Los Angeles
TX001,TX,Texas,Houston
TX002,TX,Texas,Austin
Once a Lookup Table has been uploaded, it can be processed with the Lookup Transformers. The Lookup transformers 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.
Use Lookup Table Transformers to:
Map source attribute values to different values in target systems
Standardized reference data that must be consistent across applications
Extract different pieces of information from a single attribute value
Have complex mapping requirements that built-in transformers cannot support
See Lookup Table Transformers for detailed information.
To add a Lookup Table, perform the following:
Select a policy.
Click Lookup Table.
Click Add Lookup Table.
In the New Lookup Table window, enter a name and description for the Lookup table.
Drag and drop a CSV file or navigate to a CSV file to upload. The CSV file must be 10MB or less.
After uploading the file, you can preview it.
Click Save.
Properties are the attributes that describe identities, accounts, and entitlements. They serve as the data points a policy can use to determine when and how to take action. Properties can come from:
Built-in properties – default attributes that LCM provides out-of-the-box (for example: username, email, status, created_at).
Custom properties – attributes defined by your organization to capture unique metadata (for example: cost_center, employee_type, manager_id).
Use Properties to:
Properties are referenced in policy conditions (e.g., disable account if status = inactive).
Help with transformers and lookup tables, allowing you to map or reformat values.
Used in identity overrides when syncing accounts from different providers.
To add Properties, perform the following:
Select a policy.
Click Properties.
The Mover Properties appear. Click Edit Properties.
In the Properties window, click the Edit Properties field to display a dropdown menu of attributes.
Select one or more attributes for your property.
Click Save.
Password Complexity Rules in a policy ensure that generated passwords adhere to standardized criteria according to defined password policies across automated provisioning workflows. You can define reusable password complexity rules to enforce requirements for password length, mandatory character types (uppercase letters, lowercase letters, numbers, and special characters), and restricted characters when generating random passwords. These rules are available for selection in Sync Identities, Deprovision Identity, and Reset Password actions when working with integrations that support complex password requirements.
To add Password Complexity Rules, perform the following:
Select a policy.
Click Password Complexity Rules.
Click Create Password Complexity Rule.
In the New Password Complexity Rule window, enter a name and the length of the password (default is 6).
Enable the buttons for:
Allow lowercase characters
Allow uppercase characters
Allow numeric characters
Allow special characters
Note: At least numbers, lowercase, or uppercase characters must be allowed.
In the Disallow Character field, enter one or more characters that are not allowed in the password.
Select one or more attributes for your property.
Click Save.
Custom Transformer Functions allow you to programmatically modify or enrich identity attributes as they are synced from identity sources to target systems. These transformations ensure that data formats align across systems and support more dynamic provisioning logic. Such transformers can:
Convert dates into required formats or perform date-based calculations (e.g., adding days to a hire date).
Normalize or transform string values (e.g., case conversion, trimming, substrings).
Apply conditional logic via functions directly within provisioning rules.
Chain multiple transformations into pipelines for complex workflows.
Be tailored per integration or scenario using custom configurations.
To add Transformer Functions, perform the following:
Select a policy.
Click Transformer Functions.
Click Create Custom Transformer Function.
In the New Custom Transformer Function window, enter a name and description of the transformer. Note: The name of the transformer must start with the dollar sign symbol, $, with snake case and no spaces. For example, $CLEAN_TEXT.
Click the Function Express field to display a dropdown menu of operator functions.
Click Save.
The Policy Settings page provides information about a specific policy and allows for additional configuration, including:
Modify the primary identity source
Define an additional data source to the primary identity source
Configure email notifications or a webhook for action-related events
Enable continuous synchronization to ensure identities are up-to-date
Set a number of actions for a policy to prevent unexpected issues
The Details pane displays the Policy Name and Description fields. These fields are editable for name change or description refinement, if required.
The Primary Identity Source pane displays the integration name of the data source. The Integration field displays all available data sources, where you can add or remove, if required.
A Primary Identity Source is the authoritative system that serves as the source of truth for user identities (e.g., HR system, Active Directory, identity provider like Okta/Entra ID). Typically, one type of source of identity is associated with one integration.
The role of the Primary Identity Source includes:
Acts as the authoritative record for user information (emails, roles, statuses).
Lifecycle rules such as provisioning, updates, or deprovisioning are typically triggered based on changes detected in this data source.
Ensures consistency and accuracy across target systems where access is granted or revoked.
As an option, the Additional Identity Sources pane is typically used to add a different type of integration from the Primary Identity Source, which requires that the additional data source be already configured into Lifecycle Management. You can also correlate primary attributes and additional attributes to be associated with the data source. The added data source will sync for authentication, user updates, or provisioning.
To add an Additional Identity Source, perform the following:
Click Add Source.
In the Select Identity Source field, select a data source. Note: If you enable the 'These types are not related' option, then you cannot correlate any attributes.
In the Correlating Attributes pane, select a Primary Attribute from the dropdown menu.
Select an Additional Attribute from the dropdown menu. Note: The Only enrich identity if existing in Primary Identity Source option:
Enabled: Only enriches existing identities from the Primary Identity Source. Does not create new identities.
Disabled: Creates new LCM identities for users found in the Additional Identity Source but not in the Primary Identity Source.
When events occur during the execution of a policy’s workflow, notifications can be triggered upon execution of actions in workflows as a means to inform stakeholders or integrate with external systems. These notifications can be optionally configured as their own discrete action in a workflow or as an option when another action is executed. Lifecycle Management supports email- and webhook-based notifications.
For example, an organization might configure its Active Employee policy to send an email to the manager of each new hire after the employee's email address is provisioned. Additionally, a webhook will be sent to the company's learning management system to initiate online onboarding training once each new hire's Okta account is provisioned, following a successful Sync Identity operation.
Use the Notifications to add and manage notifications:
In the Notifications pane, click Add Notification.
Choose the notification type (Email or Webhook).
Choose the event to trigger notifications:
Create Identity
Sync Identity
Add Relationship
Remove Relationship
Create Email
Change Password
Delete Identity
Disable Identity
Manage Relationships
Write Back Email
Access Request Complete
Custom Action
Action Failed
Workflow Task Failed
Extraction Event Failed
Create Entitlement
Create Guest Account
Rename Entitlement
Create Access Review
Reset Password
Create Access Review Queued
Safety Limit Reached
Sync Entitlement
Choose the status to trigger notifications (when an event is Successful, or On Failure).
Select an Existing Veza Action. A Veza Action is an integration with functionality for sending data to external systems, enabling downstream processes around Veza alerts, and access to reviewer actions. Use a Veza Action to configure generic webhooks or enable email notifications.
See Veza Actions on how to create and deploy a Veza Action.
To customize the Webhook setting, perform the following:
In the Webhook URL field, enter the endpoint configured to receive the webhook payload.
In the Webhook Auth Header field, enter the authorization header if the webhook endpoint requires authentication (e.g., Bearer token123
or API-Key abc456
).
To customize the Email setting, perform the following:
In the Recipients field, add a recipient name. Use a comma when adding additional names.
In the Recipients From User’s Attributes field, use the arrows to display a list of user attributes. Select one or more attributes that contain email addresses for the email notification.
Click Save.
See Notifications Templates for customizing email notifications.
Identity Syncing Option
Identity Syncing at the policy level defines how identities from the authoritative source are synchronized into the target system, including provisioning user accounts or updating existing identities.
The Identity Syncing option controls the behavior of the Sync Identities Actions in a policy workflow, which has Continuous Sync functionality enabled.
Select either:
Sync on changes only - to skip identity syncing when no data source changes are detected
Always sync - to sync, no matter if changes are detected or not
Safety Limits Option
Safety Limits allows you to select the number of actions that can be allowed to run a policy before Lifecycle Management stops the process. This functionality works like a circuit breaker, where the circuit is tripped when a problem occurs. Typically, a number of identities will be updated during the lifecycle process (joiner, mover, leaver); however, if the number of updates seems extremely high compared to expected, then a problem has occurred, and the Safety Limits option prevents further updates to identities.
To set the number of affected identities in Safety Limits, perform the following:
Enable the Safety Limits button.
In the Maximum Number of affected Identities field, use the arrows to set the number of affected identities to the maximum number of changes.
Configuring the AWS IAM Identity Center integration for Veza Lifecycle Management.
The Veza integration for AWS IAM Identity Center enables automated user lifecycle management, with support for user provisioning and de-provisioning, group membership management, and attribute synchronization across AWS organizations.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships and role assignments for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities
✅
CREATE_ENTITLEMENT
Creates entitlements such as groups
✅
SOURCE_OF_IDENTITY
AWS IAM Identity Center can act as a source system for identity lifecycle policies
✅
This document includes steps to enable the AWS IAM Identity Center integration for use in Lifecycle Management, along with supported actions and notes. See Supported Actions for more details.
You will need administrative access in Veza to configure the integration and appropriate permissions in AWS IAM Identity Center.
Ensure you have an existing AWS integration in Veza or add a new one for use with Lifecycle Management.
Verify your AWS integration has completed at least one successful extraction
The AWS integration will need the additional required permissions for Identity Store operations:
identitystore:CreateUser
- For user creation operations
identitystore:UpdateUser
- For user attribute synchronization
identitystore:DeleteUser
- For user deletion (note: AWS uses SCIM deprovisioning which disables rather than deletes)
identitystore:GetUserId
- For user lookup operations
identitystore:CreateGroup
- For group creation
identitystore:CreateGroupMembership
- For group membership management
identitystore:DeleteGroupMembership
- For removing group memberships
identitystore:ListGroups
- For group discovery operations
identitystore:ListGroupMemberships
- For membership enumeration
Important: AWS IAM Identity Center Lifecycle Management requires:
SCIM endpoint configuration in IAM Identity Center (automatic provisioning must be enabled)
The integration uses AWS's SCIM v2.0 API implementation over HTTPS
Authentication is handled through IAM policies and does not require separate SCIM bearer tokens
To enable the integration:
In Veza, go to the Integrations overview
Search for or create an AWS integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your AWS IAM Identity Center data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for AWS in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
AWS IAM Identity Center can serve as a source for identity information in Lifecycle Management Policies. User identity details are synchronized from AWS IAM Identity Center with changes propagated to connected systems.
AWS IAM Identity Center can also be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following lifecycle management Actions:
Primary action for user management (creating or updating users):
Username serves as the unique identifier and cannot be changed after creation
Email addresses must be unique across the AWS IAM Identity Center instance
First name, last name, display name, and username are required attributes for user creation
The following attributes can be synchronized:
Controls group memberships for users in AWS IAM Identity Center:
Add and remove group memberships for users
Synchronize group assignments based on source system changes
Support for both adding and removing relationships
Track membership changes for audit purposes
When a user is deprovisioned in AWS IAM Identity Center:
User account is disabled (set to inactive) rather than deleted
All group memberships are automatically removed
User's permission set assignments are revoked
Account information is preserved for audit and compliance purposes
Users can be reactivated if needed by updating the Active attribute
Entity Types: AWS IAM Identity Center Groups
Assignee Types: AWS IAM Identity Center Users
Supports Relationship Removal: Yes
Within AWS IAM Identity Center, groups can be associated with:
Permission sets that grant access to AWS accounts and resources
AWS applications and third-party SAML applications
AWS account assignments for cross-account access
Custom access policies and roles
Automate the onboarding process for new employees:
Identity Creation: Create AWS IAM Identity Center user account with attributes synchronized from HR system
Group Assignment: Add user to department-specific groups based on their role and location
Permission Sets: Automatically assign appropriate permission sets for AWS resource access
Account Access: Grant access to specific AWS accounts based on job function
Handle internal role changes and departmental transfers:
Attribute Update: Synchronize updated employee information from HR system
Group Reassignment: Remove user from previous department groups and add to new ones
Permission Adjustment: Update permission set assignments to match new role requirements
Securely remove access when employees leave:
Account Deprovisioning: Disable the user account in AWS IAM Identity Center
Group Removal: Remove all group memberships and permission set assignments
Access Revocation: Ensure all AWS account access is immediately revoked
Audit Trail: Maintain complete record of access removal for compliance purposes
This guide explains how to configure identity override attributes in Lifecycle Management to address scenarios where user attributes at the source of identity are incorrect, slow to update, or temporarily need adjustment for policy execution.
Identity override attributes allow Lifecycle Management administrators to override the value of any user attribute set at the source of identity. These overrides take precedence over actual values during Lifecycle Management workflows.
Identity override attributes address operational challenges where the source of identity doesn't immediately reflect ground truth:
Incorrect or slow-to-update attributes:
Employee termination: An employee has been terminated and needs immediate deprovisioning, but the termination status is not yet reflected at the source of identity
Role changes: An employee has immediately changed roles and needs new birthright access, but the role change and the new manager haven't been updated in the source system
Contract extensions: A contractor's end date has been extended, but the extension isn't reflected yet at the source of identity
Missing manager data: The source of identity is missing a manager value, but this information is required for downstream application provisioning
Emergency access control:
Security incidents: Immediate access restrictions are needed before HR systems can be updated
Temporary access grants: Providing temporary access while permanent changes are processed
Before you configure identity override attributes, verify that override values comply with organizational policies and data standards, and assess the downstream impact of attribute changes. Ensure:
You have administrative access to Veza Lifecycle Management
You understand which source identity attributes need to be overridden
You have identified the specific identities requiring attribute overrides
You understand that overrides only affect Lifecycle Management workflows, not Access Visibility
You recognize that overrides should be used for exceptional cases, not routine operations
Veza supports overrides for various property types from the source of identity:
Text properties (e.g., Department, Manager, Job Title)
Date properties (e.g., Activated At, Hire Date, End Date)
Numeric properties (e.g., Employee ID)
Boolean properties (e.g., Active status, Enabled flags)
You can view, create, edit, and delete overrides from the identity details view.
Click Lifecycle Management in the main navigation, then select the Identities tab.
Locate the identity requiring an attribute override.
2.1. Use the Search by name field to find the specific user
2.2. Click on the identity name to show more information in the sidebar
2.3 Click Details to open the expanded details view
Open the identity's Properties tab:
3.1 In the identity detail view, click the Properties tab to view all available attributes from the source of identity.
The Properties tab displays both original attribute values and any existing overrides.
Create a new attribute override:
4.1. Find the attribute you want to override in the properties table
4.2. Click the Actions menu (three dots) for that attribute
4.3. Select Create Override from the dropdown menu
Set the override value in the Create Override dialog:
5.1. Enter the desired override value in the Override Value field
5.2. For date attributes, use the calendar picker to select the appropriate date and time
5.3. For text attributes, type the new value directly
5.5. Click Save to apply the override, or Cancel to discard changes
The Create Override modal displays the attribute name and the current actual value for reference.
Verify the attribute override is active:
The Override column now shows "yes" for the modified attribute
The Override Value column displays your custom value
The override count updates in the Property Overrides filter (e.g., "1 Override")
View the override summary in the identity details Overview tab:
7.1. Return to the Overview tab for the identity
7.2. Check the Property Overrides section to see all configured overrides for the identity
7.3. Each override displays the attribute name, override value, and actual value from the source
The identity details view provides visibility into both original and overridden values. A visual indicator will highlight any attributes with overrides:
Properties: Use this tab to show side-by-side comparisons of actual values from the source of identity and override values
Overview: This tab includes a consolidated view of all active overrides for an identity
To change the value of an attribute override:
Navigate to the identity's Properties tab. Access the same identity detail view where you created the override.
Locate the attribute with an active override. Find the attribute showing "yes" in the Override column.
Edit the override value.
3.1. Click the Actions menu (three dots) for the overridden attribute
3.2. Select Edit Override from the dropdown menu
3.3. Modify the Override Value in the dialog 3.4. Click Save to apply the changes
To remove an override:
Access the identity's Properties tab. Navigate to the identity detail view with active overrides.
Identify the override to remove. Locate the attribute with "yes" in the Override column.
Clear the override.
3.1. Click the Actions menu (three dots) for the overridden attribute
3.2. Select Clear Override from the dropdown menu
3.3. Confirm the action when prompted
The attribute will revert to using the source of identity value, and the Override column will show "no".
The current implementation supports overrides at the individual identity level. Note that any attribute overrides are not reflected in the Veza Access Graph.
Lifecycle Management only: Attribute overrides affect only Lifecycle Management workflows and policy execution
Access Visibility unchanged: The authorization graph and Access Visibility features continue to use the actual source of identity values
Source system independence: Overrides do not modify data in the originating identity providers or HR systems
You should typically use overrides as temporary measures while addressing root causes in source systems. Maintain clear records of why each override was implemented and the business justification.
Consider the following best practices when implementing attribute overrides:
Regular review process: Establish periodic audits of active overrides to ensure they're still necessary
Monitor policy impact: Review workflow execution logs to confirm that overrides produce expected policy outcomes. You can review the identity details Activity tab and Lifecycle Management Activity Logs to ensure that override values are applied as expected during provisioning, deprovisioning, and other lifecycle actions.
Emergency response procedures: Establish clear protocols for when and how to use overrides in approved scenarios.
Change management coordination: Communicate with HR and identity provider teams when overrides are needed.
Configuring Google Cloud for Veza Lifecycle Management
The Veza integration for Google Cloud enables automated user provisioning, access management, and de-provisioning capabilities for Google Workspace. This integration allows you to synchronize identity information, manage group memberships, and automate the user lifecycle from onboarding to offboarding.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships for identities
✅
DEPROVISION_IDENTITY
Safely removes or suspends access for identities
✅
SOURCE_OF_IDENTITY
Google Cloud can act as a source system for identity lifecycle policies
✅
This document includes steps to enable the Google Cloud integration for use in Lifecycle Management, along with supported actions and notes. See Supported Actions for more details.
You will need administrative access in Veza to configure the integration and grant API scopes in Google Cloud.
Ensure you have an existing Google Cloud integration in Veza or add a new one for use with Lifecycle Management.
Verify your Google Cloud integration has completed at least one successful extraction.
The Google Cloud integration will need the following additional API scopes:
https://www.googleapis.com/auth/admin.directory.user
- Required for user management operations
https://www.googleapis.com/auth/admin.directory.group
- Required for group management operations
https://www.googleapis.com/auth/admin.directory.domain
- Required for domain management capabilities
https://www.googleapis.com/auth/admin.directory.rolemanagement
- Required for admin role management
https://www.googleapis.com/auth/apps.groups.settings
- Required for detailed group settings management
https://www.googleapis.com/auth/cloud-platform
- Required for Cloud Identity API and broader Google Cloud access
In Veza, go to the Integrations overview
Search for or create a Google Cloud integration
Check the box to Enable usage for Lifecycle Management
Configure the service account with appropriate permissions:
Users > Read/Write
Groups > Read/Write
Organization Units > Read
Roles > Read/Write
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
Google Cloud can serve as a source for identity information in Lifecycle Management Policies. User identity details are synchronized from Google Cloud with changes propagated to connected systems.
Google Cloud can also be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following lifecycle management Actions:
Primary action for user management (creating or updating users):
Entity Types: Google Workspace User
Create Allowed: Yes (New user identities can be created if not found)
The following attributes can be synchronized:
Controls relationships between users and Google Workspace groups:
Supported Relationship Types: Google Workspace Groups
Assignee Types: Google Workspace Users
Supports Removing Relationships: Yes
Both adding and removing group memberships are supported:
Add users to specific Google Workspace groups based on department or role
Remove access when roles change or users leave
Maintain consistent group membership based on organizational structure
When a user is deprovisioned:
Entity Types: Google Workspace User
De-provisioning Methods: Suspend user (preserves user data while preventing access)
User is suspended in Google Workspace
Access to resources is removed
Account information is preserved for audit purposes
Google Cloud can serve as a source system for identity lifecycle policies, where changes to Google Workspace users trigger workflows in other systems.
To create a workflow for onboarding new employees:
Create a policy with your source of identity (e.g., Workday or CSV upload)
Configure a workflow for new employees
Add a Sync Identities action to create Google Workspace users:
# Google Workspace User Attributes
email: {first_name}.{last_name}@company.com
first_name: {first_name}
last_name: {last_name}
Add a Manage Relationships action to assign appropriate groups:
Condition: department eq "Engineering"
Add to: "Engineering Team" group
Condition: department eq "Sales"
Add to: "Sales Team" group
To create a workflow for departing employees:
Create a policy with your source of identity
Configure a workflow with condition: active eq false
Add a De-provision Identity action:
Entity Type: Google Workspace User
Method: Suspend
Remove All Relationships: Yes
Configuring the Salesforce integration for Veza Lifecycle Management.
The Veza integration for Salesforce enables automated user lifecycle management across your identity ecosystem. This integration allows security and IT teams to automate the provisioning, updating, and deprovisioning of Salesforce user accounts based on changes in an authoritative source (such as an HRIS system or another identity provider).
Key capabilities include:
User Provisioning: Automatically create Salesforce user accounts with appropriate profiles and permissions
Attribute Synchronization: Keep user details in sync across systems, ensuring data consistency
Permission Management: Assign and remove permission sets and roles based on policies
User Deprovisioning: Safely disable access when users leave the organization
The integration leverages the SCIM protocol for standardized identity management operations and uses Salesforce-specific APIs for permission management.
This document includes steps to enable the Salesforce integration for Lifecycle Management, along with details on supported actions and notes.
Before configuring the integration, ensure you have:
Administrative access in Veza to configure the integration
An existing in Veza or add a new one
At least one successful extraction from your Salesforce integration
The appropriate permissions in Salesforce
Salesforce API v40 or later for user provisioning
The Salesforce integration will need the following permissions:
Assign Permission Sets: Enables assignment and removal of permission sets for users.
Freeze Users: Enables freezing and unfreezing user accounts.
Manage Internal Users: Required for user creation and updates.
Manage IP Addresses: Required for managing trusted IP ranges if IP restrictions are used.
Manage Login Access Policies: Required for configuring login access policies.
Manage Password Policies: Required for setting and resetting passwords during user creation.
Manage Profiles and Permission Sets: Required for permission set and profile assignment.
Manage Roles: Required for role assignments and management.
Manage Sharing: Required for managing sharing rules and access control.
Manage Users: Essential for user lifecycle operations.
Monitor Login History: Required for monitoring user logins.
Reset User Passwords and Unlock Users: Required for account management.
View All Profiles: Required to view profile information for all users.
View All Users: Required to view all user information.
In Salesforce, you can add these permissions for the Veza connected app in the System Permissions section at the bottom of the Permission Set configuration page.
Veza Lifecycle Management uses Salesforce SCIM APIs for identity provisioning operations. The SCIM protocol enables the automated exchange of user identity data between Veza and Salesforce. The permissions listed above provide the necessary access for SCIM functionality.
The Connected App used for the integration must have OAuth scopes that include api
and refresh_token
permissions and a certificate for JWT-based authentication
To make the required API calls, the integration requires a custom user profile in Salesforce with "API Enabled" permission
For additional details about Salesforce's SCIM implementation, refer to the .
To enable the integration:
In Veza, go to the Integrations overview.
Search for or create a integration.
Ensure the integration permission set includes the .
Check the box to Enable usage for Lifecycle Management.
Save the configuration.
Configure the extraction schedule to ensure your Salesforce data remains current:
Go to Veza Administration > System Settings.
In Pipeline > Extraction Interval, set your preferred interval.
Optionally, set a custom override for Salesforce in the Active Overrides section.
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview.
Search for the integration and click the name to view details.
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled.
Veza's Salesforce integration implements the SCIM 2.0 protocol to standardize identity management operations:
Users are represented with standard SCIM core attributes plus Salesforce-specific Enterprise extensions
The system uses email addresses as the primary key for user lookups
Usernames cannot be changed after creation and must be unique within the Salesforce instance
User profiles are managed through SCIM entitlements
User roles are handled through SCIM roles endpoints
User Deprovisioning is implemented as deactivation (setting active=false
)
Permission sets are assigned through Salesforce API calls after user creation
Salesforce can serve as a source for identity information in Lifecycle Management Policies. User identity details are synchronized from Salesforce, with changes propagated to connected systems.
Salesforce can also be a target for identity management actions based on changes in another external source of truth or as part of a workflow:
The integration supports the following lifecycle management :
Primary action for user management (creating or updating users):
Usernames cannot be changed after creation.
Email addresses must be unique.
Required attributes must be present (Username, Email, FirstName, LastName).
Passwords are set during user creation.
Division
and Department
attributes are excluded during updates due to Salesforce API limitations.
Salesforce does not support changing usernames after creation.
The following attributes can be synchronized:
The following relationship types are supported:
Groups: Add and remove group memberships (only for groups with Group Type = Regular
).
Permission Sets: Add and remove permission set assignments.
Permission Set Groups: Add and remove permission set group assignments.
Profiles: Manage profile assignments.
User Roles: Synchronize user role assignments.
Notes:
Profile and role assignments are managed via SCIM and Salesforce APIs.
When removing a profile assignment, users are assigned the "Minimum Access - Salesforce" profile by default. This profile must exist in your Salesforce instance for profile changes to work properly.
Only Salesforce groups with the property Group Type = Regular
can be used in Manage Relationships configurations.
Groups of type RoleAndSubordinatesInternal
are not supported but can be assigned through their corresponding roles.
Direct creation of permission sets ("Create Entitlement" action) is not currently supported.
When a user is deprovisioned:
The user account is frozen or deactivated (Salesforce does not allow user deletion).
Permission set assignments are removed.
Attribute history is preserved for audit.
The account can be reactivated if needed.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as permission set assignments, role assignments, and profile assignments for identities
✅
DEPROVISION_IDENTITY
Safely freezes or disables access for identities, includes user deactivation support
✅
CREATE_ENTITLEMENT
Creates entitlements such as Salesforce permission sets
❌
SOURCE_OF_IDENTITY
Salesforce can act as a source system for identity lifecycle policies
✅
username
Yes
String
Primary login identifier
Unique identifier
emails
Yes
String List
User's email addresses
first_name
Yes
String
Given name
last_name
Yes
String
Family name
profile_id
Yes
String
User's profile ID
is_active
No
Boolean
Account status
department
No
String
Organizational department
user_role_id
No
String
User's role ID
Guide for implementing automated user lifecycle management across Workday, Okta, and Active Directory
A well-designed identity Lifecycle Management solution automates the provisioning, synchronization of attributes and metadata, and deprovisioning of user accounts across your application and systems ecosystem.
This guide demonstrates how to implement a worker (employees and contractors) Lifecycle Management solution using Workday as the source of identity with downstream user account provisioning and synchronization platforms of Okta and Active Directory (AD). This represents a common enterprise architecture where worker records originate in an HR system and are provisioned to identity and access management systems, while maintaining a seamless, secure, and compliant user lifecycle process.
The following diagram shows the complete identity provisioning and synchronization architecture from Workday, a human capital management platform, to Okta and Active Directory, which are identity management systems:
The "Joiner Mover Leaver" (JML) process is a framework for managing users' employment lifecycle access within an organization. Provisioning access begins with onboarding new employees (Joiners), then managing internal transitions (Movers), and finally offboarding departing employees (Leavers).
Lifecycle Management is based on the JML paradigm, where Workday is the authoritative source of identity, which is monitored for the status of the worker based on attributes in their record to determine whether the user is a joiner, mover, or leaver.
The joiner, mover, leaver (JML) process flows through the systems as follows:
Before starting this implementation, ensure you have:
Completed at least one successful extraction for each integration
Note: An extraction is the metadata ingestion process that pulls identity and permission data from target systems into Veza, enabling it to act across access policies, governance, and provisioning workflows.
Administrative access to Veza to create Lifecycle Management policies
First, create Access Profiles that define which application entitlements a group of users will be assigned:
Go to Lifecycle Management > Access Profiles
Click Create Access Profile
Configure a profile for each department or role:
Name: Engineering Department Access
Profile Type: Application Entitlements
Description: Standard access for Engineering department employees
Label: Developers
Entitlements:
- Active Directory Group: Engineering
- Okta Group: Engineering
Name: Marketing Department Access
Profile Type: Application Entitlements
Description: Standard access for Marketing department employees
Entitlements:
- Active Directory Group: Marketing
- Okta Group: Marketing
Create additional profiles as needed based on your organizational structure.
Next, create a Lifecycle Management policy using Workday as the source of identity:
Navigate to Lifecycle Management > Policies
Click Create Policy
Configure the policy:
Name: Workday Employee Lifecycle
Source of Identity: Workday
Data Source: Your Workday integration
Entity Type: Workday Worker
Click Create Policy to save the basic configuration
Now add a workflow for new employee onboarding:
Edit your Workday Employee Lifecycle policy
Click Add Workflow
Configure the workflow:
Workflow Name: Active Employee
Condition: is_active eq true AND hire_date eq "2025-08-04T00:00:00"
This condition is triggered when, in Workday, the employee is active and a defined hiring date is "2025-08-04T00:00:00". Therefore, any active employee hired on or after the specified date is considered a joiner.
Continuous Sync: Enabled Continuous Sync is enabled, allowing updates to a user's source attributes—such as email, department, manager, or role—to be automatically synchronized to the target application on an ongoing basis after the user is provisioned.
Add actions to the workflow as detailed in the Configuration Reference section.
Add a workflow for handling employee role changes:
Edit your Workday Employee Lifecycle policy
Click Add Workflow
Configure the workflow:
Workflow Name: Mover Workflow - Regional Sales Manager
Condition: is_active eq true AND first_name eq “Sarah” AND last_name eq “Johnson” AND position eq “Regional Sales Manager”
Continuous Sync: Enabled
Add actions similar to the Joiner workflow, but ensure Remove Existing Relationships is enabled in the Manage Relationships actions to update group memberships when departments change When a user’s role changes (mover), you often need to revoke existing entitlements—like group memberships, role assignments, and permission set grants—not just avoid adding new ones. Enabling Remove Existing Relationships ensures that previously granted relationships are actively removed to prevent privilege creep or orphaned access.
Finally, add a workflow for employee termination:
Edit your Workday Employee Lifecycle policy
Click Add Workflow
Configure the workflow:
Workflow Name: Employee Termination
Condition: is_active eq false OR termination_date eq "2025-08-08T00:00:00"
This condition is triggered when the employee is no longer active and a defined termination date is "2025-08-08T00:00:00". Therefore, any non-active employee terminated on or after the specified date is considered a leaver.
Add deprovisioning actions, such as Deprovision Okta Identities and Deprovision AD Identities
After configuring your workflows for joiners, movers, and leavers, you can test your policy using Simulated Dry Runs to check the expected actions when executed.
Another approach to test your policy is to create draft versions. You can make changes to your policy as an iterative draft until you are satisfied with the results. You can then publish the final version and enable it.
As a final verification, make modifications to the Workday application to test your policy's expected performance. Ensure that the downstream applications, Okta and Active Directory, are correct with the modifications.
Select Workday Employee Lifecycle policy.
Click the overflow menu (three dots icon) at the top of the page.
Select Perform Dry Run.
In the Identity field, select an employee name from the dropdown menu.
The Dry Run takes seconds to execute. Click Show results.
Ensure that Okta and Active Directory contain the correct identity information for the employee.
Select Workday Employee Lifecycle policy.
Click Create Draft.
Select Edit Workflow.
Modify any workflow in your policy.
Click Save Workflow. The workflow is now a draft version.
Continue to iterate on changes to the workflow until it is ready.
Click Publish when the policy performs satisfactorily.
Click Settings at the top of the page.
Click Policy Settings.
Enable the Enable Policy Draft Mode radio button.
In the Policy page, select your policy and click Actions.
In the Actions menu, select Start.
In your Workday application, update the source of identity to test your policy. The following is a list of suggested changes:
Change the employee’s employee type (ie, from regular to contractor)
Verify account creation in Okta and Active Directory
Change the employee's department and verify group membership updates
Terminate the employee and verify account deprovisioning
Identity Synchronization is implemented during Lifecycle Management provisioning workflows. It is used to prevent provisioning errors due to duplication of username and/or email address. It supports robust identity sync across downstream applications (Okta and Active Directory) with different naming constraints or enforces unique identifiers.
Use Identity Synchronization if your target system already has an identity with a given attribute (e.g., a username or email is already in use).
In the Policy page, select your policy, Workday Employee Lifecycle policy.
Select Policy Settings.
Scroll down to Advanced Settings.
Under Identity Syncing, enable Sync on changes only or Always sync.
Synchronizes employee records to Okta user accounts, creating and updating user profiles with mapped worker attributes from Workday.
Configuration:
Description: Synchronizes identities to Okta
Target: OktaUser
Create Allowed: Yes
Continuous Sync: Yes
{username}@sigmacorpx.com
Yes
first_name
{first_name}
Yes
last_name
{last_name}
Yes
country_code
{work_location}
Yes
login
{username}@sigmacorpx.com
No
Common transformer
All Employees
Assigns "All Okta Employee Access" profile
Does not remove existing relationships
US Developers
Condition: wd_location eq "US" and department eq "developer"
Assigns developer-specific access profiles
Does not remove existing relationships
Creates and updates on-premises Active Directory accounts with location-specific group assignments and standardized naming conventions for different employee categories.
Configuration:
Description: Synchronizes identities to Active Directory
Target: ActiveDirectoryUser
Create Allowed: Yes
Continuous Sync: Yes
distinguished_name
CN={first_name} {last_name},OU=Minnetonka,OU=US,OU=Evergreen Staff,DC=evergreentrucks,DC=local
Yes
See for more information on distinguished_name.
user_principal_name
{username}@evergreentrucks.com
Yes
{username}@evergreentrucks.com
Yes
display_name
{display_full_name}
Yes
given_name
{first_name}
Yes
sur_name
{last_name}
Yes
country_code
{work_location}
Yes
job_title
{job_title}
Yes
primary_group_dn
CN=Domain Users,CN=Users,DC=evergreentrucks,DC=local
Yes
account_name
{display_full_name}
No
Common transformer
US Location
Condition: work_location eq "US"
Assigns US Groups
Removes existing relationships
Executive Group
Condition: employee_group eq "Executive"
Assigns the Executive Employee group
Removes existing relationships
China Location
Condition: work_location eq "China"
Assigns China Groups
Removes existing relationships
Defines the procedures for safely removing access when employees leave the organization, including specific handling for each identity provider.
Handles employee offboarding in Okta by disabling accounts while preserving access history and configurations.
Configuration:
Description: Disables identities in Okta
Target: OktaUser
Remove Relationships: No
Deprovisioning Method: Disabled
Logout User: No
Remove Personal Devices: No
Controls the offboarding process for on-premises Active Directory, including moving accounts to a terminated user's organizational unit.
Configuration:
Description: Disables identities in Active Directory
Target: ActiveDirectoryUser
Remove Relationships: No
Deprovisioning Method: Disabled
distinguished_name
CN={first_name} {last_name},OU=Evergreen Termination,OU=Evergreen Staff,DC=evergreentrucks,DC=local
No
primary_group_dn
CN=Terminated Users,OU=Evergreen Groups,DC=evergreentrucks,DC=local
No
Below are more detailed examples of joiner, mover, and leaver scenarios that you can implement using Veza's Lifecycle Management.
Trigger: New employee record created in Workday with status="Active" and worker_type="Full_Time"
Actions:
1. Create Okta user with attributes from Workday transformer
2. Assign to department-specific groups in Okta
3. Create AD user with attributes from Workday transformer
4. Add to appropriate security groups in AD based on job role
5. Send welcome email with account information
Trigger: New worker record created in Workday with status="Active" and worker_type="Contractor"
Actions:
1. Create Okta user with limited attribute set and "Contractor-" prefix in username
2. Assign to contractor-specific groups in Okta
3. Create time-limited AD account with expiration date set to contract end date
4. Add to contractor security groups with restricted access
5. Send welcome email with temporary password and access instructions
Trigger: Employee department changed in Workday
Actions:
1. Update department attribute in Okta and AD
2. Remove previous department group memberships in both systems
3. Add new department group memberships in both systems
4. Update OU placement in AD
5. Send notification to new manager
Trigger: Employee job level changed to include management flag
Actions:
1. Update job title in all systems
2. Add to manager-specific groups in Okta and AD
3. Add to approval workflows in relevant systems
4. Send manager training notification
Trigger: Employee status changed to "Terminated" in Workday
Actions:
1. Disable user in Okta and AD (do not delete)
2. Remove all group memberships
3. Revoke all application access
4. Move AD account to "Terminated Users" OU
5. Generate access termination report for compliance
Trigger: Employee terminated with reason="Security Risk"
Actions:
1. Immediately disable all accounts (high priority)
2. Force logout from all active sessions
3. Reset all passwords
4. Remove all access rights and group memberships
5. Generate security incident report
# Okta User Attributes
login: {worker_id}@company.com
email: {work_email | DEFAULT, "{worker_id}@company.com"}
first_name: {first_name}
last_name: {last_name}
display_name: {first_name} {last_name}
department: {department_name}
title: {job_title}
manager_id: {manager_worker_id}@company.com
# Handle different user types
user_type: {worker_type | LOWERCASE | REPLACE, "full_time", "Employee" | REPLACE, "contractor", "Contractor" | DEFAULT, "Employee"}
employee_id: {employee_id}
# Custom attributes
customField1: {location_code}
customField2: {hire_date | DATE_FORMAT, "yyyy-MM-dd"}
customField3: {termination_date | DATE_FORMAT, "yyyy-MM-dd" | DEFAULT, ""}
# AD User Attributes
account_name: {worker_id}
# Build distinguished name based on employment type and department
distinguished_name: {worker_type | EQUALS, "contractor" | IF_TRUE, "CN={first_name} {last_name},OU=Contractors,OU={department_name},DC=company,DC=local" | IF_FALSE, "CN={first_name} {last_name},OU=Employees,OU={department_name},DC=company,DC=local"}
user_principal_name: {worker_id}@company.local
email: {work_email | DEFAULT, "{worker_id}@company.com"}
display_name: {first_name} {last_name}
given_name: {first_name}
sur_name: {last_name}
department: {department_name}
job_title: {job_title}
description: {job_title} - {department_name}
company: Company Inc.
# Set account expiration for contractors
account_expires: {worker_type | EQUALS, "contractor" | IF_TRUE, {contract_end_date} | IF_FALSE, ""}
# Custom attributes
extension_attribute_1: {cost_center}
extension_attribute_2: {business_unit}
extension_attribute_3: {hire_date | DATE_FORMAT, "yyyy-MM-dd"}
extension_attribute_4: {employee_id}
To handle edge cases where standard attribute formatting is not effective, use Identity Override Attributes to define special exceptions. For example:
Contractors vs. Employees: Use different username formats based on employment type
Username Conflicts: Configure fallback formatters for handling duplicate usernames
Location-Specific Naming: Apply different naming conventions based on location or region
Ensure your email addresses remain consistent by configuring email write-back to Workday:
In your Joiner workflow, after the Sync Identities actions, add:
Add Action > Create Email
Configure for your email system
Then add:
Add Action > Write Back Email
Integration: Your Workday integration
Entity Type: Workday Worker
This ensures the email created in your systems is written back to Workday as the source of truth.
When implementing conditional actions, consider these patterns for robust lifecycle management:
# US-based employees
work_location eq "US"
# International employees requiring different treatment
work_location eq "China" OR work_location eq "EMEA"
# Remote workers
work_location eq "Remote" OR office_location contains "Remote"
# Technical roles requiring elevated access
department eq "Engineering" OR department eq "DevOps" OR job_title contains "Developer"
# Management roles
job_level eq "Manager" OR job_level eq "Director" OR job_level eq "VP"
# Sensitive roles requiring additional security
department eq "Finance" OR department eq "Legal" OR department eq "HR"
# Full-time employees
worker_type eq "Full_Time" AND status eq "Active"
# Contractors with time-limited access
worker_type eq "Contractor" AND contract_end_date is not null
# Temporary workers
worker_type eq "Temporary" OR employment_status eq "Temp"
Monitor your lifecycle management workflows using the Activity Log:
Navigate to Lifecycle Management > Activity Log
Filter by policy name to see all actions for your Workday policy
Look for failed actions and investigate error messages
Use the activity details to verify that transformations are working correctly
If usernames are already taken in target systems:
Configure Fallback Formatters to handle conflicts
Use employee ID or other unique identifiers as backup username formats
If required attributes are missing from Workday:
Use DEFAULT transformers to provide fallback values
Configure conditional logic to handle missing data gracefully
If group assignments fail:
Verify that referenced groups exist in target systems
Check that service accounts have sufficient permissions
Use conditional logic to assign groups only when they exist
Configuring SCIM integrations for Veza Lifecycle Management.
The Veza SCIM integration enables automated user lifecycle management for any application that supports the System for Cross-domain Identity Management (SCIM) protocol. SCIM provides a standardized approach for provisioning, updating, and de-provisioning users and groups across diverse applications including Atlassian products, Egnyte, Sigma Computing, and many others.
This document includes steps to enable SCIM integrations for use in Lifecycle Management, along with supported actions and notes. See for more details.
You will need administrative access in Veza to configure the integration and appropriate permissions in the target SCIM application.
Ensure you have an existing in Veza or add a new one for use with Lifecycle Management.
Verify your SCIM integration has completed at least one successful extraction
The SCIM integration will need the required API permissions:
Read permissions: scim:read
or equivalent for user and group discovery
Write permissions: scim:write
or equivalent for provisioning operations
Specific endpoints: Access to /Users
and /Groups
endpoints
Important: SCIM applications have varying permission models. Consult your specific application's documentation for the exact scopes or permissions required for SCIM operations.
To enable the integration:
In Veza, go to the Integrations overview
Search for or create a SCIM integration
Check the box to Enable usage for Lifecycle Management
Configure the extraction schedule to ensure your SCIM data remains current:
Go to Veza Administration > System Settings
In Pipeline > Extraction Interval, set your preferred interval
Optionally, set a custom override for your SCIM integration in the Active Overrides section
To verify the health of the Lifecycle Management data source:
Use the main Veza navigation menu to open the Lifecycle Management > Integrations page or the Veza Integrations overview
Search for the integration and click the name to view details
In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled
SCIM integrations can be targets for identity management actions, receiving provisioning commands from Veza based on changes in external sources of truth or as part of automated workflows.
The integration supports the following lifecycle management :
Primary action for user management (creating or updating users):
Username (user_name
) is required and serves as the unique identifier
Email addresses are managed through the SCIM emails
array
User activation/deactivation is controlled via the active
attribute
Custom attributes are mapped according to SCIM schema extensions
The following attributes can be synchronized:
Group membership management with full add/remove capabilities:
Add users to groups for role-based access control
Remove users from groups during role changes or de-provisioning
Support for nested group structures where the SCIM provider allows
Relationship changes are immediate and reflected in target application
When a user is deprovisioned:
User account is deactivated (sets active: false
)
Group memberships are automatically removed
Account can be reactivated if needed
User data is preserved for audit purposes
Note: Some SCIM implementations support hard deletion while others only support deactivation. The SCIM integration uses deactivation by default for data preservation.
Entity Types: SCIM Groups
Assignee Types: SCIM Users
Supports Relationship Removal: Yes
Within SCIM applications, groups can be associated with:
Application-specific permissions and roles
Resource access controls
Team or organizational structures
Custom entitlements defined by the SCIM provider
The following applications are validated to work with Veza's SCIM Lifecycle Management:
Atlassian Products (Jira Cloud, Confluence Cloud, Bitbucket Cloud)
SCIM Endpoint: https://{domain}.atlassian.net/scim/directory/{directory-id}
Full user and group provisioning support
Egnyte
SCIM Endpoint: https://{domain}.egnyte.com/pubapi/scim/v2
User provisioning and group management
Sigma Computing
SCIM Endpoint: https://aws-api.sigmacomputing.com/scim/v2
User lifecycle and team assignment
Fivetran
SCIM Endpoint: https://api.fivetran.com/scim/v2
User and group provisioning
Harness
SCIM Endpoint: https://app.harness.io/gateway/ng/api/scim/account/{accountid}
User management and role assignment
Zapier
SCIM Endpoint: https://zapier.com/scim/v2
User provisioning and team management
Twingate
SCIM Endpoint: https://{domain}.twingate.com/api/scim/v2
User provisioning and group assignment
ThousandEyes
SCIM Endpoint: https://api.thousandeyes.com/scim
User management (groups via custom implementation)
When a new employee joins (triggered by HR system changes):
Identity Sync: Create user account in SCIM application with basic attributes
Email Setup: Configure primary email and secondary contacts
Group Assignment: Add user to department and role-based groups automatically
Access Verification: Confirm user can access application and assigned resources
When an employee changes roles or departments:
Attribute Update: Sync new job title, department, and manager information
Group Reassignment: Remove old role groups, add new role groups
Access Review: Verify appropriate access levels for new position
Notification: Alert managers and IT of completed changes
When an employee leaves the organization:
Account Deactivation: Set user status to inactive in SCIM application
Group Removal: Remove all group memberships and access rights
Data Preservation: Maintain account record for audit and compliance
Manager Notification: Alert appropriate stakeholders of access removal
For large-scale provisioning operations:
Batch Processing: Create multiple users efficiently through SCIM bulk operations
Group Pre-creation: Establish organizational groups before user assignment
Validation: Verify all users are created with correct attributes and memberships
Rollback Capability: Support for reversing bulk operations if needed
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships and role assignments for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities
✅
CREATE_ENTITLEMENT
Creates entitlements such as groups
✅
user_name
Yes
String
Primary login identifier
Unique identifier, often email
emails
No
String
User's primary email address
Comma-separated for multiple emails
display_name
No
String
User's display name
Full name for UI presentation
title
No
String
Job title
Professional title/role
nick_name
No
String
User's nickname
Informal name or alias
active
No
Boolean
User account status
Controls account activation
external_id
No
String
External system identifier
For cross-system identity mapping
id
No
String
SCIM system identifier
Auto-generated by SCIM provider
display_name
Yes
String
Group display name
id
No
String
SCIM system identifier
external_id
No
String
External system identifier
group_type
No
String
Group classification
description
No
String
Group purpose description
Configuring the Atlassian Cloud integration for Veza Lifecycle Management.
The Veza integration for Atlassian Cloud enables automated user lifecycle management, with support for user provisioning and deprovisioning, group membership management, and attribute synchronization across Atlassian Cloud Admin, Jira Cloud, Confluence Cloud, and Bitbucket Cloud.
SYNC_IDENTITIES
Synchronizes identity attributes between systems, with options to create new identities and update existing ones
✅
MANAGE_RELATIONSHIPS
Controls entitlements such as group memberships and role assignments for identities
✅
DEPROVISION_IDENTITY
Safely removes or disables access for identities
✅
DELETE_IDENTITY
Permanently deletes the user account and associated data
✅
This document includes steps to enable the Atlassian Cloud integration for use in Lifecycle Management, along with supported actions and notes. See Supported Actions for more details.
Before enabling Lifecycle Management for Atlassian Cloud, ensure you have the necessary access and configuration in place. You'll need administrative access in both Veza and Atlassian Cloud to complete the setup process.
Veza Requirements:
Administrative access to configure integrations
An existing Atlassian Cloud integration that has completed at least one successful extraction
Atlassian Cloud Requirements:
Administrative access to manage API keys and SCIM configuration
An active SCIM directory configured in your Atlassian Cloud organization
Proper API permissions for both SCIM and Atlassian Cloud Admin APIs
The following parameters are required to enable lifecycle management operations:
SCIM URL (scim_url
)
The SCIM endpoint URL for your Atlassian organization
User provisioning and deprovisioning
SCIM Token (scim_token
)
Authentication token for SCIM API access
Authenticates user lifecycle operations
Admin API Key (admin_api_key
)
API key for Atlassian Cloud Admin API
Group management and ID mapping
SCIM Organization ID (scim_organization_id
)
Your organization's SCIM identifier
Coordinates operations across APIs
The integration automatically extracts the directory ID from your SCIM URL and uses it alongside the organization ID to coordinate user and group operations.
Optional Parameters: If you're also using the integration for discovery operations (viewing Jira projects, Confluence spaces, and Bitbucket repositories in Veza), you'll need product_token
and product_user
. These parameters are not required for lifecycle management operations and can be omitted if you're only performing user provisioning and group management.
Complete the following steps in Veza to enable and configure Lifecycle Management for your Atlassian Cloud integration.
Enable Lifecycle Management:
Navigate to the Integrations overview in Veza
Locate your Atlassian Cloud integration (or create a new one if needed)
Check the box to Enable usage for Lifecycle Management
Configure Data Synchronization:
Configure the extraction schedule to ensure Atlassian Cloud user and group data remains current. Go to Administration > System Settings, then navigate to Pipeline > Extraction Interval. Set your preferred interval for data synchronization, or create a custom override specifically for Atlassian Cloud in the Active Overrides section if you need more frequent updates than your default schedule.
Verify Configuration:
After enabling Lifecycle Management, verify the integration is functioning correctly by navigating to Lifecycle Management > Integrations (or the main Integrations overview). Locate your Atlassian Cloud integration and click its name to view details. In the Properties panel, click the magnifying glass icon under Lifecycle Management Enabled to check the health status.
Atlassian Cloud can be a target for identity management actions, based on changes in another external source of truth or as part of a workflow.
The integration supports the following lifecycle management Actions:
The Sync Identities action creates new user accounts or updates existing ones in Atlassian Cloud. User provisioning occurs through the SCIM directory API, which ensures that email addresses remain unique across your Atlassian organization. When you create or update a user, Veza automatically establishes cross-service connections between the Cloud Admin user account and their corresponding accounts in Jira, Confluence, and Bitbucket.
Supported User Attributes:
Yes
String
User's email address
userName
Unique identifier across the organization
name
No
String
User's full name
name.formatted
Combined first and last name
display_name
No
String
User's display name
displayName
How the user appears in Atlassian products
The active
status is managed automatically during provisioning and deprovisioning operations and is not available as a sync attribute. When you sync user attributes, Veza translates them to the appropriate SCIM fields shown in the table above before sending them to Atlassian's SCIM API.
The Manage Relationships action controls group memberships for users across Atlassian Cloud. You can add users to groups or remove them, with changes synchronized across Atlassian Cloud Admin and all associated products (Jira, Confluence, and Bitbucket). All membership changes are tracked automatically for audit purposes, providing visibility into access modifications over time.
Atlassian Cloud groups can control various types of access, including product-level permissions (such as access to specific Jira projects or Confluence spaces), administrative roles within Atlassian Cloud Admin, site-wide permissions and policies, and integration settings with external identity providers. When you modify a user's group memberships through Veza, these changes apply consistently across all products where the group has assigned permissions.
Important: Groups must already exist in both the SCIM directory and Atlassian Cloud Admin before you can assign users to them. The integration does not support creating or deleting groups. See Group Management Requirements for more details.
The Deprovision Identity action safely removes user access while preserving audit trails for compliance. When you deprovision a user, their account is deactivated through the SCIM API and all group memberships are automatically removed across Atlassian Cloud Admin, Jira, Confluence, and Bitbucket. While the user can no longer access any Atlassian products, their account information and cross-service connection history are preserved to maintain audit trails and historical visibility for compliance reporting.
The Delete Identity action permanently removes the user account and associated data from Atlassian Cloud. When you delete a user, their account is permanently deleted through the SCIM API, not just deactivated. Unlike deprovisioning, this operation cannot be reversed and should be used with caution only when permanent removal is required.
The following operations are not supported in the current implementation:
User Logout: Cannot force user logout from Atlassian products
License Management: Cannot remove specific licenses from users
Device Management: Cannot manage or remove personal devices
Password Management: Password operations are handled through SCIM only
Managing group memberships in Atlassian Cloud requires coordination between the SCIM directory and Atlassian Cloud Admin.
Key requirements and limitations:
Groups must already exist in both systems: You can only assign users to groups that are present in both the SCIM directory and Atlassian Cloud Admin. The integration does not support creating or deleting groups.
Display name matching: When modifying group memberships, Veza uses display name matching to identify the corresponding group in each system.
Automatic ID mapping: The integration automatically maps the correct SCIM group ID and Atlassian group ID for each operation.
The Atlassian Cloud integration uses a dual-API architecture to provide comprehensive lifecycle management capabilities.
User provisioning, deprovisioning, and attribute updates are handled via Atlassian's SCIM API, ensuring email uniqueness and maintaining user account consistency.
Group membership management uses the Atlassian Cloud Admin API, which provides the functionality to add and remove users from groups across all products. ID Mapping and Coordination:
To maintain consistency across systems, the integration performs complex ID mapping between SCIM identifiers and Atlassian identifiers. SCIM User IDs are mapped to Atlassian Account IDs, and SCIM Group IDs are mapped to Atlassian Group IDs. The integration automatically extracts the directory ID from your SCIM URL and uses your organization ID to coordinate these operations. This ensures that changes made through Veza are reflected accurately in both the SCIM directory and across all Atlassian products.
Automate the provisioning of new employees into Atlassian Cloud:
Create User Account: New user account is created via SCIM with basic profile information
Assign Base Groups: User is added to organization-wide groups for general access
Product Access: User is granted access to specific products (Jira, Confluence, Bitbucket) based on role
Department Groups: User is added to department-specific groups for project and space access
Handle employee role changes and access updates:
Update User Attributes: User profile information is updated to reflect new role
Remove Previous Access: User is removed from role-specific groups and permissions
Grant New Access: User is added to groups appropriate for their new role
Cross-Product Sync: Changes are propagated across all Atlassian products
Safely remove access when employees leave:
Deactivate Account: User account is disabled via SCIM
Remove All Groups: User is removed from all groups and permissions
Revoke Product Access: Access is revoked across Jira, Confluence, and Bitbucket
Audit Trail: All changes are logged for compliance and historical tracking
Manage user identities and lifecycle automation in Veza, including synchronization, access profiles, and workflow triggers for joiner, mover, and leaver processes.
Identities in Veza Lifecycle Management represent a top-level view of an individual user, used to automate provisioning and deprovisioning across systems, applications, or services.
This can include birthright access managed throughout the user's lifecycle, triggered by joiner, mover, or leaver events, as well as ad-hoc, just-in-time access granted upon approval of an access request.
Identities can refer to users who may be employees, contractors, or external collaborators (partners), but generally exclude non-human entities, such as service accounts or AI agents.
With Lifecycle Management, workflows defined within policies dictate the users’ onboarding, job-function change, and offboarding processes, ensuring that corresponding identities have precisely the access they need as their roles evolve or their status within the organization changes. Similarly, access granted to identities may also change as just-in-time access requests are fulfilled or revoked.
The Lifecycle Management > Identities page serves as a central hub for viewing identities known to Lifecycle Management and Access Requests, as well as performing actions on individual identities.
Identities are populated into Lifecycle Management by first identifying the entire user population by integrating their source of identity (SOI) and creating a policy that uses that data source, into a Veza tenant. This may require enabling a built-in integration for your identity source (e.g., Workday integration), uploading user data in CSV format (CSV Upload integration), or using a custom OAA connector.
See for detailed information on integrating the source of identity.
For Integration management using APIs, see .
Identities are maintained through synchronization with the identity sources. Syncing identities ensures that all systems reflect the most current user state, whether through onboarding, role changes, or attribute updates, keeping access aligned, consistent, and audit-ready.
The Sync Identities action is used for the automatic synchronization of user identities between an authoritative source (such as an HR system or identity provider) and target systems. In the Lifecycle Management workflow, Sync Identities works alongside other key actions:
Manage Relationships (handling group/role memberships)
Deprovision Identity (removing access when users leave the organization)
Synchronization is executed through Lifecycle Management policy workflows. Policy workflows can be defined with triggers and actions to synchronize changes in your identity source with target systems. Additionally, SCIM (System for Cross-domain Identity Management) or OAA (Open Authorization API) can enable identity sync for a wide range of target applications that don't have a built-in Veza integration, but do expose standard user and group management APIs or support bulk data export.
See for more information on usage.
See for detailed information.
Note: The display name is not the primary unique identifier, as multiple users may share the same first and surname.
When an identity has multiple sources (primary and secondary), the Identities table displays attributes based on the active status of each source. The "active" status is determined by the is_active
field in each source of identity, which typically represents employment or account status (e.g., an active employee in Workday, an active contractor account in a secondary system).
Display Priority:
This behavior ensures the table reflects the most current and relevant source of identity information. For example, when an employee terminates (primary source becomes inactive) but remains as an active contractor in a secondary source, their attributes are displayed from the contractor system.
To start, you can use filtering options to locate specific identities or analyze a group of identities based on standard criteria. The following filters are available on the Identities overview:
Search by name: Locate specific individuals using a name-based search
Department filter: View identities by organizational unit
Status filter: Filter by Active or Inactive employment status
Access Profiles filter: Find identities with specific profile assignments
Integrations filter: Filter by source integration system
Policy filter: View identities managed by specific policies
Workflows Triggered filter: Identify identities that have triggered automation
Not in a Workflow: Find identities outside automated workflows
For each identity record, administrators can perform actions through the Actions menu:
View Details: Access identity information, attribute history, and related accounts
Trigger Workflow: Manually initiate a workflow in a policy
Request Access: Launch an Access Request for additional access (requires Veza Access Requests).
See for customizing the Request Access Template.
Show in Graph: Visualize identity relationships and access patterns
Click on your selected identity to open the Identity Details view.
The following fields in the Identity Details view are populated with the current user's information:
Title: The user’s position title.
Email: The user's email address.
Providers: A list of assigned integrations. When you click a specific provider, the Integration page opens, displaying the provider's detailed information, including its Entity Categories distribution.
Access Profiles: A list of assigned Access Profiles to the identity. When you click on a specific profile, its detailed information page appears, displaying its status (either Draft or Published). You can also edit the Access Profile if needed.
Last Workflow Triggered: The name of the workflow that was recently executed.
Primary: The Primary identifier is configured (True or False) to be the authoritative attribute for matching or locating an identity.
Secondary Identities: An associated name is connected to the primary identity.
ID: The Identification number assigned to the primary identity.
Active: The user’s identity is active if True. Otherwise, False when inactive.
Last Changed: A time frame (in days, weeks, months) when the identity was last changed.
When executing a policy where user attributes at the source of identity are incorrect, slow to update, or temporarily need adjustment, you can override the existing attribute with a different value until the issue is corrected. For more information, see .
Here are some examples of incorrect or slow-to-update attributes:
Employee termination: An employee has been terminated and needs immediate deprovisioning, but the termination status is not yet reflected at the source of identity
Role changes: An employee has immediately changed roles and needs new birthright access, but the role change and the new manager haven't been updated in the source system
Contract extensions: A contractor's end date has been extended, but the extension isn't reflected yet at the source of identity
Missing manager data: The source of identity is missing a manager value, but this information is required for downstream application provisioning
Security incidents: Immediate access restrictions are needed before HR systems can be updated
Temporary access grants: Providing temporary access while permanent changes are processed
To create an Override Value, perform the following:
Select an identity by name.
Click Details.
Click Properties in the Details menu.
Click Actions (three dots icon)
Select Create Override.
The Create Override window appears. The Property Name and Actual Value fields are populated.
Enter an Override Value.
Click Save.
Click the overflow icon (three dots) to display options for performing actions on the identity. Next, click on the desired action:
Trigger Workflow
Request Access
Show in Graph
The Trigger Workflow option is a convenient way to test a specific user in a policy workflow. For example, you can test a new employee's identity in a joiner workflow to evaluate whether they have sufficient access to perform their duties.
Use the Trigger Workflow option to manually run a workflow for a specific user.
To trigger a workflow with a specific user, perform the following steps:
Select a workflow in the dropdown menu.
Click Trigger to run the workflow.
Requests Access allows for additional or temporary access grants, particularly when a user’s current access is insufficient for their duties.
Use the Request Access option in the Identity Details view to grant access to a specific user while reviewing their detailed information. You can grant access to the user through the following:
Access Profiles option
A collection of entitlements that are granted as part of the user’s identity lifecycle requirements. Access Profiles can:
Define reusable collections of entitlements across multiple target systems by business roles, departments, or functions
Automate consistent access provisioning
Manage access profile types and their capabilities
See and for more information.
To grant an Access Profile, perform the following:
Click the Access Profile radio button.
The Choose from Access Profile window appears.
Enter a Reason for granting the Access Profile for the user.
Select an existing Access Profile from the dropdown menu.
Enter an Expiration Time in Hours or Days.
App option
An App refers to a target system, where user access is provisioned or deprovisioned as part of the identity lifecycle process.
To grant an App, perform the following:
Click the Access Profile radio button.
The Request Grant Access window appears.
Enter a Reason for granting the App for the user.
Select an existing Integration from the dropdown menu.
Use the arrows to select an Expiration Time in Days, where 0 means no expiration.
Click Create.
Entitlements option
Granting Entitlements to a user provides specific access permissions (roles, permissions, group memberships) required to perform their responsibilities.
Note: By granting Entitlements to a specific user, you pre-fill an Access Request with the appropriate configuration settings and policy.
To grant an Entitlement, perform the following:
Click the Entitlements radio button.
The Request Grant Access window appears.
Enter a Reason for granting the Entitlement for the user.
Select an existing Integration from the dropdown menu.
Based on the integration you selected, the Target Entity Type is automatically populated.
Use the arrows to select a Target Entitlement.
Use the arrows to select an Expiration Time in Days, where 0 means no expiration.
Click Create.
Use the Show in Graph option to display a graph that represents all assigned Access Profiles, Apps, and Entitlements, including all associations.
This is a graphical representation of John Smith’s assigned access and entitlements to roles/groups.
Name
Identity display name
The full display name is an attribute composed of the user's first name and last name.
Status
Current lifecycle status (Active/Inactive)
Indicates employment status.
Property Overrides
Shows "Yes" if identity has custom attribute overrides
Identifies identities with manual attribute modifications (overriding attributes from your SOI )
Department
Organizational department from SOI
Used for access assignment and reporting
Policy
Associated Lifecycle Management policy
Links identity to a specific Lifecycle Management workflow
Access Profiles
Assigned Access Profiles with counts
Shows current access assignments
Last Changed at
Timestamp of the most recent update
Tracks synchronization and change activity
Workflows
Associated Lifecycle Management workflow name
Identifies which policy workflow manages the identity
Active
Any
Primary source
Inactive
Active
Secondary source
Active
Active
Primary source (default)
Inactive
Inactive
Primary source (default)
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 deprovision 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 employment lifecycle.
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. More specifically, you use the attribute transformer to generate an email address for new joiners. Use the source username (user_principal_name
) from the source of identity (Azure AD UPN) for the first part (user attribute), while your-email-domain.com is used for the last part (target attribute).
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: Move a user’s Active Directory account to an Organizational Unit (OU) reserved for terminated accounts.
When synchronizing a user’s attributes, Veza may apply many transformations to convert the source attribute values into a more suitable format intended for the target application as a user account attribute.
For example, a transformer might remove the domain from an email address, replace special characters, or convert a string with uppercase letters to lowercase letters.
See the following sections for more information about formatting destination attributes and possible transformations:
Continuous Sync ensures that identity attributes in target systems remain up-to-date with the corresponding attributes residing at the 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
You may not want to enable continuous sync at the Attribute level when there is a change in the user principal name, such as a change in marital status or legal name correction.
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:
Enable continuous sync on the workflow to monitor for changes
Enable continuous sync on the sync action to allow updates
Enable continuous sync on the department attribute transformer
Recommended Settings
Enable continuous sync for attributes that change during employment:
First Name Surname
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 define one or more rules to apply when synchronizing the attributes of a target identity. Use them at the Policy level where you want to create or update attributes using the same conventions across multiple sync or deprovision actions. When you need to configure a one-time individual action in a workflow, such as a specific attribute, then you use the transformer at the Action level.
At the Policy level, you configure a transformer with basic details, including how to source the value of each attribute:
Assign a name and description to the transformer, and specify the data source to which it applies.
Entity Type: Choose the target entity type in the destination system.
Click Add Attribute. The Destination Attribute dropdown will list available attributes for the chosen entity type.
Destination Attribute: Choose the attribute that Veza will create or update for the target entity.
Formatter: Choose how the destination attribute should be formatted. Specify the value, a {source\_attribute}
, or apply Transformation Functions.
Pipeline Functions: Combines a series of attribute formatters with the pipe ( | ) character that runs the value of an attribute in sequential order, where the output of one formatter becomes the input of the following formatter, thus the name, pipeline.
See Pipeline Functions for more examples.
Continuous Sync: Enabling this option ensures that the attribute is always synced, while applying any defined transformations. By default, attributes will not be synced if the target identity already exists.
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 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 using a function, or a combination of these.
To create a destination attribute with a fixed value, enter the desired value when configuring the formatter. For setting the creator attribute:
created_by
“Veza”
Disabled
For activating a re-hired employee:
isActive
true
Enabled
To set empty values (common for de-provisioning flows):
manager_id
" "
Enabled
isActive
false
Enabled
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:
first_name
{first\_name}
Enabled
last_name
{last\_name}
Enabled
{first_name}.{last_name}@domain.com {first_name}_{last_name}@domain.com {last_name}@domain.com {firstname_initial}{last_name}@domain.com {firstname_initial}-{last_name}@domain.com {firstname_initial}{middlename_initial}{last_name}@domain.com {firstname_initial}-{last_name} {last_name}-{firstname_initial}@domain.com
-
Based on the user metadata available from your source of identity (SOI), 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. Suppose an attribute value needs to be altered for compatibility with the target system. In that case, 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:
username
`{email | REMOVE_DOMAIN}`
Removes the domain from the email to create username
"jsmith" is the output derived from [email protected]
user_id
`f{id | UPPER}`
Converts ID to uppercase
JSMITH" is the output derived from the userid, "jsmith"
Refer to the Transformer Reference page for a comprehensive list of all supported functions and parameters. Contact Veza if you require additional transformations for your use case. 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
Generating random values (e.g., RANDOM_INTEGER for numeric ranges)
The ASCII transformer is particularly useful when working with localized user data and legacy systems that have strict character set limitations (such as Active Directory sAMAccountName restrictions). This transformer performs two primary operations:
Removes all non-printable ASCII characters (including control codes, zero-width spaces, tabs, and newlines)
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, including the following:
Accented Letters: Letters with diacritics like é, à, ö, ñ, ç, etc., commonly used in languages like French, Spanish, German, and Portuguese. Non-Latin Alphabets: Characters from various alphabets such as Cyrillic (e.g., ж, б), Greek (e.g., α, β), Arabic (e.g., ح, ص), Hebrew, and Chinese (e.g., 汉, 字). Mathematical and Technical Symbols: Symbols like infinity (∞), integral (∫), summation (∑), Ohm (Ω), degree (°). Currency Symbols: Symbols like €, £, ¥. Emoji: Various emoticons like 😊, 😞, etc. Other Symbols: Symbols like ©, ®, ™, etc.
The DATE_FORMAT transformer formats date strings using Go time package layout syntax. This transformer helps convert between different date formats, such as transforming dates for LDAP integration or standardizing date formats across systems.
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. 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
DateTime = “2006-01-02 15:04:05”
DateOnly = “2006-01-02”
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)
TimeOnly = “15:04:05”
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
RFC Components:
RFC822 = “02 Jan 06 15:04 MST”
RFC822Z = “02 Jan 06 15:04 -0700” // RFC822 with numeric zone
RFC850 = “Monday, 02-Jan-06 15:04:05 MST”
RFC1123 = “Mon, 02 Jan 2006 15:04:05 MST”
RFC1123Z = “Mon, 02 Jan 2006 15:04:05 -0700” // RFC1123 with numeric zone
RFC3339 = “2006-01-02T15:04:05Z07:00”
RFC3339Nano = “2006-01-02T15:04:05.999999999Z07:00”
Other Constant Components:
Layout = “01/02 03:04:05PM '06 -0700” // The reference time, in numerical order.
ANSIC = “Mon Jan _2 15:04:05 2006”
UnixDate = “Mon Jan _2 15:04:05 MST 2006”
RubyDate = “Mon Jan 02 15:04:05 -0700 2006”
Kitchen = “3:04PM” // Handy time stamps.
Stamp = “Jan _2 15:04:05”
StampMilli = “Jan _2 15:04:05.000”
StampMicro = “Jan _2 15:04:05.000000”
StampNano = “Jan _2 15:04:05.000000000”
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
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 and Win32 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.
Additionally, the DATE_FORMAT transformer supports LDAP time format requirements using the format Win32 in LDAP directories:
{timestamp | DATE_FORMAT, "Win32"}
Converts a date to LDAP time format for directory integration.
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
The DATE_FORMAT transformer is used for formatting time using a time string to store time values in Generalized-Time format, which is required for Active Directory and other Microsoft-based target applications.
The Generalized-Time syntax is “YYYYMMDDHHMMSS.0Z”. Time String Format Example:
{date | DATE_FORMAT, "20010928060000.0Z"}
The “Z” indicates no time differential. Active Directory stores date/time as Greenwich Mean Time (GMT). If no time differential is specified, GMT is the default.
If the time is specified in a time zone other than GMT, the differential between the time zone and GMT is appended to the string instead of “Z” in the form “YYYYMMDDHHMMSS.0[+/-]HHMM”. Time Zone Format Example:
{date | DATE_FORMAT, "20010928060000.0+0200"}
The differential is based on the formula: GMT = Local + Differential.
These transformers enable the cleaning, formatting, and standardization of string data from your source systems.
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 "[email protected]", the result is “johndoe@examplecom”
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
The REMOVE_WHITESPACE transformer removes all whitespace characters (spaces, tabs, newlines) from a string. It can help create compact identifiers or ensure 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 the department is “Human Resources”, the result is “humanresources”
Creating system identifiers: {cost_center | REMOVE_WHITESPACE}
Ensures cost center codes have no embedded spaces
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”
The NEXT_NUMBER transformer can be combined with IF/ELSE conditional logic to create intelligent username generation with automatic fallback strategies. This is particularly useful for handling length constraints and ensuring unique usernames in Lifecycle Management attribute transformers.
Only one NEXT_NUMBER transformer can be used per transformation expression
The first alternative uses an empty string (""), followed by numbered alternatives (“2”, “3”, etc.)
Alternative values are automatically generated to ensure username uniqueness
This example creates usernames that adapt based on length constraints, using the sys_attr__would_be_value_len system attribute to evaluate the length of the generated value:
IF sys_attr__would_be_value_len le 20
{first_name | LOWER}.{last_name | LOWER | NEXT_NUMBER, 2, 3}
ELSE IF sys_attr__would_be_value_len le 30
{first_name | LOWER}.{last_name | LOWER | FIRST_N, 1 | NEXT_NUMBER, 2, 3}
ELSE
{first_name | LOWER | FIRST_N, 1}.{last_name | LOWER | FIRST_N, 1 | NEXT_NUMBER, 2, 3}
Example outputs: For a user named “John Whitaker” (short enough for the first condition):
Base value: john.whitaker
Alternatives: john.whitaker2, john.whitaker3, john.whitaker4
For a user named “Leonevenkataramanathan Foster” (requires truncation to meet length limits):
Base value: l.f
Alternatives: l.f2, l.f3, l.f4
This approach ensures that username generation adapts to different name lengths while maintaining consistency and uniqueness across your identity management system.
You can pipeline multiple transformation functions together, separated by a vertical bar (|). Each will apply in sequence, allowing for complex attribute formatters that use the output of one function as the input of another.
{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 = [email protected]
, the result is john.smith
.
{email | REPLACE\_ALL, " ", "."}
If email = john [email protected]
, the result is [email protected]
.
{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.
TEST{| RANDOM_INTEGER, 1000, 9999}
Generates test IDs like TEST4827, TEST8391 (see RANDOM_INTEGER for details).
As part of implementing Lifecycle Management (LCM) processes with Veza, you should create sets of common transformers to define how values such as username, login, or ID are sourced for each LCM Policy. These transformers can then be reused across all identity sync and deprovision policy workflows.
For example, 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:
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
{first_name | SUB_STRING,0,1 | LOWER}.{last_name | LOWER}
SUB_STRING,0,1
LOWER}.{last_name
{first_name}{last_name}@company.com
Yes
Email address
OktaAccountTransformer OktaUser
login
{first_name | SUB_STRING,0,1 | LOWER}.{last_name | LOWER}
SUB_STRING,0,1
LOWER}{last_name
{first_name}{last_name}@company.com
Yes
Email address
username_prefix
{first_name | SUB_STRING,0,1 | LOWER}.{last_name | LOWER}
SUB_STRING,0,1
LOWER}{last_name
AzureADTransformer AzureADUser
principal_name
{first_name}{last_name}
No
Primary identifier
mail_nickname
{first_name | SUB_STRING,0,1 | LOWER}{last_name | LOWER}
SUB_STRING,0,1
LOWER}{last_name
display_name
{first_name} {last_name}
Yes
Display name
GoogleAccountTransformer GoogleWorkspaceUser
{first_name}{last_name}@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
The $target attribute transformer function is used when a value consists of one or more attributes that require an operation(s), making it too complex to transform, but it needs to be reused.
Important: The $target function can only be used within the same Action.
For example, an email address consists of [email protected]. However, you are required to use the format [email protected]. By using the $target function, you reuse only one attribute, username, while not changing the other two attributes (firstname_lastname).
Example:
Destination Attribute
username
Formatter
`{firstname}{lastname}`
Formatter
`{$target.username}@sample.com`
The Custom Attribute Transformer function allows you to define a custom transformer that acts as an alias for applying one or more transformer functions.
For example, you can define a custom function named $CLEAN, which is used as {first_name | $CLEAN}. This function can consist of a series of transformer functions such as | ASCII | LOWER | REMOVE_CHAR |.
To define a custom attribute transformer, use the following guidelines:
Policy Version Definitions
Custom functions must be defined as part of the policy version.
These definitions are structured similarly to hard-coded definitions and are returned in the same format, allowing the Veza UI to handle them without modification.
The API for updating and retrieving a policy version must also support these custom function definitions.
Custom Attribute Transformer Limitations
The following custom definitions are not supported:
Transformer functions with included transformer parameters
Nested transformer functions
Transformer functions with parameters
Frequently asked questions about Veza's Lifecycle Management for automated identity and access governance
This document addresses common questions about Lifecycle Management (LCM) for automated identity and birthright access governance across systems and applications.
The questions in this document are designed to introduce key concepts and address common questions that often arise during deployments. Please contact your support team with additional questions and feedback. Note that specific functionality may depend on the features and integrations enabled in your environment.
Your Lifecycle Management configuration can be straightforward or complex, depending on your organization's needs. To learn more about general implementation patterns, see Lifecycle Management with Workday, Okta, and Active Directory and Implementation and Core Concepts.
See also:
Customizing email notifications and Webhook configuration for Lifecycle Management events and Access Requests.
Administrators can customize email notifications sent during Lifecycle Management and Access Request workflows. These emails can include instructions, unique branding, and placeholders for metadata specific to the event (such as entity names, action types, or request details). Each notification type (usage) can have its own customized template.
Notification templates support HTML and CSS. They can include links to external images or you can upload small files to Veza. This document includes steps to configure templates in Veza using the notifications API, and a reference for event types, default templates, and supported placeholders.
In addition to event-specific templates, you can create custom email templates that are not tied to specific lifecycle events. These reusable templates allow you to define notification content once and use it across Send Notification actions and action notification settings. Custom email templates are:
Reusable: Single template for multiple workflows and actions
Event-independent: Not associated with a specific lifecycle event type
Flexible: Can be used in both Send Notification actions and action notification settings (on_success
/on_failure
)
Standard placeholder support: Supports all the same placeholders as event-based templates
To create a custom email template:
Navigate to Lifecycle Management > Settings > Notifications
Click Create Template
Select For Custom Email (as opposed to "For Event")
Define your template name, subject, and body using HTML and placeholders
Save the template
To use a custom template, select it when configuring the Send Notification action, or in Action Notification Settings:
Send Notification action: Choose from the "Select Email Template" dropdown when configuring the action
Action Notification Settings: Select the template for on_success
or on_failure
email notifications on any action
When you select "Default template" in these dropdowns, the system uses the event-based template appropriate for the event. When you select a custom template, that template is used regardless of the specific event being processed.
The system provides built-in templates for all Lifecycle Management and Access Request events. These templates use placeholders that are automatically replaced with actual values when notifications are sent.
Generic Failure Template
When specific event templates aren't available or when events fail, the system uses a generic failure template:
Subject: Lifecycle job {{EVENT_TYPE}} has failed
Body:
<html><body>
<br>
<br> Here is the notification that lifecycle job has failed. <br>
Error message: {{EVENT_ERROR_MESSAGE}}<br>
<br>
For reference:
<br> job_id: {{JOB_ID}}<br>
<br> identity_id: {{EVENT_IDENTITY_ID}}
<br> identity_name: {{EVENT_IDENTITY_NAME}}
<br> entity_type: {{ENTITY_TYPE}}
<br> entity_name: {{ENTITY_NAME}}
</body></html>
See Default Template Content for all default messages.
Lifecycle Management Events
Each template you create is associated with a specific notification event (referred to as usage
in the API). The following event types are available for Lifecycle Management workflows, organized by functional area:
Veza provides built-in email templates for all event types, organized by functional area below. These templates include standard placeholders and can be customized or replaced with your own templates.
From the Veza UI, you can add images directly through the "Add images" option. These will be automatically encoded and included in your template.
To use an attachment you have uploaded in a template, specify it by attachment.name
, for example:
<img src="cid:<name_of_attachment>"
To embed high-resolution images in your templates, you should serve the content from a public URL, and use HTML to link and style it.
Use placeholders to include dynamic information in templates, such as entity names, action types, timestamps, and other event metadata. Placeholders are automatically replaced with actual values when notifications are sent.
Webhook notifications are triggered upon execution of actions during the LCM Policy workflow process. Webhooks inform stakeholders or integrate with external systems of events that are processed within the workflow. Webhook notifications can be optionally configured as their own discrete action in a workflow or as an option when another action is executed.
For example, a webhook is sent to the company's learning management system to initiate online onboarding training once each new hire's Active Directory account is provisioned, following a successful Sync Identity operation.
To create and manage a webhook, perform the following:
Go to Policies and select a policy.
Click Edit Policy.
Click Policy Settings.
Scroll down to Notifications and click Add Notification.
Choose the Webhook notification type.
Choose an event to trigger notifications:
Create Identity
Sync Identity
Add Relationship
Remove Relationship
Create Email
Change Password
Delete Identity
Disable Identity
Manage Relationships
Write Back Email
Access Request Complete
Custom Action
Action Failed
Workflow Task Failed
Extraction Event Failed
Create Entitlement
Create Guest Account
Rename Entitlement
Create Access Review
Reset Password
Create Access Review Queued
Safety Limit Reached
Sync Entitlement
Choose the status to trigger notifications (when an event is Successful, or On Failure).
Select an Existing Veza Action.
A Veza Action is an integration with functionality for sending data to external systems, enabling downstream processes around Veza alerts, and access to reviewer actions. Use a Veza Action to configure generic webhooks or enable email notifications.
See Veza Actions Webhooks on how to create and deploy a webhook.
To customize the Webhook setting, perform the following:
In the Webhook URL field, enter the endpoint configured to receive the webhook payload.
In the Webhook Auth Header field, enter the Auth Header if the webhook listener requires authentication.
When configured, webhook requests include an Authorization header containing the credentials specified in the Webhook Auth Header field. This allows the receiving endpoint to authenticate the request using Bearer tokens, API keys, or other authentication schemes.
Click Save.