osaf/libs/agents/saf/imma/imma_oi_api.c          |  10 ++++-
 osaf/libs/agents/saf/imma/imma_proc.c            |  16 ++++++-
 osaf/libs/common/immsv/immsv_evt.c               |  47 ++++++++++++++++++++++++
 osaf/libs/common/immsv/include/immsv_evt.h       |   3 +
 osaf/libs/common/immsv/include/immsv_evt_model.h |   1 +
 osaf/services/saf/immsv/immnd/ImmModel.cc        |  20 ++++++++-
 osaf/services/saf/immsv/immnd/immnd_evt.c        |  17 ++++++++
 7 files changed, 106 insertions(+), 8 deletions(-)


Define new message types: IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3, 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4 and IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2.

Add new member 'stringName' to IMMSV_OI_CCB_UPCALL_RSP.
'stringName' is used in new message types.

Clients will use new messages when 'isProto47' is true. Otherwise, old messages 
are used.

ImmModel now has to handle both old and new messages.
The message type is detected by checking if 'name' member of 
IMMSV_OI_CCB_UPCALL_RSP is empty or not.

diff --git a/osaf/libs/agents/saf/imma/imma_oi_api.c 
b/osaf/libs/agents/saf/imma/imma_oi_api.c
--- a/osaf/libs/agents/saf/imma/imma_oi_api.c
+++ b/osaf/libs/agents/saf/imma/imma_oi_api.c
@@ -3777,11 +3777,17 @@ SaAisErrorT saImmOiAugmentCcbInitialize(
        /* populate the EVT structure */
        memset(&init_evt, 0, sizeof(IMMSV_EVT));
        init_evt.type = IMMSV_EVT_TYPE_IMMND;
-       init_evt.info.immnd.type = IMMND_EVT_A2ND_OI_CCB_AUG_INIT;
+       if (cl_node->isProto47) {
+               init_evt.info.immnd.type = IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2;
+               init_evt.info.immnd.info.ccbUpcallRsp.stringName.buf = (char*) 
osaf_extended_name_borrow(&cbi->name);
+               init_evt.info.immnd.info.ccbUpcallRsp.stringName.size = 
osaf_extended_name_length(&cbi->name) + 1;
+       } else {
+               init_evt.info.immnd.type = IMMND_EVT_A2ND_OI_CCB_AUG_INIT;
+               init_evt.info.immnd.info.ccbUpcallRsp.name = cbi->name;
+       }
        init_evt.info.immnd.info.ccbUpcallRsp.ccbId = ccbId;
        init_evt.info.immnd.info.ccbUpcallRsp.implId = cbi->implId;
        init_evt.info.immnd.info.ccbUpcallRsp.inv = cbi->inv;
-       init_evt.info.immnd.info.ccbUpcallRsp.name = cbi->name;
        
        /* Note that we register using the new OM handle as client for the 
aug-ccb */
        rc = imma_evt_fake_evs(cb, &init_evt, &out_evt, cl_node->syncr_timeout,
diff --git a/osaf/libs/agents/saf/imma/imma_proc.c 
b/osaf/libs/agents/saf/imma/imma_proc.c
--- a/osaf/libs/agents/saf/imma/imma_proc.c
+++ b/osaf/libs/agents/saf/imma/imma_proc.c
@@ -2613,12 +2613,18 @@ static bool imma_process_callback_info(I
                                        SaImmHandleT privateAugOmHandle = 0LL;
                                        memset(&ccbObjDelRpl, 0, 
sizeof(IMMSV_EVT));
                                        ccbObjDelRpl.type = 
IMMSV_EVT_TYPE_IMMND;
-                                       ccbObjDelRpl.info.immnd.type = 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP;
+                                       if (cl_node->isProto47) {
+                                               ccbObjDelRpl.info.immnd.type = 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3;
+                                               
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.stringName.buf = (char*) 
osaf_extended_name_borrow(&callback->name);
+                                               
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.stringName.size = 
osaf_extended_name_length(&callback->name) + 1;
+                                       } else {
+                                               ccbObjDelRpl.info.immnd.type = 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP;
+                                               
osaf_extended_name_lend(osaf_extended_name_borrow(&(callback->name)), 
&(ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.name));
+                                       }
                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.result = localEr;
                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.oi_client_hdl = callback->lcl_imm_hdl;
                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.ccbId = callback->ccbID;
                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.inv = callback->inv;
-                                       
osaf_extended_name_lend(osaf_extended_name_borrow(&(callback->name)), 
&(ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.name));
 
                                        osafassert(m_NCS_LOCK(&cb->cb_lock, 
NCS_LOCK_WRITE) == NCSCC_RC_SUCCESS);
                                        locked = true;
@@ -2628,7 +2634,11 @@ static bool imma_process_callback_info(I
 
                                        if (localEr != SA_AIS_OK)  {
                                                if(errorStr) {
-                                                       
ccbObjDelRpl.info.immnd.type = IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2;
+                                                       if 
(ccbObjDelRpl.info.immnd.type == IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP) {
+                                                               
ccbObjDelRpl.info.immnd.type = IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2;
+                                                       } else if 
(ccbObjDelRpl.info.immnd.type == IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) {
+                                                               
ccbObjDelRpl.info.immnd.type = IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4;
+                                                       }
                                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.errorString.size =
                                                                
strlen(errorStr) + 1;
                                                        
ccbObjDelRpl.info.immnd.info.ccbUpcallRsp.errorString.buf = errorStr;
diff --git a/osaf/libs/common/immsv/immsv_evt.c 
b/osaf/libs/common/immsv/immsv_evt.c
--- a/osaf/libs/common/immsv/immsv_evt.c
+++ b/osaf/libs/common/immsv/immsv_evt.c
@@ -183,6 +183,9 @@ static const char *immnd_evt_names[] = {
        "IMMND_EVT_A2ND_OBJ_CREATE_2",  /* saImmOmCcbObjectCreate_o3 */
        "IMMND_EVT_A2ND_OI_OBJ_CREATE_2",       /* saImmOiRtObjectCreate_o3 */
        "IMMND_EVT_D2ND_ADMINIT_2",     /* Admin Owner init reply */
+       "IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3",  /*CcbObjDelete local Reply */
+       "IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4",  /*CcbObjDelete local Reply */
+       "IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2",
        "undefined (high)"
 };
 
@@ -2005,6 +2008,19 @@ static uint32_t immsv_evt_enc_sublevels(
                        if(!immsv_evt_enc_inline_text(__LINE__, o_ub, os)) {
                                return NCSCC_RC_OUT_OF_MEM;
                        }
+               } else if ((i_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) ||
+                       (i_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
+                       (i_evt->info.immnd.type == 
IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2)) {
+                       IMMSV_OCTET_STRING *os = 
&(i_evt->info.immnd.info.ccbUpcallRsp.stringName);
+                       if (!immsv_evt_enc_inline_text(__LINE__, o_ub, os)) {
+                               return NCSCC_RC_OUT_OF_MEM;
+                       }
+                       if (i_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) {
+                               os = 
&(i_evt->info.immnd.info.ccbUpcallRsp.errorString);
+                               if (!immsv_evt_enc_inline_text(__LINE__, o_ub, 
os)) {
+                                       return NCSCC_RC_OUT_OF_MEM;
+                               }
+                       }
                }
        }
 
@@ -2522,6 +2538,15 @@ static uint32_t immsv_evt_dec_sublevels(
                } else if (o_evt->info.immnd.type == IMMND_EVT_D2ND_ADMINIT_2) {
                        IMMSV_OCTET_STRING *os = 
&(o_evt->info.immnd.info.adminitGlobal.i.stringAdminOwnerName);
                        immsv_evt_dec_inline_string(i_ub, os);
+               } else if ((o_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) ||
+                       (o_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
+                       (o_evt->info.immnd.type == 
IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2)) {
+                       IMMSV_OCTET_STRING *os = 
&(o_evt->info.immnd.info.ccbUpcallRsp.stringName);
+                       immsv_evt_dec_inline_string(i_ub, os);
+                       if (o_evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) {
+                               os = 
&(o_evt->info.immnd.info.ccbUpcallRsp.errorString);
+                               immsv_evt_dec_inline_string(i_ub, os);
+                       }
                }
        }
        return NCSCC_RC_SUCCESS;
@@ -3599,6 +3624,9 @@ static uint32_t immsv_evt_enc_toplevel(I
                case IMMND_EVT_A2ND_PBE_PRTO_DELETES_COMPLETED_RSP:/*Pbe PRTO 
deletes done */
                case IMMND_EVT_A2ND_PBE_PRT_ATTR_UPDATE_RSP:/* Pbe OI rt attr 
update response*/
                case IMMND_EVT_A2ND_OI_CCB_AUG_INIT:/*OI augments CCB inside 
ccb upcall. #1963 */
+               case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3:       /*CcbObjDelete 
local Reply */
+               case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4:       /*CcbObjDelete 
local Reply */
+               case IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2:  /*OI augments CCB 
inside ccb upcall */
                {
                        IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 8);
                        ncs_encode_64bit(&p8, 
immndevt->info.ccbUpcallRsp.oi_client_hdl);
@@ -3641,11 +3669,19 @@ static uint32_t immsv_evt_enc_toplevel(I
                                                break;
                                        }
                                }
+                       } else if ((immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2)) {
+                               IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4);
+                               ncs_encode_32bit(&p8, 
immndevt->info.ccbUpcallRsp.stringName.size);
+                               ncs_enc_claim_space(o_ub, 4);
+                               /* immndevt->info.ccbUpcallRsp.stringName.buf 
encoded by sublevel */
                        }
 
                        if((immndevt->type == 
IMMND_EVT_A2ND_CCB_COMPLETED_RSP_2) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_CREATE_RSP_2) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_MODIFY_RSP_2)) {
                                IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4);
                                ncs_encode_32bit(&p8, 
immndevt->info.ccbUpcallRsp.errorString.size);
@@ -5013,6 +5049,9 @@ static uint32_t immsv_evt_dec_toplevel(N
                case IMMND_EVT_A2ND_PBE_PRTO_DELETES_COMPLETED_RSP:/*Pbe PRTO 
deletes done */
                case IMMND_EVT_A2ND_PBE_PRT_ATTR_UPDATE_RSP:/* Pbe OI rt attr 
update response*/
                case IMMND_EVT_A2ND_OI_CCB_AUG_INIT:/*OI augments CCB inside 
ccb upcall. #1963 */
+               case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3:       /*CcbObjDelete 
local Reply */
+               case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4:       /*CcbObjDelete 
local Reply */
+               case IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2:  /*OI augments CCB 
inside ccb upcall */
                {
                        IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 8);
                        immndevt->info.ccbUpcallRsp.oi_client_hdl = 
ncs_decode_64bit(&p8);
@@ -5057,11 +5096,19 @@ static uint32_t immsv_evt_dec_toplevel(N
                                        value[length] = '\0';
                                        osaf_extended_name_steal(value, 
&immndevt->info.ccbUpcallRsp.name);
                                }
+                       } else if ((immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2)) {
+                               IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 
4);
+                               immndevt->info.ccbUpcallRsp.stringName.size = 
ncs_decode_32bit(&p8);
+                               ncs_dec_skip_space(i_ub, 4);
+                               /* immndevt->info.ccbUpcallRsp.stringName.buf 
decoded by sublevel */
                        }
 
                        if((immndevt->type == 
IMMND_EVT_A2ND_CCB_COMPLETED_RSP_2) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_CREATE_RSP_2) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2) ||
+                               (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
                                (immndevt->type == 
IMMND_EVT_A2ND_CCB_OBJ_MODIFY_RSP_2)) {
                                IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 
4);
                                immndevt->info.ccbUpcallRsp.errorString.size = 
