dt-migration

Migrate Dynatrace classic and Gen2 entity-based DQL to Smartscape equivalents. Covers three scenarios. (1) mass data queries filtered by classic entity…

INSTALLATION
npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-migration
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$28

Decision:

  • Situations 1 or 2 — load references/mass-data-filtering-strategy.md and complete all steps including field discovery (Step 2) and equivalence verification (Step 4). Do not skip the fieldsSnapshot gates — they determine which approach is viable. Only fall back to the Migration Workflow below when the entity-type mapping or relationship traversal is needed to complete a Smartscape subquery.
  • Situation 3 — continue with the Migration Workflow and entity mapping table below.

Note: Situation 3 has a sub-case where classicEntitySelector is used to filter the entities returned by fetch dt.entity.*. This is rare and follows the same smartscapeNodes path — resolve the selector conditions using references/mass-data-filtering-strategy.md Step 1B, then apply them as node filters in smartscapeNodes.

Migration Workflow

Follow this order for Situation 3 (pure entity list queries) and for constructing Smartscape subqueries in Situations 1 and 2:

  • Identify the classic input pattern:
  • fetch dt.entity.*
  • classicEntitySelector(...)
  • relationship field access such as belongs_to[...], runs[...], instance_of[...]
  • signal or event queries using dt.entity.*
  • Identify the involved classic entity types.
  • Look up the Smartscape replacement in the core entity mapping table below.
  • Check which classic DQL constructs need explicit migration.
  • Rewrite the query using Smartscape primitives:
  • smartscapeNodes
  • smartscapeEdges
  • traverse
  • references
  • getNodeName()
  • getNodeField()
  • Check for special cases, unsupported entities, or ID assumptions.
  • Load the matching detailed references for the specific entity family or migration pattern.

For the full migration process and output expectations, load references/migration-workflow.md.

Core Entity Mapping Table

Use this compact table first for common migrations. For the full mapping set, load references/type-mappings.md.

Classic / Gen2 entity

Smartscape field

Smartscape node type

Notes

dt.entity.host

dt.smartscape.host

HOST

Standard host mapping

dt.entity.service

dt.smartscape.service

SERVICE

Standard service mapping

dt.entity.process_group_instance

dt.smartscape.process

PROCESS

Process instance maps directly

dt.entity.container_group_instance

dt.smartscape.container

CONTAINER

Container-group instance maps directly

dt.entity.kubernetes_cluster

dt.smartscape.k8s_cluster

K8S_CLUSTER

Kubernetes cluster

dt.entity.kubernetes_node

dt.smartscape.k8s_node

K8S_NODE

Kubernetes node

dt.entity.kubernetes_service

dt.smartscape.k8s_service

K8S_SERVICE

Kubernetes service

dt.entity.cloud_application

multiple workload fields

multiple K8S workload node types

Maps to multiple workload types; load the cloud-application guide

dt.entity.cloud_application_instance

dt.smartscape.k8s_pod

K8S_POD

Classic cloud app instance becomes pod

dt.entity.cloud_application_namespace

dt.smartscape.k8s_namespace

K8S_NAMESPACE

Namespace mapping

dt.entity.application

dt.smartscape.frontend

FRONTEND

Frontend application mapping

dt.entity.aws_lambda_function

dt.smartscape.aws.lambda_function

AWS_LAMBDA_FUNCTION

Cloud-function entity mapping

DQL Constructs to Inspect During Migration

These classic constructs usually need explicit rewriting:

Classic construct

Typical Smartscape replacement

Notes

entityName(x)

name or getNodeName(x)

Prefer name when querying nodes directly

entityAttr(x, "...")

direct node field or getNodeField(x, "...")

Prefer direct fields when available

classicEntitySelector(...)

node filters plus traverse

Start from the constrained side; for mass data queries see mass-data-filtering-strategy.md first

dt.entity.* in signal queries

dt.smartscape.*

Applies to by, filter, fieldsAdd, expand, and related clauses

belongs_to[...], runs[...], instance_of[...]

traverse or references[...]

references works only for static edges

classic entity ID filters

Smartscape id

Do not reuse classic IDs blindly

affected_entity_ids and affected_entity_types

smartscape.affected_entity.ids and smartscape.affected_entity.types

Use Smartscape event fields

For the detailed function-by-function guide, load references/dql-function-migration.md.

Special Cases

Do not translate these patterns literally:

  • Host group — no standalone Smartscape entity; use fields on HOST
  • Process group — no standalone Smartscape entity; use fields on PROCESS
  • Container group — no standalone Smartscape entity; preserve output shape with placeholders if needed
  • Classic IDs — classic entity IDs do not carry over to Smartscape automatically
  • Planned, missing, or not-planned mappings — check the full mapping table before assuming direct support

Load references/special-cases.md before migrating these patterns.

Entity-Focused Guides

When a migration centers on a specific entity family, load the matching detailed guide:

Each guide explains:

  • what the classic entity represented
  • what the Smartscape replacement is
  • which fields usually change
  • how relationships are migrated
  • common examples and pitfalls

References

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card