Try it free

Upgrade maintenance windows

  • Latest Dynatrace
  • How-to guide
  • 7-min read

What changes

Classic maintenance windows are not migrated automatically. Every Classic maintenance window that affects a Synthetic monitor or a Synthetic location must be recreated in latest Dynatrace.

Maintenance windows in latest Dynatrace work as follows:

  • Synthetic monitors keep running. A maintenance window doesn't yet pause monitor execution. If monitors must not run against a system under maintenance, disable them for the duration of the window.
  • Problems are still detected and alerted on. Dynatrace always detects problems, also during a maintenance window. To stop notifications, filter maintenance periods in the problem trigger of your notification workflows.
  • Data is marked, not removed. A maintenance window marks matching data with maintenance.is_under_maintenance = true. Use it to exclude maintenance periods from availability calculations and to filter maintenance data in DQL queries, for example in dashboards, notebooks, or SLOs.

For the general procedure that applies to all maintenance windows, see Upgrade from Classic maintenance windows to Latest maintenance windows. This page covers the Synthetic-specific steps.

Step 1: Identify affected maintenance windows

List all Classic maintenance windows:

Go to Settings Classic > Maintenance windows > Monitoring, alerting and availability.

List Classic windows that apply to the whole environment, are scoped to Synthetic entities, or paused monitor execution:

dtctl get settings --schema builtin:alerting.maintenance-window -o json --plain \
| jq '.[] | select(
.value.generalProperties.disableSyntheticMonitorExecution == true
or (.value.filters | length) == 0
or any(.value.filters[]?;
(.entityType // "" | IN("SYNTHETIC_TEST", "HTTP_CHECK", "MULTIPROTOCOL_MONITOR", "SYNTHETIC_LOCATION"))
or (.entityId // "" | test("^(SYNTHETIC_TEST|HTTP_CHECK|MULTIPROTOCOL_MONITOR|SYNTHETIC_LOCATION)-")))
) | {objectId, name: .value.generalProperties.name, filters: .value.filters}'

This query doesn't return windows scoped only by tags, management zones, or other entities. Check those as described below.

A window affects Synthetic monitors if any of the following applies:

  • Filters contains no filter, so the window applies to the whole environment.
  • A filter has Entity type set to Synthetic monitor, HTTP monitor, Network availability monitor, or Synthetic Location, or has Entity set to one of these monitors or locations.
  • Disable synthetic monitor execution is turned on, which stopped monitors within the scope of the window from running in Classic.
  • A filter uses Entity tags or Management zones without an Entity type. Check whether the tags or management zones include Synthetic monitors.
  • A filter is scoped to applications or services that your Synthetic monitors test, and your Synthetic dashboards, SLOs, or notification workflows rely on its maintenance state.
  • It has no filters, so it applies to the whole environment.
  • Its filters contain an entityType of SYNTHETIC_TEST, HTTP_CHECK, MULTIPROTOCOL_MONITOR, or SYNTHETIC_LOCATION, or an entityId with one of these prefixes.
  • It has disableSyntheticMonitorExecution set to true, which paused monitor execution in Classic.
  • It is scoped by entityTags or managementZones without an explicit entityType. Check whether the tags or management zones include Synthetic monitors.
  • It is scoped to applications or services that your Synthetic monitors test, and your Synthetic dashboards, SLOs, or notification workflows rely on its maintenance state.

You don't need to recreate expired one-time windows or recurring windows with no future occurrence.

Step 2: Translate the scope filter

Maintenance windows in latest Dynatrace use a single filter field with a DQL matcher expression. Translate Classic Synthetic entity types as follows:

Classic entityTypeReplacement filter expression

SYNTHETIC_TEST (browser monitor, all)

isNotNull(dt.smartscape.browser_monitor)

SYNTHETIC_TEST (specific monitor)

matchesValue(dt.smartscape.browser_monitor, "<SMARTSCAPE-ID>")

HTTP_CHECK (all)

isNotNull(dt.smartscape.http_monitor)

HTTP_CHECK (specific)

matchesValue(dt.smartscape.http_monitor, "<SMARTSCAPE-ID>")

SYNTHETIC_LOCATION (all locations)

isNotNull(dt.smartscape.synthetic_location)

SYNTHETIC_LOCATION (specific location)

matchesValue(dt.smartscape.synthetic_location, "<SMARTSCAPE-ID>")

MULTIPROTOCOL_MONITOR (all)

isNotNull(dt.smartscape.network_availability_monitor)

MULTIPROTOCOL_MONITOR (specific)

matchesValue(dt.smartscape.network_availability_monitor, "<SMARTSCAPE-ID>")

Tag-scoped

matchesValue(primary_tags.<key>, "<value>"). Apply the primary tag to the monitor first.

Classic entityTags use AND semantics: all listed tags must match. Translate multiple tags as multiple matchesValue conditions combined with AND. Classic management zones map to segments in latest Dynatrace; resolve the segment first and use the corresponding filter.

For windows scoped to a specific entity ID, resolve the Classic ID to its Smartscape ID before writing the replacement filter:

smartscapeNodes "*"
| filter in(id_classic, {"SYNTHETIC_TEST-7EEF2AA5318E2F39"})
| fields id, id_classic, name, type

The filter field accepts a maximum of 500 characters. A condition for a single monitor is about 80 characters long, so a filter that lists monitors one by one fits only about six of them.

If a window covers more monitors than fit in the filter, use one of these options:

  • Apply a primary tag to the monitors and filter by the tag, for example matchesValue(primary_tags.<key>, "<value>").
  • Split the monitors into several windows with the same schedule.

Step 3: Create replacement windows

Create each window in the latest Dynatrace format. Don't adapt the Classic payload.

  1. Go to Settings Settings > General > Environment management > Maintenance windows.
  2. Select New maintenance window and configure the name, schedule, and scope filter.
  3. Select Preview to confirm that the scope filter matches the intended monitors.
  4. Save the window.

To create windows with the Settings API instead, see Create a maintenance window via API.

Step 4: Configure handling during maintenance

Decide for each affected monitor how availability, alerts, and monitor execution should be handled during maintenance.

Availability: to exclude maintenance periods from availability, go to Settings Settings > Analyze and alert > Synthetic Monitoring and turn on Exclude periods with maintenance windows from availability calculation. You can also filter on maintenance.is_under_maintenance in your DQL queries. See Exclude maintenance period executions from metrics calculations.

Alerts: to stop notifications during maintenance, add the following condition to the problem trigger of every notification workflow that should not fire during maintenance:

maintenance.is_under_maintenance != true

Classic problem notifications can't use this condition. Migrate them to workflows first. See Upgrade from Classic problem notification to simple workflows.

Monitor execution: if monitors must not run against a system under maintenance, create a separate workflow in Workflows Workflows that disables the affected monitors when the maintenance period starts and re-enables them when it ends.

Verify the upgrade

For every replacement window, confirm that:

  • The window is active and its scope filter matches the intended monitors. Use Preview in Settings Settings > General > Environment management > Maintenance windows, or run:

    fetch dt.maintenance.windows
  • Executions during the window are marked with maintenance.is_under_maintenance = true.

  • Availability, notifications, and monitor execution behave as configured in step 4.

After the replacement windows work as expected, disable the Classic windows. Don't delete them, so you can still refer to the original configuration. Keep a Classic window enabled while any Classic problem notification still depends on it.

Related topics

  • Upgrade Synthetic Monitoring
  • Upgrade from Classic maintenance windows to Latest maintenance windows
  • Create a maintenance window
Related tags
Digital Experience