diff --git a/ChaosMetadataService/api/control_unit/GetFullDescription.cpp b/ChaosMetadataService/api/control_unit/GetFullDescription.cpp
index 925d5e1d936487c81a3d40af37787e55e8f3f5eb..ee8b61da40dc2fc87d56f545abab40bf03df4118 100644
--- a/ChaosMetadataService/api/control_unit/GetFullDescription.cpp
+++ b/ChaosMetadataService/api/control_unit/GetFullDescription.cpp
@@ -134,9 +134,13 @@ CDWUniquePtr GetFullDescription::execute(CDWUniquePtr api_data) {
                 //we can retrive the configured attribute
                 ChaosSharedPtr<CDataWrapper> init_ds_attribute = mergeDatasetAttributeWithSetup(element,
                                                                                                 element_configuration);
-                init_dataset->appendCDataWrapperToArray(*init_ds_attribute.get());
+                if(init_ds_attribute.get()){                                                                      
+                    init_dataset->appendCDataWrapperToArray(*init_ds_attribute.get());
+                }
             } else {
-                init_dataset->appendCDataWrapperToArray(*element.get());
+                if(element.get()){
+                    init_dataset->appendCDataWrapperToArray(*element.get());
+                }
             }
         }
     }
diff --git a/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
index e14732a1d1a0bf11891838dc9bf56bb89ca262d1..e536c1913bb5b0dc53c096ff488b31f1d5d741d7 100644
--- a/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
+++ b/ChaosMetadataService/api/control_unit/SearchInstancesByUS.cpp
@@ -75,7 +75,9 @@ CDWUniquePtr SearchInstancesByUS::execute(CDWUniquePtr api_data) {
             for (std::vector<ChaosSharedPtr<CDataWrapper> >::iterator it = page_result.begin();
                  it != page_result.end();
                  it++) {
-                result->appendCDataWrapperToArray(*it->get());
+                if(it->get()){
+                    result->appendCDataWrapperToArray(*it->get());
+                }
             }
             result->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
         }
diff --git a/ChaosMetadataService/api/data_service/GetAllDataService.cpp b/ChaosMetadataService/api/data_service/GetAllDataService.cpp
index 519f4a3af9deffdef88d8d78ef3a598cf3669a70..ac8c35e32298073b3f0fe3a30644e70d27017eef 100644
--- a/ChaosMetadataService/api/data_service/GetAllDataService.cpp
+++ b/ChaosMetadataService/api/data_service/GetAllDataService.cpp
@@ -45,7 +45,9 @@ CDWUniquePtr GetAllDataService::execute(CDWUniquePtr api_data) {
         for(std::vector<ChaosSharedPtr<CDataWrapper> >::iterator it = data_services.begin();
             it != data_services.end();
             it++) {
-            result->appendCDataWrapperToArray(*it->get());
+            if(it->get()){
+                result->appendCDataWrapperToArray(*it->get());
+            }
         }
         result->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
     }
diff --git a/ChaosMetadataService/api/data_service/GetAssociationByDS.cpp b/ChaosMetadataService/api/data_service/GetAssociationByDS.cpp
index 7d84b7cab002b05c63e45c9e5dc9a5708815ff89..dab3b2fea7c77c5034a3db1f65b79a6554ba4c7a 100644
--- a/ChaosMetadataService/api/data_service/GetAssociationByDS.cpp
+++ b/ChaosMetadataService/api/data_service/GetAssociationByDS.cpp
@@ -53,7 +53,9 @@ CDWUniquePtr GetAssociationByDS::execute(CDWUniquePtr api_data) {
     for(std::vector<ChaosSharedPtr<CDataWrapper> >::iterator it = node_associated.begin();
         it != node_associated.end();
         it++) {
-        result->appendCDataWrapperToArray(*it->get());
+        if(it->get()){
+            result->appendCDataWrapperToArray(*it->get());
+        }
     }
     result->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
     return result;
diff --git a/ChaosMetadataService/api/logging/GetLogForSourceUID.cpp b/ChaosMetadataService/api/logging/GetLogForSourceUID.cpp
index 71d63db4a23b02cce4a642c2d32e143f630e0ce0..3b75e4b50a166d3af36f2fba0cde0fa009296798 100644
--- a/ChaosMetadataService/api/logging/GetLogForSourceUID.cpp
+++ b/ChaosMetadataService/api/logging/GetLogForSourceUID.cpp
@@ -82,7 +82,9 @@ CDWUniquePtr GetLogForSourceUID::execute(CDWUniquePtr api_data) {
         for(LogEntryListIterator it = entry_list.begin();
             it != entry_list.end();
             it++){
-            result->appendCDataWrapperToArray(*LogUtility::convertEntry(*(*it).get()));
+            if((*it).get()){
+                result->appendCDataWrapperToArray(*LogUtility::convertEntry(*(*it).get()));
+            }
         }
         result->finalizeArrayForKey("result_list");
     }
diff --git a/ChaosMetadataService/api/logging/SearchLogEntry.cpp b/ChaosMetadataService/api/logging/SearchLogEntry.cpp
index 13a4097836179bb66e1ffcacbe16862a02a91079..3f0eff4b41746f882b483f6218e8f718f7a8a0e9 100644
--- a/ChaosMetadataService/api/logging/SearchLogEntry.cpp
+++ b/ChaosMetadataService/api/logging/SearchLogEntry.cpp
@@ -82,7 +82,10 @@ CDWUniquePtr SearchLogEntry::execute(CDWUniquePtr api_data) {
         for(LogEntryListIterator it = entry_list.begin();
             it != entry_list.end();
             it++){
-            result->appendCDataWrapperToArray(*LogUtility::convertEntry(*(*it).get()));
+            if((*it).get()){
+
+                result->appendCDataWrapperToArray(*LogUtility::convertEntry(*(*it).get()));
+            }
         }
         result->finalizeArrayForKey("result_list");
     }
diff --git a/ChaosMetadataService/api/service/GetAllSnapshot.cpp b/ChaosMetadataService/api/service/GetAllSnapshot.cpp
index 6d4dce30c9d3a152dfa5a7c3ecad1f3107f9be3e..e7b12b41b793dec11c398cbbd8909767afc648cc 100644
--- a/ChaosMetadataService/api/service/GetAllSnapshot.cpp
+++ b/ChaosMetadataService/api/service/GetAllSnapshot.cpp
@@ -46,13 +46,16 @@ CDWUniquePtr GetAllSnapshot::execute(CDWUniquePtr api_data) {
     GET_DATA_ACCESS(SnapshotDataAccess, s_da, -1);
     
     if((err = s_da->getAllSnapshot(snapshots))){
-        LOG_AND_TROW(S_GAS_ERR, -2, "Error getting the snpahsot list");
+        LOG_AND_TROW(S_GAS_ERR, -2, "Error getting the snapshot list");
     }
     
     for(SnapshotListIterator it = snapshots.begin();
         it != snapshots.end();
         it++) {
-        result->appendCDataWrapperToArray(*(*it).get());
+        if((*it).get()){
+
+            result->appendCDataWrapperToArray(*(*it).get());
+        }
     }
     
     result->finalizeArrayForKey("snapshot_list_result");
diff --git a/ChaosMetadataService/api/service/GetSnapshotDatasetsForNode.cpp b/ChaosMetadataService/api/service/GetSnapshotDatasetsForNode.cpp
index 6ed0e34154f08750f661fc4f7e92a843a5c93901..58f388677cccb273f34bc2a8ecbec82317df34ef 100644
--- a/ChaosMetadataService/api/service/GetSnapshotDatasetsForNode.cpp
+++ b/ChaosMetadataService/api/service/GetSnapshotDatasetsForNode.cpp
@@ -58,7 +58,9 @@ CDWUniquePtr GetSnapshotDatasetsForNode::execute(CDWUniquePtr api_data) {
         it++) {
         CDataWrapper dataset_element;        
         dataset_element.addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_NAME, it->first);
-        dataset_element.addCSDataValue("dataset_value", *it->second);
+        if(it->second){
+            dataset_element.addCSDataValue("dataset_value", *it->second);
+        }
         result->appendCDataWrapperToArray(dataset_element);
     }
 
diff --git a/ChaosMetadataService/api/service/QueryDataCloud.cpp b/ChaosMetadataService/api/service/QueryDataCloud.cpp
index 40f511323dbf3d375bdf8fa3f5c093b173b1b695..a5451b6f7bfda6d7254e8d5b74487aa7e3aff146 100644
--- a/ChaosMetadataService/api/service/QueryDataCloud.cpp
+++ b/ChaosMetadataService/api/service/QueryDataCloud.cpp
@@ -95,7 +95,9 @@ CDWUniquePtr QueryDataCloud::execute(CDWUniquePtr api_data) {
         }
 
         for(VectorObject::iterator i=found_object_page.begin();i!=found_object_page.end();i++){
-             result->appendCDataWrapperToArray(*(i->get()));   
+            if(i->get()){
+             result->appendCDataWrapperToArray(*(i->get()));
+            }
         }
 
         
diff --git a/ChaosMetadataService/api/unit_server/GetSetFullUnitServer.cpp b/ChaosMetadataService/api/unit_server/GetSetFullUnitServer.cpp
index 417f0aa5f9ed386211c675bdbc5dbdbf9c9b907a..7528a73b3b4d32af8b00c76b1e2fea03a01d82c0 100644
--- a/ChaosMetadataService/api/unit_server/GetSetFullUnitServer.cpp
+++ b/ChaosMetadataService/api/unit_server/GetSetFullUnitServer.cpp
@@ -231,7 +231,9 @@ CDWUniquePtr GetSetFullUnitServer::execute(CDWUniquePtr api_data) {
                             LOG_AND_TROW(US_ACT_ERR, err, boost::str(boost::format("Error fetching the control unit instance description for cuid:%1%") % cu_uid));
                             
                         }
-                        tot_res.appendCDataWrapperToArray(*res);
+                        if(res){
+                            tot_res.appendCDataWrapperToArray(*res);
+                        }
                     }
                 }
                 tot_res.finalizeArrayForKey("cu_desc");
diff --git a/ChaosMetadataService/common/CUCommonUtility.cpp b/ChaosMetadataService/common/CUCommonUtility.cpp
index 1402e8d284a18ce32a3e43b2217b6127f74f18d6..f895a9ab69bde8327c7b9b4d1c25d0153eea2428 100644
--- a/ChaosMetadataService/common/CUCommonUtility.cpp
+++ b/ChaosMetadataService/common/CUCommonUtility.cpp
@@ -45,28 +45,28 @@ using namespace chaos::service_common::persistence::data_access;
 ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::prepareRequestPackForLoadControlUnit(const std::string &cu_uid, chaos::metadata_service::persistence::data_access::NodeDataAccess *n_da, chaos::metadata_service::persistence::data_access::ControlUnitDataAccess *cu_da, chaos::metadata_service::persistence::data_access::DataServiceDataAccess *ds_da) {
   CUCU_DBG << "Prepare autoload request for:" << cu_uid;
   int                                               err     = 0;
-  CDataWrapper *                                    tmp_ptr = NULL;
+  CDataWrapper                                     *tmp_ptr = NULL;
   ChaosUniquePtr<chaos::common::data::CDataWrapper> instance_description;
   ChaosUniquePtr<chaos::common::data::CDataWrapper> result_pack;
   if ((err = cu_da->getInstanceDescription(cu_uid,
                                            &tmp_ptr))) {
-    //we haven't found an instance for the node
+    // we haven't found an instance for the node
     CUCU_ERR << "Erroe getting instance" << err;
   } else if (tmp_ptr != NULL) {
     instance_description.reset(tmp_ptr);
 
-    //we have instances the rpc port is got from the unit server input data of the command
+    // we have instances the rpc port is got from the unit server input data of the command
     if (!instance_description->hasKey("control_unit_implementation")) {
       CUCU_ERR << "No implementaiton found";
     } else {
       CUCU_DBG << "Create the autoload datapack for:" << cu_uid;
       result_pack.reset(new CDataWrapper());
 
-      //add cu id
+      // add cu id
       result_pack->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, cu_uid);
-      //add cu type
+      // add cu type
       result_pack->addStringValue(UnitServerNodeDomainAndActionRPC::PARAM_CONTROL_UNIT_TYPE, instance_description->getStringValue("control_unit_implementation"));
-      //add driver description
+      // add driver description
       instance_description->copyKeyTo(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DRIVER_DESCRIPTION, *result_pack);
       instance_description->copyKeyTo(ControlUnitNodeDefinitionKey::CONTROL_UNIT_LOAD_PARAM, *result_pack);
       addDataServicePack(result_pack, ds_da);
@@ -77,15 +77,15 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::prepareReques
   return result_pack;
 }
 
-void CUCommonUtility::prepareAutoInitAndStartInAutoLoadControlUnit(const std::string &    cu_uid,
-                                                                   NodeDataAccess *       n_da,
+void CUCommonUtility::prepareAutoInitAndStartInAutoLoadControlUnit(const std::string     &cu_uid,
+                                                                   NodeDataAccess        *n_da,
                                                                    ControlUnitDataAccess *cu_da,
                                                                    DataServiceDataAccess *ds_da,
-                                                                   CDataWrapper *         auto_load_pack) {
+                                                                   CDataWrapper          *auto_load_pack) {
   CUCU_DBG << "Prepare autoload request for:" << cu_uid;
   int           err     = 0;
   CDataWrapper *tmp_ptr = NULL;
-  //if the control unit to load need also to be initialized and started we compose the startup command to achieve this
+  // if the control unit to load need also to be initialized and started we compose the startup command to achieve this
   if ((err = cu_da->getInstanceDescription(cu_uid, &tmp_ptr))) {
     LOG_AND_TROW_FORMATTED(CUCU_ERR, err, "Error %1% durring fetch of instance for unit server %2%", % err % cu_da)
   } else if (tmp_ptr) {
@@ -102,9 +102,12 @@ void CUCommonUtility::prepareAutoInitAndStartInAutoLoadControlUnit(const std::st
 
         ChaosUniquePtr<chaos::common::data::CDataWrapper> init_message_datapack(new CDataWrapper());
         init_message_datapack->addStringValue(RpcActionDefinitionKey::CS_CMDM_ACTION_NAME, NodeDomainAndActionRPC::ACTION_NODE_INIT);
-        init_message_datapack->addCSDataValue(RpcActionDefinitionKey::CS_CMDM_ACTION_MESSAGE, *init_datapack);
-
-        auto_load_pack->appendCDataWrapperToArray(*init_message_datapack);
+        if (init_datapack.get()) {
+          init_message_datapack->addCSDataValue(RpcActionDefinitionKey::CS_CMDM_ACTION_MESSAGE, *init_datapack);
+        }
+        if (init_message_datapack.get()) {
+          auto_load_pack->appendCDataWrapperToArray(*init_message_datapack);
+        }
       }
       if (auto_start) {
         ChaosUniquePtr<chaos::common::data::CDataWrapper> start_datapack(new CDataWrapper());
@@ -116,37 +119,37 @@ void CUCommonUtility::prepareAutoInitAndStartInAutoLoadControlUnit(const std::st
         auto_load_pack->appendCDataWrapperToArray(*start_message_datapack);
       }
 
-      //finalize startup command array
+      // finalize startup command array
       auto_load_pack->finalizeArrayForKey(UnitServerNodeDomainAndActionRPC::PARAM_CONTROL_UNIT_STARTUP_COMMAND);
     }
   }
 }
 
-CDWShrdPtr CUCommonUtility::getConfigurationToUse(const std::string &                                                       cu_uid,
-                                                  const std::string &                                                       ds_attribute_name,
-                                                  chaos::metadata_service::persistence::data_access::NodeDataAccess *       n_da,
+CDWShrdPtr CUCommonUtility::getConfigurationToUse(const std::string                                                        &cu_uid,
+                                                  const std::string                                                        &ds_attribute_name,
+                                                  chaos::metadata_service::persistence::data_access::NodeDataAccess        *n_da,
                                                   chaos::metadata_service::persistence::data_access::ControlUnitDataAccess *cu_da,
-                                                  PropertyGroup &                                                           control_unit_property_group) {
+                                                  PropertyGroup                                                            &control_unit_property_group) {
   int                          err = 0;
   ChaosSharedPtr<CDataWrapper> element_configuration;
 
-  //fetch static information
+  // fetch static information
   if ((err = cu_da->getInstanceDatasetAttributeConfiguration(cu_uid,
                                                              ds_attribute_name,
                                                              element_configuration))) {
     LOG_AND_TROW(CUCU_ERR, err, boost::str(boost::format("Error loading the configuration for the the dataset's attribute: %1% for control unit: %2%") % ds_attribute_name % cu_uid));
   }
 
-  //check if we need to do a restor at initialization time
+  // check if we need to do a restor at initialization time
   if (control_unit_property_group.hasProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_APPLY) &
           control_unit_property_group.getProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_APPLY).getPropertyValue().isValid() &&
       control_unit_property_group.getProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_APPLY).getPropertyValue().asBool()) {
-    //in case of restore at init if we need to to a restor to a last valid dataset wi try to fetch it from database
+    // in case of restore at init if we need to to a restor to a last valid dataset wi try to fetch it from database
     if (control_unit_property_group.hasProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_OPTION) &&
         control_unit_property_group.getProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_OPTION).getPropertyValue().isValid()) {
       if (control_unit_property_group.getProperty(chaos::ControlUnitPropertyKey::INIT_RESTORE_OPTION).getPropertyValue().asInt32() == chaos::ControlUnitPropertyKey::INIT_RESTORE_OPTION_TYPE_LAST_VALIDE) {
-        //in this case we need only the value, but if the attribute has been set in static configuration all othe property are preserved
-        //get last dataset
+        // in this case we need only the value, but if the attribute has been set in static configuration all othe property are preserved
+        // get last dataset
         CDWShrdPtr                 tmp_result;
         AbstractPersistenceDriver &obj_storage_drv = DriverPoolManager::getInstance()->getObjectStorageDrv();
         if (obj_storage_drv.getDataAccess<ObjectStorageDataAccess>()->getLastObject(cu_uid + chaos::DataPackPrefixID::INPUT_DATASET_POSTFIX, tmp_result) == 0) {
@@ -155,7 +158,7 @@ CDWShrdPtr CUCommonUtility::getConfigurationToUse(const std::string &
             if (element_configuration.get() == NULL) {
               element_configuration.reset(new CDataWrapper());
             }
-            //we have found last dataset
+            // we have found last dataset
             ChaosSharedPtr<CDataWrapper> new_configuration(new CDataWrapper());
             element_configuration->getAllKey(all_keys);
 
@@ -169,10 +172,10 @@ CDWShrdPtr CUCommonUtility::getConfigurationToUse(const std::string &
                 element_configuration->copyKeyTo(*it, *new_configuration);
               }
             }
-            //set new confiuration as element default configuration
+            // set new confiuration as element default configuration
             element_configuration = new_configuration;
           } else {
-            //we have got problem to fetch last dataset so we trow exception
+            // we have got problem to fetch last dataset so we trow exception
             throw CException(-1, "No dataset found on object storage", __PRETTY_FUNCTION__);
           }
         }
@@ -183,13 +186,12 @@ CDWShrdPtr CUCommonUtility::getConfigurationToUse(const std::string &
 }
 static int64_t                                    nu_cache_ts = 0;
 static std::vector<ChaosSharedPtr<CDataWrapper> > data_services;
-static CDataWrapper fillWrapperFromPersistenceParams(chaos::service_common::persistence::data_access::PersistenceDriverSetting& setting){
+static CDataWrapper                               fillWrapperFromPersistenceParams(chaos::service_common::persistence::data_access::PersistenceDriverSetting &setting) {
   CDataWrapper persistence;
-  if(setting.persistence_implementation.size()){
-    std::vector<std::string> pers_servers=setting.persistence_server_list;//ChaosMetadataService::getInstance()->getGlobalConfigurationInstance()->getOption< std::vector< std::string> >(chaos::service_common::persistence::OPT_PERSITENCE_SERVER_ADDR_LIST);
+  if (setting.persistence_implementation.size()) {
+    std::vector<std::string> pers_servers = setting.persistence_server_list;  // ChaosMetadataService::getInstance()->getGlobalConfigurationInstance()->getOption< std::vector< std::string> >(chaos::service_common::persistence::OPT_PERSITENCE_SERVER_ADDR_LIST);
     persistence.addStringValue(chaos::service_common::persistence::OPT_PERSITENCE_IMPL, setting.persistence_implementation);
-    if ( pers_servers.size()){
-
+    if (pers_servers.size()) {
       for (std::vector<std::string>::iterator i = pers_servers.begin(); i != pers_servers.end(); i++) {
         if (*i == "localhost" || (*i == "127.0.0.1")) {
           persistence.appendStringToArray(chaos::GlobalConfiguration::getInstance()->getLocalServerAddress());
@@ -197,18 +199,17 @@ static CDataWrapper fillWrapperFromPersistenceParams(chaos::service_common::pers
           persistence.appendStringToArray(*i);
         }
       }
-    persistence.finalizeArrayForKey(chaos::service_common::persistence::OPT_PERSITENCE_SERVER_ADDR_LIST);
-  }
-  std::map<std::string,std::string> parameter = setting.persistence_kv_param_map;
-  for (std::map<std::string,std::string>::iterator i = parameter.begin(); i != parameter.end(); i++) {
-      persistence.appendStringToArray(i->first+":"+i->second);
-  }
-  if(parameter.begin()!=parameter.end()){
+      persistence.finalizeArrayForKey(chaos::service_common::persistence::OPT_PERSITENCE_SERVER_ADDR_LIST);
+    }
+    std::map<std::string, std::string> parameter = setting.persistence_kv_param_map;
+    for (std::map<std::string, std::string>::iterator i = parameter.begin(); i != parameter.end(); i++) {
+      persistence.appendStringToArray(i->first + ":" + i->second);
+    }
+    if (parameter.begin() != parameter.end()) {
       persistence.finalizeArrayForKey(chaos::service_common::persistence::OPT_PERSITENCE_KV_PARAMTER);
-
+    }
   }
-}
-return persistence;
+  return persistence;
 }
 void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDataWrapper> &result, chaos::metadata_service::persistence::data_access::DataServiceDataAccess *ds_da, unsigned numner_or_result) {
   int     err = 0;
@@ -226,7 +227,7 @@ void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDa
                                           numner_or_result))) {
       throw CException(err, "Error fetching best available data service", __PRETTY_FUNCTION__);
     }
-    //update cache on first call after ten seconds
+    // update cache on first call after ten seconds
   }
   std::string msgbroker = GlobalConfiguration::getInstance()->getOption<std::string>(InitOption::OPT_MSG_BROKER_SERVER);
   if (msgbroker.size()) {
@@ -234,22 +235,21 @@ void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDa
     result->finalizeArrayForKey(chaos::DataServiceNodeDefinitionKey::DS_BROKER_ADDRESS_LIST);
     result->addInt64Value(chaos::DataServiceNodeDefinitionKey::DS_TIMESTAMP_UNCERTENTY, (uint64_t)ChaosMetadataService::timePrecisionMask);
   }
