Many Dynatrace apps — such as Infrastructure & Operations, Kubernetes, and Services — present your monitored entities through unified analysis (UA). As an extension developer you can plug your own content into these experiences, or define entirely new ones, by shipping documents: JSON configurations that the app picks up and renders at runtime.
Document-based extension UA pages are rolling out to apps gradually. The first app to support it is the Infrastructure & Operations app (dynatrace.infraops) from version 1.25.0 — target your documents at it to have your content picked up today. Support in further apps will follow.
Both experiences are assembled from elements — cards (tables, charts, properties, messages…), layouts, and filters. A document describes which elements appear and how they're arranged.
A complete entity-type experience is usually a pair of documents: an InvExTypeDefinition for the browsable list, and an EntityDetailsDefinition for the per-entity details opened from it. They are separate documents, wired together by node type.
Every document declares a type that says what it does and where it applies:
| Type | What it does |
|---|---|
| Defines the full Entity Details page (header, tabs, cards) for an entity type. |
| Adds a tab or a card into an Entity Details page the app already provides. |
| Adds a new type (or subtype) to Inventory Explorer. |
| Adds content into an Inventory Explorer type the app already provides. |
Two verbs to keep in mind:
A document is fetched at runtime based on its target — the app and entity type it applies to — so your content shows up wherever it's relevant without any coordination with the app.
Documents can be delivered with extensions by declaring them in the documents.screens section of the extension.yaml file. For example:
name: custom:my-extensionversion: 1.0.0minDynatraceVersion: "1.343"author:name: Joe Doedocuments:screens:- path: screens/my-ua-screen.screen.json
Documents declared in this way are uploaded to Dynatrace when the extension is installed, and cleaned-up when the extension is removed.
This injection adds a card to the "overview" tab of the Entity Details page for hosts:
{"version": "1.3.0","type": "EntityDetailsInjection","target": {"app": "dynatrace.infraops","nodeType": "dt.entity.host","tabId": "overview"},"content": {"type": "message","id": "my-welcome-card","cardTitle": "Welcome","content": "This card was injected from a document."}}
Save this document as a JSON file screens/my-injection.screen.json and ship it with your extension by declaring it in your extension.yaml file:
name: custom:my-extensionversion: 1.0.0minDynatraceVersion: "1.343"author:name: Joe Doedocuments:screens:- path: screens/my-injection.screen.json
target decides which app, entity type, or Inventory Explorer instance it applies to.content: layouts, cards, and built-in references.
ExtensionsInfrastructure Observability