diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py
index 8cde03a..c7e0184 100644
--- a/osm_lcm/ns.py
+++ b/osm_lcm/ns.py
@@ -1687,7 +1687,7 @@
                     vnfd = self.db.get_one("vnfds", {"_id": vnfd_id})
 
                     # store vnfd
-                    db_vnfds.append(vnfd)          # vnfd's indexed by id
+                    db_vnfds.append(vnfd)
 
             # Get or generates the _admin.deployed.VCA list
             vca_deployed_list = None
@@ -2309,17 +2309,18 @@
                     # Step 0: Prepare and set parameters
                     desc_params = parse_yaml_strings(kdur.get("additionalParams"))
                     vnfd_id = vnfr_data.get('vnfd-id')
-                    kdud = next(kdud for kdud in db_vnfds[vnfd_id]["kdu"] if kdud["name"] == kdur["kdu-name"])
+                    vnfd_with_id = find_in_list(db_vnfds, lambda vnfd: vnfd["_id"] == vnfd_id)
+                    kdud = next(kdud for kdud in vnfd_with_id["kdu"] if kdud["name"] == kdur["kdu-name"])
                     namespace = kdur.get("k8s-namespace")
                     if kdur.get("helm-chart"):
-                        kdumodel = kdur["helm-chart"]
+                        kdumodel = kdur["helm-chart"]["kdu-model-locator"]
                         # Default version: helm3, if helm-version is v2 assign v2
                         k8sclustertype = "helm-chart-v3"
                         self.logger.debug("kdur: {}".format(kdur))
                         if kdur.get("helm-version") and kdur.get("helm-version") == "v2":
                             k8sclustertype = "helm-chart"
                     elif kdur.get("juju-bundle"):
-                        kdumodel = kdur["juju-bundle"]
+                        kdumodel = kdur["juju-bundle"]["kdu-model-locator"]
                         k8sclustertype = "juju-bundle"
                     else:
                         raise LcmException("kdu type for kdu='{}.{}' is neither helm-chart nor "
@@ -2327,7 +2328,8 @@
                                            format(vnfr_data["member-vnf-index-ref"], kdur["kdu-name"]))
                     # check if kdumodel is a file and exists
                     try:
-                        storage = deep_get(db_vnfds.get(vnfd_id), ('_admin', 'storage'))
+                        vnfd_with_id = find_in_list(db_vnfds, lambda vnfd: vnfd["_id"] == vnfd_id)
+                        storage = deep_get(vnfd_with_id, ('_admin', 'storage'))
                         if storage and storage.get('pkg-dir'):  # may be not present if vnfd has not artifacts
                             # path format: /vnfdid/pkkdir/helm-charts|juju-bundles/kdumodel
                             filename = '{}/{}/{}s/{}'.format(storage["folder"], storage["pkg-dir"], k8sclustertype,
@@ -2377,9 +2379,9 @@
                     db_path = "_admin.deployed.K8s.{}".format(index)
                     db_nsr_update[db_path] = k8s_instance_info
                     self.update_db_2("nsrs", nsr_id, db_nsr_update)
-
+                    vnfd_with_id = find_in_list(db_vnfds, lambda vnf: vnf["_id"] == vnfd_id)
                     task = asyncio.ensure_future(
-                        self._install_kdu(nsr_id, db_path, vnfr_data, kdu_index, kdud, db_vnfds[vnfd_id],
+                        self._install_kdu(nsr_id, db_path, vnfr_data, kdu_index, kdud, vnfd_with_id,
                                           k8s_instance_info, k8params=desc_params, timeout=600))
                     self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "instantiate_KDU-{}".format(index), task)
                     task_instantiation_info[task] = "Deploying KDU {}".format(kdur["kdu-name"])
@@ -3442,9 +3444,14 @@
                     desc_params = parse_yaml_strings(db_vnfr.get("additionalParamsForVnf"))
             else:
                 desc_params = parse_yaml_strings(db_nsr.get("additionalParamsForNs"))
-
-            if kdu_name and get_kdu_configuration(db_vnfd):
-                kdu_action = True if not get_kdu_configuration(db_vnfd)["juju"] else False
+            if kdu_name and get_kdu_configuration(db_vnfd, kdu_name):
+                kdu_configuration = get_kdu_configuration(db_vnfd, kdu_name)
+                actions = set()
+                for primitive in kdu_configuration["initial-config-primitive"]:
+                    actions.add(primitive["name"])
+                for primitive in kdu_configuration["config-primitive"]:
+                    actions.add(primitive["name"])
+                kdu_action = True if primitive_name in actions else False
 
             # TODO check if ns is in a proper status
             if kdu_name and (primitive_name in ("upgrade", "rollback", "status") or kdu_action):
diff --git a/osm_lcm/tests/test_db_descriptors.py b/osm_lcm/tests/test_db_descriptors.py
index 080d88d..2a346b0 100644
--- a/osm_lcm/tests/test_db_descriptors.py
+++ b/osm_lcm/tests/test_db_descriptors.py
@@ -1254,12 +1254,16 @@
         k8s-cluster:
             id: e7169dab-f71a-4f1f-b82b-432605e8c4b3
         kdu-name: ldap
-        helm-chart: stable/openldap:1.2.1
+        helm-chart:
+          kdu-model-locator:
+            stable/openldap:1.2.1
     -   ip-address: null
         k8s-cluster:
             id: e7169dab-f71a-4f1f-b82b-432605e8c4b3
         kdu-name: mongo
-        helm-chart: stable/mongodb
+        helm-chart:
+          kdu-model-locator:
+            stable/mongodb
     member-vnf-index-ref: multikdu
     nsr-id-ref: 0bcb701c-ee4d-41ab-8ee6-f4156f7f114d
     vdur: []
diff --git a/osm_lcm/tests/test_ns.py b/osm_lcm/tests/test_ns.py
index 2a1b125..6a609dc 100644
--- a/osm_lcm/tests/test_ns.py
+++ b/osm_lcm/tests/test_ns.py
@@ -529,7 +529,7 @@
         db_vnfr = self.db.get_one("vnfrs", {"nsr-id-ref": nsr_id, "member-vnf-index-ref": "multikdu"})
         db_vnfrs = {"multikdu": db_vnfr}
         db_vnfd = self.db.get_one("vnfds", {"_id": db_vnfr["vnfd-id"]})
-        db_vnfds = {db_vnfd["_id"]: db_vnfd}
+        db_vnfds = [db_vnfd]
         task_register = {}
         logging_text = "KDU"
         self.my_ns.k8sclusterhelm3.install = asynctest.CoroutineMock(return_value="k8s_id")