-  
-  if(DriverPoolManager::objectSetting.persistence_implementation.size()){
-      result->append(chaos::DataServiceNodeDefinitionKey::DS_STORAGE_SETTINGS, fillWrapperFromPersistenceParams(DriverPoolManager::objectSetting));
 
+  if (DriverPoolManager::objectSetting.persistence_implementation.size()) {
+    result->append(chaos::DataServiceNodeDefinitionKey::DS_STORAGE_SETTINGS, fillWrapperFromPersistenceParams(DriverPoolManager::objectSetting));
   }
- if( DriverPoolManager::persistentSetting.persistence_implementation.size()){ 
+  if (DriverPoolManager::persistentSetting.persistence_implementation.size()) {
     result->append(chaos::DataServiceNodeDefinitionKey::DS_ADMIN_SETTINGS, fillWrapperFromPersistenceParams(DriverPoolManager::persistentSetting));
- }
- if( DriverPoolManager::logSetting.persistence_implementation.size()){ 
+  }
+  if (DriverPoolManager::logSetting.persistence_implementation.size()) {
     result->append(chaos::DataServiceNodeDefinitionKey::DS_LOG_SETTINGS, fillWrapperFromPersistenceParams(DriverPoolManager::logSetting));
- }
- // std::vector<std::string> cache_server = GlobalConfiguration::getInstance()->getOption<std::vector<std::string> >(OPT_CACHE_SERVER_LIST);
+  }
+  // std::vector<std::string> cache_server = GlobalConfiguration::getInstance()->getOption<std::vector<std::string> >(OPT_CACHE_SERVER_LIST);
   std::vector<std::string> cache_server = DriverPoolManager::cacheSetting.startup_chache_servers;
   if (cache_server.size()) {
     CDataWrapper cache;
-    //cache.addStringValue(OPT_CACHE_DRIVER, GlobalConfiguration::getInstance()->getOption<std::string>(OPT_CACHE_DRIVER));
+    // cache.addStringValue(OPT_CACHE_DRIVER, GlobalConfiguration::getInstance()->getOption<std::string>(OPT_CACHE_DRIVER));
     cache.addStringValue(OPT_CACHE_DRIVER, DriverPoolManager::cacheSetting.cache_driver_impl);
     for (std::vector<std::string>::iterator i = cache_server.begin(); i != cache_server.end(); i++) {
       if (*i == "localhost" || (*i == "127.0.0.1")) {
@@ -259,21 +259,20 @@ void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDa
       }
     }
     cache.finalizeArrayForKey(OPT_CACHE_SERVER_LIST);
-   // std::vector<std::string> parameter = GlobalConfiguration::getInstance()->getOption<std::vector<std::string> >(OPT_CACHE_DRIVER_KVP);
-    std::map<std::string,std::string> parameter = DriverPoolManager::cacheSetting.key_value_custom_param;
-    for (std::map<std::string,std::string>::iterator i = parameter.begin(); i != parameter.end(); i++) {
-      cache.appendStringToArray(i->first+":"+i->second);
+    // std::vector<std::string> parameter = GlobalConfiguration::getInstance()->getOption<std::vector<std::string> >(OPT_CACHE_DRIVER_KVP);
+    std::map<std::string, std::string> parameter = DriverPoolManager::cacheSetting.key_value_custom_param;
+    for (std::map<std::string, std::string>::iterator i = parameter.begin(); i != parameter.end(); i++) {
+      cache.appendStringToArray(i->first + ":" + i->second);
     }
     cache.finalizeArrayForKey(OPT_CACHE_DRIVER_KVP);
     result->append(chaos::DataServiceNodeDefinitionKey::DS_CACHE_SETTINGS, cache);
   }
 
-
-  //constructs the result
-  //result.reset(new CDataWrapper());
+  // constructs the result
+  // result.reset(new CDataWrapper());
   if (data_services.size() == 0) {
     /// something wrong returning my self
-    
+
     result->appendStringToArray(boost::str(boost::format("%1%|0") % NetworkBroker::getInstance()->getDirectIOUrl()));
     result->finalizeArrayForKey(chaos::DataServiceNodeDefinitionKey::DS_DIRECT_IO_FULL_ADDRESS_LIST);
 
@@ -295,7 +294,7 @@ void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDa
     }
     result->finalizeArrayForKey(chaos::DataServiceNodeDefinitionKey::DS_DIRECT_IO_FULL_ADDRESS_LIST);
 
-    //add rpc information for found nodes
+    // add rpc information for found nodes
     BOOST_FOREACH (ChaosSharedPtr<CDataWrapper> ds_element, data_services) {
       if (ds_element->hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) {
         result->appendStringToArray(ds_element->getStringValue(chaos::NodeDefinitionKey::NODE_RPC_ADDR));
@@ -308,7 +307,6 @@ void CUCommonUtility::addDataServicePack(ChaosUniquePtr<chaos::common::data::CDa
     throw CException(err, "No best endpoint found", __PRETTY_FUNCTION__);
   }
   CUCU_DBG << "Configuration pack:" << result->getJSONString();
-
 }
 #if 0
 void CUCommonUtility::addDataServicePack(const std::string& cu_uid,ChaosUniquePtr<chaos::common::data::CDataWrapper>& init_datapack,
@@ -364,36 +362,36 @@ void CUCommonUtility::addDataServicePack(const std::string& cu_uid,ChaosUniquePt
    
 }
 #endif
-ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(const std::string &    cu_uid,
-                                                                                NodeDataAccess *       n_da,
+ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(const std::string     &cu_uid,
+                                                                                NodeDataAccess        *n_da,
                                                                                 ControlUnitDataAccess *cu_da,
                                                                                 DataServiceDataAccess *ds_da) {
   int                                               err    = 0;
   int64_t                                           run_id = 0;
-  CDataWrapper *                                    result = NULL;
+  CDataWrapper                                     *result = NULL;
   PropertyGroup                                     control_unit_property_group;
   ChaosUniquePtr<chaos::common::data::CDataWrapper> cu_base_description;
   ChaosUniquePtr<chaos::common::data::CDataWrapper> dataset_description;
   ChaosUniquePtr<chaos::common::data::CDataWrapper> init_datapack(new CDataWrapper());
 
-  //set the control unique id in the init datapack
+  // set the control unique id in the init datapack
   init_datapack->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, cu_uid);
 
-  //get default control unit node description
+  // get default control unit node description
   if ((err = n_da->getNodeDescription(cu_uid, &result))) {
     LOG_AND_TROW(CUCU_ERR, err, boost::str(boost::format("Error fetching the control unit node default description for unique id:%1% with error %2%") % cu_uid));
   }
   cu_base_description.reset(result);
   result = NULL;
 
-  //copy rpc information in the init datapack
+  // copy rpc information in the init datapack
   if (init_datapack->hasKey(NodeDefinitionKey::NODE_RPC_ADDR)) {
-    //CHECK_KEY_THROW_AND_LOG(cu_base_description, NodeDefinitionKey::NODE_RPC_ADDR, CUCU_ERR, -3, "No rpc addres in the control unit descirption")
+    // CHECK_KEY_THROW_AND_LOG(cu_base_description, NodeDefinitionKey::NODE_RPC_ADDR, CUCU_ERR, -3, "No rpc addres in the control unit descirption")
     init_datapack->addStringValue(NodeDefinitionKey::NODE_RPC_ADDR, cu_base_description->getStringValue(NodeDefinitionKey::NODE_RPC_ADDR));
   }
 
   if (init_datapack->hasKey(NodeDefinitionKey::NODE_RPC_DOMAIN)) {
-    //CHECK_KEY_THROW_AND_LOG(cu_base_description, NodeDefinitionKey::NODE_RPC_DOMAIN, CUCU_ERR, -3, "No rpc domain in the control unit descirption")
+    // CHECK_KEY_THROW_AND_LOG(cu_base_description, NodeDefinitionKey::NODE_RPC_DOMAIN, CUCU_ERR, -3, "No rpc domain in the control unit descirption")
     init_datapack->addStringValue(NodeDefinitionKey::NODE_RPC_DOMAIN, cu_base_description->getStringValue(NodeDefinitionKey::NODE_RPC_DOMAIN));
   }
 
@@ -403,12 +401,12 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
   } else if (result == NULL) {
     LOG_AND_TROW(CUCU_ERR, err, boost::str(boost::format("No instance found for control unit: %1%") % cu_uid));
   }
-  //we have the configured instance
+  // we have the configured instance
   ChaosUniquePtr<chaos::common::data::CDataWrapper> instance_description(result);
   result = NULL;
 
-  //update run id
-  //update the cotnrol unit id
+  // update run id
+  // update the cotnrol unit id
 
   // better to return the timestamp is always growing, has a more information and faster
   /*  if((err = cu_da->getNextRunID(cu_uid,
@@ -427,15 +425,15 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
     }
   }
   run_id = chaos::common::utility::TimingUtil::getTimeStamp();
-  //get the dataset of the control unit
+  // get the dataset of the control unit
   if ((err = cu_da->getDataset(cu_uid,
                                &result))) {
     LOG_AND_TROW(CUCU_ERR, err, boost::str(boost::format("Error fetching dataset for control unit %1%") % cu_uid));
   } else if (result != NULL) {
-    //we have the published dataset
+    // we have the published dataset
     dataset_description.reset(result);
 
-    //check for restore option
+    // check for restore option
     if ((err = n_da->getPropertyGroup(PropertyTypeDefaultValues,
                                       cu_uid,
                                       chaos::ControlUnitPropertyKey::P_GROUP_NAME,
@@ -448,11 +446,13 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
     for (int idx = 0; idx <
                       dataset_element_vec->size();
          idx++) {
-      //get the dataset element
+      // get the dataset element
       ChaosUniquePtr<chaos::common::data::CDataWrapper> element(dataset_element_vec->getCDataWrapperElementAtIndex(idx));
       const std::string                                 ds_attribute_name = element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME);
       int32_t                                           direction         = element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION);
-      //get the dataset element setup
+      // get the dataset element setup
+      if(element.get()==NULL) continue;
+      
       if (direction == chaos::DataType::Input ||
           direction == chaos::DataType::Bidirectional) {
         CDWShrdPtr element_configuration = getConfigurationToUse(cu_uid,
@@ -464,7 +464,9 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
           //we can retrive the configured attribute
           ChaosUniquePtr<chaos::common::data::CDataWrapper> init_ds_attribute = mergeDatasetAttributeWithSetup(element.get(),
                                                                                                                element_configuration.get());
-          init_dataset->appendCDataWrapperToArray(*init_ds_attribute.get());
+          if(init_ds_attribute.get()){
+            init_dataset->appendCDataWrapperToArray(*init_ds_attribute.get());
+          }
         } else {
           init_dataset->appendCDataWrapperToArray(*element.get());
         }
@@ -474,10 +476,10 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
     }
     init_dataset->finalizeArrayForKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
 
-    //add configurad dataset to the init datapack
+    // add configurad dataset to the init datapack
     init_datapack->addCSDataValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION, *init_dataset.get());
   } else {
-    //we have no dataset configure, in this case we send back only the configuration witho merge
+    // we have no dataset configure, in this case we send back only the configuration witho merge
     if ((err = cu_da->getInstanceDescription(cu_uid, &result))) {
       LOG_AND_TROW(CUCU_ERR, err, boost::str(boost::format("Error fetching the isntance for control unit %1%") % cu_uid));
     } else if (result != NULL) {
@@ -485,7 +487,7 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
       ChaosUniquePtr<chaos::common::data::CDataWrapper> init_dataset(new CDataWrapper());
       if (instance_description->hasKey("attribute_value_descriptions") &&
           instance_description->isVectorValue("attribute_value_descriptions")) {
-        //we have a configuration so we try to send it as dataset
+        // we have a configuration so we try to send it as dataset
         CMultiTypeDataArrayWrapperSPtr instance_description_array(result->getVectorValue("attribute_value_descriptions"));
         for (int aai = 0;
              aai < instance_description_array->size();
@@ -497,7 +499,7 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
       }
       init_dataset->finalizeArrayForKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
 
-      //add configurad dataset to the init datapack
+      // add configurad dataset to the init datapack
       init_datapack->addCSDataValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION, *init_dataset.get());
     }
   }
@@ -514,7 +516,7 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::initDataPack(
   pgu_default.serialize()->copyAllTo(*init_datapack);
 
   init_datapack->addInt64Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_RUN_ID, run_id);
-  //set the action type
+  // set the action type
   init_datapack->addInt32Value("action", (int32_t)0);
   return init_datapack;
 }
@@ -557,14 +559,14 @@ ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::deinitDataPac
 ChaosUniquePtr<chaos::common::data::CDataWrapper> CUCommonUtility::mergeDatasetAttributeWithSetup(CDataWrapper *element_in_dataset,
                                                                                                   CDataWrapper *element_in_setup) {
   ChaosUniquePtr<chaos::common::data::CDataWrapper> result(new CDataWrapper());
-  //move
+  // move
   MOVE_STRING_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME, element_in_dataset, result)
   MOVE_STRING_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION, element_in_dataset, result)
   MOVE_INT32_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE, element_in_dataset, result)
   MOVE_INT32_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION, element_in_dataset, result)
   MOVE_INT32_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE, element_in_dataset, result)
 
-  //update config value
+  // update config value
   MERGE_STRING_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE, element_in_dataset, element_in_setup, result)
   MERGE_STRING_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE, element_in_dataset, element_in_setup, result)
   MERGE_STRING_VALUE(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE, element_in_dataset, element_in_setup, result)
diff --git a/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp b/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp
index 012975d0bedd53a74904fbd3f2435a56f476a863..035c270b80224e1745d31ae0a1e77580e42fee69 100644
--- a/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp
+++ b/ChaosMetadataService/object_storage/influxDB/InfluxDB.cpp
@@ -27,7 +27,6 @@
 #define DBG DBG_LOG(InfluxDB)
 #define ERR ERR_LOG(InfluxDB)
 #include <chaos/common/utility/TimingUtil.h>
-#define MAX_ARRAY_POINTS 512
 using namespace chaos::metadata_service::object_storage;
 
 #if CHAOS_PROMETHEUS
@@ -185,104 +184,129 @@ static const unsigned int DPCK_DATASET_TYPE_LOG = 7;
         case DataType::TYPE_VECTOR_BOOL: {
           uint32_t    size = 0;
           const bool* ptr  = (const bool*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(bool)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          
+          if (ptr && ( size / sizeof(bool)< si.max_array_size)) {
+            for (int cnt = 0; (cnt <size/sizeof(bool)) ; cnt++) {
               measurements << c <<pref<< *i + "." << cnt << "=" << ((ptr[cnt]) ? 't' : 'f');
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (bool) measurement \"" << *i << "\", size " <<size / sizeof(bool) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_INT32: {
           uint32_t       size = 0;
           const int32_t* ptr  = (const int32_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(int32_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(int32_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(int32_t)); cnt++) {
               measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (int32_t) measurement \"" << *i << "\", size " <<size / sizeof(int32_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_UINT32: {
           uint32_t        size = 0;
           const uint32_t* ptr  = (const uint32_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(int32_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(int32_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(int32_t)) ; cnt++) {
               measurements << c <<pref<< *i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (uint32_t) measurement \"" << *i << "\", size " <<size / sizeof(uint32_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_UINT8: {
           uint32_t       size = 0;
           const uint8_t* ptr  = (const uint8_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(uint8_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(uint8_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(uint8_t)); cnt++) {
               measurements << c <<pref<< *i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (uint8_t) measurement \"" << *i << "\", size " <<size / sizeof(uint8_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_UINT16: {
           uint32_t        size = 0;
           const uint16_t* ptr  = (const uint16_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(uint16_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(uint16_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(uint16_t)) ; cnt++) {
               measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (uint16_t) measurement \"" << *i << "\", size " <<size / sizeof(uint16_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_INT16: {
           uint32_t       size = 0;
           const int16_t* ptr  = (const int16_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(int16_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(int16_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(int16_t)) ; cnt++) {
               measurements << c <<pref<< *i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (int16_t) measurement \"" << *i << "\", size " <<size / sizeof(int16_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_INT8: {
           uint32_t      size = 0;
           const int8_t* ptr  = (const int8_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(int8_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(int8_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(int8_t)); cnt++) {
               measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          } else {
+              ERR << "Skipped vector (int8_t) measurement \"" << *i << "\", size " <<size / sizeof(int8_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_INT64: {
           uint32_t       size = 0;
           const int64_t* ptr  = (const int64_t*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(int64_t)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(int64_t)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(int64_t)); cnt++) {
               measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt] << "i";
               first++;
               nmeas++;
             }
+          }else {
+              ERR << "Skipped vector (int64) measurement \"" << *i << "\", size " <<size / sizeof(int64_t) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_DOUBLE: {
           uint32_t      size = 0;
           const double* ptr  = (const double*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(double)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(double)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(double)); cnt++) {
               if (std::isfinite(ptr[cnt])) {
                 measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt];
                 first++;
@@ -290,14 +314,17 @@ static const unsigned int DPCK_DATASET_TYPE_LOG = 7;
               }
               //  DBG<< c << *i+"_" <<cnt<< "=" << ptr[cnt];
             }
+          } else {
+              ERR << "Skipped vector (double) measurement \"" << *i << "\", size " <<size / sizeof(double) << " max " << si.max_array_size;
+
           }
           break;
         }
         case DataType::TYPE_VECTOR_FLOAT: {
           uint32_t     size = 0;
           const float* ptr  = (const float*)stored_object.getBinaryValue(*i, size);
-          if (ptr) {
-            for (int cnt = 0; (cnt < size / sizeof(float)) && (cnt < MAX_ARRAY_POINTS); cnt++) {
+          if (ptr&& ( size / sizeof(float)< si.max_array_size)) {
+            for (int cnt = 0; (cnt < size / sizeof(float)) ; cnt++) {
               if (std::isfinite(ptr[cnt])) {
                 measurements << c << pref<<*i + "." << cnt << "=" << ptr[cnt];
                 first++;
@@ -305,6 +332,9 @@ static const unsigned int DPCK_DATASET_TYPE_LOG = 7;
               }
               //  DBG<< c << *i+"_" <<cnt<< "=" << ptr[cnt];
             }
+          } else {
+              ERR << "Skipped vector (float) measurement \"" << *i << "\", size " <<size / sizeof(float) << " max " << si.max_array_size;
+
           }
           break;
         }
@@ -432,7 +462,7 @@ void InfluxDB::push_process() {
       measurements.str("");
     }
 
-    sleep(1);
+    usleep(1000*si.max_time_ms);
   }
 
 }
diff --git a/ChaosMetadataService/object_storage/influxDB/InfluxDB.h b/ChaosMetadataService/object_storage/influxDB/InfluxDB.h
index ab65622ca9aaa296882ca9157683053f4a786609..1b1ff67ba595d67b38f98b684e404359cac0340e 100644
--- a/ChaosMetadataService/object_storage/influxDB/InfluxDB.h
+++ b/ChaosMetadataService/object_storage/influxDB/InfluxDB.h
@@ -39,7 +39,6 @@
 //#include "influxdb-cpp-rest/influxdb_raw_db_utf8.h"
 //#include "influxdb-cpp-rest/influxdb_simple_async_api.h"
 #include "influxdb.hpp"
-#define MAX_MEASURES 5000
 
 namespace chaos {
     namespace metadata_service {
diff --git a/ChaosMetadataService/object_storage/influxDB/InfluxDBLogStorageDriver.cpp b/ChaosMetadataService/object_storage/influxDB/InfluxDBLogStorageDriver.cpp
index 60f73ed3e2fe144abd330e981dbbdc5fc14f0d84..ae2748fc74fcc6fe40c53e35671ce261fa83d79e 100644
--- a/ChaosMetadataService/object_storage/influxDB/InfluxDBLogStorageDriver.cpp
+++ b/ChaosMetadataService/object_storage/influxDB/InfluxDBLogStorageDriver.cpp
@@ -59,13 +59,12 @@ void InfluxDBLogStorageDriver::init(void *init_data)  {
     const std::string retention = DriverPoolManager::logSetting.persistence_kv_param_map["retention"];
     const std::string max_measure_opt = DriverPoolManager::logSetting.persistence_kv_param_map["max_mesure"];
     const std::string max_measure_ms_opt = DriverPoolManager::logSetting.persistence_kv_param_map["max_time_ms"];
+    const std::string max_array_size_opt = DriverPoolManager::logSetting.persistence_kv_param_map["max_array_size"];
 
-    int max_measure=1000;
-    int max_time_ms=10000;
 
     std::string servername="localhost";
     std::string funcpath="";
-    std::string exptime="365d";
+    std::string exptime="1095d";
     int port=8086;
     if(url_list.size()>0){
         std::vector<std::string> ele;
@@ -87,25 +86,29 @@ void InfluxDBLogStorageDriver::init(void *init_data)  {
             port=atoi(ele[1].c_str());
         }*/
     }
-    if(max_measure_ms_opt.size()){
-        max_time_ms=atoi(max_measure_ms_opt.c_str());
-    }
-    if(max_measure_opt.size()){
-        max_measure=atoi(max_measure_opt.c_str());
-    }
     if(database.size()==0){
         ERR<<"You must specify a valid database name";
         throw chaos::CException(-1,"You must specify a valid database name",__FUNCTION__);
     }
-    if(retention.size()){
+     if(retention.size()){
         exptime=retention;
     }
+    influxdb_cpp::server_info si(servername,port,database,user,password,"ms",exptime,funcpath);
+
+    if(max_measure_ms_opt.size()){
+        si.max_time_ms=atoi(max_measure_ms_opt.c_str());
+    }
+    if(max_measure_opt.size()){
+        si.max_mesurements=atoi(max_measure_opt.c_str());
+    }
+    if(max_array_size_opt.size()){
+        si.max_array_size=atoi(max_array_size_opt.c_str());
+    }
+    
+   
     //influxdb_t  asyncdb = influxdb_t( new influxdb::async_api::simple_db(url_list[0], database));
    // asyncdb->with_authentication(user,password);
-    DBG<<"server:"<<servername<<"\nport:"<<port<<"\ndatabase:"<<database<<"\nuser:"<<user<<"\npassw:"<<password<<" retention:"<<exptime<<" path:"<<funcpath<<" max_measures:"<<max_measure;
-    influxdb_cpp::server_info si(servername,port,database,user,password,"ms",exptime,funcpath);
-    si.max_mesurements=max_measure;
-    si.max_time_ms=max_time_ms;
+    DBG<<"server:"<<servername<<"\nport:"<<port<<"\ndatabase:"<<database<<"\nuser:"<<user<<"\npassw:"<<password<<" retention:"<<exptime<<" path:"<<funcpath<<" max_measures:"<<si.max_mesurements<<" poll time(ms):"<<si.max_time_ms<<" max array size:"<<si.max_array_size;
     //register the data access implementations
     std::string resp;
     int ret;
diff --git a/ChaosMetadataService/object_storage/influxDB/influxdb.hpp b/ChaosMetadataService/object_storage/influxDB/influxdb.hpp
index fdd9ed252b7faf5777aaf00a540015a42ddf8429..923107d5f9319b2726ad2c90cc254ae9dc4a7284 100644
--- a/ChaosMetadataService/object_storage/influxDB/influxdb.hpp
+++ b/ChaosMetadataService/object_storage/influxDB/influxdb.hpp
@@ -30,6 +30,9 @@
     #include <arpa/inet.h>
     #define closesocket close
 #endif
+#define MAX_MEASURES 2000 
+#define MAX_POLL_TIME 300 // default poll 300 ms
+#define MAX_ARRAY_SIZE 512 // default max array size
 
 namespace influxdb_cpp {
     struct server_info {
@@ -43,8 +46,9 @@ namespace influxdb_cpp {
         std::string funcprefix;
         int max_mesurements; //commit when n mesures reach max_measurement
         int max_time_ms; // commit when expired max_time_ms
-        server_info(const std::string& host, int port, const std::string& db = "", const std::string& usr = "", const std::string& pwd = "", const std::string& precision="ms", const std::string& retention="365d", const std::string& prefix="")
-            : host_(host), port_(port), db_(db), usr_(usr), pwd_(pwd), precision_(precision), retention_(retention),funcprefix(prefix),max_mesurements(0),max_time_ms(1000) {}
+        int max_array_size; // push maximum array of this size
+        server_info(const std::string& host, int port, const std::string& db = "", const std::string& usr = "", const std::string& pwd = "", const std::string& precision="ms", const std::string& retention="1095d", const std::string& prefix="")
+            : host_(host), port_(port), db_(db), usr_(usr), pwd_(pwd), precision_(precision), max_array_size(MAX_ARRAY_SIZE),retention_(retention),funcprefix(prefix),max_mesurements(MAX_MEASURES),max_time_ms(MAX_POLL_TIME) {}
     };
     namespace detail {
         struct meas_caller;
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
index 57afbf9fe48de444ea43242153f995238e01278e..32f648e683b0abc5c6390b1872c840f3db8ee507 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBControlUnitDataAccess.cpp
@@ -18,20 +18,20 @@
  * See the Licence for the specific language governing
  * permissions and limitations under the Licence.
  */
-#include "mongo_db_constants.h"
 #include "MongoDBControlUnitDataAccess.h"
+#include "mongo_db_constants.h"
 
-#include <chaos/common/utility/TimingUtil.h>
-#include <chaos/common/property/property.h>
 #include <chaos/common/batch_command/BatchCommandConstants.h>
+#include <chaos/common/property/property.h>
+#include <chaos/common/utility/TimingUtil.h>
 
 #include <boost/foreach.hpp>
 
 #include <mongo/client/dbclient.h>
 
 #define MDBCUDA_INFO INFO_LOG(MongoDBControlUnitDataAccess)
-#define MDBCUDA_DBG  DBG_LOG(MongoDBControlUnitDataAccess)
-#define MDBCUDA_ERR  ERR_LOG(MongoDBControlUnitDataAccess)
+#define MDBCUDA_DBG DBG_LOG(MongoDBControlUnitDataAccess)
+#define MDBCUDA_ERR ERR_LOG(MongoDBControlUnitDataAccess)
 
 using namespace chaos;
 using namespace chaos::common::data;
@@ -42,640 +42,602 @@ using namespace chaos::service_common::persistence::mongodb;
 using namespace chaos::metadata_service::persistence::mongodb;
 
 MongoDBControlUnitDataAccess::MongoDBControlUnitDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection,
-                                                           data_access::DataServiceDataAccess *_data_service_da):
-MongoDBAccessor(_connection),
-ControlUnitDataAccess(_data_service_da),
-node_data_access(NULL){}
+                                                           data_access::DataServiceDataAccess*                                                     _data_service_da)
+    : MongoDBAccessor(_connection), ControlUnitDataAccess(_data_service_da), node_data_access(NULL) {}
 
 MongoDBControlUnitDataAccess::~MongoDBControlUnitDataAccess() {}
 
-
-//int MongoDBControlUnitDataAccess::compeleteControlUnitForAgeingManagement(const std::string& control_unit_id) {
-//    int err = 0;
-//    try {
-//        uint64_t current_ts = TimingUtil::getTimeStamp();
-//        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-//        const std::string key_last_checing_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-//        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+// int MongoDBControlUnitDataAccess::compeleteControlUnitForAgeingManagement(const std::string& control_unit_id) {
+//     int err = 0;
+//     try {
+//         uint64_t current_ts = TimingUtil::getTimeStamp();
+//         const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+//         const std::string key_last_checing_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+//         const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
 //
-//        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id
-//                                    << MONGODB_COLLECTION_NODES_AGEING_INFO << BSON("$exists" << false ));
+//         mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id
+//                                     << MONGODB_COLLECTION_NODES_AGEING_INFO << BSON("$exists" << false ));
 //
-//        mongo::BSONObj update = BSON("$set" << BSON(key_last_checing_time << mongo::Date_t(current_ts) <<
-//                                                    key_last_performed_time << mongo::Date_t(current_ts) <<
-//                                                    key_processing_ageing << false));
+//         mongo::BSONObj update = BSON("$set" << BSON(key_last_checing_time << mongo::Date_t(current_ts) <<
+//                                                     key_last_performed_time << mongo::Date_t(current_ts) <<
+//                                                     key_processing_ageing << false));
 //
-//        /*BSON(key_last_checing_time << mongo::Date_t(current_ts) <<
-//         key_last_performed_time << mongo::Date_t(current_ts) <<
-//         key_processing_ageing << false);*/
-//        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-//                                            "update",
-//                                            DATA_ACCESS_LOG_2_ENTRY("query",
-//                                                                    "update",
-//                                                                    query.jsonString(),
-//                                                                    update.jsonString()));)
-//        //remove the field of the document
-//        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-//                                     query,
-//                                     update))) {
-//            MDBCUDA_ERR << CHAOS_FORMAT("Error %1% completing control unit %2% with ageing management information", %err%control_unit_id);
-//        }
-//    } catch (const mongo::DBException &e) {
-//        MDBCUDA_ERR << e.what();
-//        err = -1;
-//    } catch (const CException &e) {
-//        MDBCUDA_ERR << e.what();
-//        err = e.errorCode;
-//    }
-//    return err;
-//}
+//         /*BSON(key_last_checing_time << mongo::Date_t(current_ts) <<
+//          key_last_performed_time << mongo::Date_t(current_ts) <<
+//          key_processing_ageing << false);*/
+//         DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
+//                                             "update",
+//                                             DATA_ACCESS_LOG_2_ENTRY("query",
+//                                                                     "update",
+//                                                                     query.jsonString(),
+//                                                                     update.jsonString()));)
+//         //remove the field of the document
+//         if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+//                                      query,
+//                                      update))) {
+//             MDBCUDA_ERR << CHAOS_FORMAT("Error %1% completing control unit %2% with ageing management information", %err%control_unit_id);
+//         }
+//     } catch (const mongo::DBException &e) {
+//         MDBCUDA_ERR << e.what();
+//         err = -1;
+//     } catch (const CException &e) {
+//         MDBCUDA_ERR << e.what();
+//         err = e.errorCode;
+//     }
+//     return err;
+// }
 
 int MongoDBControlUnitDataAccess::checkPresence(const std::string& unit_server_unique_id,
-                                                bool& presence) {
-    CHAOS_ASSERT(node_data_access)
-    return node_data_access->checkNodePresence(presence,
-                                               unit_server_unique_id);
+                                                bool&              presence) {
+  CHAOS_ASSERT(node_data_access)
+  return node_data_access->checkNodePresence(presence,
+                                             unit_server_unique_id);
 }
 
-int MongoDBControlUnitDataAccess::getControlUnitWithAutoFlag(const std::string& unit_server_host,
+int MongoDBControlUnitDataAccess::getControlUnitWithAutoFlag(const std::string&                             unit_server_host,
                                                              chaos::metadata_service::persistence::AutoFlag auto_flag,
-                                                             uint64_t last_sequence_id,
-                                                             std::vector<NodeSearchIndex>& control_unit_found) {
-    int err = 0;
-    SearchResult paged_result;
-    try {
-        mongo::BSONObjBuilder query_builder;
-        
-        //filter on unit server
-        query_builder << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_host;
-        query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
-        switch(auto_flag) {
-            case AUTO_LOAD:
-                query_builder << "instance_description.auto_load" << true;
-                break;
-            case AUTO_INIT:
-                query_builder << "instance_description.auto_init" << true;
-                break;
-            case AUTO_START:
-                query_builder << "instance_description.auto_start" << true;
-                break;
-        }
-        
-        query_builder << "seq" << BSON("$gt"<<(long long)last_sequence_id);
-        query_builder << "$or" << BSON_ARRAY(BSON(NodeDefinitionKey::NODE_SUB_TYPE << BSON("$ne" << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT)) <<
-                                             BSON("$and" << BSON_ARRAY(BSON(NodeDefinitionKey::NODE_SUB_TYPE <<  NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT) <<
-                                                                       BSON("script_bind_type" << service_common::data::script::ScriptBindTypeUnitServer))));
-        //query_builder << NodeDefinitionKey::NODE_SUB_TYPE << BSON("$ne" << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
-        
-        mongo::Query query = query_builder.obj();
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "performPagedQuery",
-                                            DATA_ACCESS_LOG_1_ENTRY("query",
-                                                                    query.toString()));)
-        //remove the field of the document
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                    query.sort("seq"),
-                                    NULL,
-                                    NULL,
-                                    MAX_PAGE_FOR_LOAD_CU))) {
-            MDBCUDA_ERR << "Error performing auto flag search";
-        } else {
-            for(SearchResultIterator it = paged_result.begin();
-                it != paged_result.end();
-                it++) {
-                control_unit_found.push_back(NodeSearchIndex(it->getField("seq").numberLong(),
-                                                             it->getField(NodeDefinitionKey::NODE_UNIQUE_ID).String()));
-            }
-           MDBCUDA_DBG<<unit_server_host<<" must AUTOLOAD "<<control_unit_found.size()<<" CUs";
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
-    }
-    return err;
-    
-}
+                                                             uint64_t                                       last_sequence_id,
+                                                             std::vector<NodeSearchIndex>&                  control_unit_found) {
+  int          err = 0;
+  SearchResult paged_result;
+  try {
+    mongo::BSONObjBuilder query_builder;
 
-int MongoDBControlUnitDataAccess::insertNewControlUnit(CDataWrapper& control_unit_description) {
-    int err = 0;
-    if(!control_unit_description.hasKey(NodeDefinitionKey::NODE_TYPE)) {
-        //set the type of control unit
-        control_unit_description.addStringValue(NodeDefinitionKey::NODE_TYPE, NodeType::NODE_TYPE_CONTROL_UNIT);
+    // filter on unit server
+    query_builder << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_host;
+    query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
+    switch (auto_flag) {
+      case AUTO_LOAD:
+        query_builder << "instance_description.auto_load" << true;
+        break;
+      case AUTO_INIT:
+        query_builder << "instance_description.auto_init" << true;
+        break;
+      case AUTO_START:
+        query_builder << "instance_description.auto_start" << true;
+        break;
     }
-    if((err = node_data_access->insertNewNode(control_unit_description))) {
-        MDBCUDA_ERR << "Error:" << err << " adding new node for control unit";
+
+    query_builder << "seq" << BSON("$gt" << (long long)last_sequence_id);
+    query_builder << "$or" << BSON_ARRAY(BSON(NodeDefinitionKey::NODE_SUB_TYPE << BSON("$ne" << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT)) << BSON("$and" << BSON_ARRAY(BSON(NodeDefinitionKey::NODE_SUB_TYPE << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT) << BSON("script_bind_type" << service_common::data::script::ScriptBindTypeUnitServer))));
+    // query_builder << NodeDefinitionKey::NODE_SUB_TYPE << BSON("$ne" << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
+
+    mongo::Query query = query_builder.obj();
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "performPagedQuery",
+                                          DATA_ACCESS_LOG_1_ENTRY("query",
+                                                                  query.toString()));)
+    // remove the field of the document
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                 query.sort("seq"),
+                                 NULL,
+                                 NULL,
+                                 MAX_PAGE_FOR_LOAD_CU))) {
+      MDBCUDA_ERR << "Error performing auto flag search";
     } else {
-        //compelte control unit with ageing managment information
-        err = node_data_access->addAgeingManagementDataToNode(control_unit_description.getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID));
+      for (SearchResultIterator it = paged_result.begin();
+           it != paged_result.end();
+           it++) {
+        control_unit_found.push_back(NodeSearchIndex(it->getField("seq").numberLong(),
+                                                     it->getField(NodeDefinitionKey::NODE_UNIQUE_ID).String()));
+      }
+      MDBCUDA_DBG << unit_server_host << " must AUTOLOAD " << control_unit_found.size() << " CUs";
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
+}
+
+int MongoDBControlUnitDataAccess::insertNewControlUnit(CDataWrapper& control_unit_description) {
+  int err = 0;
+  if (!control_unit_description.hasKey(NodeDefinitionKey::NODE_TYPE)) {
+    // set the type of control unit
+    control_unit_description.addStringValue(NodeDefinitionKey::NODE_TYPE, NodeType::NODE_TYPE_CONTROL_UNIT);
+  }
+  if ((err = node_data_access->insertNewNode(control_unit_description))) {
+    MDBCUDA_ERR << "Error:" << err << " adding new node for control unit";
+  } else {
+    // compelte control unit with ageing managment information
+    err = node_data_access->addAgeingManagementDataToNode(control_unit_description.getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID));
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::updateControlUnit(CDataWrapper& control_unit_description) {
-    int err = 0;
-     if(!control_unit_description.hasKey(NodeDefinitionKey::NODE_TYPE)) {
-        //set the type of control unit
-        control_unit_description.addStringValue(NodeDefinitionKey::NODE_TYPE, NodeType::NODE_TYPE_CONTROL_UNIT);
-    }
-    chaos::common::data::CDWUniquePtr ptr=control_unit_description.clone();
-    MDBCUDA_DBG<<" update:"<<control_unit_description.getJSONString();
-    if((err = node_data_access->setNodeDescription(control_unit_description.getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID),ptr))) {
-        MDBCUDA_ERR << "Error:" << err << " updating new node for control unit:"<<control_unit_description.getJSONString();
-    } 
-    return err;
+  int err = 0;
+  if (!control_unit_description.hasKey(NodeDefinitionKey::NODE_TYPE)) {
+    // set the type of control unit
+    control_unit_description.addStringValue(NodeDefinitionKey::NODE_TYPE, NodeType::NODE_TYPE_CONTROL_UNIT);
+  }
+  chaos::common::data::CDWUniquePtr ptr = control_unit_description.clone();
+  MDBCUDA_DBG << " update:" << control_unit_description.getJSONString();
+  if ((err = node_data_access->setNodeDescription(control_unit_description.getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID), ptr))) {
+    MDBCUDA_ERR << "Error:" << err << " updating new node for control unit:" << control_unit_description.getJSONString();
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::setDataset(const std::string& cu_unique_id,
-                                             CDataWrapper& dataset_description) {
-    int err = 0;
-    //allocate data block on vfat
-    mongo::BSONObjBuilder bson_find;
-    mongo::BSONObjBuilder updated_field;
-    mongo::BSONObjBuilder bson_update;
-    try {
-        //check for principal mandatory keys
-        if(cu_unique_id.size() == 0) return -1;
-        if(!dataset_description.hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)){
-	  MDBCUDA_DBG<<cu_unique_id<<" Missing key:"<<ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION<<" skipping dataset initialization";;
-            return 0;
-        }
-        if(!dataset_description.isCDataWrapperValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)){
-            MDBCUDA_ERR<<cu_unique_id<<" Not a dataset :"<<ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
+                                             CDataWrapper&      dataset_description) {
+  int err = 0;
+  // allocate data block on vfat
+  mongo::BSONObjBuilder bson_find;
+  mongo::BSONObjBuilder updated_field;
+  mongo::BSONObjBuilder bson_update;
+  try {
+    // check for principal mandatory keys
+    if (cu_unique_id.size() == 0) return -1;
+    if (!dataset_description.hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)) {
+      MDBCUDA_DBG << cu_unique_id << " Missing key:" << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << " skipping dataset initialization";
+      ;
+      return 0;
+    }
+    if (!dataset_description.isCDataWrapperValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)) {
+      MDBCUDA_ERR << cu_unique_id << " Not a dataset :" << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
+
+      return -3;
+    }
+    // checkout the dataset
+    ChaosUniquePtr<chaos::common::data::CDataWrapper> dataset(dataset_description.getCSDataValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
+    if (!dataset->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)) {
+      MDBCUDA_ERR << cu_unique_id << " Missing nested key :" << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
+
+      return -5;
+    }
+    if (!dataset->isVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)) {
+      MDBCUDA_ERR << cu_unique_id << " Expected to be a vectorkey :" << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
+
+      return -6;
+    }
+    if (!dataset->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP)) {
+      MDBCUDA_ERR << cu_unique_id << " doesnt have  a timestamp :" << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP;
+
+      return -4;
+    }
+
+    // serach criteria
+    bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id;
+    //<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
+
+    // add dataset timestamp
+    updated_field << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP << (long long)dataset->getInt64Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP);
+
+    CMultiTypeDataArrayWrapperSPtr ds_vec(dataset->getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
+    if (!ds_vec.get()) return -7;
+    // cicle all dataset attribute
+    mongo::BSONArrayBuilder dataset_bson_array;
+    int32_t                 type = 0;
+    for (int idx = 0;
+         idx < ds_vec->size();
+         idx++) {
+      mongo::BSONObjBuilder dataset_element_builder;
+
+      ChaosUniquePtr<chaos::common::data::CDataWrapper> dataset_element(ds_vec->getCDataWrapperElementAtIndex(idx));
+      //  MDBCUDA_DBG<<cu_unique_id<<" DS ELEM:"<<dataset_element->getJSONString();
+      if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME) &&
+          /*dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION)&&*/
+          dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE) &&
+          dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION)) {
+        // mandatory field
+        dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME);
+
+        dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION << ((dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION)) ? dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION) : dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME));
+
+        dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION);
+
+        dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE << (type = dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE));
+
+        if (type == DataType::TYPE_BYTEARRAY) {
+          // we need to have addtional information for binary data
+          if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE)) {
+            if (dataset_element->isVector(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE)) {
+              // we have multipler value for subtype
+              mongo::BSONArrayBuilder        subtype_array_builder;
+              CMultiTypeDataArrayWrapperSPtr sub_t_vec(dataset_element->getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE));
+              for (int idx = 0;
+                   idx < sub_t_vec->size();
+                   idx++) {
+                subtype_array_builder << sub_t_vec->getInt32ElementAtIndex(idx);
+              }
+              // add array to dataset element
+              dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE
+                                      << subtype_array_builder.arr();
+            } else {
+              // we have only one value
+              dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE
+                                      << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE);
+            }
+          }
 
-            return -3;
+          if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION)) {
+            dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION
+                                    << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION);
+          }
         }
-        //checkout the dataset
-        ChaosUniquePtr<chaos::common::data::CDataWrapper> dataset(dataset_description.getCSDataValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
-        if(!dataset->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)){
-            MDBCUDA_ERR<<cu_unique_id<<" Missing nested key :"<<ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
 
-            return -5;
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY);
         }
-        if(!dataset->isVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION)){
-            MDBCUDA_ERR<<cu_unique_id<<" Expected to be a vectorkey :"<<ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION;
 
-            return -6;
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE
+                                  << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE);
         }
-        if(!dataset->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP)){
-            MDBCUDA_ERR<<cu_unique_id<<" doesnt have  a timestamp :"<<ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP;
 
-            return -4;
+        // optional field
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE);
+        }
 
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE);
         }
-        
-        //serach criteria
-        bson_find   << NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id;
-        //<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
-        
-        //add dataset timestamp
-        updated_field << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP << (long long)dataset->getInt64Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP);
-        
-        
-        
-        CMultiTypeDataArrayWrapperSPtr ds_vec(dataset->getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
-        if(!ds_vec.get()) return -7;
-        //cicle all dataset attribute
-        mongo::BSONArrayBuilder dataset_bson_array;
-        int32_t type = 0;
-        for(int idx = 0;
-            idx < ds_vec->size();
-            idx++) {
-            mongo::BSONObjBuilder dataset_element_builder;
-            
-            ChaosUniquePtr<chaos::common::data::CDataWrapper> dataset_element(ds_vec->getCDataWrapperElementAtIndex(idx));
-          //  MDBCUDA_DBG<<cu_unique_id<<" DS ELEM:"<<dataset_element->getJSONString();
-            if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME) &&
-               /*dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION)&&*/
-               dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE)&&
-               dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION)) {
-                
-                //mandatory field
-                dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME <<
-                dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME);
-                
-                dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION <<
-                ((dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION))?dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DESCRIPTION):dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME));
 
-            
-                
-                dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION <<
-                dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_DIRECTION);
-                
-                dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE <<
-                (type = dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_TYPE));
-                
-                if(type == DataType::TYPE_BYTEARRAY) {
-                    //we need to have addtional information for binary data
-                    if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE)) {
-                        if(dataset_element->isVector(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE)) {
-                            //we have multipler value for subtype
-                            mongo::BSONArrayBuilder subtype_array_builder;
-                            CMultiTypeDataArrayWrapperSPtr sub_t_vec(dataset_element->getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE));
-                            for(int idx = 0;
-                                idx < sub_t_vec->size();
-                                idx++) {
-                                subtype_array_builder << sub_t_vec->getInt32ElementAtIndex(idx);
-                            }
-                            //add array to dataset element
-                            dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE
-                            << subtype_array_builder.arr();
-                        } else {
-                            //we have only one value
-                            dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE
-                            << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_SUBTYPE);
-                        }
-                    }
-                    
-                    if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION)) {
-                        dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION
-                        << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_MIME_DESCRIPTION);
-                    }
-                }
-                
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY <<
-                    dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_BINARY_CARDINALITY);
-                }
-                
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE
-                    << dataset_element->getInt32Value(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_VALUE_MAX_SIZE);
-                }
-                
-                //optional field
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE);
-                }
-                
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE);
-                }
-                
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE);
-                }
-                 if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT);
-                }
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT);
-                }
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT);
-                }
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET);
-                }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE);
+        }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT);
+        }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT);
+        }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT);
+        }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET);
+        }
 
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR);
-                }
-                if(dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR)) {
-                    dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR <<
-                    dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR);
-                }
-                dataset_bson_array << dataset_element_builder.obj();
-            }
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR);
         }
-        //add dataset array to update bson
-        updated_field.appendArray(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION,
-                                  dataset_bson_array.arr());
-        
-        //check if we have bactch command in the dataset
-        if(dataset_description.hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION)) {
-            CMultiTypeDataArrayWrapperSPtr bc_vec(dataset_description.getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION));
-            mongo::BSONArrayBuilder batch_command_bson_array;
-            for(int idx = 0;
-                idx < bc_vec->size();
-                idx++) {
-                mongo::BSONObjBuilder batch_command_builder;
-                
-                ChaosUniquePtr<chaos::common::data::CDataWrapper> bc_element(bc_vec->getCDataWrapperElementAtIndex(idx));
-                MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)
-                MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_ALIAS)
-                MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION)
-                
-                //check for parameter
-                if(bc_element->hasKey(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS)){
-                    mongo::BSONArrayBuilder batch_command_parameter_bson_array;
-                    CMultiTypeDataArrayWrapperSPtr bc_param_vec(bc_element->getVectorValue(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS));
-                    for(int idx_param = 0;
-                        idx_param < bc_param_vec->size();
-                        idx_param++) {
-                        mongo::BSONObjBuilder batch_command_parameter_builder;
-                        ChaosUniquePtr<chaos::common::data::CDataWrapper> bc_param_element(bc_param_vec->getCDataWrapperElementAtIndex(idx_param));
-                        MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_NAME)
-                        MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_DESCRIPTION)
-                        MDB_COPY_I32_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_TYPE)
-                        MDB_COPY_I32_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_FLAG)
-                        
-                        batch_command_parameter_bson_array << batch_command_parameter_builder.obj();
-                    }
-                    //add dataset array to update bson
-                    batch_command_builder.appendArray(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS,
-                                                      batch_command_parameter_bson_array.arr());
-                }
-                //add the batch command description to the command array
-                batch_command_bson_array << batch_command_builder.obj();
-                
-                //insert commandi onto node comamnd collection
-                node_data_access->setCommand(*bc_element);
-            }
-            
-            //add batch command to the dataset
-            updated_field.appendArray(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION,
-                                      batch_command_bson_array.arr());
+        if (dataset_element->hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR)) {
+          dataset_element_builder << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR << dataset_element->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR);
         }
