diff --git a/osm_lcm/k8s.py b/osm_lcm/k8s.py
index 6c55a52..55d98f4 100644
--- a/osm_lcm/k8s.py
+++ b/osm_lcm/k8s.py
@@ -235,6 +235,7 @@
         db_cluster = self.update_operation_history(
             db_cluster, workflow_status, resource_status
         )
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
         self.update_profile_state(db_cluster, workflow_status, resource_status)
         return
@@ -471,6 +472,7 @@
         db_cluster = self.update_operation_history(
             db_cluster, workflow_status, resource_status
         )
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
 
         # To delete it from DB
@@ -591,6 +593,7 @@
         # update_dict = {item: profile_list}
         # self.logger.info("the update_dict is :{}".format(update_dict))
         # self.db.set_one(self.topic, filter_q, update_dict)
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
 
         return
@@ -654,6 +657,7 @@
         # update_dict = {item: profile_list}
         # self.logger.info("the update_dict is :{}".format(update_dict))
         # self.db.set_one(self.topic, filter_q, update_dict)
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
 
         return
@@ -713,6 +717,7 @@
         db_cluster = self.update_operation_history(
             db_cluster, workflow_status, resource_status
         )
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
         return
 
@@ -771,6 +776,7 @@
         db_cluster = self.update_operation_history(
             db_cluster, workflow_status, resource_status
         )
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
 
         # To delete it from DB
@@ -789,6 +795,7 @@
                 db_cluster["operationHistory"][op_len]["result"] = result
                 db_cluster["operationHistory"][op_len]["endDate"] = time()
             op_len += 1
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
         return
 
@@ -859,6 +866,7 @@
             elif "node_count" in op_params:
                 db_cluster["node_count"] = op_params["node_count"]
             # self.db.set_one(self.db_collection, {"_id": _id}, db_content)
+        db_cluster["current_operation"] = None
         self.db.set_one("clusters", {"_id": db_cluster["_id"]}, db_cluster)
         return
 
@@ -1023,6 +1031,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sapp", {"_id": content["_id"]}, content)
 
         return
@@ -1071,6 +1080,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sapp", {"_id": content["_id"]}, content)
 
         # To delete it from DB
@@ -1132,6 +1142,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sresource", {"_id": content["_id"]}, content)
 
         return
@@ -1181,6 +1192,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sresource", {"_id": content["_id"]}, content)
 
         # To delete it from DB
@@ -1242,6 +1254,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sinfra_controller", {"_id": content["_id"]}, content)
 
         return
@@ -1290,6 +1303,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sinfra_controller", {"_id": content["_id"]}, content)
 
         # To delete it from DB
@@ -1351,6 +1365,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sinfra_config", {"_id": content["_id"]}, content)
 
         return
@@ -1398,6 +1413,7 @@
         content = self.update_operation_history(
             content, workflow_status, resource_status
         )
+        content["current_operation"] = None
         self.db.set_one("k8sinfra_config", {"_id": content["_id"]}, content)
 
         # To delete it from DB
@@ -1464,6 +1480,7 @@
             )
 
         db_content["operatingState"] = "IDLE"
+        db_content["current_operation"] = None
         self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
 
         return
@@ -1513,6 +1530,7 @@
             )
 
         db_content["operatingState"] = "IDLE"
+        db_content["current_operation"] = None
         self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
         return
 
@@ -1562,6 +1580,7 @@
             )
 
         db_content["operatingState"] = "IDLE"
+        db_content["current_operation"] = None
         self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
 
         if db_content["state"] == "DELETED":
@@ -1636,6 +1655,7 @@
 
         for db_ksu in content:
             db_ksu["operatingState"] = "IDLE"
+            db_ksu["current_operation"] = None
             self.db.set_one(self.db_collection, {"_id": db_ksu["_id"]}, db_ksu)
 
         return
@@ -1701,6 +1721,7 @@
                 ]
                 db_ksu["profile"]["_id"] = ksu_params["profile"]["_id"]
                 db_ksu["oka"] = ksu_params["oka"]
+            db_ksu["current_operation"] = None
             self.db.set_one(self.db_collection, {"_id": db_ksu["_id"]}, db_ksu)
 
         return
@@ -1753,6 +1774,7 @@
 
         for db_ksu in content:
             db_ksu["operatingState"] = "IDLE"
+            db_ksu["current_operation"] = None
             self.db.set_one(self.db_collection, {"_id": db_ksu["_id"]}, db_ksu)
 
             if db_ksu["state"] == "DELETED":
@@ -1802,6 +1824,7 @@
             )
 
         db_content["operatingState"] = "IDLE"
+        db_content["current_operation"] = None
         self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
         return
 
@@ -1847,5 +1870,6 @@
             )
 
         db_content["operatingState"] = "IDLE"
+        db_content["current_operation"] = None
         self.db.set_one(self.db_collection, {"_id": db_content["_id"]}, db_content)
         return
