diff --git a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py
index d6f8483..3761d1b 100644
--- a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py
+++ b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py
@@ -226,9 +226,11 @@
         if self._vnf_id is None:
             self._log.warning("Openmano vnf id not set.  Cannot delete.")
             return
-
-        self._cli_api.vnf_delete(self._vnf_id)
-
+        try:
+            self._cli_api.vnf_delete(self._vnf_id)
+        except Exception as e:
+            self._log.error(e)
+            raise e
 
 class OpenmanoNSRecordState(Enum):
     """ Network Service Record State """
@@ -616,7 +618,14 @@
             deleted_vnf_id_list = []
             for vnfr in self._vnfrs:
                 if vnfr.vnfr.vnfd.id not in deleted_vnf_id_list:
-                    vnfr.delete()
+                    try:
+                        vnfr.delete()
+                    except Exception as e:
+                        self._log.error("Failed to delete the vnf at the RO")
+                        if "Resource is not free" in str(e):
+                            self._log.error("Resource is not free, hence forego the vnf-delete")
+                        else:
+                            raise e
                     deleted_vnf_id_list.append(vnfr.vnfr.vnfd.id)
 
     @asyncio.coroutine
@@ -1206,8 +1215,12 @@
         del self._openmano_nsrs[nsr_id]
 
     def terminate(self, openmano_nsr):
-        openmano_nsr.terminate()
-        openmano_nsr.delete()
+        try:
+            openmano_nsr.terminate()
+            openmano_nsr.delete()
+        except Exception as e:
+            self._log.error("The NSR terminate failed for {}".format(openmano_nsr))
+            raise e
 
     @asyncio.coroutine
     def terminate_vnf(self, nsr, vnfr, scalein=False):
@@ -1217,8 +1230,13 @@
         if scalein:
             self._log.debug("Terminating Scaling VNFR - {}".format(vnfr))
             openmano_vnf_nsr = self._openmano_nsr_by_vnfr_id[vnfr.id]
-            openmano_vnf_nsr.terminate()
-            openmano_vnf_nsr.delete()
+            try:
+                openmano_vnf_nsr.terminate()
+                openmano_vnf_nsr.delete()
+            except Exception as e:
+                self._log.error("The NSR terminate failed for {}".format(openmano_nsr))
+                raise e
+
             yield from openmano_vnf_nsr.remove_vnf(vnfr)
 
     @asyncio.coroutine