-        
-        mongo::BSONObj query = bson_find.obj();
-        mongo::BSONObj update = BSON("$set" << BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << updated_field.obj()));
-        
-        //update dateset
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "update - dataset",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Update",
-                                                                    query.toString(),
-                                                                    update.jsonString()));)
-        //set the instance parameter within the node representing the control unit
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     query,
-                                     update))) {
-            MDBCUDA_ERR << "Error updating unit server";
+        dataset_bson_array << dataset_element_builder.obj();
+      }
+    }
+    // add dataset array to update bson
+    updated_field.appendArray(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION,
+                              dataset_bson_array.arr());
+
+    // check if we have bactch command in the dataset
+    if (dataset_description.hasKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION)) {
+      CMultiTypeDataArrayWrapperSPtr bc_vec(dataset_description.getVectorValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION));
+      mongo::BSONArrayBuilder        batch_command_bson_array;
+      for (int idx = 0;
+           idx < bc_vec->size();
+           idx++) {
+        mongo::BSONObjBuilder batch_command_builder;
+
+        ChaosUniquePtr<chaos::common::data::CDataWrapper> bc_element(bc_vec->getCDataWrapperElementAtIndex(idx));
+        MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)
+        MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_ALIAS)
+        MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_builder, bc_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION)
+
+        // check for parameter
+        if (bc_element->hasKey(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS)) {
+          mongo::BSONArrayBuilder        batch_command_parameter_bson_array;
+          CMultiTypeDataArrayWrapperSPtr bc_param_vec(bc_element->getVectorValue(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS));
+          for (int idx_param = 0;
+               idx_param < bc_param_vec->size();
+               idx_param++) {
+            mongo::BSONObjBuilder                             batch_command_parameter_builder;
+            ChaosUniquePtr<chaos::common::data::CDataWrapper> bc_param_element(bc_param_vec->getCDataWrapperElementAtIndex(idx_param));
+            MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_NAME)
+            MDB_COPY_STRING_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_DESCRIPTION)
+            MDB_COPY_I32_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_TYPE)
+            MDB_COPY_I32_CDWKEY_TO_BUILDER(batch_command_parameter_builder, bc_param_element, common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETER_FLAG)
+
+            batch_command_parameter_bson_array << batch_command_parameter_builder.obj();
+          }
+          // add dataset array to update bson
+          batch_command_builder.appendArray(common::batch_command::BatchCommandAndParameterDescriptionkey::BC_PARAMETERS,
+                                            batch_command_parameter_bson_array.arr());
         }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+        // add the batch command description to the command array
+        batch_command_bson_array << batch_command_builder.obj();
+
+        // insert commandi onto node comamnd collection
+        node_data_access->setCommand(*bc_element);
+      }
+
+      // add batch command to the dataset
+      updated_field.appendArray(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION,
+                                batch_command_bson_array.arr());
     }
-    return err;
-}
 
+    mongo::BSONObj query  = bson_find.obj();
+    mongo::BSONObj update = BSON("$set" << BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << updated_field.obj()));
+
+    // update dateset
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "update - dataset",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Update",
+                                                                  query.toString(),
+                                                                  update.jsonString()));)
+    // set the instance parameter within the node representing the control unit
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  query,
+                                  update))) {
+      MDBCUDA_ERR << "Error updating unit server";
+    }
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
+}
 
 int MongoDBControlUnitDataAccess::checkDatasetPresence(const std::string& cu_unique_id,
-                                                       bool& presence) {
-    int err = 0;
-    unsigned long long counter;
-    try {
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
-                                    //<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
-                                    << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION  << BSON("$exists" << true ));
-        
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "find",
-                                            DATA_ACCESS_LOG_1_ENTRY("query",
-                                                                    query.toString()));)
-        //remove the field of the document
-        if((err = connection->count(counter,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                    query))) {
-            MDBCUDA_ERR << "Error counting the element";
-        } else {
-            presence = (counter == 1);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+                                                       bool&              presence) {
+  int                err = 0;
+  unsigned long long counter;
+  try {
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
+                                                                  //<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
+                                                                  << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << BSON("$exists" << true));
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "find",
+                                          DATA_ACCESS_LOG_1_ENTRY("query",
+                                                                  query.toString()));)
+    // remove the field of the document
+    if ((err = connection->count(counter,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                 query))) {
+      MDBCUDA_ERR << "Error counting the element";
+    } else {
+      presence = (counter == 1);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::getFullDescription(const std::string& cu_unique_id,
-                                                     chaos::common::data::CDataWrapper **dataset_description){
-    int err = 0;
-    mongo::BSONObj result;
-    mongo::BSONObjBuilder   bson_find;
+int MongoDBControlUnitDataAccess::getFullDescription(const std::string&                  cu_unique_id,
+                                                     chaos::common::data::CDataWrapper** dataset_description) {
+  int                   err = 0;
+  mongo::BSONObj        result;
+  mongo::BSONObjBuilder bson_find;
 
-    mongo::BSONArrayBuilder bson_find_or,bson_find_and;
+  mongo::BSONArrayBuilder bson_find_or, bson_find_and;
 
-    try {
-         bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-          bson_find_and<<BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id);
-          bson_find_and<<BSON("$or"<<bson_find_or.arr());
-        bson_find.appendArray("$and", bson_find_and.obj());
-      
-        mongo::BSONObj query = bson_find.obj();/*BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
-                                    << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT);*/
-        
-         DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_1_ENTRY("query",
-                                                                    query.toString()));)
-        //remove the field of the document
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      query))) {
-            MDBCUDA_ERR << "Error fetching dataset";
-        } else if(result.isEmpty()) {
-            MDBCUDA_ERR << "No element found:"<<cu_unique_id;
-        } else {
-            //we have dataset so set it directly within the cdsta wrapper
-            *dataset_description = new CDataWrapper(result.objdata());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+  try {
+    bson_find_or << BSON(chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT) << BSON(chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    bson_find_and << BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id);
+    bson_find_and << BSON("$or" << bson_find_or.arr());
+    bson_find.appendArray("$and", bson_find_and.obj());
+
+    mongo::BSONObj query = bson_find.obj(); /*BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
+                                 << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT);*/
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_1_ENTRY("query",
+                                                                  query.toString()));)
+    // remove the field of the document
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query))) {
+      MDBCUDA_ERR << "Error fetching dataset";
+    } else if (result.isEmpty()) {
+      MDBCUDA_ERR << "No element found:" << cu_unique_id;
+    } else {
+      // we have dataset so set it directly within the cdsta wrapper
+      *dataset_description = new CDataWrapper(result.objdata());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
-int MongoDBControlUnitDataAccess::getDataset(const std::string& cu_unique_id,
-                                             chaos::common::data::CDataWrapper **dataset_description) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
-                                //    << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
-                                    << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION  << BSON("$exists" << true ));
-        mongo::BSONObj prj = BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION  << 1 <<
-                                  ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION << 1);
-        
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_2_ENTRY("query",
-                                                                    "prj",
-                                                                    query.toString(),
-                                                                    prj.toString()));)
-        //remove the field of the document
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      query,
-                                      &prj))) {
-            MDBCUDA_ERR << "Error fetching dataset";
-        } else if(result.isEmpty()) {
-            MDBCUDA_ERR << "No element found:"<<cu_unique_id;
-        } else {
-            //we have dataset so set it directly within the cdsta wrapper
-            *dataset_description = new CDataWrapper(result.getObjectField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).objdata());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+int MongoDBControlUnitDataAccess::getDataset(const std::string&                  cu_unique_id,
+                                             chaos::common::data::CDataWrapper** dataset_description) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
+                                                                  //    << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
+                                                                  << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << BSON("$exists" << true));
+    mongo::BSONObj prj   = BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << 1 << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION << 1);
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_2_ENTRY("query",
+                                                                  "prj",
+                                                                  query.toString(),
+                                                                  prj.toString()));)
+    // remove the field of the document
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query,
+                                   &prj))) {
+      MDBCUDA_ERR << "Error fetching dataset";
+    } else if (result.isEmpty()) {
+      MDBCUDA_ERR << "No element found:" << cu_unique_id;
+    } else {
+      // we have dataset so set it directly within the cdsta wrapper
+      *dataset_description = new CDataWrapper(result.getObjectField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).objdata());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-
 int MongoDBControlUnitDataAccess::getDataset(const std::string& cu_unique_id,
-                                             Dataset& dataset) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
-                        //            << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
-                                    << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION  << BSON("$exists" << true ));
-        mongo::BSONObj prj = BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION  << 1 <<
-                                  ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION << 1);
-        
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_2_ENTRY("query",
-                                                                    "prj",
-                                                                    query.toString(),
-                                                                    prj.toString()));)
-        //remove the field of the document
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      query,
-                                      &prj))) {
-            MDBCUDA_ERR << "Error fetching dataset";
-        } else if(result.isEmpty()) {
-            MDBCUDA_ERR << "No element found:"<<cu_unique_id;
-        } else {
-            //we have dataset so set it directly within the cdsta wrapper
-            CDWUniquePtr ds_in_cdw(new CDataWrapper(result.getObjectField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).objdata()));
-            DatasetSDWrapper reference_ser_wrap(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(Dataset, dataset));
-            reference_ser_wrap.deserialize(ds_in_cdw.get());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+                                             Dataset&           dataset) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id
+                                                                  //            << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT
+                                                                  << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << BSON("$exists" << true));
+    mongo::BSONObj prj   = BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << 1 << ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_COMMAND_DESCRIPTION << 1);
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_2_ENTRY("query",
+                                                                  "prj",
+                                                                  query.toString(),
+                                                                  prj.toString()));)
+    // remove the field of the document
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query,
+                                   &prj))) {
+      MDBCUDA_ERR << "Error fetching dataset";
+    } else if (result.isEmpty()) {
+      MDBCUDA_ERR << "No element found:" << cu_unique_id;
+    } else {
+      // we have dataset so set it directly within the cdsta wrapper
+      CDWUniquePtr     ds_in_cdw(new CDataWrapper(result.getObjectField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).objdata()));
+      DatasetSDWrapper reference_ser_wrap(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(Dataset, dataset));
+      reference_ser_wrap.deserialize(ds_in_cdw.get());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::setCommandDescription(chaos::common::data::CDataWrapper& command_description) {
-    return -1;
+  return -1;
 }
 
-
 /*
-*/
+ */
 int MongoDBControlUnitDataAccess::setInstanceDescription(const std::string& cu_unique_id,
-                                                         CDataWrapper& instance_description) {
-    int err = 0;
-    //allocate data block on vfat
-    mongo::BSONObjBuilder bson_find;
-    mongo::BSONObjBuilder updated_field;
-    mongo::BSONObjBuilder bson_update;
-    try {
-        
-        if(!instance_description.hasKey(NodeDefinitionKey::NODE_PARENT)) return -1;
-        
-        //serach criteria
-        bson_find   << NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id;//<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
-        
-        int size;
-        mongo::BSONObj u(instance_description.getBSONRawData(size));
-        updated_field.appendElements(u);
-        
-        
-        mongo::BSONObj query = bson_find.obj();
-        mongo::BSONObj update = BSON("$set" << BSON("instance_description" << updated_field.obj()));
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "update",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Update",
-                                                                    query.toString(),
-                                                                    update.jsonString()));)
-        //set the instance parameter within the node representing the control unit
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     query,
-                                     update))) {
-            MDBCUDA_ERR << "Error updating unit server with code:" << err;
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+                                                         CDataWrapper&      instance_description) {
+  int err = 0;
+  // allocate data block on vfat
+  mongo::BSONObjBuilder bson_find;
+  mongo::BSONObjBuilder updated_field;
+  mongo::BSONObjBuilder bson_update;
+  try {
+    if (!instance_description.hasKey(NodeDefinitionKey::NODE_PARENT)) return -1;
+
+    // serach criteria
+    bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << cu_unique_id;  //<< NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
+
+    int            size;
+    mongo::BSONObj u(instance_description.getBSONRawData(size));
+    updated_field.appendElements(u);
+
+    mongo::BSONObj query  = bson_find.obj();
+    mongo::BSONObj update = BSON("$set" << BSON("instance_description" << updated_field.obj()));
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "update",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Update",
+                                                                  query.toString(),
+                                                                  update.jsonString()));)
+    // set the instance parameter within the node representing the control unit
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  query,
+                                  update))) {
+      MDBCUDA_ERR << "Error updating unit server with code:" << err;
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& unit_server_uid,
                                                          const std::string& control_unit_uid,
-                                                         CDataWrapper **result) {
-    int err = 0;
-    mongo::BSONObj          q_result;
-    mongo::BSONObjBuilder   bson_find;
-    SearchResult            paged_result;
-    try{
-        bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
-        if(unit_server_uid.size()>0) {
-            //ad also unit server for search the instance description
-            bson_find << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
-        }
-        mongo::BSONObj q = bson_find.obj();
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                    q.toString()));)
-        
-        if((err = connection->findOne(q_result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q))){
-            MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else if(q_result.isEmpty()){
-            MDBCUDA_DBG << "No instance description found for control unit:" <<control_unit_uid << " with parent:" << unit_server_uid;
-        } else {
-            mongo::BSONObj instance_description = q_result.getObjectField("instance_description");
-            *result = new CDataWrapper(instance_description.objdata());
-            (*result)->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, q_result.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
+                                                         CDataWrapper**     result) {
+  int                   err = 0;
+  mongo::BSONObj        q_result;
+  mongo::BSONObjBuilder bson_find;
+  SearchResult          paged_result;
+  try {
+    bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
+    if (unit_server_uid.size() > 0) {
+      // ad also unit server for search the instance description
+      bson_find << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
+    }
+    mongo::BSONObj q = bson_find.obj();
 
-            
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                  q.toString()));)
+
+    if ((err = connection->findOne(q_result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q))) {
+      MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else if (q_result.isEmpty()) {
+      MDBCUDA_DBG << "No instance description found for control unit:" << control_unit_uid << " with parent:" << unit_server_uid;
+    } else {
+      mongo::BSONObj instance_description = q_result.getObjectField("instance_description");
+      *result                             = new CDataWrapper(instance_description.objdata());
+      (*result)->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, q_result.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 #if 0
 
@@ -892,8 +854,10 @@ int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& unit
                 for(std::vector< mongo::BSONElement >::iterator it = drv_descriptions.begin();
                     it != drv_descriptions.end();
                     it++) {
-                    CDataWrapper driver_desc(it->Obj().objdata());
-                    (*result)->appendCDataWrapperToArray(driver_desc);
+                        if(it->Obj().objdata()){
+                            CDataWrapper driver_desc(it->Obj().objdata());
+                            (*result)->appendCDataWrapperToArray(driver_desc);
+                        }
                 }
                 (*result)->finalizeArrayForKey(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DRIVER_DESCRIPTION);
             }
@@ -904,8 +868,10 @@ int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& unit
                 for(std::vector< mongo::BSONElement >::iterator it = attr_descriptions.begin();
                     it != attr_descriptions.end();
                     it++) {
+                        if(it->Obj().objdata()){
                     CDataWrapper driver_desc(it->Obj().objdata());
                     (*result)->appendCDataWrapperToArray(driver_desc);
+                        }
                 }
                 (*result)->finalizeArrayForKey("attribute_value_descriptions");
             }
@@ -922,527 +888,513 @@ int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& unit
 #endif
 
 int MongoDBControlUnitDataAccess::searchInstanceForUnitServer(std::vector<ChaosSharedPtr<CDataWrapper> >& result_page,
-                                                              const std::string& unit_server_uid,
-                                                              std::vector<std::string> cu_type_filter,
-                                                              uint32_t last_sequence_id,
-                                                              uint32_t results_for_page) {
-    int err = 0;
-    mongo::BSONObjBuilder   bson_find;
-    mongo::BSONArrayBuilder bson_find_or;
-    mongo::BSONArrayBuilder bson_find_and;
-    SearchResult            paged_result;
-    
-    //compose query
-    try{
-        //filter on sequence, type and unit server
-        bson_find_and << BSON(NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT);
-        bson_find_and << BSON(boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid);
-        
-        //add cu types
-        if(cu_type_filter.size()) {
-            for(std::vector<std::string>::iterator it = cu_type_filter.begin();
-                it != cu_type_filter.end();
-                it++) {
-                bson_find_or << BSON("instance_description.control_unit_implementation" << *it);
-            }
-            bson_find_and << BSON("$or" << bson_find_or.arr());
-        }
-        bson_find.appendArray("$and", bson_find_and.obj());
-        // filter on node unique id
-        
-        mongo::BSONObj q = bson_find.obj();
-        // mongo::BSONObj p =  BSON(NodeDefinitionKey::NODE_UNIQUE_ID<<1);
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                    q.toString()));)
-        //perform the search for the query page
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                    q,
-                                    NULL,//return only the control unit unique id
-                                    NULL,
-                                    results_for_page))) {
-            MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else {
-            DEBUG_CODE(MDBCUDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-            if(paged_result.size()) {
-                for (SearchResultIterator it = paged_result.begin();
-                     it != paged_result.end();
-                     it++) {
-                    ChaosSharedPtr<CDataWrapper> result_intance(new CDataWrapper());
-                    result_intance->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, it->getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
-                    if(it->hasField(NodeDefinitionKey::NODE_RPC_ADDR))result_intance->addStringValue(NodeDefinitionKey::NODE_RPC_ADDR, it->getStringField(NodeDefinitionKey::NODE_RPC_ADDR));
-                    if(it->hasField(NodeDefinitionKey::NODE_RPC_DOMAIN))result_intance->addStringValue(NodeDefinitionKey::NODE_RPC_DOMAIN, it->getStringField(NodeDefinitionKey::NODE_RPC_DOMAIN));
-                    
-                    mongo::BSONObj instance_description = it->getObjectField("instance_description");
-                    result_intance->addStringValue("control_unit_implementation", instance_description.getStringField("control_unit_implementation"));
-                    
-                    result_page.push_back(result_intance);
-                }
-            }
+                                                              const std::string&                          unit_server_uid,
+                                                              std::vector<std::string>                    cu_type_filter,
+                                                              uint32_t                                    last_sequence_id,
+                                                              uint32_t                                    results_for_page) {
+  int                     err = 0;
+  mongo::BSONObjBuilder   bson_find;
+  mongo::BSONArrayBuilder bson_find_or;
+  mongo::BSONArrayBuilder bson_find_and;
+  SearchResult            paged_result;
+
+  // compose query
+  try {
+    // filter on sequence, type and unit server
+    bson_find_and << BSON(NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT);
+    bson_find_and << BSON(boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid);
+
+    // add cu types
+    if (cu_type_filter.size()) {
+      for (std::vector<std::string>::iterator it = cu_type_filter.begin();
+           it != cu_type_filter.end();
+           it++) {
+        bson_find_or << BSON("instance_description.control_unit_implementation" << *it);
+      }
+      bson_find_and << BSON("$or" << bson_find_or.arr());
+    }
+    bson_find.appendArray("$and", bson_find_and.obj());
+    // filter on node unique id
+
+    mongo::BSONObj q = bson_find.obj();
+    // mongo::BSONObj p =  BSON(NodeDefinitionKey::NODE_UNIQUE_ID<<1);
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                  q.toString()));)
+    // perform the search for the query page
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                 q,
+                                 NULL,  // return only the control unit unique id
+                                 NULL,
+                                 results_for_page))) {
+      MDBCUDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+      DEBUG_CODE(MDBCUDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+      if (paged_result.size()) {
+        for (SearchResultIterator it = paged_result.begin();
+             it != paged_result.end();
+             it++) {
+          ChaosSharedPtr<CDataWrapper> result_intance(new CDataWrapper());
+          result_intance->addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, it->getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
+          if (it->hasField(NodeDefinitionKey::NODE_RPC_ADDR)) result_intance->addStringValue(NodeDefinitionKey::NODE_RPC_ADDR, it->getStringField(NodeDefinitionKey::NODE_RPC_ADDR));
+          if (it->hasField(NodeDefinitionKey::NODE_RPC_DOMAIN)) result_intance->addStringValue(NodeDefinitionKey::NODE_RPC_DOMAIN, it->getStringField(NodeDefinitionKey::NODE_RPC_DOMAIN));
+
+          mongo::BSONObj instance_description = it->getObjectField("instance_description");
+          result_intance->addStringValue("control_unit_implementation", instance_description.getStringField("control_unit_implementation"));
+
+          result_page.push_back(result_intance);
         }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::getInstanceDescription(const std::string& control_unit_uid,
-                                                         CDataWrapper **result) {
-    return getInstanceDescription("", control_unit_uid, result);
+                                                         CDataWrapper**     result) {
+  return getInstanceDescription("", control_unit_uid, result);
 }
 
-
-
 int MongoDBControlUnitDataAccess::deleteInstanceDescription(const std::string& unit_server_uid,
                                                             const std::string& control_unit_uid) {
-    int err = 0;
-    mongo::BSONObj          q_result;
-    mongo::BSONObjBuilder   bson_find;
-    try{
-        bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
-        bson_find << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
-        mongo::BSONObj q = bson_find.obj();
-        mongo::BSONObj u = BSON("$unset" << BSON("instance_description" << ""));
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "update",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Update",
-                                                                    q.toString(),
-                                                                    u.jsonString()));)
-        //remove the field of the document
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q,
-                                     u))) {
-            MDBCUDA_ERR << "Error removing control unit instance from node";
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+  int                   err = 0;
+  mongo::BSONObj        q_result;
+  mongo::BSONObjBuilder bson_find;
+  try {
+    bson_find << NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid;
+    bson_find << boost::str(boost::format("instance_description.%1%") % NodeDefinitionKey::NODE_PARENT) << unit_server_uid;
+    mongo::BSONObj q = bson_find.obj();
+    mongo::BSONObj u = BSON("$unset" << BSON("instance_description"
+                                             << ""));
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "update",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Update",
+                                                                  q.toString(),
+                                                                  u.jsonString()));)
+    // remove the field of the document
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q,
+                                  u))) {
+      MDBCUDA_ERR << "Error removing control unit instance from node";
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::getInstanceDatasetAttributeDescription(const std::string& control_unit_uid,
-                                                                         const std::string& attribute_name,
+int MongoDBControlUnitDataAccess::getInstanceDatasetAttributeDescription(const std::string&                                 control_unit_uid,
+                                                                         const std::string&                                 attribute_name,
                                                                          ChaosSharedPtr<chaos::common::data::CDataWrapper>& result) {
-    int err = 0;
-    mongo::BSONObj  result_bson;
-    const std::string dotted_dataset_path =  boost::str(boost::format("%1%.%1%")%ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
-    const std::string dotted_dataset_path_proj =  boost::str(boost::format("%1%.%1%.$")%ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
-    try{
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid <<
-                            //        NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT <<
-                                    dotted_dataset_path << BSON("$elemMatch"<<BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME << attribute_name)));
-        mongo::BSONObj prj = BSON(dotted_dataset_path_proj << 1);
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Projection",
-                                                                    query.toString(),
-                                                                    prj.jsonString()));)
-        //remove the field of the document
-        if((err  = connection->findOne(result_bson,
-                                       MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                       query,
-                                       &prj))){
-            
-        }else if(result_bson.isEmpty()){
-            MDBCUDA_ERR << "No attribute has been found:"<<attribute_name<<" in "<<control_unit_uid;
-        } else {
-            std::vector<mongo::BSONElement> result_array = result_bson.getFieldDotted(dotted_dataset_path).Array();
-            if(result_array.size()!=0) {
-                mongo::BSONObj attribute_config = result_array[0].Obj();
-                //we have found description and need to return all field
-                result.reset(new CDataWrapper(attribute_config.objdata()));
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+  int               err = 0;
+  mongo::BSONObj    result_bson;
+  const std::string dotted_dataset_path      = boost::str(boost::format("%1%.%1%") % ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
+  const std::string dotted_dataset_path_proj = boost::str(boost::format("%1%.%1%.$") % ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
+  try {
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid <<
+                                //        NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT <<
+                                dotted_dataset_path << BSON("$elemMatch" << BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME << attribute_name)));
+    mongo::BSONObj prj   = BSON(dotted_dataset_path_proj << 1);
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Projection",
+                                                                  query.toString(),
+                                                                  prj.jsonString()));)
+    // remove the field of the document
+    if ((err = connection->findOne(result_bson,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query,
+                                   &prj))) {
+    } else if (result_bson.isEmpty()) {
+      MDBCUDA_ERR << "No attribute has been found:" << attribute_name << " in " << control_unit_uid;
+    } else {
+      std::vector<mongo::BSONElement> result_array = result_bson.getFieldDotted(dotted_dataset_path).Array();
+      if (result_array.size() != 0) {
+        mongo::BSONObj attribute_config = result_array[0].Obj();
+        // we have found description and need to return all field
+        result.reset(new CDataWrapper(attribute_config.objdata()));
+      }
     }
-    return err;
-    
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::getInstanceDatasetAttributeConfiguration(const std::string& control_unit_uid,
-                                                                           const std::string& attribute_name,
+int MongoDBControlUnitDataAccess::getInstanceDatasetAttributeConfiguration(const std::string&                                 control_unit_uid,
+                                                                           const std::string&                                 attribute_name,
                                                                            ChaosSharedPtr<chaos::common::data::CDataWrapper>& result) {
-    int err = 0;
-    mongo::BSONObj  result_bson;
-    try{
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid <<
-                                   // NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT <<
-                                    "instance_description.attribute_value_descriptions" << BSON("$elemMatch"<<BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME << attribute_name)));
-        mongo::BSONObj prj = BSON("instance_description.attribute_value_descriptions.$" << 1);
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findOne",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Projection",
-                                                                    query.toString(),
-                                                                    prj.jsonString()));)
-        //remove the field of the document
-        if((err  = connection->findOne(result_bson,
-                                       MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                       query,
-                                       &prj))){
-            
-        } else if(!result_bson.isEmpty()){
-            std::vector<mongo::BSONElement> result_array = result_bson.getFieldDotted("instance_description.attribute_value_descriptions").Array();
-            if(result_array.size()!=0) {
-                mongo::BSONObj attribute_config = result_array[0].Obj();
-                ChaosUniquePtr<CDataWrapper> ac(new CDataWrapper(attribute_config.objdata()));
-
-                //we have found description
-                result.reset(new CDataWrapper());
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT));
-                }
+  int            err = 0;
+  mongo::BSONObj result_bson;
+  try {
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_uid <<
+                                // NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT <<
+                                "instance_description.attribute_value_descriptions" << BSON("$elemMatch" << BSON(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME << attribute_name)));
+    mongo::BSONObj prj   = BSON("instance_description.attribute_value_descriptions.$" << 1);
 
-                 if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET));
-                }
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findOne",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Projection",
+                                                                  query.toString(),
+                                                                  prj.jsonString()));)
+    // remove the field of the document
+    if ((err = connection->findOne(result_bson,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query,
+                                   &prj))) {
+    } else if (!result_bson.isEmpty()) {
+      std::vector<mongo::BSONElement> result_array = result_bson.getFieldDotted("instance_description.attribute_value_descriptions").Array();
+      if (result_array.size() != 0) {
+        mongo::BSONObj               attribute_config = result_array[0].Obj();
+        ChaosUniquePtr<CDataWrapper> ac(new CDataWrapper(attribute_config.objdata()));
 
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR));
-                }
-                if(attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR)) {
-                    result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR,
-                                           ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR));
-                }
-            }
+        // we have found description
+        result.reset(new CDataWrapper());
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_NAME));
         }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DEFAULT_VALUE));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MAX_RANGE));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_MIN_RANGE));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_INCREMENT));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_UNIT));
