Try it free

Identify and resolve overlapping Azure subscription monitoring

  • Latest Dynatrace
  • How-to guide
  • Published Sep 08, 2026

An Azure subscription should be monitored by exactly one Azure connection. When two or more connections monitor the same subscription, each one polls and ingests it independently—so you pay for the same monitoring more than once, and the duplicated data can be unreliable.

This page explains how overlap happens, how to find it, and how to resolve it.

How overlap happens

Each Azure connection monitors every subscription that its service principal can read. Because every connection has its own dedicated service principal, overlap occurs when two different service principals are both granted access to the same subscription.

A subscription belongs to only one management group, but it inherits role assignments from every management group above it. Overlap therefore usually happens when connection scopes nest, for example:

  • One connection is assigned at a parent management group, and another at a child management group beneath it.
  • One connection is assigned at a management group, and another directly on a subscription beneath it.
  • One connection is assigned at the tenant root group, which overlaps with every other connection in the tenant.

Overlap affects you in two ways:

Higher costs, in two places

Dynatrace ingests the same telemetry once per connection, which inflates your Dynatrace ingest costs. On the Azure side, Azure Monitor metric queries and log export and query operations are billed by volume, so each additional connection multiplies those charges too.

Less reliable data and monitoring

Duplicate ingestion can produce double-counted or conflicting data. Duplicate polling also consumes your Azure API rate limits faster, increasing the risk of throttling that delays or interrupts monitoring.

Find overlapping subscriptions

Dynatrace detects overlap automatically. When any subscription is shared, the Azure connections page in Settings Settings > Cloud and virtualization > Azure displays the warning "Some connections have subscriptions which are also monitored in others. This may create unnecessary costs and data errors."

Select View subscriptions in the warning to list every shared subscription together with the connections that monitor it. To open a connection directly, select its name in the list. Overlap is independent of connection health, so the connections listed can be Healthy or Unhealthy.

If you're already working in a single connection, a warning icon on its Subscriptions tab and a banner at the top of the connection signal overlap. On the Subscriptions tab, a shared subscription has the status Monitored in multiple connections. Select the status to see how many other connections monitor it.

Decide which connection keeps each subscription

For each shared subscription, choose the one connection that should keep monitoring it. Each connection has its own monitoring configuration—enabled services, monitored regions, filters, and tag enrichment—so the connection you keep determines how the subscription is monitored from then on.

  • Keep the subscription on the connection that was set up for it deliberately. This is usually the connection with the narrower scope, such as one assigned at a child management group or on the subscription itself.
  • Compare the monitoring settings of the connections involved, and keep the subscription on the connection whose settings it needs.
  • If one connection's entire scope is covered by another, you can either narrow the broader connection, or remove the narrower connection if the broader connection's settings suit all of its subscriptions.

Choose how to resolve the overlap

After you decide, remove each shared subscription from every connection except the one that keeps it. You can make that change in Azure or in Dynatrace.

ApproachChange made inUse when

Change the role assignments Recommended

Azure

The connection shouldn't have access to the subscription at all. This fixes the overlap at its source.

Remove a redundant connection

Dynatrace

One connection's entire scope is covered by another connection whose settings suit all of its subscriptions.

Exclude the subscription with a filter

Dynatrace

The service principal must keep its Azure access, or you can't change role assignments yourself. Because the access remains, the overlap returns if the filter is removed. Each connection can exclude up to 10 subscriptions.

Resolve the overlap in Azure

Changing the service principal's role assignments stops the connection from discovering the subscription at all. Without access, Dynatrace can no longer poll the subscription's metrics, topology, or logs through that connection. How you change them depends on where the access comes from: a role assignment made directly on the subscription, or one inherited from a management group above it. Start by finding where the access comes from—the result tells you which one of the sections that follow applies.

Before you start, open the connection that should no longer monitor the subscription in Dynatrace, and note these properties on its Overview tab:

  • Application (client) ID: identifies the connection's service principal.
  • Principal (object) ID: the ID that Azure role assignments are made to. The commands on this page use it as <OBJECT_ID>.

If Principal (object) ID shows Not Provided, retrieve it from the Application (client) ID with the Azure CLI:

az ad sp show --id "<APPLICATION_ID>" --query id --output tsv

In the Azure portal, you can search for the service principal by its display name or object ID. If you don't know either, search for the Application (client) ID in Microsoft Entra ID > App registrations.

To change role assignments, you need the Owner or User Access Administrator role at the scope where the assignment was made.

Find where the access comes from

