diff -Naur opensaf/include/mds_papi.h opensaf-spsv-patch/include/mds_papi.h
--- opensaf/include/mds_papi.h	2007-10-19 15:09:17.000000000 +0530
+++ opensaf-spsv-patch/include/mds_papi.h	2007-12-10 18:46:19.000000000 +0530
@@ -160,31 +160,34 @@
     NCSMDS_SVC_ID_GLA,         /* 10 */
     NCSMDS_SVC_ID_GLND,
     NCSMDS_SVC_ID_GLD,
+    NCSMDS_SVC_ID_SPA_UNUSED,
+    NCSMDS_SVC_ID_SPND_UNUSED,
+    NCSMDS_SVC_ID_SPD_UNUSED,
     NCSMDS_SVC_ID_VDS,
     NCSMDS_SVC_ID_VDA,
     NCSMDS_SVC_ID_EDS,
     NCSMDS_SVC_ID_EDA,
-    NCSMDS_SVC_ID_PSS,        
+    NCSMDS_SVC_ID_PSS,  /* 20 */        
     NCSMDS_SVC_ID_MQA,
     NCSMDS_SVC_ID_MQND,
-    NCSMDS_SVC_ID_MQD,       /* 20 */
+    NCSMDS_SVC_ID_MQD,
     NCSMDS_SVC_ID_HPL,
     NCSMDS_SVC_ID_HCD,
     NCSMDS_SVC_ID_AVD,
     NCSMDS_SVC_ID_AVND,
     NCSMDS_SVC_ID_AVA,
     NCSMDS_SVC_ID_BAM,
-    NCSMDS_SVC_ID_AVM,       
+    NCSMDS_SVC_ID_AVM,      /* 30 */ 
     NCSMDS_SVC_ID_CLA,
     NCSMDS_SVC_ID_CPD,
-    NCSMDS_SVC_ID_CPND,      /* 30 */
+    NCSMDS_SVC_ID_CPND,
     NCSMDS_SVC_ID_CPA,
     NCSMDS_SVC_ID_MBCSV,
     NCSMDS_SVC_ID_SRMND,
     NCSMDS_SVC_ID_SRMA,
     NCSMDS_SVC_ID_LFM,
     NCSMDS_SVC_ID_PDRBD,
-    NCSMDS_SVC_ID_SUND,      /* 37 */
+    NCSMDS_SVC_ID_SUND,      /* 40 */
     NCSMDS_SVC_ID_NCSMAX,  /* This mnemonic always last */
     /* END: These are NCS internal use service-id definitions */
 
diff -Naur opensaf/include/ncs_mtbl.h opensaf-spsv-patch/include/ncs_mtbl.h
--- opensaf/include/ncs_mtbl.h	2007-10-19 15:09:18.000000000 +0530
+++ opensaf-spsv-patch/include/ncs_mtbl.h	2007-12-10 18:46:19.000000000 +0530
@@ -126,6 +126,17 @@
     NCSMIB_TBL_AVM_TRAPS,
     NCSMIB_TBL_AVM_END = NCSMIB_TBL_AVM_TRAPS,
 
+    /*  SPSv Tables */
+    NCSMIB_TBL_SPSV_BASE_UNUSED,
+    NCSMIB_TBL_SPSV_CARD_UNUSED = NCSMIB_TBL_SPSV_BASE_UNUSED,
+    NCSMIB_TBL_SPSV_SLOT_CARD_UNUSED,
+    NCSMIB_TBL_SPSV_SLOT_NODE_UNUSED,
+    NCSMIB_TBL_SPSV_LIBRARY_UNUSED,
+    NCSMIB_TBL_SPSV_PROCESS_UNUSED,
+    NCSMIB_TBL_SPSV_PROCESS_LIBRARY_UNUSED,
+    NCSMIB_TBL_SPSV_REMOTE_LIBRARY_UNUSED,       
+    NCSMIB_TBL_SPSV_END_UNUSED = NCSMIB_TBL_SPSV_REMOTE_LIBRARY_UNUSED,
+   
     /* IFSV MIB Table IDs */
     NCSMIB_TBL_IFSV_BASE,
     NCSMIB_TBL_IFSV_SCLRS1 = NCSMIB_TBL_IFSV_BASE,
