Upgrade Classic SLOs

  • Latest Dynatrace
  • How-to guide
  • 7-min read
  • Published Jun 16, 2025

With the release of the SLOs Service-Level Objectives, Dynatrace has improved how you can establish and ensure your business-critical service-level objectives (SLOs) by allowing you to define tailored service-level indicators (SLIs) that reflect the essential SLIs using all available data points.

Dynatrace offers two Service-Level Objectives application types:

The SLOs Service-Level Objectives is integrated with Dynatrace and Grail, providing capabilities for using all data types.

Upgrade Classic SLOs

We strongly recommend upgrading your Classic SLOs from Service-Level Objectives Classic to SLOs Service-Level Objectives to maximize SLO capabilities and ensure you can use the latest SLO enhancements.

Below is an examples of the new SLO in Dashboards Dashboards.

Screenshot of an SLO in Dashboards.

Below are a couple of examples of an SLO in SLOs Service-Level Objectives.

Screenshot of a service availability SLO.

Screenshot of user-conversion rate SLO.

Why upgrade?

The table below highlights the new functionality and shows the many reasons you should upgrade. It compares the capabilities of SLOs in Service-Level Objectives Classic and SLOs Service-Level Objectives.

Capability
Service-Level Objectives Classic
SLOs Service-Level Objectives
Business Impact
Supported input for SLI definition
Limited to built-in or custom-calculated metrics
Supporting all data types in Grail, incl. biz-events, logs, spans, and time series
SLOs allow a finer granular configuration and tailored definition of the SLI.
Segmenting, data filtering for SLO evaluation
ManagementZones
Segments allow detailed filtering of the dataset used for the SLO evaluation.
Adding SLO tags
SLO tags
Add SLO tags (key-value pairs) and then use them to filter SLOs when querying them via the API.
Customized dashboard tiles
Classic dashboard tile
New dashboard SLO tiles allow more visual customization options, including what data should be shown and colorized. An additional SLO wizard overview allows for creating and editing SLOs in Dashboards Dashboards.
Integration with other Dynatrace apps
Integrated with classic Dynatrace Apps
Integrated with latest Dynatrace Apps

Difference between Classic SLO and SLO

The main difference between the SLO and the Classic SLO is that the SLI in the SLO is represented as a single DQL query. The DQL query allows extensive customization possibilities, unlike metric and entity selectors in the Classic SLO.

Using a DQL query allows you to set the SLI to match the indicator, such as

  • Data points in Grail. For more information, see Upgrading Metrics.
  • Custom filters and customization options using Dynatrace Query Language.
  • Simplified handling of the numerator and denominator via handles to calculate the ratio in DQL.

An SLO typically shows specific characteristics you can configure in many possible ways.

The core SLO components are:

  • A service-level indicator (SLI) is a time series showing percentage values. 100% indicates the desired or ideal situation.
  • It contains the information you need, such as failure rates and response times, and the entity scope, such as services, applications, and synthetic monitors.
  • Evaluation period, which is typically between one to four weeks.
  • SLO status, which is the aggregated, single-value result over the evaluation period.
  • SLO target, which is the fixed and pre-defined threshold determining success.
  • Error budget, which is the acceptable deviation from perfection (100% - SLO target).

Set the following parameters to calculate the values above.

  • SLI
    • What data types are needed?
    • What fraction of the data needs to be considered?
  • Evaluation period
  • SLO target (threshold): The lower limit of the acceptable performance.

In SLOs Service-Level Objectives, the SLI is represented as a DQL (Dynatrace Query Language) query. It's flexible and uses contextual data to represent the objectives.

SLO Classic example using Metrics selectors

Below is an example of a Classic SLO using the classic metric selectors, similar to a DQL query.

Screenshot of a Classic SLO

SLO example using DQL

An SLO has two major parts: the Custom DQL and the Preview. In Custom DQL you can define your DQL query. In Preview you visualize the SLO.

Custom DQL

