diff --git a/src/datacat_integration/secrets.py b/src/datacat_integration/secrets.py
index 3d20e5709f40730a0a86e39410c2149dfbd474df..76e146281e80aedc3104544cac8ed7feb44b57e2 100644
--- a/src/datacat_integration/secrets.py
+++ b/src/datacat_integration/secrets.py
@@ -17,7 +17,10 @@ def get_connection_with_secrets_from_entry(data: Dict[str, Any], secrets: Dict[s
     conn.password = secrets.get('password')
     conn.login = secrets.get('login')
     # add all remaining secrets to extra
-    extra = json.loads(conn.extra)
+    try:
+        extra = json.loads(conn.extra)
+    except TypeError: # may happen if extra is empty
+        extra = {}
     for key in secrets.keys():
         if key in ['password', 'login']:
             continue
diff --git a/tests/test_secrets.py b/tests/test_secrets.py
index 489f6be9e427b8e58ec614697a5588bbe776e123..54a910d966c7909e9357ed90ad63a1529970a37b 100644
--- a/tests/test_secrets.py
+++ b/tests/test_secrets.py
@@ -26,6 +26,10 @@ class TestSecretsBackend(TestCase):
         self.assertEqual(conn.extra_dejson['some_public_extra'], "12345")
         self.assertEqual(conn.extra_dejson['some_other_extra_to_be_overwritten_by_secret'], "secret_67890")
 
+    
+    def test_no_error_on_missing_extra(self):
+        get_connection_with_secrets_from_entry({"name" : "some-name", "url" : "some_url", "metadata" : {}}, {}, "test-connection", 'false_oid')
+
 
 class TestSecretsConnection(TestCase):
     def setUp(self):