All pages
Powered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

CSV Upload API

Automating updating CSV integration data

Overview

In addition to using a simple web interface to update CSV data manually, you can automate a process to push new data using the Veza REST API and refresh the Veza graph. This document includes example utilities using Python and CLI tools.

Using the Upload CSV REST API

After creating a CSV upload integration, you can use the REST API operation to upload new CSV data.

Whenever a CSV is submitted, it is processed based on the current configuration of the CSV Upload Integration provider, including any column mapping settings.Authentication: To make API calls, you must include an authorization token in the header of each request. This can be:

  • A Personal API Key for a Veza administrator

  • A Team API Key, for a team assigned to manage CSV Upload integrations

See for more details on creating API keys.

Note: The CSV data must be complete for each upload. Veza will remove entities from the Graph for any entities that were present in the previous upload, but not in the current upload.

Retrieving Integration IDs

Using the REST API requires the Integration (Provider) and Data Source IDs. You can retrieve these in Veza on the Integration Details > Data Source tab:

  1. On the Veza Integrations page, click the CSV integration to view details

  2. On the Data Source tab, click the data source name to view details

  3. Copy the values from the Properties table:

    1. The unique data source "Id"

Uploading the Data

Uploading the CSV data is made with a post call to the /api/v1/providers/custom/{provider_id}/datasources/{data_source_id}:push_csv endpoint.

Note: The CSV contents must be base64-encoded into the JSON body of the request. Raw CSV values are rejected. You can automatically convert the data as part of your implementation, as shown below.

Example using Curl

Example using Python

The "Provider Id"

Both values are in UUID format, e.g., 19b0c736-6686-4708-87e2-92171db6afb3.

Push Custom Provider Datasource CSV
Authentication
{
    "csv_data": "abc123="
}
CSV_PAYLOAD=$(cat my_app_data.csv | base64)
curl --location https://example.vezacloud.com/api/v1/providers/custom/40bdd318-d320-4574-be90-ca556d59889a/datasources/9bc29dc6-8cd0-4926-992e-7d720305ae2f:push_csv \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $VEZA_API_KEY" \
--data "{\"csv_data\": \"${CSV_PAYLOAD}\"}"
#!/usr/bin/env python3

import base64
import json
import os
import sys

import oaaclient.utils as oaautils
from oaaclient.client import OAAClient, OAAClientError

veza_url = "https://example.vezacloud.com"
veza_api_key = os.getenv("VEZA_API_KEY")

provider_id = "UUID of Provider"
data_source_id = "UUID of Data Source"

source_csv = "path/to/my_file.csv"

print("Connecting to Veza")
try:
    veza_con = OAAClient(veza_url, veza_api_key)
except OAAClientError as e:
    print("Error connecting to Veza tenant")
    print(e)
    sys.exit(1)

print("Loading CSV file")
with open(source_csv, "rb") as f:
    encoded_csv = base64.b64encode(f.read())

print("Pushing data to Veza")
try:
    push_request = {"id": provider_id, "data_source_id": data_source_id, "csv_data": encoded_csv.decode()}
    veza_con.api_post(f"/api/v1/providers/custom/{provider_id}/datasources/{data_source_id}:push_csv", push_request)
    print("Push succeeded")
except OAAClientError as e:
    log.error(f"{e.error}: {e.message} ({e.status_code})")
    if hasattr(e, "details"):
        for d in e.details:
            log.error(d)
    sys.exit(3)
Retrieving IDs from Datasources details view

CSV Upload Troubleshooting

Solutions for common CSV import issues in Veza

This document helps you identify and resolve common issues when importing CSV files into Veza.

Understanding CSV Import Behavior

Before troubleshooting, it's important to understand how the CSV import process works:

File Requirements

  • Maximum file size: 100MB per CSV file

  • Character encoding: UTF-8 recommended

  • First row: Must contain column headers

  • Column delimiters: Commas

Entity Requirements

  • Users: Each user must have either an id or name (or both)

  • Groups: Each group must have either an id or name (or both)

  • Roles: Each role must have either an id

Processing Rules

  • First-row behavior: For entities appearing in multiple rows, only the first row sets the entity properties

  • Subsequent rows: Additional rows with the same identifier only process group and role assignments

  • Role permissions: Permissions for the same role are added across all rows (additive)

  • All properties: All properties (including custom properties) are set only from the first row where that entity appears