+        }
+
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_CONVFACT));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_OFFSET));
+        }
+
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_WARN_THR));
+        }
+        if (attribute_config.hasField(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR)) {
+          result->addStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR,
+                                 ac->getStringValue(ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_ATTRIBUTE_ERROR_THR));
+        }
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::getScriptAssociatedToControlUnitInstance(const std::string& cu_instance,
-                                                                           bool& found,
+int MongoDBControlUnitDataAccess::getScriptAssociatedToControlUnitInstance(const std::string&     cu_instance,
+                                                                           bool&                  found,
                                                                            ScriptBaseDescription& script_base_descrition) {
-    int err = 0;
-    found = false;
-    mongo::BSONObj  result_bson;
-    try{
-        mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_instance <<
-                                NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT <<
-                                NodeDefinitionKey::NODE_SUB_TYPE << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
-        
-        mongo::BSONObj p = BSON(NodeDefinitionKey::NODE_GROUP_SET << 1 <<
-                                "script_seq" << 1);
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "find",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "projection",
-                                                                    q.toString(),
-                                                                    p.jsonString()));)
-        if((err = connection->findOne(result_bson,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q,
-                                      &p))) {
-            MDBCUDA_ERR << CHAOS_FORMAT("Error searching script information on instance %1%",%cu_instance);
-        } else if(result_bson.isEmpty() == false) {
-            mongo::BSONElement sname = result_bson.getField(NodeDefinitionKey::NODE_GROUP_SET);
-            mongo::BSONElement sseq = result_bson.getField("script_seq");
-            //getscript
-            q = BSON("script_name" << sname.String() <<
-                     "seq" << sseq.numberLong());
-            
-            if((err = connection->findOne(result_bson,
-                                          MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                          q))) {
-                MDBCUDA_ERR << CHAOS_FORMAT("Error loading script %1% information on instance %2%",%sname.String()%cu_instance);
-            } else if((found = (result_bson.isEmpty() == false))) {
-                ChaosUniquePtr<CDataWrapper> script_data(new CDataWrapper(result_bson.objdata()));
-                ScriptBaseDescriptionSDWrapper sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(ScriptBaseDescription, script_base_descrition));
-                sdw.deserialize(script_data.get());
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+  int err = 0;
+  found   = false;
+  mongo::BSONObj result_bson;
+  try {
+    mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << cu_instance << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT << NodeDefinitionKey::NODE_SUB_TYPE << NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
+
+    mongo::BSONObj p = BSON(NodeDefinitionKey::NODE_GROUP_SET << 1 << "script_seq" << 1);
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "find",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "projection",
+                                                                  q.toString(),
+                                                                  p.jsonString()));)
+    if ((err = connection->findOne(result_bson,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q,
+                                   &p))) {
+      MDBCUDA_ERR << CHAOS_FORMAT("Error searching script information on instance %1%", % cu_instance);
+    } else if (result_bson.isEmpty() == false) {
+      mongo::BSONElement sname = result_bson.getField(NodeDefinitionKey::NODE_GROUP_SET);
+      mongo::BSONElement sseq  = result_bson.getField("script_seq");
+      // getscript
+      q = BSON("script_name" << sname.String() << "seq" << sseq.numberLong());
+
+      if ((err = connection->findOne(result_bson,
+                                     MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                     q))) {
+        MDBCUDA_ERR << CHAOS_FORMAT("Error loading script %1% information on instance %2%", % sname.String() % cu_instance);
+      } else if ((found = (result_bson.isEmpty() == false))) {
+        ChaosUniquePtr<CDataWrapper>   script_data(new CDataWrapper(result_bson.objdata()));
+        ScriptBaseDescriptionSDWrapper sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(ScriptBaseDescription, script_base_descrition));
+        sdw.deserialize(script_data.get());
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::getDataServiceAssociated(const std::string& cu_uid,
-                                                           std::vector<std::string>& associated_ds){
-    CHAOS_ASSERT(node_data_access)
-    int err = 0;
-    std::vector<mongo::BSONObj> result;
-    try{
-        mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_DATA_SERVICE
-                                << "cu_association" << BSON("$in" << BSON_ARRAY(cu_uid)));
-        mongo::BSONObj p = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << 1);
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "find",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "projection",
-                                                                    q.toString(),
-                                                                    p.jsonString()));)
-        connection->findN(result,
-                          MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                          q,
-                          10,
-                          0,
-                          &p);
-        
-        BOOST_FOREACH(mongo::BSONObj element, result){
-            if(!element.hasField(NodeDefinitionKey::NODE_UNIQUE_ID)) continue;
-            const std::string ds_unique_id = element.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID);
-            CDataWrapper *node_description;
-            if((err = node_data_access->getNodeDescription(ds_unique_id,
-                                                           &node_description))){
-                MDBCUDA_ERR << "Error fetching node description for data service:" << ds_unique_id;
-            } else if(node_description!=NULL){
-                //we have object description
-                ChaosUniquePtr<chaos::common::data::CDataWrapper> node_ptr(node_description);
-                associated_ds.push_back(node_ptr->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID));
-            } else {
-                MDBCUDA_ERR << "no node description found for data service:" << ds_unique_id;
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+int MongoDBControlUnitDataAccess::getDataServiceAssociated(const std::string&        cu_uid,
+                                                           std::vector<std::string>& associated_ds) {
+  CHAOS_ASSERT(node_data_access)
+  int                         err = 0;
+  std::vector<mongo::BSONObj> result;
+  try {
+    mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_DATA_SERVICE
+                                                         << "cu_association" << BSON("$in" << BSON_ARRAY(cu_uid)));
+    mongo::BSONObj p = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << 1);
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "find",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "projection",
+                                                                  q.toString(),
+                                                                  p.jsonString()));)
+    connection->findN(result,
+                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                      q,
+                      10,
+                      0,
+                      &p);
+
+    BOOST_FOREACH (mongo::BSONObj element, result) {
+      if (!element.hasField(NodeDefinitionKey::NODE_UNIQUE_ID)) continue;
+      const std::string ds_unique_id = element.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID);
+      CDataWrapper*     node_description;
+      if ((err = node_data_access->getNodeDescription(ds_unique_id,
+                                                      &node_description))) {
+        MDBCUDA_ERR << "Error fetching node description for data service:" << ds_unique_id;
+      } else if (node_description != NULL) {
+        // we have object description
+        ChaosUniquePtr<chaos::common::data::CDataWrapper> node_ptr(node_description);
+        associated_ds.push_back(node_ptr->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID));
+      } else {
+        MDBCUDA_ERR << "no node description found for data service:" << ds_unique_id;
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
-int MongoDBControlUnitDataAccess::reserveControlUnitForAgeingManagement(uint64_t& last_sequence_id,
+int MongoDBControlUnitDataAccess::reserveControlUnitForAgeingManagement(uint64_t&    last_sequence_id,
                                                                         std::string& control_unit_found,
-                                                                        uint32_t& control_unit_ageing_time,
-                                                                        uint64_t& last_ageing_perform_time,
-                                                                        uint64_t timeout_for_checking,
-                                                                        uint64_t delay_next_check) {
-    int err = 0;
-    SearchResult paged_result;
-    try {
-        mongo::BSONObj result_found;
-        mongo::BSONObjBuilder query_builder;
-        mongo::BSONArrayBuilder query_ageing_and;
-        mongo::BSONArrayBuilder query_ageing_or;
-        
-        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-        const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
-        query_builder << "property_defaults" << BSON("$elemMatch" << BSON("property_g_plist" << BSON("$elemMatch" << BSON("property_name" << DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING << "property_value" << BSON("$gt" << 0)))));
-        
-        //get all control unit
-        // we want to search everithing
-      ////  query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
-        
-        //condition on sequence
-        query_builder << "seq" << BSON("$gt" << (long long)last_sequence_id);
-        
-        //select control unit also if it is in checking managemnt but data checking time is old than one minute(it is gone in timeout)
-        query_ageing_or << BSON(key_processing_ageing << true << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-timeout_for_checking)));
-        
-        //or on previous condition and on checking management == false the last checking date need to be greater that noral chack timeout
-        query_ageing_or << BSON(key_processing_ageing << false << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-delay_next_check)));
-        
-        query_builder << "$or" << query_ageing_or.arr();
-        
-        
-        mongo::BSONObj  query = query_builder.obj();
-        // set atomicalli processing ageing to true
-        mongo::BSONObj  update =  BSON("$set" << BSON(key_processing_ageing << true <<
-                                                      key_last_checking_time << mongo::Date_t(TimingUtil::getTimeStamp())));
-        // order getting first cu being the last processed one
-        mongo::BSONObj  order_by = BSON(key_last_checking_time << 1);
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "findAndUpdate",
-                                            DATA_ACCESS_LOG_3_ENTRY("query",
-                                                                    "update",
-                                                                    "order_by",
-                                                                    query.jsonString(),
-                                                                    update.jsonString(),
-                                                                    order_by.jsonString()));)
-        //find the control unit
-        if((err = connection->findAndModify(result_found,
-                                            MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                            query,
-                                            update,
-                                            false,
-                                            false,
-                                            order_by))){
-            MDBCUDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
-        } else if(result_found.isEmpty() == false && (result_found.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) &&
-                                                      result_found.hasField(MONGODB_COLLECTION_NODES_AGEING_INFO))) {
-            last_sequence_id = 0;
-            control_unit_found.clear();
-            last_ageing_perform_time = 0;
-            control_unit_ageing_time = 0;
-            //find property
-            if(result_found.hasElement("property_defaults")) {
-                CDWUniquePtr prop_ser(new CDataWrapper(result_found.objdata()));
-                chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw;
-                pg_sdw.serialization_key = "property_defaults";
-                pg_sdw.deserialize(prop_ser.get());
-                for(common::property::PropertyGroupVectorConstIterator it = pg_sdw().begin(),
-                    end = pg_sdw().end();
-                    it != end;
-                    it++) {
-                    const std::string& pg_name = it->getGroupName();
-                    if(pg_name.compare(ControlUnitPropertyKey::P_GROUP_NAME) == 0) {
-                        if(it->hasProperty(DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING)&&it->hasProperty(DataServiceNodeDefinitionKey::DS_STORAGE_TYPE)){
-                            //we have ageing data
-                            control_unit_ageing_time = (uint32_t)it->getPropertyValue(DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING).asInt32();
-                            int type= it->getPropertyValue(DataServiceNodeDefinitionKey::DS_STORAGE_TYPE).asInt32();
-                            last_sequence_id = (uint64_t)result_found.getField("seq").Long();
-                            last_ageing_perform_time = (uint64_t)result_found.getFieldDotted(key_last_performed_time).Date().asInt64();
-
-                            if((type& ((int)DataServiceNodeDefinitionType::DSStorageTypeHistory)) && (control_unit_ageing_time>0)){
-                                control_unit_found = result_found.getField(NodeDefinitionKey::NODE_UNIQUE_ID).String();
-                            }
-                        }
-                        break;
-                    }
-                }
+                                                                        uint32_t&    control_unit_ageing_time,
+                                                                        uint64_t&    last_ageing_perform_time,
+                                                                        uint64_t     timeout_for_checking,
+                                                                        uint64_t     delay_next_check) {
+  int          err = 0;
+  SearchResult paged_result;
+  try {
+    mongo::BSONObj          result_found;
+    mongo::BSONObjBuilder   query_builder;
+    mongo::BSONArrayBuilder query_ageing_and;
+    mongo::BSONArrayBuilder query_ageing_or;
+
+    const std::string key_processing_ageing   = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+    const std::string key_last_checking_time  = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+    const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+    query_builder << "property_defaults" << BSON("$elemMatch" << BSON("property_g_plist" << BSON("$elemMatch" << BSON("property_name" << DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING << "property_value" << BSON("$gt" << 0)))));
+
+    // get all control unit
+    //  we want to search everithing
+    ////  query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
+
+    // condition on sequence
+    query_builder << "seq" << BSON("$gt" << (long long)last_sequence_id);
+
+    // select control unit also if it is in checking managemnt but data checking time is old than one minute(it is gone in timeout)
+    query_ageing_or << BSON(key_processing_ageing << true << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp() - timeout_for_checking)));
+
+    // or on previous condition and on checking management == false the last checking date need to be greater that noral chack timeout
+    query_ageing_or << BSON(key_processing_ageing << false << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp() - delay_next_check)));
+
+    query_builder << "$or" << query_ageing_or.arr();
+
+    mongo::BSONObj query = query_builder.obj();
+    // set atomicalli processing ageing to true
+    mongo::BSONObj update = BSON("$set" << BSON(key_processing_ageing << true << key_last_checking_time << mongo::Date_t(TimingUtil::getTimeStamp())));
+    // order getting first cu being the last processed one
+    mongo::BSONObj order_by = BSON(key_last_checking_time << 1);
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "findAndUpdate",
+                                          DATA_ACCESS_LOG_3_ENTRY("query",
+                                                                  "update",
+                                                                  "order_by",
+                                                                  query.jsonString(),
+                                                                  update.jsonString(),
+                                                                  order_by.jsonString()));)
+    // find the control unit
+    if ((err = connection->findAndModify(result_found,
+                                         MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                         query,
+                                         update,
+                                         false,
+                                         false,
+                                         order_by))) {
+      MDBCUDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", % err);
+    } else if (result_found.isEmpty() == false && (result_found.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) &&
+                                                   result_found.hasField(MONGODB_COLLECTION_NODES_AGEING_INFO))) {
+      last_sequence_id = 0;
+      control_unit_found.clear();
+      last_ageing_perform_time = 0;
+      control_unit_ageing_time = 0;
+      // find property
+      if (result_found.hasElement("property_defaults")) {
+        CDWUniquePtr                                          prop_ser(new CDataWrapper(result_found.objdata()));
+        chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw;
+        pg_sdw.serialization_key = "property_defaults";
+        pg_sdw.deserialize(prop_ser.get());
+        for (common::property::PropertyGroupVectorConstIterator it  = pg_sdw().begin(),
+                                                                end = pg_sdw().end();
+             it != end;
+             it++) {
+          const std::string& pg_name = it->getGroupName();
+          if (pg_name.compare(ControlUnitPropertyKey::P_GROUP_NAME) == 0) {
+            if (it->hasProperty(DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING) && it->hasProperty(DataServiceNodeDefinitionKey::DS_STORAGE_TYPE)) {
+              // we have ageing data
+              control_unit_ageing_time = (uint32_t)it->getPropertyValue(DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING).asInt32();
+              int type                 = it->getPropertyValue(DataServiceNodeDefinitionKey::DS_STORAGE_TYPE).asInt32();
+              last_sequence_id         = (uint64_t)result_found.getField("seq").Long();
+              last_ageing_perform_time = (uint64_t)result_found.getFieldDotted(key_last_performed_time).Date().asInt64();
+
+              if ((type & ((int)DataServiceNodeDefinitionType::DSStorageTypeHistory)) && (control_unit_ageing_time > 0)) {
+                control_unit_found = result_found.getField(NodeDefinitionKey::NODE_UNIQUE_ID).String();
+              }
             }
+            break;
+          }
         }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::releaseControlUnitForAgeingManagement(std::string& control_unit_found,
-                                                                        bool performed) {
-    int err = 0;
-    SearchResult paged_result;
-    try {
-        mongo::BSONObj result_found;
-        uint64_t current_ts = TimingUtil::getTimeStamp();
-        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-        const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
-        
-        mongo::BSONObj  query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_found);
-        // set atomicalli processing ageing to true
-        mongo::BSONObj  update = BSON("$set" << (performed?BSON(key_processing_ageing << false <<
-                                                                key_last_checking_time << mongo::Date_t(current_ts) <<
-                                                                key_last_performed_time << mongo::Date_t(current_ts)):
-                                                 BSON(key_processing_ageing << false <<
-                                                      key_last_checking_time << mongo::Date_t(current_ts))));
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message(__func__,
-                                            "update",
-                                            DATA_ACCESS_LOG_2_ENTRY("query",
-                                                                    "update",
-                                                                    query.jsonString(),
-                                                                    update.jsonString()));)
-        //find the control unit
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     query,
-                                     update))){
-            MDBCUDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.errorCode;
+                                                                        bool         performed) {
+  int          err = 0;
+  SearchResult paged_result;
+  try {
+    mongo::BSONObj    result_found;
+    uint64_t          current_ts              = TimingUtil::getTimeStamp();
+    const std::string key_processing_ageing   = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+    const std::string key_last_checking_time  = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+    const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_found);
+    // set atomicalli processing ageing to true
+    mongo::BSONObj update = BSON("$set" << (performed ? BSON(key_processing_ageing << false << key_last_checking_time << mongo::Date_t(current_ts) << key_last_performed_time << mongo::Date_t(current_ts)) : BSON(key_processing_ageing << false << key_last_checking_time << mongo::Date_t(current_ts))));
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message(__func__,
+                                          "update",
+                                          DATA_ACCESS_LOG_2_ENTRY("query",
+                                                                  "update",
+                                                                  query.jsonString(),
+                                                                  update.jsonString()));)
+    // find the control unit
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  query,
+                                  update))) {
+      MDBCUDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", % err);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBControlUnitDataAccess::getNextRunID(const std::string& control_unit_id,
-                                               int64_t& run_id) {
-    int err = 0;
+                                               int64_t&           run_id) {
+  int err = 0;
 
-    try {
-        const std::string run_id_key = CHAOS_FORMAT("%1%.%2%", %"run_description"%ControlUnitNodeDefinitionKey::CONTROL_UNIT_RUN_ID);
-        
-        //increment the run id
-        mongo::BSONObj r;
-        mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id);
-        mongo::BSONObj u = BSON("$inc" << BSON(run_id_key<<(long long)1));
-        mongo::BSONObj sort;
-        mongo::BSONObj projection = BSON(run_id_key<<1);
-        //update run id
-        
-        DEBUG_CODE(MDBCUDA_DBG<<log_message("updateRunID",
-                                            "update",
-                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                    "Update",
-                                                                    q.toString(),
-                                                                    u.jsonString()));)
-        //set the instance parameter within the node representing the control unit
-        if((err = connection->findAndModify(r,
-                                            MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                            q,
-                                            u,
-                                            false,
-                                            true,
-                                            sort,
-                                            projection))) {
-            MDBCUDA_ERR << "Error updating run id for control unit " << control_unit_id;
-        } else if(r.isEmpty()) {
-            run_id = 0;
-        } else {
-            run_id = r.getFieldDotted(run_id_key).Long();
-        }
-    } catch (const mongo::DBException &e) {
-        MDBCUDA_ERR << e.what();
-        err = e.getCode();
+  try {
+    const std::string run_id_key = CHAOS_FORMAT("%1%.%2%", % "run_description" % ControlUnitNodeDefinitionKey::CONTROL_UNIT_RUN_ID);
+
+    // increment the run id
+    mongo::BSONObj r;
+    mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id);
+    mongo::BSONObj u = BSON("$inc" << BSON(run_id_key << (long long)1));
+    mongo::BSONObj sort;
+    mongo::BSONObj projection = BSON(run_id_key << 1);
+    // update run id
+
+    DEBUG_CODE(MDBCUDA_DBG << log_message("updateRunID",
+                                          "update",
+                                          DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                  "Update",
+                                                                  q.toString(),
+                                                                  u.jsonString()));)
+    // set the instance parameter within the node representing the control unit
+    if ((err = connection->findAndModify(r,
+                                         MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                         q,
+                                         u,
+                                         false,
+                                         true,
+                                         sort,
+                                         projection))) {
+      MDBCUDA_ERR << "Error updating run id for control unit " << control_unit_id;
+    } else if (r.isEmpty()) {
+      run_id = 0;
+    } else {
+      run_id = r.getFieldDotted(run_id_key).Long();
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBCUDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
index 029ac55b2b69771cd3b6eb4485e5dd0f78195b53..52ad7de0512d8902d7796f812a0798ad5c574e47 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBNodeDataAccess.cpp
@@ -18,18 +18,18 @@
  * See the Licence for the specific language governing
  * permissions and limitations under the Licence.
  */
-//#undef DEBUG
+// #undef DEBUG
 
-#include <mongo/client/dbclient.h>
 #include "MongoDBNodeDataAccess.h"
-#include "mongo_db_constants.h"
-#include "../../ChaosMetadataService.h"
-#include <chaos/common/utility/TimingUtil.h>
 #include <chaos/common/batch_command/BatchCommandConstants.h>
+#include <chaos/common/utility/TimingUtil.h>
+#include <mongo/client/dbclient.h>
 #include <map>
+#include "../../ChaosMetadataService.h"
+#include "mongo_db_constants.h"
 #define MDBNDA_INFO INFO_LOG(MongoDBNodeDataAccess)
-#define MDBNDA_DBG  DBG_LOG(MongoDBNodeDataAccess)
-#define MDBNDA_ERR  ERR_LOG(MongoDBNodeDataAccess)
+#define MDBNDA_DBG DBG_LOG(MongoDBNodeDataAccess)
+#define MDBNDA_ERR ERR_LOG(MongoDBNodeDataAccess)
 
 using namespace boost;
 using namespace chaos::common::property;
@@ -40,1301 +40,1272 @@ using namespace chaos::common::batch_command;
 using namespace chaos::service_common::persistence::mongodb;
 using namespace chaos::metadata_service::persistence::mongodb;
 
-MongoDBNodeDataAccess::MongoDBNodeDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection):
-MongoDBAccessor(_connection),
-utility_data_access(NULL){}
+MongoDBNodeDataAccess::MongoDBNodeDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection)
+    : MongoDBAccessor(_connection), utility_data_access(NULL) {}
 
 MongoDBNodeDataAccess::~MongoDBNodeDataAccess() {}
 
 mongo::BSONObj MongoDBNodeDataAccess::getAliveOption(unsigned int timeout_sec) {
-    return BSON(CHAOS_FORMAT("health_stat.%1%",%NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP) << BSON("$gte" << mongo::Date_t(TimingUtil::getTimestampWithDelay((timeout_sec * 1000), false))));
+  return BSON(CHAOS_FORMAT("health_stat.%1%", % NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP) << BSON("$gte" << mongo::Date_t(TimingUtil::getTimestampWithDelay((timeout_sec * 1000), false))));
 }
 
-int MongoDBNodeDataAccess::getNodeDescription(const std::string& node_unique_id,
-                                              chaos::common::data::CDWUniquePtr &node_description) {
-    int err = 0;
-    chaos::common::data::CDataWrapper *node_description_tmp = NULL;
-    if((err = getNodeDescription(node_unique_id,
+int MongoDBNodeDataAccess::getNodeDescription(const std::string&                 node_unique_id,
+                                              chaos::common::data::CDWUniquePtr& node_description) {
+  int                                err                  = 0;
+  chaos::common::data::CDataWrapper* node_description_tmp = NULL;
+  if ((err = getNodeDescription(node_unique_id,
                                 &node_description_tmp))) {
-        MDBNDA_ERR << "Error fetching node description";
-    } else {
-        node_description.reset(node_description_tmp);
-    }
-    return err;
+    MDBNDA_ERR << "Error fetching node description";
+  } else {
+    node_description.reset(node_description_tmp);
+  }
+  return err;
 }
- int MongoDBNodeDataAccess::setNodeDescription(const std::string& node_unique_id,
-                                           chaos::common::data::CDWUniquePtr &node_description){
+int MongoDBNodeDataAccess::setNodeDescription(const std::string&                 node_unique_id,
+                                              chaos::common::data::CDWUniquePtr& node_description) {
+  int                   err = 0;
+  mongo::BSONObj        result;
+  mongo::BSONObjBuilder query_builder;
+  try {
+    int size;
+    if (node_unique_id.size() == 0) return -1;  // invalid unique id
+    query_builder << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
 
- int err = 0;
-    mongo::BSONObj result;
-    mongo::BSONObjBuilder query_builder;
-    try {
-        int size;
-        if(node_unique_id.size() == 0) return -1; //invalid unique id
-        query_builder << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
-        
-        mongo::BSONObj q = query_builder.obj();
-        mongo::BSONObj u = BSON("$set" << mongo::BSONObj(node_description->getBSONRawData(size)));
-        DEBUG_CODE(MDBNDA_DBG<<log_message("setNodeDescription",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "update",
-                                                                   q.jsonString(),
-                                                                   u.jsonString()));)
-
-        // want to have the full information
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q,u))){
-            MDBNDA_ERR << "Error setting/update node description";
-        } 
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+    mongo::BSONObj q = query_builder.obj();
+    mongo::BSONObj u = BSON("$set" << mongo::BSONObj(node_description->getBSONRawData(size)));
+    DEBUG_CODE(MDBNDA_DBG << log_message("setNodeDescription",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "update",
+                                                                 q.jsonString(),
+                                                                 u.jsonString()));)
+
+    // want to have the full information
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q, u))) {
+      MDBNDA_ERR << "Error setting/update node description";
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
-                   
-int MongoDBNodeDataAccess::getNodeDescription(const std::string& node_unique_id,
-                                              chaos::common::data::CDataWrapper **node_description) {
-    int err = 0;
-    mongo::BSONObj result;
-    mongo::BSONObjBuilder query_builder;
-    try {
-        if(node_unique_id.size() == 0) return -1; //invalid unique id
-        query_builder << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
-        
-        mongo::BSONObj q = query_builder.obj();
-      /*  mongo::BSONObj p = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << 1 <<
-                                chaos::NodeDefinitionKey::NODE_TYPE << 1 <<
-                                chaos::NodeDefinitionKey::NODE_SUB_TYPE << 1 <<
-                                chaos::NodeDefinitionKey::NODE_RPC_ADDR << 1 <<
-                                chaos::NodeDefinitionKey::NODE_RPC_DOMAIN << 1 <<
-                                chaos::NodeDefinitionKey::NODE_HOST_NAME << 1 <<
-                                chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR << 1 <<
-                                chaos::NodeDefinitionKey::NODE_TIMESTAMP << 1);*/
-        
-        /*DEBUG_CODE(MDBNDA_DBG<<log_message("getNodeDescription",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Projection",
-                                                                   q.jsonString(),
-                                                                   p.jsonString()));)
-        */
-        DEBUG_CODE(MDBNDA_DBG<<log_message("getNodeDescription",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()
-                                                                   ));)
-        // want to have the full information
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q/*, &p*/))){
-            MDBNDA_ERR << "Error fetching node description for:"<<node_unique_id;
-        } else if(result.isEmpty()) {
-            MDBNDA_ERR << "No node description has been found for:"<<node_unique_id;
-            err = -2;
-        } else {
-            *node_description = new CDataWrapper(result.objdata());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+
+int MongoDBNodeDataAccess::getNodeDescription(const std::string&                  node_unique_id,
+                                              chaos::common::data::CDataWrapper** node_description) {
+  int                   err = 0;
+  mongo::BSONObj        result;
+  mongo::BSONObjBuilder query_builder;
+  try {
+    if (node_unique_id.size() == 0) return -1;  // invalid unique id
+    query_builder << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
+
+    mongo::BSONObj q = query_builder.obj();
+    /*  mongo::BSONObj p = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << 1 <<
+                              chaos::NodeDefinitionKey::NODE_TYPE << 1 <<
+                              chaos::NodeDefinitionKey::NODE_SUB_TYPE << 1 <<
+                              chaos::NodeDefinitionKey::NODE_RPC_ADDR << 1 <<
+                              chaos::NodeDefinitionKey::NODE_RPC_DOMAIN << 1 <<
+                              chaos::NodeDefinitionKey::NODE_HOST_NAME << 1 <<
+                              chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR << 1 <<
+                              chaos::NodeDefinitionKey::NODE_TIMESTAMP << 1);*/
+
+    /*DEBUG_CODE(MDBNDA_DBG<<log_message("getNodeDescription",
+                                       "findOne",
+                                       DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                               "Projection",
+                                                               q.jsonString(),
+                                                               p.jsonString()));)
+    */
+    DEBUG_CODE(MDBNDA_DBG << log_message("getNodeDescription",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+    // want to have the full information
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q /*, &p*/))) {
+      MDBNDA_ERR << "Error fetching node description for:" << node_unique_id;
+    } else if (result.isEmpty()) {
+      MDBNDA_ERR << "No node description has been found for:" << node_unique_id;
+      err = -2;
+    } else {
+      *node_description = new CDataWrapper(result.objdata());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-//inherited method
+// inherited method
 int MongoDBNodeDataAccess::insertNewNode(CDataWrapper& node_description) {
-    int err = 0;
-    uint64_t sequence_id = 0;
-    try {
-        if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) return -1;
-        if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) return -2;
-        if(!node_description.hasKey("seq")) {
-            CHAOS_ASSERT(utility_data_access)
-           if(utility_data_access->getNextSequenceValue("nodes", sequence_id)) {
-                MDBNDA_ERR << "Error getting new sequence for node";
-                return err;
-            } else {
-                node_description.addInt64Value("seq", sequence_id);
-            }
-          //  node_description.addInt64Value("seq", chaos::common::utility::TimingUtil::getTimeStamp());
+  int      err         = 0;
+  uint64_t sequence_id = 0;
+  try {
+    if (!node_description.hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) return -1;
+    if (!node_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) return -2;
+    if (!node_description.hasKey("seq")) {
+      CHAOS_ASSERT(utility_data_access)
+      if (utility_data_access->getNextSequenceValue("nodes", sequence_id)) {
+        MDBNDA_ERR << "Error getting new sequence for node";
+        return err;
+      } else {
+        node_description.addInt64Value("seq", sequence_id);
+      }
+      //  node_description.addInt64Value("seq", chaos::common::utility::TimingUtil::getTimeStamp());
+    }
 
-        }
-        
-        ChaosUniquePtr<SerializationBuffer> ser(node_description.getBSONData());
-        mongo::BSONObj obj_to_insert(ser->getBufferPtr());
-        MDBNDA_DBG<<"inserting:"<<node_description.getCompliantJSONString();
-        DEBUG_CODE(MDBNDA_DBG<<log_message("insertNewNode",
-                                           "insert",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   obj_to_insert));)
-
-        
-        if((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     obj_to_insert))) {
-            MDBNDA_ERR << "Error creating new node";
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+    ChaosUniquePtr<SerializationBuffer> ser(node_description.getBSONData());
+    mongo::BSONObj                      obj_to_insert(ser->getBufferPtr());
+    MDBNDA_DBG << "inserting:" << node_description.getCompliantJSONString();
+    DEBUG_CODE(MDBNDA_DBG << log_message("insertNewNode",
+                                         "insert",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 obj_to_insert));)
+
+    if ((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  obj_to_insert))) {
+      MDBNDA_ERR << "Error creating new node";
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 //! update the node updatable feature
 int MongoDBNodeDataAccess::updateNode(chaos::common::data::CDataWrapper& node_description) {
-    int err = 0;
-    //allocate data block on vfat
-    mongo::BSONObjBuilder bson_find;
-    mongo::BSONObjBuilder updated_field;
-    mongo::BSONObjBuilder bson_update;
-    mongo::BSONArrayBuilder bson_update_array;
-    try {
-        if(!node_description.hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) return -1;
-        
-        //serach criteria
-        bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID);
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) {
-            bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_TYPE);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_SUB_TYPE)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_SUB_TYPE << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_SUB_TYPE);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_RPC_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_RPC_ADDR);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_DOMAIN)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_RPC_DOMAIN << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_RPC_DOMAIN);
-        }
-         if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_IP_ADDR)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_IP_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_IP_ADDR);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_HOST_NAME)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_HOST_NAME << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_HOST_NAME);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR);
-        }
-         if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_PARENT << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_PARENT);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_TIMESTAMP)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_TIMESTAMP << mongo::Date_t(node_description.getUInt64Value(chaos::NodeDefinitionKey::NODE_TIMESTAMP));
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_DESC)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_DESC << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_DESC);
-        }
-         if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_REST_PORT)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_REST_PORT << node_description.getInt32Value(chaos::NodeDefinitionKey::NODE_REST_PORT);
-        }
-        if(node_description.hasKey(chaos::NodeDefinitionKey::NODE_BUILD_INFO)) {
-            updated_field << chaos::NodeDefinitionKey::NODE_BUILD_INFO << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_BUILD_INFO);
-        }
-         if(node_description.hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW)) {
-            updated_field << chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW << node_description.getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW);
-        }
-        if(node_description.hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC)) {
-            CMultiTypeDataArrayWrapperSPtr description_array(node_description.getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC));
-            for(int desc_idx = 0;
-                desc_idx < description_array->size();
-                desc_idx++) {
-                ChaosUniquePtr<CDataWrapper> desc_obj(description_array->getCDataWrapperElementAtIndex(desc_idx));
-                if(desc_obj->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC)) {
-                    CMultiTypeDataArrayWrapperSPtr action_array(desc_obj->getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC));
-                    for(int idx = 0;
-                        idx < action_array->size();
-                        idx++) {
-                        mongo::BSONObjBuilder action_description;
-                        mongo::BSONArrayBuilder param_descriptions;
-                        ChaosUniquePtr<chaos::common::data::CDataWrapper> element(action_array->getCDataWrapperElementAtIndex(idx));
-                        if(element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN)) {
-                            action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN
-                            << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN);
-                        }
-                        if(element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME)) {
-                            action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME
-                            << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME);
-                        }
-                        if(element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION)) {
-                            action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION
-                            << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION);
-                        }
-                        //check if the action has parameter
-                        if(element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM)) {
-                            CMultiTypeDataArrayWrapperSPtr param_array(element->getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM));
-                            for(int idx = 0;
-                                idx < param_array->size();
-                                idx++) {
-                                mongo::BSONObjBuilder single_param_desc;
-                                ChaosUniquePtr<chaos::common::data::CDataWrapper> param(param_array->getCDataWrapperElementAtIndex(idx));
-                                
-                                if(param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME)) {
-                                    single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME
-                                    << param->getStringValue( chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME);
-                                }
-                                if(param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO)) {
-                                    single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO
-                                    << param->getStringValue( chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO);
-                                }
-                                if(param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_TYPE)) {
-                                    single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_TYPE
+  int err = 0;
+  // allocate data block on vfat
+  mongo::BSONObjBuilder   bson_find;
+  mongo::BSONObjBuilder   updated_field;
+  mongo::BSONObjBuilder   bson_update;
+  mongo::BSONArrayBuilder bson_update_array;
+  try {
+    if (!node_description.hasKey(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) return -1;
+
+    // serach criteria
+    bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID);
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_TYPE)) {
+      bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_TYPE);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_SUB_TYPE)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_SUB_TYPE << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_SUB_TYPE);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_RPC_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_RPC_ADDR);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_RPC_DOMAIN)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_RPC_DOMAIN << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_RPC_DOMAIN);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_IP_ADDR)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_IP_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_IP_ADDR);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_HOST_NAME)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_HOST_NAME << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_HOST_NAME);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_DIRECT_IO_ADDR);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_PARENT)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_PARENT << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_PARENT);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_TIMESTAMP)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_TIMESTAMP << mongo::Date_t(node_description.getUInt64Value(chaos::NodeDefinitionKey::NODE_TIMESTAMP));
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_DESC)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_DESC << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_DESC);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_REST_PORT)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_REST_PORT << node_description.getInt32Value(chaos::NodeDefinitionKey::NODE_REST_PORT);
+    }
+    if (node_description.hasKey(chaos::NodeDefinitionKey::NODE_BUILD_INFO)) {
+      updated_field << chaos::NodeDefinitionKey::NODE_BUILD_INFO << node_description.getStringValue(chaos::NodeDefinitionKey::NODE_BUILD_INFO);
+    }
+    if (node_description.hasKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW)) {
+      updated_field << chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW << node_description.getStringValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_VIEW);
+    }
+    if (node_description.hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC)) {
+      CMultiTypeDataArrayWrapperSPtr description_array(node_description.getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC));
+      for (int desc_idx = 0;
+           desc_idx < description_array->size();
+           desc_idx++) {
+        ChaosUniquePtr<CDataWrapper> desc_obj(description_array->getCDataWrapperElementAtIndex(desc_idx));
+        if (desc_obj->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC)) {
+          CMultiTypeDataArrayWrapperSPtr action_array(desc_obj->getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC));
+          for (int idx = 0;
+               idx < action_array->size();
+               idx++) {
+            mongo::BSONObjBuilder                             action_description;
+            mongo::BSONArrayBuilder                           param_descriptions;
+            ChaosUniquePtr<chaos::common::data::CDataWrapper> element(action_array->getCDataWrapperElementAtIndex(idx));
+            if (element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN)) {
+              action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN
+                                 << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DOMAIN);
+            }
+            if (element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME)) {
+              action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME
+                                 << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_NAME);
+            }
+            if (element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION)) {
+              action_description << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION
+                                 << element->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESCRIPTION);
+            }
+            // check if the action has parameter
+            if (element->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM)) {
+              CMultiTypeDataArrayWrapperSPtr param_array(element->getVectorValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM));
+              for (int idx = 0;
+                   idx < param_array->size();
+                   idx++) {
+                mongo::BSONObjBuilder                             single_param_desc;
+                ChaosUniquePtr<chaos::common::data::CDataWrapper> param(param_array->getCDataWrapperElementAtIndex(idx));
+
+                if (param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME)) {
+                  single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME
+                                    << param->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_NAME);
+                }
+                if (param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO)) {
+                  single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO
+                                    << param->getStringValue(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_INFO);
+                }
+                if (param->hasKey(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_TYPE)) {
+                  single_param_desc << chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_TYPE
                                     << param->getInt32Value(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PAR_TYPE);
-                                }
-                                //add element to array
-                                param_descriptions << single_param_desc.obj();
-                            }
-                            //add all param description
-                            action_description.appendArray(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM, param_descriptions.arr());
-                        }
-                        //appen action description to array
-                        bson_update_array << action_description.obj();
-                    }
                 }
+                // add element to array
+                param_descriptions << single_param_desc.obj();
+              }
+              // add all param description
+              action_description.appendArray(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC_PARAM, param_descriptions.arr());
             }
-            //add all action to the bson update object
-            updated_field.appendArray(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC, bson_update_array.arr());
+            // appen action description to array
+            bson_update_array << action_description.obj();
+          }
         }
