- Introduction
- Getting started
- Process modeling with BPMN
- Process modeling with Case Management
- Designing a persistent case entity schema
- Defining case keys (system vs. external)
- Establishing task I/O and write-back contracts
- Exit rules and early stage termination
- Modeling primary and secondary stages
- Triggering a case from Data Fabric
- Implementing stage-level personas and permissions
- Setting SLAs and automated escalation rules
- Configuring a rework loop (re-entry)
- Managing live case instances: pause, migrate, and retry
- Maestro case management component dictionary
- Process modeling with Flow
- Getting started
- Core concepts
- Node reference
- Build guides
- Best practices
- Reference
- Process implementation
- Debugging
- Simulating
- Publishing and upgrading agentic processes
- Common implementation scenarios
- Extracting and validating documents
- Process operations
- Process monitoring
- Process optimization
- Reference information
Maestro user guide
Transforms data using a variety of operations. The Data Transform node and its individual operation nodes (Filter, Map, Group By) are available as separate selectable nodes in the node palette.
When to use Data Transform vs Script
Use Data Transform operations when the transformation is a field-level operation on a collection. The available operations cover:
- Filtering
- Mapping
- Grouping
Use Script when the transformation requires conditional logic, arithmetic, or string manipulation, or when no dedicated operation covers the case. Both can be combined: a Data Transform operation can filter or reshape a collection, then pass the result to a Script node.
Output
All Data Transform operation nodes output their result as output, accessible downstream as $vars.<nodeName>.output.
Filter
Keeps only the entries in a collection that match your conditions.
Configuration
| Field | Required | Description |
|---|---|---|
| Input | Yes | The collection (array) to filter. Reference as $vars.<nodeName>.output. |
| Conditions | Yes | One or more conditions. An entry is kept only if all conditions are met. |
Example
Keep only orders with a status of "completed":
- Input:
$vars.fetchOrders1.output.body - Condition:
statusequalscompleted
Output available as $vars.filter1.output.
Map
Transforms each entry in a collection by modifying or reshaping its fields.
Configuration
| Field | Required | Description |
|---|---|---|
| Input | Yes | The collection (array) to transform. |
| Field mappings | Yes | For each target field, define the name and the source field or expression. |
Example
Rename firstName and lastName fields to first and last:
| Target field | Source mapping |
|---|---|
first | firstName |
last | lastName |
Output available as $vars.map1.output.
Group By
Groups a collection by a shared field and aggregates values like totals, averages, or counts.
Configuration
| Field | Required | Description |
|---|---|---|
| Input | Yes | The collection (array) to group. |
| Group by field | Yes | The field whose value determines the group. |
| Aggregations | No | Additional computed fields per group (count, sum, average, min, max, first, last, collect). |
Example
Group a list of orders by region and count the number of orders per region:
- Input:
$vars.fetchOrders1.output.body - Group by:
region - Aggregation:
orderCount= count
Output available as $vars.groupBy1.output.
Common issues
| Issue | Resolution |
|---|---|
| Output is empty after Filter | The conditions don't match any entries. Inspect the input collection in the execution trace to verify the field names and values. |
Map output has undefined fields | The source field path doesn't exist in the input entries. Use the execution trace to confirm the input structure. |