Grafana / Editorial solution guide

A copied dashboard uses the wrong source or loses panels

Trace UID mapping, plugin dependencies, managed configuration, and edition-specific permissions before substituting defaults or editing a provisioned copy.

About 3 min readContent reviewed

Read-only knowledge base ยท No public comments

Recognize the symptoms

After copying a dashboard, panels are empty, use another environment, or report missing visualizations. An edit can later disappear after provisioning runs. A familiar title and valid JSON may make the migration look successful even though source identity, plugin, or ownership differs.

Understand the likely causes

  • The destination may have unresolved or conflicting UIDs, different plugins or versions, incompatible stored options, missing variable values, another provisioning source of truth, or different resource and data-source access. Dashboard visibility does not establish backend query isolation. Replacing every unresolved source with a default can produce convincing but unrelated data.

Freeze the source and destination contracts

Record dashboard UID, source configuration revision, folder or organization scope, Grafana edition and version, plugin IDs and versions, source UIDs, variables, time settings, and management mechanism. Use only safe synthetic or approved minimized evidence. Do not copy credentials or live source addresses into a public migration record. Confirm whether the intended action is create or update and who owns the destination. This guide performs no import, provisioning, account inspection, plugin installation, backend query, or configuration change.

Check every reference before choosing a replacement

The offline JSON fixture compares two teaching source references with a declared available inventory and reports the unresolved one. It cannot prove that the available UID points to the correct environment or has correct authorization. Check those meanings separately through the actual owner. A source name can be changed without preserving intent, and the same UID in another scope can mean a different resource. Review nested panels, variables, repeated views, links, and alert references rather than only the most visible panel.

python Offline source-reference inventory check
import json
record = json.loads('{"source_uids":["transit-lab-prom","transit-lab-logs"]}')
available = {"transit-lab-prom"}
unresolved = sorted(set(record["source_uids"]) - available)
print("unresolved", unresolved)
Expected output
unresolved ['transit-lab-logs']

source_uids is an editorial record field. The fixed inventory is an assumption and the script checks no Grafana resource, environment, credential, or API.

Review plugins and managed-state ownership

A panel plugin must exist with compatible behavior, not merely a matching-looking ID. A data-source integration also needs the correct query model and backend path. Declared version ranges and signatures do not replace representative feature evidence. File-provisioned dashboards can be overwritten by the authoritative configuration even after an allowed UI save, depending on settings. Review the actual provisioning lifecycle before editing a destination. Cloud and Enterprise capabilities may differ from the original OSS or self-managed environment; do not assume every setting or license transfers.

Make the migration explicit and scoped

Choose reviewed source mappings, supported plugin versions or deliberate replacements, and the correct authoritative configuration. Preserve the measurement, units, time, variables, permissions, and important failure views. If a visualization changes, explain which information differs rather than calling any populated panel equivalent. Keep rollback artifacts and version assumptions, recognizing that plugin or application migrations may affect stored state. This guide changes no UID, source, plugin, role, folder, provisioning file, or dashboard and does not test any actual import behavior.

Verify the fix

In a separately authorized isolated integration, verify exact destination resources, plugin behavior, representative queries, field contracts, time scope, effective access, and persistence under the chosen management mechanism. Test missing and conflicting references and known values. State that this guide executed only local JSON set comparison. A parsing pass or familiar screenshot cannot establish migration equivalence or a complete rollback path.

Keep it from recurring

  • Keep a versioned dependency and source-mapping inventory with the dashboard contract. Review provisioning and UI ownership, edition requirements, plugin changes, and access effects together. Preserve semantic regression fixtures for units, reducers, variables, links, and unknown states so future moves can be reviewed through expected behavior rather than whether every panel merely displays something.

Official references