diff --git a/osaf/services/saf/amf/amfd/comp.cc b/osaf/services/saf/amf/amfd/comp.cc
--- a/osaf/services/saf/amf/amfd/comp.cc
+++ b/osaf/services/saf/amf/amfd/comp.cc
@@ -1635,7 +1635,7 @@ static void comp_ccb_apply_modify_hdlr(s
 	TRACE_LEAVE();
 }
 
-static void comp_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata)
+void comp_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata)
 {
 	TRACE_ENTER();
 
diff --git a/osaf/services/saf/amf/amfd/include/comp.h b/osaf/services/saf/amf/amfd/include/comp.h
--- a/osaf/services/saf/amf/amfd/include/comp.h
+++ b/osaf/services/saf/amf/amfd/include/comp.h
@@ -276,4 +276,5 @@ extern AVD_COMPCS_TYPE * avd_compcstype_
 extern void avd_compcstype_constructor(void);
 extern AVD_COMP *avd_comp_get_or_create(const SaNameT *dn);
 extern AVD_CTCS_TYPE *get_ctcstype(const SaNameT *comptype_name, const SaNameT *cstype_name);
+extern void comp_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata);
 #endif
diff --git a/osaf/services/saf/amf/amfd/include/db_template.h b/osaf/services/saf/amf/amfd/include/db_template.h
--- a/osaf/services/saf/amf/amfd/include/db_template.h
+++ b/osaf/services/saf/amf/amfd/include/db_template.h
@@ -40,6 +40,7 @@ class AmfDb {
    
    typedef std::map<Key, T*> AmfDbMap;
    typedef typename AmfDbMap::const_iterator const_iterator;
+   typedef typename AmfDbMap::iterator iterator;
    typedef typename AmfDbMap::const_reverse_iterator const_reverse_iterator;
 
    const_iterator begin() const {return db.begin();}
@@ -47,6 +48,14 @@ class AmfDb {
    const_reverse_iterator rbegin() const {return db.rbegin();}
    const_reverse_iterator rend() const {return db.rend();}
 
+   iterator erase(const iterator &it) {return db.erase(it);}
+
+   iterator begin() {return db.begin();}
+   iterator end() {return db.end();}
+
+   const_iterator cbegin() const {return db.cbegin();}
+   const_iterator cend() const {return db.cend();}
+
   private:
    AmfDbMap db;
 };
diff --git a/osaf/services/saf/amf/amfd/include/su.h b/osaf/services/saf/amf/amfd/include/su.h
--- a/osaf/services/saf/amf/amfd/include/su.h
+++ b/osaf/services/saf/amf/amfd/include/su.h
@@ -173,5 +173,5 @@ extern SaAisErrorT avd_su_config_get(con
  * Class constructor, must be called before any other function
  */
 extern void avd_su_constructor(void);
-
+extern void su_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata);
 #endif
diff --git a/osaf/services/saf/amf/amfd/node.cc b/osaf/services/saf/amf/amfd/node.cc
--- a/osaf/services/saf/amf/amfd/node.cc
+++ b/osaf/services/saf/amf/amfd/node.cc
@@ -170,9 +170,63 @@ AVD_AVND *avd_node_new(const SaNameT *dn
 
 void avd_node_delete(AVD_AVND *node)
 {
+	TRACE_ENTER();
 	osafassert(node->pg_csi_list.n_nodes == 0);
 	if (node->node_info.nodeId)
 		avd_node_delete_nodeid(node);
+	/* Check if the SUs and related objects are still left. This can
+	   happen on Standby Amfd when it has just read the configuration
+	   and before it becomes applier, Act Amfd deletes SUs. Those SUs
+	   will be left out at Standby Amfd. Though this could be rare.*/
+	if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
+		if (node->list_of_su.empty() != true) {
+			std::set<std::string> su_list;
+			std::set<std::string> comp_list;
+			for (const auto& su : node->list_of_su)
+				su_list.insert(Amf::to_string(&su->name));
+			for (std::set<std::string>::const_iterator iter = su_list.begin();
+					iter != su_list.end(); ++iter) {
+				AVD_SU *su = su_db->find(*iter);
+				TRACE("Standby Amfd, su '%s' not deleted", su->name.value);
+				for (const auto& comp : su->list_of_comp)
+					comp_list.insert(Amf::to_string(&comp->comp_info.name));
+				for (std::set<std::string>::const_iterator iter1 = comp_list.begin();
+						iter1 != comp_list.end(); ++iter1) {
+					AVD_COMP *comp = comp_db->find(*iter1);
+					TRACE("Standby Amfd, comp '%s' not deleted", comp->comp_info.name.value);
+
+					std::map<std::string, AVD_COMPCS_TYPE*>::iterator it =
+						compcstype_db->begin();
+					while (it != compcstype_db->end()) {
+						AVD_COMPCS_TYPE *compcstype = it->second;
+						if (compcstype->comp == comp) {
+							TRACE("Standby Amfd, compcstype '%s' not deleted",
+									compcstype->name.value);
+							it = compcstype_db->erase(it);
+							delete compcstype;
+						}
+						else
+							it++;
+					}
+
+
+					/* Delete the Comp. */
+					struct CcbUtilOperationData opdata;
+					memset(&opdata.objectName, 0, sizeof(SaNameT));
+					memcpy(opdata.objectName.value, comp->comp_info.name.value,
+							comp->comp_info.name.length);
+					opdata.objectName.length = comp->comp_info.name.length;
+					comp_ccb_apply_delete_hdlr(&opdata);
+				}
+				comp_list.clear();
+				/* Delete the SU. */
+				struct CcbUtilOperationData opdata;
+				opdata.userData = su;
+				su_ccb_apply_delete_hdlr(&opdata);
+			}
+			su_list.clear();
+		}
+	}
 	m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, node, AVSV_CKPT_AVD_NODE_CONFIG);
 	node_name_db->erase(Amf::to_string(&node->name));
 	delete node;
@@ -497,6 +551,10 @@ static SaAisErrorT node_ccb_completed_de
 		return SA_AIS_ERR_BAD_OPERATION;
 	}
 
