Executing a Procedure
Once your procedure's steps, field mappings, and variables are configured, you're ready to execute.
Running a Procedure
You can start an execution from the project sidebar without first navigating into the procedure:
- Inline play icon — each procedure in the sidebar shows a play icon next to its name. Click it to open the execute dialog for that procedure.
- Right-click menu — right-click a procedure in the sidebar and choose Execute to open the execute dialog or Schedule to open the schedule dialog.
- Procedure page — open the procedure and click the Execute or Schedule button at the top of the page.
Once triggered, the procedure runs each step sequentially, displaying progress as it goes.
Note: Execution is always initiated against an entire procedure. There is no per-step execute control — individual steps run as part of their parent procedure.
Building a Complete Migration Step
Before executing, ensure your Migrate Records steps are fully configured:
Tables Tab
- Source connection and source table are set
- Target connection and target table are set
Filter Tab
- A filter query limits which records are extracted from the source
- Filters can use the Standard mode with formula expressions, e.g.:
[element_id] IN list(incident_id_map.keys())
Fields Tab
- All required target fields have mappings configured
- Field mappings include appropriate types (simple, formula, match, lookup, or ID)
Key Mappings
Key mappings define one or more fields on the target table that identify whether a given record already exists. This determines whether a record is inserted as new or updated.
- Configure key mappings to control insert/update behavior
- For example, using
sys_idas a key field means records with matchingsys_idvalues will be updated rather than inserted
Reviewing Results
After execution completes:
- Check the target system — verify that records were created or updated as expected
- Review the execution report — results are displayed in the execution UI with details about the migration; you can export the report to CSV if needed
- Check step status — each step shows its execution result (success, warnings, or errors)
- Review artifacts — if any step produced files (via a Run Script step, a Migrate Records per-chunk script, or another mechanism), they are listed on the execution's Artifacts page
Artifacts
The Artifacts page (linked from the execution view) lists every file produced during this execution, grouped by scope:
-
Procedure Artifacts — files written via
pb.shared_artifact_path(). These belong to the procedure as a whole. Use this scope when several steps contribute to the same output, or when a downstream step needs to read a file produced by an earlier one. -
Step Artifacts — files written via
pb.artifact_path()from a specific step. Each step's artifacts are listed against the step that produced them.
For each file you can:
- View — opens an in-app preview. JSON files render with syntax highlighting and a copy button; other text files render as plain text; binary files display a size and download prompt.
- Download — downloads the file directly without leaving the execution.
Artifacts are written under the execution's folder on disk and persist for as long as the execution is retained. See Step Type: Run Script for the script-side API and Per-Chunk Scripts for how Migrate Records steps produce artifacts.
Example: Migrating Journal Entries
Here's an example of a complete Migrate Records step for migrating ServiceNow journal entries:
Tables:
- Source: sys_journal_field on your source ServiceNow connection
- Target: u_pbx_vt_journal_entry_migrator on your target ServiceNow connection
Filter:
- Standard filter: [element_id] IN list(incident_id_map.keys())
- This selects journal entries for incidents migrated in the previous step
Field Mappings:
| Target Field | Mapping Type | Value |
|---|---|---|
| sys_id | Source Field | [sys_id] |
| u_add_audit_entry | Constant | true |
| u_created_by | Source Field | [sys_created_by] |
| u_created_on | Source Field | [sys_created_on] |
| u_disable_history_refresh | Constant | false |
| u_entry_text | Source Field | [value] |
| u_field_name | Source Field | [element] |
| u_parent_table | Constant | incident |
| u_parent_id | Formula | incident_id_map.get([element_id]) |
Key Mapping: sys_id
Next Steps
Once the procedure completes successfully, continue with:
- Output Variables — capture step results for use in later steps
- Table Correlations — track ID relationships for parent-child migrations
- Migrate Records — Full Guide — comprehensive documentation for the main step type
- Formula Language — expressions for data transformation
- Best Practices — project organization, performance, and testing
Comments
0 comments
Please sign in to leave a comment.