Common Issues and Solutions

Configuration and Integration Issues

Issue
Solution

Mapping Issues

Issue
Solution

Data Format Issues

Issue
Solution

List Column Issues

Issue
Solution

Preparation Best Practices

  1. Start with a test file

    • Begin with a small subset of data to verify your mapping configuration

    • Test with representative examples of your data structure

  2. Validate CSV format

Current Limitations

Be aware of these current limitations in the CSV import functionality:

  1. No application resources support

    • Resources within applications are not currently supported

  2. No direct user-to-permission mapping

    • Permissions must be assigned to roles, which are then assigned to users

Getting Support

If you continue to experience issues after reviewing this guide:

  1. Review the for details on supported formats and mapping options

  2. Check the for guidance on structuring your CSV files

  3. Contact Veza Support with:

    • A sample of your CSV file (with sensitive data removed)

Text qualifiers: Double quotes for fields containing commas

or
name
(or both)
  • If only id or name is provided for an entity, that value is used for both fields and must be unique

  • Minimum mapping: You must map at least one column for each entity type you want to import

  • Ensure proper comma delimitation

  • Quote fields containing commas

  • Use consistent data formats across rows

  • Pre-plan your mapping

    • Identify which columns map to which entity types and attributes

    • Determine how to handle multi-value fields (as lists or multiple rows)

    • Identify custom properties and their data types

  • Consider data quality

    • Standardize identifiers (case consistency, no trailing spaces)

    • Use consistent naming for groups and roles

    • Validate data formats before import

  • Direct user-to-permission mappings (without a role) are not supported

  • No column transformations

    • The system cannot combine or transform column values during import

    • Column transformations or combinations are not supported

  • Full replacement updates

    • Each update completely replaces the previous data

    • Incremental updates are not supported

  • Custom property types are fixed after creation

    • Once a custom property type is set and data processed, it cannot be changed

    • Changing custom property types requires deleting the integration and recreating it

  • Default permissions

    • If no column is mapped to role permissions, Veza assigns a default "Uncategorized" permission.

  • HRIS Type field propagation

    • Updates to the HRIS Type field require a complete CSV file re-upload to propagate changes to downstream systems like Lifecycle Management (LCM)

    • Changing the HRIS Type field alone will not update entity names throughout the system

  • Your mapping configuration

  • A description of the unexpected behavior

  • Entity names inconsistent between CSV provider and Lifecycle Management (LCM) after update

    Critical: When updating the HRIS Type field for an HR System template integration, you must re-upload the complete CSV file immediately after changing the type. Updating the HRIS Type field without re-uploading data causes system-wide inconsistencies. See the HRIS Type Update Warning for detailed steps.

    CSV file is rejected with validation error

    Verify you've mapped the minimum required fields (id or name for all entity types)

    Only some properties appear

    Check that columns are mapped to the correct entity types and attributes

    Users appear without group/role assignments

    Ensure you've correctly mapped group and role columns

    Entities appear multiple times

    Ensure that the value you're using for id is unique (Veza automatically cleans whitespace and is case-insensitive)

    Import fails with duplicate column error

    Column names must be unique (case-insensitive). While mapping allows columns with different cases like "Email" and "email", the import will fail. Ensure all column headers have unique names regardless of case

    Boolean values not interpreted correctly

    Use standard values: true, t, yes, y, 1, active, or enabled for TRUE

    Timestamp data not processed

    Ensure timestamps are in one of the supported formats listed in the CSV Import documentation

    Multiple groups/roles not assigned properly

    For list columns, ensure values are comma-separated and enclosed in quotes if they contain commas

    Special characters causing parsing issues

    Save your CSV with UTF-8 encoding and ensure text with commas is properly quoted

    Groups/roles in comma-separated lists not assigned

    Verify you've selected the list option when mapping the column

    Only first value in list is processed

    Check for proper quoting around values that contain commas

    Only some list values appear

    Check for inconsistent naming between list items and other references to the same entity

    CSV Import documentation
    CSV Upload Examples

    CSV Upload

    Import identity and authorization data from CSV files into Veza

    Overview

    Use CSV Upload to integrate identity and authorization metadata from sources that don't have built-in Veza connectors, but can export or provide data in tabular format.

    You can create a CSV integration in Veza to:

    • Import user and authorization data from legacy or custom applications

    • Integrate with SaaS applications that support CSV exports

    • Model employee access to homegrown or specialized systems

    • Upload employee metadata from your HRIS as a source of identity for Lifecycle Management workflows

    The integration uses the Open Authorization API (OAA) to map CSV data to supported OAA templates:

    • Application - Models Users, Groups, Roles, and Resources across applications for a wide variety of authorization use cases. An introduction to the Application Template .

    • Human Resource Information Systems (HRIS) - Models employee information from HR sources for use with Lifecycle Management (LCM).

    Application Template - Use Custom Applications to model business applications and access permissions:

    • Models Users, Groups, Roles, and Resources across applications

    • For example, you can upload user permissions from a homegrown CRM system, data store, or any other application users can access.

    HRIS Template - Use for employee data from HR systems

    • Models employee information and organizational structure

    • For example, you can upload employee data for manager-based Access Reviews and automated provisioning with Lifecycle Management.

    Which template should I choose? If your CSV contains information about who can access what resources, choose Application. If it contains employee information like departments and managers, choose HRIS.

    Warning: Mapping Employment Status Properties with HRIS CSV

    When manually mapping your HRIS CSV, use only one of the following two fields: is_active or employment_status to avoid misleading data on employment type.

    When to Use CSV Integration

    CSV integration is ideal for systems that export tabular data but lack dedicated Veza connectors:

    • Legacy applications with user permission exports

    • Custom business applications built in-house

    • HR systems for employee lifecycle management

    • Specialized industry tools without native APIs

    CSV import enables modeling identity and permissions metadata for any application not natively supported by Veza, with flexible column mapping, custom properties, and support for multiple data formats.

    Adding a CSV Integration

    Prerequisites

    To create an integration from CSV, you will need:

    • A CSV file containing relevant data with column headers

    • Sufficient permissions in Veza (Admin or OAA CSV Manager role)

    • Understanding of the data model for the source application

    • A plan for mapping between CSV columns and Veza attributes

    For more information about user roles and permissions, see .

    Format Requirements

    CSV (Comma-Separated Values) is a widely used file format that stores tabular data in plain text. Each row represents a record or a relationship between entities (e.g., User to Role), and columns represent attributes.

    When importing from CSV:

    1. The first row must contain column headers

    2. Each column can be mapped to a specific Veza attribute or custom attribute

    3. Columns can be ignored after uploading the file

    4. At minimum, you must map columns for unique identifiers (such as user ID or Name) for each entity type you plan to import (e.g., Users, Groups, Roles, or Employees).

    Column Header Case Sensitivity: Column headers must be unique regardless of case. While the mapping interface is case-sensitive and may allow you to map columns with similar names like "Email" and "email", the import process is case-insensitive and will fail if duplicate column names exist with different casing. Ensure all column headers have distinct names.

    Create a CSV Integration

    To create a new CSV integration:

    1. Go to Integrations > Add Integration

    2. Choose Upload CSV from the options

    3. Upload a logo for the provider (optional) - This will appear throughout the Veza UI, including in Graph search, to identify the integration and entity types.

    4. Enter an integration name

    CSV Column Mapping

    The CSV integration allows you to map columns in your file to specific Veza attributes. After uploading the CSV, Veza automatically detects all columns and presents them for mapping.

    For each column, you can:

    1. Select to include or exclude the column

    2. Select the target entity type for mapping (available entities depend on the selected template)

    3. Select the specific entity attribute to map to (only attributes applicable to the selected entity type will be shown)

    4. For custom properties, specify a name and data type

    Example: Mapping CSV columns to Application template entities and attributes

    For more examples and detailed mapping patterns, see .

    Supported Entity Types and Attributes

    For all entities, an ID or Name is required. If ID is not provided, Name is automatically used as the unique identifier for the entity. Both are also supported.

    The available entity types and attributes depend on the template you select. Each template supports different entity types.

    ⚠️ Warning: Mapping Properties with HRIS CSV

    When manually mapping your HRIS CSV, use only one of the following two fields: is_active or employment_status to avoid misleading data on employment type.

    Application Template Entities

    User Attributes

    Attribute
    Description

    Group Attributes

    Attribute
    Description

    Role Attributes

    Attribute
    Description

    HR System Template Entities

    Employee Attributes

    Attribute
    Description

    Data Type Handling

    Boolean Values

    The following values are treated as TRUE (case-insensitive):

    • true, t

    • yes, y

    • 1

    Any other value is treated as FALSE.

    Timestamp Formats

    Veza supports multiple timestamp formats:

    • 2023-04-12T15:34:56.123456789Z (RFC3339 with nanoseconds)

    • 2006-01-02T15:04:05Z07:00 (RFC3339)

    • 20060102150405 (Active Directory format)

    Timestamps are considered unset when the value is never, null, none, false, 0 or empty. Invalid timestamps will result in a processing error.

    String Lists

    For attributes that support lists (like Role Name List, and Group Name List), values should be comma-separated within the cell and the list enclosude by quotes ".

    Updating a CSV Integration

    Incremental updates are not supported; you must submit the complete data set for each update.

    ⚠️ Warning: Configuration Updates

    When updating the configuration fields or mappings for an existing CSV integration, changes are not reflected until after the next CSV Upload is processed. For example when updating the HRIS Type field, changing this field alone and saving the integration will not immediately change the type Veza system. Then new type will not be availble in graph or in other features such as Lifecycle Management (LCM) until after the next upload is processed.

    Required Process for changing configurations:

    Push new data for an existing integration

    1. Find the CSV integration on the Veza Integrations page

    2. Click on the integration name to view details

    3. Under Data Sources, click Upload CSV

    4. Select your updated CSV file and click Upload

    Update mappings for an integration

    1. Find the CSV integration on the Veza Integrations page

    2. Click on the integration name to view details

    3. Click Edit

    4. In the integration configuration, click Edit above the table of current mappings

    CSV Manager Role

    Veza provides a limited privilege "CSV Manager" role for users that need permission to manage a CSV integration, but should not have access to other functionality in Veza.

    Early Access Feature: The CSV Manager role is currently in early access and must be enabled by Veza support before it can be assigned to users. Contact your Customer Success Manager or submit a support request to enable this role.

    Users with this role can:

    • Create new CSV integrations

    • Upload new CSV data

    • Edit existing CSV integrations, including delete

    This role can be combined with to further limit a user's scope. When a user with the CSV manager role is added to a non-root team, they can only manage CSV integrations assigned to their team.

    Processing Rules

    • Multiple Rows per Entity: If the same entity (user, group, or role) appears in multiple rows, Veza processes them as follows:

      • Properties are set based on the first row where the entity ID (or Name if it is being used as the unique ID) appears

      • For subsequent rows with the same identifier, only relationship assignments are processed (for example user to group, or user to role)

      • Role permissions are the only properties that are additive across all rows

    Related Documentation

    Use a title that uniquely identifies this integration source

  • Avoid generic terms like "application" or "CSV"

  • If you have multiple environments, consider including that in the name

  • Select a data source template (currently supports Application and HR Systems)

  • Enter template-specific information (fields will vary based on the selected template):

    For Application Template:

    • Name: A unique identifying name for this specific application instance (e.g., "Marketing CRM - Prod", "HR Portal - Dev").

    • Type: The general category or system type (e.g., "CRM", "DevOps Tool"). In Veza, the type appears as a prefix on entity names, e.g., CRM User, DevOps Tool Role.

    For HR System Template:

    • Name: A unique identifying name for the HR system (e.g., "Workday - Production", "HR Portal - Dev")

    • Type: The type of HR system (e.g., "HRIS", "ATS", "Benefits")

    • URL: The URL of the HR system

    Note: Naming is critical for easy search in Veza. For Applications, the Type enables searching for all entities of that category, while the Name differentiates between multiple instances of the same system type.

  • Upload the CSV file - Veza will read the column headers and show them for mapping

  • Map your columns to Veza attributes (see Column Mapping section)

  • Click Create Integration to trigger extraction and parsing

  • Password Last Changed At

    Timestamp of the last password change

    Email

    User's email address

    Custom Properties

    Map any column to a custom user property (type varies)

    Owner ID

    Entity Owner ID to assign

    Owner Type

    User node type for Entity Owner(s)

    Preferred Name

    Employee's preferred name

    Display Full Name

    Complete display name

    Canonical Name

    Standardized name format

    Username

    Employee's username

    Email

    Primary email address

    IDP ID

    Identity Provider ID

    Personal Email

    Personal email address

    Home Location

    Employee's home location

    Work Location

    Employee's work location

    Cost Center

    Cost center assignment

    Department

    Employee's department

    Managers

    Employee's manager(s) (supports list format)

    Groups

    Group memberships (supports list format)

    Employment Status

    Current employment status

    Is Active

    Boolean indicating active employment

    Start Date

    Employment start date

    Termination Date

    Employment end date

    Job Title

    Employee's job title

    Employment Types

    Types of employment (supports list format)

    Primary Time Zone

    Employee's primary time zone

    Custom Properties

    Map any column to a custom employee property (type varies)

    active

  • enabled

  • 2006-01-30 15:04:05Z07:00
  • 2006-01-30 15:04:05

  • 2006-01-30

  • 2006-01-30T

  • 2006-01-30T15:04:05

  • 2006-01-30T15:04:05Z

  • 1/2/2006 (MM/DD/YYYY format)

  • Update the configuration fields in the integration settings

  • Re-upload the complete CSV file to apply the changes

  • Allow the Veza platform to complete the extraction and parse process

  • Verify that entity names are consistent across all Veza components

  • Modify your column mappings as needed

  • Click Save Configuration to apply the changes

  • Ignored Columns: Columns that are not mapped (unchecked) are ignored during processing

  • Additional Columns: CSV files can contain more columns than are mapped - extra columns are ignored

  • Entity Identifiers: Every entity type (user, group, role) requires an ID or Name (or both). If only one is provided, the same value is used for both fields and must be unique.

  • Identity Mapping: When using the Application template, you can choose the column(s) used to connect external identities.

  • Automating CSV Upload

    ID

    Unique identifier for the user

    Name

    Display name for the user

    Is Active

    Boolean indicating if the user is active

    Created At

    Timestamp when the user was created

    Last Login At

    Timestamp of the user's last login

    Deactivated At

    Timestamp when the user was deactivated

    ID

    Unique identifier for the group

    Name

    Name of the group (supports list format)

    Created At

    Timestamp when the group was created

    Custom Properties

    Map any column to a custom group property (type varies)

    Owner ID

    Entity Owner ID to assign

    Owner Type

    User node type for Entity Owner(s)

    ID

    Unique identifier for the role

    Name

    Name of the role (supports list format)

    Permissions

    Permissions assigned to the role (supports list format)

    Custom Properties

    Map any column to a custom role property (type varies)

    Owner ID

    Entity Owner ID to assign

    Owner Type

    User node type for Entity Owner(s)

    ID

    Unique identifier for the employee

    Name

    Employee name (typically full name)

    Employee Number

    Alternative employee identifier

    Company

    Employee's company

    First Name

    Employee's first name

    Last Name

    Employee's last name

    can be found here
    Learn more about the Application Template
    Roles
    CSV Import Examples
    Teams
    Open Authorization API (OAA) Templates
    Managing Teams and Permissions
    Creating Custom Reports
    Understanding the Veza Access Graph
    CSV Mapping Interface with column selection and attribute mapping options

    CSV Upload Examples

    Common patterns for importing identity and permissions metadata from CSV files

    This document provides practical examples for mapping data from CSV files into Veza using the CSV Upload integration.

    You can use the CSV integration to flexibly model user, group, and role relationships based on data exported from the source application. This document includes examples from basic user data import to modeling more complex organizational structures, which you can adapt based on your needs.

    • CSV Upload Examples

      • Mapping Concepts

    Mapping Concepts

    When importing CSV data into Veza, you are typically establishing one or more of these key components:

    1. Entities: Users, groups, and roles that exist in your application

    2. Attributes: Properties that describe each entity (e.g., name, email, status)

    3. Relationships: Connections between entities (user belongs to group, user has role)

    The examples below demonstrate different approaches to mapping these components from CSV data into Veza's Access Graph.

    Basic User Mapping Example

    For a simple file containing user records, one user per row with a list or groups and roles. You can map columns directly:

    CSV Column
    Entity Type
    Veza Attribute
    Required?

    Example CSV:

    Your CSV files may have column names that differ from Veza's standard attribute names.

    CSV Column
    Entity Type
    Suggested Mapping

    Group and Role Assignment Methods

    The CSV integration supports two methods for assigning users to groups and roles:

    Method 1: Using List Columns

    Use a single column containing comma-separated values to assign a user to multiple groups or roles at once.

    Column mapping:

    CSV Column
    Entity Type
    Veza Attribute

    Example CSV:

    Key points about list columns:

    • Values must be comma-separated

    • Enclose lists in quotes if they contain commas

    • Whitespace around values is automatically trimmed

    • Empty values are ignored

    Method 2: Using Multiple Rows Per User

    You can incrementally assign roles or groups using multiple rows with the same user id. This approach is useful when:

    • You have many groups or roles per user

    • Your source system exports data in this format

    • You need to include additional details for roles or groups such as custom properties

    Example CSV:

    Key points about multiple row assignments:

    • The first occurrence of an entity id sets all properties for that entity. If the same user or role is listed more than once, the user or role attributes are not updated for rows after the first.

    • Subsequent rows only process new group and role assignments

    Advanced Role Permissions

    The CSV can include a column with a list of permissions for each role. This enables searching and filtering by permission in Veza:

    You can assign permissions to roles and then users to roles:

    Note: If permissions column is not defined any Roles are automatically assigned the Member permission

    Real-World Example: Complex Organization Structure

    This example shows how to represent a complex organizational structure with departments, teams, roles with permissions, and user assignments:

    Column mapping for this example:

    CSV Column
    Entity Type
    Veza Attribute

    This example CSV will create:

    • 7 user entities with their properties

    • Department groups (Engineering, Product, Marketing, Finance, HR, Sales)

    • Team groups (Backend, Architecture, Frontend, Product Management, UX Research, Content, Social, Accounting, Recruiting, Enterprise Sales)

    • Multiple role assignments per user

    Supported Timestamp Formats

    The CSV integration supports various timestamp formats:

    Timestamps are considered unset when the value is never, null, none, false, or 0. Invalid timestamps will result in a processing error.

    Boolean Value Handling

    When mapping to boolean attributes like is_active:

    • TRUE values: true, t, yes, y, 1, active, enabled

    • FALSE values: Any other value including false, f

    Example CSV:

    Custom Properties Example

    Any column can be mapped to a custom property for any entity type. When mapping to a custom property:

    1. Select Custom Property as the attribute

    2. Enter a name for the custom property

    3. Select the data type (String, Number, Boolean, Timestamp, or String List

    Example CSV:

    Entity Owner Example

    Designated Entity Owners can up supplied for supported Application entity types as part of the CSV. This allows for automatically assigning the owner from the value in the CSV.

    This example indicates the owner of the Role and could be used auto-assign Access Review rows to the owner for each role.

    Example CSV:
    CSV Column
    Entity Type
    Suggested Mapping

    Note that when a is configured, Owner Type is optional. Otherwise, the owner type is used to specify the type of entity in Veza Graph that will be assigned as an owner. This will typically be a User entity in your organization's Identity Provider (such as an Okta, Azure AD User, or Active Directory User), representing a top-level human identity.

    For more information about Entity Owners, see:

    Permissions: Actions that roles allow users to perform

    account_status

    local_user

    is_active

    No

    join_date

    local_user

    created_at

    No

    last_access

    local_user

    last_login_at

    No

    password_updated

    local_user

    password_last_changed_at

    No

    termination_date

    local_user

    deactivated_at

    No

    groups

    local_group

    name list

    No

    roles

    local_role

    name list

    No

    Veza automatically creates any groups or roles that don't already exist
  • Additional properties on Groups and Roles is not supported

  • department

    local_group

    name

    team

    local_group

    name

    job_title

    local_user

    custom property (String)

    role

    local_role

    name

    role_permissions

    local_role

    permissions list

    Role permission assignments for different functional areas

    ,
    no
    ,
    n
    ,
    0
    ,
    inactive
    ,
    disabled
    )

    role_owner_type

    local_role

    Owner Type

    employee_id

    local_user

    id

    Yes

    display_name

    local_user

    name

    No

    email_address

    local_user

    email

    departments, department_names, teams

    local_group

    name list

    job_titles, positions, roles_assigned

    local_role

    name list

    permissions, access_rights

    local_role

    permissions list

    user_id

    local_user

    id

    groups

    local_group

    name list

    roles

    local_role

    name list

    user_id

    local_user

    id

    display_name

    local_user

    name

    email

    local_user

    email

    active

    local_user

    user_id

    local_user

    Id

    user_name

    local_user

    Name

    role_name

    local_role

    Name

    role_owner

    local_role

    Basic User Mapping Example
    Group and Role Assignment Methods
    Method 1: Using List Columns
    Method 2: Using Multiple Rows Per User
    Advanced Role Permissions
    Real-World Example: Complex Organization Structure
    Supported Timestamp Formats
    Boolean Value Handling
    Custom Properties Example
    Entity Owner Example
    Global Identity Provider
    Entity Owners for Access Reviews
    OAA Core Concepts: Entity Owners

    No

    is_active

    Owner Id

    employee_id,display_name,email_address,account_status,join_date,last_access,password_updated,termination_date,groups,roles
    EMP001,Alex Johnson,[email protected],active,2023-04-15,2025-02-15T09:30:45Z,2024-11-10T08:15:30Z,,"Engineering, DevOps","Developer, System Administrator"
    EMP002,Taylor Smith,[email protected],true,2022-09-20,2025-03-01T11:45:20Z,2024-10-05T14:30:15Z,,"Product, UX Research","Product Manager, UX Designer"
    EMP003,Jordan Lee,[email protected],inactive,2021-11-05,2024-10-10T16:20:30Z,2024-06-15T09:45:10Z,2025-01-15,"Marketing, Content","Content Creator, Social Media Manager"
    EMP004,Casey Morgan,[email protected],1,2023-08-22,2025-02-28T15:10:25Z,2024-12-20T10:30:45Z,,"Finance, Accounting","Financial Analyst, Auditor"
    EMP005,Riley Brown,[email protected],0,2022-03-10,2024-11-15T08:45:30Z,2024-08-05T11:20:15Z,2024-12-31,"HR, Recruiting","HR Specialist, Talent Acquisition"
    user_id,groups,roles
    user1,"Engineering, QA Team, Product Team","Software Engineer, Technical Lead"
    user2,Marketing,"Content Writer, Editor"
    user3,Finance,"Accountant, Auditor"
    user4,HR,HR Specialist
    user5,"Support, Training",Customer Support Representative
    user_id,name,email,active,group,role,role_description
    user1,Alice Smith,[email protected],true,Engineering,Software Engineer,Core development role
    user1,Alice Smith,[email protected],true,QA Team,Technical Lead,Testing oversight role
    user1,Alice Smith,[email protected],true,Product Team,Technical Lead,Product development leadership
    user2,Bob Johnson,[email protected],false,Marketing,Content Writer,Content creation role
    user2,Bob Johnson,[email protected],false,Marketing,Editor,Content review role
    user_id,name,email,is_active,groups,role,permissions
    USR001,Alex Johnson,[email protected],true,"Dev Team",Developer,"view_code, edit_code"
    USR001,Alex Johnson,[email protected],true,"Backend Group",Code Reviewer,"approve_pull_requests"
    USR002,Taylor Smith,[email protected],yes,"Ops Team",System Administrator,"manage_infrastructure"
    USR002,Taylor Smith,[email protected],yes,"Cloud Admin",Release Manager,"deploy_production"
    USR003,Jordan Lee,[email protected],1,"Product Team",Product Owner,"create_requirements"
    USR003,Jordan Lee,[email protected],1,"Analytics Users",Data Analyst,"view_analytics"
    user_id,display_name,email,active,department,team,job_title,role,role_permissions
    emp101,John Smith,[email protected],true,Engineering,Backend,"Senior Developer","Developer Lead","read_all,write_backend,deploy_backend"
    emp101,John Smith,[email protected],true,Engineering,Architecture,"Senior Developer","Architecture Committee","approve_designs,modify_architecture"
    emp102,Jane Doe,[email protected],true,Engineering,Frontend,"UI Developer","Frontend Developer","read_all,write_frontend,deploy_frontend"
    emp103,Robert Johnson,[email protected],true,Product,"Product Management","Product Owner","Product Manager","read_all,create_requirements,approve_features"
    emp103,Robert Johnson,[email protected],true,Product,"UX Research","Product Owner","User Researcher","conduct_research,analyze_results"
    emp104,Maria Garcia,[email protected],true,Marketing,Content,"Marketing Specialist","Content Creator","read_marketing,write_content"
    emp104,Maria Garcia,[email protected],true,Marketing,Social,"Marketing Specialist","Social Media Manager","post_social,analyze_metrics"
    emp105,David Lee,[email protected],true,Finance,Accounting,"Finance Manager","Financial Controller","approve_expenses,manage_budgets,generate_reports"
    emp106,Sarah Wilson,[email protected],true,HR,Recruiting,"HR Specialist","Recruiter","post_jobs,review_applications,conduct_interviews"
    emp107,Michael Brown,[email protected],true,Sales,"Enterprise Sales","Sales Executive","Account Manager","manage_clients,create_proposals,close_deals"
    user_id,name,email,active,created_at,last_login_at,password_last_changed_at,deactivated_at
    TS001,Timestamp Example 1,[email protected],true,2023-04-12T15:34:56.123456789Z,2006-01-02T15:04:05Z07:00,20060102150405,
    TS002,Timestamp Example 2,[email protected],true,2006-01-30 15:04:05Z07:00,2006-01-30 15:04:05,2006-01-30,2006-01-30T
    TS003,Timestamp Example 3,[email protected],true,2006-01-30T15:04:05,2006-01-30T15:04:05Z,never,null
    TS004,Timestamp Example 4,[email protected],false,2024-03-15,none,false,0
    TS005,Timestamp Example 5,[email protected],true,1/2/2006,1/15/2023,11/22/2024,
    user_id,name,email,active
    B001,Boolean Example 1,[email protected],true
    B002,Boolean Example 2,[email protected],t
    B003,Boolean Example 3,[email protected],yes
    B004,Boolean Example 4,[email protected],y
    B005,Boolean Example 5,[email protected],1
    B006,Boolean Example 6,[email protected],active
    B007,Boolean Example 7,[email protected],enabled
    B008,Boolean Example 8,[email protected],false
    B009,Boolean Example 9,[email protected],f
    B010,Boolean Example 10,[email protected],no
    B011,Boolean Example 11,[email protected],n
    B012,Boolean Example 12,[email protected],0
    B013,Boolean Example 13,[email protected],inactive
    B014,Boolean Example 14,[email protected],disabled
    user_id,name,email,active,department,title,office_location,hire_date,employee_type,salary_band,performance_rating,certification,languages,project_ids,manager_id,emergency_contact
    CP001,Custom Property Example 1,[email protected],true,Engineering,Senior Developer,New York,2023-01-15,Full-time,B4,Exceeds Expectations,"AWS Certified, Azure Expert","Java, Python, Go","PROJ-001, PROJ-002",MGR-101,John Smith (555-123-4567)
    CP002,Custom Property Example 2,[email protected],true,Marketing,Marketing Manager,San Francisco,2022-05-10,Full-time,C2,Meets Expectations,Google Analytics,"English, Spanish",PROJ-003,MGR-102,Mary Johnson (555-987-6543)
    CP003,Custom Property Example 3,[email protected],false,Finance,Financial Analyst,Chicago,2023-08-22,Contract,A3,Needs Improvement,CPA,"English, French","PROJ-004, PROJ-005, PROJ-006",MGR-103,Robert Davis (555-456-7890)
    user_id,user_name,role_name,role_owner,role_owner_type
    10001,bob,admin,[email protected],,oktauser
    10002,sue,admin,[email protected],oktauser
    10003,marry,user,[email protected],oktauser
    10004,jane,user,[email protected],oktauser
    10005,sam,viewer,[email protected],oktauser
    10006,adam,viewer,[email protected],oktauser
    10007,brett,ops,[email protected],oktauser
    10008,robert,ops,[email protected],oktauser
    10009,chris,manager,,
    10010,nick,manager,,