OpenPipeline handles ingestion, routing, and processing of all record types—from logs and business events to spans, Smartscape events, and more—with Grail storage, DQL-based processing, and object-level access control. OpenPipeline is the Latest Dynatrace solution to processing and replaces the classic pipeline for logs and business events.
This article walks you through the principles to manually convert your classic processing rules to OpenPipeline, permission management, access control for your teams, and routing so that teams can get started with processing in OpenPipeline independently.
You'll identify the data sets processed by the classic processing rules and the users responsible for this data. You'll then build a pipeline group with a base pipeline translating the classic processing rules and an empty catch-all member pipeline to route all records. Once the catch-all member pipeline route is active, data starts being processed by OpenPipeline instead of the classic pipeline.
The classic pipeline remains active as a fallback until you can validate the new configuration. Finally, you can turn off classic processing rules.
Dynatrace version 1.295+
Dynatrace SaaS environment powered by Grail and AppEngine
DPS license with log or business event capabilities
Permissions:
openpipeline:configurations:writesettings:objects:adminExtensions are upgraded to their latest major version. Older versions may reference classic entity fields that are no longer supported in Latest Dynatrace. For more information, see Manage Extensions.
Some behaviors differ between the classic pipeline and OpenPipeline and can break downstream consumers (DQL queries, dashboards, alerts, automations). The following table summarizes the key technical differences of processing logs via the log classic pipeline and OpenPipeline.
| Technical point | Log classic pipeline | OpenPipeline | Required action |
|---|---|---|---|
Data type support |
|
| Review queries that relied on implicit string coercion |
Content field limit | 512 kB | 10 MB | No action required |
Field name case sensitivity | Case-insensitive | Case-sensitive1 | Update DQL queries and downstream consumers to use OpenPipeline field casing before rerouting data |
Query language | LQL, DQL | DQL | Translate LQL processing statements to DQL; see Conversion to DQL for Logs and the classic command reference |
Connect log data to traces | Built-in rules | Automatic2 | No action required |
Technology parsers | Built-in rules | Add a Technology bundle in the Processing stage for each relevant built-in technology rule of the classic pipeline. | |
Metric dimension naming | Not supported | Supported | No action required. Existing definitions keep working; new metrics can use dimension names. |
Metric-key | Mandatory | Optional | No action required. Existing definitions keep working; new metrics can drop the prefix. |
Classic references on telemetry | Classic entities and classic metrics are extracted from telemetry data. Telemetry data is enriched with classic-entity fields ( | Classic entities, classic metrics, and classic-entity fields aren't applicable to Latest Dynatrace. | Review and update DQL queries, dashboards, alerts, and automations based on classic entities, classic metrics, or classic-entity fields. |
When you ingest logs via Log Monitoring API v2 - POST ingest logs, field names are automatically converted to lowercase after data is routed to the Classic pipeline. While both pipelines run side by side, two records of the same type can end up with inconsistent casing depending on which pipeline they hit, silently breaking case-sensitive queries.
The enrichment runs automatically and is no longer rule-based, so it isn't visible as a processor in your pipeline.
Collection of processors executed in an ordered sequence of stages to structure, separate, and store data.
Pre-formatted processing instruction that focuses either on modifying or extracting data. It contains a configurable matcher and processing definition.
Set of team-managed pipelines to which a shared configuration applies. The shared configuration can restrict or mandate processing, enabling centralized processing across multiple pipelines.
Directing data to a pipeline, either based on matching conditions (dynamic) or by explicit pipeline selection (static).
The steps below use Dynatrace web UI. The Settings API is available as well. To see an end-to-end example with JSON payloads, see Configure multi-cloud ingest governance with pipeline groups.
The OpenPipeline usage overview ready-made dashboard shows the current state of your migration. It tracks how much of your log and business event volume still flows through the classic pipeline versus OpenPipeline, and lists each record type with its migration status.
Go to
Dashboards > OpenPipeline usage overview.
Verify that the percentage in Ingest via OpenPipeline vs. classic pipeline is above 0%.
When the percentage is above 0%, your data is still reaching the classic pipeline. When you go to
Settings > Process and contextualize > OpenPipeline and select your configuration scope (Logs or Business events), you still see the Classic route in Dynamic routing.
Go to
Notebooks or
Logs and filter on the dt.openpipeline.pipelines field to identify the records routed to the classic pipeline.
fetch logs| filter in(dt.openpipeline.pipelines, "logs:default")
Review the corresponding classic processing rules and their context:
Create an empty base pipeline.
Create the pipeline group.
The base pipeline and the pipeline group are listed in the respective tables.
Translate every classic processing rule into a processor on the base pipeline. These processors will apply to all records routed to the member pipelines assigned to the group.
Use the OpenPipeline API - GET translate classic pipeline to generate an OpenPipeline configuration from your existing classic pipeline definition. The API returns a pipeline JSON payload that you can use as a starting point, reducing manual translation effort.
OpenPipeline organizes processors into stages, including:
For the complete list of stages and the processors available, see Processing in OpenPipeline.
The configuration workflow is
No data is affected at this stage. The base pipeline is inactive until the catch-all member pipeline route is active.
When in a group, member pipelines support routing and inherit the base pipeline configuration. In this case, the catch-all member pipeline stays empty—its goal is to receive all the records to apply the base pipeline configuration to.
Create the catch-all member pipeline.
Add the catch-all member pipeline to the pipeline group.
Create the associated route.
true as a matching condition and choose the catch-all member pipeline as target.The new route is active.
Keep classic rules enabled until all data is reliably routed and processed by OpenPipeline. Compare OpenPipeline output against the classic processing rule output until the results match. If they don't, identify translation gaps and fix them in the base pipeline.
After you have validated your OpenPipeline configuration, turn off the classic processing rules you converted.
Go to
Dashboards > OpenPipeline usage overview and verify that the percentage in Ingest via OpenPipeline vs. classic pipeline is 0%.
The dashboard shows the percentage of records migrated based on routing. Zero classic pipeline usage does not guarantee that all data is fully converted, only that it was not routed via the Classic route. Before turning off a classic processing rule, ensure that data that arrives rarely or does not match any OpenPipeline route is accounted for, including sensitive data, masking, and filtering.
If the remaining classic pipeline usage comes from processing rules your environment no longer needs, you can turn off those rules even if usage is above 0%.
To turn off the classic processing rules:
The first user to create or edit a pipeline becomes its owner. By default, only the owner and administrators can see and manage it. For teams to get started with processing in OpenPipeline independently, as administrator, you need to set up IAM policies and access control for them.
Grant environment-level permissions.
Go to Account Management > Identity and Access Management.
Create a policy to grant read or write access to the relevant pipeline schemas for a user or user group. For example, to grant write access to log and business event pipelines:
ALLOW settings:objects:write WHERE settings:schemaId IN ("builtin:openpipeline.logs.pipelines", "builtin:openpipeline.bizevents.pipelines")
For more policy patterns, see Owner-based access control in OpenPipeline.
Review and distribute object-level access.
Once permissions are in place, review pipeline ownership and share access with the teams responsible for each pipeline. As administrator, you can transfer ownership or grant accessor rights to any pipeline. To learn how to access, transfer ownership, or make a pipeline public, see Set access control in OpenPipeline.
The classic pipeline no longer processes your data. The pipeline group in OpenPipeline contains a base pipeline with the equivalent processing logic of your classic pipeline and a member pipeline to route all records. Your teams can access the pipelines and manage data-processing independently.
The upgrade establishes parity with your classic pipeline setup. You can refine, split, and validate iteratively.
Refine processing.
Notebooks to identify gaps or opportunities.
Notebooks.Split processing by teams or services.
You can add member pipelines that perform specific processing, split by team or by service, and hand ownership to teams.
Repeat for each team or service. The base pipeline converges to only the rules that are truly generic and shared across all data; each dedicated member pipeline owns its specific processing.
Data flow in OpenPipeline: The end‑to‑end path data follows from ingest through storage.
Processing in OpenPipeline: Pipelines, stages, and processors used to transform data.
Owner-based access control in OpenPipeline: Policies and scopes that manage pipeline access level and ownership.
OpenPipeline pipeline groups: Group setup for shared and enforced pipeline stages.
Configure a processing pipeline: Step‑by‑step pipeline configuration guidance.
OpenPipeline processing examples: Examples of OpenPipeline processor configuration that can be compared with the log processing examples to clarify conceptual differences.
Example: Rename attributes
Classic pipeline
USING(INOUT to_be_renamed, content)| FIELDS_RENAME(better_name: to_be_renamed)
OpenPipeline
Rename fields processor: Enter the field name that you want to be renamed and the new name.

Yes.
Data is processed according to the first matching route. As long as the classic processing rules are in place in your environment, the classic pipeline is accounted for in OpenPipeline and is the default processing mechanism. When you create new pipelines and associated routes, position the new route above the default route so that OpenPipeline processes data accordingly. If some data doesn't match the new route condition, it's still routed by the default route to the classic pipeline.