diff -Naur opensaf/include/ncs_svd.h opensaf-spsv-patch/include/ncs_svd.h
--- opensaf/include/ncs_svd.h	2007-10-19 15:09:17.000000000 +0530
+++ opensaf-spsv-patch/include/ncs_svd.h	2007-12-10 18:46:19.000000000 +0530
@@ -90,6 +90,9 @@
   NCS_SERVICE_ID_AVM,
   NCS_SERVICE_ID_AVM_AVD,
   NCS_SERVICE_ID_CLA,
+  NCS_SERVICE_ID_SPD_UNUSED,
+  NCS_SERVICE_ID_SPND_UNUSED,
+  NCS_SERVICE_ID_SPA_UNUSED,
   NCS_SERVICE_ID_BAM,
   NCS_SERVICE_ID_BAM_AVD,
   NCS_SERVICE_ID_BAM_AVM,
diff -Naur opensaf/services/common/inc/ncs_mda_pvt.h opensaf-spsv-patch/services/common/inc/ncs_mda_pvt.h
--- opensaf/services/common/inc/ncs_mda_pvt.h	2007-10-19 15:11:45.000000000 +0530
+++ opensaf-spsv-patch/services/common/inc/ncs_mda_pvt.h	2007-12-10 22:11:48.000000000 +0530
@@ -54,6 +54,7 @@
     DTS_VDEST_ID,              
     EDS_VDEST_ID,              
 
+    SPSV_VDEST_ID_UNUSED,
     MAS_VDEST_ID,              
     BAM_VDEST_ID,              
 
diff -Naur opensaf/services/common/src/ncs_main_pvt.c opensaf-spsv-patch/services/common/src/ncs_main_pvt.c
--- opensaf/services/common/src/ncs_main_pvt.c	2007-11-08 19:36:34.000000000 +0530
+++ opensaf-spsv-patch/services/common/src/ncs_main_pvt.c	2007-12-10 18:46:51.000000000 +0530
@@ -79,16 +79,6 @@
 #include "avm_dl_api.h"
 #endif
 
-#if (NCS_SPA == 1)
-#include "spa_dl_api.h"
-#endif
-#if (NCS_SPD == 1)
-#include "spd_dl_api.h"
-#endif
-#if (NCS_SPND == 1)
-#include "spnd_dl_api.h"
-#endif
-
 #if (NCS_MBCSV == 1)
 #include "mbcsv_dl_api.h"
 #endif
@@ -187,10 +177,6 @@
 #include "srma_logstr.h"
 #endif
 
-#if (NCS_SPSV_LOG == 1)
-#include "spsv_logstr.h"
-#endif
-
 #if (NCS_GLSV_LOG == 1)
 #include "glsv_logstr.h"
 #endif
@@ -504,37 +490,6 @@
 #endif
    }
    
-#if 0 /* Disabled since NCS 2.0 GA - PM - 14-Sep-05 */
-   if ('n' != ncs_util_get_char_option(argc, argv, "SPSV="))
-   {
-#if (NCS_SPD == 1)
-      /*** Init SPD ***/
-      m_NCS_DBG_PRINTF("\nSPSV:SPD:ON");
-      if (spd_lib_req(&lib_create) != NCSCC_RC_SUCCESS)
-      {
-         m_NCS_NID_NOTIFY(NID_NCS_SPD_LIB_REQ_FAILED);
-         return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE);
-      }
-#endif
-      
-#if (NCS_SPND == 1)
-      /*** Init SPND ***/
-      m_NCS_DBG_PRINTF("\nSPSV:SPND:ON");
-      if (spnd_lib_req(&lib_create) != NCSCC_RC_SUCCESS)
-      {
-         m_NCS_NID_NOTIFY(NID_NCS_SPND_LIB_REQ_FAILED);
-         return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE);
-      }
-#endif
-      /*** Init SPA ***/
-      if (ncs_spa_startup(argc, argv) != NCSCC_RC_SUCCESS)
-      {
-         m_NCS_NID_NOTIFY(NID_NCS_SPA_STARTUP_FAILED);
-         return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE);      
-      }
-   }
-#endif
-
    /*** Init DTS ***/
 #if (NCS_DTS == 1)
    /****** DTSV default service severity level *******/