+	if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
+		goto done_ok;
+	}
+
 	/* Check to see that no SUs exists on this node */
 	if (node->list_of_su.empty() != true) {
 		/* check whether there exists a delete operation for 
@@ -573,6 +631,9 @@ static SaAisErrorT node_ccb_completed_de
 			}
 		}
 	}
+
+done_ok:
+	rc = SA_AIS_OK;
 	opdata->userData = node;
 done:
 	TRACE_LEAVE();
diff --git a/osaf/services/saf/amf/amfd/role.cc b/osaf/services/saf/amf/amfd/role.cc
--- a/osaf/services/saf/amf/amfd/role.cc
+++ b/osaf/services/saf/amf/amfd/role.cc
@@ -220,7 +220,9 @@ uint32_t avd_standby_role_initialization
 	}
 
 	cb->init_state = AVD_CFG_DONE;
-
+	LOG_ER("1. Waiting ..........................");
+	sleep(7);
+	LOG_ER("2. Waiting ..........................");
 	if (avd_imm_applier_set() != SA_AIS_OK) {
 		LOG_ER("avd_imm_applier_set FAILED");
 		goto done;
diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -1793,7 +1793,7 @@ static void su_ccb_apply_modify_hdlr(str
  * 
  * @param su
  */
-static void su_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata)
+void su_ccb_apply_delete_hdlr(struct CcbUtilOperationData *opdata)
 {
 	AVD_SU *su = static_cast<AVD_SU*>(opdata->userData);
 	AVD_AVND *su_node_ptr;
diff --git a/osaf/services/saf/amf/amfd/util.cc b/osaf/services/saf/amf/amfd/util.cc
--- a/osaf/services/saf/amf/amfd/util.cc
+++ b/osaf/services/saf/amf/amfd/util.cc
@@ -1556,6 +1556,22 @@ int amfd_file_dump(const char *filename)
 			fprintf(f, "    saAmfCompCurrProxyName: %s\n", comp->saAmfCompCurrProxyName.value);
 	}
 
+        fprintf(f, "COMPCS_TYPE:\n");
+        for (std::map<std::string, AVD_COMPCS_TYPE*>::const_iterator it = compcstype_db->begin();
+                        it != compcstype_db->end(); it++) {
+                const AVD_COMPCS_TYPE *compcs_type  = it->second;
+                fprintf(f, "  dn: %s\n", compcs_type->name.value);
+                fprintf(f, "    saAmfCompNumMaxActiveCSIs: %u\n",
+                                compcs_type->saAmfCompNumMaxActiveCSIs);
+                fprintf(f, "    saAmfCompNumMaxStandbyCSIs: %u\n",
+                                compcs_type->saAmfCompNumMaxStandbyCSIs);
+                fprintf(f, "    saAmfCompNumCurrActiveCSIs: %u\n",
+                                compcs_type->saAmfCompNumCurrActiveCSIs);
+                fprintf(f, "    saAmfCompNumCurrStandbyCSIs: %u\n",
+                                compcs_type->saAmfCompNumCurrStandbyCSIs);
+        }
+
+
 	fprintf(f, "Node Groups:\n");
 	for (std::map<std::string, AVD_AMF_NG*>::const_iterator it = nodegroup_db->begin();
                         it != nodegroup_db->end(); it++) {
