diff --git a/osm_nbi/admin_topics.py b/osm_nbi/admin_topics.py
index 6510d5e..f70c497 100644
--- a/osm_nbi/admin_topics.py
+++ b/osm_nbi/admin_topics.py
@@ -556,20 +556,34 @@
         return indata.get("vim_type") and indata["vim_type"] == "paas"
 
     def _check_paas_account(self, indata):
-        if self._is_paas_vim_type(indata):
-            self._check_paas_provider_is_valid(indata)
+        if not self._is_paas_vim_type(indata):
+            return
+        if not self._is_valid_paas_config(indata.get("config")):
+            raise EngineException(
+                "Invalid config for VIM account '{}'.".format(indata["name"]),
+                HTTPStatus.UNPROCESSABLE_ENTITY,
+            )
 
-    def _check_paas_provider_is_valid(self, indata):
-        try:
-            paas_provider = indata["config"]["paas_provider"]
-            if paas_provider in self.valid_paas_providers:
-                return
-        except Exception:
-            pass
-        raise EngineException(
-            "Invalid paas_provider for VIM account '{}'.".format(indata["name"]),
-            HTTPStatus.UNPROCESSABLE_ENTITY,
-        )
+    def _is_valid_paas_config(self, config) -> bool:
+        if not config:
+            return False
+        paas_provider = config.get("paas_provider")
+        is_valid_paas_provider = paas_provider in self.valid_paas_providers
+        if paas_provider == "juju":
+            return self._is_valid_juju_paas_config(config)
+        return is_valid_paas_provider
+
+    def _is_valid_juju_paas_config(self, config) -> bool:
+        if not config:
+            return False
+        config_keys = [
+            "paas_provider",
+            "ca_cert_content",
+            "cloud",
+            "cloud_credentials",
+            "authorized_keys",
+        ]
+        return all(key in config for key in config_keys)
 
     def check_conflict_on_del(self, session, _id, db_content):
         """