@@ -575,12 +530,6 @@
       cla_str_reg();
 #endif
 
-#if (NCS_SPSV_LOG == 1)
-      spd_reg_strings();
-      spa_reg_strings();
-      spnd_reg_strings();
-#endif
-      
 #if (NCS_GLSV_LOG == 1)
       gld_reg_strings();
       gla_reg_strings();
diff -Naur opensaf/services/nms/ncs-snmp-subagt/inc/subagt_amf.h opensaf-spsv-patch/services/nms/ncs-snmp-subagt/inc/subagt_amf.h
--- opensaf/services/nms/ncs-snmp-subagt/inc/subagt_amf.h	2007-10-19 15:12:03.000000000 +0530
+++ opensaf-spsv-patch/services/nms/ncs-snmp-subagt/inc/subagt_amf.h	2007-12-10 18:46:53.000000000 +0530
@@ -95,6 +95,12 @@
 EXTERN_C uns32
 snmpsubagt_amf_init_timer_start(struct ncsSa_cb *cb); 
 
+/* to read the configuration file and to load/unload the 
+ * application spec MIBs 
+ */
+EXTERN_C uns32
+snmpsubagt_spa_job(uns8 *file_name, uns32 what_to_do); 
+
 /* to reload the libraries in subagent configuration file */ 
 EXTERN_C uns32
 snmpsubagt_mibs_reload(struct ncsSa_cb *cb); 
diff -Naur opensaf/services/nms/ncs-snmp-subagt/inc/subagt_log.h opensaf-spsv-patch/services/nms/ncs-snmp-subagt/inc/subagt_log.h
--- opensaf/services/nms/ncs-snmp-subagt/inc/subagt_log.h	2007-10-19 15:12:02.000000000 +0530
+++ opensaf-spsv-patch/services/nms/ncs-snmp-subagt/inc/subagt_log.h	2007-12-10 18:46:53.000000000 +0530
@@ -175,6 +175,7 @@
     SNMPSUBAGT_FUNC_ENTRY_HLTH_CHECK_START_POST,
     SNMPSUBAGT_FUNC_ENTRY_MBX_HEALTHCHECK_START, 
     SNMPSUBAGT_FUNC_ENTRY_APPL_MIBS_REG,/* 50 */
+    SNMPSUBAGT_FUNC_ENTRY_SPA_JOB,
     SNMPSUBAGT_FUNC_ENTRY_PENDING_LST_CMP,
     SNMPSUBAGT_FUNC_ENTRY_PENDING_REGS_FREE,
     SNMPSUBAGT_FUNC_ENTRY_PEND_REGS_PROC,
@@ -191,7 +192,7 @@
     SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_KICKOFF,
     SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR,
     SNMPSUBAGT_FUNC_ENTRY_AGT_PING, 
-    SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_STOP,/* 67 */
+    SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_STOP,/* 68 */
     SNMPSUBAGT_FUNC_ENTRY_AMF_COMPONENTIZE,/* IR00061409 */
     SNMPSUBAGT_FUNC_ENTRY_ACTIVE_ACTIVE_PROCESS,/* IR00061409 */
     SNMPSUBAGT_FUNC_ENTRY_SIGUSR1_SIGNAL,/* IR00061409 */
