> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dynatrace

> Set up Dynatrace as an alert source in Rootly to route problem notifications, configure urgency rules, page on-call teams, and auto-resolve alerts on recovery.

## Setup instructions

<Steps>
  <Step title="Create an Alert Source in Rootly">
    Begin by creating a Dynatrace alert source in Rootly. Navigate to **Settings** → **Alert Sources** and click **Add Alert Source**. Select **Dynatrace**.

    You may optionally configure default alert urgency, owner groups, alert fields, or deduplication settings. Once the alert source is saved, copy the webhook URL provided by Rootly.

    ```txt theme={null}
    https://webhooks.rootly.com/webhooks/incoming/dynatrace_webhooks?secret=YOUR_SECRET_KEY
    ```

    <Callout icon="key" color="#DBEAFE">
      The webhook secret authenticates incoming requests from Dynatrace. Treat this value as sensitive and rotate it if it is exposed.
    </Callout>
  </Step>

  <Step title="Create Dynatrace workflow">
    <Callout icon="warning" color="#DBEAFE">
      This step is for **Dynatrace Generation 3**.

      If using **Dynatrace Generation 2**, follow Dynatrace's [instructions](https://docs.dynatrace.com/docs/analyze-explore-automate/notifications-and-alerting/problem-notifications/webhook-integration) to send notifications via webhook, using the webhook URL provided by Rootly.
    </Callout>

    Create a new workflow in your Dynatrace environment.

    Select a **Problem** trigger. Choose "active or closed" for the "Event state" field. Configure any additional categories or tags.

    Add an **HTTP Request** task. Choose "POST" method, use the webhook URL provided in the Rootly alert source connection instructions. Copy and paste the following request payload:

    ```text theme={null}
    {
      "PID": "{{ event()['event.id'] }}",
      "Problem URL": "{{ environment()['url'] }}/ui/apps/dynatrace.davis.problems/problem/{{ event()['event.id'] }}",
      "ProblemTitle": {{ event()['event.name'] | to_json }},
      "ProblemDetailsHTML": {{ event()['event.description'] | to_json }},
      "State": "{{ event()['event.status'] }}"
    }
    ```

    Save the workflow.
  </Step>

  <Step title="Send a test alert">
    Run the workflow using an active problem event. You should see the alert in Rootly. When the problem is closed, the alert should auto-resolve in Rootly.
  </Step>
</Steps>

## Advanced Configuration

### Alert Fields

Alert fields allow you to transform the incoming Dynatrace request into alert fields using Liquid templates. These fields can be used to customize the alert title, description, and source link, as well as create additional custom fields for routing, urgency, filtering, and reporting.

Because the raw Dynatrace requests is stored in alert data in Rootly, you can inspect a sample alert from the source and use the alert payload viewer to copy Liquid variables and JSONPath selectors for field configuration.

### Alert Urgency

Dynatrace alerts can be assigned urgency dynamically using Rootly alert urgency rules. Rules may be based on raw payload JSONPath values or on alert field values generated from the request.

If no rule matches, Rootly applies the source's fallback alert urgency.

### Deduplication and Resolution

Rootly uses `external_id` to match trigger and resolve events for the same Dynatrace problem. If you want to suppress repeated notifications that represent the same incoming event, you can also configure a unique identifier in the **Events** tab and enable duplicate alert suppression.

This deduplication setting is separate from the required `external_id` field:

* `external_id` matches triggered and resolved events for the same alert.
* the **Events** tab unique identifier can suppress repeated create events before additional alerts are created.

### Notification Targets

In addition to default routing rules, Dynatrace alerts can be sent directly to specific notification targets using a specialized webhook endpoint.

```txt theme={null}
https://webhooks.rootly.com/webhooks/incoming/dynatrace_webhooks/notify/{notification_target_type}/{notification_target_id}?secret=YOUR_SECRET_KEY
```

The notification target type must be one of `Service`, `EscalationPolicy`, or `Group`. The notification target ID must be replaced with the UUID of the corresponding resource.