-        if(updated_field.asTempObj().isEmpty()) return 0;
-        mongo::BSONObj query = bson_find.obj();
-        //set the update
-        bson_update << "$set" << updated_field.obj();
-        mongo::BSONObj update = bson_update.obj();
-        
-        
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("updateNode",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update",
-                                                                   query.jsonString(),
-                                                                   update.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     query,
-                                     update))) {
-            MDBNDA_ERR << "Error updating NODE:"<<node_description.getCompliantJSONString();
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+      }
+      // add all action to the bson update object
+      updated_field.appendArray(chaos::RpcActionDefinitionKey::CS_CMDM_ACTION_DESC, bson_update_array.arr());
+    }
+    if (updated_field.asTempObj().isEmpty()) return 0;
+    mongo::BSONObj query = bson_find.obj();
+    // set the update
+    bson_update << "$set" << updated_field.obj();
+    mongo::BSONObj update = bson_update.obj();
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("updateNode",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update",
+                                                                 query.jsonString(),
+                                                                 update.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  query,
+                                  update))) {
+      MDBNDA_ERR << "Error updating NODE:" << node_description.getCompliantJSONString();
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::checkNodePresence(bool& presence,
+int MongoDBNodeDataAccess::checkNodePresence(bool&              presence,
                                              const std::string& node_unique_id,
                                              const std::string& node_unique_type) {
-    int err = 0;
-    //allocate data block on vfat
-    mongo::BSONObjBuilder bson_find;
-    mongo::BSONObj result;
-    try {
-        bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
-        if(node_unique_type.size()>0) {
-            bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_unique_type;
-        }
-        mongo::BSONObj q = bson_find.obj();
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("checkNodePresence",
-                                           "find",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q))){
-            MDBNDA_ERR << "Error searching NODE:" << node_unique_id<<" type:"<<node_unique_type;
-        }
-        presence = !result.isEmpty();
-    } catch (const mongo::DBException &e) {
-        presence = false;
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  // allocate data block on vfat
+  mongo::BSONObjBuilder bson_find;
+  mongo::BSONObj        result;
+  try {
+    bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
+    if (node_unique_type.size() > 0) {
+      bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_unique_type;
+    }
+    mongo::BSONObj q = bson_find.obj();
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("checkNodePresence",
+                                         "find",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q))) {
+      MDBNDA_ERR << "Error searching NODE:" << node_unique_id << " type:" << node_unique_type;
     }
-    return err;
+    presence = !result.isEmpty();
+  } catch (const mongo::DBException& e) {
+    presence = false;
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::setNodeHealthStatus(const std::string& node_unique_id,
-                                               const HealthStat& health_stat) {
-    int err = 0;
-    
-    try {
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id);
-        mongo::BSONObj u = BSON("$set" << BSON("health_stat" << BSON(NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP << mongo::Date_t(health_stat.timestamp) <<
-                                                                     NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP << mongo::Date_t(health_stat.mds_received_timestamp) <<
-                                                                     NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME << (long long)health_stat.uptime <<
-                                                                     NodeHealtDefinitionKey::NODE_HEALT_USER_TIME << health_stat.usr_time <<
-                                                                     NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME << health_stat.sys_time <<
-                                                                     NodeHealtDefinitionKey::NODE_HEALT_STATUS << health_stat.health_status)));
-        DEBUG_CODE(MDBNDA_DBG<<log_message("setNodeHealthStatus",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "update",
-                                                                   q.jsonString(),
-                                                                   u.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q,
-                                     u))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error updating health stat information for node %1%",%node_unique_id);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+                                               const HealthStat&  health_stat) {
+  int err = 0;
+
+  try {
+    mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id);
+    mongo::BSONObj u = BSON("$set" << BSON("health_stat" << BSON(NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP << mongo::Date_t(health_stat.timestamp) << NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP << mongo::Date_t(health_stat.mds_received_timestamp) << NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME << (long long)health_stat.uptime << NodeHealtDefinitionKey::NODE_HEALT_USER_TIME << health_stat.usr_time << NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME << health_stat.sys_time << NodeHealtDefinitionKey::NODE_HEALT_STATUS << health_stat.health_status)));
+    DEBUG_CODE(MDBNDA_DBG << log_message("setNodeHealthStatus",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "update",
+                                                                 q.jsonString(),
+                                                                 u.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q,
+                                  u))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error updating health stat information for node %1%", % node_unique_id);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::getNodeHealthStatus(const std::string& node_unique_id,
-                                               HealthStat& health_stat) {
-    int err = 0;
-    
-    try {
-        mongo::BSONObj result;
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id <<
-                                "health_stat" << BSON("$exists" << true));
-        DEBUG_CODE(MDBNDA_DBG<<log_message("setNodeHealthStatus",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error getting health stat information for node %1%",%node_unique_id);
-        } else if(result.isEmpty() == false) {
-            //we have found health stat
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+                                               HealthStat&        health_stat) {
+  int err = 0;
+
+  try {
+    mongo::BSONObj result;
+    mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id << "health_stat" << BSON("$exists" << true));
+    DEBUG_CODE(MDBNDA_DBG << log_message("setNodeHealthStatus",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error getting health stat information for node %1%", % node_unique_id);
+    } else if (result.isEmpty() == false) {
+      // we have found health stat
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::deleteNode(const std::string& node_unique_id,
                                       const std::string& node_type) {
-    int err = 0;
-    //allocate data block on vfat
-    mongo::BSONObjBuilder bson_find;
-    try {
-        bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
-        if(node_type.size()) {
-            bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_type;
-        }
-        mongo::BSONObj q = bson_find.obj();
-        
-        MDBNDA_DBG<<log_message("deleteNode",
-                                           "delete",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));
-        
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q))){
-            MDBNDA_ERR << "Error deleting NODE:" << node_unique_id;
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  // allocate data block on vfat
+  mongo::BSONObjBuilder bson_find;
+  try {
+    bson_find << chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_unique_id;
+    if (node_type.size()) {
+      bson_find << chaos::NodeDefinitionKey::NODE_TYPE << node_type;
+    }
+    mongo::BSONObj q = bson_find.obj();
+
+    MDBNDA_DBG << log_message("deleteNode",
+                              "delete",
+                              DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                      q.jsonString()));
+
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q))) {
+      MDBNDA_ERR << "Error deleting NODE:" << node_unique_id;
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
-#define BUILD_SEARCH(x,v) \
-if((int)search_type & (int)x){bson_find_or << BSON( chaos::NodeDefinitionKey::NODE_TYPE << v);}
-
-int MongoDBNodeDataAccess::searchNode(chaos::common::data::CDataWrapper **result,
-                                      const std::string& criteria,
-                                      chaos::NodeType::NodeSearchType search_type,
-                                      bool alive_only,
-                                      uint32_t last_unique_id,
-                                      uint32_t page_length,
-                                      const std::string& impl) {
-    int err = 0;
-    //decode the type of the node
-    std::string             type_of_node;
-    //contain token found in criteria
-    std::vector<std::string> criteria_token;
-    //helper for regular expression
-    std::string             token_for_mongo;
-    mongo::BSONObjBuilder   bson_find;
-    mongo::BSONArrayBuilder bson_find_or;
-    mongo::BSONArrayBuilder bson_find_and;
-    SearchResult            paged_result;
-    
-    //compose query
-    
-    //filter on sequence
-    if(!(search_type&chaos::NodeType::NodeSearchType::node_type_cds)){
-        bson_find_and << BSON( "seq" << BSON("$gt"<<last_unique_id));
+#define BUILD_SEARCH(x, v)                                          \
+  if ((int)search_type & (int)x) {                                  \
+    bson_find_or << BSON(chaos::NodeDefinitionKey::NODE_TYPE << v); \
+  }
+
+int MongoDBNodeDataAccess::searchNode(chaos::common::data::CDataWrapper** result,
+                                      const std::string&                  criteria,
+                                      chaos::NodeType::NodeSearchType     search_type,
+                                      bool                                alive_only,
+                                      uint32_t                            last_unique_id,
+                                      uint32_t                            page_length,
+                                      const std::string&                  impl) {
+  int err = 0;
+  // decode the type of the node
+  std::string type_of_node;
+  // contain token found in criteria
+  std::vector<std::string> criteria_token;
+  // helper for regular expression
+  std::string             token_for_mongo;
+  mongo::BSONObjBuilder   bson_find;
+  mongo::BSONArrayBuilder bson_find_or;
+  mongo::BSONArrayBuilder bson_find_and;
+  SearchResult            paged_result;
+
+  // compose query
+
+  // filter on sequence
+  if (!(search_type & chaos::NodeType::NodeSearchType::node_type_cds)) {
+    bson_find_and << BSON("seq" << BSON("$gt" << last_unique_id));
+  }
+
+  // filter on type
+  if (search_type > 0) {
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_us, chaos::NodeType::NODE_TYPE_UNIT_SERVER);
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_cu, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_agent, chaos::NodeType::NODE_TYPE_AGENT);
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_cds, chaos::NodeType::NODE_TYPE_DATA_SERVICE);
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_wan, chaos::NodeType::NODE_TYPE_WAN_PROXY);
+    BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_root, chaos::NodeType::NODE_TYPE_ROOT);
+
+    bson_find_and << BSON("$or" << bson_find_or.arr());
+
+    /*
+    switch(search_type) {
+        case chaos::NodeType::NodeSearchType::node_type_us:
+            type_of_node = chaos::NodeType::NODE_TYPE_UNIT_SERVER;
+            break;
+        case chaos::NodeType::NodeSearchType::node_type_cu:
+            type_of_node = chaos::NodeType::NODE_TYPE_CONTROL_UNIT;
+            break;
+        case chaos::NodeType::NodeSearchType::node_type_agent:
+            type_of_node = chaos::NodeType::NODE_TYPE_AGENT;
+            break;
+        case chaos::NodeType::NodeSearchType::node_type_cds:
+            type_of_node = chaos::NodeType::NODE_TYPE_DATA_SERVICE;
+            break;
+        case chaos::NodeType::NodeSearchType::node_type_wan:
+            type_of_node = chaos::NodeType::NODE_TYPE_WAN_PROXY;
+            break;
+         case chaos::NodeType::NodeSearchType::node_type_root:
+            type_of_node = chaos::NodeType::NODE_TYPE_ROOT;
+            break;
+        default:
+            break;
     }
-    
-    //filter on type
-    if(search_type>0) {
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_us,chaos::NodeType::NODE_TYPE_UNIT_SERVER);
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_cu,chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_agent,chaos::NodeType::NODE_TYPE_AGENT);
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_cds,chaos::NodeType::NODE_TYPE_DATA_SERVICE);
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_wan,chaos::NodeType::NODE_TYPE_WAN_PROXY);
-        BUILD_SEARCH(chaos::NodeType::NodeSearchType::node_type_root,chaos::NodeType::NODE_TYPE_ROOT);
-
-        bson_find_and<<BSON("$or"<<bson_find_or.arr());
-
-
-        /*
-        switch(search_type) {
-            case chaos::NodeType::NodeSearchType::node_type_us:
-                type_of_node = chaos::NodeType::NODE_TYPE_UNIT_SERVER;
-                break;
-            case chaos::NodeType::NodeSearchType::node_type_cu:
-                type_of_node = chaos::NodeType::NODE_TYPE_CONTROL_UNIT;
-                break;
-            case chaos::NodeType::NodeSearchType::node_type_agent:
-                type_of_node = chaos::NodeType::NODE_TYPE_AGENT;
-                break;
-            case chaos::NodeType::NodeSearchType::node_type_cds:
-                type_of_node = chaos::NodeType::NODE_TYPE_DATA_SERVICE;
-                break;
-            case chaos::NodeType::NodeSearchType::node_type_wan:
-                type_of_node = chaos::NodeType::NODE_TYPE_WAN_PROXY;
-                break;
-             case chaos::NodeType::NodeSearchType::node_type_root:
-                type_of_node = chaos::NodeType::NODE_TYPE_ROOT;
-                break;    
-            default:
-                break;
+    switch(search_type){
+        case chaos::NodeType::NodeSearchType::node_type_all_server:{
+            MDBNDA_DBG << "QUERY SERVER but:"<<criteria;
+            bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_UNIT_SERVER)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_WAN_PROXY)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_AGENT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_DATA_SERVICE);
+            bson_find_and<<BSON("$or"<<bson_find_or.arr());
+            break;
         }
-        switch(search_type){
-            case chaos::NodeType::NodeSearchType::node_type_all_server:{
-                MDBNDA_DBG << "QUERY SERVER but:"<<criteria;
-                bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_UNIT_SERVER)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_WAN_PROXY)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_AGENT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_DATA_SERVICE);
-                bson_find_and<<BSON("$or"<<bson_find_or.arr());
-                break;
-            }
-            case chaos::NodeType::NodeSearchType::node_type_ceu:{
-                bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-                bson_find_and<<BSON("$or"<<bson_find_or.arr());
-                break;
-            }
-            case chaos::NodeType::NodeSearchType::node_type_all:{
-               bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_UNIT_SERVER)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_WAN_PROXY)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_AGENT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_DATA_SERVICE)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
-                BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-                bson_find_and<<BSON("$or"<<bson_find_or.arr());
-                
-                break;
-            }
-            default:
-                bson_find_and << BSON( chaos::NodeDefinitionKey::NODE_TYPE << type_of_node);
+        case chaos::NodeType::NodeSearchType::node_type_ceu:{
+            bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+            bson_find_and<<BSON("$or"<<bson_find_or.arr());
+            break;
+        }
+        case chaos::NodeType::NodeSearchType::node_type_all:{
+           bson_find_or<<BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_UNIT_SERVER)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_WAN_PROXY)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_AGENT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_DATA_SERVICE)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_ROOT)<<
+            BSON( chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+            bson_find_and<<BSON("$or"<<bson_find_or.arr());
 
             break;
+        }
+        default:
+            bson_find_and << BSON( chaos::NodeDefinitionKey::NODE_TYPE << type_of_node);
 
-            
-        }*/
-        
-        
-    }
+        break;
+
+
+    }*/
+  }
 #ifdef HEALTH_ON_DB
- 
-    if(alive_only){bson_find_and << getAliveOption(6);}
-#endif    
-    //compose the 'or' condition for all token of unique_id filed
-    if(criteria.size()>0){
-        bson_find_and << BSON("$or" << getSearchTokenOnFiled(criteria, chaos::NodeDefinitionKey::NODE_UNIQUE_ID));
-    }
-    if((impl.size()>0)){
-            bson_find_and << BSON("$or" << getSearchTokenOnFiled(impl, "instance_description.control_unit_implementation"));
 
-    }
-    bson_find.appendArray("$and", bson_find_and.obj());
-    mongo::BSONObj q = bson_find.obj();
-    mongo::BSONObj p = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << 1 <<
-                            chaos::NodeDefinitionKey::NODE_TYPE << 1 <<
-                            chaos::NodeDefinitionKey::NODE_RPC_ADDR << 1 <<
-                            "seq" << 1 <<
-                            "health_stat" <<1<<
-                            "instance_description.control_unit_implementation"<<1);
-    DEBUG_CODE(MDBNDA_DBG<<log_message("searchNode",
+  if (alive_only) {
+    bson_find_and << getAliveOption(6);
+  }
+#endif
+  // compose the 'or' condition for all token of unique_id filed
+  if (criteria.size() > 0) {
+    bson_find_and << BSON("$or" << getSearchTokenOnFiled(criteria, chaos::NodeDefinitionKey::NODE_UNIQUE_ID));
+  }
+  if ((impl.size() > 0)) {
+    bson_find_and << BSON("$or" << getSearchTokenOnFiled(impl, "instance_description.control_unit_implementation"));
+  }
+  bson_find.appendArray("$and", bson_find_and.obj());
+  mongo::BSONObj q = bson_find.obj();
+  mongo::BSONObj p = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << 1 << chaos::NodeDefinitionKey::NODE_TYPE << 1 << chaos::NodeDefinitionKey::NODE_RPC_ADDR << 1 << "seq" << 1 << "health_stat" << 1 << "instance_description.control_unit_implementation" << 1);
+  DEBUG_CODE(MDBNDA_DBG << log_message("searchNode",
                                        "performPagedQuery",
                                        DATA_ACCESS_LOG_2_ENTRY("Query",
                                                                "Projection",
                                                                q.jsonString(),
                                                                p.jsonString()));)
-    
-    //perform the search for the query page
-    if((err = performPagedQuery(paged_result,
-                                MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                q,
-                                &p,
-                                NULL,
-                                page_length))) {
-        MDBNDA_ERR << "Error calling performPagedQuery with error" << err;
-    } else {
-        DEBUG_CODE(MDBNDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-        if(paged_result.size()) {
-            *result = new CDataWrapper();
-            for (SearchResultIterator it = paged_result.begin();
-                 it != paged_result.end();
-                 it++) {
-                std::string node_uid_found;
-                try {
-                    CDataWrapper cd;
-                    cd.addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, node_uid_found = it->getField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID).String());
-
-                    cd.addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, it->getField(chaos::NodeDefinitionKey::NODE_TYPE).String());
-                    if(cd.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) {
-                        cd.addStringValue(chaos::NodeDefinitionKey::NODE_RPC_ADDR, it->getField(chaos::NodeDefinitionKey::NODE_RPC_ADDR).String());
-                    }
-                    if(it->hasField("seq")){
-                        cd.addInt64Value("seq", (int64_t)it->getField("seq").Long());
-                    } /*else {
-                        cd.addInt64Value("seq", (int64_t)0);
-                    }*/
-                   
-                    if(it->hasField("health_stat")) {
-                        mongo::BSONElement health_stat_element = it->getField("health_stat");
-                        if(health_stat_element.type() == mongo::Object) {
-                            mongo::BSONObj o = health_stat_element.embeddedObject();
-                            //we can retrieve the data
-                            CDataWrapper health;
-                            health.addInt64Value(chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP).date().asInt64());
-                            health.addInt64Value(chaos::NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME, (int64_t)o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME).Long());
-                            health.addDoubleValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_USER_TIME, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_USER_TIME).Double());
-                            health.addDoubleValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME).Double());
-                            health.addStringValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_STATUS, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_STATUS).String());
-                            cd.addCSDataValue("health_stat", health);
-                        }
-                    }
+
+  // perform the search for the query page
+  if ((err = performPagedQuery(paged_result,
+                               MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                               q,
+                               &p,
+                               NULL,
+                               page_length))) {
+    MDBNDA_ERR << "Error calling performPagedQuery with error" << err;
+  } else {
+    DEBUG_CODE(MDBNDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+    if (paged_result.size()) {
+      *result = new CDataWrapper();
+      for (SearchResultIterator it = paged_result.begin();
+           it != paged_result.end();
+           it++) {
+        std::string node_uid_found;
+        try {
+          CDataWrapper cd;
+          cd.addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, node_uid_found = it->getField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID).String());
+
+          cd.addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, it->getField(chaos::NodeDefinitionKey::NODE_TYPE).String());
+          if (cd.hasKey(chaos::NodeDefinitionKey::NODE_RPC_ADDR)) {
+            cd.addStringValue(chaos::NodeDefinitionKey::NODE_RPC_ADDR, it->getField(chaos::NodeDefinitionKey::NODE_RPC_ADDR).String());
+          }
+          if (it->hasField("seq")) {
+            cd.addInt64Value("seq", (int64_t)it->getField("seq").Long());
+          } /*else {
+              cd.addInt64Value("seq", (int64_t)0);
+          }*/
+
+          if (it->hasField("health_stat")) {
+            mongo::BSONElement health_stat_element = it->getField("health_stat");
+            if (health_stat_element.type() == mongo::Object) {
+              mongo::BSONObj o = health_stat_element.embeddedObject();
+              // we can retrieve the data
+              CDataWrapper health;
+              health.addInt64Value(chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP).date().asInt64());
+              health.addInt64Value(chaos::NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME, (int64_t)o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_PROCESS_UPTIME).Long());
+              health.addDoubleValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_USER_TIME, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_USER_TIME).Double());
+              health.addDoubleValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_SYSTEM_TIME).Double());
+              health.addStringValue(chaos::NodeHealtDefinitionKey::NODE_HEALT_STATUS, o.getField(chaos::NodeHealtDefinitionKey::NODE_HEALT_STATUS).String());
+              cd.addCSDataValue("health_stat", health);
+            }
+          }
 #ifdef HEALTH_ON_DB
-                    (*result)->appendCDataWrapperToArray(cd);
+          (*result)->appendCDataWrapperToArray(cd);
 
 #else
-           if(alive_only){
-                bool alive = ChaosMetadataService::getInstance()->isNodeAlive(node_uid_found);
-                if(alive){
-                    (*result)->appendCDataWrapperToArray(cd);
-
-                }
- 
-           } else {
-                    (*result)->appendCDataWrapperToArray(cd);
+          if (alive_only) {
+            bool alive = ChaosMetadataService::getInstance()->isNodeAlive(node_uid_found);
+            if (alive) {
+              (*result)->appendCDataWrapperToArray(cd);
+            }
 
-           }        
+          } else {
+            (*result)->appendCDataWrapperToArray(cd);
+          }
 #endif
 
-                } catch(...) {
-                    MDBNDA_ERR << "Exception during scan of found node:" << node_uid_found;
-                }
-            }
-            (*result)->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
+        } catch (...) {
+          MDBNDA_ERR << "Exception during scan of found node:" << node_uid_found;
         }
+      }
+      (*result)->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
     }
-    return err;
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::setProperty(const std::string& node_uid,
+int MongoDBNodeDataAccess::setProperty(const std::string&         node_uid,
                                        const PropertyGroupVector& property_group_vector) {
-    int err = 0;
-    int size = 0;
-    try {
-        chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, const_cast<PropertyGroupVector&>(property_group_vector)));
-        pg_sdw.serialization_key = "property";
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
-        mongo::BSONObj u = BSON("$set" << mongo::BSONObj(pg_sdw.serialize()->getBSONRawData(size)));
-        DEBUG_CODE(MDBNDA_DBG<<log_message("setProperty",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update",
-                                                                   q.jsonString(),
-                                                                   u.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q,
-                                     u))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error setting property for %1%",%node_uid);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err  = 0;
+  int size = 0;
+  try {
+    chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, const_cast<PropertyGroupVector&>(property_group_vector)));
+    pg_sdw.serialization_key = "property";
+    mongo::BSONObj q         = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
+    mongo::BSONObj u         = BSON("$set" << mongo::BSONObj(pg_sdw.serialize()->getBSONRawData(size)));
+    DEBUG_CODE(MDBNDA_DBG << log_message("setProperty",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update",
+                                                                 q.jsonString(),
+                                                                 u.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q,
+                                  u))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error setting property for %1%", % node_uid);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-PropertyGroup *getPrgFromVec(const std::string& group_name,
+PropertyGroup* getPrgFromVec(const std::string&                            group_name,
                              chaos::common::property::PropertyGroupVector& property_group_vector) {
-    PropertyGroup *res_ptr = NULL;
-    for(PropertyGroupVectorIterator it = property_group_vector.begin(),
-        end = property_group_vector.end();
-        it != end;
-        it++) {
-        if(it->getGroupName().compare(group_name) != 0) continue;
-        res_ptr = &(*it);
-        break;
-    }
-    return res_ptr;
+  PropertyGroup* res_ptr = NULL;
+  for (PropertyGroupVectorIterator it  = property_group_vector.begin(),
+                                   end = property_group_vector.end();
+       it != end;
+       it++) {
+    if (it->getGroupName().compare(group_name) != 0) continue;
+    res_ptr = &(*it);
+    break;
+  }
+  return res_ptr;
 }
 
-//update porperty without removing old, if old are present the value are pushed
-int MongoDBNodeDataAccess::updatePropertyDefaultValue(const std::string& node_uid,
+// update porperty without removing old, if old are present the value are pushed
+int MongoDBNodeDataAccess::updatePropertyDefaultValue(const std::string&                                  node_uid,
                                                       const chaos::common::property::PropertyGroupVector& property_group_vector) {
-    int err = 0;
-    int size = 0;
-    
-    //get store default and update or add new
-    PropertyGroupVector property_stored;
-    if((err = getProperty(data_access::PropertyTypeDefaultValues,
-                          node_uid, property_stored)) != 0) return err;
-    
-    for(PropertyGroupVectorConstIterator it = property_group_vector.begin(),
-        end = property_group_vector.end();
-        it != end;
-        it++) {
-        const std::string group_name = it->getGroupName();
-        
-        PropertyGroup *pg = getPrgFromVec(group_name, property_stored);
-        if(pg != NULL) {
-            pg->copyPropertiesFromGroup(*it, true);
-        } else {
-            property_stored.push_back(*it);
-        }
+  int err  = 0;
+  int size = 0;
+
+  // get store default and update or add new
+  PropertyGroupVector property_stored;
+  if ((err = getProperty(data_access::PropertyTypeDefaultValues,
+                         node_uid,
+                         property_stored)) != 0) return err;
+
+  for (PropertyGroupVectorConstIterator it  = property_group_vector.begin(),
+                                        end = property_group_vector.end();
+       it != end;
+       it++) {
+    const std::string group_name = it->getGroupName();
+
+    PropertyGroup* pg = getPrgFromVec(group_name, property_stored);
+    if (pg != NULL) {
+      pg->copyPropertiesFromGroup(*it, true);
+    } else {
+      property_stored.push_back(*it);
     }
-    //no we can update all defaults
-    try {
-        chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, const_cast<PropertyGroupVector&>(property_stored)));
-        pg_sdw.serialization_key = "property_defaults";
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
-        mongo::BSONObj u = BSON("$set" << mongo::BSONObj(pg_sdw.serialize()->getBSONRawData(size)));
-        DEBUG_CODE(MDBNDA_DBG<<log_message("updatePropertyDefaultValue",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update",
-                                                                   q.jsonString(),
-                                                                   u.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q,
-                                     u))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error updating property default values for %1%",%node_uid);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  }
+  // no we can update all defaults
+  try {
+    chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, const_cast<PropertyGroupVector&>(property_stored)));
+    pg_sdw.serialization_key = "property_defaults";
+    mongo::BSONObj q         = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
+    mongo::BSONObj u         = BSON("$set" << mongo::BSONObj(pg_sdw.serialize()->getBSONRawData(size)));
+    DEBUG_CODE(MDBNDA_DBG << log_message("updatePropertyDefaultValue",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update",
+                                                                 q.jsonString(),
+                                                                 u.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q,
+                                  u))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error updating property default values for %1%", % node_uid);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::getProperty(const data_access::PropertyType property_type,
-                                       const std::string& node_uid,
+int MongoDBNodeDataAccess::getProperty(const data_access::PropertyType               property_type,
+                                       const std::string&                            node_uid,
                                        chaos::common::property::PropertyGroupVector& property_group_vector) {
-    int err = 0;
-    try {
-        std::string property_key;
-        switch (property_type) {
-            case data_access::PropertyTypeDescription:
-                property_key = "property";
-                break;
-                
-            case data_access::PropertyTypeDefaultValues:
-                property_key = "property_defaults";
-                break;
-        }
-        mongo::BSONObj found_property;
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid <<
-                                property_key << BSON("$exists" << true));
-        mongo::BSONObj p = BSON(property_key << 1);
-        DEBUG_CODE(MDBNDA_DBG<<log_message("getProperty",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(found_property,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q,
-                                      &p))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error retriving property for %1%",%node_uid);
-        }
-        if(!found_property.isEmpty()) {
-            CDWUniquePtr prop_ser(new CDataWrapper(found_property.objdata()));
-            chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, property_group_vector));
-            pg_sdw.serialization_key = property_key;
-            pg_sdw.deserialize(prop_ser.get());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  try {
+    std::string property_key;
+    switch (property_type) {
+      case data_access::PropertyTypeDescription:
+        property_key = "property";
+        break;
+
+      case data_access::PropertyTypeDefaultValues:
+        property_key = "property_defaults";
+        break;
     }
-    return err;
+    mongo::BSONObj found_property;
+    mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid << property_key << BSON("$exists" << true));
+    mongo::BSONObj p = BSON(property_key << 1);
+    DEBUG_CODE(MDBNDA_DBG << log_message("getProperty",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(found_property,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q,
+                                   &p))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error retriving property for %1%", % node_uid);
+    }
+    if (!found_property.isEmpty()) {
+      CDWUniquePtr                                          prop_ser(new CDataWrapper(found_property.objdata()));
+      chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw(CHAOS_DATA_WRAPPER_REFERENCE_AUTO_PTR(PropertyGroupVector, property_group_vector));
+      pg_sdw.serialization_key = property_key;
+      pg_sdw.deserialize(prop_ser.get());
+    }
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::getPropertyGroup(const data_access::PropertyType property_type,
-                                            const std::string& node_uid,
-                                            const std::string& property_group_name,
+int MongoDBNodeDataAccess::getPropertyGroup(const data_access::PropertyType         property_type,
+                                            const std::string&                      node_uid,
+                                            const std::string&                      property_group_name,
                                             chaos::common::property::PropertyGroup& property_group) {
-    int err = 0;
-    try {
-        std::string property_key;
-        switch (property_type) {
-            case data_access::PropertyTypeDescription:
-                property_key = "property";
-                break;
-                
-            case data_access::PropertyTypeDefaultValues:
-                property_key = "property_defaults";
-                break;
-        }
-        mongo::BSONObj found_property;
-        mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid <<
-                                property_key << BSON("$exists" << true) <<
-                                CHAOS_FORMAT("%1%.property_g_name", %property_key) << property_group_name);
-        mongo::BSONObj p = BSON("_id" << 0 << CHAOS_FORMAT("%1%", %property_key) << 1);
-        DEBUG_CODE(MDBNDA_DBG<<log_message("getProperty",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(found_property,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q,
-                                      &p))){
-            MDBNDA_ERR << CHAOS_FORMAT("Error retriving property for %1%",%node_uid);
-        }
-        if(!found_property.isEmpty()) {
-            CDWUniquePtr prop_ser(new CDataWrapper(found_property.objdata()));
-            chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw;
-            pg_sdw.serialization_key = property_key;
-            pg_sdw.deserialize(prop_ser.get());
-            if(pg_sdw().size()) {
-                property_group = pg_sdw()[0];
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  try {
+    std::string property_key;
+    switch (property_type) {
+      case data_access::PropertyTypeDescription:
+        property_key = "property";
+        break;
+
+      case data_access::PropertyTypeDefaultValues:
+        property_key = "property_defaults";
+        break;
     }
-    return err;
+    mongo::BSONObj found_property;
+    mongo::BSONObj q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << node_uid << property_key << BSON("$exists" << true) << CHAOS_FORMAT("%1%.property_g_name", % property_key) << property_group_name);
+    mongo::BSONObj p = BSON("_id" << 0 << CHAOS_FORMAT("%1%", % property_key) << 1);
+    DEBUG_CODE(MDBNDA_DBG << log_message("getProperty",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(found_property,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q,
+                                   &p))) {
+      MDBNDA_ERR << CHAOS_FORMAT("Error retriving property for %1%", % node_uid);
+    }
+    if (!found_property.isEmpty()) {
+      CDWUniquePtr                                          prop_ser(new CDataWrapper(found_property.objdata()));
+      chaos::common::property::PropertyGroupVectorSDWrapper pg_sdw;
+      pg_sdw.serialization_key = property_key;
+      pg_sdw.deserialize(prop_ser.get());
+      if (pg_sdw().size()) {
+        property_group = pg_sdw()[0];
+      }
+    }
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::checkCommandPresence(const std::string& command_unique_id,
-                                                bool& presence) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("checkCommandPresence",
-                                           "find",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
-                                      q))){
-            MDBNDA_ERR << boost::str(boost::format("Error checking presence for command uid:%1%")%command_unique_id);
-        }
-        presence = !result.isEmpty();
-    } catch (const mongo::DBException &e) {
-        presence = false;
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+                                                bool&              presence) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("checkCommandPresence",
+                                         "find",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
+                                   q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error checking presence for command uid:%1%") % command_unique_id);
     }
-    return err;
+    presence = !result.isEmpty();
+  } catch (const mongo::DBException& e) {
+    presence = false;
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::setCommand(chaos::common::data::CDataWrapper& command) {
-    int err = 0;
-    mongo::BSONObj result;
-    mongo::BSONObjBuilder update_builder;
-    try {
-        if(!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)) {
-            return -1;
-            MDBNDA_ERR << "No command uid found";
-        }
-        if(!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_ALIAS)) {
-            return -2;
-            MDBNDA_ERR << "No command alias found";
-        }
-        if(!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION)) {
-            return -3;
-            MDBNDA_ERR << "No command description found";
-        }
-        ChaosUniquePtr<SerializationBuffer> ser(command.getBSONData());
-        mongo::BSONObj i(ser->getBufferPtr());
-        
-        mongo::BSONObj query = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command.getStringValue(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID));
-        
-        update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_ALIAS));
-        update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION));
-        if(i.hasElement(BatchCommandAndParameterDescriptionkey::BC_PARAMETERS)){
-            //we have parameters
-            update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_PARAMETERS));
-        }
-        mongo::BSONObj update = BSON("$set" << update_builder.obj());
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("updateUS",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update",
-                                                                   query.jsonString(),
-                                                                   update.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
-                                     query,
-                                     update,
-                                     true))) {
-            MDBNDA_ERR << "Error updating NODE command:" << command.getCompliantJSONString()<<" err:"<<err;
-        }
-        
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int                   err = 0;
+  mongo::BSONObj        result;
+  mongo::BSONObjBuilder update_builder;
+  try {
+    if (!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)) {
+      return -1;
+      MDBNDA_ERR << "No command uid found";
+    }
+    if (!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_ALIAS)) {
+      return -2;
+      MDBNDA_ERR << "No command alias found";
+    }
+    if (!command.hasKey(BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION)) {
+      return -3;
+      MDBNDA_ERR << "No command description found";
+    }
+    ChaosUniquePtr<SerializationBuffer> ser(command.getBSONData());
+    mongo::BSONObj                      i(ser->getBufferPtr());
+
+    mongo::BSONObj query = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command.getStringValue(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID));
+
+    update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_ALIAS));
+    update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_DESCRIPTION));
+    if (i.hasElement(BatchCommandAndParameterDescriptionkey::BC_PARAMETERS)) {
+      // we have parameters
+      update_builder.append(i.getField(BatchCommandAndParameterDescriptionkey::BC_PARAMETERS));
+    }
+    mongo::BSONObj update = BSON("$set" << update_builder.obj());
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("updateUS",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update",
+                                                                 query.jsonString(),
+                                                                 update.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
+                                  query,
+                                  update,
+                                  true))) {
+      MDBNDA_ERR << "Error updating NODE command:" << command.getCompliantJSONString() << " err:" << err;
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::getCommand(const std::string& command_unique_id,
-                                      chaos::common::data::CDataWrapper **command) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        //create query
-        mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("getCommand",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
-                                      q))){
-            MDBNDA_ERR << boost::str(boost::format("Error searching the command uid:%2%")%command_unique_id);
-        } else if(result.isEmpty()) {
-            MDBNDA_ERR << boost::str(boost::format("No command for uid:%2%")%command_unique_id);
-        } else {
-            //return a new datawrapper with the found content
-            *command = new CDataWrapper(result.objdata());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+int MongoDBNodeDataAccess::getCommand(const std::string&                  command_unique_id,
+                                      chaos::common::data::CDataWrapper** command) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    // create query
+    mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("getCommand",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
+                                   q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error searching the command uid:%2%") % command_unique_id);
+    } else if (result.isEmpty()) {
+      MDBNDA_ERR << boost::str(boost::format("No command for uid:%2%") % command_unique_id);
+    } else {
+      // return a new datawrapper with the found content
+      *command = new CDataWrapper(result.objdata());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 //! inherited method
 int MongoDBNodeDataAccess::deleteCommand(const std::string& command_unique_id) {
-    int err = 0;
-    try {
-        //create query
-        mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("deleteCommandTemplate",
-                                           "delete",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
-                                     q))){
-            MDBNDA_ERR << boost::str(boost::format("Error removing the command uid:%2%")%command_unique_id);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  try {
+    // create query
+    mongo::BSONObj q = BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("deleteCommandTemplate",
+                                         "delete",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND),
+                                  q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error removing the command uid:%2%") % command_unique_id);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::checkCommandTemplatePresence(const std::string& template_name,
                                                         const std::string& command_unique_id,
-                                                        bool& presence) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        mongo::BSONObj q = BSON("template_name" << template_name <<
-                                BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("checkCommandTemplatePresence",
-                                           "find",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
-                                      q))){
-            MDBNDA_ERR << boost::str(boost::format("Error searching template name: %1% for command uid:%2%")%template_name%command_unique_id);
-        }
-        presence = !result.isEmpty();
-    } catch (const mongo::DBException &e) {
-        presence = false;
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+                                                        bool&              presence) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    mongo::BSONObj q = BSON("template_name" << template_name << BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("checkCommandTemplatePresence",
+                                         "find",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
+                                   q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error searching template name: %1% for command uid:%2%") % template_name % command_unique_id);
     }
-    return err;
+    presence = !result.isEmpty();
+  } catch (const mongo::DBException& e) {
+    presence = false;
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::setCommandTemplate(chaos::common::data::CDataWrapper& command_template) {
-    int err = 0;
-    try {
-        if(!command_template.hasKey("template_name") ||
-           !command_template.hasKey(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)) {
-            MDBNDA_ERR << boost::str(boost::format("The key 'template_name' and  '%2%' are mandatory!")%"template_name"%BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID);
-            return -1;
-        }
-        
-        std::string template_name = command_template.getStringValue("template_name");
-        std::string command_unique_id = command_template.getStringValue(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID);
-        
-        //create query
-        mongo::BSONObj q = BSON("template_name" << template_name <<
-                                BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        //create the update package (all key imnus the first two used before
-        ChaosUniquePtr<chaos::common::data::CDataWrapper> to_update(new CDataWrapper());
-        to_update->addStringValue("type", "template");
-        std::vector<std::string> all_keys;
-        command_template.getAllKey(all_keys);
-        
-        for(std::vector<std::string>::iterator it = all_keys.begin();
-            it != all_keys.end();
-            it++) {
-            if((it->compare("template_name")==0) ||
-               (it->compare(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)==0)) continue;
-            
-            //copy the key if present
-            command_template.copyKeyTo(*it, *to_update);
-        }
-        
-        ChaosUniquePtr<SerializationBuffer> chaos_bson(to_update->getBSONData());
-        mongo::BSONObj u = BSON("$set" << mongo::BSONObj(chaos_bson->getBufferPtr()));
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("setCommandTemplate",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "update",
-                                                                   q.jsonString(),
-                                                                   u.jsonString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
-                                     q,
-                                     u,
-                                     true))){
-            MDBNDA_ERR << boost::str(boost::format("Error setting the template name: %1% for command uid:%2%")%template_name%command_unique_id);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  try {
+    if (!command_template.hasKey("template_name") ||
+        !command_template.hasKey(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID)) {
+      MDBNDA_ERR << boost::str(boost::format("The key 'template_name' and  '%2%' are mandatory!") % "template_name" % BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID);
+      return -1;
+    }
+
+    std::string template_name     = command_template.getStringValue("template_name");
+    std::string command_unique_id = command_template.getStringValue(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID);
+
+    // create query
+    mongo::BSONObj q = BSON("template_name" << template_name << BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    // create the update package (all key imnus the first two used before
+    ChaosUniquePtr<chaos::common::data::CDataWrapper> to_update(new CDataWrapper());
+    to_update->addStringValue("type", "template");
+    std::vector<std::string> all_keys;
+    command_template.getAllKey(all_keys);
+
+    for (std::vector<std::string>::iterator it = all_keys.begin();
+         it != all_keys.end();
+         it++) {
+      if ((it->compare("template_name") == 0) ||
+          (it->compare(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID) == 0)) continue;
+
+      // copy the key if present
+      command_template.copyKeyTo(*it, *to_update);
     }
-    return err;
+
+    ChaosUniquePtr<SerializationBuffer> chaos_bson(to_update->getBSONData());
+    mongo::BSONObj                      u = BSON("$set" << mongo::BSONObj(chaos_bson->getBufferPtr()));
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("setCommandTemplate",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "update",
+                                                                 q.jsonString(),
+                                                                 u.jsonString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
+                                  q,
+                                  u,
+                                  true))) {
+      MDBNDA_ERR << boost::str(boost::format("Error setting the template name: %1% for command uid:%2%") % template_name % command_unique_id);
+    }
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::deleteCommandTemplate(const std::string& template_name,
                                                  const std::string& command_unique_id) {
-    int err = 0;
-    try {
-        //create query
-        mongo::BSONObj q = BSON("template_name" << template_name <<
-                                BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("deleteCommandTemplate",
-                                           "delete",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
-                                     q))){
-            MDBNDA_ERR << boost::str(boost::format("Error removing the template name: %1% for command uid:%2%")%template_name%command_unique_id);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+  int err = 0;
+  try {
+    // create query
+    mongo::BSONObj q = BSON("template_name" << template_name << BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("deleteCommandTemplate",
+                                         "delete",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
+                                  q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error removing the template name: %1% for command uid:%2%") % template_name % command_unique_id);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBNodeDataAccess::getCommandTemplate(const std::string& template_name,
-                                              const std::string& command_unique_id,
-                                              chaos::common::data::CDataWrapper **command_template) {
-    int err = 0;
-    mongo::BSONObj result;
-    try {
-        //create query
-        mongo::BSONObj q = BSON("template_name" << template_name <<
-                                BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("getCommandTemplate",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.jsonString()));)
-        
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
-                                      q))){
-            MDBNDA_ERR << boost::str(boost::format("Error searching the template name: %1% for command uid:%2%")%template_name%command_unique_id);
-        } else if(result.isEmpty()) {
-            MDBNDA_ERR << boost::str(boost::format("No template found for template name: %1% and command uid:%2%")%template_name%command_unique_id);
-        } else {
-            //return a new datawrapper with the found content
-            *command_template = new CDataWrapper(result.objdata());
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.getCode();
+int MongoDBNodeDataAccess::getCommandTemplate(const std::string&                  template_name,
+                                              const std::string&                  command_unique_id,
+                                              chaos::common::data::CDataWrapper** command_template) {
+  int            err = 0;
+  mongo::BSONObj result;
+  try {
+    // create query
+    mongo::BSONObj q = BSON("template_name" << template_name << BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << command_unique_id);
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("getCommandTemplate",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.jsonString()));)
+
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
+                                   q))) {
+      MDBNDA_ERR << boost::str(boost::format("Error searching the template name: %1% for command uid:%2%") % template_name % command_unique_id);
+    } else if (result.isEmpty()) {
+      MDBNDA_ERR << boost::str(boost::format("No template found for template name: %1% and command uid:%2%") % template_name % command_unique_id);
+    } else {
+      // return a new datawrapper with the found content
+      *command_template = new CDataWrapper(result.objdata());
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 //! inherited method
-int MongoDBNodeDataAccess::searchCommandTemplate(chaos::common::data::CDataWrapper **result,
-                                                 const std::vector<std::string>& cmd_uid_to_filter,
-                                                 uint32_t last_unique_id,
-                                                 uint32_t page_length) {
-    int err = 0;
-    
-    mongo::BSONObjBuilder   bson_find;
-    mongo::BSONArrayBuilder bson_uid_array_list;
-    mongo::BSONArrayBuilder bson_find_and;
-    SearchResult            paged_result;
-    
-    //compose query
-    
-    //filter on sequence
-    bson_find_and << BSON( "seq" << BSON("$gte"<<last_unique_id));
-    
-    //filter on type
-    for(std::vector<std::string>::const_iterator it = cmd_uid_to_filter.begin();
-        it != cmd_uid_to_filter.end();
-        it++) {
-        bson_uid_array_list << *it;
-    }
-    
-    //compose the or
-    bson_find_and << BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << BSON("$in" << bson_uid_array_list.arr()));
-    bson_find.appendArray("$and", bson_find_and.obj());
-    mongo::BSONObj q = bson_find.obj();
-    mongo::BSONObj p = BSON("template_name" << 1 <<
-                            BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << 1);
-    DEBUG_CODE(MDBNDA_DBG<<log_message("searchCommandTemplate",
+int MongoDBNodeDataAccess::searchCommandTemplate(chaos::common::data::CDataWrapper** result,
+                                                 const std::vector<std::string>&     cmd_uid_to_filter,
+                                                 uint32_t                            last_unique_id,
+                                                 uint32_t                            page_length) {
+  int err = 0;
+
+  mongo::BSONObjBuilder   bson_find;
+  mongo::BSONArrayBuilder bson_uid_array_list;
+  mongo::BSONArrayBuilder bson_find_and;
+  SearchResult            paged_result;
+
+  // compose query
+
+  // filter on sequence
+  bson_find_and << BSON("seq" << BSON("$gte" << last_unique_id));
+
+  // filter on type
+  for (std::vector<std::string>::const_iterator it = cmd_uid_to_filter.begin();
+       it != cmd_uid_to_filter.end();
+       it++) {
+    bson_uid_array_list << *it;
+  }
+
+  // compose the or
+  bson_find_and << BSON(BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << BSON("$in" << bson_uid_array_list.arr()));
+  bson_find.appendArray("$and", bson_find_and.obj());
+  mongo::BSONObj q = bson_find.obj();
+  mongo::BSONObj p = BSON("template_name" << 1 << BatchCommandAndParameterDescriptionkey::BC_UNIQUE_ID << 1);
+  DEBUG_CODE(MDBNDA_DBG << log_message("searchCommandTemplate",
                                        "performPagedQuery",
                                        DATA_ACCESS_LOG_2_ENTRY("Query",
                                                                "Projection",
                                                                q.jsonString(),
                                                                p.jsonString()));)
-    
-    //perform the search for the query page
-    if((err = performPagedQuery(paged_result,
-                                MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
-                                q,
-                                NULL,
-                                NULL,
-                                page_length))) {
-        MDBNDA_ERR << "Error calling performPagedQuery with error" << err;
-    } else {
-        DEBUG_CODE(MDBNDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-        if(paged_result.size()) {
-            *result = new CDataWrapper();
-            for (SearchResultIterator it = paged_result.begin();
-                 it != paged_result.end();
-                 it++) {
-                CDataWrapper cd(it->objdata());
-                (*result)->appendCDataWrapperToArray(cd);
-            }
-            (*result)->finalizeArrayForKey("cmd_tmpl_search_result_page");
+
+  // perform the search for the query page
+  if ((err = performPagedQuery(paged_result,
+                               MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE),
+                               q,
+                               NULL,
+                               NULL,
+                               page_length))) {
+    MDBNDA_ERR << "Error calling performPagedQuery with error" << err;
+  } else {
+    DEBUG_CODE(MDBNDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+    if (paged_result.size()) {
+      *result = new CDataWrapper();
+      for (SearchResultIterator it = paged_result.begin();
+           it != paged_result.end();
+           it++) {
+        if (it->objdata()) {
+          CDataWrapper cd(it->objdata());
+          (*result)->appendCDataWrapperToArray(cd);
         }
+      }
+      (*result)->finalizeArrayForKey("cmd_tmpl_search_result_page");
     }
-    return err;
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::addAgeingManagementDataToNode(const std::string& control_unit_id) {
-    int err = 0;
-    try {
-        uint64_t current_ts = TimingUtil::getTimeStamp();
-        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-        const std::string key_last_checing_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
-        
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id
-                                    << MONGODB_COLLECTION_NODES_AGEING_INFO << BSON("$exists" << false ));
-        
-        mongo::BSONObj update = BSON("$set" << BSON(key_last_checing_time << mongo::Date_t(current_ts) <<
-                                                    key_last_performed_time << mongo::Date_t(current_ts) <<
-                                                    key_processing_ageing << false));
-        
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("completeNodeForAgeingManagement",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("query",
-                                                                   "update",
-                                                                   query.jsonString(),
-                                                                   update.jsonString()));)
-        //remove the field of the document
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     query,
-                                     update))) {
-            MDBNDA_DBG << CHAOS_FORMAT("Error %1% completing NODE %2% with ageing management information", %err%control_unit_id);
-        }
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.errorCode;
+  int err = 0;
+  try {
+    uint64_t          current_ts              = TimingUtil::getTimeStamp();
+    const std::string key_processing_ageing   = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+    const std::string key_last_checing_time   = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+    const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%", % MONGODB_COLLECTION_NODES_AGEING_INFO % MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << control_unit_id
+                                                                  << MONGODB_COLLECTION_NODES_AGEING_INFO << BSON("$exists" << false));
+
+    mongo::BSONObj update = BSON("$set" << BSON(key_last_checing_time << mongo::Date_t(current_ts) << key_last_performed_time << mongo::Date_t(current_ts) << key_processing_ageing << false));
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("completeNodeForAgeingManagement",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("query",
+                                                                 "update",
+                                                                 query.jsonString(),
+                                                                 update.jsonString()));)
+    // remove the field of the document
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  query,
+                                  update))) {
+      MDBNDA_DBG << CHAOS_FORMAT("Error %1% completing NODE %2% with ageing management information", % err % control_unit_id);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
 
 int MongoDBNodeDataAccess::isNodeAlive(const std::string& node_uid, bool& alive) {
-    int err = 0;
-    try {
-        mongo::BSONObj result;
-        mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << node_uid <<
-                                    CHAOS_FORMAT("health_stat.%1%",%NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP) <<
-                                    BSON("$gte" << mongo::Date_t(TimingUtil::getTimestampWithDelay((6*1000)))));
-        
-        DEBUG_CODE(MDBNDA_DBG<<log_message("isNodeAlive",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("query",
-                                                                   query.jsonString()));)
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      query))) {
-            MDBNDA_DBG << CHAOS_FORMAT("Error %1% determinating the alive state for node %2%", %err%node_uid);
-        }
-        alive = (result.isEmpty() == false);
-    } catch (const mongo::DBException &e) {
-        MDBNDA_ERR << e.what();
-        err = -1;
-    } catch (const CException &e) {
-        MDBNDA_ERR << e.what();
-        err = e.errorCode;
+  int err = 0;
+  try {
+    mongo::BSONObj result;
+    mongo::BSONObj query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << node_uid << CHAOS_FORMAT("health_stat.%1%", % NodeHealtDefinitionKey::NODE_HEALT_MDS_TIMESTAMP) << BSON("$gte" << mongo::Date_t(TimingUtil::getTimestampWithDelay((6 * 1000)))));
+
+    DEBUG_CODE(MDBNDA_DBG << log_message("isNodeAlive",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("query",
+                                                                 query.jsonString()));)
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   query))) {
+      MDBNDA_DBG << CHAOS_FORMAT("Error %1% determinating the alive state for node %2%", % err % node_uid);
     }
-    return err;
+    alive = (result.isEmpty() == false);
+  } catch (const mongo::DBException& e) {
+    MDBNDA_ERR << e.what();
+    err = -1;
+  } catch (const CException& e) {
+    MDBNDA_ERR << e.what();
+    err = e.errorCode;
+  }
+  return err;
 }