diff -Naur opensaf/services/nms/ncs-snmp-subagt/logstr/subagt_logstr.c opensaf-spsv-patch/services/nms/ncs-snmp-subagt/logstr/subagt_logstr.c
--- opensaf/services/nms/ncs-snmp-subagt/logstr/subagt_logstr.c	2007-10-19 15:11:58.000000000 +0530
+++ opensaf-spsv-patch/services/nms/ncs-snmp-subagt/logstr/subagt_logstr.c	2007-12-10 18:46:53.000000000 +0530
@@ -173,6 +173,7 @@
     { SNMPSUBAGT_FUNC_ENTRY_HLTH_CHECK_START_POST, "snmpsubagt_amf_healthcheck_start_msg_post()"},
     { SNMPSUBAGT_FUNC_ENTRY_MBX_HEALTHCHECK_START, "snmpsubagt_mbx_healthcheck_start()"}, 
     { SNMPSUBAGT_FUNC_ENTRY_APPL_MIBS_REG,         "snmpsubagt_appl_mibs_register()"}, /* 50 */
+    { SNMPSUBAGT_FUNC_ENTRY_SPA_JOB,               "snmpsubagt_spa_job()"},
     { SNMPSUBAGT_FUNC_ENTRY_PENDING_LST_CMP,       "snmpsubagt_pending_regs_cmp()"},
     { SNMPSUBAGT_FUNC_ENTRY_PENDING_REGS_FREE,     "snmpsubagt_pending_regs_free()"},
     { SNMPSUBAGT_FUNC_ENTRY_PEND_REGS_PROC,        "snmpsubagt_pending_registrations_do()"},
@@ -181,15 +182,15 @@
     { SNMPSUBAGT_FUNC_ENTRY_PARAM_FILL,            "snmpsubagt_mab_mib_param_fill()"}, 
     { SNMPSUBAGT_FUNC_ENTRY_PARAM_TYPE_GET,        "snmpsubagt_mab_param_type_get()"}, 
     { SNMPSUBAGT_FUNC_ENTRY_INDEX_EXTRACT,         "snmpsubagt_mab_index_extract()"},  
-    { SNMPSUBAGT_FUNC_ENTRY_OID_COMPOSE,           "snmpsubagt_mab_oid_compose()"},
-    { SNMPSUBAGT_FUNC_ENTRY_RESP_PROCESS,          "snmpsubagt_mab_mibarg_resp_process()"},/* 60 */
+    { SNMPSUBAGT_FUNC_ENTRY_OID_COMPOSE,           "snmpsubagt_mab_oid_compose()"},  /* 60 */
+    { SNMPSUBAGT_FUNC_ENTRY_RESP_PROCESS,          "snmpsubagt_mab_mibarg_resp_process()"},
     { SNMPSUBAGT_FUNC_ENTRY_ERROR_CODE_MAP,        "snmpsubagt_mab_error_code_map()"}, 
     { SNMPSUBAGT_FUNC_ENTRY_UNREGISTER_MIB,        "snmpsubagt_mab_unregister_mib()"},
     { SNMPSUBAGT_FUNC_ENTRY_APPL_MIBS_UNREG,       "snmpsubagt_appl_mibs_unregister()"},
     { SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_KICKOFF,   "snmpsubagt_agt_monitor_kickoff()"},
     { SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR,           "snmpsubagt_agt_monitor()"},
     { SNMPSUBAGT_FUNC_ENTRY_AGT_PING,              "snmpsubagt_agt_ping()"}, 
-    { SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_STOP,      "snmpsubagt_agt_monitor_stop()"},/* 67*/
+    { SNMPSUBAGT_FUNC_ENTRY_AGT_MONITOR_STOP,      "snmpsubagt_agt_monitor_stop()"},/* 68*/
     { SNMPSUBAGT_FUNC_ENTRY_AMF_COMPONENTIZE,      "subagt_amf_componentize()"}, /* IR00061409 */
     { SNMPSUBAGT_FUNC_ENTRY_ACTIVE_ACTIVE_PROCESS,       "snmpsubagt_ACTIVE_ACTIVE_process"}, /* IR00061409 */
     { SNMPSUBAGT_FUNC_ENTRY_SIGUSR1_SIGNAL,        "subagt_process_sig_usr1_signal"}, /* IR00061409 */
