UNPKG

@servicenow/sdk

Version:
669 lines (538 loc) 31.8 kB
--- tags: [AiAgenticWorkflow, ai agentic workflow, artificial intelligence, ai agent] --- # AiAgenticWorkflow (`sn_aia_usecase`) Configure an AI Agentic Workflow using the Fluent API. This API provides a structured interface for creating AI Agentic Workflows in ServiceNow's AI Agent Studio, automatically handling all underlying complexity and relationships between multiple tables. --- ## Overview The `AiAgenticWorkflow` API enables you to define intelligent workflows that can: - **Orchestrate Multiple Agents**: Coordinate multiple AI agents working together as a team - **Process Context**: Apply custom scripts to transform context before execution - **Control Access**: Define role-based security and data access controls - **Trigger Automatically**: Configure triggers for automatic workflow invocation - **Manage Versions**: Support multiple versions with different configurations - **Execute Dynamically**: Run with dynamic user identity based on role-based access The plugin automatically generates all required ServiceNow records (~7 tables) with proper relationships and defaults. ### Default Value Suppression The plugin follows a **"only specify what differs from defaults"** pattern. During transform (ServiceNow Fluent), fields that match their default values are automatically omitted from the generated code. This keeps Fluent files clean and minimal. For example: - `active: true` omitted (default for workflow) - `executionMode: 'copilot'` omitted (default) - `sysDomain: 'global'` omitted (default) - `enableDiscovery: false` omitted (default for trigger config) - `portal: ''` omitted (empty string default) Only specify fields when their values differ from the defaults listed in this document. --- ## Supported Record Types Based on the metadata files generated by this plugin: | Record Type | Table | Description | | ------------------------------------ | -------------------------------------- | ----------------------------------------------------- | | AI Agentic Workflow | `sn_aia_usecase` | Primary workflow definition | | AI Team | `sn_aia_team` | Team configuration for the workflow | | AI Team Member | `sn_aia_team_member` | Team member associations (agents in the team) | | AI Version | `sn_aia_version` | Version information for the workflow | | Use Case Config Override | `sn_aia_usecase_config_override` | Configuration overrides for the workflow | | Trigger Configuration | `sn_aia_trigger_configuration` | Automated trigger definitions | | Trigger Agent Usecase M2M | `sn_aia_trigger_agent_usecase_m2m` | Mapping between triggers, workflows, and use cases | | Agent Access Role Configuration | `sys_agent_access_role_configuration` | Role-based data access controls | --- ## API Parameters ### Main Configuration | Field Name | Type | Mandatory | Default | Description | | --------------------------- | ------------------------------ | --------- | ------- | ------------------------------------------------------------------------------ | | `$id` | `Now.ID[string]` | Yes | | Unique identifier for the workflow | | `name` | `string` | Yes | | Display name of the AI Agentic Workflow | | `description` | `string` | Yes | | Brief description of what the workflow does | | `securityAcl` | `SecurityAclUserAccessConfig` | **Yes** | | **MANDATORY** - Automatically generates `sys_security_acl` and `sys_security_acl_role` records. Uses discriminated union on `type`: `'Any authenticated user'`, `'Specific role'`, or `'Public'` | | `team` | `TeamType` | No | | Team configuration with nested `members` array | | `versions` | `AIAVersion[]` | No | | Array of version configurations | | `runAs` | `string` | No | | Field name for run-as user (dynamic resolution). Omit for dynamic user identity | | `dataAccess` | `DataAccessConfigWorkflowType` | No | | Data access controls (required when `runAs` is not set) | | `triggerConfig` | `TriggerConfigType[]` | No | | Array of trigger configurations for automatic invocation | | `recordType` | `'custom' \| 'template' \| 'aia_internal'` | No | `'template'` | Record type | | `executionMode` | `'copilot' \| 'autopilot'` | No | `'copilot'` | Execution mode for the workflow | | `active` | `boolean` | No | `true` | Whether the workflow is active | | `sysDomain` | `string` | No | `'global'` | Domain ID | | `contextProcessingScript` | `function \| string` | No | | Script to process context - supports inline or `Now.include()` | | `memoryScope` | `string` | No | `'global'` | Memory scope for team members | > **Note:** The following fields are auto-generated by the plugin and should not be specified by users: > - `internalName`: Auto-generated from `domain.scope.name` > - Trigger `useCase`: Auto-populated with parent workflow ID --- ## Team Configuration (`team`) Team configuration for organizing multiple agents. The team has a nested `members` array. **Key Fields:** - **`$id`** Unique identifier (MANDATORY for teams) - **`name`** Team name - **`sysDomain`** Domain ID (default: 'global', omit if global) - **`members`** Array of agent sys_ids or Record references > **Note:** Team `description` is auto-populated from the workflow's `description` field. Do not specify it. --- ## Team Members (`team.members`) Simple array of agent sys_ids or Record references nested within the team configuration. **Example:** ```typescript import { AiAgenticWorkflow, Record } from '@servicenow/sdk/core' const summaryAgent = Record({ table: 'sn_aia_agent', $id: Now.ID['summary_agent'], data: { name: 'Record Summary Agent' }, }) const searchAgent = Record({ table: 'sn_aia_agent', $id: Now.ID['search_agent'], data: { name: 'Search Q&A Agent' }, }) AiAgenticWorkflow({ name: 'Dynamic User Workflow', description: 'Workflow with dynamic user identity', securityAcl: { $id: Now.ID['dynamic_user_workflow_acl'], type: 'Any authenticated user', }, dataAccess: { roleMap: [ itilRole, // Role reference userAdminRole, // Role reference ], description: 'Data access for itil and user_admin roles', }, team: { $id: Now.ID['my_team'], name: 'Analysis Team', members: [summaryAgent, searchAgent], }, }) ``` **Important Notes:** - Using the `Record` API is recommended for better readability and portability across instances - When using sys_id strings, they must be valid GUIDs (32-character hex strings) - Non-GUID strings will trigger validation errors --- ## Version Configuration (`versions`) Version information for the workflow. **Key Fields:** - **`name`** Version name - **`number`** Version number - **`instructions`** Version-specific instructions - **`state`** Version state: `'published'`, `'draft'`, `'committed'`, or `'withdrawn'` (default: 'draft', omit if draft) --- ## Run As User (`runAs`) Specifies which user the Agentic Workflow runs as. **Important Notes:** - If `runAs` is set to a user sys_id, the workflow runs as that specific user - If `runAs` is omitted, the workflow uses **dynamic user identity** and `dataAccess` becomes **mandatory** - Dynamic user identity means the workflow inherits roles from the invoking user based on `dataAccess.roleMap` (role names) or `dataAccess.roleList` (role sys_ids) --- ## Security ACL Configuration (`securityAcl`) **MANDATORY** - Automatically generates `sys_security_acl` and `sys_security_acl_role` records for this workflow. Controls who can invoke the workflow. ### Access Types **`'Any authenticated user'`** Any logged-in user can invoke this workflow. **`'Specific role'`** Only users who hold at least one of the listed roles can access. `roles` is required. **`'Public'`** No authentication required. **Important Notes:** - `securityAcl` controls **who can invoke the workflow** (access control) - `runAs` / `dataAccess` controls **which user identity the workflow runs under** (execution context) these are separate concerns - The plugin automatically creates `sys_security_acl` and `sys_security_acl_role` records - The ACL name is derived from the workflow's internal name: `{domain}.{scope}.{workflowName}` --- ## Data Access Controls (`dataAccess`) **MANDATORY when `runAs` is omitted** - Defines which roles the workflow can inherit from the invoking user during execution. > **Note:** The `action` field is automatically set to `'limit_to_roles'` by the plugin. Fields like `agent`, `agentTable`, `name`, and `sysDomain` are also auto-populated. The entire `dataAccess` object is omitted from transform output when no roles are specified. **Example** ```typescript import { AiAgenticWorkflow, Role } from '@servicenow/sdk/core' const itilRole = Role({ $id: Now.ID['itil_role'], name: 'x_app.itil', description: 'ITIL role for incident management', }) const userAdminRole = Role({ $id: Now.ID['user_admin_role'], name: 'x_app.user_admin', description: 'User administration role', }) AiAgenticWorkflow({ name: 'Dynamic User Workflow', description: 'Workflow with dynamic user identity', securityAcl: { $id: Now.ID['dynamic_user_workflow_acl'], type: 'Any authenticated user', }, // runAs is omitted dynamic user identity dataAccess: { roleMap: ['itil', 'user_admin'], // OR roleList: ['282bf1fac6112285017366cb5f867469', 'b05926fa0a0a0aa7000130023e0bde98'], description: 'Data access for itil and user_admin roles', }, }) ``` **When to Use:** - **Use `dataAccess`** when you want the workflow to run with dynamic user identity (omit `runAs`) - **Omit `dataAccess`** when `runAs` is set to a specific user sys_id --- ## Trigger Configuration (`triggerConfig`) Configure automatic workflow invocation based on record changes or schedules. ### Trigger Types | Trigger Type | Description | |--------------|-------------| | `record_create` | Triggers when a new record is created | | `record_create_or_update` | Triggers when a record is created or updated | | `record_update` | Triggers when an existing record is updated | | `email` | Triggers based on email events | | `scheduled` | Triggers at scheduled intervals | | `daily` | Triggers daily at a specified time | | `weekly` | Triggers weekly on a specified day | | `monthly` | Triggers monthly on a specified day | | `ui_action` | Triggers from a UI action | --- ## Complete Examples ### Example 1: Workflow with Data Access (from `AiAgenticWorkflow.now.ts`) This example matches the actual transform output only non-default fields are specified. ```typescript import { AiAgenticWorkflow } from '@servicenow/sdk/core' export const exampleAgenticWorkflow = AiAgenticWorkflow({ $id: Now.ID['employee_record_summarization_workflow'], name: 'Employee Record Summarization', description: 'Analyzes employee records and generates summaries', recordType: 'custom', securityAcl: { $id: Now.ID['employee_summarization_workflow_acl'], type: 'Any authenticated user', }, team: { $id: Now.ID['employee_summarization_team'], name: 'Employee Summarization Team', members: [ '274b465a7d5f42e581664209557b2b18', // Record Summary Agent sys_id '2dfb22af3351f2101ea99d273e5c7ba3', // Search Q&A Agent sys_id ], }, versions: [ { name: 'V1', number: 1, state: 'published', instructions: 'Fetch employee record, analyze key fields, and generate summary', }, { name: 'V2', number: 2, instructions: 'Enhanced version with validation and department analysis', }, ], triggerConfig: [ // Record based trigger { name: 'Employee Record Created', targetTable: 'x_snc_cust_app_age_employee', triggerFlowDefinitionType: 'record_create', triggerCondition: 'first_nameISNOTEMPTY', objectiveTemplate: 'Summarize employee record ${sys_id}', runAsScript: Now.include('./run-as-script.js'), showNotifications: true, channel: 'Now Assist Panel', }, // Schedule based trigger { name: 'Weekly Employee Review', active: true, targetTable: 'x_snc_cust_app_age_employee', triggerFlowDefinitionType: 'scheduled', objectiveTemplate: 'Review all employee records for the week', schedule: { runDayOfWeek: 2, // Monday runDayOfMonth: 2, starting: '1970-01-01 09:00:00', // 9:00 AM time: '1970-01-01 09:00:00', // 9:00 AM }, channel: 'Now Assist Panel', }, ], dataAccess: { roleMap: ['admin'], description: 'Restrict workflow access to admin role', }, }) ``` ### Example 2: Workflow with Dynamic User Identity (from `DynamicUserWorkflow.now.ts`) ```typescript import { AiAgenticWorkflow } from '@servicenow/sdk/core' export const dynamicUserWorkflow = AiAgenticWorkflow({ $id: Now.ID['incident_management_workflow'], name: 'Incident Management Workflow', description: 'This workflow analyzes incident records, identifies patterns, and provides resolution recommendations', recordType: 'custom', runAs: '<sys_user_id>', team: { $id: Now.ID['incident_workflow_team'], name: 'Incident Management Team', members: [], }, versions: [ { name: 'V1', number: 1, state: 'published', instructions: 'Analyze incident ${number} with priority ${priority}. Identify potential root causes and suggest resolution steps based on similar past incidents.', }, ], // Security ACL controls who can invoke this workflow securityAcl: { $id: Now.ID['incident_management_workflow_acl'], type: 'Any authenticated user', }, }) ``` --- ## Best Practices ### 1. Security Configuration - **Always set `securityAcl`** it is mandatory and auto-generates the `sys_security_acl` record - **`securityAcl.type`** controls who can invoke the workflow: `'Any authenticated user'`, `'Specific role'`, or `'Public'` - **`securityAcl.$id`** is required it identifies the generated ACL record - **`runAs`** is separate from `securityAcl`: it is a field name used for dynamic user resolution (not who can invoke the workflow) - **Use `dataAccess.roleMap`** (role names) or **`dataAccess.roleList`** (role sys_ids) when `runAs` is omitted (dynamic user identity) ### 2. Team Configuration - **Always provide `team.$id`** when creating a team (mandatory for teams) - **Use meaningful team names** that describe the purpose - **Use simple array of strings** for `team.members` - just agent sys_ids or Record references - **Do not set team `description`** - it is auto-populated from the workflow's description - **No need to specify `sysDomain`** - it defaults to `'global'` - **No need to specify `memoryScope`** - it defaults to `'global'` ### 3. Version Management - **Omit `state`** for draft versions (default is `'draft'`) - **Use `state: 'published'`** for production - **Increment `number`** for new versions (e.g., 1, 2, 3) - **Use meaningful `name`** (e.g., "V1", "V2") ### 4. Trigger Configuration - **Only specify non-default fields** - defaults are automatically suppressed during transform - **Use `'Now Assist Panel'`** for channel - auto-mapped to sys_id - **Use specific `triggerCondition`** to avoid unnecessary invocations - **Include `objectiveTemplate`** in trigger config for the objective message - **Validate `starting` field format**: YYYY-MM-DD HH:MM:SS - **Trigger mappings are auto-generated** - no need to specify them manually - **Default values to omit**: `active: false`, `enableDiscovery: false`, `showNotifications: false`, `description: ''`, `portal: ''`, `profile: ''`, `runAs: ''`, `runAsUser: ''`, `businessRule: ''`, `domain: 'global'` ### 5. Script Fields - **Use module imports** for external script files (or `Now.include()` for legacy scripts) - **Keep scripts concise** and focused - **Handle errors gracefully** in scripts - **Return proper values** from context processing scripts - **CDATA tags are handled automatically** - don't add them manually ### 6. Schedule Configuration - **Use nested `schedule` object** for scheduled triggers - **Set `triggerFlowDefinitionType`** to `'scheduled'`, `'daily'`, `'weekly'`, or `'monthly'` - **`runDayOfWeek`**: 1=Sunday, 2=Monday, ..., 7=Saturday - **`runDayOfMonth`**: 1-31 for monthly schedules - **Date/time format**: YYYY-MM-DD HH:MM:SS (e.g., `'1970-01-01 09:00:00'`) - **Duration format for `repeatInterval`**: YYYY-MM-DD HH:MM:SS (e.g., `'1970-01-05 12:00:00'` for 5 days) - **Omit empty schedule fields** only specify fields with actual values ### 7. Record References - **All `String | Record<table>` fields** support both sys_id strings and Record references - **Use Record references** for better portability across instances - **Supported fields**: `runAs`, `runAsUser`, `channel`, `profile`, `portal`, `businessRule` - **`businessRule` also accepts** Fluent `BusinessRule()` objects defined in the same project - **Channel supports names**: Use `'Now Assist Panel'` directly (auto-mapped to sys_id) --- ## Common Patterns ### Pattern 1: Workflow with Triggers ```typescript AiAgenticWorkflow({ $id: Now.ID['triggered_workflow'], name: 'Triggered Workflow', description: 'Workflow with automatic triggers', securityAcl: { $id: Now.ID['triggered_workflow_acl'], type: 'Any authenticated user' }, runAs: 'user_sys_id', team: { $id: Now.ID['triggered_team'], members: ['agent_sys_id_1'], }, triggerConfig: [ { name: 'Record Trigger', targetTable: 'incident', triggerFlowDefinitionType: 'record_create', triggerCondition: 'priority=1', objectiveTemplate: 'Process incident ${number}', channel: 'Now Assist Panel', }, ], }) ``` ### Pattern 2: Workflow with Scheduled Triggers ```typescript AiAgenticWorkflow({ name: 'Scheduled Review Workflow', description: 'Workflow that runs on a schedule', securityAcl: { $id: Now.ID['scheduled_workflow_acl'], type: 'Any authenticated user' }, runAs: 'user_sys_id', team: { $id: Now.ID['scheduled_team'], members: ['6816f79cc0a8016401c5a33be04be441'], }, triggerConfig: [ { name: 'Weekly Review', targetTable: 'incident', triggerFlowDefinitionType: 'scheduled', objectiveTemplate: 'Review all incidents for the week', channel: 'Now Assist Panel', schedule: { runDayOfWeek: 2, // Monday time: '1970-01-01 09:00:00', // 9:00 AM triggerStrategy: 'every', }, }, { name: 'Monthly Report', targetTable: 'incident', triggerFlowDefinitionType: 'scheduled', objectiveTemplate: 'Generate monthly incident report', channel: 'Now Assist Panel', schedule: { runDayOfMonth: 1, // First day of month time: '1970-01-01 08:00:00', // 8:00 AM repeatInterval: '1970-01-05 12:00:00', }, }, ], }) ``` --- ## Troubleshooting ### Team Not Created **Problem:** Team configuration provided but team record not generated. **Solution:** - Ensure `team.$id` is provided (mandatory for teams) - Use `Now.ID['team_name']` format for the ID - Check that `team.members` array is provided (nested within team object) ### Data Access Validation Error **Problem:** Error: "dataAccess must have at least one of roleList or roleMap non-empty when runAs is empty" **Solution:** - Either set `runAs` to a user sys_id - Or provide `dataAccess.roleMap` (role names) or `dataAccess.roleList` (role sys_ids) with at least one entry ### Trigger Not Firing **Problem:** Trigger configured but workflow not invoked automatically. **Solution:** - Verify `triggerConfig.active` is `true` - Check `triggerCondition` matches your records - Ensure `targetTable` is correct - Verify `objectiveTemplate` is set in trigger config - Validate `starting` field format: YYYY-MM-DD HH:MM:SS ### Script Fields Not Working **Problem:** Scripts showing as `[object Object]` or not executing. **Solution:** - Use string format for scripts: `` `(function() { ... })()` `` - Or use module imports for external files (preferred), or `Now.include('./script-file.js')` for legacy scripts - Ensure CDATA tags are NOT manually added (handled automatically) - Check script parameter names match expected values ### Workflow Not Using Coalesce **Problem:** Workflow `$id` is optional but workflow not found. **Solution:** - Workflows use coalesce on `name` field - ensure unique names - `$id` is optional for workflows (unlike teams which require it) - If you need explicit IDs, you can still provide `$id` --- ## Table Schema ### sn_aia_usecase | Column Name | Type | Mandatory | Default Value | Description | |---------------------------|------------------|-----------|---------------|-------------| | advanced_mode | True/False | FALSE | false | Whether advanced mode is enabled | | applicability_script | Script | FALSE | javascript:new sn_aia.AgentExecutionUtil().getApplicabilityDefaultScript(); | Script that determines when workflow is applicable | | base_plan | Translated Text | FALSE | | Base plan instructions | | condition | Conditions | FALSE | | Condition table reference | | context_processing_script | Script | FALSE | javascript:sn_aia.agents.USECASE_CONTEXT_PROCESSING_SCRIPT_TEMPLATE; | Script for processing context | | description | Translated Text | TRUE | | Description of the workflow | | execution_mode | Choice | FALSE | copilot | Execution mode (copilot/autopilot) | | internal_name | String | FALSE | | Internal name (domain.scope.name) | | name | Translated Text | TRUE | | Display name of the workflow | | parent | Reference | FALSE | | Reference to parent use case | | record_type | Choice | FALSE | custom | Record type (template/custom etc.) | | source_id | Reference | FALSE | | Reference to source workflow | | strategy | Reference | FALSE | | Reference to workflow strategy | | sys_domain | Domain ID | FALSE | | Domain identifier | | team | Reference | FALSE | | Reference to team | ### sn_aia_team | Column Name | Type | Mandatory | Default Value | Description | |-----------------|-----------------|-----------|---------------|-------------| | description | Translated Text | FALSE | | Description of the team | | name | Translated Text | FALSE | | Name of the team | | sys_domain | Domain ID | FALSE | | Domain identifier | ### sn_aia_team_member | Column Name | Type | Mandatory | Default Value | Description | |-----------------|-------------|-----------|---------------|-------------| | agent | Reference | FALSE | | Reference to the AI Agent | | memory_scope | Choice | FALSE | global | Memory scope for the agent | | sys_domain | Domain ID | FALSE | | Domain identifier | | team | Reference | FALSE | | Reference to the team | ### sn_aia_version | Column Name | Type | Mandatory | Default Value | Description | |-----------------|-----------------|-----------|---------------|-------------| | condition | Condition String| FALSE | | Condition for version activation | | instructions | Translated Text | FALSE | | Version-specific instructions | | state | Choice | FALSE | draft | State of the version (draft/published etc.) | | sys_domain | Domain ID | FALSE | global | Domain identifier | | sys_overrides | Reference | FALSE | | Reference to override version | | target_id | Document ID | TRUE | | Reference to target record | | target_table | Table Name | TRUE | | Name of the target table | | version_name | Translated Text | TRUE | | Display name of the version | | version_number | Integer | FALSE | | Version number | ### sn_aia_usecase_config_override | Column Name | Type | Mandatory | Default Value | Description | |----------------------|-------------|-----------|---------------|-------------| | active | True/False | FALSE | | Whether the configuration is active | | run_as_user | Reference | FALSE | | User to run the workflow as | | sys_domain | Domain ID | FALSE | | Domain identifier | | sys_overrides | Reference | FALSE | | Reference to override configuration | | usecase_configuration| Reference | TRUE | | Reference to the workflow | ### sys_agent_access_role_configuration | Column Name | Type | Mandatory | Default Value | Description | |----------------------|-------------|-----------|---------------|-------------| | action | Choice | TRUE | limit_to_roles| Action to perform for access control | | agent | Document ID | TRUE | | Reference to the workflow | | agent_table | Table Name | TRUE | sn_aia_usecase| Table name of the workflow | | description | String | FALSE | | Description of the access configuration | | name | String | TRUE | | Name of the access configuration | | role_list | List | FALSE | | List of roles that have access | | sys_domain | Domain ID | FALSE | global | Domain identifier | ### sn_aia_trigger_configuration | Column Name | Type | Mandatory | Default Value | Description | |---------------------|----------------|-----------|---------------|-------------| | active | True/False | FALSE | false | Whether the trigger is active | | business_rule | Reference | FALSE | | Reference to business rule | | channel | Reference | TRUE | | Channel for the trigger | | condition | Conditions | TRUE | | Condition for triggering | | description | String | FALSE | | Description of the trigger | | enable_discovery | True/False | FALSE | false | Whether to enable discovery | | internal_name | String | FALSE | | Internal name of the trigger | | name | String | TRUE | | Name of the trigger | | notification_script | Reference | FALSE | | Reference to notification script | | objective_template | Email Script | TRUE | | Template for objective message | | portal | Reference | FALSE | | Reference to portal | | profile | Reference | FALSE | | Reference to profile | | run_as | Field Name | FALSE | | Field name for run-as user | | run_as_script | Script | FALSE | | Script to determine run-as user | | run_as_user | Reference | FALSE | | Reference to run-as user | | run_dayofmonth | Integer | FALSE | | Day of month to run | | run_dayofweek | Day of Week | FALSE | | Day of week to run (1=Sunday, 7=Saturday) | | run_period | Duration | FALSE | | Run period/interval | | run_start | Basic DateTime | FALSE | | Start date/time (YYYY-MM-DD HH:MM:SS) | | run_time | Basic Time | FALSE | | Time to run | | show_notifications | True/False | FALSE | false | Whether to show notifications | | sys_domain | Domain ID | FALSE | global | Domain identifier | | sys_overrides | Reference | FALSE | | Reference to override trigger | | target_table | Table Name | TRUE | | Table to monitor for triggers | | trigger_flow | Reference | FALSE | | Reference to flow | | trigger_flow_definition_type | Choice | FALSE | | Type of flow definition | | trigger_strategy | Choice | FALSE | | Strategy for triggering | | usecase | Reference | FALSE | | Reference to use case | | usecase_discovery | True/False | FALSE | false | Whether to enable usecase discovery | ### sn_aia_trigger_agent_usecase_m2m | Column Name | Type | Mandatory | Default Value | Description | |----------------------|---------------|-----------|---------------|-------------| | active | True/False | FALSE | true | Whether the mapping is active | | objective_template | Email Script | FALSE | | Template for objective message | | related_resource_record| Document ID | TRUE | | Reference to the related record (workflow) | | related_resource_table| Table Name | TRUE | sn_aia_usecase| Name of the related table | | sys_domain | Domain ID | FALSE | global | Domain identifier | | sys_overrides | Reference | FALSE | | Reference to override mapping | | trigger_configuration| Reference | TRUE | | Reference to trigger configuration |