-//int MongoDBNodeDataAccess::reserveNodeForAgeingManagement(uint64_t& last_sequence_id,
-//                                                          std::string& node_uid_reserved,
-//                                                          uint32_t& node_ageing_time,
-//                                                          uint64_t& last_ageing_perform_time,
-//                                                          uint64_t timeout_for_checking,
-//                                                          uint64_t delay_next_check) {
-//    int err = 0;
-//    SearchResult paged_result;
-//    try {
-//        mongo::BSONObj result_found;
-//        mongo::BSONObjBuilder query_builder;
-//        mongo::BSONArrayBuilder query_ageing_and;
-//        mongo::BSONArrayBuilder query_ageing_or;
+// int MongoDBNodeDataAccess::reserveNodeForAgeingManagement(uint64_t& last_sequence_id,
+//                                                           std::string& node_uid_reserved,
+//                                                           uint32_t& node_ageing_time,
+//                                                           uint64_t& last_ageing_perform_time,
+//                                                           uint64_t timeout_for_checking,
+//                                                           uint64_t delay_next_check) {
+//     int err = 0;
+//     SearchResult paged_result;
+//     try {
+//         mongo::BSONObj result_found;
+//         mongo::BSONObjBuilder query_builder;
+//         mongo::BSONArrayBuilder query_ageing_and;
+//         mongo::BSONArrayBuilder query_ageing_or;
 //
-//        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-//        const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-//        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
-//        //get all node where ageing is > of 0
-//        query_builder << CHAOS_FORMAT("instance_description.%1%",%DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING) << BSON("$gt" << 0);
+//         const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+//         const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+//         const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+//         //get all node where ageing is > of 0
+//         query_builder << CHAOS_FORMAT("instance_description.%1%",%DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING) << BSON("$gt" << 0);
 //
-//        //get all control unit
-//        query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
+//         //get all control unit
+//         query_builder << NodeDefinitionKey::NODE_TYPE << NodeType::NODE_TYPE_CONTROL_UNIT;
 //
-//        //condition on sequence
-//        query_builder << "seq" << BSON("$gt" << (long long)last_sequence_id);
+//         //condition on sequence
+//         query_builder << "seq" << BSON("$gt" << (long long)last_sequence_id);
 //
-//        //select control unit also if it is in checking managemnt but data checking time is old than one minute(it is gone in timeout)
-//        query_ageing_or << BSON(key_processing_ageing << true << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-timeout_for_checking)));
+//         //select control unit also if it is in checking managemnt but data checking time is old than one minute(it is gone in timeout)
+//         query_ageing_or << BSON(key_processing_ageing << true << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-timeout_for_checking)));
 //
-//        //or on previous condition and on checking management == false the last checking date need to be greater that noral chack timeout
-//        query_ageing_or << BSON(key_processing_ageing << false << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-delay_next_check)));
+//         //or on previous condition and on checking management == false the last checking date need to be greater that noral chack timeout
+//         query_ageing_or << BSON(key_processing_ageing << false << key_last_checking_time << BSON("$lte" << mongo::Date_t(TimingUtil::getTimeStamp()-delay_next_check)));
 //
-//        query_builder << "$or" << query_ageing_or.arr();
+//         query_builder << "$or" << query_ageing_or.arr();
 //
 //
-//        mongo::BSONObj  query = query_builder.obj();
-//        // set atomicalli processing ageing to true
-//        mongo::BSONObj  update =  BSON("$set" << BSON(key_processing_ageing << true <<
-//                                                      key_last_checking_time << mongo::Date_t(TimingUtil::getTimeStamp())));
-//        // order getting first cu being the last processed one
-//        mongo::BSONObj  order_by = BSON(key_last_checking_time << 1);
-//        DEBUG_CODE(MDBNDA_DBG<<log_message("reserveNodeForAgeingManagement",
-//                                           "findAndUpdate",
-//                                           DATA_ACCESS_LOG_3_ENTRY("query",
-//                                                                   "update",
-//                                                                   "order_by",
-//                                                                   query.jsonString(),
-//                                                                   update.jsonString(),
-//                                                                   order_by.jsonString()));)
-//        //find the control unit
-//        if((err = connection->findAndModify(result_found,
-//                                            MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-//                                            query,
-//                                            update,
-//                                            false,
-//                                            false,
-//                                            order_by))){
-//            MDBNDA_DBG << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
-//        } else if(result_found.isEmpty() == false && (result_found.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) &&
-//                                                      result_found.hasField(MONGODB_COLLECTION_NODES_AGEING_INFO))) {
-//            //we have control unit
-//            last_sequence_id = (uint64_t)result_found.getField("seq").Long();
-//            node_uid_reserved = result_found.getField(NodeDefinitionKey::NODE_UNIQUE_ID).String();
-//            node_ageing_time = (uint32_t)result_found.getFieldDotted(CHAOS_FORMAT("instance_description.%1%",%DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING)).numberInt();
-//            last_ageing_perform_time = (uint64_t)result_found.getFieldDotted(key_last_performed_time).Date().asInt64();
-//        } else {
-//            last_sequence_id = 0;
-//            node_uid_reserved.clear();
-//            last_ageing_perform_time = 0;
-//            node_ageing_time = 0;
-//        }
+//         mongo::BSONObj  query = query_builder.obj();
+//         // set atomicalli processing ageing to true
+//         mongo::BSONObj  update =  BSON("$set" << BSON(key_processing_ageing << true <<
+//                                                       key_last_checking_time << mongo::Date_t(TimingUtil::getTimeStamp())));
+//         // order getting first cu being the last processed one
+//         mongo::BSONObj  order_by = BSON(key_last_checking_time << 1);
+//         DEBUG_CODE(MDBNDA_DBG<<log_message("reserveNodeForAgeingManagement",
+//                                            "findAndUpdate",
+//                                            DATA_ACCESS_LOG_3_ENTRY("query",
+//                                                                    "update",
+//                                                                    "order_by",
+//                                                                    query.jsonString(),
+//                                                                    update.jsonString(),
+//                                                                    order_by.jsonString()));)
+//         //find the control unit
+//         if((err = connection->findAndModify(result_found,
+//                                             MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+//                                             query,
+//                                             update,
+//                                             false,
+//                                             false,
+//                                             order_by))){
+//             MDBNDA_DBG << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
+//         } else if(result_found.isEmpty() == false && (result_found.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) &&
+//                                                       result_found.hasField(MONGODB_COLLECTION_NODES_AGEING_INFO))) {
+//             //we have control unit
+//             last_sequence_id = (uint64_t)result_found.getField("seq").Long();
+//             node_uid_reserved = result_found.getField(NodeDefinitionKey::NODE_UNIQUE_ID).String();
+//             node_ageing_time = (uint32_t)result_found.getFieldDotted(CHAOS_FORMAT("instance_description.%1%",%DataServiceNodeDefinitionKey::DS_STORAGE_HISTORY_AGEING)).numberInt();
+//             last_ageing_perform_time = (uint64_t)result_found.getFieldDotted(key_last_performed_time).Date().asInt64();
+//         } else {
+//             last_sequence_id = 0;
+//             node_uid_reserved.clear();
+//             last_ageing_perform_time = 0;
+//             node_ageing_time = 0;
+//         }
 //
-//    } catch (const mongo::DBException &e) {
-//        MDBNDA_ERR << e.what();
-//        err = -1;
-//    } catch (const CException &e) {
-//        MDBNDA_ERR << e.what();
-//        err = e.errorCode;
-//    }
-//    return err;
-//}
+//     } catch (const mongo::DBException &e) {
+//         MDBNDA_ERR << e.what();
+//         err = -1;
+//     } catch (const CException &e) {
+//         MDBNDA_ERR << e.what();
+//         err = e.errorCode;
+//     }
+//     return err;
+// }
 //
-//int MongoDBNodeDataAccess::releaseNodeForAgeingManagement(std::string& node_uid,
-//                                                          bool performed) {
-//    int err = 0;
-//    SearchResult paged_result;
-//    try {
-//        mongo::BSONObj result_found;
-//        uint64_t current_ts = TimingUtil::getTimeStamp();
-//        const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
-//        const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
-//        const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
+// int MongoDBNodeDataAccess::releaseNodeForAgeingManagement(std::string& node_uid,
+//                                                           bool performed) {
+//     int err = 0;
+//     SearchResult paged_result;
+//     try {
+//         mongo::BSONObj result_found;
+//         uint64_t current_ts = TimingUtil::getTimeStamp();
+//         const std::string key_processing_ageing = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PROCESSING_AGEING);
+//         const std::string key_last_checking_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_AGEING_LAST_CHECK_DATA);
+//         const std::string key_last_performed_time = CHAOS_FORMAT("%1%.%2%",%MONGODB_COLLECTION_NODES_AGEING_INFO%MONGODB_COLLECTION_NODES_PERFORMED_AGEING);
 //
-//        mongo::BSONObj  query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
-//        // set atomicalli processing ageing to true
-//        mongo::BSONObj  update = BSON("$set" << (performed?BSON(key_processing_ageing << false <<
-//                                                                key_last_checking_time << mongo::Date_t(current_ts) <<
-//                                                                key_last_performed_time << mongo::Date_t(current_ts)):
-//                                                 BSON(key_processing_ageing << false <<
-//                                                      key_last_checking_time << mongo::Date_t(current_ts))));
+//         mongo::BSONObj  query = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << node_uid);
+//         // set atomicalli processing ageing to true
+//         mongo::BSONObj  update = BSON("$set" << (performed?BSON(key_processing_ageing << false <<
+//                                                                 key_last_checking_time << mongo::Date_t(current_ts) <<
+//                                                                 key_last_performed_time << mongo::Date_t(current_ts)):
+//                                                  BSON(key_processing_ageing << false <<
+//                                                       key_last_checking_time << mongo::Date_t(current_ts))));
 //
-//        DEBUG_CODE(MDBNDA_ERR<<log_message("releaseNodeForAgeingManagement",
-//                                           "update",
-//                                           DATA_ACCESS_LOG_2_ENTRY("query",
-//                                                                   "update",
-//                                                                   query.jsonString(),
-//                                                                   update.jsonString()));)
-//        //find the control unit
-//        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-//                                     query,
-//                                     update))) {
-//            MDBNDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
-//        }
-//    } catch (const mongo::DBException &e) {
-//        MDBNDA_ERR << e.what();
-//        err = -1;
-//    } catch (const CException &e) {
-//        MDBNDA_ERR << e.what();
-//        err = e.errorCode;
-//    }
-//    return err;
-//}
+//         DEBUG_CODE(MDBNDA_ERR<<log_message("releaseNodeForAgeingManagement",
+//                                            "update",
+//                                            DATA_ACCESS_LOG_2_ENTRY("query",
+//                                                                    "update",
+//                                                                    query.jsonString(),
+//                                                                    update.jsonString()));)
+//         //find the control unit
+//         if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+//                                      query,
+//                                      update))) {
+//             MDBNDA_ERR << CHAOS_FORMAT("Error %1% fetching the next cheable control unit for ageing", %err);
+//         }
+//     } catch (const mongo::DBException &e) {
+//         MDBNDA_ERR << e.what();
+//         err = -1;
+//     } catch (const CException &e) {
+//         MDBNDA_ERR << e.what();
+//         err = e.errorCode;
+//     }
+//     return err;
+// }
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBScriptDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBScriptDataAccess.cpp
index 14f52c479dac7a5553cf034e63afc679effc2d15..d53c308296db6073f7cb91052e0299efe2151296 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBScriptDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBScriptDataAccess.cpp
@@ -25,9 +25,9 @@
 #include <chaos/common/additional_lib/base64.h>
 #include <chaos/common/utility/TimingUtil.h>
 
-#include <regex>
-#include <boost/foreach.hpp>
 #include <boost/algorithm/string.hpp>
+#include <boost/foreach.hpp>
+#include <regex>
 
 #include <json/json.h>
 
@@ -40,953 +40,930 @@ using namespace chaos::service_common::persistence::mongodb;
 using namespace chaos::metadata_service::persistence::mongodb;
 using namespace chaos::metadata_service::persistence::data_access;
 
-#define SDA_INFO    INFO_LOG(MongoDBScriptDataAccess)
-#define SDA_DBG     DBG_LOG(MongoDBScriptDataAccess)
-#define SDA_ERR     ERR_LOG(MongoDBScriptDataAccess)
+#define SDA_INFO INFO_LOG(MongoDBScriptDataAccess)
+#define SDA_DBG DBG_LOG(MongoDBScriptDataAccess)
+#define SDA_ERR ERR_LOG(MongoDBScriptDataAccess)
 
-static const std::string    ESCAPE_REPLACE_STRING("\\\\&");
-static const std::regex   ESCAPE_REPLACE_SEARCH_REGEXP("([\\^\\.\\$\\|\\(\\)\\[\\]\\*\\+\\?\\/\\\\])");
-static const std::regex   REGEX_EXECUTION_POOL_VALIDATION("[A-Za-z0-9_]+:[A-Za-z0-9\\/_]+");
+static const std::string ESCAPE_REPLACE_STRING("\\\\&");
+static const std::regex  ESCAPE_REPLACE_SEARCH_REGEXP("([\\^\\.\\$\\|\\(\\)\\[\\]\\*\\+\\?\\/\\\\])");
+static const std::regex  REGEX_EXECUTION_POOL_VALIDATION("[A-Za-z0-9_]+:[A-Za-z0-9\\/_]+");
 
-MongoDBScriptDataAccess::MongoDBScriptDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection):
-MongoDBAccessor(_connection),
-ScriptDataAccess(),
-utility_data_access(NULL){}
+MongoDBScriptDataAccess::MongoDBScriptDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection)
+    : MongoDBAccessor(_connection), ScriptDataAccess(), utility_data_access(NULL) {}
 
 MongoDBScriptDataAccess::~MongoDBScriptDataAccess() {}
-int MongoDBScriptDataAccess::insertNewScript(ChaosUniquePtr<chaos::common::data::CDataWrapper>& serialization){
-    int size;
-    int err = 0;
-try{
+int MongoDBScriptDataAccess::insertNewScript(ChaosUniquePtr<chaos::common::data::CDataWrapper>& serialization) {
+  int size;
+  int err = 0;
+  try {
     mongo::BSONObjBuilder builder;
-        long long seq=(long long)TimingUtil::getTimeStamp();
-        if(( err = updateScript(serialization))) {
-            SDA_ERR << "Error updating new script, try new";
-        } else {
-            return err;
-        } 
-        if(serialization->hasKey("seq")){
-            if(serialization->getInt64Value("seq")){
-                seq=serialization->getInt64Value("seq"); // maintain the original sequence
-            }
-        } 
-        builder << "seq" <<seq;
-        
-        mongo::BSONObj u(serialization->getBSONRawData(size));
-        builder.appendElements(u);
-        mongo::BSONObj i = builder.obj();
-        DEBUG_CODE(SDA_DBG<<log_message("insertNewScript",
-                                        "insert",
-                                        DATA_ACCESS_LOG_1_ENTRY("Insert",
-                                                                i));)
-        //inset on database new script description
-      /*  if((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                     i))) {
-            SDA_ERR << "Error creating new script";
-        } else {
-            //add sccript content
-            err = updateScript(serialization);
-        }
+    long long             seq = (long long)TimingUtil::getTimeStamp();
+    if ((err = updateScript(serialization))) {
+      SDA_ERR << "Error updating new script, try new";
+    } else {
+      return err;
+    }
+    if (serialization->hasKey("seq")) {
+      if (serialization->getInt64Value("seq")) {
+        seq = serialization->getInt64Value("seq");  // maintain the original sequence
+      }
+    }
+    builder << "seq" << seq;
+
+    mongo::BSONObj u(serialization->getBSONRawData(size));
+    builder.appendElements(u);
+    mongo::BSONObj i = builder.obj();
+    DEBUG_CODE(SDA_DBG << log_message("insertNewScript",
+                                      "insert",
+                                      DATA_ACCESS_LOG_1_ENTRY("Insert",
+                                                              i));)
+    // inset on database new script description
+    /*  if((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                   i))) {
+          SDA_ERR << "Error creating new script";
+      } else {
+          //add sccript content
+          err = updateScript(serialization);
+      }
 */
-        if(err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),i)){
-            SDA_ERR << "Error inserting new script:"<<err;
-
-        }
-
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+    if (err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT), i)) {
+      SDA_ERR << "Error inserting new script:" << err;
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 };
 
 int MongoDBScriptDataAccess::insertNewScript(Script& script_entry) {
-    int err = 0;
-    int size;
-    uint64_t sequence_id;
-    mongo::BSONObjBuilder builder;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        //start adding new base entry for the script
-        //composed only with name and desription
-        if(script_entry.script_description.name.size() == 0) {
-            SDA_ERR << "Script name is not valid";
-            return -1;
-        }
-        if(script_entry.script_description.description.size() == 0) {
-            SDA_ERR << "Script description is not valid";
-            return -2;
-        }
-        
-        CHAOS_ASSERT(utility_data_access)
-       // NOTE: have a sequence allows to have many scripts with the name that's dangerous
+  int                   err = 0;
+  int                   size;
+  uint64_t              sequence_id;
+  mongo::BSONObjBuilder builder;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    // start adding new base entry for the script
+    // composed only with name and desription
+    if (script_entry.script_description.name.size() == 0) {
+      SDA_ERR << "Script name is not valid";
+      return -1;
+    }
+    if (script_entry.script_description.description.size() == 0) {
+      SDA_ERR << "Script description is not valid";
+      return -2;
+    }
 
-       /* if(utility_data_access->getNextSequenceValue("script", sequence_id)) {
-            SDA_ERR << "Error getting new sequence for node";
-            return err;
-        } else {
-            builder << "seq" << (long long)sequence_id;
-        }
-        */
-       // better have as unique name the timestamp that tracks also when the script was inserted
-       /* builder << CHAOS_SBD_NAME << script_entry.script_description.name
-        << CHAOS_SBD_DESCRIPTION << script_entry.script_description.description
-        <<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE<< script_entry.script_description.language;
-        */
-
-        if(( err = updateScript(script_entry))) {
-            SDA_ERR << "Error updating new script, try inserting";
-        } else {
-            return err;
-        }
+    CHAOS_ASSERT(utility_data_access)
+    // NOTE: have a sequence allows to have many scripts with the name that's dangerous
+
+    /* if(utility_data_access->getNextSequenceValue("script", sequence_id)) {
+         SDA_ERR << "Error getting new sequence for node";
+         return err;
+     } else {
+         builder << "seq" << (long long)sequence_id;
+     }
+     */
+    // better have as unique name the timestamp that tracks also when the script was inserted
+    /* builder << CHAOS_SBD_NAME << script_entry.script_description.name
+     << CHAOS_SBD_DESCRIPTION << script_entry.script_description.description
+     <<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE<< script_entry.script_description.language;
+     */
+
+    if ((err = updateScript(script_entry))) {
+      SDA_ERR << "Error updating new script, try inserting";
+    } else {
+      return err;
+    }
 
-        ScriptSDWrapper s_dw;
-        s_dw.dataWrapped() = script_entry;
-    
-        ChaosUniquePtr<chaos::common::data::CDataWrapper> serialization = s_dw.serialize();
-        
-        if(serialization->hasKey("seq")){
-         builder << "seq" <<(long long)serialization->getInt64Value("seq");
+    ScriptSDWrapper s_dw;
+    s_dw.dataWrapped() = script_entry;
 
-        } else {
-         builder << "seq" <<(long long)TimingUtil::getTimeStamp();
-        }
-        mongo::BSONObj u(serialization->getBSONRawData(size));
-        builder.appendElements(u);
-        mongo::BSONObj i = builder.obj();
-        DEBUG_CODE(SDA_DBG<<log_message("insertNewScript",
-                                        "insert",
-                                        DATA_ACCESS_LOG_1_ENTRY("Insert",
-                                                                i));)
-        //inset on database new script description
-       /* if((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                     i))) {
-            SDA_ERR << "Error creating new script";
-        } else {
-            //add script content
-            err = updateScript(script_entry);
-        }*/
-        if(err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),i)){
-            SDA_ERR << "Error creating new script, err:"<<err;
+    ChaosUniquePtr<chaos::common::data::CDataWrapper> serialization = s_dw.serialize();
 
-        }
+    if (serialization->hasKey("seq")) {
+      builder << "seq" << (long long)serialization->getInt64Value("seq");
 
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
-    }
-    return err;
-}
-int MongoDBScriptDataAccess::updateScript(ChaosUniquePtr<chaos::common::data::CDataWrapper>& serialization) {
-    int err = 0;
-    int size = 0;
-    mongo::BSONObjBuilder query_builder;
-    CHAOS_ASSERT(utility_data_access);
-    std::string description_name=serialization->getStringValue(chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME);
-    uint64_t uid=(long long)TimingUtil::getTimeStamp();
-    if(serialization->hasKey("seq")){
-        uid =serialization->getInt64Value("seq");
     } else {
-        serialization->addInt64Value("seq",uid);
+      builder << "seq" << (long long)TimingUtil::getTimeStamp();
+    }
+    mongo::BSONObj u(serialization->getBSONRawData(size));
+    builder.appendElements(u);
+    mongo::BSONObj i = builder.obj();
+    DEBUG_CODE(SDA_DBG << log_message("insertNewScript",
+                                      "insert",
+                                      DATA_ACCESS_LOG_1_ENTRY("Insert",
+                                                              i));)
+    // inset on database new script description
+    /* if((err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                  i))) {
+         SDA_ERR << "Error creating new script";
+     } else {
+         //add script content
+         err = updateScript(script_entry);
+     }*/
+    if (err = connection->insert(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT), i)) {
+      SDA_ERR << "Error creating new script, err:" << err;
     }
 