diff -Naur opensaf/services/nms/ncs-snmp-subagt/src/subagt_amf.c opensaf-spsv-patch/services/nms/ncs-snmp-subagt/src/subagt_amf.c
--- opensaf/services/nms/ncs-snmp-subagt/src/subagt_amf.c	2007-10-19 15:12:01.000000000 +0530
+++ opensaf-spsv-patch/services/nms/ncs-snmp-subagt/src/subagt_amf.c	2007-12-10 18:46:53.000000000 +0530
@@ -1026,7 +1026,14 @@
         m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_SUBSYS_REG_FAILED,
                                    "subagt_register_dtsv_subsys()", 0, 0); 
     }
-    
+   
+    /* register test-mib - to be deleted once SPSV Integration is ready */
+    status = snmpsubagt_spa_job(SNMPSUBAGT_LIB_CONF/* "/etc/opt/opensaf/subagt_lib_conf" */, 1 /* REGISTER */);     
+    if (status != NCSCC_RC_SUCCESS)
+    {
+        /* log the error */
+    }
+     
     return status; 
 }
 /*****************************************************************************\
@@ -1101,12 +1108,213 @@
                                    "subagt_unregister_dtsv_subsys()", 0, 0); 
     }
     
+    /* unregister test-mib - to be deleted once SPSV Integration is ready */
+    status = snmpsubagt_spa_job(SNMPSUBAGT_LIB_CONF/* "/etc/opt/opensaf/subagt_lib_conf" */, 0 /* UNREGISTER */);     
+    if (status != NCSCC_RC_SUCCESS)
+    {
+        /* log the error */
+    }
+    
     /* Remove the nodes having unregister function pointers from the linked list in cb. */
     status = snmpsubagt_mibs_unload();
 
     return status; 
 }
 
