diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index 3dd9481968d2cf434102273c373bc1cb92f1a189..8087026120e9a57352257a8bce0474353fe72493 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -756,74 +756,78 @@ def provision(config):
             return None
 
     for org in all_orgs:
-        org_id = org['id']
-
-        logger.info(
-            f'--- Provisioning org {org["name"]} (ID #{org_id}) ---')
-        org_config = _find_org_config(org)
-        if not org_config:
-            # message logged from _find_org_config
-            continue
-
-        token = create_api_token(request, org_id)
-        token_request = TokenRequest(token=token['key'], **config)
-        tokens.append((org_id, token['id']))
-        logger.debug(tokens)
-
-        all_original_dashboards = list_dashboards(token_request)
-        all_original_dashboard_uids = {
-            d['uid'] for d in all_original_dashboards}
-
-        datasource = _provision_datasource(config, token_request)
-        ds_name = datasource.get('name', 'PollerInfluxDB')
-
-        managed_dashboards = itertools.chain(
-            _provision_interfaces(
-                config, org_config, ds_name, token_request),
-            _provision_gws_indirect(
-                config, org_config, ds_name, token_request),
-            _provision_gws_direct(
-                config, org_config, ds_name, token_request),
-            _provision_eumetsat_multicast(
-                config, org_config, ds_name, token_request),
-            _provision_aggregates(
-                config, org_config, ds_name, token_request),
-            _provision_static_dashboards(
-                config, org_config, ds_name, token_request),
-            _get_ignored_dashboards(
-                config, org_config, token_request)
-        )
+        try:
+            org_id = org['id']
 
-        managed_dashboard_uids = set()
-        for dashboard in managed_dashboards:
-            if isinstance(dashboard, Future):
-                dashboard = dashboard.result()
-            if dashboard is None:
+            logger.info(
+                f'--- Provisioning org {org["name"]} (ID #{org_id}) ---')
+            org_config = _find_org_config(org)
+            if not org_config:
+                # message logged from _find_org_config
                 continue
-            managed_dashboard_uids.add(dashboard['uid'])
-
-        for uid in all_original_dashboard_uids - managed_dashboard_uids:
-            # delete unmanaged dashboards
-            logger.info(f'Deleting stale dashboard with UID {uid}')
-            delete_dashboard(token_request, {'uid': uid})
-
-        folders_to_keep = {
-            # General is a base folder present in Grafana
-            'General',
-            # other folders, created outside of the DASHBOARDS list
-            'GWS Indirect',
-            'GWS Direct',
-            'Aggregates',
-            'EUMETSAT Multicast'
-        }
-        folders_to_keep.update({dash['folder_name']
-                                for dash in DASHBOARDS.values()})
-
-        ignored_folders = config.get('ignored_folders', [])
-        folders_to_keep.update(ignored_folders)
-
-        delete_unknown_folders(token_request, folders_to_keep)
-        delete_api_token(request, token['id'], org_id=org_id)
+
+            token = create_api_token(request, org_id)
+            token_request = TokenRequest(token=token['key'], **config)
+            tokens.append((org_id, token['id']))
+            logger.debug(tokens)
+
+            all_original_dashboards = list_dashboards(token_request)
+            all_original_dashboard_uids = {
+                d['uid'] for d in all_original_dashboards}
+
+            datasource = _provision_datasource(config, token_request)
+            ds_name = datasource.get('name', 'PollerInfluxDB')
+
+            managed_dashboards = itertools.chain(
+                _provision_interfaces(
+                    config, org_config, ds_name, token_request),
+                _provision_gws_indirect(
+                    config, org_config, ds_name, token_request),
+                _provision_gws_direct(
+                    config, org_config, ds_name, token_request),
+                _provision_eumetsat_multicast(
+                    config, org_config, ds_name, token_request),
+                _provision_aggregates(
+                    config, org_config, ds_name, token_request),
+                _provision_static_dashboards(
+                    config, org_config, ds_name, token_request),
+                _get_ignored_dashboards(
+                    config, org_config, token_request)
+            )
+
+            managed_dashboard_uids = set()
+            for dashboard in managed_dashboards:
+                if isinstance(dashboard, Future):
+                    dashboard = dashboard.result()
+                if dashboard is None:
+                    continue
+                managed_dashboard_uids.add(dashboard['uid'])
+
+            for uid in all_original_dashboard_uids - managed_dashboard_uids:
+                # delete unmanaged dashboards
+                logger.info(f'Deleting stale dashboard with UID {uid}')
+                delete_dashboard(token_request, {'uid': uid})
+
+            folders_to_keep = {
+                # General is a base folder present in Grafana
+                'General',
+                # other folders, created outside of the DASHBOARDS list
+                'GWS Indirect',
+                'GWS Direct',
+                'Aggregates',
+                'EUMETSAT Multicast'
+            }
+            folders_to_keep.update({dash['folder_name']
+                                    for dash in DASHBOARDS.values()})
+
+            ignored_folders = config.get('ignored_folders', [])
+            folders_to_keep.update(ignored_folders)
+
+            delete_unknown_folders(token_request, folders_to_keep)
+            delete_api_token(request, token['id'], org_id=org_id)
+        except Exception:
+            logger.exception(f'Error when provisioning org {org["name"]}')
+            break
 
     logger.info(f'Time to complete: {time.time() - start}')
 
diff --git a/brian_dashboard_manager/inventory_provider/interfaces.py b/brian_dashboard_manager/inventory_provider/interfaces.py
index b9f574087e9e33bb30f7763ab006f14b953079e0..429969405e9b63fbe53c71b40a6be96e8dbabfdf 100644
--- a/brian_dashboard_manager/inventory_provider/interfaces.py
+++ b/brian_dashboard_manager/inventory_provider/interfaces.py
@@ -106,7 +106,7 @@ INTERFACE_LIST_SCHEMA = {
             'type': 'object',
             'properties': {
                 'name': {'type': 'string'},
-                'interface_type': {'enum': _INTERFACE_TYPES}
+                'interface_type': {'type': 'string'},
             },
             'required': ['name', 'interface_type']
         },
@@ -118,7 +118,7 @@ INTERFACE_LIST_SCHEMA = {
                 'description': {'type': 'string'},
                 'dashboards': {
                     'type': 'array',
-                    'items': {'enum': _DASHBOARD_IDS}
+                    'items': {'type': 'string'}
                 },
                 'dashboards_info': {
                     'type': 'array',
diff --git a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
index 7383eabdcd20a40960f69befbb3505d010651ea5..eeb9dbb9fb0151e4f25a0f100e495796bad1e2ff 100644
--- a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
+++ b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
@@ -42,17 +42,18 @@
     {
       "datasource": null,
       "gridPos": {
-        "h": 2,
-        "w": 15,
-        "x": 4,
+        "h": 1,
+        "w": 24,
+        "x": 0,
         "y": 0
       },
       "id": 1,
       "options": {
-        "content": "<div style=\"display: flex; justify-content: center; align-items: center; height: 100%;\"><span>INFO: The average values displayed are only mean values for timescales of 2 days or less</span></div>",
+        "content": "",
         "mode": "html"
       },
-      "title": "",
+      "pluginVersion": "8.2.5",
+      "title": "INFO: The average values displayed are only mean values for timescales of 2 days or less",
       "type": "text"
     },
     {% for panel in aggregate_panels %}
diff --git a/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2 b/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2
index 6b2e1d59a58127c97a98bf9d79299da2bb32a304..bbefccc38a500ec4bd4656e586cbf7d11b7aab4f 100644
--- a/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2
+++ b/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2
@@ -39,21 +39,22 @@
   "version": 1,
   "links": [],
   "panels": [
-    {
-      "datasource": null,
-      "gridPos": {
-        "h": 2,
-        "w": 15,
-        "x": 4,
-        "y": 0
-      },
-      "id": 1,
-      "options": {
-        "content": "<div style=\"display: flex; justify-content: center; align-items: center; height: 100%;\"><span>INFO: The average values displayed are only mean values for timescales of 2 days or less</span></div>",
-        "mode": "html"
-      },
-      "title": "",
-      "type": "text"
+  {
+    "datasource": null,
+    "gridPos": {
+      "h": 1,
+      "w": 24,
+      "x": 0,
+      "y": 0
+    },
+    "id": 1,
+    "options": {
+      "content": "",
+      "mode": "html"
+    },
+    "pluginVersion": "8.2.5",
+    "title": "INFO: The average values displayed are only mean values for timescales of 2 days or less",
+    "type": "text"
     }{{ "," if panels }}
     {% for panel in panels %}
       {{ panel }}{{ "," if not loop.last }}
diff --git a/changelog.md b/changelog.md
index ae8b254f28d84155c8e14e1938afbfedf5ce7fe1..53fb89afe18a50a87f49cb4e476b99f087409e9d 100644
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,11 @@
 
 All notable changes to this project will be documented in this file.
 
+## [0.59] - 2024-04-24
+- Add exception logging when provisioning to aid in debugging
+- Fix inventory-provider schema to be less strict to support new values in the future
+- Revert to layout for Grafana 8.2.5 until we can use >=10.3.3
+
 ## [0.58] - 2024-04-22
 - POL1-418/POL1-804: Add ANA graphs
 - POL1-703: Add IC1 aggregate dashboard
diff --git a/setup.py b/setup.py
index 0ad12bd7d859b8e523f5235cd91aba929d47a677..6faadf15181667525ef792e9fcbe2d1e9a888f6f 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='brian-dashboard-manager',
-    version="0.58",
+    version="0.59",
     author='GEANT',
     author_email='swd@geant.org',
     description='',