-    try {
-        mongo::BSONObj q = BSON("seq"<< (long long)uid<<
-                                chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << description_name);
-        
-        
-        mongo::BSONObj u(serialization->getBSONRawData(size));
-        DEBUG_CODE(SDA_DBG<<log_message("updateScriptContent",
-                                        "update",
-                                        DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                "Update",
-                                                                q,
-                                                                u));)
-        //inset on database new script description
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                     q,
-                                     u,true))) {
-            SDA_ERR << "Error Updating script content";
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
+}
+int MongoDBScriptDataAccess::updateScript(ChaosUniquePtr<chaos::common::data::CDataWrapper>& serialization) {
+  int                   err  = 0;
+  int                   size = 0;
+  mongo::BSONObjBuilder query_builder;
+  CHAOS_ASSERT(utility_data_access);
+  std::string description_name = serialization->getStringValue(chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME);
+  uint64_t    uid              = (long long)TimingUtil::getTimeStamp();
+  if (serialization->hasKey("seq")) {
+    uid = serialization->getInt64Value("seq");
+  } else {
+    serialization->addInt64Value("seq", uid);
+  }
+
+  try {
+    mongo::BSONObj q = BSON("seq" << (long long)uid << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << description_name);
+
+    mongo::BSONObj u(serialization->getBSONRawData(size));
+    DEBUG_CODE(SDA_DBG << log_message("updateScriptContent",
+                                      "update",
+                                      DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                              "Update",
+                                                              q,
+                                                              u));)
+    // inset on database new script description
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                  q,
+                                  u,
+                                  true))) {
+      SDA_ERR << "Error Updating script content";
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 int MongoDBScriptDataAccess::updateScript(Script& script) {
-    ScriptSDWrapper s_dw;
-    s_dw.dataWrapped() = script;
-        
-    ChaosUniquePtr<chaos::common::data::CDataWrapper> serialization = s_dw.serialize();
-    return updateScript(serialization);  
+  ScriptSDWrapper s_dw;
+  s_dw.dataWrapped() = script;
 
+  ChaosUniquePtr<chaos::common::data::CDataWrapper> serialization = s_dw.serialize();
+  return updateScript(serialization);
 }
 int MongoDBScriptDataAccess::searchScript(ChaosUniquePtr<chaos::common::data::CDataWrapper>& script_list,
-                                             const std::string& search_string,
-                                             uint64_t last_sequence_id,
-                                             uint32_t page_length){
-int err = 0;
-    SearchResult paged_result;
-    mongo::BSONObj p = BSON("seq"<<1<<chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME<< 1<<chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_DESCRIPTION<<1 <<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE<<1<<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_GROUP<<1<<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_TARGET<<1);
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::Query q = getNextPagedQuery(last_sequence_id,
-                                           search_string);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("searchScript",
-                                        "performPagedQuery",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                    q,
-                                    &p,
-                                    NULL,
-                                    page_length))) {
-            SDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else {
-            DEBUG_CODE(SDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-            if(paged_result.size()) {
-                for (SearchResultIterator it = paged_result.begin();
-                     it != paged_result.end();
-                     it++) {
-                    CDataWrapper element_found(it->objdata());
-                    script_list->appendCDataWrapperToArray(element_found);
-                                DEBUG_CODE(SDA_DBG << "Result '"<< element_found.getCompliantJSONString();)
-
-                }
-                script_list->finalizeArrayForKey(chaos::MetadataServerApiKey::script::search_script::FOUND_SCRIPT_LIST);
-            }
+                                          const std::string&                                 search_string,
+                                          uint64_t                                           last_sequence_id,
+                                          uint32_t                                           page_length) {
+  int            err = 0;
+  SearchResult   paged_result;
+  mongo::BSONObj p = BSON("seq" << 1 << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << 1 << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_DESCRIPTION << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_GROUP << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_TARGET << 1);
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::Query q = getNextPagedQuery(last_sequence_id,
+                                       search_string);
+
+    DEBUG_CODE(SDA_DBG << log_message("searchScript",
+                                      "performPagedQuery",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                 q,
+                                 &p,
+                                 NULL,
+                                 page_length))) {
+      SDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+      DEBUG_CODE(SDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+      if (paged_result.size()) {
+        for (SearchResultIterator it = paged_result.begin();
+             it != paged_result.end();
+             it++) {
+          if (it->objdata()) {
+            CDataWrapper element_found(it->objdata());
+            script_list->appendCDataWrapperToArray(element_found);
+            DEBUG_CODE(SDA_DBG << "Result '" << element_found.getCompliantJSONString();)
+          }
         }
-        
-        //now all other part of the script are managed with update
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+        script_list->finalizeArrayForKey(chaos::MetadataServerApiKey::script::search_script::FOUND_SCRIPT_LIST);
+      }
     }
-    return err;
+
+    // now all other part of the script are managed with update
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 int MongoDBScriptDataAccess::searchScript(ScriptBaseDescriptionListWrapper& script_list,
-                                          const std::string& search_string,
-                                          uint64_t last_sequence_id,
-                                          uint32_t page_length) {
-    int err = 0;
-    SearchResult paged_result;
-    mongo::BSONObj p = BSON("seq"<<1<<chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME<< 1<<chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_DESCRIPTION<<1 <<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE<<1<<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_GROUP<<1<<chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_TARGET<<1);
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::Query q = getNextPagedQuery(last_sequence_id,
-                                           search_string);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("searchScript",
-                                        "performPagedQuery",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                    q,
-                                    &p,
-                                    NULL,
-                                    page_length))) {
-            SDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else {
-            DEBUG_CODE(SDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-            if(paged_result.size()) {
-                for (SearchResultIterator it = paged_result.begin();
-                     it != paged_result.end();
-                     it++) {
-                    CDataWrapper element_found(it->objdata());
-                    script_list.add(&element_found);
-
-                }
-            }
+                                          const std::string&                search_string,
+                                          uint64_t                          last_sequence_id,
+                                          uint32_t                          page_length) {
+  int            err = 0;
+  SearchResult   paged_result;
+  mongo::BSONObj p = BSON("seq" << 1 << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << 1 << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_DESCRIPTION << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_GROUP << 1 << chaos::ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_TARGET << 1);
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::Query q = getNextPagedQuery(last_sequence_id,
+                                       search_string);
+
+    DEBUG_CODE(SDA_DBG << log_message("searchScript",
+                                      "performPagedQuery",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                 q,
+                                 &p,
+                                 NULL,
+                                 page_length))) {
+      SDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+      DEBUG_CODE(SDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+      if (paged_result.size()) {
+        for (SearchResultIterator it = paged_result.begin();
+             it != paged_result.end();
+             it++) {
+          CDataWrapper element_found(it->objdata());
+          script_list.add(&element_found);
         }
-        
-        //now all other part of the script are managed with update
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+      }
     }
-    return err;
+
+    // now all other part of the script are managed with update
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 //! Inherited Method
-int MongoDBScriptDataAccess::addScriptInstance(const uint64_t seq,
+int MongoDBScriptDataAccess::addScriptInstance(const uint64_t     seq,
                                                const std::string& script_name,
                                                const std::string& instance_name) {
-    CHAOS_ASSERT(node_data_access)
-    int err = 0;
-    try {
-        CDataWrapper node_description;
-        node_description.addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, instance_name);
-        node_description.addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-        node_description.addStringValue(chaos::NodeDefinitionKey::NODE_SUB_TYPE, chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
-        node_description.addStringValue(chaos::NodeDefinitionKey::NODE_GROUP_SET, script_name);
-        node_description.addInt64Value("script_seq", seq);
-        //now all other part of the script are managed with update
-        if((err = node_data_access->insertNewNode(node_description))){
-            return err;
-        }
-        
-        mongo::Query q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID<< instance_name<<
-                              chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name<<
-                              "script_seq" << (long long)seq);
-        //add base instance information control control unit implementation
-        mongo::BSONObj u = BSON("$set" << BSON("script_bind_type" << ScriptBindTypeDisable <<
-                                               "instance_description" << BSON("control_unit_implementation" << "ScriptableExecutionUnit")));
-        
-        DEBUG_CODE(SDA_DBG<<log_message("addScriptInstance",
-                                        "update",
-                                        DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                "Update",
-                                                                q,
-                                                                u));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q, u))){
-            SDA_ERR << "Error updating script instance node with default instance data" << err;
-            return err;
-        }
-        
-        //we have the script now get the dataset and attach it to the instance
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+  CHAOS_ASSERT(node_data_access)
+  int err = 0;
+  try {
+    CDataWrapper node_description;
+    node_description.addStringValue(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, instance_name);
+    node_description.addStringValue(chaos::NodeDefinitionKey::NODE_TYPE, chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    node_description.addStringValue(chaos::NodeDefinitionKey::NODE_SUB_TYPE, chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
+    node_description.addStringValue(chaos::NodeDefinitionKey::NODE_GROUP_SET, script_name);
+    node_description.addInt64Value("script_seq", seq);
+    // now all other part of the script are managed with update
+    if ((err = node_data_access->insertNewNode(node_description))) {
+      return err;
+    }
+
+    mongo::Query q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << instance_name << chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name << "script_seq" << (long long)seq);
+    // add base instance information control control unit implementation
+    mongo::BSONObj u = BSON("$set" << BSON("script_bind_type" << ScriptBindTypeDisable << "instance_description" << BSON("control_unit_implementation"
+                                                                                                                         << "ScriptableExecutionUnit")));
+
+    DEBUG_CODE(SDA_DBG << log_message("addScriptInstance",
+                                      "update",
+                                      DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                              "Update",
+                                                              q,
+                                                              u));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q, u))) {
+      SDA_ERR << "Error updating script instance node with default instance data" << err;
+      return err;
     }
-    return err;
+
+    // we have the script now get the dataset and attach it to the instance
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBScriptDataAccess::updateBindType(const chaos::service_common::data::script::ScriptBaseDescription& script_base_descrition,
-                                            const chaos::service_common::data::script::ScriptInstance& instance) {
-    CHAOS_ASSERT(node_data_access)
-    int err = 0;
-    try {
-        mongo::Query q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID<< instance.instance_name<<
-                              chaos::NodeDefinitionKey::NODE_GROUP_SET << script_base_descrition.name<<
-                              "script_seq" << (long long)script_base_descrition.unique_id);
-        mongo::BSONObj u;
-        if(instance.bind_type == ScriptBindTypeUnitServer) {
-            if(instance.bind_node.size() == 0) {SDA_ERR << "Invalid bind node name";return -1;}
-            u = BSON("$set" << BSON("script_bind_type" << (int32_t)instance.bind_type <<
-                                    CHAOS_FORMAT("instance_description.%1%",%chaos::NodeDefinitionKey::NODE_PARENT) << instance.bind_node));
-        } else {
-            u = BSON("$set" << BSON("script_bind_type" << (int32_t)instance.bind_type));
-        }
-        DEBUG_CODE(SDA_DBG<<log_message("addScriptInstance",
-                                        "update",
-                                        DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                "Update",
-                                                                q,
-                                                                u));)
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q, u))){
-            SDA_ERR << "Error updating script instance node with default instance data" << err;
-            return err;
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                            const chaos::service_common::data::script::ScriptInstance&        instance) {
+  CHAOS_ASSERT(node_data_access)
+  int err = 0;
+  try {
+    mongo::Query   q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << instance.instance_name << chaos::NodeDefinitionKey::NODE_GROUP_SET << script_base_descrition.name << "script_seq" << (long long)script_base_descrition.unique_id);
+    mongo::BSONObj u;
+    if (instance.bind_type == ScriptBindTypeUnitServer) {
+      if (instance.bind_node.size() == 0) {
+        SDA_ERR << "Invalid bind node name";
+        return -1;
+      }
+      u = BSON("$set" << BSON("script_bind_type" << (int32_t)instance.bind_type << CHAOS_FORMAT("instance_description.%1%", % chaos::NodeDefinitionKey::NODE_PARENT) << instance.bind_node));
+    } else {
+      u = BSON("$set" << BSON("script_bind_type" << (int32_t)instance.bind_type));
+    }
+    DEBUG_CODE(SDA_DBG << log_message("addScriptInstance",
+                                      "update",
+                                      DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                              "Update",
+                                                              q,
+                                                              u));)
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES), q, u))) {
+      SDA_ERR << "Error updating script instance node with default instance data" << err;
+      return err;
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 //! Inherited Method
-int MongoDBScriptDataAccess::removeScriptInstance(const uint64_t seq,
+int MongoDBScriptDataAccess::removeScriptInstance(const uint64_t     seq,
                                                   const std::string& script_name,
                                                   const std::string& instance_name) {
-    CHAOS_ASSERT(node_data_access)
-    int err = 0;
-    try {
-        //now all other part of the script are managed with update
-        mongo::Query q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID<< instance_name<<
-                              chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name<<
-                              "script_seq" << (long long)seq);
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q))) {
-            SDA_ERR << CHAOS_FORMAT("Error removing instance %1% for script %2% with code %3%", %instance_name%script_name%err);
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+  CHAOS_ASSERT(node_data_access)
+  int err = 0;
+  try {
+    // now all other part of the script are managed with update
+    mongo::Query q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << instance_name << chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name << "script_seq" << (long long)seq);
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q))) {
+      SDA_ERR << CHAOS_FORMAT("Error removing instance %1% for script %2% with code %3%", % instance_name % script_name % err);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBScriptDataAccess::searchScriptInstance(std::vector<ScriptInstance>& instance_list,
-                                                  const std::string& script_name,
-                                                  const std::string& search_string,
-                                                  uint64_t start_sequence_id,
-                                                  uint32_t page_length) {
-    int err = 0;
-    SearchResult paged_result;
-    try {
-        mongo::Query q = getNextPagedQueryForInstance(start_sequence_id,
-                                                      script_name,
-                                                      search_string);
-        DEBUG_CODE(SDA_DBG<<log_message("searchScriptInstance",
-                                        "performPagedQuery",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                    q,
-                                    NULL,
-                                    NULL,
-                                    page_length))) {
-            SDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else {
-            DEBUG_CODE(SDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-            if(paged_result.size()) {
-                for (SearchResultIterator it = paged_result.begin();
-                     it != paged_result.end();
-                     it++) {
-                    if(it->hasField("seq") &&
-                       it->hasField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)){
-                        ScriptInstance instance;
-                        instance.instance_seq = (uint64_t)it->getField("seq").Long();
-                        instance.instance_name = it->getField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID).String();
-                        mongo::BSONElement bte = it->getFieldDotted("script_bind_type");
-                        instance.bind_type = bte.ok()?static_cast<ScriptBindType>(bte.numberInt()):ScriptBindTypeDisable;
-                        mongo::BSONElement bne = it->getFieldDotted(CHAOS_FORMAT("instance_description.%1%",%NodeDefinitionKey::NODE_PARENT));
-                        instance.bind_node = bne.ok()?bne.String():"";
-                        instance_list.push_back(instance);
-                    }
-                }
-            }
+                                                  const std::string&           script_name,
+                                                  const std::string&           search_string,
+                                                  uint64_t                     start_sequence_id,
+                                                  uint32_t                     page_length) {
+  int          err = 0;
+  SearchResult paged_result;
+  try {
+    mongo::Query q = getNextPagedQueryForInstance(start_sequence_id,
+                                                  script_name,
+                                                  search_string);
+    DEBUG_CODE(SDA_DBG << log_message("searchScriptInstance",
+                                      "performPagedQuery",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                 q,
+                                 NULL,
+                                 NULL,
+                                 page_length))) {
+      SDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+      DEBUG_CODE(SDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+      if (paged_result.size()) {
+        for (SearchResultIterator it = paged_result.begin();
+             it != paged_result.end();
+             it++) {
+          if (it->hasField("seq") &&
+              it->hasField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID)) {
+            ScriptInstance instance;
+            instance.instance_seq  = (uint64_t)it->getField("seq").Long();
+            instance.instance_name = it->getField(chaos::NodeDefinitionKey::NODE_UNIQUE_ID).String();
+            mongo::BSONElement bte = it->getFieldDotted("script_bind_type");
+            instance.bind_type     = bte.ok() ? static_cast<ScriptBindType>(bte.numberInt()) : ScriptBindTypeDisable;
+            mongo::BSONElement bne = it->getFieldDotted(CHAOS_FORMAT("instance_description.%1%", % NodeDefinitionKey::NODE_PARENT));
+            instance.bind_node     = bne.ok() ? bne.String() : "";
+            instance_list.push_back(instance);
+          }
         }
-        
-        //now all other part of the script are managed with update
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+      }
     }
-    return err;
+
+    // now all other part of the script are managed with update
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBScriptDataAccess::getScriptInstance(const std::string& script_instance,
-                                               const uint64_t& seq,
-                                               bool& found,
-                                               ScriptInstance& instance) {
-    int err = 0;
-    mongo::BSONObj element_found;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        found = false;
-        mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << script_instance
-                                << "seq" << (long long)seq);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("getScriptInstance",
-                                        "findOne",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = connection->findOne(element_found,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                      q))) {
-            SDA_ERR << CHAOS_FORMAT("Error fetching instance %1%[%2%] with error [%3%]", %script_instance%seq%err);
-        } else {
-            if((found = !element_found.isEmpty())) {
-                instance.instance_name = script_instance;
-                instance.instance_seq = seq;
-                mongo::BSONElement bte = element_found.getFieldDotted("script_bind_type");
-                instance.bind_type = bte.ok()?static_cast<ScriptBindType>(bte.numberInt()):ScriptBindTypeDisable;
-                mongo::BSONElement bne = element_found.getFieldDotted(CHAOS_FORMAT("instance_description.%1%",%NodeDefinitionKey::NODE_PARENT));
-                instance.bind_node = bne.ok()?bne.String():"";
-            } else {
-                SDA_ERR << CHAOS_FORMAT("The instance %1%[%2%] is empty", %script_instance%seq);
-                
-            }
-        }
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                               const uint64_t&    seq,
+                                               bool&              found,
+                                               ScriptInstance&    instance) {
+  int            err = 0;
+  mongo::BSONObj element_found;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    found            = false;
+    mongo::BSONObj q = BSON(NodeDefinitionKey::NODE_UNIQUE_ID << script_instance
+                                                              << "seq" << (long long)seq);
+
+    DEBUG_CODE(SDA_DBG << log_message("getScriptInstance",
+                                      "findOne",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = connection->findOne(element_found,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                   q))) {
+      SDA_ERR << CHAOS_FORMAT("Error fetching instance %1%[%2%] with error [%3%]", % script_instance % seq % err);
+    } else {
+      if ((found = !element_found.isEmpty())) {
+        instance.instance_name = script_instance;
+        instance.instance_seq  = seq;
+        mongo::BSONElement bte = element_found.getFieldDotted("script_bind_type");
+        instance.bind_type     = bte.ok() ? static_cast<ScriptBindType>(bte.numberInt()) : ScriptBindTypeDisable;
+        mongo::BSONElement bne = element_found.getFieldDotted(CHAOS_FORMAT("instance_description.%1%", % NodeDefinitionKey::NODE_PARENT));
+        instance.bind_node     = bne.ok() ? bne.String() : "";
+      } else {
+        SDA_ERR << CHAOS_FORMAT("The instance %1%[%2%] is empty", % script_instance % seq);
+      }
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
-int MongoDBScriptDataAccess::loadScript(const uint64_t unique_id,
-                                           const std::string& name,
-                                           ChaosUniquePtr<chaos::common::data::CDataWrapper>& script,
-                                           bool load_source_code){
-int err = 0;
-    mongo::BSONObj element_found;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::BSONObj q = BSON("seq" << (long long)unique_id
-                                << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("loadScript",
-                                        "findOne",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = connection->findOne(element_found,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                      q))) {
-            SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", %unique_id%name%err);
-        } else {
-            if(element_found.isEmpty()) {
-                SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", %unique_id%name);
-            } else {
-                // fill script with base description
-                CDataWrapper element_found_cdw(element_found.objdata());
-                element_found_cdw.copyAllTo(*script.get());
-            }
-        }
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+int MongoDBScriptDataAccess::loadScript(const uint64_t                                     unique_id,
+                                        const std::string&                                 name,
+                                        ChaosUniquePtr<chaos::common::data::CDataWrapper>& script,
+                                        bool                                               load_source_code) {
+  int            err = 0;
+  mongo::BSONObj element_found;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::BSONObj q = BSON("seq" << (long long)unique_id
+                                  << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
+
+    DEBUG_CODE(SDA_DBG << log_message("loadScript",
+                                      "findOne",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = connection->findOne(element_found,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                   q))) {
+      SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", % unique_id % name % err);
+    } else {
+      if (element_found.isEmpty()) {
+        SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", % unique_id % name);
+      } else {
+        // fill script with base description
+        CDataWrapper element_found_cdw(element_found.objdata());
+        element_found_cdw.copyAllTo(*script.get());
+      }
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
-                 
-int MongoDBScriptDataAccess::loadScript(const uint64_t unique_id,
-                                        const std::string& name,
+
+int MongoDBScriptDataAccess::loadScript(const uint64_t                               unique_id,
+                                        const std::string&                           name,
                                         chaos::service_common::data::script::Script& script,
-                                        bool load_source_code) {
-    int err = 0;
-    mongo::BSONObj element_found;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::BSONObj q = BSON("seq" << (long long)unique_id
-                                << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("loadScript",
-                                        "findOne",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = connection->findOne(element_found,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                      q))) {
-            SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", %unique_id%name%err);
-        } else {
-            if(element_found.isEmpty()) {
-                SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", %unique_id%name);
-            } else {
-                // fill script with base description
-                ScriptSDWrapper s_dw;
-                CDataWrapper element_found_cdw(element_found.objdata());
-                s_dw.deserialize(&element_found_cdw);
-                script = s_dw.dataWrapped();
-            }
-        }
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                        bool                                         load_source_code) {
+  int            err = 0;
+  mongo::BSONObj element_found;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::BSONObj q = BSON("seq" << (long long)unique_id
+                                  << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
+
+    DEBUG_CODE(SDA_DBG << log_message("loadScript",
+                                      "findOne",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = connection->findOne(element_found,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                   q))) {
+      SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", % unique_id % name % err);
+    } else {
+      if (element_found.isEmpty()) {
+        SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", % unique_id % name);
+      } else {
+        // fill script with base description
+        ScriptSDWrapper s_dw;
+        CDataWrapper    element_found_cdw(element_found.objdata());
+        s_dw.deserialize(&element_found_cdw);
+        script = s_dw.dataWrapped();
+      }
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBScriptDataAccess::deleteScript(const uint64_t unique_id,
+int MongoDBScriptDataAccess::deleteScript(const uint64_t     unique_id,
                                           const std::string& name) {
-    int err = 0;
-    mongo::BSONObj element_found;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::BSONObj q_script;
-        if(unique_id==0){
-         q_script= BSON( chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
-        } else {
-         q_script= BSON("seq" << (long long)unique_id
-                                       <<chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
-          
-        }
-        mongo::BSONObj q_instance = BSON("script_seq" << (long long)unique_id
-                                         << chaos::NodeDefinitionKey::NODE_GROUP_SET << name);
-        DEBUG_CODE(SDA_DBG<<log_message("deleteScript",
-                                        "remove[instance]",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q_instance));)
-        //inset on database new script description
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q_instance))) {
-            SDA_ERR << CHAOS_FORMAT("Error removing instance for script %1%[%2%] with error [%3%]", %unique_id%name%err);
-        } 
-        
-        DEBUG_CODE(SDA_DBG<<log_message("deleteScript",
-                                        "remove[script]",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q_script));)
-        //inset on database new script description
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                        q_script))) {
-            SDA_ERR << CHAOS_FORMAT("Error removing script %1%[%2%] with error [%3%]", %unique_id%name%err);
-        }
-        
-        
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+  int            err = 0;
+  mongo::BSONObj element_found;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::BSONObj q_script;
+    if (unique_id == 0) {
+      q_script = BSON(chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
+    } else {
+      q_script = BSON("seq" << (long long)unique_id
+                            << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << name);
+    }
+    mongo::BSONObj q_instance = BSON("script_seq" << (long long)unique_id
+                                                  << chaos::NodeDefinitionKey::NODE_GROUP_SET << name);
+    DEBUG_CODE(SDA_DBG << log_message("deleteScript",
+                                      "remove[instance]",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q_instance));)
+    // inset on database new script description
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q_instance))) {
+      SDA_ERR << CHAOS_FORMAT("Error removing instance for script %1%[%2%] with error [%3%]", % unique_id % name % err);
+    }
+
+    DEBUG_CODE(SDA_DBG << log_message("deleteScript",
+                                      "remove[script]",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q_script));)
+    // inset on database new script description
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                  q_script))) {
+      SDA_ERR << CHAOS_FORMAT("Error removing script %1%[%2%] with error [%3%]", % unique_id % name % err);
     }
