Skip to content

Commit b177a06

Browse files
Merge pull request #314206 from jlian/fix/dfg-profileref-concat
AIO: Remove profileRef from DFG Bicep examples, use concatenate in prose
2 parents d024c5c + 0ab592e commit b177a06

9 files changed

Lines changed: 28 additions & 32 deletions

articles/iot-operations/connect-to-cloud/concept-dataflow-graphs.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: concept-article
9-
ms.date: 03/13/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
@@ -27,9 +27,9 @@ Azure IoT Operations provides two ways to process data in a pipeline:
2727
| Capability | Data flows | Data flow graphs |
2828
|-----------|-----------|-----------------|
2929
| Pipeline shape | Fixed: enrich, filter, map | Flexible: any order, branching, merging |
30-
| Transform types | Map, filter, enrich | Map, filter, branch, concat, window, enrich |
30+
| Transform types | Map, filter, enrich | Map, filter, branch, concatenate, window, enrich |
3131
| Time-based aggregation | Not available | Window transforms with tumbling windows |
32-
| Conditional routing | Not available | Branch and concat transforms |
32+
| Conditional routing | Not available | Branch and concatenate transforms |
3333
| Endpoint support | All endpoint types | MQTT, Kafka, and OpenTelemetry only |
3434

3535
For new projects that use supported endpoint types, we recommend data flow graphs. Data flows remain fully supported for all scenarios, and they support the full range of endpoint types.
@@ -43,7 +43,7 @@ Each transform is a pre-built processing step that you configure with rules and
4343
| **Map** | Rename, restructure, compute, and copy fields | [Transform data with map](howto-dataflow-graphs-map.md) |
4444
| **Filter** | Drop messages that match a condition | [Filter and route data](howto-dataflow-graphs-filter-route.md) |
4545
| **Branch** | Route each message to a `true` or `false` path based on a condition | [Filter and route data](howto-dataflow-graphs-filter-route.md#branch-transform) |
46-
| **Concat** | Merge two or more paths back into one | [Filter and route data](howto-dataflow-graphs-filter-route.md#merge-paths-with-concat) |
46+
| **Concatenate** | Merge two or more paths back into one | [Filter and route data](howto-dataflow-graphs-filter-route.md#merge-paths-with-concatenate) |
4747
| **Window** | Collect messages over a time interval, then aggregate | [Aggregate data over time](howto-dataflow-graphs-window.md) |
4848

4949
All transforms share an [expression language](concept-dataflow-graphs-expressions.md) for operators, functions, and field references. You can also [enrich](howto-dataflow-graphs-enrich.md) messages with external data from a state store in map, filter, and branch transforms.
@@ -52,7 +52,7 @@ All transforms share an [expression language](concept-dataflow-graphs-expression
5252

5353
Transforms connect in sequence inside a `DataflowGraph` resource: **Source > Transform A > Transform B > … > Destination**.
5454

55-
Branch transforms split the flow into parallel paths, and concat transforms merge them back.
55+
Branch transforms split the flow into parallel paths, and concatenate transforms merge them back.
5656

5757
You can chain any number of transforms in any order. A pipeline with a single map transform is as valid as one that filters, branches, maps each path differently, merges, and then aggregates over a time window.
5858

@@ -84,7 +84,6 @@ resource dataflowGraph 'Microsoft.IoTOperations/instances/dataflowProfiles/dataf
8484
name: 'temperature-conversion'
8585
parent: dataflowProfile
8686
properties: {
87-
profileRef: dataflowProfileName
8887
mode: 'Enabled'
8988
nodes: [
9089
{
@@ -187,7 +186,7 @@ In the how-to articles that follow, examples focus on the transform rules themse
187186

188187
Data flow graphs support two kinds of transforms:
189188

190-
- **Built-in transforms** are pre-built by Microsoft (map, filter, branch, concat, window). You configure them with rules. No coding required.
189+
- **Built-in transforms** are pre-built by Microsoft (map, filter, branch, concatenate, window). You configure them with rules. No coding required.
191190
- **WASM transforms** are custom WebAssembly modules that developers build and deploy. Use them when you need logic that the built-in transforms don't cover.
192191

193192
Both kinds of transforms run inside the same `DataflowGraph` resource and can be mixed in a single pipeline. For information on building and deploying custom transforms, see [Use WASM transforms in data flow graphs](howto-dataflow-graph-wasm.md).

articles/iot-operations/connect-to-cloud/howto-create-dataflow-graph.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/19/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
#CustomerIntent: As an operator, I want to create a data flow graph to process data with transforms like map, filter, and window.
@@ -49,7 +49,7 @@ A data flow graph contains three types of elements: **sources** that bring data
4949

5050
:::image type="content" source="media/howto-create-dataflow-graph/source-configuration.png" alt-text="Screenshot of the operations experience source configuration panel showing endpoint dropdown and topic input." lightbox="media/howto-create-dataflow-graph/source-configuration.png":::
5151

52-
1. **Add transforms**: Select one or more transforms to process the data. Available transforms include map, filter, branch, concat, and window. For details on each transform type, see [Data flow graphs overview](concept-dataflow-graphs.md#available-transforms).
52+
1. **Add transforms**: Select one or more transforms to process the data. Available transforms include map, filter, branch, concatenate, and window. For details on each transform type, see [Data flow graphs overview](concept-dataflow-graphs.md#available-transforms).
5353

5454
:::image type="content" source="media/howto-create-dataflow-graph/transform-selection.png" alt-text="Screenshot of the operations experience transform selection menu showing available transform types." lightbox="media/howto-create-dataflow-graph/transform-selection.png":::
5555

@@ -275,7 +275,7 @@ The available built-in transforms are:
275275
| Map | `azureiotoperations/graph-dataflow-map:1.0.0` | Rename, restructure, compute, and copy fields |
276276
| Filter | `azureiotoperations/graph-dataflow-filter:1.0.0` | Drop messages that match a condition |
277277
| Branch | `azureiotoperations/graph-dataflow-branch:1.0.0` | Route messages to a `true` or `false` path |
278-
| Concat | `azureiotoperations/graph-dataflow-concatenate:1.0.0` | Merge branched paths back together |
278+
| Concatenate | `azureiotoperations/graph-dataflow-concatenate:1.0.0` | Merge branched paths back together |
279279
| Window | `azureiotoperations/graph-dataflow-window:1.0.0` | Aggregate data over a time interval |
280280

281281
For detailed configuration of each transform type, see:

articles/iot-operations/connect-to-cloud/howto-dataflow-graphs-enrich.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/19/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
@@ -274,7 +274,6 @@ resource dataflowGraph 'Microsoft.IoTOperations/instances/dataflowProfiles/dataf
274274
name: 'enrich-example'
275275
parent: dataflowProfile
276276
properties: {
277-
profileRef: dataflowProfileName
278277
mode: 'Enabled'
279278
nodes: [
280279
{

articles/iot-operations/connect-to-cloud/howto-dataflow-graphs-filter-route.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/13/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
1313

1414
# Filter and route data in data flow graphs
1515

16-
Data flow graphs provide two ways to control which messages flow through your pipeline: **filter** transforms drop unwanted messages, and **branch** transforms route each message down one of two paths based on a condition. After branching, a **concat** transform merges the paths back together.
16+
Data flow graphs provide two ways to control which messages flow through your pipeline: **filter** transforms drop unwanted messages, and **branch** transforms route each message down one of two paths based on a condition. After branching, a **concatenate** transform merges the paths back together.
1717

1818
For an overview of data flow graphs and how transforms compose in a pipeline, see [Data flow graphs overview](concept-dataflow-graphs.md).
1919

@@ -266,7 +266,7 @@ Key constraints:
266266
- **Exactly one branch rule.** The `branch` key takes a single object, not an array.
267267

268268
> [!IMPORTANT]
269-
> Branching splits messages into separate processing paths, but all paths must merge back together using a concat transform before reaching the destination. Think of branching as a way to apply different transformations to different messages, not as a way to route to multiple endpoints.
269+
> Branching splits messages into separate processing paths, but all paths must merge back together using a concatenate transform before reaching the destination. Think of branching as a way to apply different transformations to different messages, not as a way to route to multiple endpoints.
270270

271271
### Define a branch rule
272272

@@ -344,13 +344,13 @@ nodeConnections:
344344

345345
---
346346

347-
## Merge paths with concat
347+
## Merge paths with concatenate
348348

349-
All branch paths must converge before reaching a destination. A concat transform merges them. It has no configuration and no rules. Messages from all connected inputs pass through unmodified.
349+
All branch paths must converge before reaching a destination. A concatenate transform merges them. It has no configuration and no rules. Messages from all connected inputs pass through unmodified.
350350

351351
# [Operations experience](#tab/portal)
352352

353-
Add a concat transform to the canvas and connect both branch paths to it, then connect the concat to the destination.
353+
Add a concatenate transform to the canvas and connect both branch paths to it, then connect the concatenate to the destination.
354354

355355
# [Bicep](#tab/bicep)
356356

@@ -394,9 +394,9 @@ To build this pipeline in the Operations experience:
394394
1. Add a **branch** transform. Configure the condition `severity > 5` to route high-severity messages to the true path.
395395
1. Add a **map** transform on the true path. Configure rules to rename `deviceId` to `id`, `temperature` to `temp`, and add a field `alert` set to `true`.
396396
1. Add a **map** transform on the false path. Configure rules to rename `deviceId` to `id` and `temperature` to `temp`.
397-
1. Add a **concat** transform to merge both paths.
397+
1. Add a **concatenate** transform to merge both paths.
398398
1. Add a **destination** that sends to `telemetry/processed`.
399-
1. Connect the elements: source → filter → branch → (true path: alert map, false path: normal map) → concat → destination.
399+
1. Connect the elements: source → filter → branch → (true path: alert map, false path: normal map) → concatenate → destination.
400400

401401
# [Bicep](#tab/bicep)
402402

articles/iot-operations/connect-to-cloud/howto-dataflow-graphs-map.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/26/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
@@ -546,7 +546,6 @@ resource dataflowGraph 'Microsoft.IoTOperations/instances/dataflowProfiles/dataf
546546
name: 'temperature-map-example'
547547
parent: dataflowProfile
548548
properties: {
549-
profileRef: dataflowProfileName
550549
mode: 'Enabled'
551550
nodes: [
552551
{

articles/iot-operations/connect-to-cloud/howto-dataflow-graphs-topic-routing.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/13/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
@@ -151,7 +151,7 @@ spec:
151151
152152
## Option 2: Branch, map each path, and merge
153153
154-
If you need different transformations on each path (not just a different topic), use a branch transform to split the flow, a map transform on each arm to set the topic and apply path-specific rules, and a concat transform to merge the paths.
154+
If you need different transformations on each path (not just a different topic), use a branch transform to split the flow, a map transform on each arm to set the topic and apply path-specific rules, and a concatenate transform to merge the paths.
155155
156156
# [Operations experience](#tab/portal)
157157
@@ -161,7 +161,7 @@ In the Operations experience:
161161
1. Add a **branch** transform with condition `$1 > 1000` on the `temperature` field.
162162
1. On the **true** path, add a **map** transform with a wildcard passthrough and a rule that sets `$metadata.topic` to `"alerts"`.
163163
1. On the **false** path, add a **map** transform with a wildcard passthrough and a rule that sets `$metadata.topic` to `"historian"`.
164-
1. Add a **concat** transform to merge both paths.
164+
1. Add a **concatenate** transform to merge both paths.
165165
1. Add a **destination** with topic `factory/${outputTopic}`.
166166

167167
# [Bicep](#tab/bicep)

articles/iot-operations/connect-to-cloud/howto-dataflow-graphs-window.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 03/19/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
---
@@ -231,7 +231,6 @@ resource dataflowGraph 'Microsoft.IoTOperations/instances/dataflowProfiles/dataf
231231
name: 'temperature-window'
232232
parent: dataflowProfile
233233
properties: {
234-
profileRef: dataflowProfileName
235234
mode: 'Enabled'
236235
nodes: [
237236
{

articles/iot-operations/connect-to-cloud/overview-dataflow-comparison.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: concept-article
9-
ms.date: 03/19/2026
9+
ms.date: 04/02/2026
1010
ai-usage: ai-assisted
1111

1212
#CustomerIntent: As an operator, I want to understand when to use data flows vs. data flow graphs.
@@ -33,8 +33,8 @@ Data flow graphs support MQTT, Kafka, and OpenTelemetry endpoints.
3333
| Feature | Data flows | Data flow graphs |
3434
|---------|-----------|-----------------|
3535
| Pipeline shape | Fixed: enrich, filter, map | Flexible: any graph topology |
36-
| Transforms | Map, filter, enrich | Map, filter, branch, concat, window (aggregation), enrich |
37-
| Branch and merge | Not supported | Branch on conditions, merge with concat |
36+
| Transforms | Map, filter, enrich | Map, filter, branch, concatenate, window (aggregation), enrich |
37+
| Branch and merge | Not supported | Branch on conditions, merge with concatenate |
3838
| Time-based aggregation | Not supported | Tumbling windows with avg, min, max, count |
3939
| Endpoint support (source) | MQTT, Kafka | MQTT, Kafka, OpenTelemetry |
4040
| Endpoint support (destination) | MQTT, Kafka, ADLS, Fabric, ADX, local storage, OpenTelemetry | MQTT, Kafka, OpenTelemetry |

articles/iot-operations/develop-edge-apps/howto-configure-registry-endpoint.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: sethmanheim
55
ms.author: sethm
66
ms.service: azure-iot-operations
77
ms.topic: how-to
8-
ms.date: 03/25/2026
8+
ms.date: 04/02/2026
99
ai-usage: ai-assisted
1010

1111
#CustomerIntent: As an operator, I want to understand how to configure registry endpoints in Azure IoT Operations so that I can pull custom connectors, WASM modules, and graph definitions from container registries for use in data flow graphs and connectors.
@@ -457,7 +457,7 @@ spec:
457457

458458
---
459459

460-
The built-in data flow graph transforms (map, filter, branch, concat, window) use this endpoint to pull processing artifacts from MCR. When you use `registryEndpointRef: default` in a `DataflowGraph` resource, no extra registry configuration is needed. For more information about built-in transforms, see [Data flow graphs overview](../connect-to-cloud/concept-dataflow-graphs.md).
460+
The built-in data flow graph transforms (map, filter, branch, concatenate, window) use this endpoint to pull processing artifacts from MCR. When you use `registryEndpointRef: default` in a `DataflowGraph` resource, no extra registry configuration is needed. For more information about built-in transforms, see [Data flow graphs overview](../connect-to-cloud/concept-dataflow-graphs.md).
461461

462462
> [!NOTE]
463463
> For custom WASM transforms or third-party artifacts, you need to create a separate registry endpoint that points to the registry where your artifacts are stored.

0 commit comments

Comments
 (0)