Onboarding assigns the Monitoring Reader role, but any role that lets the service principal read the subscription gives the connection access—for example, Reader, Contributor, or Owner. Check every role assigned to the service principal, not only Monitoring Reader.

  1. In the Azure portal, open the shared subscription and go to Access control (IAM) > Role assignments.
  2. Search for the connection's service principal by its display name or object ID.
  3. For each role assignment listed for it, check the Scope column:
    • This resource means the role is assigned directly on the subscription.
    • A management group name means the assignment is inherited from that management group.
  4. If an assignment is inherited, see where that management group sits in your hierarchy: search for and open Management groups, and select a management group's name to browse its child management groups and subscriptions.
  1. List every role the connection's service principal holds for the subscription, and the scope it's assigned at:

    az role assignment list --assignee-object-id "<OBJECT_ID>" --scope "/subscriptions/<SUBSCRIPTION_ID>" --include-inherited --query "[].{role:roleDefinitionName, scope:scope}" --output table
    • A scope of /subscriptions/<SUBSCRIPTION_ID> means the role is assigned directly on the subscription.
    • A scope of /providers/Microsoft.Management/managementGroups/<MANAGEMENT_GROUP_ID> means the assignment is inherited from that management group. The last segment is the management group ID.
  2. If an assignment is inherited, show the management group's full hierarchy of child management groups and subscriptions:

    az account management-group show --name "<MANAGEMENT_GROUP_ID>" --expand --recurse

Replace <OBJECT_ID> with the service principal's Principal (object) ID and <SUBSCRIPTION_ID> with the shared subscription's ID.

What you find determines the next step:

  • If the access is inherited from a management group, change the management group assignment.
  • If the role is assigned directly on the subscription, remove the role from the subscription.

Note the name of each role you find. The commands in the following sections use it as <ROLE_NAME>.

If the service principal holds more than one role, or holds a role at more than one level, each assignment grants access on its own, so address every one. If a management group ID matches your Microsoft Entra tenant ID, the assignment is at the tenant root group and covers every subscription in the tenant.

If you find no role assignment for the service principal, it may have access through membership of a Microsoft Entra group. Group assignments are listed under the group's name rather than the service principal's, so check the role assignments of any group the service principal belongs to.

Change a management group assignment

A connection deployed at Management Group scope inherits access to every subscription beneath that management group. Azure doesn't let you remove an inherited role assignment at the subscription level, only at the management group where it was created, so you need to change how the access is granted instead.

Use the hierarchy you found to choose between the two options below, which are listed in order of preference. If neither fits, assign the role per subscription instead. In every option, grant the new access before you remove the old assignment, so the subscriptions that the connection should keep monitoring aren't interrupted.

Assign the role at a lower management group Recommended

If a management group lower in your hierarchy already contains only the subscriptions this connection should monitor, move the connection's scope down to it. Assign the Monitoring Reader role to the connection's service principal at the lower management group, then remove its assignment at the broader management group. Nothing in your hierarchy changes, and new subscriptions created beneath the lower management group are still picked up automatically.

Make sure no other connection is assigned anywhere within the lower management group's subtree.

  1. In the Azure portal, search for and open Management groups, then open the lower management group.
  2. Go to Access control (IAM) > Add > Add role assignment.
  3. Select the Monitoring Reader role, and select Next.
  4. Select Select members, search for the service principal by its display name or object ID, select it, and select Review + assign.
  5. Open the broader management group that the access is inherited from, and go to Access control (IAM) > Role assignments.
  6. Select the service principal's role assignment, and select Remove.
  1. Assign the Monitoring Reader role at the lower management group:

    az role assignment create --assignee-object-id "<OBJECT_ID>" --assignee-principal-type ServicePrincipal --role "Monitoring Reader" --scope "/providers/Microsoft.Management/managementGroups/<LOWER_MANAGEMENT_GROUP_ID>"
  2. Remove the assignment at the broader management group:

    az role assignment delete --assignee-object-id "<OBJECT_ID>" --role "<ROLE_NAME>" --scope "/providers/Microsoft.Management/managementGroups/<MANAGEMENT_GROUP_ID>"

Replace <LOWER_MANAGEMENT_GROUP_ID> with the ID of the lower management group, <MANAGEMENT_GROUP_ID> with the ID of the management group that the access is inherited from, and <ROLE_NAME> with the role assigned there. To list your management groups and their IDs, run az account management-group list --output table.

Restructure the management group hierarchy

If no existing management group matches the boundary you need, change your management group hierarchy so that one does. Typically, that means creating a management group for the subscriptions this connection should monitor, and moving those subscriptions beneath it.

When the restructured management group, including everything beneath it, holds only the subscriptions this connection should monitor, and no other connection is assigned anywhere within that subtree, assign the role there and remove the broader assignment, as described in Assign the role at a lower management group. New subscriptions created beneath it are still picked up automatically.

Moving a subscription changes every policy and role assignment it inherits, not only the access Dynatrace uses. Plan the change with whoever owns your management group hierarchy. For instructions, see Move management groups and subscriptions in the Microsoft documentation.

Change subscription-level assignments