-    return err;
+
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBScriptDataAccess::getScriptForExecutionPoolPathList(const ChaosStringVector& pool_path,
+int MongoDBScriptDataAccess::getScriptForExecutionPoolPathList(const ChaosStringVector&            pool_path,
                                                                std::vector<ScriptBaseDescription>& script_found,
-                                                               uint64_t last_sequence_id,
-                                                               uint32_t max_result) {
-    int err = 0;
-    //given a list of execution pool path the list of the script is returned. Every script into the
-    //list can belog to one or more of the path present in the input list
-    //the key execution_pool_list need to have one or more of the value present in the list "field : { $in : array }"
-    SearchResult paged_result;
-    mongo::BSONArrayBuilder bson_find_in;
-    try {
-        BOOST_FOREACH( std::string pool_path_element, pool_path ) {
-            if(std::regex_match(pool_path_element,
-                                  REGEX_EXECUTION_POOL_VALIDATION) == false) continue;
-            
-            //escape xecution ppool path for earchunder the path
-            const std::string result = std::regex_replace(pool_path_element,
-                                                            ESCAPE_REPLACE_SEARCH_REGEXP,
-                                                            ESCAPE_REPLACE_STRING,
-                                                             std::regex_constants::match_default |  std::regex_constants::format_sed);
-            bson_find_in.appendRegex(CHAOS_FORMAT("%1%[A-Za-z0-9\\/_]*",%result));
-        }
-        mongo::Query q = BSON("execution_pool_list" << BSON("$in"<< bson_find_in.arr()) <<
-                              "seq" << BSON("$gt" << (long long)last_sequence_id));
-        //ordered by sequence
-        q = q.sort(BSON("seq"<< 1));
-        
-        DEBUG_CODE(SDA_DBG<<log_message("getScriptForExecutionPoolPathList",
-                                        "find",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        connection->findN(paged_result,
-                          MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                          q,
-                          max_result);
-        if(paged_result.size()) {
-            ScriptBaseDescriptionSDWrapper scrpt_desc_dw;
-            //iterate for each elemente deserializing it with the data wrapper
-            BOOST_FOREACH( mongo::BSONObj element, paged_result ) {
-                CDataWrapper dw(element.objdata());
-                scrpt_desc_dw.deserialize(&dw);
-                script_found.push_back(scrpt_desc_dw.dataWrapped());
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                                               uint64_t                            last_sequence_id,
+                                                               uint32_t                            max_result) {
+  int err = 0;
+  // given a list of execution pool path the list of the script is returned. Every script into the
+  // list can belog to one or more of the path present in the input list
+  // the key execution_pool_list need to have one or more of the value present in the list "field : { $in : array }"
+  SearchResult            paged_result;
+  mongo::BSONArrayBuilder bson_find_in;
+  try {
+    BOOST_FOREACH (std::string pool_path_element, pool_path) {
+      if (std::regex_match(pool_path_element,
+                           REGEX_EXECUTION_POOL_VALIDATION) == false) continue;
+
+      // escape xecution ppool path for earchunder the path
+      const std::string result = std::regex_replace(pool_path_element,
+                                                    ESCAPE_REPLACE_SEARCH_REGEXP,
+                                                    ESCAPE_REPLACE_STRING,
+                                                    std::regex_constants::match_default | std::regex_constants::format_sed);
+      bson_find_in.appendRegex(CHAOS_FORMAT("%1%[A-Za-z0-9\\/_]*", % result));
     }
-    
-    return err;
-}
+    mongo::Query q = BSON("execution_pool_list" << BSON("$in" << bson_find_in.arr()) << "seq" << BSON("$gt" << (long long)last_sequence_id));
+    // ordered by sequence
+    q = q.sort(BSON("seq" << 1));
+
+    DEBUG_CODE(SDA_DBG << log_message("getScriptForExecutionPoolPathList",
+                                      "find",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    connection->findN(paged_result,
+                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                      q,
+                      max_result);
+    if (paged_result.size()) {
+      ScriptBaseDescriptionSDWrapper scrpt_desc_dw;
+      // iterate for each elemente deserializing it with the data wrapper
+      BOOST_FOREACH (mongo::BSONObj element, paged_result) {
+        CDataWrapper dw(element.objdata());
+        scrpt_desc_dw.deserialize(&dw);
+        script_found.push_back(scrpt_desc_dw.dataWrapped());
+      }
+    }
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
 
+  return err;
+}
 
 int MongoDBScriptDataAccess::getUnscheduledInstanceForJob(const chaos::service_common::data::script::ScriptBaseDescription& script,
-                                                          ChaosStringVector& instance_found_list,
-                                                          uint32_t timeout,
-                                                          uint32_t max_result) {
-    int err = 0;
-    SearchResult paged_result;
-    mongo::BSONArrayBuilder bson_find_and;
-    mongo::BSONArrayBuilder bson_find_hb_or;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        //calucate the millisecond that we want to consider timeout
-        mongo::Date_t start_timeout_date(TimingUtil::getTimeStamp() - timeout);
-        bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_GROUP_SET << script.name);
-        bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
-        bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_SUB_TYPE << chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
-        bson_find_and << BSON("script_seq" << (long long)script.unique_id);
-        bson_find_and << BSON("instance_description.auto_load"  << true);
-        bson_find_and << BSON("script_bind_type"  << ScriptBindTypeAuto);
-        bson_find_hb_or << BSON(CHAOS_FORMAT("health_stat.%1%",%chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << BSON("$exists" << true << "$lt" << start_timeout_date));
-        bson_find_hb_or << BSON(CHAOS_FORMAT("health_stat.%1%",%chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << BSON("$exists" << false));
-        bson_find_and << BSON("$or" << bson_find_hb_or.arr());
-        
-        mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
-        
-        DEBUG_CODE(SDA_DBG<<log_message("instanceHeartbeat",
-                                        "findN",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        connection->findN(paged_result,
-                          MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                          q,
-                          max_result);
-        
-        //!return instance
-        BOOST_FOREACH( mongo::BSONObj element, paged_result ) {
-            if(element.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) == false) continue;
-            instance_found_list.push_back(element.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                                          ChaosStringVector&                                                instance_found_list,
+                                                          uint32_t                                                          timeout,
+                                                          uint32_t                                                          max_result) {
+  int                     err = 0;
+  SearchResult            paged_result;
+  mongo::BSONArrayBuilder bson_find_and;
+  mongo::BSONArrayBuilder bson_find_hb_or;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    // calucate the millisecond that we want to consider timeout
+    mongo::Date_t start_timeout_date(TimingUtil::getTimeStamp() - timeout);
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_GROUP_SET << script.name);
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT);
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_SUB_TYPE << chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT);
+    bson_find_and << BSON("script_seq" << (long long)script.unique_id);
+    bson_find_and << BSON("instance_description.auto_load" << true);
+    bson_find_and << BSON("script_bind_type" << ScriptBindTypeAuto);
+    bson_find_hb_or << BSON(CHAOS_FORMAT("health_stat.%1%", % chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << BSON("$exists" << true << "$lt" << start_timeout_date));
+    bson_find_hb_or << BSON(CHAOS_FORMAT("health_stat.%1%", % chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << BSON("$exists" << false));
+    bson_find_and << BSON("$or" << bson_find_hb_or.arr());
+
+    mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
+
+    DEBUG_CODE(SDA_DBG << log_message("instanceHeartbeat",
+                                      "findN",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    connection->findN(paged_result,
+                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                      q,
+                      max_result);
+
+    //! return instance
+    BOOST_FOREACH (mongo::BSONObj element, paged_result) {
+      if (element.hasField(NodeDefinitionKey::NODE_UNIQUE_ID) == false) continue;
+      instance_found_list.push_back(element.getStringField(NodeDefinitionKey::NODE_UNIQUE_ID));
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-
-int MongoDBScriptDataAccess::reserveInstanceForScheduling(bool& reserverd,
+int MongoDBScriptDataAccess::reserveInstanceForScheduling(bool&              reserverd,
                                                           const std::string& instance_uid,
                                                           const std::string& unit_server_parent,
-                                                          uint32_t timeout) {
-    int err = 0;
-    //we need to use find adn update to perform prenotation of the instance uid, the rule are
-    // instance is in timeout of not have the heartbeat
-    mongo::BSONObj result;
-    mongo::BSONArrayBuilder bson_find_and;
-    mongo::BSONArrayBuilder bson_find_hb_or;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        reserverd = false;
-        
-        //unique id rule
-        bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << instance_uid);
-        bson_find_and << BSON("script_bind_type"  << ScriptBindTypeAuto);
-        //timeout rule
-        uint64_t now = TimingUtil::getTimeStamp();
-        mongo::Date_t start_timeout_date(now + timeout); //date need to be in the future because we need to reserve it
-        bson_find_hb_or << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << true << "$lt" << start_timeout_date));
-        bson_find_hb_or << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << false));
-        bson_find_and << BSON("$or" << bson_find_hb_or.arr());
-        
-        mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
-        //the reservation is done using updateing the heartbeat and unit server alias
-        mongo::BSONObj u = BSON("$set" << BSON(CHAOS_FORMAT("instance_description.%1%",%chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_parent <<
-                                               CHAOS_FORMAT("health_stat.%1%",%chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << mongo::Date_t(now)));
-        
-        DEBUG_CODE(SDA_DBG<<log_message("instanceHeartbeat",
-                                        "update",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = connection->findAndModify(result,
-                                            MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                            q,
-                                            u))){
-            SDA_ERR << CHAOS_FORMAT("Error executin reservation on script instance %1% with error %2%", %instance_uid%err);
-        } else {
-            reserverd = (result.isEmpty() == false);
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                                          uint32_t           timeout) {
+  int err = 0;
+  // we need to use find adn update to perform prenotation of the instance uid, the rule are
+  //  instance is in timeout of not have the heartbeat
+  mongo::BSONObj          result;
+  mongo::BSONArrayBuilder bson_find_and;
+  mongo::BSONArrayBuilder bson_find_hb_or;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    reserverd = false;
+
+    // unique id rule
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << instance_uid);
+    bson_find_and << BSON("script_bind_type" << ScriptBindTypeAuto);
+    // timeout rule
+    uint64_t      now = TimingUtil::getTimeStamp();
+    mongo::Date_t start_timeout_date(now + timeout);  // date need to be in the future because we need to reserve it
+    bson_find_hb_or << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << true << "$lt" << start_timeout_date));
+    bson_find_hb_or << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << false));
+    bson_find_and << BSON("$or" << bson_find_hb_or.arr());
+
+    mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
+    // the reservation is done using updateing the heartbeat and unit server alias
+    mongo::BSONObj u = BSON("$set" << BSON(CHAOS_FORMAT("instance_description.%1%", % chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_parent << CHAOS_FORMAT("health_stat.%1%", % chaos::NodeHealtDefinitionKey::NODE_HEALT_TIMESTAMP) << mongo::Date_t(now)));
+
+    DEBUG_CODE(SDA_DBG << log_message("instanceHeartbeat",
+                                      "update",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = connection->findAndModify(result,
+                                         MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                         q,
+                                         u))) {
+      SDA_ERR << CHAOS_FORMAT("Error executin reservation on script instance %1% with error %2%", % instance_uid % err);
+    } else {
+      reserverd = (result.isEmpty() == false);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBScriptDataAccess::copyScriptDatasetAndContentToInstance(const chaos::service_common::data::script::ScriptBaseDescription& script,
-                                                                   const std::string& script_instance) {
-    int err = 0;
-    mongo::BSONObj script_found;
-    mongo::BSONObj instance_found;
-    
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        mongo::BSONObj q = BSON("seq" << (long long)script.unique_id
-                                << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << script.name);
-        
-        DEBUG_CODE(SDA_DBG<<log_message("copyScriptDatasetToInstance",
-                                        "findOne[script]",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = connection->findOne(script_found,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
-                                      q))) {
-            SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", %script.unique_id%script.name%err);
+                                                                   const std::string&                                                script_instance) {
+  int            err = 0;
+  mongo::BSONObj script_found;
+  mongo::BSONObj instance_found;
+
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    mongo::BSONObj q = BSON("seq" << (long long)script.unique_id
+                                  << chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME << script.name);
+
+    DEBUG_CODE(SDA_DBG << log_message("copyScriptDatasetToInstance",
+                                      "findOne[script]",
+                                      DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                              q));)
+    // inset on database new script description
+    if ((err = connection->findOne(script_found,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SCRIPT),
+                                   q))) {
+      SDA_ERR << CHAOS_FORMAT("Error executin query for load script %1%[%2%] with error [%3%]", % script.unique_id % script.name % err);
+    } else {
+      if (script_found.isEmpty()) {
+        SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", % script.unique_id % script.name);
+      } else {
+        // check the dataset presence within th script
+        if (script_found.hasElement(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION) == false) {
+          err = -100;
+          SDA_ERR << "The script ans't any dataset configured";
         } else {
-            if(script_found.isEmpty()) {
-                SDA_ERR << CHAOS_FORMAT("The script %1%[%2%] has not been found", %script.unique_id%script.name);
+          // now we need to search the instance and verify that it si conencted to the script so we need one query bson objet
+          q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << script_instance << chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT << chaos::NodeDefinitionKey::NODE_SUB_TYPE << chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT << chaos::NodeDefinitionKey::NODE_GROUP_SET << script.name << "script_seq" << (long long)script.unique_id);
+
+          DEBUG_CODE(SDA_DBG << log_message("copyScriptDatasetToInstance",
+                                            "findOne[instance for script]",
+                                            DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                    q));)
+
+          if ((err = connection->findOne(instance_found,
+                                         MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                         q))) {
+            SDA_ERR << CHAOS_FORMAT("Error executin query for load instance %1% for script %2%[%3%] with error [%4%]", % script_instance % script.unique_id % script.name % err);
+          } else {
+            if (instance_found.isEmpty()) {
+              SDA_ERR << CHAOS_FORMAT("The instance %1% for script %2%[%3%] has not been found", % script.name % script_instance % script.unique_id);
             } else {
-                //check the dataset presence within th script
-                if(script_found.hasElement(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION) == false) {
-                    err = -100;
-                    SDA_ERR << "The script ans't any dataset configured";
-                } else {
-                    //now we need to search the instance and verify that it si conencted to the script so we need one query bson objet
-                    q = BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << script_instance <<
-                             chaos::NodeDefinitionKey::NODE_TYPE << chaos::NodeType::NODE_TYPE_CONTROL_UNIT <<
-                             chaos::NodeDefinitionKey::NODE_SUB_TYPE << chaos::NodeType::NODE_SUBTYPE_SCRIPTABLE_EXECUTION_UNIT <<
-                             chaos::NodeDefinitionKey::NODE_GROUP_SET << script.name <<
-                             "script_seq" << (long long)script.unique_id);
-                    
-                    DEBUG_CODE(SDA_DBG<<log_message("copyScriptDatasetToInstance",
-                                                    "findOne[instance for script]",
-                                                    DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                            q));)
-                    
-                    if((err = connection->findOne(instance_found,
-                                                  MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                                  q))) {
-                        SDA_ERR << CHAOS_FORMAT("Error executin query for load instance %1% for script %2%[%3%] with error [%4%]", %script_instance%script.unique_id%script.name%err);
-                    } else {
-                        if(instance_found.isEmpty()) {
-                            SDA_ERR << CHAOS_FORMAT("The instance %1% for script %2%[%3%] has not been found", %script.name%script_instance%script.unique_id);
-                        } else {
-                            //now we can copy the dataset to the instance from his script
-                            mongo::BSONObjBuilder ub;
-                            //copy dataset
-                            //                            ub << chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << BSON(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP << mongo::Date_t(TimingUtil::getTimeStamp()) <<
-                            //                                                                                                                chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << script_found.getField(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
-                            
-                            //ccompose the laod parameter for describe the script language and content
-                            const std::string script_language = script_found.getField(ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE).String();
-                            const std::string script_content = script_found.getField(ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_CONTENT).String();
-                            
-                            //load parameter need to have script and dataset
-                            Json::FastWriter fast_writer;
-                            Json::Value script_load_parameter;
-                            script_load_parameter[ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE] = script_language;
-                            script_load_parameter[ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_CONTENT] = script_content;
-                            
-                            
-                            CDataWrapper dataset_description;
-                            //add node uid
-                            dataset_description.addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, script_instance);
-                            
-                            std::vector<mongo::BSONElement> dataset_element = script_found.getField(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).Array();
-                            
-                            CDataWrapper node_dataset;
-                            for(std::vector<mongo::BSONElement>::iterator it = dataset_element.begin(),
-                                end = dataset_element.end();
-                                it != end;
-                                it++) {
-                                CDataWrapper dataset_element(it->embeddedObject().objdata());
-                                node_dataset.appendCDataWrapperToArray(dataset_element);
-                            }
-                            node_dataset.finalizeArrayForKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
-                            dataset_description.addCSDataValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION, node_dataset);
-                            
-                            
-                            int bin_len;
-                            const char * bin_data = dataset_description.getBSONRawData(bin_len);
-                            const std::string encoded_binary_ds = base64_encode((unsigned char const *)bin_data, bin_len);
-                            
-                            script_load_parameter[ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION] = encoded_binary_ds;
-                            ub.append(CHAOS_FORMAT("instance_description.%1%",%ControlUnitNodeDefinitionKey::CONTROL_UNIT_LOAD_PARAM), fast_writer.write(script_load_parameter));
-                            
-                            //copy dataset to update bson objet
-                            mongo::BSONObj u = BSON("$set" << ub.obj());
-                            
-                            DEBUG_CODE(SDA_DBG<<log_message("copyScriptDatasetToInstance",
-                                                            "update",
-                                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                                    "Update",
-                                                                                    q,
-                                                                                    u));)
-                            if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                                         q,
-                                                         u))){
-                                SDA_ERR << CHAOS_FORMAT("Error updating instance %1% for script %2%[%3%] with error [%4%]", %script_instance%script.unique_id%script.name%err);
-                            }
-                        }
-                    }
+              // now we can copy the dataset to the instance from his script
+              mongo::BSONObjBuilder ub;
+              // copy dataset
+              //                             ub << chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << BSON(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_TIMESTAMP << mongo::Date_t(TimingUtil::getTimeStamp()) <<
+              //                                                                                                                 chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION << script_found.getField(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION));
+
+              // ccompose the laod parameter for describe the script language and content
+              const std::string script_language = script_found.getField(ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE).String();
+              const std::string script_content  = script_found.getField(ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_CONTENT).String();
+
+              // load parameter need to have script and dataset
+              Json::FastWriter fast_writer;
+              Json::Value      script_load_parameter;
+              script_load_parameter[ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_LANGUAGE] = script_language;
+              script_load_parameter[ExecutionUnitNodeDefinitionKey::EXECUTION_SCRIPT_INSTANCE_CONTENT]  = script_content;
+
+              CDataWrapper dataset_description;
+              // add node uid
+              dataset_description.addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, script_instance);
+
+              std::vector<mongo::BSONElement> dataset_element = script_found.getField(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION).Array();
+
+              CDataWrapper node_dataset;
+              for (std::vector<mongo::BSONElement>::iterator it  = dataset_element.begin(),
+                                                             end = dataset_element.end();
+                   it != end;
+                   it++) {
+                if (it->embeddedObject().objdata()) {
+                  CDataWrapper dataset_element(it->embeddedObject().objdata());
+                  node_dataset.appendCDataWrapperToArray(dataset_element);
                 }
+              }
+              node_dataset.finalizeArrayForKey(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION);
+              dataset_description.addCSDataValue(chaos::ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION, node_dataset);
+
+              int               bin_len;
+              const char*       bin_data          = dataset_description.getBSONRawData(bin_len);
+              const std::string encoded_binary_ds = base64_encode((unsigned char const*)bin_data, bin_len);
+
+              script_load_parameter[ControlUnitNodeDefinitionKey::CONTROL_UNIT_DATASET_DESCRIPTION] = encoded_binary_ds;
+              ub.append(CHAOS_FORMAT("instance_description.%1%", % ControlUnitNodeDefinitionKey::CONTROL_UNIT_LOAD_PARAM), fast_writer.write(script_load_parameter));
+
+              // copy dataset to update bson objet
+              mongo::BSONObj u = BSON("$set" << ub.obj());
+
+              DEBUG_CODE(SDA_DBG << log_message("copyScriptDatasetToInstance",
+                                                "update",
+                                                DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                        "Update",
+                                                                        q,
+                                                                        u));)
+              if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                            q,
+                                            u))) {
+                SDA_ERR << CHAOS_FORMAT("Error updating instance %1% for script %2%[%3%] with error [%4%]", % script_instance % script.unique_id % script.name % err);
+              }
             }
+          }
         }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 int MongoDBScriptDataAccess::instanceForUnitServerHeartbeat(const ChaosStringVector& script_instance_list,
-                                                            const std::string& unit_server_parent,
-                                                            uint32_t timeout) {
-    int err = 0;
-    mongo::BSONArrayBuilder bson_find_and;
-    mongo::BSONArrayBuilder bson_find_in;
-    CHAOS_ASSERT(utility_data_access)
-    try {
-        for(ChaosStringVectorConstIterator in_it = script_instance_list.begin(),
-            in_end = script_instance_list.end();
-            in_it < in_end;
-            in_it++) {
-            //add every instance uid to the array
-            bson_find_in << *in_it;
-        }
-        uint64_t now = TimingUtil::getTimeStamp();
-        mongo::Date_t start_timeout_date(now-timeout);
-        
-        //and rule for uid
-        bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << BSON("$in" << bson_find_in.arr()));
-        
-        //! for this unit server associaito
-        bson_find_and << BSON(CHAOS_FORMAT("instance_description.%1%",%chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_parent);
-        
-        //not in timeout
-        //bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << true << "$lte" << start_timeout_date));
-        
-        //compose the query
-        mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
-        //we need to update only the timeout
-        mongo::BSONObj u = BSON("$set" << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << mongo::Date_t(now)));
-        DEBUG_CODE(SDA_DBG<<log_message("instanceHeartbeat",
-                                        "update",
-                                        DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                "Update",
-                                                                q,
-                                                                u));)
-        //inset on database new script description
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
-                                     q,
-                                     u,
-                                     false,
-                                     true))) {
-            SDA_ERR << CHAOS_FORMAT("Error executin query for update running script intance with error [%1%]", %err);
-        }
-    } catch (const mongo::DBException &e) {
-        SDA_ERR << e.what();
-        err = e.getCode();
+                                                            const std::string&       unit_server_parent,
+                                                            uint32_t                 timeout) {
+  int                     err = 0;
+  mongo::BSONArrayBuilder bson_find_and;
+  mongo::BSONArrayBuilder bson_find_in;
+  CHAOS_ASSERT(utility_data_access)
+  try {
+    for (ChaosStringVectorConstIterator in_it  = script_instance_list.begin(),
+                                        in_end = script_instance_list.end();
+         in_it < in_end;
+         in_it++) {
+      // add every instance uid to the array
+      bson_find_in << *in_it;
+    }
+    uint64_t      now = TimingUtil::getTimeStamp();
+    mongo::Date_t start_timeout_date(now - timeout);
+
+    // and rule for uid
+    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_UNIQUE_ID << BSON("$in" << bson_find_in.arr()));
+
+    //! for this unit server associaito
+    bson_find_and << BSON(CHAOS_FORMAT("instance_description.%1%", % chaos::NodeDefinitionKey::NODE_PARENT) << unit_server_parent);
+
+    // not in timeout
+    // bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << BSON("$exists" << true << "$lte" << start_timeout_date));
+
+    // compose the query
+    mongo::BSONObj q = BSON("$and" << bson_find_and.arr());
+    // we need to update only the timeout
+    mongo::BSONObj u = BSON("$set" << BSON(chaos::NodeDefinitionKey::NODE_TIMESTAMP << mongo::Date_t(now)));
+    DEBUG_CODE(SDA_DBG << log_message("instanceHeartbeat",
+                                      "update",
+                                      DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                              "Update",
+                                                              q,
+                                                              u));)
+    // inset on database new script description
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_NODES),
+                                  q,
+                                  u,
+                                  false,
+                                  true))) {
+      SDA_ERR << CHAOS_FORMAT("Error executin query for update running script intance with error [%1%]", % err);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    SDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
 #pragma Private Methods
-mongo::Query MongoDBScriptDataAccess::getNextPagedQuery(uint64_t last_sequence,
+mongo::Query    MongoDBScriptDataAccess::getNextPagedQuery(uint64_t           last_sequence,
                                                         const std::string& search_string) {
-    mongo::Query q;
-    mongo::BSONObjBuilder   bson_find;
-    mongo::BSONObjBuilder build_query_or;
-    mongo::BSONArrayBuilder bson_find_and;
-    
-    if(last_sequence){bson_find_and <<BSON("seq" << BSON("$lt"<<(long long)last_sequence));}
-    bson_find_and << BSON("$or" << getSearchTokenOnFiled(search_string, chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME));
-    bson_find.appendArray("$and", bson_find_and.obj());
-    q = bson_find.obj();
-    return q.sort(BSON("seq"<<(int)1));
+  mongo::Query            q;
+  mongo::BSONObjBuilder   bson_find;
+  mongo::BSONObjBuilder   build_query_or;
+  mongo::BSONArrayBuilder bson_find_and;
+
+  if (last_sequence) {
+    bson_find_and << BSON("seq" << BSON("$lt" << (long long)last_sequence));
+  }
+  bson_find_and << BSON("$or" << getSearchTokenOnFiled(search_string, chaos::ExecutionUnitNodeDefinitionKey::CHAOS_SBD_NAME));
+  bson_find.appendArray("$and", bson_find_and.obj());
+  q = bson_find.obj();
+  return q.sort(BSON("seq" << (int)1));
 }
 
-mongo::Query MongoDBScriptDataAccess::getNextPagedQueryForInstance(uint64_t last_sequence_before_this_page,
+mongo::Query MongoDBScriptDataAccess::getNextPagedQueryForInstance(uint64_t           last_sequence_before_this_page,
                                                                    const std::string& script_name,
                                                                    const std::string& search_string) {
-    mongo::Query q;
-    mongo::BSONObjBuilder   bson_find;
-    mongo::BSONArrayBuilder bson_find_or;
-    mongo::BSONArrayBuilder bson_find_and;
-    std::vector<std::string> criteria_token;
-    
-    if(last_sequence_before_this_page){bson_find_and <<BSON("seq" << BSON("$lt"<<(long long)last_sequence_before_this_page));}
-    
-    
-    boost::split(criteria_token, search_string,
-                 boost::is_any_of(" "),
-                 boost::token_compress_on);
-    for (std::vector<std::string>::iterator it = criteria_token.begin();
-         it != criteria_token.end();
-         it++) {
-        bson_find_or <<  MONGODB_REGEX_ON_FILED(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, ".*"+*it+".*");
-    }
-    
-    bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name);
-    bson_find_and << BSON("$or" << bson_find_or.arr());
-    bson_find.appendArray("$and", bson_find_and.obj());
-    q = bson_find.obj();
-    return q.sort(BSON("seq"<<(int)1));
+  mongo::Query             q;
+  mongo::BSONObjBuilder    bson_find;
+  mongo::BSONArrayBuilder  bson_find_or;
+  mongo::BSONArrayBuilder  bson_find_and;
+  std::vector<std::string> criteria_token;
+
+  if (last_sequence_before_this_page) {
+    bson_find_and << BSON("seq" << BSON("$lt" << (long long)last_sequence_before_this_page));
+  }
+
+  boost::split(criteria_token, search_string, boost::is_any_of(" "), boost::token_compress_on);
+  for (std::vector<std::string>::iterator it = criteria_token.begin();
+       it != criteria_token.end();
+       it++) {
+    bson_find_or << MONGODB_REGEX_ON_FILED(chaos::NodeDefinitionKey::NODE_UNIQUE_ID, ".*" + *it + ".*");
+  }
+
+  bson_find_and << BSON(chaos::NodeDefinitionKey::NODE_GROUP_SET << script_name);
+  bson_find_and << BSON("$or" << bson_find_or.arr());
+  bson_find.appendArray("$and", bson_find_and.obj());
+  q = bson_find.obj();
+  return q.sort(BSON("seq" << (int)1));
 }
-
diff --git a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
index 2807a15b4c0e040e2e70749f08038cd86016fe15..cc1c722d132fae8ae2fb4283c6d908da1ccdef23 100644
--- a/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
+++ b/ChaosMetadataService/persistence/mongodb/MongoDBUtilityDataAccess.cpp
@@ -19,8 +19,8 @@
  * permissions and limitations under the Licence.
  */
 
-#include "mongo_db_constants.h"
 #include "MongoDBUtilityDataAccess.h"
+#include "mongo_db_constants.h"
 
 #include <chaos/common/global.h>
 #include <chaos/common/utility/TimingUtil.h>
@@ -28,229 +28,227 @@
 #include <mongo/client/dbclient.h>
 
 #define MDBUDA_INFO INFO_LOG(MongoDBUtilityDataAccess)
-#define MDBUDA_DBG  DBG_LOG(MongoDBUtilityDataAccess)
-#define MDBUDA_ERR  ERR_LOG(MongoDBUtilityDataAccess)
+#define MDBUDA_DBG DBG_LOG(MongoDBUtilityDataAccess)
+#define MDBUDA_ERR ERR_LOG(MongoDBUtilityDataAccess)
 
 using namespace chaos::common::data;
 using namespace chaos::service_common::persistence::mongodb;
 
 using namespace chaos::metadata_service::persistence::mongodb;
 
-MongoDBUtilityDataAccess::MongoDBUtilityDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection):
-MongoDBAccessor(_connection){}
+MongoDBUtilityDataAccess::MongoDBUtilityDataAccess(const ChaosSharedPtr<service_common::persistence::mongodb::MongoDBHAConnectionManager>& _connection)
+    : MongoDBAccessor(_connection) {}
 
 MongoDBUtilityDataAccess::~MongoDBUtilityDataAccess() {}
 
 int MongoDBUtilityDataAccess::getNextSequenceValue(const std::string& sequence_name, uint64_t& next_value) {
-    int err = 0;
-    mongo::BSONObj          result;
-    mongo::BSONObjBuilder   query;
-    mongo::BSONObjBuilder   update;
-    try {
-        query << "seq" << sequence_name;
-        mongo::BSONObj q = query.obj();
-        
-        //try to sse if we need to initialize
-        mongo::BSONObj ui = BSON("$setOnInsert" << BSON("value" << (int32_t)1));
-        
-        DEBUG_CODE(MDBUDA_DBG<<log_message("getNextSequenceValue",
-                                           "update",
+  int                   err = 0;
+  mongo::BSONObj        result;
+  mongo::BSONObjBuilder query;
+  mongo::BSONObjBuilder update;
+  try {
+    query << "seq" << sequence_name;
+    mongo::BSONObj q = query.obj();
+
+    // try to sse if we need to initialize
+    mongo::BSONObj ui = BSON("$setOnInsert" << BSON("value" << (int32_t)1));
+
+    DEBUG_CODE(MDBUDA_DBG << log_message("getNextSequenceValue",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update[upsert]",
+                                                                 q.toString(),
+                                                                 ui.toString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SEQUENCES), q, ui, true))) {
+      MDBUDA_ERR << "Error initilizing ";
+    } else {
+      update << "$inc" << BSON("value" << 1);
+      mongo::BSONObj u = update.obj();
+
+      DEBUG_CODE(MDBUDA_DBG << log_message("getNextSequenceValue",
+                                           "findAndModify",
                                            DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update[upsert]",
+                                                                   "Update",
                                                                    q.toString(),
-                                                                   ui.toString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SEQUENCES), q, ui, true))) {
-            MDBUDA_ERR << "Error initilizing ";
-        } else {
-            update << "$inc" << BSON("value" << 1);
-            mongo::BSONObj u = update.obj();
-            
-            DEBUG_CODE(MDBUDA_DBG<<log_message("getNextSequenceValue",
-                                               "findAndModify",
-                                               DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                       "Update",
-                                                                       q.toString(),
-                                                                       u.toString()));)
-            
-            if((err = connection->findAndModify(result, MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SEQUENCES), q, u, false, false))) {
-                MDBUDA_ERR << "Error updating ";
-            } else if (!result.hasField("value")){
-                MDBUDA_ERR << "Error retriving the sequence value";
-                err = -1;
-            } else {
-                next_value = (uint64_t)result["value"].numberLong();
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
+                                                                   u.toString()));)
+
+      if ((err = connection->findAndModify(result, MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_SEQUENCES), q, u, false, false))) {
+        MDBUDA_ERR << "Error updating ";
+      } else if (!result.hasField("value")) {
+        MDBUDA_ERR << "Error retriving the sequence value";
         err = -1;
+      } else {
+        next_value = (uint64_t)result["value"].numberLong();
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = -1;
+  }
+  return err;
 }
 
 int MongoDBUtilityDataAccess::resetAllData() {
-    int err = 0;
-    try {
-        mongo::BSONObj q = BSON("ndk_uid" << BSON("$ne" << NodeType::NODE_TYPE_DATA_SERVICE));
-        
-        MDBUDA_DBG<<"Start resetting mds data";
-        
-        
-        const char* const collection[] = {MONGODB_COLLECTION_SEQUENCES,
-            MONGODB_COLLECTION_NODES,
-            MONGODB_COLLECTION_NODES_COMMAND,
-            MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE};
-        
-        for(int idx = 0;
-            idx < 4;
-            idx++) {
-            MDBUDA_DBG<<"Remove all documents for:" << collection[idx];
-            if((err = connection->remove(MONGO_DB_COLLECTION_NAME(collection[idx]), q, false))) {
-                MDBUDA_ERR << "Error removing all documents from:" << collection[idx];
-            }
-        }
-    } catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
-        err = -1;
+  int err = 0;
+  try {
+    mongo::BSONObj q = BSON("ndk_uid" << BSON("$ne" << NodeType::NODE_TYPE_DATA_SERVICE));
+
+    MDBUDA_DBG << "Start resetting mds data";
+
+    const char* const collection[] = {MONGODB_COLLECTION_SEQUENCES,
+                                      MONGODB_COLLECTION_NODES,
+                                      MONGODB_COLLECTION_NODES_COMMAND,
+                                      MONGODB_COLLECTION_NODES_COMMAND_TEMPLATE};
+
+    for (int idx = 0;
+         idx < 4;
+         idx++) {
+      MDBUDA_DBG << "Remove all documents for:" << collection[idx];
+      if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(collection[idx]), q, false))) {
+        MDBUDA_ERR << "Error removing all documents from:" << collection[idx];
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = -1;
+  }
+  return err;
 }
 
-int MongoDBUtilityDataAccess::setVariable(const std::string& variable_name,
-                                          chaos::common::data::CDataWrapper& cdw){
-    int err = 0;
-    int variable_size = 0;
-    try {
-        mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
-        mongo::BSONObj u = BSON("$set" << BSON(VariableDefinitionKey::VARIABLE_VALUE_KEY << mongo::BSONObj(cdw.getBSONRawData(variable_size))));
-        DEBUG_CODE(MDBUDA_DBG<<log_message("setVariable",
-                                           "update",
-                                           DATA_ACCESS_LOG_2_ENTRY("Query",
-                                                                   "Update",
-                                                                   q.toString(),
-                                                                   u.toString()));)
-        
-        if((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
-                                     q,
-                                     u,
-                                     true))) {
-            MDBUDA_ERR << CHAOS_FORMAT("Error setting the variable %1% with error %2%", %variable_name%err);
-        }
-    }catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
-        err = -1;
+int MongoDBUtilityDataAccess::setVariable(const std::string&                 variable_name,
+                                          chaos::common::data::CDataWrapper& cdw) {
+  int err           = 0;
+  int variable_size = 0;
+  try {
+    mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
+    mongo::BSONObj u = BSON("$set" << BSON(VariableDefinitionKey::VARIABLE_VALUE_KEY << mongo::BSONObj(cdw.getBSONRawData(variable_size))));
+    DEBUG_CODE(MDBUDA_DBG << log_message("setVariable",
+                                         "update",
+                                         DATA_ACCESS_LOG_2_ENTRY("Query",
+                                                                 "Update",
+                                                                 q.toString(),
+                                                                 u.toString()));)
+
+    if ((err = connection->update(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
+                                  q,
+                                  u,
+                                  true))) {
+      MDBUDA_ERR << CHAOS_FORMAT("Error setting the variable %1% with error %2%", % variable_name % err);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = -1;
+  }
+  return err;
 }
-int MongoDBUtilityDataAccess::searchVariable(chaos::common::data::CDataWrapper **res,
-                                      const std::string& search_string,
-                                      uint32_t last_sequence_id,
-                                      uint32_t page_length){
-    int err = 0;
-    SearchResult paged_result;
-    mongo::BSONObjBuilder   bson_find;
-
-    try {
-        mongo::BSONObj p = BSON(chaos::VariableDefinitionKey::VARIABLE_NAME_KEY << 1);
-        //bson_find=getSearchTokenOnFiled(search_string, chaos::VariableDefinitionKey::VARIABLE_NAME_KEY);
-        //mongo::BSONObj q = bson_find.obj();
-        mongo::BSONObj q =regexOnField( chaos::VariableDefinitionKey::VARIABLE_NAME_KEY,search_string);
-
-        /*mongo::Query q = getNextPagedQuery(last_sequence_id,
-                                           search_string);
-        */
-        DEBUG_CODE(MDBUDA_DBG<<log_message("searchVariable",
-                                        "performPagedQuery",
-                                        DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                q));)
-        //inset on database new script description
-        if((err = performPagedQuery(paged_result,
-                                    MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
-                                    q,
-                                    &p,
-                                    NULL,
-                                    page_length))) {
-            MDBUDA_ERR << "Error calling performPagedQuery with error" << err;
-        } else {
-            DEBUG_CODE(MDBUDA_DBG << "The query '"<< q.toString() <<"' has found " << paged_result.size() << " result";)
-            if(paged_result.size()) {
-                *res = new CDataWrapper();
-
-                for (SearchResultIterator it = paged_result.begin();
-                     it != paged_result.end();
-                     it++) {
-                    CDataWrapper element_found(it->objdata());
-                    element_found.addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID,element_found.getStringValue(chaos::VariableDefinitionKey::VARIABLE_NAME_KEY));
-                    (*res)->appendCDataWrapperToArray(element_found);
-
-                    DEBUG_CODE(MDBUDA_DBG << "Result '"<< element_found.getCompliantJSONString();)
-
-                }
-                (*res)->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
-
-            }
+int MongoDBUtilityDataAccess::searchVariable(chaos::common::data::CDataWrapper** res,
+                                             const std::string&                  search_string,
+                                             uint32_t                            last_sequence_id,
+                                             uint32_t                            page_length) {
+  int                   err = 0;
+  SearchResult          paged_result;
+  mongo::BSONObjBuilder bson_find;
+
+  try {
+    mongo::BSONObj p = BSON(chaos::VariableDefinitionKey::VARIABLE_NAME_KEY << 1);
+    // bson_find=getSearchTokenOnFiled(search_string, chaos::VariableDefinitionKey::VARIABLE_NAME_KEY);
+    // mongo::BSONObj q = bson_find.obj();
+    mongo::BSONObj q = regexOnField(chaos::VariableDefinitionKey::VARIABLE_NAME_KEY, search_string);
+
+    /*mongo::Query q = getNextPagedQuery(last_sequence_id,
+                                       search_string);
+    */
+    DEBUG_CODE(MDBUDA_DBG << log_message("searchVariable",
+                                         "performPagedQuery",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q));)
+    // inset on database new script description
+    if ((err = performPagedQuery(paged_result,
+                                 MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
+                                 q,
+                                 &p,
+                                 NULL,
+                                 page_length))) {
+      MDBUDA_ERR << "Error calling performPagedQuery with error" << err;
+    } else {
+      DEBUG_CODE(MDBUDA_DBG << "The query '" << q.toString() << "' has found " << paged_result.size() << " result";)
+      if (paged_result.size()) {
+        *res = new CDataWrapper();
+
+        for (SearchResultIterator it = paged_result.begin();
+             it != paged_result.end();
+             it++) {
+          if (it->objdata()) {
+            CDataWrapper element_found(it->objdata());
+            element_found.addStringValue(NodeDefinitionKey::NODE_UNIQUE_ID, element_found.getStringValue(chaos::VariableDefinitionKey::VARIABLE_NAME_KEY));
+            (*res)->appendCDataWrapperToArray(element_found);
+
+            DEBUG_CODE(MDBUDA_DBG << "Result '" << element_found.getCompliantJSONString();)
+          }
         }
-        
-        //now all other part of the script are managed with update
-    } catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
-        err = e.getCode();
+        (*res)->finalizeArrayForKey(chaos::NodeType::NODE_SEARCH_LIST_KEY);
+      }
     }
-    return err;
 
+    // now all other part of the script are managed with update
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = e.getCode();
+  }
+  return err;
 }
 
-int MongoDBUtilityDataAccess::getVariable(const std::string& variable_name,
-                                          chaos::common::data::CDataWrapper **cdw){
-    int err = 0;
-    try {
-        mongo::BSONObj result;
-        mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
-        
-        DEBUG_CODE(MDBUDA_DBG<<log_message("getVariable",
-                                           "findOne",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.toString()));)
-        if((err = connection->findOne(result,
-                                      MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
-                                      q))) {
-            MDBUDA_ERR << CHAOS_FORMAT("Error find the variable '%1%' with error %2%", %variable_name%err);
-        } else if((result.isEmpty() == false)&&
-                  result.hasField(VariableDefinitionKey::VARIABLE_VALUE_KEY)){
-            mongo::BSONElement e = result[VariableDefinitionKey::VARIABLE_VALUE_KEY];
-            if(e.type() == mongo::Object) {
-                int buffer_len = 0;
-                const char * bin_data = (const char * ) e.Obj().objdata();
-                if(bin_data) {
-                    *cdw = new CDataWrapper(bin_data);
-                }
-            }
+int MongoDBUtilityDataAccess::getVariable(const std::string&                  variable_name,
+                                          chaos::common::data::CDataWrapper** cdw) {
+  int err = 0;
+  try {
+    mongo::BSONObj result;
+    mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
+
+    DEBUG_CODE(MDBUDA_DBG << log_message("getVariable",
+                                         "findOne",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.toString()));)
+    if ((err = connection->findOne(result,
+                                   MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
+                                   q))) {
+      MDBUDA_ERR << CHAOS_FORMAT("Error find the variable '%1%' with error %2%", % variable_name % err);
+    } else if ((result.isEmpty() == false) &&
+               result.hasField(VariableDefinitionKey::VARIABLE_VALUE_KEY)) {
+      mongo::BSONElement e = result[VariableDefinitionKey::VARIABLE_VALUE_KEY];
+      if (e.type() == mongo::Object) {
+        int         buffer_len = 0;
+        const char* bin_data   = (const char*)e.Obj().objdata();
+        if (bin_data) {
+          *cdw = new CDataWrapper(bin_data);
         }
-    }catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
-        err = -1;
+      }
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = -1;
+  }
+  return err;
 }
 
 int MongoDBUtilityDataAccess::deleteVariable(const std::string& variable_name) {
-    int err = 0;
-    try {
-        mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
-        
-        DEBUG_CODE(MDBUDA_DBG<<log_message("deleteVariable",
-                                           "delete",
-                                           DATA_ACCESS_LOG_1_ENTRY("Query",
-                                                                   q.toString()));)
-        
-        if((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
-                                     q))) {
-            MDBUDA_ERR << CHAOS_FORMAT("Error deleting the variable %1% with error %2%", %variable_name%err);
-        }
-    }catch (const mongo::DBException &e) {
-        MDBUDA_ERR << e.what();
-        err = -1;
+  int err = 0;
+  try {
+    mongo::BSONObj q = BSON(VariableDefinitionKey::VARIABLE_NAME_KEY << variable_name);
+
+    DEBUG_CODE(MDBUDA_DBG << log_message("deleteVariable",
+                                         "delete",
+                                         DATA_ACCESS_LOG_1_ENTRY("Query",
+                                                                 q.toString()));)
+
+    if ((err = connection->remove(MONGO_DB_COLLECTION_NAME(MONGODB_COLLECTION_VARIABLES),
+                                  q))) {
+      MDBUDA_ERR << CHAOS_FORMAT("Error deleting the variable %1% with error %2%", % variable_name % err);
     }
-    return err;
+  } catch (const mongo::DBException& e) {
+    MDBUDA_ERR << e.what();
+    err = -1;
+  }
+  return err;
 }