diff --git a/brian_dashboard_manager/grafana/datasource.py b/brian_dashboard_manager/grafana/datasource.py
index 31dfa3e5b13f4963e94b067cc2a6a47c9218ffaf..32f40cf36d61e9c12e4da4e37cb8918794410e83 100644
--- a/brian_dashboard_manager/grafana/datasource.py
+++ b/brian_dashboard_manager/grafana/datasource.py
@@ -40,8 +40,14 @@ def get_missing_datasource_definitions(request: Request, dir=None):
 
 
 def check_provisioned(request: TokenRequest, datasource):
-    existing_datasources = get_datasources(request)
-    return _datasource_provisioned(datasource, existing_datasources)
+    existing = get_datasources(request)
+    exists = _datasource_provisioned(datasource, existing)
+    name = datasource.get('name')
+    if not exists and any([ds['name'] == name for ds in existing]):
+        # delete datasource
+        delete_datasource(request, name)
+        return False
+    return exists
 
 
 def get_datasources(request: Request):