diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py
index 60a569a..4e51686 100644
--- a/osm_nbi/instance_topics.py
+++ b/osm_nbi/instance_topics.py
@@ -114,6 +114,9 @@
                 if not nsrs_list:
                     self.db.set_one("vnfds", {"_id": used_vnfd_id}, {"_admin.usageState": "NOT_IN_USE"})
 
+        # delete extra ro_nsrs used for internal RO module
+        self.db.del_one("ro_nsrs", q_filter={"_id": _id}, fail_on_empty=False)
+
     @staticmethod
     def _format_ns_request(ns_request):
         formated_request = copy(ns_request)
@@ -289,6 +292,9 @@
                 "_id": nsr_id,
                 # "input-parameter": xpath, value,
                 "ssh-authorized-key": ns_request.get("ssh_keys"),  # TODO remove
+                "vld": nsd.get("vld") or [],
+                "flavor": [],
+                "image": [],
             }
             ns_request["nsr_id"] = nsr_id
             if ns_request and ns_request.get("config-units"):
@@ -423,7 +429,8 @@
                         # "vim-id", "flavor-id", "image-id", "management-ip" # filled by LCM
                         "internal-connection-point": [],
                         "interfaces": [],
-                        "additionalParams": additional_params
+                        "additionalParams": additional_params,
+                        "vdu-name": vdu["name"],
                     }
                     if vdu_params and vdu_params.get("config-units"):
                         vdur["config-units"] = vdu_params["config-units"]
@@ -432,6 +439,32 @@
                     if vdu.get("pdu-type"):
                         vdur["pdu-type"] = vdu["pdu-type"]
                         vdur["name"] = vdu["pdu-type"]
+
+                    # flavor
+                    flavor_data = copy(vdu.get("vm-flavor", {}))
+                    flavor_data["guest-epa"] = vdu.get("guest-epa")
+                    f = next((f for f in nsr_descriptor["flavor"] if
+                              all(f.get(k) == flavor_data[k] for k in flavor_data)), None)
+                    if not f:
+                        flavor_data["vim_info"] = []
+                        flavor_data["name"] = vdu["id"][:56] + "-flv"
+                        flavor_data["id"] = str(len(nsr_descriptor["flavor"]))
+                        nsr_descriptor["flavor"].append(flavor_data)
+                        f = flavor_data
+                    vdur["ns-flavor-id"] = f["id"]
+
+                    # image
+                    if vdu.get("image"):
+                        image_data = {"image": vdu["image"], "image_checksum": vdu.get("image_checksum")}
+                    img = next((f for f in nsr_descriptor["image"] if
+                                all(f.get(k) == image_data[k] for k in image_data)), None)
+                    if not img:
+                        image_data["vim_info"] = []
+                        image_data["id"] = str(len(nsr_descriptor["image"]))
+                        nsr_descriptor["image"].append(image_data)
+                        img = image_data
+                    vdur["ns-image-id"] = img["id"]
+
                     # TODO volumes: name, volume-id
                     for icp in vdu.get("internal-connection-point", ()):
                         vdu_icp = {
@@ -448,6 +481,13 @@
                             vdu_iface["mgmt-vnf"] = True
                         if iface.get("mgmt-interface"):
                             vdu_iface["mgmt-interface"] = True  # TODO change to mgmt-vdu
+                        if iface.get("virtual-interface"):
+                            if iface["virtual-interface"].get("type"):
+                                iface["type"] = iface["virtual-interface"]["type"]
+                            if iface["virtual-interface"].get("vpci"):
+                                iface["vpci"] = iface["virtual-interface"]["vpci"]
+                            if iface["virtual-interface"].get("bandwidth"):
+                                iface["bandwidth"] = iface["virtual-interface"]["bandwidth"]
 
                         # look for network where this interface is connected
                         if iface.get("external-connection-point-ref"):
@@ -472,8 +512,10 @@
                                 else:
                                     continue
                                 break
-
-                        vdur["interfaces"].append(vdu_iface)
+                        if iface.get("position") is not None:
+                            vdur["interfaces"].insert(iface["position"], vdu_iface)
+                        else:
+                            vdur["interfaces"].append(vdu_iface)
                     count = vdu.get("count", 1)
                     if count is None:
                         count = 1
@@ -489,6 +531,7 @@
 
                         vdur["_id"] = str(uuid4())
                         vdur["count-index"] = index
+                        vdur["id"] = "{}-{}".format(vdur["vdu-id-ref"], index)
                         vnfr_descriptor["vdur"].append(vdur)
 
                 step = "creating vnfr vnfd-id='{}' constituent-vnfd='{}' at database".format(
diff --git a/osm_nbi/tests/test_instance_topics.py b/osm_nbi/tests/test_instance_topics.py
index 14abde7..9dc5cc1 100644
--- a/osm_nbi/tests/test_instance_topics.py
+++ b/osm_nbi/tests/test_instance_topics.py
@@ -250,11 +250,13 @@
             self.db.set_one = Mock()
             self.nsr_topic.delete(session, self.nsr_id)
 
-            db_args = self.db.del_one.call_args[0]
+            db_args_ro_nsrs = self.db.del_one.call_args_list[1][0]
+            db_args = self.db.del_one.call_args_list[0][0]
             msg_args = self.msg.write.call_args[0]
             self.assertEqual(msg_args[0], self.nsr_topic.topic_msg, "Wrong message topic")
             self.assertEqual(msg_args[1], "deleted", "Wrong message action")
             self.assertEqual(msg_args[2], {"_id": self.nsr_id}, "Wrong message content")
+            self.assertEqual(db_args_ro_nsrs[0], "ro_nsrs", "Wrong DB topic")
             self.assertEqual(db_args[0], self.nsr_topic.topic, "Wrong DB topic")
             self.assertEqual(db_args[1]["_id"], self.nsr_id, "Wrong DB ID")
             self.assertEqual(db_args[1]["_admin.projects_read.cont"], [p_id], "Wrong DB filter")
@@ -287,11 +289,13 @@
             self.fs.file_delete.reset_mock()
             self.nsr_topic.delete(session_force, self.nsr_id)
 
-            db_args = self.db.del_one.call_args[0]
+            db_args_ro_nsrs = self.db.del_one.call_args_list[1][0]
+            db_args = self.db.del_one.call_args_list[0][0]
             msg_args = self.msg.write.call_args[0]
             self.assertEqual(msg_args[0], self.nsr_topic.topic_msg, "Wrong message topic")
             self.assertEqual(msg_args[1], "deleted", "Wrong message action")
             self.assertEqual(msg_args[2], {"_id": self.nsr_id}, "Wrong message content")
+            self.assertEqual(db_args_ro_nsrs[0], "ro_nsrs", "Wrong DB topic")
             self.assertEqual(db_args[0], self.nsr_topic.topic, "Wrong DB topic")
             self.assertEqual(db_args[1]["_id"], self.nsr_id, "Wrong DB ID")
             self.db.set_one.assert_not_called()
