Dynatrace
Autonomous Enablement Ops Platform WWSE · Multi-Arch CI/CD
Worldwide Solution Engineering

Learn Dynatrace Master Complexity

“Real environments. Zero friction. Empowering everyone”powered by Orbital

The delivery backbone behind every WWSE enablement — provisioning live Kubernetes environments, running the CI fleet, and driving instructor-led workshops at scale.

Sign in with GitHub

Dashboard access is limited to members of the Dynatrace WWSE GitHub organisation. Registering a tenant needs no account.

Repository Arch ARM64 AMD64 Branch Actions
Loading repos…
Repository Branch Arch Action Worker Started Elapsed Actions
Loading running jobs…

Deferred · queued behind a held lock

Triple (repo : branch : arch) Depth

Queued · waiting for a worker

Repository Branch Arch Type By Queued Actions
Started Repository Branch Arch Duration Status Action Trigger Tenant User Daemon Worker Log Rerun
Loading history…

Recent runs

Started Command Duration Status Triggered by Log
Loading sync history…

Claude analyzes failed integration tests, determines whether the root cause is in the repo or the shared framework, then creates a fix branch and opens a PR.

agent ready

Running Agents

Repository Branch Type Started Elapsed Log
Started Repository Branch Type Status Duration Log
Loading…

Loading workers…

Queue Depths

Training tests (end-to-end learner flow via the Enablement App path)

Repository Arch Status History Duration Finished
Loading nightly results…

Framework Tests

Test the framework itself: unit tests, cluster engines, app exposure, Dynatrace components

Loading suites…

Recent Framework Runs

Timestamp Suite Arch Result Duration Log

A profile is a named set of training repos. Map profiles to domains and tenants in the Tenants tab.

Loading profiles…

New / edit profile

Every workshop across every tenant. Click a row to edit or administer it. Creating workshops stays in the enablement app, where a trainer picks a training from their own tenant's catalogue.

Loading workshops…

All workshops

WhenTitleTrainerTenant StateSeatsRegistrants

Account OAuth client bootstrap install only

Paste it once. Nothing is stored here. Orbital uses the OAuth client to deploy the app, writes it into your tenant's own settings, and then discards it — it is never written to Orbital's disk, database or logs. From that moment the app is self-sufficient: it mints its own per-learner tokens and updates itself, on any tenant in any account, with no credential of yours living on this server.

How to create the OAuth client

In your tenant's account: myaccount.dynatrace.com → Identity & access management → OAuth clients → New. Add every scope below — the install is refused if any is missing, because a partly-scoped client produces an app that installs and then fails at runtime.

All 15 required scopes — 13 environment, 2 account
ScopeWhy it is needed
Environment
app-engine:apps:installinstall and upgrade the app
app-engine:apps:runactivate the installed version
app-engine:apps:deleteuninstall — needed for the Undeploy button below
app-settings:objects:readcheck whether this tenant already has its Orbital token, so the install can tell you whether the manual step below is still outstanding. Optional — without it that check reports “could not verify” instead of a definite answer.
settings:objects:readread the outbound allowlist before changing it
settings:objects:writeenable training-telemetry forwarding, add the hosts below to the outbound allowlist if your tenant enforces one, and — the important one — store this client in your own tenant so the app can mint and self-update without Orbital keeping anything
environment-api:api-tokens:readlist and clean up the per-learner tokens the app minted
environment-api:api-tokens:writemint each learner's environment token directly (classic dt0c01) — the primary path, immune to per-user IAM differences
environment-api:activegate-tokens:writemint the ActiveGate token a Kubernetes lab environment needs
document:documents:readread training content stored on the tenant
document:documents:writeimport labs and images under one service identity — any admin can then manage them without creating duplicate copies
document:documents:deleteremove labs the tenant's profile no longer lists
document:documents:adminmanage content documents regardless of which admin imported them
Account
platform-token:tokens:writemint per-user platform tokens where classic token creation has been retired (rolled out per environment)
platform-token:tokens:managerevoke them when a session ends

Orbital checks the client against your tenant before installing anything and names any scope that is missing, so a wrong client costs you a message rather than a broken install. Want to verify first without installing anything? Run the tenant readiness check — same probes, nothing deployed. Note: scopes cannot be added to an existing client — if one is missing, create a new client.

After install, and the outbound allowlist

After install: nothing, if the client is complete

The install writes the client into your tenant's own Settings → Training Token Minting and the app takes it from there — per-learner tokens, and its own updates. The deploy result says stored when that worked; if it says anything else it also says which permission is missing, and you can paste the same client on that Settings page by hand.

Why the app must mint at all: creating classic API tokens is being retired per environment, so a tenant that mints them happily today can stop tomorrow while a sibling tenant in the same account carries on. A client with the two platform-token account permissions is what makes that transition a non-event.

Outbound allowlist (if your tenant enforces it)

These hosts are added to your app-function allowlist during install:

autonomous-enablements.whydevslovedynatrace.com
raw.githubusercontent.com, api.github.com
wwse.apps.dynatrace.com
Working… building & deploying the app. This can take a minute or two — please don't refresh or close this page.