diff --git a/NG-RO/osm_ng_ro/ns.py b/NG-RO/osm_ng_ro/ns.py
index 624940f..c778041 100644
--- a/NG-RO/osm_ng_ro/ns.py
+++ b/NG-RO/osm_ng_ro/ns.py
@@ -840,6 +840,14 @@
         if vim_flavor_id:  # vim-flavor-id was passed so flavor won't be created
             return {"find_params": {"vim_flavor_id": vim_flavor_id}}
 
+        vim_flavor_name = (
+            target_vdur.get("additionalParams", {})
+            .get("OSM", {})
+            .get("vim_flavor_name")
+        )
+        if vim_flavor_name:  # vim-flavor-name was passed so flavor won't be created
+            return {"find_params": {"vim_flavor_name": vim_flavor_name}}
+
         flavor_data = {
             "disk": int(target_flavor["storage-gb"]),
             "ram": int(target_flavor["memory-mb"]),
diff --git a/NG-RO/osm_ng_ro/ns_thread.py b/NG-RO/osm_ng_ro/ns_thread.py
index 4937964..3ef6dda 100644
--- a/NG-RO/osm_ng_ro/ns_thread.py
+++ b/NG-RO/osm_ng_ro/ns_thread.py
@@ -1270,6 +1270,31 @@
                                     }
                                     each_flavor.update(flavor_dict)
                 self.db.set_one("nsrs", {"_id": task["nsr_id"]}, db_nsr)
+            elif task.get("find_params", {}).get("vim_flavor_name"):
+                db_nsr = self.db.get_one("nsrs", {"_id": task["nsr_id"]})
+                for vnfr_id in db_nsr.get("constituent-vnfr-ref"):
+                    db_vnfr = self.db.get_one("vnfrs", {"_id": vnfr_id})
+                    for each_flavor in db_nsr["flavor"]:
+                        nsd_flavor_id = each_flavor["id"]
+                        for vdur in db_vnfr["vdur"]:
+                            if vdur.get("ns-flavor-id") == nsd_flavor_id:
+                                if vdur["additionalParams"]["OSM"].get(
+                                    "vim_flavor_name"
+                                ):
+                                    flavor_name = vdur["additionalParams"]["OSM"][
+                                        "vim_flavor_name"
+                                    ]
+                                    flavor_details = target_vim.get_flavor(
+                                        flavor_name=flavor_name
+                                    )
+                                    flavor_dict = {
+                                        "memory-mb": flavor_details["ram"],
+                                        "storage-gb": flavor_details["disk"],
+                                        "vcpu-count": flavor_details["vcpus"],
+                                    }
+                                    each_flavor.update(flavor_dict)
+                vim_flavor_id = flavor_details.get("id")
+                self.db.set_one("nsrs", {"_id": task["nsr_id"]}, db_nsr)
             elif task.get("find_params", {}).get("flavor_data"):
                 try:
                     flavor_data = task["find_params"]["flavor_data"]