The SLO DQL query is structured in a certain way to define the SLO and SLI. The SLO DQL example snippet defined in the Critical services or entities tab of the SLO has the following characteristics:

  • Define the data points.

    timeseries {total=sum(dt.service.request.count), failures=sum(dt.service.request.failure_count)},
  • Specify the entity scope.

    by: { dt.entity.service }
  • Display the information needed by using DQL filters.

    | fieldsAdd name = entityName(dt.entity.service)
    | filter in(name, "astroshop-checkoutservice", "astroshop-cartservice", "astroshop-paymentservice", "astroshop-shippingservice", "astroshop-currencyservice", "astroshop-frontend", "astroshop-recommendationservice")
  • Calculate the SLI.

    | fieldsAdd sli = (((total[] - failures[]) / total[]) * 100)
    | fields timeframe, interval, dt.entity.service, name, sli

Preview

Check in Preview the SLO and SLI statuses.

Screenshot of Dynatrace UI showing an SLI and SLO.

Upgrade in Dynatrace

To upgrade a Classic SLO to SLO

  1. Check your Classic SLO metric expression and identify the representation in Grail. There are different ways in which Dynatrace supports you in finding the related metrics in Grail.

    1. Check the comprehensive list of Upgrading Metrics.
    2. Use the Metric selector conversion guide.

    Based on the complexity of the metric expression, you might need to adapt the DQL converter manually.

  2. Upgrade the entity selector to the corresponding DQL statement. For more information, see DQL Best practices.

    The following table shows the typical entity selectors for Classic SLOs and their equivalent in DQL.

    Entity selector classic

    DQL representation

    type("SERVICE")

    by: {dt.entity.service}

    tag("myTag")

    | fieldsAdd tags=entityAttr(dt.entity.service, "tags")
    | filter in(tags, "myTag")

    entityId("SERVICE-XY")

    | filter in(dt.entity.service, "SERVICE-XY")

    entityName.contains/equals/in/startsWith("ENTITY-NAME")

    | fieldsAdd name = entityName(dt.entity.service)
    | filter in/contains/startsWith/endsWith(name, "ENTITY-NAME")

    mzId / mzName

    Use Segments.

    Segments aren’t related to permissions/access control.

    ToRelationship / fromRelationship

    See the relationship mapping table in Grail: Query monitored entities in Grail.

    If you use management zones for permissions and access control, see Grant access to entities with security context.

  3. Improve the SLI.

    Although you could upgrade most Classic SLOs, a one-to-one match in Grail, consider enhancing your SLI definition with options not available with classic metric expressions.

    Some of your options:

    • Consider business hours.
    • Add key requests/endpoints directly into the DQL query.
    • Make use of improved mathematical operations.
    • Consider changing the input data type; for example, use biz-events as leading indicators instead of backend service metrics as lagging indicators of business and end-user impact SLOs.
    • Add SLO tags for further filtering and grouping of your SLOs.
    • Use segments to adjust the entity scope dynamically to what’s relevant for you or your team Segments.

Upgrade via configuration-as-code

To efficiently manage and run SLOs at scale, use Dynatrace Configuration as Code.

The SLOs come with a dedicated SLO Service Public API supporting selected endpoints for managing and evaluating the latest SLOs.

To access the SLO Service Public API on your tenant

  1. Go to Dynatrace.
  2. In the platform search, type API. In the search results, see Support resources section and Dynatrace API below it.
  3. Select Dynatrace API to access the Dynatrace API documentation. A new page opens with the Dynatrace API definitions.
  4. In the upper right corner, go to Select a definition.
  5. From the drop-down list, choose the endpoint.

Dynatrace Configuration as Code via Terraform supports the new SLO API with version 1.78.0. The latest version of the Dynatrace Terraform provider can be found dynatrace-oss/dynatrace | Terraform Registry.

Additionally, Dynatrace Configuration as Code via Monaco, supports the new SLO API since v2.22.

What’s next?

While we're investigating an automated upgrade flow, the highly customized nature of SLOs means a manual review process delivers the best results. We recommend using this upgrade opportunity to reassess and improve your SLIs rather than just setting them up as one-to-one copies.

Contact your Dynatrace support team to guide you through optimizing your service-level objectives for maximum business impact.

Related tags
Software Delivery