osaf/libs/common/cpsv/include/cpd.h      |    1 +
 osaf/libs/common/cpsv/include/cpd_cb.h   |   17 +-
 osaf/libs/common/cpsv/include/cpd_imm.h  |    4 +-
 osaf/libs/common/cpsv/include/cpd_mem.h  |   25 ++-
 osaf/libs/common/cpsv/include/cpd_proc.h |    2 +-
 osaf/services/saf/cpsv/cpd/Makefile.am   |    1 +
 osaf/services/saf/cpsv/cpd/cpd_amf.c     |    7 +-
 osaf/services/saf/cpsv/cpd/cpd_db.c      |   95 +++++-----
 osaf/services/saf/cpsv/cpd/cpd_evt.c     |  103 +++++++----
 osaf/services/saf/cpsv/cpd/cpd_imm.c     |  268 +++++++++++++++++++++---------
 osaf/services/saf/cpsv/cpd/cpd_main.c    |    7 +
 osaf/services/saf/cpsv/cpd/cpd_mbcsv.c   |    9 +-
 osaf/services/saf/cpsv/cpd/cpd_proc.c    |  178 ++++++++++----------
 osaf/services/saf/cpsv/cpd/cpd_red.c     |    6 +-
 osaf/services/saf/cpsv/cpd/cpd_sbevt.c   |   57 ++---
 15 files changed, 474 insertions(+), 306 deletions(-)


diff --git a/osaf/libs/common/cpsv/include/cpd.h 
b/osaf/libs/common/cpsv/include/cpd.h
--- a/osaf/libs/common/cpsv/include/cpd.h
+++ b/osaf/libs/common/cpsv/include/cpd.h
@@ -33,6 +33,7 @@
 #ifndef CPD_H
 #define CPD_H
 
+#include "osaf_extended_name.h"
 #include "cpsv.h"
 #include "ncssysf_def.h"
 #include "ncs_main_papi.h"
