diff --git a/brian_dashboard_manager/grafana/organization.py b/brian_dashboard_manager/grafana/organization.py
index fa2a99bd19ed0d393bd4bde7eef99875db96651f..b6d8b07ff3bc2934903c608763dfe95bc65a6516 100644
--- a/brian_dashboard_manager/grafana/organization.py
+++ b/brian_dashboard_manager/grafana/organization.py
@@ -70,17 +70,16 @@ def create_api_token(request: AdminRequest, org_id: int, key_data=None):
     return result
 
 
-def delete_api_token(request: AdminRequest, org_id: int, token_id: int):
+def delete_api_token(request: AdminRequest, token_id: int, org_id=None):
     assert token_id
-
-    switch_active_organization(request, org_id)
+    if org_id:
+        switch_active_organization(request, org_id)
     result = request.delete(f'api/auth/keys/{token_id}')
-    logger.debug(f'Deleted API token #{token_id} for organization #{org_id}')
+    logger.debug(f'Deleted API token #{token_id}')
     return result
 
 
-def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool:
-    assert org_id
+def delete_expired_api_tokens(request: AdminRequest) -> bool:
 
     tokens = request.get('api/auth/keys', params={'includeExpired': True})
 
@@ -93,7 +92,7 @@ def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool:
     expired_tokens = [t for t in tokens if 'expiration' in t and is_expired(t)]
 
     for token in expired_tokens:
-        delete_api_token(request, org_id, token['id'])
+        delete_api_token(request, token['id'])
     return True
 
 
diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index db1de8ce8240c8815ab703ee4c2f935ac3d78465..1e0b65802e588b15f021d7acf033d898c3a79dd4 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -534,6 +534,7 @@ def provision(config):
     tokens = []
     all_orgs = _provision_orgs(config)
     request = AdminRequest(**config)
+    delete_expired_api_tokens(request)
 
     def _find_org_config(org):
         orgs_to_provision = config.get('organizations', DEFAULT_ORGANIZATIONS)
@@ -551,17 +552,16 @@ def provision(config):
 
         logger.info(
             f'--- Provisioning org {org["name"]} (ID #{org_id}) ---')
-
-        delete_expired_api_tokens(request, org_id)
-        token = create_api_token(request, org_id)
-        token_request = TokenRequest(token=token['key'], **config)
-        tokens.append((org_id, token['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 = find_dashboard(token_request) or []
         all_original_dashboard_uids = {
             d['uid'] for d in all_original_dashboards}
@@ -599,9 +599,7 @@ def provision(config):
             delete_dashboard(token_request, {'uid': uid})
 
         _delete_unknown_folders(config, token_request)
-
-    for org_id, token in tokens:
-        delete_api_token(request, org_id, token)
+        delete_api_token(request, token['id'], org_id=org_id)
 
     logger.info(f'Time to complete: {time.time() - start}')
 
diff --git a/test/test_grafana_organization.py b/test/test_grafana_organization.py
index 4528594eec9c679d1e43193a0124144b8593f83d..c54b38182e2af9427d3289a8515f4fc174513fc0 100644
--- a/test/test_grafana_organization.py
+++ b/test/test_grafana_organization.py
@@ -75,7 +75,7 @@ def test_delete_expired_api_tokens(data_config):
         json={
             "message": "API key deleted"})
 
-    provision.delete_expired_api_tokens(request, ORG_ID)
+    provision.delete_expired_api_tokens(request)
 
 
 @responses.activate