The Observability team is upgrading the workload version of Grafana on track 2 (going stable in November), switching from Grafana 9 to Grafana 12.
A big jump in major versions like this requires some thorough investigations in what breaking changes we might encounter: I decided to make an easily-digestible list of what we can expect to encounter in this transition.
I marked each item with an emoji, with the following meaning:
this breaking change doesn’t affect us
this breaking change might have minor effects in some cases
this breaking change will be published in the migration guide
If you’re required to take any steps, you’ll find them in a migration guide we’ll publish when track 2 hits stable.
Enjoy!
Grafana 10.0 
Angular is deprecated and turned off by default for new Grafana Cloud stacks
Dashboards and datasources using Angular plugins won’t work: after looking at the full list, it doesn’t seem like we’re affected. Some panels in some dashboards in some charms might stop working.
If a plugin relies on AngularJS, a warning icon and message will be displayed in the plugins catalog in Grafana and any dashboard panel where it’s used; if this happens somewhere, it’ll be easy to figure out where.
Grafana legacy alerting is deprecated and no longer accepts internal or external contributions
This is a “breaking change” only as far as development goes; we’re already using the new Grafana alerting, so we’re not affected by it.
The experimental “dashboard previews” feature is removed
The “dashboard previews” feature has been removed. Since Grafana 9, this was behind a toggle. We’re not using that feature flag.
RBAC is on by default in Grafana Enterprise and cannot be disabled
Starting from Grafana 9, RBAC is enabled by default. We’re using it, so nothing will change for us.
Usernames are now case-insensitive by default
You are affected if: You run Grafana with a Postgres or sqlite database, you import users from different SSO identity providers (like Google and Active Directory), and users who signed in from different providers were previously created twice because of case differences (for example “Myra@Grafana.com” vs “myra@grafana.com.”
This does not apply to us.
Grafana OAuth integrations do not work anymore with email lookups
You are affected if:
- You have configured Grafana to use multiple identity providers, and you have users with the same email address in multiple identity providers.
- You have configured Grafana to use Generic OAuth with an identity provider that does not support a unique ID field.
This does not apply to us.
The “Alias” field in the CloudWatch data source is removed
We don’t use or support the CloudWatch data source in the charm.
Athena data source plugin must be updated to version >=2.9.3
We don’t install this non-default source plugin.
Redshift data source plugin must be updated to version >=1.8.3
We don’t install this non-default source plugin.
DoiT International BigQuery plugin no longer supported
We don’t install this non-default source plugin.
Grafana 10.3 
Extract fields transformation are renamed on collision
If a dashboard is using the “extract fields” transformation, and one of the extracted names collides with an already-existing field, the extracted field will be renamed - which might produce inconsistencies in a Table visualization.
This doesn’t really break Grafana or most dashboard, so it doesn’t affect us much. Some panels in some dashboards in some charms might stop working.
Data source permissions
The following endpoints related to datasource permissions have been removed:
GET /datasources/:datasourceId/permissions
POST /api/datasources/:datasourceId/permissions
DELETE /datasources/:datasourceId/permissions
POST /datasources/:datasourceId/enable-permissions
POST /datasources/:datasourceId/disable-permissions
We don’t use any of those in our charm.
Grafana 11.0 
AngularJS support is turned off by default
Extension of Angular deprecation.
Some panels in some dashboards in some charms might stop working.
If a plugin relies on AngularJS, a warning icon and message will be displayed in the plugins catalog in Grafana and any dashboard panel where it’s used; if this happens somewhere, it’ll be easy to figure out where.
Grafana Enterprise: Anonymous devices are billed as users
Billing changes for Grafana Enterprise: it doesn’t affect the charm.
Legacy alerting is entirely removed
Extension of Grafana legacy alerting being deprecated. We’re already not using the legacy system.
Deprecated endpoints and fields in Reporting removed
In Grafana v11, support for deprecated endpoints and fields in Reporting related to the old scheduling format, email, and dashboard is fully removed. This prevents any calls to deprecated endpoints and passing in values to deprecated fields. This feature only affects Cloud and Enterprise customers who use the API to generate reports.
It doesn’t affect us.
Change custom branding public dashboard footer behavior
We don’t allow configuring the dashboard footer in the charm, so we’re not affected.
Subfolders cause very rare issues with folders that have forward slashes in their names
The upgrade to enable subfolders can cause some issues with alerts in certain cases. If you’ve previously set up a folder that uses a forward slash in its name, you have an alert rule in that folder, and the notification policy is set to match that folder’s name, notifications will be sent to the default receiver instead of the configured receiver.
Not only we don’t provision folders, but we don’t organize alerts in folders either, and we use Alertmanager to send notifications. This doesn’t affect the charm.
The Input data source is removed
The direct input data source (which was in alpha) has been removed. We’re not using this plugin.
Data sources: Query filtering changes
Changes on the functionality of the “Disable Query” button in the query builder for a panel, which is now renamed to “Hide Response”. Since those hidden queries shouldn’t really be used outside of developing a dashboard (as they wouldn’t display any data), this doesn’t affect us.
Chore: Query oauth info from a new instance
Slight changes in the Google OAuth configuration, adding and HD parameter describing the organization from which the approved token comes from.
This doesn’t affect us.
Changes to how the panel view URL is generated for repeated panels
Links to repeated panels in a dashboard changed slightly; previously bookmarked links specifically to a repeated panel (not its dashboard) won’t work anymore.
Grafana 12.0 
Removal of editors_can_admin configuration
Effective starting in Grafana 12.0, the configuration option editors_can_admin
is removed. The editors_can_admin
setting in Grafana allows users with the Editor role to create and manage Grafana Teams.
We’re not using this config option.
Dashboard v2 schema and dynamic dashboards
If the feature flag for dynamic dashboards is enabled, once an existing dashboard is migrated to a dynamic dashboard and using schema v2, it can’t be migrated back. This issue will be solved in future versions of Grafana.
The issue only exists for self-managed users who want to roll back to a previous version of Grafana and users who provision dashboards as code. Grafana v12 has a mechanism to resolve both versions.
Not only we’re not using that feature flag, but also we’re not going to support migrating from Grafana 12 to Grafana 9, so this doesn’t affect us.
Deduplication and renaming of metric cache_size
We were double registering the existing metric cache_size. In Grafana v12 we’re deprecating the metric, with plans to remove it in Grafana v13, and splitting it into 2 different metrics:
- resource_cache_size
- query_cache_size While available metrics are not officially documented, you may still use them to get information on the state of your instance.
We’re not using those metrics in any alert rules or dashboard, so we’re not affected.
Removal of optional actions property from DataLinksContextMenu
component
Actions were introduced as an optional property for the DataLinksContextMenu
in October 2024 to support actions in the context menu for the table visualization.
This was an experimental Grafana 11 feature, so it doesn’t affect us.
Enforcing stricter data source UID format
In Grafana v11.2, we added a new failWrongDSUID feature toggle that is turned off by default. When enabled, the REST APIs and provisioning reject any requests to create or update data source instances that have an incorrect UID.
This doesn’t affect us because we’re overriding the UID of dashboards.
Removal of Angular
Extension of Angular deprecation.
Deprecated APIs for UI extensions will be removed
This change concerns plugin developers, not us.
Enforcing stricter version compatibility checks in plugin CLI install commands
Since Grafana v10.2, the endpoint to check compatible versions when installing a plugin using grafana cli plugins install
changed, which led to Grafana dependency versions no longer being taken into account. This might have led to the CLI installing plugins that are not fully compatible based on the plugins definition of compatibility via the grafanaDependency
property in the plugin.json
file.
The Grafana version check is re-enabled in Grafana v12 when installing plugins.
This doesn’t affect us as we don’t install plugins via the Grafana CLI.
Removal of ‘Aggregate by’ in Tempo
Aggregate by was introduced as a way to view RED metrics for your traces in the Tempo data source. This functionality has been deprecated since Grafana v11.3 in favor of using Traces Drilldown and the TraceQL metrics API, which offers much more functionality and complex features. Additionally, TraceQL metrics queries are significantly more powerful than what the metrics summary API provides.
This doesn’t affect us as we’re already using TraceQL for the very few dashboards displaying traces.
Removing the Feature Toggle UI from Grafana Cloud
This change only concerns Grafana Cloud, so it doesn’t affect us.