diff --git a/osaf/libs/common/cpsv/include/cpd_cb.h 
b/osaf/libs/common/cpsv/include/cpd_cb.h
--- a/osaf/libs/common/cpsv/include/cpd_cb.h
+++ b/osaf/libs/common/cpsv/include/cpd_cb.h
@@ -78,7 +78,7 @@ typedef struct cpsv_node_ref_info {
 typedef struct cpd_ckpt_info_node {
        NCS_PATRICIA_NODE patnode;
        SaCkptCheckpointHandleT ckpt_id;
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name;
        uint32_t dest_cnt;
        CPD_NODE_REF_INFO *node_list;
        bool is_unlink_set;
@@ -123,8 +123,7 @@ typedef struct cpd_cpnd_info_node {
        uint32_t timer_state;
        bool ckpt_cpnd_scxb_exist;
        /* for imm */
-       SaNameT node_name;
-       SaNameT ckpt_name;
+       SaConstStringT node_name;
        uint32_t rep_type;
 } CPD_CPND_INFO_NODE;
 
@@ -132,15 +131,15 @@ typedef struct cpd_cpnd_info_node {
 
 typedef struct cpd_ckpt_map_info {
        NCS_PATRICIA_NODE patnode;
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name;
        SaCkptCheckpointHandleT ckpt_id;
        SaCkptCheckpointCreationAttributesT attributes;
        SaVersionT client_version;
 } CPD_CKPT_MAP_INFO;
 
 typedef struct cpd_rep_key_info {
-       SaNameT ckpt_name;
-       SaNameT node_name;
+  SaConstStringT ckpt_name;
+  SaConstStringT node_name;
 } CPD_REP_KEY_INFO;
 
 typedef struct cpd_ckpt_reploc_info {
@@ -219,7 +218,7 @@ typedef struct cpd_cb_tag {
 #define CPD_CB_NULL  ((CPD_CB *)0)
 
 /* Function Declarations */
-CPD_CKPT_INFO_NODE *cpd_find_add_ckpt_name(CPD_CB *cpd_cb, SaNameT ckpt_name);
+CPD_CKPT_INFO_NODE *cpd_find_add_ckpt_name(CPD_CB *cpd_cb, SaConstStringT 
ckpt_name);
 
 void cpd_free_ckpt_node(CPD_CB *gld_cb, CPD_CKPT_INFO_NODE *ckpt_info);
 
@@ -248,9 +247,9 @@ void cpd_ckpt_reploc_tree_destroy(CPD_CB
 
 uint32_t cpd_ckpt_map_tree_init(CPD_CB *cb);
 uint32_t cpd_ckpt_map_node_get(NCS_PATRICIA_TREE *ckpt_map_tree,
-                                    SaNameT *ckpt_name, CPD_CKPT_MAP_INFO 
**ckpt_map_node);
+                                    SaConstStringT ckpt_name, 
CPD_CKPT_MAP_INFO **ckpt_map_node);
 void cpd_ckpt_map_node_getnext(NCS_PATRICIA_TREE *ckpt_map_tree,
-                                       SaNameT *ckpt_name, CPD_CKPT_MAP_INFO 
**ckpt_map_node);
+                                       SaConstStringT *ckpt_name, 
CPD_CKPT_MAP_INFO **ckpt_map_node);
 
 uint32_t cpd_ckpt_map_node_add(NCS_PATRICIA_TREE *ckpt_map_tree, 
CPD_CKPT_MAP_INFO *ckpt_map_node);
 uint32_t cpd_ckpt_map_node_delete(CPD_CB *cb, CPD_CKPT_MAP_INFO 
*ckpt_map_node);
diff --git a/osaf/libs/common/cpsv/include/cpd_imm.h 
b/osaf/libs/common/cpsv/include/cpd_imm.h
--- a/osaf/libs/common/cpsv/include/cpd_imm.h
+++ b/osaf/libs/common/cpsv/include/cpd_imm.h
@@ -4,7 +4,9 @@ extern SaAisErrorT cpd_imm_init(SaImmOiH
 extern void cpd_imm_reinit_bg(CPD_CB * cb);
 extern void cpd_imm_declare_implementer(SaImmOiHandleT* immOiHandle, 
SaSelectionObjectT* imm_sel_obj);
 extern SaAisErrorT create_runtime_ckpt_object(CPD_CKPT_INFO_NODE *ckpt_node, 
SaImmOiHandleT immOiHandle);
+extern SaAisErrorT delete_runtime_ckpt_object(CPD_CKPT_INFO_NODE *ckpt_node, 
SaImmOiHandleT immOiHandle);
 extern SaAisErrorT create_runtime_replica_object(CPD_CKPT_REPLOC_INFO 
*ckpt_reploc_node, SaImmOiHandleT immOiHandle);
-extern void cpd_create_association_class_dn(const SaNameT *child_dn, const 
SaNameT *parent_dn, const char *rdn_tag, SaNameT *dn);
+extern SaAisErrorT delete_runtime_replica_object(CPD_CKPT_REPLOC_INFO 
*ckpt_reploc_node, SaImmOiHandleT immOiHandle);
+extern void cpd_create_association_class_dn(const char *child_dn, const char 
*parent_dn, const char *rdn_tag, char **dn);
 extern SaAisErrorT cpd_clean_checkpoint_objects(CPD_CB *cb);
 extern SaUint32T cpd_get_scAbsenceAllowed_attr();
diff --git a/osaf/libs/common/cpsv/include/cpd_mem.h 
b/osaf/libs/common/cpsv/include/cpd_mem.h
--- a/osaf/libs/common/cpsv/include/cpd_mem.h
+++ b/osaf/libs/common/cpsv/include/cpd_mem.h
@@ -79,18 +79,27 @@ typedef enum {
                                                 NCS_SERVICE_ID_CPD,           \
                                                 
CPD_SVC_SUB_ID_CPD_CKPT_INFO_NODE)
 
-#define m_MMGR_FREE_CPD_CKPT_INFO_NODE(p) m_NCS_MEM_FREE(p,\
+#define m_MMGR_FREE_CPD_CKPT_INFO_NODE(p)                                      
                                \
+                                                       if(p->ckpt_name != 0) 
free((void*)p->ckpt_name);\
+                                                       m_NCS_MEM_FREE(p,       
                                                        \
                                                 NCS_MEM_REGION_PERSISTENT, \
                                                 NCS_SERVICE_ID_CPD, \
                                                 
CPD_SVC_SUB_ID_CPD_CKPT_INFO_NODE)
 
+#define m_MMGR_ZERO_CPD_CKPT_INFO_NODE(p)                                      
\
+                       if(p->ckpt_name != 0) free((void*)p->ckpt_name);\
+                       memset(p, 0, sizeof(CPD_CKPT_INFO_NODE))
+
 #define m_MMGR_ALLOC_CPD_CKPT_MAP_INFO  (CPD_CKPT_MAP_INFO*)                  \
                                    m_NCS_MEM_ALLOC(sizeof(CPD_CKPT_MAP_INFO), \
                                                 NCS_MEM_REGION_PERSISTENT, \
                                                 NCS_SERVICE_ID_CPD, \
                                                 
CPD_SVC_SUB_ID_CPD_CKPT_MAP_INFO)
 
-#define m_MMGR_FREE_CPD_CKPT_MAP_INFO(p) m_NCS_MEM_FREE(p,\
+#define m_MMGR_FREE_CPD_CKPT_MAP_INFO(p)                                       
        \
+                                                               if 
(p->ckpt_name != NULL)               \
+                                                                       
free((void *)p->ckpt_name);     \
+                                                               
m_NCS_MEM_FREE(p,\
                                                 NCS_MEM_REGION_PERSISTENT, \
                                                 NCS_SERVICE_ID_CPD, \
                                                 
CPD_SVC_SUB_ID_CPD_CKPT_MAP_INFO)
@@ -101,7 +110,12 @@ typedef enum {
                                         NCS_SERVICE_ID_CPD, \
                                         CPD_SVC_SUB_ID_CPD_CKPT_REPLOC_INFO)
 
-#define m_MMGR_FREE_CPD_CKPT_REPLOC_INFO(p)  m_NCS_MEM_FREE(p, \
+#define m_MMGR_FREE_CPD_CKPT_REPLOC_INFO(p)                                    
                        \
+                                                               if 
(p->rep_key.node_name != 0)                  \
+                                                                       
free((void *)p->rep_key.node_name);     \
+                                                               if 
(p->rep_key.ckpt_name != 0)                  \
+                                                                       
free((void *)p->rep_key.ckpt_name);     \
+                                                               
m_NCS_MEM_FREE(p, \
                                             NCS_MEM_REGION_PERSISTENT, \
                                             NCS_SERVICE_ID_CPD, \
                                             
CPD_SVC_SUB_ID_CPD_CKPT_REPLOC_INFO)
@@ -112,7 +126,10 @@ typedef enum {
                                                 NCS_SERVICE_ID_CPD, \
                                                 
CPD_SVC_SUB_ID_CPD_CPND_INFO_NODE)
 
-#define m_MMGR_FREE_CPD_CPND_INFO_NODE(p) m_NCS_MEM_FREE(p,\
+#define m_MMGR_FREE_CPD_CPND_INFO_NODE(p)                                      
                        \
+                                                               if 
(p->node_name != 0)                  \
+                                                                       
free((void *)p->node_name);     \
+                                                               
m_NCS_MEM_FREE(p,\
                                                 NCS_MEM_REGION_PERSISTENT, \
                                                 NCS_SERVICE_ID_CPD, \
                                                 
CPD_SVC_SUB_ID_CPD_CPND_INFO_NODE)
diff --git a/osaf/libs/common/cpsv/include/cpd_proc.h 
b/osaf/libs/common/cpsv/include/cpd_proc.h
--- a/osaf/libs/common/cpsv/include/cpd_proc.h
+++ b/osaf/libs/common/cpsv/include/cpd_proc.h
@@ -75,7 +75,7 @@ uint32_t cpd_proc_retention_set(CPD_CB *
                                      SaTimeT reten_time, CPD_CKPT_INFO_NODE 
**ckpt_node);
 
 uint32_t cpd_proc_unlink_set(CPD_CB *cb, CPD_CKPT_INFO_NODE **ckpt_node,
-                                  CPD_CKPT_MAP_INFO *map_info, SaNameT 
*ckpt_name);
+                                  CPD_CKPT_MAP_INFO *map_info, SaConstStringT 
ckpt_name);
 
 void cpd_proc_broadcast_rdset_stop(SaCkptCheckpointHandleT ckpt_id, CPD_CB 
*cb);
 
diff --git a/osaf/services/saf/cpsv/cpd/Makefile.am 
b/osaf/services/saf/cpsv/cpd/Makefile.am
--- a/osaf/services/saf/cpsv/cpd/Makefile.am
+++ b/osaf/services/saf/cpsv/cpd/Makefile.am
@@ -26,6 +26,7 @@ osaf_execbin_PROGRAMS = osafckptd
 osafckptd_CPPFLAGS = \
        -DSA_CLM_B01=1 \
        -DNCS_CPD=1 \
+       -DSA_EXTENDED_NAME_SOURCE \
        $(AM_CPPFLAGS) \
        -I$(top_srcdir)/osaf/libs/common/cpsv/include \
        -I$(top_srcdir)/osaf/libs/common/immsv/include
diff --git a/osaf/services/saf/cpsv/cpd/cpd_amf.c 
b/osaf/services/saf/cpsv/cpd/cpd_amf.c
--- a/osaf/services/saf/cpsv/cpd/cpd_amf.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_amf.c
@@ -334,10 +334,10 @@ uint32_t cpd_amf_register(CPD_CB *cpd_cb
        }
 
        if (saAmfComponentRegister(cpd_cb->amf_hdl, &cpd_cb->comp_name, 
(SaNameT *)NULL) == SA_AIS_OK) {
-               TRACE_LEAVE2("cpd amf register success for 
%s",cpd_cb->comp_name.value);
+               TRACE_LEAVE2("cpd amf register success for %s", 
osaf_extended_name_borrow(&cpd_cb->comp_name));
                return NCSCC_RC_SUCCESS;
        } else {
-               TRACE_LEAVE2("cpd Amf component register failed for 
%s",cpd_cb->comp_name.value);
+               TRACE_LEAVE2("cpd Amf component register failed for 
%s",osaf_extended_name_borrow(&cpd_cb->comp_name));
                return NCSCC_RC_FAILURE;
        }
 }
@@ -355,7 +355,8 @@ uint32_t cpd_amf_register(CPD_CB *cpd_cb
  *****************************************************************************/
 uint32_t cpd_amf_deregister(CPD_CB *cpd_cb)
 {
-       SaNameT comp_name = { 5, "CPD" };
+       SaNameT comp_name;
+       osaf_extended_name_lend("CPD", &comp_name);
        if (saAmfComponentUnregister(cpd_cb->amf_hdl, &comp_name, (SaNameT 
*)NULL) == SA_AIS_OK)
                return NCSCC_RC_SUCCESS;
        else
diff --git a/osaf/services/saf/cpsv/cpd/cpd_db.c 
b/osaf/services/saf/cpsv/cpd/cpd_db.c
--- a/osaf/services/saf/cpsv/cpd/cpd_db.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_db.c
@@ -114,10 +114,8 @@ uint32_t cpd_ckpt_node_add(NCS_PATRICIA_
                TRACE_4("cpd ckpt info node add failed 
ckpt_id:%llx",ckpt_node->ckpt_id);
                /* delete imm ckpt runtime object */
                if (ha_state == SA_AMF_HA_ACTIVE) {
-                       if (immutil_saImmOiRtObjectDelete(immOiHandle, 
&ckpt_node->ckpt_name) != SA_AIS_OK) {
-                               LOG_ER("Deleting run time object %s 
FAILED",ckpt_node->ckpt_name.value);
+                       if (delete_runtime_ckpt_object(ckpt_node, immOiHandle) 
!= SA_AIS_OK)
                                return NCSCC_RC_FAILURE;
-                       }
                }
                return NCSCC_RC_FAILURE;
        }
@@ -155,10 +153,8 @@ uint32_t cpd_ckpt_node_delete(CPD_CB *cb
 
        /* delete imm ckpt runtime object */
        if ((cb->ha_state == SA_AMF_HA_ACTIVE) && (ckpt_node->is_unlink_set != 
true)) {
-               if (immutil_saImmOiRtObjectDelete(cb->immOiHandle, 
&ckpt_node->ckpt_name) != SA_AIS_OK) {
-                       LOG_ER("Deleting run time object %s FAILED", 
ckpt_node->ckpt_name.value);
-                       rc = NCSCC_RC_FAILURE;
-               }
+               if (delete_runtime_ckpt_object(ckpt_node, cb->immOiHandle) != 
SA_AIS_OK)
+                       return NCSCC_RC_FAILURE;
        }
 
        if (ncs_patricia_tree_del(&cb->ckpt_tree, &ckpt_node->patnode) != 
NCSCC_RC_SUCCESS) {
@@ -305,7 +301,6 @@ uint32_t cpd_ckpt_reploc_tree_init(CPD_C
 {
        NCS_PATRICIA_PARAMS param;
        memset(&param, 0, sizeof(NCS_PATRICIA_PARAMS));
-       /*  param.key_size = 2 *sizeof(SaNameT); */
        param.key_size = sizeof(CPD_REP_KEY_INFO);
        if (ncs_patricia_tree_init(&cb->ckpt_reploc_tree, &param) != 
NCSCC_RC_SUCCESS) {
                LOG_ER("CPD_CKPT_REPLOC_TREE_INIT FAILED");
@@ -328,10 +323,23 @@ uint32_t cpd_ckpt_reploc_tree_init(CPD_C
 uint32_t cpd_ckpt_reploc_get(NCS_PATRICIA_TREE *ckpt_reploc_tree,
                          CPD_REP_KEY_INFO *key_info, CPD_CKPT_REPLOC_INFO 
**ckpt_reploc_node)
 {
-       key_info->ckpt_name.length = m_NCS_OS_HTONS(key_info->ckpt_name.length);
-       key_info->node_name.length = m_NCS_OS_HTONS(key_info->node_name.length);
+       CPD_CKPT_REPLOC_INFO *reploc_info = NULL;
+       *ckpt_reploc_node = NULL;
 
-       *ckpt_reploc_node = (CPD_CKPT_REPLOC_INFO 
*)ncs_patricia_tree_get(ckpt_reploc_tree, (uint8_t *)key_info);
+       if ((key_info->ckpt_name == NULL) || (key_info->node_name == NULL))
+               return NCSCC_RC_SUCCESS;
+
+       cpd_ckpt_reploc_getnext(ckpt_reploc_tree, NULL, &reploc_info);
+       while (reploc_info) {
+               if ((strcmp(key_info->ckpt_name, 
reploc_info->rep_key.ckpt_name) == 0) &&
+                       (strcmp(key_info->node_name, 
reploc_info->rep_key.node_name) == 0)) {
+                       *ckpt_reploc_node = reploc_info;
+                       break;
+               }
+
+               cpd_ckpt_reploc_getnext(ckpt_reploc_tree, 
&reploc_info->rep_key, &reploc_info);
+       }
+
        return NCSCC_RC_SUCCESS;
 }
 
@@ -348,8 +356,6 @@ void cpd_ckpt_reploc_getnext(NCS_PATRICI
                             CPD_REP_KEY_INFO *key_info, CPD_CKPT_REPLOC_INFO 
**ckpt_reploc_node)
 {
        if (key_info) {
-               key_info->ckpt_name.length = 
m_NCS_OS_HTONS(key_info->ckpt_name.length);
-               key_info->node_name.length = 
m_NCS_OS_HTONS(key_info->node_name.length);
                *ckpt_reploc_node =
                    (CPD_CKPT_REPLOC_INFO 
*)ncs_patricia_tree_getnext(ckpt_reploc_tree, (uint8_t *)key_info);
        } else {
@@ -370,9 +376,7 @@ uint32_t cpd_ckpt_reploc_node_add(NCS_PA
                               SaAmfHAStateT ha_state, SaImmOiHandleT 
immOiHandle)
 {
        SaAisErrorT err = SA_AIS_OK;
-       SaNameT replica_dn;
        TRACE_ENTER();
-       memset(&replica_dn, 0, sizeof(SaNameT));
 
        /* Add the imm runtime object */
        if (ha_state == SA_AMF_HA_ACTIVE) {
@@ -383,24 +387,15 @@ uint32_t cpd_ckpt_reploc_node_add(NCS_PA
                        return NCSCC_RC_FAILURE;
                }
        }
-       ckpt_reploc_node->rep_key.ckpt_name.length = 
m_NCS_OS_HTONS(ckpt_reploc_node->rep_key.ckpt_name.length);
-       /* node name is obtained from cluster info which always returns in 
network order, so no need of the conversion for the node_name length */
-       ckpt_reploc_node->rep_key.node_name.length = 
m_NCS_OS_HTONS(ckpt_reploc_node->rep_key.node_name.length);
 
        ckpt_reploc_node->patnode.key_info = (uint8_t 
*)&ckpt_reploc_node->rep_key;
        if (ncs_patricia_tree_add(ckpt_reploc_tree, &ckpt_reploc_node->patnode) 
!= NCSCC_RC_SUCCESS) {
                /* delete reploc imm runtime object */
                if (ha_state == SA_AMF_HA_ACTIVE) {
-                       
cpd_create_association_class_dn(&ckpt_reploc_node->rep_key.node_name,
-                                                       
&ckpt_reploc_node->rep_key.ckpt_name, "safReplica", &replica_dn);
-
-                       if (immutil_saImmOiRtObjectDelete(immOiHandle, 
&replica_dn) != SA_AIS_OK) {
-                               TRACE_4("Deleting run time object %s 
Failed",replica_dn.value);
+                       if (delete_runtime_replica_object(ckpt_reploc_node, 
immOiHandle) != SA_AIS_OK) {
                                TRACE_LEAVE();
                                return NCSCC_RC_FAILURE;
                        }
-                       TRACE_LEAVE();
-                       return NCSCC_RC_FAILURE;
                }
        }
 
@@ -445,8 +440,9 @@ uint32_t cpd_ckpt_reploc_node_delete(CPD
        }
 
        /* Free the Client Node */
-       if (ckpt_reploc_node)
+       if (ckpt_reploc_node) {
                m_MMGR_FREE_CPD_CKPT_REPLOC_INFO(ckpt_reploc_node);
+       }
 
        return rc;
 }
@@ -512,7 +508,7 @@ uint32_t cpd_ckpt_map_tree_init(CPD_CB *
 {
        NCS_PATRICIA_PARAMS param;
        memset(&param, 0, sizeof(NCS_PATRICIA_PARAMS));
-       param.key_size = sizeof(SaNameT);
+       param.key_size = sizeof(SaConstStringT);
        if (ncs_patricia_tree_init(&cb->ckpt_map_tree, &param) != 
NCSCC_RC_SUCCESS) {
                return NCSCC_RC_FAILURE;
        }
@@ -529,17 +525,23 @@ uint32_t cpd_ckpt_map_tree_init(CPD_CB *
                   NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
   Notes         : The caller takes the cb lock before calling this function    
             
 ******************************************************************************/
-uint32_t cpd_ckpt_map_node_get(NCS_PATRICIA_TREE *ckpt_map_tree, SaNameT 
*ckpt_name, CPD_CKPT_MAP_INFO **ckpt_map_node)
+uint32_t cpd_ckpt_map_node_get(NCS_PATRICIA_TREE *ckpt_map_tree, 
SaConstStringT ckpt_name, CPD_CKPT_MAP_INFO **ckpt_map_node)
 {
+       CPD_CKPT_MAP_INFO *map_info = NULL;
 
-       /* stuffing the key with NULL as patricia tries to match the max keylen 
*/
-       ckpt_name->length = m_NCS_OS_HTONS(ckpt_name->length);
+       *ckpt_map_node = NULL;
 
-/*   ckpt_name->length = m_NCS_OS_HTONS(ckpt_name->length); */
-       *ckpt_map_node = (CPD_CKPT_MAP_INFO *)
-           ncs_patricia_tree_get(ckpt_map_tree, (uint8_t *)ckpt_name);
+       if (ckpt_name == NULL)
+               return NCSCC_RC_SUCCESS;
 
-       ckpt_name->length = m_NCS_OS_NTOHS(ckpt_name->length);
+       cpd_ckpt_map_node_getnext(ckpt_map_tree, NULL, &map_info);
+       while (map_info) {
+               if (strcmp(ckpt_name, map_info->ckpt_name) == 0) {
+                       *ckpt_map_node = map_info;
+                       break;
+               }
+               cpd_ckpt_map_node_getnext(ckpt_map_tree, &map_info->ckpt_name, 
&map_info);
+       }
 
        return NCSCC_RC_SUCCESS;
 }
@@ -553,16 +555,12 @@ uint32_t cpd_ckpt_map_node_get(NCS_PATRI
                   NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
   Notes         : The caller takes the cb lock before calling this function    
             
 ******************************************************************************/
-void cpd_ckpt_map_node_getnext(NCS_PATRICIA_TREE *ckpt_map_tree, SaNameT 
*ckpt_name, CPD_CKPT_MAP_INFO **ckpt_map_node)
+void cpd_ckpt_map_node_getnext(NCS_PATRICIA_TREE *ckpt_map_tree, 
SaConstStringT *ckpt_name, CPD_CKPT_MAP_INFO **ckpt_map_node)
 {
 
        if (ckpt_name) {
-               ckpt_name->length = m_NCS_OS_HTONS(ckpt_name->length);
                *ckpt_map_node = (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(ckpt_map_tree, (uint8_t *)ckpt_name);
-               ckpt_name->length = m_NCS_OS_NTOHS(ckpt_name->length);
-       }
-
-       else {
+       } else {
                *ckpt_map_node = (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(ckpt_map_tree, (uint8_t *)NULL);
        }
 
@@ -579,12 +577,11 @@ void cpd_ckpt_map_node_getnext(NCS_PATRI
 ******************************************************************************/
 uint32_t cpd_ckpt_map_node_add(NCS_PATRICIA_TREE *ckpt_map_tree, 
CPD_CKPT_MAP_INFO *ckpt_map_node)
 {
-       ckpt_map_node->ckpt_name.length = 
m_NCS_OS_HTONS(ckpt_map_node->ckpt_name.length);
        ckpt_map_node->patnode.key_info = (uint8_t *)&ckpt_map_node->ckpt_name;
 
        if (ncs_patricia_tree_add(ckpt_map_tree, &ckpt_map_node->patnode) != 
NCSCC_RC_SUCCESS) {
 
-               LOG_ER("cpd ckpt map info add failed ckpt_name 
%s",ckpt_map_node->ckpt_name.value);
+               LOG_ER("cpd ckpt map info add failed ckpt_name 
%s",ckpt_map_node->ckpt_name);
 
                return NCSCC_RC_FAILURE;
        }
@@ -603,16 +600,20 @@ uint32_t cpd_ckpt_map_node_delete(CPD_CB
 {
        uint32_t rc = NCSCC_RC_SUCCESS;
 
+       TRACE_ENTER();
+
        /* Remove the Node from the client tree */
        if (ncs_patricia_tree_del(&cb->ckpt_map_tree, &ckpt_map_node->patnode) 
!= NCSCC_RC_SUCCESS) {
-               LOG_ER("cpd map node delete failed 
ckpt_name:%s",ckpt_map_node->ckpt_name.value);
+               LOG_ER("cpd map node delete failed 
ckpt_name:%s",ckpt_map_node->ckpt_name);
                rc = NCSCC_RC_FAILURE;
        }
 
        /* Free the Client Node */
-       if (ckpt_map_node)
+       if (ckpt_map_node) {
                m_MMGR_FREE_CPD_CKPT_MAP_INFO(ckpt_map_node);
+       }
 
+       TRACE_LEAVE();
        return rc;
 
 }
@@ -627,9 +628,7 @@ uint32_t cpd_ckpt_map_node_delete(CPD_CB
 void cpd_ckpt_map_tree_cleanup(CPD_CB *cb)
 {
        CPD_CKPT_MAP_INFO *ckpt_map_node;
-       SaNameT name;
-
-       memset(&name, 0, sizeof(SaNameT));
+       SaConstStringT name = NULL;
 
        /* Get the First Node */
        ckpt_map_node = (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(&cb->ckpt_map_tree, (uint8_t *)&name);
@@ -1179,7 +1178,7 @@ uint32_t cpd_process_cpnd_del(CPD_CB *cb
                        }
 
                        if (ckpt_node->dest_cnt == 0) {
-                               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&ckpt_node->ckpt_name, &map_info);
+                               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
ckpt_node->ckpt_name, &map_info);
                                if (map_info) {
                                        cpd_ckpt_map_node_delete(cb, map_info);
                                }
diff --git a/osaf/services/saf/cpsv/cpd/cpd_evt.c 
b/osaf/services/saf/cpsv/cpd/cpd_evt.c
--- a/osaf/services/saf/cpsv/cpd/cpd_evt.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_evt.c
@@ -26,6 +26,7 @@
 
 #include "cpd.h"
 #include "immutil.h"
+#include "cpd_imm.h"
 
 uint32_t cpd_evt_proc_cb_dump(CPD_CB *cb);
 static uint32_t cpd_evt_proc_ckpt_create(CPD_CB *cb, CPD_EVT *evt, 
CPSV_SEND_INFO *sinfo);
@@ -41,6 +42,7 @@ static uint32_t cpd_evt_proc_ckpt_destro
 static uint32_t cpd_evt_proc_ckpt_destroy_byname(CPD_CB *cb, CPD_EVT *evt, 
CPSV_SEND_INFO *sinfo);
 static uint32_t cpd_evt_proc_timer_expiry(CPD_CB *cb, CPD_EVT *evt);
 static uint32_t cpd_evt_proc_mds_evt(CPD_CB *cb, CPD_EVT *evt);
+static void cpd_evt_free(CPSV_EVT *evt);
 
 static uint32_t cpd_evt_mds_quiesced_ack_rsp(CPD_CB *cb, CPD_EVT *evt, 
CPSV_SEND_INFO *sinfo);
 static uint32_t cpd_evt_proc_ckpt_info_upd(CPD_CB *cb, CPD_EVT *evt, 
CPSV_SEND_INFO *sinfo);
@@ -150,7 +152,7 @@ void cpd_process_evt(CPSV_EVT *evt)
        ncshm_give_hdl(cb_hdl);
 
        /* Free the Event */
-       m_MMGR_FREE_CPSV_EVT(evt, NCS_SERVICE_ID_CPD);
+       cpd_evt_free(evt);
        TRACE_LEAVE();
        return;
 }
@@ -177,6 +179,7 @@ static uint32_t cpd_evt_proc_ckpt_create
        CPD_CKPT_MAP_INFO *map_info = NULL;
        CPSV_ND2D_CKPT_CREATE *ckpt_create = &evt->info.ckpt_create;
        bool is_first_rep = false, is_new_noncol = false;
+       SaConstStringT ckpt_name = 
osaf_extended_name_borrow(&ckpt_create->ckpt_name);
        
        TRACE_ENTER();
 
@@ -187,21 +190,20 @@ static uint32_t cpd_evt_proc_ckpt_create
                goto send_rsp;
        }
 
-       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, &ckpt_create->ckpt_name, 
&map_info);
+       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, ckpt_name, &map_info);
        if (map_info) {
 
-               /*   ckpt_create->ckpt_name.length = 
m_NCS_OS_NTOHS(ckpt_create->ckpt_name.length);  */
                if (m_CPA_VER_IS_ABOVE_B_1_1(&ckpt_create->client_version)) {
                        if ((ckpt_create->ckpt_flags & 
SA_CKPT_CHECKPOINT_CREATE) &&
                            (!m_COMPARE_CREATE_ATTR(&ckpt_create->attributes, 
&map_info->attributes))) {
-                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:%s,%"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:%s,%"PRIu64, ckpt_name, sinfo->dest);
                                rc = SA_AIS_ERR_EXIST;
                                goto send_rsp;
                        }
                } else {
                        if ((ckpt_create->ckpt_flags & 
SA_CKPT_CHECKPOINT_CREATE) &&
                            
(!m_COMPARE_CREATE_ATTR_B_1_1(&ckpt_create->attributes, 
&map_info->attributes))) {
-                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64, ckpt_name, sinfo->dest);
                                rc = SA_AIS_ERR_EXIST;
                                goto send_rsp;
                        }
@@ -209,13 +211,12 @@ static uint32_t cpd_evt_proc_ckpt_create
        } else {
                SaCkptCheckpointCreationAttributesT ckpt_local_attrib;
                memset(&ckpt_local_attrib, 0, 
sizeof(SaCkptCheckpointCreationAttributesT));
-               /* ckpt_create->ckpt_name.length = 
m_NCS_OS_NTOHS(ckpt_create->ckpt_name.length); */
                is_first_rep = true;
                if (m_CPA_VER_IS_ABOVE_B_1_1(&ckpt_create->client_version)) {
                        if (!(ckpt_create->ckpt_flags & 
SA_CKPT_CHECKPOINT_CREATE) &&
                            (m_COMPARE_CREATE_ATTR(&ckpt_create->attributes, 
&ckpt_local_attrib))) {
 
-                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64, ckpt_name, sinfo->dest);
                                rc = SA_AIS_ERR_NOT_EXIST;
                                goto send_rsp;
                        }
@@ -223,7 +224,7 @@ static uint32_t cpd_evt_proc_ckpt_create
                        if (!(ckpt_create->ckpt_flags & 
SA_CKPT_CHECKPOINT_CREATE) &&
                            
(m_COMPARE_CREATE_ATTR_B_1_1(&ckpt_create->attributes, &ckpt_local_attrib))) {
 
-                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+                               TRACE_4("cpd ckpt create failure ckpt name,dest 
:  %s, %"PRIu64, ckpt_name, sinfo->dest);
                                rc = SA_AIS_ERR_NOT_EXIST;
                                goto send_rsp;
                        }
@@ -233,12 +234,12 @@ static uint32_t cpd_evt_proc_ckpt_create
        /* Add/Update the entries in ckpt DB, ckpt_map DB, ckpt_node DB */
        proc_rc = cpd_ckpt_db_entry_update(cb, &sinfo->dest, ckpt_create, 
&ckpt_node, &map_info);
        if (proc_rc == NCSCC_RC_OUT_OF_MEM) {
-               TRACE_4("cpd ckpt create failure ckpt name,dest :  %s, 
%"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+               TRACE_4("cpd ckpt create failure ckpt name,dest :  %s, 
%"PRIu64, ckpt_name, sinfo->dest);
                rc = SA_AIS_ERR_NO_MEMORY;
                goto send_rsp;
        } else if (proc_rc != NCSCC_RC_SUCCESS) {
 
-               TRACE_4("cpd ckpt create failure ckpt name,dest :  %s, 
%"PRIu64,ckpt_create->ckpt_name.value, sinfo->dest);
+               TRACE_4("cpd ckpt create failure ckpt name,dest :  %s, 
%"PRIu64, ckpt_name, sinfo->dest);
                rc = SA_AIS_ERR_LIBRARY;
                goto send_rsp;
        }
@@ -273,9 +274,9 @@ static uint32_t cpd_evt_proc_ckpt_create
                    && (!m_CPND_IS_ON_SCXB(cb->cpd_self_id, 
cpd_get_slot_sub_id_from_mds_dest(sinfo->dest)))) {
                        proc_rc = cpd_noncolloc_ckpt_rep_create(cb, 
&cb->loc_cpnd_dest, ckpt_node, map_info);
                        if (proc_rc == NCSCC_RC_SUCCESS)
-                               TRACE_1("cpd non coloc ckpt create success ckpt 
name %s, loc_cpnd_dest:%"PRIu64,ckpt_create->ckpt_name.value, 
cb->loc_cpnd_dest);
+                               TRACE_1("cpd non coloc ckpt create success ckpt 
name %s, loc_cpnd_dest:%"PRIu64, ckpt_name, cb->loc_cpnd_dest);
                        else
-                               TRACE_2("cpd non coloc ckpt create failure ckpt 
name %s, loc_cpnd_dest:%"PRIu64,ckpt_create->ckpt_name.value, 
cb->loc_cpnd_dest);
+                               TRACE_2("cpd non coloc ckpt create failure ckpt 
name %s, loc_cpnd_dest:%"PRIu64, ckpt_name, cb->loc_cpnd_dest);
 
                }
                /*  if(cb->is_rem_cpnd_up && 
(cpd_get_slot_sub_id_from_mds_dest(sinfo->dest) != ckpt_node->ckpt_on_scxb2)) */
@@ -283,9 +284,9 @@ static uint32_t cpd_evt_proc_ckpt_create
                    && (!m_CPND_IS_ON_SCXB(cb->cpd_remote_id, 
cpd_get_slot_sub_id_from_mds_dest(sinfo->dest)))) {
                        proc_rc = cpd_noncolloc_ckpt_rep_create(cb, 
&cb->rem_cpnd_dest, ckpt_node, map_info);
                        if (proc_rc == NCSCC_RC_SUCCESS)
-                               TRACE_1("cpd non coloc ckpt create success 
ckpt_name %s and rem_cpnd 
%"PRIu64,ckpt_create->ckpt_name.value,cb->rem_cpnd_dest);
+                               TRACE_1("cpd non coloc ckpt create success 
ckpt_name %s and rem_cpnd %"PRIu64, ckpt_name,cb->rem_cpnd_dest);
                        else
-                               TRACE_4("cpd non coloc ckpt create failure 
ckpt_name %s and rem_cpnd 
%"PRIu64,ckpt_create->ckpt_name.value,cb->rem_cpnd_dest);
+                               TRACE_4("cpd non coloc ckpt create failure 
ckpt_name %s and rem_cpnd %"PRIu64, ckpt_name,cb->rem_cpnd_dest);
                }
                /* ND on SCXB has created the same checkpoint, so is_new_noncol 
must be made to true */
                is_new_noncol = true;
@@ -346,7 +347,7 @@ static uint32_t cpd_evt_proc_ckpt_create
                
m_MMGR_FREE_CPSV_CPND_DEST_INFO(send_evt.info.cpnd.info.ckpt_info.dest_list);
 
        if (proc_rc != NCSCC_RC_SUCCESS)
-               TRACE_4("cpd ckpt create failure for ckpt_name :%s,dest 
:%"PRIu64,ckpt_create->ckpt_name.value,sinfo->dest);
+               TRACE_4("cpd ckpt create failure for ckpt_name :%s,dest 
:%"PRIu64, ckpt_name,sinfo->dest);
 
        if ((proc_rc != NCSCC_RC_SUCCESS) || (rc != SA_AIS_OK))
                return proc_rc;
@@ -554,7 +555,7 @@ static uint32_t cpd_evt_proc_ckpt_unlink
 {
        CPD_CKPT_INFO_NODE *ckpt_node = NULL;
        CPD_CKPT_MAP_INFO *map_info = NULL;
-       SaNameT *ckpt_name = &evt->info.ckpt_ulink.ckpt_name;
+       SaConstStringT ckpt_name = 
osaf_extended_name_borrow(&evt->info.ckpt_ulink.ckpt_name);
        SaAisErrorT rc = SA_AIS_OK;
        SaAisErrorT proc_rc = SA_AIS_OK;
        CPSV_EVT send_evt;
@@ -585,15 +586,11 @@ static uint32_t cpd_evt_proc_ckpt_unlink
                send_evt.info.cpnd.info.ckpt_ulink.ckpt_id = ckpt_node->ckpt_id;
 
                proc_rc = cpd_mds_bcast_send(cb, &send_evt, NCSMDS_SVC_ID_CPND);
-               TRACE_2("cpd evt unlink success for ckpt_name:%s,dest 
:%"PRIu64,evt->info.ckpt_ulink.ckpt_name.value, sinfo->dest);
+               TRACE_2("cpd evt unlink success for ckpt_name:%s,dest 
:%"PRIu64, ckpt_name, sinfo->dest);
 
                /* delete imm ckpt runtime object */
-               if (cb->ha_state == SA_AMF_HA_ACTIVE) {
-                       if (immutil_saImmOiRtObjectDelete(cb->immOiHandle, 
&ckpt_node->ckpt_name) != SA_AIS_OK) {
-                               TRACE_4("Deleting run time object %s 
failed",ckpt_node->ckpt_name.value);
-                               /* Free the Client Node */
-                       }
-               }
+               if (cb->ha_state == SA_AMF_HA_ACTIVE) 
+                       delete_runtime_ckpt_object(ckpt_node, cb->immOiHandle);
        }
           
        memset(&send_evt, 0, sizeof(CPSV_EVT));
@@ -840,7 +837,7 @@ static uint32_t cpd_evt_proc_ckpt_destro
 static uint32_t cpd_evt_proc_ckpt_destroy_byname(CPD_CB *cb, CPD_EVT *evt, 
CPSV_SEND_INFO *sinfo)
 {
        CPD_CKPT_MAP_INFO *map_info = NULL;
-       SaNameT *ckpt_name = &evt->info.ckpt_destroy_byname.ckpt_name;
+       SaConstStringT ckpt_name = 
osaf_extended_name_borrow(&evt->info.ckpt_destroy_byname.ckpt_name);
        CPD_EVT destroy_evt;
        CPSV_EVT send_evt;
        uint32_t proc_rc = NCSCC_RC_SUCCESS;
@@ -1202,12 +1199,10 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
        CPD_CKPT_MAP_INFO *map_info = NULL;
        SaCkptCheckpointHandleT prev_ckpt_hdl;
        bool flag = false;
-       SaNameT ckpt_name;
        uint32_t phy_slot_sub_slot;
        bool add_flag = true;
 
        TRACE_ENTER();
-       memset(&ckpt_name, 0, sizeof(SaNameT));
        mds_info = &evt->info.mds_info;
 
        memset(&phy_slot_sub_slot, 0, sizeof(uint32_t));
@@ -1263,7 +1258,7 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
                                                                                
}
                                                                                
if (flag == false) {
                                                                                
        cpd_ckpt_map_node_get(&cb->ckpt_map_tree,
-                                                                               
                        &ckpt_node->ckpt_name, &map_info);
+                                                                               
                        ckpt_node->ckpt_name, &map_info);
                                                                                
        if (map_info) {
                                                                                
                cpd_noncolloc_ckpt_rep_create(cb,
                                                                                
                                &cb->
@@ -1325,7 +1320,7 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
                                                        }
                                                        if (flag == false) {
                                                                
cpd_ckpt_map_node_get(&cb->ckpt_map_tree,
-                                                                               
      &ckpt_node->ckpt_name, &map_info);
+                                                                               
      ckpt_node->ckpt_name, &map_info);
                                                                if (map_info) {
                                                                        
cpd_noncolloc_ckpt_rep_create(cb,
                                                                                
                      &cb->
@@ -1362,7 +1357,7 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
                                                        }
                                                        if (flag == false) {
                                                                
cpd_ckpt_map_node_get(&cb->ckpt_map_tree,
-                                                                               
      &ckpt_node->ckpt_name, &map_info);
+                                                                               
      ckpt_node->ckpt_name, &map_info);
                                                                if (map_info) {
                                                                        
cpd_noncolloc_ckpt_rep_create(cb,
                                                                                
                      &cb->
@@ -1476,6 +1471,39 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
 }
 
 /****************************************************************************
+ * Name          : cpd_evt_free
+ *
+ * Description   : Function to free data allocated for event
+ *
+ * Arguments     : CPSV_EVT *evt - Received Event structure
+ *
+ * Return Values : None.
+ *
+ * Notes         : None.
+ *****************************************************************************/
+static void cpd_evt_free(CPSV_EVT *evt)
+{
+       switch (evt->info.cpd.type) {
+       case CPD_EVT_ND2D_CKPT_CREATE:
+               if 
(osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_create.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_create.ckpt_name));
+               break;
+       case CPD_EVT_ND2D_CKPT_UNLINK:
+               if 
(osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_ulink.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_ulink.ckpt_name));
+               break;
+       case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
+               if 
(osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_name));
+               break;
+       default:
+               break;
+       }
+
+       m_MMGR_FREE_CPSV_EVT(evt, NCS_SERVICE_ID_CPD);
+}
+
+/****************************************************************************
  * Name          : cpd_evt_proc_ckpt_info_upd
  *
  * Description   : Function to process update ckpt info receiving from CPND.
@@ -1496,6 +1524,7 @@ static uint32_t cpd_evt_proc_ckpt_info_u
        CPD_CKPT_MAP_INFO *map_info = NULL;
        CPSV_ND2D_CKPT_INFO_UPD *ckpt_info = &evt->info.ckpt_info;
        bool is_first_rep = false, is_new_noncol = false;
+       SaConstStringT ckpt_name = 
osaf_extended_name_borrow(&ckpt_info->ckpt_name);
        
        TRACE_ENTER();
 
@@ -1507,12 +1536,12 @@ static uint32_t cpd_evt_proc_ckpt_info_u
        }
 
        /* Verify if the checkpoint exist in the database */
-       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, &ckpt_info->ckpt_name, 
&map_info);
+       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, ckpt_name, &map_info);
        if (map_info) {
                if (!m_COMPARE_CREATE_ATTR(&ckpt_info->attributes, 
&map_info->attributes)) {
                        /* TODO: There is difference in checkpoint attribute 
betweent replicas.
                         * This should never happen */
-                       LOG_ER("cpd ckpt update - Difference in checkpoint 
attribute, ckpt name,dest :%s,%"PRIu64,ckpt_info->ckpt_name.value, sinfo->dest);
+                       LOG_ER("cpd ckpt update - Difference in checkpoint 
attribute, ckpt name,dest :%s,%"PRIu64 ,ckpt_name, sinfo->dest);
                        rc = SA_AIS_ERR_EXIST;
                        goto send_rsp;
                }
@@ -1523,11 +1552,11 @@ static uint32_t cpd_evt_proc_ckpt_info_u
        /* Add/Update the entries in ckpt DB, ckpt_map DB, ckpt_node DB */
        proc_rc = cpd_ckpt_db_update_after_headless(cb, &sinfo->dest, 
ckpt_info, &ckpt_node, &map_info);
        if (proc_rc == NCSCC_RC_OUT_OF_MEM) {
-               LOG_ER("cpd ckpt update failure ckpt name,dest :  %s, 
%"PRIu64,ckpt_info->ckpt_name.value, sinfo->dest);
+               LOG_ER("cpd ckpt update failure ckpt name,dest :  %s, %"PRIu64, 
ckpt_name, sinfo->dest);
                rc = SA_AIS_ERR_NO_MEMORY;
                goto send_rsp;
        } else if (proc_rc != NCSCC_RC_SUCCESS) {
-               LOG_ER("cpd ckpt update failure ckpt name,dest :  %s, 
%"PRIu64,ckpt_info->ckpt_name.value, sinfo->dest);
+               LOG_ER("cpd ckpt update failure ckpt name,dest :  %s, %"PRIu64, 
ckpt_name, sinfo->dest);
                rc = SA_AIS_ERR_LIBRARY;
                goto send_rsp;
        }
@@ -1570,18 +1599,18 @@ static uint32_t cpd_evt_proc_ckpt_info_u
                    && (!m_CPND_IS_ON_SCXB(cb->cpd_self_id, 
cpd_get_slot_sub_id_from_mds_dest(sinfo->dest)))) {
                        proc_rc = cpd_noncolloc_ckpt_rep_create(cb, 
&cb->loc_cpnd_dest, ckpt_node, map_info);
                        if (proc_rc == NCSCC_RC_SUCCESS)
-                               LOG_IN("cpd non coloc ckpt update success ckpt 
name %s, loc_cpnd_dest:%"PRIu64,ckpt_info->ckpt_name.value, cb->loc_cpnd_dest);
+                               LOG_IN("cpd non coloc ckpt update success ckpt 
name %s, loc_cpnd_dest:%"PRIu64, ckpt_name, cb->loc_cpnd_dest);
                        else 
-                               LOG_ER("cpd non coloc ckpt update failure ckpt 
name %s, loc_cpnd_dest:%"PRIu64,ckpt_info->ckpt_name.value, cb->loc_cpnd_dest);
+                               LOG_ER("cpd non coloc ckpt update failure ckpt 
name %s, loc_cpnd_dest:%"PRIu64, ckpt_name, cb->loc_cpnd_dest);
                }
                /*  if(cb->is_rem_cpnd_up && 
(cpd_get_slot_sub_id_from_mds_dest(sinfo->dest) != ckpt_node->ckpt_on_scxb2)) */
                if (cb->is_rem_cpnd_up
                    && (!m_CPND_IS_ON_SCXB(cb->cpd_remote_id, 
cpd_get_slot_sub_id_from_mds_dest(sinfo->dest)))) {
                        proc_rc = cpd_noncolloc_ckpt_rep_create(cb, 
&cb->rem_cpnd_dest, ckpt_node, map_info);
                        if (proc_rc == NCSCC_RC_SUCCESS)
-                               LOG_IN("cpd non coloc ckpt update success 
ckpt_name %s and rem_cpnd 
%"PRIu64,ckpt_info->ckpt_name.value,cb->rem_cpnd_dest);
+                               LOG_IN("cpd non coloc ckpt update success 
ckpt_name %s and rem_cpnd %"PRIu64, ckpt_name,cb->rem_cpnd_dest);
                        else
-                               LOG_ER("cpd non coloc ckpt update failure 
ckpt_name %s and rem_cpnd 
%"PRIu64,ckpt_info->ckpt_name.value,cb->rem_cpnd_dest);
+                               LOG_ER("cpd non coloc ckpt update failure 
ckpt_name %s and rem_cpnd %"PRIu64, ckpt_name,cb->rem_cpnd_dest);
                }
                /* ND on SCXB has created the same checkpoint, so is_new_noncol 
must be made to true */
                is_new_noncol = true;
diff --git a/osaf/services/saf/cpsv/cpd/cpd_imm.c 
b/osaf/services/saf/cpsv/cpd/cpd_imm.c
--- a/osaf/services/saf/cpsv/cpd/cpd_imm.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_imm.c
@@ -41,7 +41,7 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
                                                   const SaNameT *objectName, 
const SaImmAttrNameT *attributeNames);
 static uint32_t cpd_fetch_used_size(CPD_CKPT_INFO_NODE *ckpt_node, CPD_CB *cb);
 static uint32_t cpd_fetch_num_sections(CPD_CKPT_INFO_NODE *ckpt_node, CPD_CB 
*cb);
-static void  ckpt_replica_extract_node_name(SaNameT *nodeName, char *src);
+static void extract_node_name_from_replica_name(const char *replica_name, 
const char *ckpt_name, char **node_name);
 
 SaImmOiCallbacksT_2 oi_cbks = {
        .saImmOiAdminOperationCallback = NULL,
@@ -83,17 +83,10 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
        const SaImmAttrModificationT_2 *attrMods[10];
        CPD_CKPT_REPLOC_INFO *rep_info = NULL;
        CPD_REP_KEY_INFO key_info;
-       SaNameT replica_dn, ckptName, clm_node_name, nodeName;
-       char *ckpt_name, *node_name;
+       char *replica_dn = NULL, *ckpt_name = NULL, *node_name = NULL; 
+       SaConstStringT object_name;
        SaAisErrorT rc = SA_AIS_ERR_FAILED_OPERATION;
 
-       TRACE_ENTER();
-       memset(&replica_dn, 0, sizeof(SaNameT));
-       memset(&ckptName, 0, sizeof(ckptName));
-       memset(&nodeName, 0, sizeof(SaNameT));
-       strcpy((char *)ckptName.value, (char *)objectName->value);
-       ckptName.length = objectName->length;
-
        SaImmAttrValueT ckptSizeUpdateValue[] = { &ckpt_size };
        SaImmAttrValueT ckptUsedSizeUpdateValue[] = { &ckpt_used_size };
        SaImmAttrValueT ckptRetDurationUpdateValue[] = { &ckpt_ret_duration };
@@ -103,8 +96,9 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
        SaImmAttrValueT ckptNumReplicasUpdateValue[] = { &num_replicas };
        SaImmAttrValueT ckptNumSectionsUpdateValue[] = { &num_sections };
        SaImmAttrValueT ckptNumCorruptSectionsUpdateValue[] = { 
&num_corrupt_sections };
+       SaImmAttrValueT ckptReplicaIsActiveUpdateValue[] = { &replicaIsActive };
 
-       SaImmAttrValueT ckptReplicaIsActiveUpdateValue[] = { &replicaIsActive };
+       TRACE_ENTER();
 
        /* Get CPD CB Handle. */
        m_CPD_RETRIEVE_CB(cb);
@@ -112,47 +106,50 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
                return SA_AIS_ERR_FAILED_OPERATION;
        }
 
-       if (strncmp((char *)objectName->value, "safReplica=", 11) == 0) {
-               ckpt_name = strchr((char *)objectName->value, ',');
-               if (ckpt_name) {
-                       ckpt_name++;    /*escaping first ',' of the associated 
class DN name */
-                       ckpt_name = strchr((char *)ckpt_name, ',');
-                       if (ckpt_name) {
-                               ckpt_name++;
-                               memset(&ckptName, 0, sizeof(ckptName));
-                               strcpy((char *)ckptName.value, ckpt_name);
-                               ckptName.length = strlen(ckpt_name);
+       object_name = osaf_extended_name_borrow(objectName);
+
+       /* Extract ckpt_name and node_name */
+       if (strncmp(object_name, "safReplica=", 11) == 0) {
+               /* Extract ckpt_name */
+               char *p_char = strchr(object_name, ',');
+               if (p_char) {
+                       p_char++;       /* escaping first ',' of the associated 
class DN name */
+                       p_char = strchr(p_char, ',');
+                       if (p_char) {
+                               p_char++;
+                               ckpt_name = malloc(strlen(p_char) + 1); /*1 
extra byte for \0 char*/
+                               strcpy(ckpt_name, p_char);
                        }
                }
-       node_name = 
(char*)malloc((objectName->length-ckptName.length)*sizeof(char));
-       memset(node_name,0,(objectName->length-ckptName.length));
-       node_name = 
(char*)memcpy(node_name,(char*)objectName->value,objectName->length-ckptName.length-1);
 
-       ckpt_replica_extract_node_name(&nodeName, node_name);
-       free(node_name);
+               /* Extract node_name */
+               extract_node_name_from_replica_name(object_name, ckpt_name, 
&node_name);
+       } else {
+               ckpt_name = strdup(object_name);
        }
 
-       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, &ckptName, &map_info);
+       TRACE_4("ckpt_name: %s", ckpt_name);
+       TRACE_4("node_name: %s", node_name);
+
+       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, ckpt_name, &map_info);
 
        if (map_info) {
 
                cpd_ckpt_node_get(&cb->ckpt_tree, &map_info->ckpt_id, 
&ckpt_node);
 
                if (ckpt_node) {
-                               key_info.ckpt_name = ckpt_node->ckpt_name;
-                               key_info.node_name = nodeName;
-                               cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, 
&key_info, &rep_info);
+                       key_info.ckpt_name = ckpt_node->ckpt_name;
+                       key_info.node_name = node_name;
+                       cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&rep_info);
                        
                        if (rep_info) {
-                               clm_node_name.length = 
m_NCS_OS_NTOHS(rep_info->rep_key.node_name.length);
-                               strncpy((char *)clm_node_name.value, (char 
*)rep_info->rep_key.node_name.value,
-                                       clm_node_name.length);
                                /* escapes rdn's  ',' with '\'   */
-                               cpd_create_association_class_dn(&clm_node_name,
-                                                               
&rep_info->rep_key.ckpt_name, "safReplica",
+                               
cpd_create_association_class_dn(rep_info->rep_key.node_name, 
+                                                               
rep_info->rep_key.ckpt_name, "safReplica",
                                                                &replica_dn);
 
-                               if (m_CMP_HORDER_SANAMET(*objectName, 
replica_dn) == 0) {
+                               TRACE("replica_dn: %s", replica_dn);
+                               if (strcmp(object_name, replica_dn) == 0){
 
                                        /* Walk through the attribute Name list 
*/
                                        while ((attributeName = 
attributeNames[i]) != NULL) {
@@ -189,7 +186,7 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
 
                        }
 
-                       if (m_CMP_HORDER_SANAMET(*objectName, 
ckpt_node->ckpt_name) == 0) {
+                       if (strcmp(object_name, ckpt_node->ckpt_name) == 0){
                                /* Walk through the attribute Name list */
                                while ((attributeName = attributeNames[i]) != 
NULL) {
                                        if (strcmp(attributeName, 
"saCkptCheckpointSize") == 0) {
@@ -313,6 +310,15 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
        }
        
 done:
+       if (ckpt_name != NULL)
+               free(ckpt_name);
+
+       if (node_name != NULL)
+               free(node_name);
+
+       if (replica_dn != NULL)
+               free(replica_dn);
+
        ncshm_give_hdl(cb->cpd_hdl);
        TRACE_LEAVE();
        return rc;
@@ -337,13 +343,16 @@ SaAisErrorT create_runtime_replica_objec
        SaImmAttrValuesT_2 replica_dn;
        SaAisErrorT rc = SA_AIS_OK;
        const SaImmAttrValuesT_2 *attrValues[2];
+       char* replica_name = NULL;
        SaNameT replica_rdn;
        SaNameT ckpt_name;
        memset(&ckpt_name, 0, sizeof(SaNameT));
 
        TRACE_ENTER();
        /* escapes rdn's  ',' with '\'   */
-       cpd_create_association_class_dn(&ckpt_reploc_node->rep_key.node_name, 
NULL, "safReplica", &replica_rdn);
+       cpd_create_association_class_dn(ckpt_reploc_node->rep_key.node_name, 
NULL, "safReplica", &replica_name);
+
+       osaf_extended_name_lend(replica_name, &replica_rdn);
 
        dn[0] = &replica_rdn;
        replica_dn.attrName = "safReplica";
@@ -354,15 +363,52 @@ SaAisErrorT create_runtime_replica_objec
        attrValues[0] = &replica_dn;
        attrValues[1] = NULL;
 
-       strcpy((char *)ckpt_name.value, (char 
*)ckpt_reploc_node->rep_key.ckpt_name.value);
-       ckpt_name.length = strlen((char *)ckpt_name.value);
+       osaf_extended_name_lend(ckpt_reploc_node->rep_key.ckpt_name, 
&ckpt_name);
 
        rc = immutil_saImmOiRtObjectCreate_2(immOiHandle, "SaCkptReplica", 
&ckpt_name, attrValues);
+       if (rc != SA_AIS_OK)
+               LOG_ER("create_runtime_replica_object - saImmOiRtObjectCreate_2 
failed with error = %u", rc);
+
+       free(replica_name);
        TRACE_LEAVE2("Ret val %d",rc);
        return rc;
 }
 
 /****************************************************************************
+ * Name          : delete_runtime_replica_object
+ *
+ * Description   : This function is invoked to delete a replica runtime object 
+ *
+ * Arguments     : ckpt_reploc_node - Checkpoint reploc node 
+ *                 immOiHandle      - IMM handle
+ *
+ * Return Values : SaAisErrorT 
+ *
+ * Notes         : None.
+ *****************************************************************************/
+SaAisErrorT delete_runtime_replica_object(CPD_CKPT_REPLOC_INFO 
*ckpt_reploc_node, SaImmOiHandleT immOiHandle)
+{
+       SaNameT replica_name;
+       char* replica_dn = NULL;
+       SaAisErrorT rc;
+
+       TRACE_ENTER();
+
+       cpd_create_association_class_dn(ckpt_reploc_node->rep_key.node_name,
+                                       ckpt_reploc_node->rep_key.ckpt_name, 
"safReplica", &replica_dn);
+
+       osaf_extended_name_lend(replica_dn, &replica_name);
+       rc = immutil_saImmOiRtObjectDelete(immOiHandle, &replica_name); 
+       if (rc != SA_AIS_OK) {
+               LOG_ER("Deleting run time object %s Failed - rc = 
%d",replica_dn, rc);
+       }
+
+       free(replica_dn);
+
+       TRACE_LEAVE();
+       return rc;
+}
+/****************************************************************************
  * Name          : create_runtime_ckpt_object
  *
  * Description   : This function is invoked to create a checkpoint runtime 
object 
@@ -379,8 +425,8 @@ SaAisErrorT create_runtime_ckpt_object(C
 {
        SaNameT parentName;
        SaAisErrorT rc = SA_AIS_OK;
-       char *dndup = strdup((char *)ckpt_node->ckpt_name.value);
-       char *parent_name = strchr((char *)ckpt_node->ckpt_name.value, ',');
+       char *dndup = strdup(ckpt_node->ckpt_name);
+       char *parent_name = strchr(ckpt_node->ckpt_name, ',');
        char *rdnstr;
        const SaImmAttrValuesT_2 *attrValues[7];
        SaImmAttrValueT dn[1], create_time[1], creat_flags[1], max_sections[1],
@@ -395,10 +441,10 @@ SaAisErrorT create_runtime_ckpt_object(C
        if (parent_name != NULL) {
                rdnstr = strtok(dndup, ",");
                parent_name++;
-               strcpy((char *)parentName.value, parent_name);
-               parentName.length = strlen((char *)parent_name);
+
+               osaf_extended_name_lend(parent_name, &parentName);
        } else
-               rdnstr = (char *)ckpt_node->ckpt_name.value;
+               rdnstr = (char *)ckpt_node->ckpt_name;
 
        dn[0] = &rdnstr;
        create_time_sec = ckpt_node->create_time * SA_TIME_ONE_SECOND;
@@ -448,7 +494,7 @@ SaAisErrorT create_runtime_ckpt_object(C
 
        rc = immutil_saImmOiRtObjectCreate_2(immOiHandle, "SaCkptCheckpoint", 
&parentName, attrValues);
        if (rc != SA_AIS_OK)
-               LOG_ER("saImmOiRtObjectCreate_2 failed with error = %u", rc);
+               LOG_ER("create_runtime_ckpt_object - saImmOiRtObjectCreate_2 
failed with error = %u", rc);
 
        free(dndup);
        TRACE_LEAVE2("Ret val %d",rc);
@@ -457,6 +503,32 @@ SaAisErrorT create_runtime_ckpt_object(C
 }      /* End create_runtime_object() */
 
 /****************************************************************************
+ * Name          : delete_runtime_ckpt_object
+ *
+ * Description   : This function is invoked to delete a checkpoint runtime 
object 
+ *
+ * Arguments     : ckpt_node        - Checkpoint Node 
+ *                 immOiHandle      - IMM handle
+ *
+ * Return Values : SaAisErrorT 
+ *
+ * Notes         : None.
+ *****************************************************************************/
+SaAisErrorT delete_runtime_ckpt_object(CPD_CKPT_INFO_NODE *ckpt_node, 
SaImmOiHandleT immOiHandle)
+{
+       SaNameT ckpt_name;
+       SaAisErrorT rc;
+
+       osaf_extended_name_lend(ckpt_node->ckpt_name, &ckpt_name);
+
+       rc =  immutil_saImmOiRtObjectDelete(immOiHandle, &ckpt_name);
+       if (rc != SA_AIS_OK)
+               LOG_ER("Deleting run time object %s failed - rc = %d", 
ckpt_node->ckpt_name, rc);
+
+       return rc;
+}
+
+/****************************************************************************
  * Name          : cpd_imm_init
  *
  * Description   : Initialize the OI and get selection object  
@@ -532,31 +604,60 @@ void cpd_imm_declare_implementer(SaImmOi
        TRACE_LEAVE();
 }
 
+/****************************************************************************
+ * Name          : cpd_create_association_class_dn
+ *
+ * Description   : This function is invoked to create a 
+ *                 dn = rdn_tag + '=' + child_dn + parent_dn 
+ *                 User must free() the dn after using
+ *
+ * Arguments     : 
+ *
+ * Return Values : SaAisErrorT 
+ *
+ * Notes         : None.
+ *****************************************************************************/
+void cpd_create_association_class_dn(const char *child_dn, const char 
*parent_dn,
+                                    const char *rdn_tag, char **dn)
+{
+       int i;
+       size_t child_dn_length = 0;
+       size_t parent_dn_length = 0;
+       size_t rdn_tag_length = 0;
+       size_t class_dn_length = 0;
 
-void cpd_create_association_class_dn(const SaNameT *child_dn, const SaNameT 
*parent_dn,
-                                    const char *rdn_tag, SaNameT *dn)
-{
-       char *p = (char *)dn->value;
-       int i;
+       if (child_dn != NULL)
+               child_dn_length = strlen(child_dn);
 
-       memset(dn, 0, sizeof(SaNameT));
+       if (parent_dn != NULL)
+               parent_dn_length = strlen(parent_dn);
 
-       p += sprintf((char *)dn->value, "%s=", rdn_tag);
+       if (rdn_tag != NULL)
+               rdn_tag_length = strlen(rdn_tag);
+
+       class_dn_length = child_dn_length + parent_dn_length + rdn_tag_length + 
10;
+
+       char *class_dn = malloc(class_dn_length);
+       memset(class_dn, 0, class_dn_length);
+
+       char *p = class_dn;
+
+       p += sprintf(class_dn, "%s=", rdn_tag);
 
        /* copy child DN and escape commas */
-       for (i = 0; i < child_dn->length; i++) {
-               if (child_dn->value[i] == ',')
+       for (i = 0; i < child_dn_length; i++) {
+               if (child_dn[i] == ',')
                        *p++ = 0x5c;    /* backslash */
 
-               *p++ = child_dn->value[i];
+               *p++ = child_dn[i];
        }
 
        if (parent_dn != NULL) {
                *p++ = ',';
-               strcpy(p, (char *)parent_dn->value);
+               strcpy(p, parent_dn);
        }
 
-       dn->length = strlen((char *)dn->value);
+       *dn = class_dn;
 }
 
 static uint32_t cpd_fetch_used_size(CPD_CKPT_INFO_NODE *ckpt_node, CPD_CB *cb)
@@ -648,30 +749,41 @@ static uint32_t cpd_fetch_num_sections(C
        return rc;
 }
 
+/****************************************************************************
+ * Name          : extract_node_name_from_replica_name
+ *
+ * Description   : This function extract node_name without '/' from replica
+ *                 name. The user must free() the node_name after using
+ *
+ * Arguments     : 
+ *
+ * Return Values : SaAisErrorT 
+ *
+ * Notes         : None.
+ *****************************************************************************/
+static void extract_node_name_from_replica_name(const char *replica_name, 
const char *ckpt_name, char **node_name)
+{
+       char *dest = NULL;
+       SaUint32T i = 0, k = 0;
+       
+       if (replica_name == NULL || ckpt_name == NULL)
+               return;
 
+       /* Remove slash '/' , the ',' right before the ckpt_name and ckpt_name 
*/ 
+       int node_name_length = strlen(replica_name) - strlen(ckpt_name) - 
strlen("safReplica=") - 1;
+       dest = malloc(node_name_length);
+       memset(dest, 0, node_name_length);
 
-static void ckpt_replica_extract_node_name(SaNameT *nodeName, char *src)
-{
-       char *dest = NULL, *dest_name;
-       SaUint32T len_src = 0;
-       SaUint32T i = 0, k = 0;
+       const char* src = replica_name + strlen("safReplica=");
 
-       len_src = strlen(src);
-       dest = (char *) malloc(sizeof(char) * len_src + 1);
-       memset(dest, 0, sizeof(char) * len_src + 1);
-       for (i = 0; i < len_src; i++) {
+       for (i = 0; i < node_name_length; i++) {
                if (src[i] != '\\') {
                        dest[k] = src[i];
                        k++;
                }
        }
 
-       /* 11 is the length of "safReplica=" */
-       dest_name = dest + 11;  
-       strcpy((char*)nodeName->value, dest_name);
-       nodeName->length = strlen(dest_name);
-
-       free(dest);
+       *node_name = dest;
 
        return;
 }
@@ -780,8 +892,7 @@ SaAisErrorT cpd_clean_checkpoint_objects
        searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
        searchParam.searchOneAttr.attrValue = &class_name;
        SaNameT root_name;
-       root_name.value[0] = '\0';
-       root_name.length = 1;
+       osaf_extended_name_lend("\0", &root_name);
 
        rc = immutil_saImmOmSearchInitialize_2(
                        immOmHandle,
@@ -806,10 +917,10 @@ SaAisErrorT cpd_clean_checkpoint_objects
                /* Delete the runtime object and its children. */
                rc = immutil_saImmOiRtObjectDelete(cb->immOiHandle, 
&object_name);
                if (rc == SA_AIS_OK) {
-                       TRACE("Object \"%s\" deleted", (char *) 
object_name.value);
+                       TRACE("Object \"%s\" deleted", (char *) 
osaf_extended_name_borrow(&object_name));
                } else {
                        LOG_ER("%s saImmOiRtObjectDelete for \"%s\" FAILED %d",
-                                       __FUNCTION__, (char *) 
object_name.value, rc);
+                                       __FUNCTION__, (char *) 
osaf_extended_name_borrow(&object_name), rc);
                }
        }
 
@@ -866,8 +977,7 @@ SaUint32T cpd_get_scAbsenceAllowed_attr(
        char object_name_str[] = "opensafImm=opensafImm,safApp=safImmService";
 
        SaNameT object_name;
-       strncpy((char *) object_name.value, object_name_str, 
SA_MAX_NAME_LENGTH);
-       object_name.length = strlen((char *) object_name.value) + 1;
+       osaf_extended_name_lend(object_name_str, &object_name);
 
        /* Save immutil settings and reconfigure */
        struct ImmutilWrapperProfile tmp_immutilWrapperProfile;
diff --git a/osaf/services/saf/cpsv/cpd/cpd_main.c 
b/osaf/services/saf/cpsv/cpd/cpd_main.c
--- a/osaf/services/saf/cpsv/cpd/cpd_main.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_main.c
@@ -15,6 +15,7 @@
  *
  */
 
+#include <stdlib.h>
 #include <ncssysf_tsk.h>
 
 #include <logtrace.h>
@@ -26,6 +27,12 @@ static int __init_cpd(void)
 {
        NCS_LIB_REQ_INFO lib_create;
 
+       /* Enable extended SaNameT */
+       if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
+               LOG_ER("Failed to set environment variable: 
SA_ENABLE_EXTENDED_NAMES");
+               return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE);
+       }
+
        /* Init LIB_CREATE request for Server */
        memset(&lib_create, 0, sizeof(lib_create));
        lib_create.i_op = NCS_LIB_REQ_CREATE;
diff --git a/osaf/services/saf/cpsv/cpd/cpd_mbcsv.c 
b/osaf/services/saf/cpsv/cpd/cpd_mbcsv.c
--- a/osaf/services/saf/cpsv/cpd/cpd_mbcsv.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_mbcsv.c
@@ -532,7 +532,7 @@ uint32_t cpd_mbcsv_enc_msg_resp(CPD_CB *
                nref_info = ckpt_node->node_list;
 
                /* Populate the A2S_CKPT_CREATE structure */
-               ckpt_create.ckpt_name = ckpt_node->ckpt_name;
+               osaf_extended_name_lend(ckpt_node->ckpt_name, 
&ckpt_create.ckpt_name);
                ckpt_create.ckpt_id = ckpt_node->ckpt_id;
                ckpt_create.ckpt_attrib = ckpt_node->attributes;
                ckpt_create.is_unlink_set = ckpt_node->is_unlink_set;
@@ -790,6 +790,10 @@ uint32_t cpd_mbcsv_dec_async_update(CPD_
                        TRACE_4("cpd standby create evt failed");
                        goto end;
                }
+
+               if (osaf_is_an_extended_name(&ckpt_create->ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&ckpt_create->ckpt_name));
+
                if (ckpt_create->dest_list)
                        m_MMGR_FREE_CPSV_SYS_MEMORY(ckpt_create->dest_list);
                m_MMGR_FREE_CPD_A2S_CKPT_CREATE(ckpt_create);
@@ -812,6 +816,9 @@ uint32_t cpd_mbcsv_dec_async_update(CPD_
                        goto end;
                }
 
+               if (osaf_is_an_extended_name(&ckpt_unlink->ckpt_name))
+                       free((void 
*)osaf_extended_name_borrow(&ckpt_unlink->ckpt_name));
+
                break;
 
        case CPD_A2S_MSG_CKPT_RDSET:
diff --git a/osaf/services/saf/cpsv/cpd/cpd_proc.c 
b/osaf/services/saf/cpsv/cpd/cpd_proc.c
--- a/osaf/services/saf/cpsv/cpd/cpd_proc.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_proc.c
@@ -44,10 +44,8 @@ uint32_t cpd_noncolloc_ckpt_rep_create(C
        CPSV_EVT send_evt;
        uint32_t rc;
        CPSV_D2ND_CKPT_INFO *d2nd_info = NULL;
-       SaNameT ckpt_name;
 
        TRACE_ENTER();
-       memset(&ckpt_name, 0, sizeof(SaNameT));
 
        /* Update the database with new replica */
        rc = cpd_ckpt_db_entry_update(cb, cpnd_dest, NULL, &ckpt_node, 
&map_info);
@@ -65,9 +63,7 @@ uint32_t cpd_noncolloc_ckpt_rep_create(C
        send_evt.type = CPSV_EVT_TYPE_CPND;
        send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE;
 
-       ckpt_name = map_info->ckpt_name;
-       ckpt_name.length = m_NCS_OS_NTOHS(ckpt_name.length);
-       send_evt.info.cpnd.info.ckpt_create.ckpt_name = ckpt_name;
+       osaf_extended_name_lend(map_info->ckpt_name, 
&send_evt.info.cpnd.info.ckpt_create.ckpt_name);
 
        d2nd_info = &send_evt.info.cpnd.info.ckpt_create.ckpt_info;
 
@@ -144,13 +140,13 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
        SaClmClusterNodeT cluster_node;
        NODE_ID key;
        SaClmNodeIdT node_id;
-       SaNameT ckpt_name;
+       SaConstStringT ckpt_name;
        CPD_REP_KEY_INFO key_info;
        bool noncoll_rep_on_payload = false;
 
-       memset(&ckpt_name, 0, sizeof(SaNameT));
        memset(&cluster_node, 0, sizeof(SaClmClusterNodeT));
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
+
        /* Upfront allocate all the memory required for this ckpt */
        if (*io_map_info == NULL) {
                map_info = m_MMGR_ALLOC_CPD_CKPT_MAP_INFO;
@@ -158,11 +154,14 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
                        LOG_ER("CPD CPD_CKPT_MAP_INFO alloc failed"); 
                        goto free_mem;
                }
+               memset(map_info, 0, sizeof(CPD_CKPT_MAP_INFO));
+
                ckpt_node = m_MMGR_ALLOC_CPD_CKPT_INFO_NODE;
                if (ckpt_node == NULL) {
                        LOG_ER("CPD_CKPT_INFO_NODE alloc failed ");
                        goto free_mem;
                }
+               memset(ckpt_node, 0, sizeof(CPD_CKPT_INFO_NODE));
        } else {
                map_info = *io_map_info;
        }
@@ -177,7 +176,8 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
 
        key = m_NCS_NODE_ID_FROM_MDS_DEST(*cpnd_dest);
        node_id = key;
-/*   Processing for the Node name , with CLM  */
+
+       /*   Processing for the Node name , with CLM  */
 
        if (saClmClusterNodeGet(cb->clm_hdl, node_id, CPD_CLM_API_TIMEOUT, 
&cluster_node) != SA_AIS_OK) {
                proc_rc = NCSCC_RC_FAILURE;
@@ -185,14 +185,15 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
                goto free_mem;
        }
 
-       node_info->node_name = cluster_node.nodeName;
+       /* Allocate node_name for node_info */
+       if (node_info->node_name == NULL)
+               node_info->node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
 
-       key_info.node_name = cluster_node.nodeName;
+       key_info.node_name = osaf_extended_name_borrow(&cluster_node.nodeName);
        if (ckpt_create != NULL) {
-               key_info.ckpt_name = ckpt_create->ckpt_name;
+               key_info.ckpt_name = 
osaf_extended_name_borrow(&ckpt_create->ckpt_name);
        } else {
                ckpt_name = (*io_map_info)->ckpt_name;
-               ckpt_name.length = m_NCS_OS_NTOHS(ckpt_name.length);
                key_info.ckpt_name = ckpt_name;
        }
 
@@ -204,10 +205,12 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
 
                memset(reploc_info, 0, sizeof(CPD_CKPT_REPLOC_INFO));
 
-               reploc_info->rep_key.node_name = cluster_node.nodeName;
+               /* Allocate node_name for reploc_info */
+               reploc_info->rep_key.node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
 
                if ((ckpt_create != NULL) && 
(ckpt_create->attributes.creationFlags != 0)) {
-                       reploc_info->rep_key.ckpt_name = ckpt_create->ckpt_name;
+                       /* Allocate ckpt_name for reploc_info */
+                       reploc_info->rep_key.ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_create->ckpt_name));
 
                        if 
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_create->attributes))
                                reploc_info->rep_type = REP_NONCOLL;
@@ -224,10 +227,10 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
                                        reploc_info->rep_type = REP_NOTACTIVE;
                        }
                } else {
-                       if (ckpt_create != NULL)                    
-                               reploc_info->rep_key.ckpt_name = 
ckpt_create->ckpt_name;
+                       if (ckpt_create != NULL) 
+                               reploc_info->rep_key.ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_create->ckpt_name));
                        else
-                               reploc_info->rep_key.ckpt_name = ckpt_name;
+                               reploc_info->rep_key.ckpt_name = 
strdup(ckpt_name);
 
                        if 
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&(*io_map_info)->attributes))
                                reploc_info->rep_type = REP_NONCOLL;
@@ -292,21 +295,20 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
        } else {
                /* Fill the Map Info */
                memset(map_info, 0, sizeof(CPD_CKPT_MAP_INFO));
-               /*   
memcpy(&map_info->ckpt_name,&ckpt_create->ckpt_name,sizeof(ckpt_create->ckpt_name.length));
 */
-               map_info->ckpt_name = ckpt_create->ckpt_name;
+               map_info->ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_create->ckpt_name));
                map_info->attributes = ckpt_create->attributes;
                map_info->client_version = ckpt_create->client_version;
                map_info->ckpt_id = cb->nxt_ckpt_id++;
 
                proc_rc = cpd_ckpt_map_node_add(&cb->ckpt_map_tree, map_info);
                if (proc_rc != NCSCC_RC_SUCCESS) {
-               TRACE_4("cpd db add failed for ckpt_id:%llx",map_info->ckpt_id);
+                       LOG_ER("cpd db add map_node failed for 
ckpt_id:%llx",map_info->ckpt_id);
                        goto map_node_add_fail;
                }
 
-               memset(ckpt_node, 0, sizeof(CPD_CKPT_INFO_NODE));
+               m_MMGR_ZERO_CPD_CKPT_INFO_NODE(ckpt_node);
                ckpt_node->ckpt_id = map_info->ckpt_id;
-               ckpt_node->ckpt_name = ckpt_create->ckpt_name;
+               ckpt_node->ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_create->ckpt_name));
                ckpt_node->is_unlink_set = false;
                ckpt_node->attributes = ckpt_create->attributes;
                if (ckpt_node->attributes.maxSections == 1)
@@ -338,7 +340,7 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
                }
                proc_rc = cpd_ckpt_node_add(&cb->ckpt_tree, ckpt_node, 
cb->ha_state, cb->immOiHandle);
                if (proc_rc != NCSCC_RC_SUCCESS) {
-                       TRACE_4("cpd db add failed for 
ckpt_id:%llx",ckpt_node->ckpt_id);
+                       LOG_ER("cpd db add ckpt_node failed for 
ckpt_id:%llx",ckpt_node->ckpt_id);
                        goto ckpt_node_add_fail;
                }
                if (reploc_info && create_reploc_node) {
@@ -366,20 +368,26 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
        return NCSCC_RC_SUCCESS;
 
  ckpt_node_add_fail:
+       cpd_ckpt_map_node_delete(cb, map_info);
+       map_info = NULL;
+
  map_node_add_fail:
-       /* This is the unexpected failure case, (Process TBD ) */
-       TRACE("UNEXPECTED FAILURE");
-       TRACE_LEAVE();
-       return proc_rc;
-
  free_mem:
        if (*io_map_info == NULL) {
-               if (ckpt_node)
+               if (ckpt_node) {
                        m_MMGR_FREE_CPD_CKPT_INFO_NODE(ckpt_node);
+               }
 
-               if (map_info)
+               if (map_info) {
                        m_MMGR_FREE_CPD_CKPT_MAP_INFO(map_info);
+               }
        }
+
+       if (node_info) {
+               m_MMGR_FREE_CPD_CPND_INFO_NODE(node_info);
+
+       }
+
        TRACE_LEAVE();
        return proc_rc;
 
@@ -388,7 +396,7 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
 /****************************************************************************
  * Name          : cpd_noncolloc_ckpt_rep_delete
  *
- * Description   : This routine will run the policy to create the 
non-collacated
+ * Description   : This routine will run the policy to delete the 
non-collacated
  *                 ckpt replicas.
  *
  * Return Values : NCSCC_RC_SUCCESS/Error.
@@ -403,13 +411,11 @@ uint32_t cpd_noncolloc_ckpt_rep_delete(C
        CPD_CPND_INFO_NODE *node_info = NULL;
        uint32_t rc = NCSCC_RC_SUCCESS;
        bool ckptid_flag = false;
-       SaNameT ckpt_name, node_name;
+       SaConstStringT ckpt_name = NULL, node_name = NULL;
        CPD_REP_KEY_INFO key_info;
        CPD_CKPT_REPLOC_INFO *rep_info = NULL;
 
        TRACE_ENTER();
-       memset(&ckpt_name, 0, sizeof(SaNameT));
-       memset(&node_name, 0, sizeof(SaNameT));
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
 
        /* Only the created replicas are present, need to delete them */
@@ -429,13 +435,11 @@ uint32_t cpd_noncolloc_ckpt_rep_delete(C
                                }
                        }
                        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
-                       memset(&ckpt_name, 0, sizeof(SaNameT));
-                       memset(&node_name, 0, sizeof(SaNameT));
 
                        ckpt_name = ckpt_node->ckpt_name;
                        key_info.ckpt_name = ckpt_name;
 
-                       node_name = node_info->node_name;
+                       node_name = strdup(node_info->node_name);
 
                        cpd_a2s_ckpt_dest_del(cb, ckpt_node->ckpt_id, 
&nref_info->dest, ckptid_flag);
 
@@ -456,12 +460,14 @@ uint32_t cpd_noncolloc_ckpt_rep_delete(C
                }
 
                key_info.node_name = node_name;
-               /*  key_info.node_name.length = 
m_NCS_OS_NTOHS(node_name.length); */
                cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&rep_info);
                if (rep_info) {
                        cpd_ckpt_reploc_node_delete(cb, rep_info, 
ckpt_node->is_unlink_set);
                }
 
+               if (node_name != NULL)
+                       free((void *)node_name);
+
                m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info);
                nref_info = nref_next;
        }
@@ -494,18 +500,16 @@ uint32_t cpd_process_ckpt_delete(CPD_CB 
        CPD_CKPT_MAP_INFO *map_info = NULL;
        CPD_CPND_INFO_NODE *node_info = NULL;
        SaCkptCheckpointCreationAttributesT create_attr;
-       SaNameT ckpt_name, node_name;
+       SaConstStringT ckpt_name = NULL, node_name = NULL;
        CPD_REP_KEY_INFO key_info;
        CPD_CKPT_REPLOC_INFO *rep_info = NULL;
 
        TRACE_ENTER();
-       memset(&ckpt_name, 0, sizeof(SaNameT));
-       memset(&node_name, 0, sizeof(SaNameT));
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
        memset(&create_attr, 0, sizeof(SaCkptCheckpointCreationAttributesT));
 
        if (ckpt_node->is_unlink_set != true) {
-               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&ckpt_node->ckpt_name, &map_info);
+               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, ckpt_node->ckpt_name, 
&map_info);
                if (map_info == NULL) {
                        TRACE_4("cpd db del failed for 
ckpt_id:%llu",ckpt_node->ckpt_id);
                        TRACE_LEAVE();
@@ -602,7 +606,7 @@ uint32_t cpd_process_ckpt_delete(CPD_CB 
        cpd_cpnd_info_node_get(&cb->cpnd_tree, &sinfo->dest, &node_info);
 
        if (node_info) {
-               node_name = node_info->node_name;
+               node_name = strdup(node_info->node_name);
                /* Remove the ckpt reference from the node_info */
                for (cref_info = node_info->ckpt_ref_list; cref_info != NULL; 
cref_info = cref_info->next) {
                        if (cref_info->ckpt_node == ckpt_node) {
@@ -633,6 +637,9 @@ uint32_t cpd_process_ckpt_delete(CPD_CB 
                cpd_ckpt_reploc_node_delete(cb, rep_info, 
ckpt_node->is_unlink_set);
        }
 
+       if (node_name != NULL)
+               free((void *)node_name);
+
        if (ckpt_node->dest_cnt == 0) {
                *o_ckpt_node_deleted = false;
                *o_is_active_changed = false;
@@ -698,8 +705,8 @@ uint32_t cpd_process_cpnd_down(CPD_CB *c
                        }
                }
 
-               key_info.ckpt_name = ckpt_node->ckpt_name;
-               key_info.node_name = cpnd_info->node_name;
+               key_info.ckpt_name = strdup(ckpt_node->ckpt_name);
+               key_info.node_name = strdup(cpnd_info->node_name);
 
                if (match_found == true) {
                        /* Remove the node reference from the ckpt_node */
@@ -809,7 +816,7 @@ uint32_t cpd_process_cpnd_down(CPD_CB *c
                        send_evt.info.cpnd.info.ckpt_del.mds_dest = *cpnd_dest;
                        if (ckpt_node->dest_cnt == 0) {
                                TRACE_1("cpd ckpt del success for 
ckpt_id:%llx",ckpt_node->ckpt_id);
-                               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&ckpt_node->ckpt_name, &map_info);
+                               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
ckpt_node->ckpt_name, &map_info);
 
                                /* Remove the ckpt_node */
                                (void)cpd_ckpt_node_delete(cb, ckpt_node);
@@ -879,6 +886,9 @@ uint32_t cpd_process_cpnd_down(CPD_CB *c
                        cpd_ckpt_reploc_node_delete(cb, rep_info, 
ckpt_node->is_unlink_set);
                }
 
+               free((void *)key_info.ckpt_name);
+               free((void *)key_info.node_name);
+
                m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info);
 
                cref_info = cpnd_info->ckpt_ref_list;
@@ -994,7 +1004,7 @@ uint32_t cpd_proc_retention_set(CPD_CB *
  * Notes         : None
 
**************************************************************************************/
 
-uint32_t cpd_proc_unlink_set(CPD_CB *cb, CPD_CKPT_INFO_NODE **ckpt_node, 
CPD_CKPT_MAP_INFO *map_info, SaNameT *ckpt_name)
+uint32_t cpd_proc_unlink_set(CPD_CB *cb, CPD_CKPT_INFO_NODE **ckpt_node, 
CPD_CKPT_MAP_INFO *map_info, SaConstStringT ckpt_name)
 {
        SaAisErrorT rc = SA_AIS_OK;
 
@@ -1005,7 +1015,7 @@ uint32_t cpd_proc_unlink_set(CPD_CB *cb,
        if (map_info) {
                cpd_ckpt_node_get(&cb->ckpt_tree, &map_info->ckpt_id, 
ckpt_node);
        } else {
-               TRACE_4("cpd proc unlink set failed for 
ckpt_name:%s",ckpt_name->value);
+               TRACE_4("cpd proc unlink set failed for 
ckpt_name:%s",ckpt_name);
                /* There is no checkpoint opened with this name */
                return SA_AIS_ERR_NOT_EXIST;
        }
@@ -1013,7 +1023,7 @@ uint32_t cpd_proc_unlink_set(CPD_CB *cb,
        if ((*ckpt_node) == 0) {
                /* This should not happen, Incorrect CPD database 
                   Handling, TBD */
-               TRACE_4("cpd proc unlink set faile for 
ckpt_name:%s",ckpt_name->value);
+               LOG_ER("cpd proc unlink set failed - there is no ckpt_node for 
ckpt_name:%s",ckpt_name);
                return SA_AIS_ERR_NOT_EXIST;
        }
 
@@ -1128,16 +1138,12 @@ void cpd_cb_dump(void)
                                                                                
    (uint8_t *)&prev_ckpt_id);
 
                        while (ckpt_node) {
-                               uint32_t i = 0;
                                prev_ckpt_id = ckpt_node->ckpt_id;
 
                                
TRACE("------------------------------------------------------");
                                TRACE(" CKPT ID:  = %d", 
(uint32_t)ckpt_node->ckpt_id);
-                               TRACE(" CKPT Name len  = %d", 
ckpt_node->ckpt_name.length);
-                               TRACE(" CKPT Name: ");
-                               for (i = 0; i < ckpt_node->ckpt_name.length; 
i++) {
-                                       TRACE("%c", 
ckpt_node->ckpt_name.value[i]);
-                               }
+                               TRACE(" CKPT Name len  = %lu", 
strlen(ckpt_node->ckpt_name));
+                               TRACE(" CKPT Name: %s", ckpt_node->ckpt_name);
 
                                TRACE(" UNLINK = %d, Active Exists = %d", 
ckpt_node->is_unlink_set,
                                       ckpt_node->is_active_exists);
@@ -1182,24 +1188,16 @@ void cpd_cb_dump(void)
                /* Print the CKPT Details */
                if (cb->ckpt_map_tree.n_nodes > 0) {
                        CPD_CKPT_MAP_INFO *ckpt_map_node = NULL;
-                       SaNameT name;
-
-                       memset(&name, 0, sizeof(SaNameT));
+                       SaConstStringT name;
 
                        /* Get the First Node */
-                       ckpt_map_node = (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(&cb->ckpt_map_tree,
-                                                                               
       (uint8_t *)name.value);
+                       ckpt_map_node = (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(&cb->ckpt_map_tree, (uint8_t *)&name);
                        while (ckpt_map_node != NULL) {
-                               uint32_t i;
-
                                name = ckpt_map_node->ckpt_name;
 
                                
TRACE("------------------------------------------------------");
-                               TRACE(" CKPT Name len  = %d", 
ckpt_map_node->ckpt_name.length);
-                               TRACE(" CKPT Name: ");
-                               for (i = 0; i < 
ckpt_map_node->ckpt_name.length; i++) {
-                                       TRACE("%c", 
ckpt_map_node->ckpt_name.value[i]);
-                               }
+                               TRACE(" CKPT Name len  = %lu", strlen(name));
+                               TRACE(" CKPT Name: %s", name);
 
                                TRACE(" CKPT ID:  = %d", 
(uint32_t)ckpt_map_node->ckpt_id);
 
@@ -1212,7 +1210,7 @@ void cpd_cb_dump(void)
                                TRACE(" maxSectionIdSize: %d, ", 
(uint32_t)ckpt_map_node->attributes.maxSectionIdSize);
                                ckpt_map_node =
                                    (CPD_CKPT_MAP_INFO 
*)ncs_patricia_tree_getnext(&cb->ckpt_map_tree,
-                                                                               
   (uint8_t *)name.value);
+                                                                               
   (uint8_t *)name);
                        }
                        TRACE(" End of CKPT Info");
                }
@@ -1234,20 +1232,21 @@ void cpd_cb_dump(void)
 uint32_t cpd_ckpt_reploc_imm_object_delete(CPD_CB *cb, CPD_CKPT_REPLOC_INFO 
*ckpt_reploc_node, bool is_unlink_set)
 {
 
-       SaNameT replica_dn, node_name;
-       memset(&replica_dn, 0, sizeof(SaNameT));
-       memset(&node_name, 0, sizeof(SaNameT));
+       char *replica_dn = NULL;
+       SaNameT replica_sanamet;
+
        /* delete imm runtime object */
        if ((cb->ha_state == SA_AMF_HA_ACTIVE) && (is_unlink_set != true)) {
                /* escapes rdn's  ',' with '\'   */
-               node_name.length = 
m_NCS_OS_NTOHS(ckpt_reploc_node->rep_key.node_name.length);
-               strcpy((char *)node_name.value, (char 
*)ckpt_reploc_node->rep_key.node_name.value);
-               cpd_create_association_class_dn(&node_name,
-                                               
&ckpt_reploc_node->rep_key.ckpt_name, "safReplica", &replica_dn);
-               if (immutil_saImmOiRtObjectDelete(cb->immOiHandle, &replica_dn) 
!= SA_AIS_OK) {
-                       LOG_ER("Deleting run time object %s FAILED", 
replica_dn.value);
+               
cpd_create_association_class_dn(ckpt_reploc_node->rep_key.node_name,
+                                               
ckpt_reploc_node->rep_key.ckpt_name, "safReplica", &replica_dn);
+               osaf_extended_name_lend(replica_dn, &replica_sanamet);
+               if (immutil_saImmOiRtObjectDelete(cb->immOiHandle, 
&replica_sanamet) != SA_AIS_OK) {
+                       LOG_ER("Deleting run time object %s FAILED", 
replica_dn);
+                       free(replica_dn);
                        return NCSCC_RC_FAILURE;
                }
+               free(replica_dn);
        }
        return NCSCC_RC_SUCCESS;
 }
@@ -1306,7 +1305,7 @@ uint32_t cpd_ckpt_db_update_after_headle
                }
 
                memset(map_info, 0, sizeof(CPD_CKPT_MAP_INFO));
-               map_info->ckpt_name = ckpt_info->ckpt_name;
+               map_info->ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_info->ckpt_name));
                map_info->attributes = ckpt_info->attributes;
                map_info->client_version = ckpt_info->client_version;
                map_info->ckpt_id = ckpt_info->ckpt_id;
@@ -1330,7 +1329,7 @@ uint32_t cpd_ckpt_db_update_after_headle
 
                memset(ckpt_node, 0, sizeof(CPD_CKPT_INFO_NODE));
                ckpt_node->ckpt_id = map_info->ckpt_id;
-               ckpt_node->ckpt_name = ckpt_info->ckpt_name;
+               ckpt_node->ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_info->ckpt_name));
                ckpt_node->is_unlink_set = ckpt_info->is_unlink;
                ckpt_node->attributes = ckpt_info->attributes;
                if (ckpt_node->attributes.maxSections == 1)
@@ -1404,9 +1403,9 @@ uint32_t cpd_ckpt_db_update_after_headle
                goto free_mem;
        }
 
-       node_info->node_name = cluster_node.nodeName;
-       key_info.node_name = cluster_node.nodeName;
-       key_info.ckpt_name = ckpt_info->ckpt_name;
+       node_info->node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
+       key_info.node_name = osaf_extended_name_borrow(&cluster_node.nodeName);
+       key_info.ckpt_name = osaf_extended_name_borrow(&ckpt_info->ckpt_name);
 
        /* Create and add the reploc node into ckpt_reploc_tree if it doesn't 
exist */
        /* Only create reploc_node for Collocated and Non-collocated active 
replica */
@@ -1423,8 +1422,8 @@ uint32_t cpd_ckpt_db_update_after_headle
 
                /* Initialize the reploc info node */
                memset(reploc_info, 0, sizeof(CPD_CKPT_REPLOC_INFO));
-               reploc_info->rep_key.node_name = cluster_node.nodeName;
-               reploc_info->rep_key.ckpt_name = ckpt_info->ckpt_name;
+               reploc_info->rep_key.node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
+               reploc_info->rep_key.ckpt_name = 
strdup(osaf_extended_name_borrow(&ckpt_info->ckpt_name));
 
                if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_info->attributes))
                        reploc_info->rep_type = REP_NONCOLL;
@@ -1465,22 +1464,25 @@ uint32_t cpd_ckpt_db_update_after_headle
                        cpd_ckpt_node_get(&cb->ckpt_tree, &ckpt_info->ckpt_id, 
&tmp_ckpt_node);
                        if (tmp_ckpt_node) /* The ckpt_node was added into the 
tree */
                                cpd_ckpt_node_delete(cb, ckpt_node);
-                       else
+                       else {
                                m_MMGR_FREE_CPD_CKPT_INFO_NODE(ckpt_node);
+                       }
                }
 
                if (map_info) {
                        CPD_CKPT_MAP_INFO *tmp_map_info;
-                       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&ckpt_info->ckpt_name, &tmp_map_info);
+                       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
osaf_extended_name_borrow(&ckpt_info->ckpt_name), &tmp_map_info);
                        if (tmp_map_info) /* The map info was added into the 
tree */
                                cpd_ckpt_map_node_delete(cb, map_info);
-                       else
+                       else {
                                m_MMGR_FREE_CPD_CKPT_MAP_INFO(map_info);
+                       }
                }
        }
 
-       if (reploc_info)
+       if (reploc_info) {
                m_MMGR_FREE_CPD_CKPT_REPLOC_INFO(reploc_info);
+       }
 
        TRACE_LEAVE();
        return proc_rc;
diff --git a/osaf/services/saf/cpsv/cpd/cpd_red.c 
b/osaf/services/saf/cpsv/cpd/cpd_red.c
--- a/osaf/services/saf/cpsv/cpd/cpd_red.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_red.c
@@ -46,7 +46,7 @@ uint32_t cpd_a2s_ckpt_create(CPD_CB *cb,
        memset(&cpd_msg, '\0', sizeof(CPD_MBCSV_MSG));
 
        cpd_msg.type = CPD_A2S_MSG_CKPT_CREATE;
-       cpd_msg.info.ckpt_create.ckpt_name = ckpt_node->ckpt_name;
+       osaf_extended_name_lend(ckpt_node->ckpt_name, 
&cpd_msg.info.ckpt_create.ckpt_name);
        cpd_msg.info.ckpt_create.ckpt_id = ckpt_node->ckpt_id;
        cpd_msg.info.ckpt_create.ckpt_attrib = ckpt_node->attributes;
        cpd_msg.info.ckpt_create.is_unlink_set = ckpt_node->is_unlink_set;
@@ -115,12 +115,12 @@ void cpd_a2s_ckpt_unlink_set(CPD_CB *cb,
        memset(&cpd_msg, '\0', sizeof(CPD_MBCSV_MSG));
        cpd_msg.type = CPD_A2S_MSG_CKPT_UNLINK;
        cpd_msg.info.ckpt_ulink.is_unlink_set = ckpt_node->is_unlink_set;
-       cpd_msg.info.ckpt_ulink.ckpt_name = ckpt_node->ckpt_name;
+       osaf_extended_name_lend(ckpt_node->ckpt_name, 
&cpd_msg.info.ckpt_ulink.ckpt_name);
 
        /* send it to MBCSv  */
        rc = cpd_mbcsv_async_update(cb, &cpd_msg);
        if (rc != SA_AIS_OK)
-               TRACE_4("cpd A2S ckpt unlink async failed 
%s",ckpt_node->ckpt_name.value);
+               LOG_ER("cpd A2S ckpt unlink async failed 
%s",ckpt_node->ckpt_name);
        else
                TRACE_1("cpd A2S ckpt unlink async successfull ");
        TRACE_LEAVE();
diff --git a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c 
b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
--- a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
@@ -22,6 +22,7 @@
 
 ******************************************************************************/
 
+#include <string.h>
 #include "cpd.h"
 
      /* This is the function prototype for event handling */
@@ -103,8 +104,7 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
 
        /* 1. check if the checkpoint already exist  (this should not happen ) 
*/
-       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&msg->info.ckpt_create.ckpt_name, &map_info);
-/*  msg->info.ckpt_create.ckpt_name.length = 
m_NCS_OS_NTOHS(msg->info.ckpt_create.ckpt_name.length);     */
+       cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
osaf_extended_name_borrow(&msg->info.ckpt_create.ckpt_name), &map_info);
        if (map_info == NULL) { /* Checkpoint does not exist, so allocate 
memory */
                map_info = m_MMGR_ALLOC_CPD_CKPT_MAP_INFO;
                if (map_info == NULL) {
@@ -127,7 +127,7 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
 
        /* Fill the Map info structure  */
        memset(map_info, 0, sizeof(CPD_CKPT_MAP_INFO));
-       map_info->ckpt_name = msg->info.ckpt_create.ckpt_name;
+       map_info->ckpt_name = 
strdup(osaf_extended_name_borrow(&msg->info.ckpt_create.ckpt_name));
        map_info->ckpt_id = msg->info.ckpt_create.ckpt_id;
        map_info->attributes = msg->info.ckpt_create.ckpt_attrib;
        cb->nxt_ckpt_id = map_info->ckpt_id + 1;
@@ -142,7 +142,7 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
        /*  Fill the CKPT_NODE structure  */
        memset(ckpt_node, 0, sizeof(CPD_CKPT_INFO_NODE));
        ckpt_node->ckpt_id = msg->info.ckpt_create.ckpt_id;
-       ckpt_node->ckpt_name = msg->info.ckpt_create.ckpt_name;
+       ckpt_node->ckpt_name = 
strdup(osaf_extended_name_borrow(&msg->info.ckpt_create.ckpt_name));
        dest_cnt = msg->info.ckpt_create.dest_cnt;
        ckpt_node->is_unlink_set = msg->info.ckpt_create.is_unlink_set;
        ckpt_node->attributes = msg->info.ckpt_create.ckpt_attrib;
@@ -175,18 +175,18 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
                        goto cluster_node_get_fail;
                }
 
-               node_info->node_name = cluster_node.nodeName;
+               node_info->node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
 
-               key_info.ckpt_name = msg->info.ckpt_create.ckpt_name;
-               key_info.node_name = cluster_node.nodeName;
+               key_info.ckpt_name = 
osaf_extended_name_borrow(&msg->info.ckpt_create.ckpt_name);
+               key_info.node_name = 
osaf_extended_name_borrow(&cluster_node.nodeName);
                cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&reploc_info);
                if (reploc_info == NULL) {
                        reploc_info = m_MMGR_ALLOC_CPD_CKPT_REPLOC_INFO;
 
                        memset(reploc_info, 0, sizeof(CPD_CKPT_REPLOC_INFO));
 
-                       reploc_info->rep_key.node_name = cluster_node.nodeName;
-                       reploc_info->rep_key.ckpt_name = 
msg->info.ckpt_create.ckpt_name;
+                       reploc_info->rep_key.node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
+                       reploc_info->rep_key.ckpt_name = 
strdup(osaf_extended_name_borrow(&msg->info.ckpt_create.ckpt_name));
 
                        if 
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&msg->info.ckpt_create.ckpt_attrib))
                                reploc_info->rep_type = REP_NONCOLL;
@@ -218,7 +218,7 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
                goto cpd_ckpt_node_add_fail;
        }
 
-       TRACE_1("cpd ckpt node added successfully  ckpt name:%s, ckpt_id:%llx 
",map_info->ckpt_name.value,map_info->ckpt_id);
+       TRACE_1("cpd ckpt node added successfully  ckpt name:%s, ckpt_id:%llx 
",map_info->ckpt_name, map_info->ckpt_id);
 
        goto end;
 
@@ -269,14 +269,11 @@ uint32_t cpd_sb_proc_ckpt_dest_del(CPD_C
        CPD_NODE_REF_INFO *nref_info = NULL;
        CPD_CKPT_MAP_INFO *map_info = NULL;
        uint32_t proc_rc = NCSCC_RC_SUCCESS;
-       SaNameT ckpt_name, node_name;
        CPD_REP_KEY_INFO key_info;
        CPD_CKPT_REPLOC_INFO *rep_info = NULL;
 
        TRACE_ENTER();
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
-       memset(&ckpt_name, 0, sizeof(SaNameT));
-       memset(&node_name, 0, sizeof(SaNameT));
 
        /* IF CPND IS DOWN THEN CKPT_ID = 0 , DELETE THAT NODE INFO */
        if (msg->info.dest_del.ckpt_id == 0) {
@@ -292,8 +289,7 @@ uint32_t cpd_sb_proc_ckpt_dest_del(CPD_C
        }
 
        if (ckpt_node->is_unlink_set != true) {
-               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, 
&ckpt_node->ckpt_name, &map_info);
-               /*    ckpt_node->ckpt_name.length = 
m_NCS_OS_NTOHS(ckpt_node->ckpt_name.length); */
+               cpd_ckpt_map_node_get(&cb->ckpt_map_tree, ckpt_node->ckpt_name, 
&map_info);
                if (map_info == NULL) {
                        TRACE_4("cpd standby dest del evt failed");
                        return NCSCC_RC_FAILURE;
@@ -308,21 +304,18 @@ uint32_t cpd_sb_proc_ckpt_dest_del(CPD_C
                        }
                }
 
-               ckpt_name = ckpt_node->ckpt_name;
-               key_info.ckpt_name = ckpt_name;
-               node_name = node_info->node_name;
+               key_info.ckpt_name = ckpt_node->ckpt_name;
+               key_info.node_name = node_info->node_name;
+
+               cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&rep_info);
+               if (rep_info) {
+                       cpd_ckpt_reploc_node_delete(cb, 
rep_info,ckpt_node->is_unlink_set);
+               }
 
                /* No check point ref in this node */
                if (node_info->ckpt_cnt == 0) {
                        cpd_cpnd_info_node_delete(cb, node_info);
                }
-
-               key_info.node_name = node_name;
-               /*  key_info.node_name.length = 
m_NCS_OS_NTOHS(node_name.length); */
-               cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&rep_info);
-               if (rep_info) {
-                       cpd_ckpt_reploc_node_delete(cb, 
rep_info,ckpt_node->is_unlink_set);
-               }
        } else {
                TRACE_4("cpd standby dest del evt failed for mdsdest: 
%"PRIu64,msg->info.dest_del.mds_dest);
                proc_rc = NCSCC_RC_FAILURE;
@@ -366,16 +359,16 @@ uint32_t cpd_sb_proc_ckpt_unlink(CPD_CB 
 {
        CPD_CKPT_INFO_NODE *ckpt_node = NULL;
        CPD_CKPT_MAP_INFO *map_info = NULL;
-       SaNameT *ckpt_name = &msg->info.ckpt_ulink.ckpt_name;
+       SaConstStringT ckpt_name = 
osaf_extended_name_borrow(&msg->info.ckpt_ulink.ckpt_name);
        uint32_t proc_rc = SA_AIS_OK;
        uint32_t rc = NCSCC_RC_SUCCESS;
 
        proc_rc = cpd_proc_unlink_set(cb, &ckpt_node, map_info, ckpt_name);
        if (proc_rc != SA_AIS_OK) {
-               TRACE_4("cpd standby unlink evt failed");
+               LOG_ER("cpd standby unlink evt failed");
                rc = NCSCC_RC_FAILURE;
        }
-       TRACE_1("cpd evt unlink success ckpt_name: %s 
",msg->info.ckpt_ulink.ckpt_name.value);
+       TRACE_1("cpd evt unlink success ckpt_name: %s ", ckpt_name);
        return rc;
 }
 
@@ -492,9 +485,9 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
                goto free_mem;
        }
 
-       node_info->node_name = cluster_node.nodeName;
+       node_info->node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
 
-       key_info.node_name = cluster_node.nodeName;
+       key_info.node_name = osaf_extended_name_borrow(&cluster_node.nodeName);
        key_info.ckpt_name = ckpt_node->ckpt_name;
        cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, &reploc_info);
        if (reploc_info == NULL) {
@@ -502,8 +495,8 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 
                memset(reploc_info, 0, sizeof(CPD_CKPT_REPLOC_INFO));
 
-               reploc_info->rep_key.node_name = cluster_node.nodeName;
-               reploc_info->rep_key.ckpt_name = ckpt_node->ckpt_name;
+               reploc_info->rep_key.node_name = 
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
+               reploc_info->rep_key.ckpt_name = strdup(ckpt_node->ckpt_name);
                if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes))
                        reploc_info->rep_type = REP_NONCOLL;
                else {

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to