+/*****************************************************************************\
+ *  Name:          snmpsubagt_spa_job                                         * 
+ *                                                                            *
+ *  Description:   To load/unload  the MIB libraries mentioned in the         *  
+ *                 configuration file                                         * 
+ *                                                                            *
+ *  Arguments:     uns8* - Name of the Configuration File                     *
+ *                 uns32 - what_to_do                                         *
+ *                          1 - REGISTER the MIB                              *
+ *                          0 - UNREGISTER the MIB                            *
+ *                                                                            * 
+ *  Returns:       NCSCC_RC_SUCCESS   - everything is OK                      *
+ *                 NCSCC_RC_FAILURE   -  failure                              *
+\*****************************************************************************/
+uns32 
+snmpsubagt_spa_job(uns8 *file_name, uns32 what_to_do)
+{
+    FILE    *fp = NULL; 
+    int8   lib_name[255] = {0};
+    int8   appl_name[255] = {0};
+    int8   func_name[255] = {0};
+    int32   nargs = 0;
+    uns32   status  = NCSCC_RC_FAILURE;
+    uns32    (*reg_unreg_routine)() = NULL; 
+    uns32    (*unreg_routine)() = NULL; 
+    NCS_OS_DLIB_HDL     *lib_hdl = NULL;
+    int8    *dl_error = NULL; 
+    SNMPSUBAGT_MIBS_REG_LIST *new_reg = NULL;
+
+    /* log the function entry */
+    m_SNMPSUBAGT_FUNC_ENTRY_LOG(SNMPSUBAGT_FUNC_ENTRY_SPA_JOB);
+
+    /* open the file */
+    fp = fopen(file_name, "r");
+    if (fp == NULL)
+    {
+        /* inform that there is no such file, and return */
+        m_NCS_SNMPSUBAGT_DBG_SINK(NCSCC_RC_FAILURE);
+        return NCSCC_RC_SUCCESS; 
+    }
+    
+    /* continue till the you reach the end of the file */
+    while (((nargs=fscanf(fp,"%s %s",lib_name, appl_name))==2) && 
+          (nargs != EOF))
+    {
+        /* Load the library if REGISTRATION is to be peformed */
+        if (what_to_do == 1)
+        {
+            lib_hdl = m_NCS_OS_DLIB_LOAD(lib_name, m_NCS_OS_DLIB_ATTR); 
+            if ((dl_error = m_NCS_OS_DLIB_ERROR()) != NULL) 
+            {
+                /* log the error returned from dlopen() */
+                m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_DLIB_LOAD_NULL_FAILED, dl_error, 0, 0); 
+
+                /* reset the local variables */ 
+                reg_unreg_routine = NULL; 
+                lib_hdl = NULL;
+                m_NCS_MEMSET(appl_name, 0, 255);
+                m_NCS_MEMSET(func_name, 0, 255);
+                m_NCS_MEMSET(lib_name, 0, 255);
+
+                continue; 
+            }
+            /* get the function pointer for init/deinit */ 
+            sprintf(func_name, "subagt_register_%s_subsys",appl_name);
+        }
+        else
+        {
+            /* de-register the subsystem */
+            sprintf(func_name, "subagt_unregister_%s_subsys",appl_name);
+        }
+        
+        reg_unreg_routine = m_NCS_OS_DLIB_SYMBOL(lib_hdl, func_name); 
+        if ((dl_error = m_NCS_OS_DLIB_ERROR()) != NULL) 
+        {
+            /* log the error returned from dlopen() */
+            m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_DLIB_SYM_FAILED, dl_error, 0, 0); 
+            if (lib_hdl != NULL)
+               m_NCS_OS_DLIB_CLOSE(lib_hdl); 
+
+            /* reset the local variables */ 
+            reg_unreg_routine = NULL; 
+            lib_hdl = NULL;
+            m_NCS_MEMSET(appl_name, 0, 255);
+            m_NCS_MEMSET(func_name, 0, 255);
+            m_NCS_MEMSET(lib_name, 0, 255);
+
+            continue; 
+        }
+
+        /* do the INIT/DEINIT now... */
+        if (reg_unreg_routine != NULL)
+        {
+            status = (*reg_unreg_routine)(); 
+            if (status != NCSCC_RC_SUCCESS)
+            {
+                m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_REG_DEREG_FAILED, func_name, 0, 0); 
+            }
+            else
+            {
+                m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_REG_DEREG_SUCCESS, func_name, 0, 0); 
+
+                if (what_to_do == 1)
+                {
+                    NCSSA_CB    *cb = m_SNMPSUBAGT_CB_GET; 
+                    
+                    m_NCS_MEMSET(func_name, 0, 255);
+                    sprintf(func_name, "subagt_unregister_%s_subsys",appl_name);
+                    unreg_routine = m_NCS_OS_DLIB_SYMBOL(lib_hdl, func_name); 
+                    if ((dl_error = m_NCS_OS_DLIB_ERROR()) != NULL) 
+                    {
+                        /* log the error returned from dlopen() */
+                        m_SNMPSUBAGT_ERROR_STR_LOG(SNMPSUBAGT_DLIB_SYM_FAILED, dl_error, 0, 0); 
+                        m_NCS_OS_DLIB_CLOSE(lib_hdl); 
+
+                        /* reset the local variables */ 
+                        reg_unreg_routine = NULL; 
+                        lib_hdl = NULL;
+                        m_NCS_MEMSET(appl_name, 0, 255);
+                        m_NCS_MEMSET(func_name, 0, 255);
+                        m_NCS_MEMSET(lib_name, 0, 255);
+
+                        continue; 
+                    }
+                    
+                    /* allocate the memory for the pending registraion node */
+                    new_reg = m_MMGR_SNMPSUBAGT_MIBS_REG_LIST_ALLOC;
+                    if (new_reg == NULL)
+                    {
+                        /* MEMFAILURE log: the memory failure error */
+                        m_SNMPSUBAGT_MEM_FAIL_LOG(SNMPSUBAGT_PEND_REG_NODE_ALLOC_FAILED);
+                        m_NCS_OS_DLIB_CLOSE(lib_hdl); 
+        
+                        /* reset the local variables */ 
+                        reg_unreg_routine = NULL; 
+                        lib_hdl = NULL;
+                        m_NCS_MEMSET(appl_name, 0, 255);
+                        m_NCS_MEMSET(func_name, 0, 255);
+                        m_NCS_MEMSET(lib_name, 0, 255);
+                        
+                        continue; 
+                    }
+                    
+                    /* initialize */
+                    m_NCS_MEMSET(new_reg, 0, sizeof(SNMPSUBAGT_MIBS_REG_LIST));
+
+                    /* copy the unregister routine */ 
+                    new_reg->deinit_routine = unreg_routine;
+                    new_reg->node.key = (uns8*)new_reg->deinit_routine;
+                    
+                    /* store the name library handle */ 
+                    new_reg->lib_hdl = lib_hdl;
+                    
+                    /* add to the list */
+                    status = ncs_db_link_list_add(&cb->new_registrations,
+                                                  (NCS_DB_LINK_LIST_NODE*)new_reg);
+                    if (status != NCSCC_RC_SUCCESS)
+                    {
+                        /* ERROR log: adding to the list failed */
+                        m_SNMPSUBAGT_ERROR_LOG(SNMPSUBAGT_PEND_REG_DLIST_ADD_FAILED,
+                                                        status, 0, 0);
+                        m_MMGR_SNMPSUBAGT_MIBS_REG_LIST_FREE(new_reg);
+                        m_NCS_OS_DLIB_CLOSE(lib_hdl); 
+
+                        /* reset the local variables */ 
+                        reg_unreg_routine = NULL; 
+                        lib_hdl = NULL;
+                        m_NCS_MEMSET(appl_name, 0, 255);
+                        m_NCS_MEMSET(func_name, 0, 255);
+                        m_NCS_MEMSET(lib_name, 0, 255);
+                        
+                        continue; 
+                    }
+
+                    /* log message TBD MAHESH */ 
+
+                } /* if (what_to_do == 1) */ 
+            } 
+        }
+
+        /* reset the local variables */ 
+        reg_unreg_routine = NULL; 
+        lib_hdl = NULL;
+        m_NCS_MEMSET(appl_name, 0, 255);
+        m_NCS_MEMSET(func_name, 0, 255);
+        m_NCS_MEMSET(lib_name, 0, 255);
+    } /* for all the libraries */
+
+    /* close the file */
+    fclose(fp);
+     
+    return NCSCC_RC_SUCCESS; 
+}
+
 /****************************************************************************\
 *  Name:          snmpsubagt_mibs_reload                                     * 
 *                                                                            *
@@ -1215,6 +1423,7 @@
     
     return NCSCC_RC_SUCCESS; 
 }
+
 /*****************************************************************************\
  *  Name:          snmpsubagt_pending_regs_cmp                                * 
  *                                                                            *
diff -Naur opensaf/services/nms/ncs-snmp-subagt/src/subagt_mbx.c opensaf-spsv-patch/services/nms/ncs-snmp-subagt/src/subagt_mbx.c
--- opensaf/services/nms/ncs-snmp-subagt/src/subagt_mbx.c	2007-10-19 15:12:01.000000000 +0530
+++ opensaf-spsv-patch/services/nms/ncs-snmp-subagt/src/subagt_mbx.c	2007-12-10 18:46:53.000000000 +0530
@@ -141,7 +141,10 @@
 
             /* unload the current libraries */
             snmpsubagt_mibs_unload(); 
-
+            
+            /* re-read the configuration file */ 
+            snmpsubagt_spa_job(SNMPSUBAGT_LIB_CONF, 1); 
+            
             break;
             
             default:
