diff --git a/brian_dashboard_manager/grafana/folder.py b/brian_dashboard_manager/grafana/folder.py
index e77cfc38eb530dbd914b28ceda7f5a8fe6b81f57..4de848d9e65418252470a63b41291619ea421834 100644
--- a/brian_dashboard_manager/grafana/folder.py
+++ b/brian_dashboard_manager/grafana/folder.py
@@ -111,12 +111,9 @@ def create_folder(request: TokenRequest, title):
     :param title: folder title
     :return: folder definition
     """
-    try:
-        data = {'title': title, 'uid': title.replace(' ', '_')}
-        r = request.post('api/folders', json=data)
-    except HTTPError:
-        logger.exception(f'Error when creating folder {title}')
-        return None
+    data = {'title': title, 'uid': title.replace(' ', '_')}
+    r = request.post('api/folders', json=data)
+
     return r.json()
 
 
diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index a5bf3052deec8a791d91573ad80d3f312349d281..636666ad6db8dc296e2e097f61278304a1adcc67 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -842,96 +842,93 @@ def _add_service_data(org_config, services, regions):
 
 
 def _provision_org(config, org, org_config, interfaces, services, regions):
+    request = AdminRequest(**config)
+    org_id = org['id']
+    accounts = []
+
+    logger.info(f'--- Provisioning org {org["name"]} (ID #{org_id}) ---')
+
     try:
-        request = AdminRequest(**config)
-        org_id = org['id']
-        accounts = []
+        # create a service account for provisioning (>grafana 11.0)
+        account = get_or_create_service_account(request, org_id)
+        token = create_service_account_token(request, account['id'])
+        accounts.append((org_id, account))
+    except Exception:
+        # we're on a older version of grafana
+        token = create_api_token(request, org_id)
+        accounts.append((org_id, token))
+
+    token_request = TokenRequest(token=token['key'], **config)
+    logger.debug(accounts)
+
+    all_original_dashboards = list_dashboards(token_request)
+    all_original_dashboard_uids = {d['uid']: d.get('folderUrl', '') + d['url'] for d in all_original_dashboards}
+
+    datasource = _provision_datasource(config, token_request)
+    ds_name = datasource.get('name', 'PollerInfluxDB')
+
+    with ThreadPoolExecutor(max_workers=MAX_THREADS) as thread_executor:
+
+        args = (thread_executor, config, org_config, ds_name, token_request)
+
+        # initialise the aggregate dashboards with service data, to be used in the provisioning process
+        # it doesn't create the dashboards, just prepares the data
+        _add_service_data(org_config, services, regions)
+
+        # call to list is needed to queue up the futures
+        managed_dashboards = [f.result() if isinstance(f, Future) else f for f in list(itertools.chain(
+            _provision_interfaces(*args, interfaces, services, regions),
+            _provision_vlan_dashboards(*args, interfaces),
+            _provision_gws_indirect(*args),
+            _provision_gws_direct(*args),
+            _provision_eumetsat_multicast(*args),
+            _provision_aggregates(*args),
+            _provision_static_dashboards(*args),
+            _get_ignored_dashboards(*args)
+        ))]
+
+        managed_dashboard_uids = {}
+        for dashboard in managed_dashboards:
+            if isinstance(dashboard, Future):
+                dashboard = dashboard.result()
+            if dashboard is None:
+                continue
+            assert dashboard['uid'] not in managed_dashboard_uids, \
+                f'Dashboard with UID {dashboard["uid"]} already exists: {dashboard}'
+            managed_dashboard_uids[dashboard['uid']] = dashboard['url']
+
+    difference = set(all_original_dashboard_uids.keys()) - set(managed_dashboard_uids.keys())
+    for uid in difference:
+        info = all_original_dashboard_uids[uid]
+        # delete unmanaged dashboards
+        logger.info(f'Deleting stale dashboard {info} 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',
+        'EAP Dashboard',
+        'VLAN Interfaces',
+    }
+    folders_to_keep.update({dash['folder_name']
+                            for dash in DASHBOARDS.values()})
+    folders_to_keep.update({dash['folder_name']
+                            for dash in SERVICE_DASHBOARDS.values()})
 
-        logger.info(f'--- Provisioning org {org["name"]} (ID #{org_id}) ---')
+    ignored_folders = config.get('ignored_folders', [])
+    folders_to_keep.update(ignored_folders)
 
-        try:
-            # create a service account for provisioning (>grafana 11.0)
-            account = get_or_create_service_account(request, org_id)
-            token = create_service_account_token(request, account['id'])
-            accounts.append((org_id, account))
-        except Exception:
-            # we're on a older version of grafana
-            token = create_api_token(request, org_id)
-            accounts.append((org_id, token))
-
-        token_request = TokenRequest(token=token['key'], **config)
-        logger.debug(accounts)
-
-        all_original_dashboards = list_dashboards(token_request)
-        all_original_dashboard_uids = {d['uid']: d.get('folderUrl', '') + d['url'] for d in all_original_dashboards}
-
-        datasource = _provision_datasource(config, token_request)
-        ds_name = datasource.get('name', 'PollerInfluxDB')
-
-        with ThreadPoolExecutor(max_workers=MAX_THREADS) as thread_executor:
-
-            args = (thread_executor, config, org_config, ds_name, token_request)
-
-            # initialise the aggregate dashboards with service data, to be used in the provisioning process
-            # it doesn't create the dashboards, just prepares the data
-            _add_service_data(org_config, services, regions)
-
-            # call to list is needed to queue up the futures
-            managed_dashboards = list(itertools.chain(
-                _provision_interfaces(*args, interfaces, services, regions),
-                _provision_vlan_dashboards(*args, interfaces),
-                _provision_gws_indirect(*args),
-                _provision_gws_direct(*args),
-                _provision_eumetsat_multicast(*args),
-                _provision_aggregates(*args),
-                _provision_static_dashboards(*args),
-                _get_ignored_dashboards(*args)
-            ))
-
-            managed_dashboard_uids = {}
-            for dashboard in managed_dashboards:
-                if isinstance(dashboard, Future):
-                    dashboard = dashboard.result()
-                if dashboard is None:
-                    continue
-                assert dashboard['uid'] not in managed_dashboard_uids, \
-                    f'Dashboard with UID {dashboard["uid"]} already exists: {dashboard}'
-                managed_dashboard_uids[dashboard['uid']] = dashboard['url']
-
-        difference = set(all_original_dashboard_uids.keys()) - set(managed_dashboard_uids.keys())
-        for uid in difference:
-            info = all_original_dashboard_uids[uid]
-            # delete unmanaged dashboards
-            logger.info(f'Deleting stale dashboard {info} 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',
-            'EAP Dashboard',
-            'VLAN Interfaces',
-        }
-        folders_to_keep.update({dash['folder_name']
-                                for dash in DASHBOARDS.values()})
-        folders_to_keep.update({dash['folder_name']
-                                for dash in SERVICE_DASHBOARDS.values()})
-
-        ignored_folders = config.get('ignored_folders', [])
-        folders_to_keep.update(ignored_folders)
-
-        delete_unknown_folders(token_request, folders_to_keep)
-        try:
-            delete_service_account(request, account['id'])
-        except Exception:
-            # we're on a older version of grafana
-            delete_api_token(request, token['id'], org_id=org_id)
+    delete_unknown_folders(token_request, folders_to_keep)
+    try:
+        delete_service_account(request, account['id'])
     except Exception:
-        logger.exception(f'Error when provisioning org {org["name"]}')
+        # we're on a older version of grafana
+        delete_api_token(request, token['id'], org_id=org_id)
 
 
 def provision(config):