Role assignments made directly on a subscription give you precise control over which subscriptions a connection monitors. Use this section to remove the role from a shared subscription, or to assign the role per subscription in place of an inherited management group assignment when no management group fits.

Remove the role from the subscription

If the role is assigned directly on the shared subscription, remove the role from that subscription.

  1. In the Azure portal, open the subscription and go to Access control (IAM) > Role assignments.
  2. Select the service principal's role assignment, select Remove, and confirm.
az role assignment delete --assignee-object-id "<OBJECT_ID>" --role "<ROLE_NAME>" --scope "/subscriptions/<SUBSCRIPTION_ID>"

Replace <ROLE_NAME> with the role you found, typically Monitoring Reader.

Assign the role per subscription

If the connection's access is inherited and no suitable management group boundary exists, replace the management group assignment with direct assignments on each subscription the connection should monitor. This gives precise control, but new subscriptions are no longer picked up automatically—you must assign the role on each one yourself.

  1. For each subscription the connection should monitor:
    1. In the Azure portal, open the subscription and go to Access control (IAM) > Add > Add role assignment.
    2. Select the Monitoring Reader role, and select Next.
    3. Select Select members, search for the service principal by its display name or object ID, select it, and select Review + assign.
  2. Open the management group that the access is inherited from, and go to Access control (IAM) > Role assignments.
  3. Select the service principal's role assignment, and select Remove.
  1. Assign the Monitoring Reader role on each subscription the connection should monitor:

    az role assignment create --assignee-object-id "<OBJECT_ID>" --assignee-principal-type ServicePrincipal --role "Monitoring Reader" --scope "/subscriptions/<SUBSCRIPTION_ID>"
  2. Remove the management group assignment:

    az role assignment delete --assignee-object-id "<OBJECT_ID>" --role "<ROLE_NAME>" --scope "/providers/Microsoft.Management/managementGroups/<MANAGEMENT_GROUP_ID>"

Replace <MANAGEMENT_GROUP_ID> with the ID of the management group that the access is inherited from, and <ROLE_NAME> with the role assigned there.

If none of these options is practical, exclude the subscription with a filter instead.

Resolve the overlap in Dynatrace

You can also resolve overlap without changing anything in Azure, either by removing a connection that's entirely redundant, or by filtering the shared subscriptions out of a connection.

Remove a redundant connection

If one connection's entire scope is covered by another, and the other connection's monitoring settings suit all of its subscriptions, the narrower connection is redundant. Delete it, or disable it to suspend its poll-based ingest while keeping its configuration.

Deleting a connection in Dynatrace doesn't remove its service principal, role assignments, or other Azure resources. For the full cleanup, see Delete a connection.

Exclude the subscription with a filter

A subscription filter tells a connection to ignore specific subscriptions without changing anything in Azure. Apply the filter only to the connections that should stop monitoring the subscription; the connection you keep continues to monitor it as before.

  1. In Settings Settings > Cloud and virtualization > Azure, open the connection and select Manage.
  2. Under Subscription filters, turn on the toggle and select Exclude filters.
  3. Enter each subscription ID to exclude, pressing Tab or Enter after each one, and then select Save.
Filter limit

Each connection supports up to 10 subscription IDs in its include or exclude filter. If a connection overlaps on more than 10 subscriptions, change the role assignments instead.

To apply filters to many connections at once, set the subscriptionFiltering and subscriptionFilteringMode fields of each monitoring configuration through the API, or apply a YAML manifest with dtctl apply through the CLI. For all filter options, see Subscription filters.

Verify the fix

Overlap detection is based on your Azure topology, so any fix on this page—changing role assignments, removing or disabling a connection, or applying a subscription filter—is reflected only after the next full topology scan. A full scan runs every hour; for details, see Topology data freshness.

After the next full scan, refresh the Azure connections page. Once no subscription is shared:

  • The warning on the Azure connections page disappears.
  • On each affected connection, the warning icon on the Subscriptions tab and the banner at the top of the connection disappear.
  • The subscription's status on the connection that keeps it returns to Monitored.

If the warning is still shown after a full scan has run, something still grants another connection access to the subscription. Find where the access comes from again, and check for a second role, an assignment at another level, or a third connection that monitors the same subscription.

Prevent overlap

  • Plan connection scopes so that each subscription falls under exactly one connection. Where possible, scope each connection to the lowest Management Group that matches its intended monitoring boundary, so new subscriptions are included automatically without spilling into another connection's scope. Where no suitable management group exists, assign the role per subscription.
  • Check existing scopes before onboarding a new connection, especially one deployed at Management Group scope, which can silently include subscriptions that are already monitored.
  • Don't monitor a subscription with both the classic Azure integration and an Azure connection. This duplicates monitoring in the same way.

For the full set of recommendations and limitations, see Create your first Azure connection.

Related tags
Infrastructure Observability