ncs_decode_32bit(&p8);
diff --git a/osaf/libs/common/immsv/include/immsv_evt.h 
b/osaf/libs/common/immsv/include/immsv_evt.h
--- a/osaf/libs/common/immsv/include/immsv_evt.h
+++ b/osaf/libs/common/immsv/include/immsv_evt.h
@@ -215,6 +215,9 @@ typedef enum immnd_evt_type {
        IMMND_EVT_A2ND_OI_OBJ_CREATE_2 = 99,    /* saImmOiRtObjectCreate_o3 */
 
        IMMND_EVT_D2ND_ADMINIT_2 = 100, /* Admin Owner init reply */
+       IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3 = 101,      /*CcbObjDelete local 
Reply */
+       IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4 = 102,      /*CcbObjDelete local 
Reply */
+       IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2 = 103, /* Init of OI augmented ccb 
handle */
 
        IMMND_EVT_MAX
 } IMMND_EVT_TYPE;
diff --git a/osaf/libs/common/immsv/include/immsv_evt_model.h 
b/osaf/libs/common/immsv/include/immsv_evt_model.h
--- a/osaf/libs/common/immsv/include/immsv_evt_model.h
+++ b/osaf/libs/common/immsv/include/immsv_evt_model.h
@@ -288,6 +288,7 @@ extern "C" {
                SaAisErrorT result;
                SaNameT name;
                IMMSV_OCTET_STRING errorString;
+               IMMSV_OCTET_STRING stringName;
        } IMMSV_OI_CCB_UPCALL_RSP;
 
        typedef struct ImmsvSyncFevsBase {
diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -5985,10 +5985,17 @@ ImmModel::ccbAugmentInit(immsv_oi_ccb_up
     ObjectMutationMap::iterator omuti;
     ObjectInfo* obj = NULL;
     ObjectMap::iterator oi;
+    std::string objectName;
 
     TRACE_ENTER();
     /*Note: objectName is parent-name for the create case! */
-    std::string objectName(osaf_extended_name_borrow(&rsp->name));
+    if (osaf_is_extended_name_empty(&rsp->name)) {
+        /* This must be IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2 */
+        const IMMSV_OCTET_STRING *os = &rsp->stringName;
+        objectName = std::string((const char*) os->buf, strnlen((const char*) 
os->buf, (size_t) os->size));
+    } else {
+        objectName = std::string(osaf_extended_name_borrow(&rsp->name));
+    }
     osafassert(nameCheck(objectName)||nameToInternal(objectName));
 
     i = std::find_if(sCcbVector.begin(), sCcbVector.end(), CcbIdIs(ccbId));
@@ -9640,12 +9647,19 @@ ImmModel::ccbObjDelContinuation(immsv_oi
     SaUint32T* reqConn, bool* augDelete)
 {
     TRACE_ENTER();
-    std::string objectName(osaf_extended_name_borrow(&rsp->name));
-
+    std::string objectName;
     SaUint32T ccbId = rsp->ccbId;
     CcbInfo* ccb = 0;
     CcbVector::iterator i1;
 
+    if (osaf_is_extended_name_empty(&rsp->name)) {
+        /* This must be IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3 or 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4 */
+        const IMMSV_OCTET_STRING *os = &rsp->stringName;
+        objectName = std::string((const char*) os->buf, strnlen((const char*) 
os->buf, (size_t) os->size));
+    } else {
+        objectName = std::string(osaf_extended_name_borrow(&rsp->name));
+    }
+
     i1 = std::find_if(sCcbVector.begin(), sCcbVector.end(), CcbIdIs(ccbId));
     if(i1 == sCcbVector.end() || (!(*i1)->isActive()) ) {
         TRACE_5("ccb id %u missing or terminated in delete processing", ccbId);
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -484,6 +484,17 @@ uint32_t immnd_evt_destroy(IMMSV_EVT *ev
                
free(evt->info.immnd.info.adminitGlobal.i.stringAdminOwnerName.buf);
                evt->info.immnd.info.adminitGlobal.i.stringAdminOwnerName.buf = 
NULL;
                evt->info.immnd.info.adminitGlobal.i.stringAdminOwnerName.size 
= 0;
+       } else if ((evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3) ||
+                       (evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4) ||
+                       (evt->info.immnd.type == 
IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2)) {
+               free(evt->info.immnd.info.ccbUpcallRsp.stringName.buf);
+               evt->info.immnd.info.ccbUpcallRsp.stringName.buf = NULL;
+               evt->info.immnd.info.ccbUpcallRsp.stringName.size = 0;
+               if ((evt->info.immnd.type == 
IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4)) {
+                       free(evt->info.immnd.info.ccbUpcallRsp.errorString.buf);
+                       evt->info.immnd.info.ccbUpcallRsp.errorString.buf = 
NULL;
+                       evt->info.immnd.info.ccbUpcallRsp.errorString.size = 0;
+               }
        }
 
        if (onheap) {
@@ -3217,6 +3228,7 @@ static SaAisErrorT immnd_fevs_local_chec
        case IMMND_EVT_A2ND_OBJ_DELETE:
        case IMMND_EVT_A2ND_CCB_FINALIZE:
        case IMMND_EVT_A2ND_OI_CCB_AUG_INIT:
+       case IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2:
        case IMMND_EVT_A2ND_AUG_ADMO:
                if(immModel_pbeNotWritable(cb)) {
                        error = SA_AIS_ERR_TRY_AGAIN;
@@ -3536,6 +3548,8 @@ static SaAisErrorT immnd_fevs_local_chec
        case IMMND_EVT_A2ND_PBE_PRT_ATTR_UPDATE_RSP:
        case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP:
        case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2:
+       case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3:
+       case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4:
                if(fevsReq->sender_count != 0x0) {
                        LOG_WA("ERR_LIBRARY:  fevsReq->sender_count != 0x0 for 
OI response type:%u",
                                frwrd_evt.info.immnd.type);
@@ -7981,6 +7995,7 @@ immnd_evt_proc_fevs_dispatch(IMMND_CB *c
                break;
 
        case IMMND_EVT_A2ND_OI_CCB_AUG_INIT:
+       case IMMND_EVT_A2ND_OI_CCB_AUG_INIT_2:
                immnd_evt_ccb_augment_init(cb, &frwrd_evt.info.immnd, 
originatedAtThisNd, clnt_hdl, reply_dest);
                break;
 
@@ -8054,6 +8069,8 @@ immnd_evt_proc_fevs_dispatch(IMMND_CB *c
 
        case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP:
        case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_2:
+       case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_3:
+       case IMMND_EVT_A2ND_CCB_OBJ_DELETE_RSP_4:
                immnd_evt_proc_ccb_obj_delete_rsp(cb, &frwrd_evt.info.immnd, 
originatedAtThisNd, clnt_hdl, reply_dest);
                break;
 

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to