> For the complete documentation index, see [llms.txt](https://docs.itoc360.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.itoc360.com/integrations/inbound-integrations/observability-and-apm/dynatrace-integration.md).

# Dynatrace Integration

This guide explains how to automatically send Dynatrace problems to ITOC360 using a webhook.

**1.** Create the workflow Head over to the Workflows menu on the left panel. The list will be empty if you haven't made one before. Just click the button at the top right to start a new one.

<figure><img src="/files/xz2bHC2OEuG3kvmMSSQy" alt=""><figcaption></figcaption></figure>

**2.** Set up the trigger We want this to run whenever an alert pops up, so grab the Davis problem trigger. In the configuration panel on the right, set it up like this:

* Event state: Keep it as `active or closed`&#x20;
* Event category: Add the ones you need. Usually, it's `Availability`, `Custom`, `Error`, `Monitoring unavailable`, `Resource`, `Slowdown`, and `Info`.

<figure><img src="/files/HZfQYanIE5XywArFQou4" alt=""><figcaption></figcaption></figure>

**3.** Configure the HTTP Request Now drop an HTTP Request action right below your trigger. This is what actually sends the payload out.

* Method: `POST`
* URL: [https://api.itoc360.app/functions/v1/events?token](https://api.itoc360.app/functions/v1/events?token=YOUR_TOKEN)\<x-itoc360-token>
* Payload: You can just copy and paste the JSON block below. It basically maps the Dynatrace variables to the format ITOC360 expects.

JSON

```
{
  "ProblemID": "{{ event().get('display_id', event().get('event.id', 'unknown')) }}",
  "ProblemTitle": "{{ event().get('title', event().get('event.name', 'No title')) }}",
  "State": "{{ event().get('event.status', 'ACTIVE') }}",
  "Severity": "{{ event().get('severity', 'CUSTOM') }}",
  "ImpactedEntity": "{{ event().get('affected_entity_types', '') }}",
  "ProblemURL": "{{ event().get('problemUrl', '') }}",
  "Timestamp": "{{ event().get('timestamp', '') }}"
}
```

<figure><img src="/files/ugkXzoYa6GxZCMLMukV9" alt=""><figcaption></figcaption></figure>

**4.** Allowlist the domain (Don't skip this)\
By default, Dynatrace blocks external outgoing requests. If this step is skipped, the webhook request may fail. Go to Settings > General > External requests. Open the Allowlist tab and click + New host pattern. Add the following host:

[api.itoc360.app](https://api.itoc360.app)

<figure><img src="/files/umHJVMulmz7RKmmovsbt" alt=""><figcaption></figcaption></figure>

**5.** Deploy Once everything looks good, click Deploy at the top right. It’ll prompt you to save, so just hit Save and deploy to push it live.

<figure><img src="/files/bSJayu3qPfFKHM9cmZHB" alt=""><figcaption></figcaption></figure>

**6.** Test the flow Let's make sure it actually fires. Hit the "Run" button on the canvas to trigger a test execution. Check the logs at the bottom of the Dynatrace screen—you should see a green Success status.

<figure><img src="/files/rKiQpHhvtI7FIZgaEPbV" alt=""><figcaption></figcaption></figure>

To support automatic resolution in ITOC360, create a second workflow or update the trigger configuration to also send resolved/closed problem events. ITOC360 maps resolved or closed states to RESOLVE events using the same ProblemID.

### Troubleshooting

If Dynatrace events do not appear in ITOC360:

* Make sure the ITOC360 webhook URL is copied correctly.
* Verify that the HTTP method is set to POST.
* Confirm that the payload is valid JSON.
* Make sure `api.itoc360.app` is added to the Dynatrace external request allowlist.
* Check the workflow execution logs in Dynatrace.
* Verify that the workflow trigger matches the selected event categories.
* Confirm that the ITOC360 source token is valid.

If incidents are not resolved automatically:

* Make sure resolved or closed Dynatrace problem events are sent to ITOC360.
* Confirm that the same `ProblemID` is included in both active and resolved events.
* ITOC360 uses `ProblemID` as the correlation key to match updates with the original incident.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.itoc360.com/integrations/inbound-integrations/observability-and-apm/dynatrace-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
