diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp
index 0fa52e787267e76aa8845b17554f862aa4c9c3e3..ed9aff2ba723edb16b1179264acd7ac841c518e2 100644
--- a/chaos/common/data/CDataWrapper.cpp
+++ b/chaos/common/data/CDataWrapper.cpp
@@ -456,7 +456,7 @@ uint32_t CDataWrapper::getValueSize(const std::string& key) const{
             return array_len;
         }
         case BSON_TYPE_DOCUMENT:{
-        	   return v->value.v_doc.data_len;
+            return v->value.v_doc.data_len;
         }
         default:
             return 0;
@@ -491,7 +491,7 @@ const char * CDataWrapper::getRawValuePtr(const std::string& key) const{
             return reinterpret_cast<const char*>(array);
         }
         case BSON_TYPE_DOCUMENT:{
-        	   return reinterpret_cast<const char*>(v->value.v_doc.data);
+            return reinterpret_cast<const char*>(v->value.v_doc.data);
         }
         default:
             return NULL;
@@ -548,6 +548,17 @@ string CDataWrapper::getJSONString()  const{
     bson_free(str_c);
     return result;
 }
+
+//return the json data
+string CDataWrapper::getCompliantJSONString()  const{
+    size_t str_size = 0;
+    char * str_c = bson_as_json(ACCESS_BSON(bson),
+                                &str_size);
+    std::string result(str_c);
+    bson_free(str_c);
+    return result;
+}
+
 //reinitialize the object with bson data
 void CDataWrapper::setSerializedData(const char* bson_data) {
     bson_iter_t it;
@@ -569,8 +580,8 @@ void CDataWrapper::setSerializedJsonData(const char* json_data) {
     bson_error_t err;
     size_t len = (size_t)strlen(json_data);
     bson =ALLOCATE_BSONT(bson_new_from_json((const uint8_t*)json_data,
-                                      len,
-                                      &err));
+                                            len,
+                                            &err));
     CHAOS_ASSERT(bson);
 }
 
diff --git a/chaos/common/data/CDataWrapper.h b/chaos/common/data/CDataWrapper.h
index a0f67f0267fc9c97e2b47a9e20dc3242ace1272f..29fe0b972b384b8a8e867264d66e1fccce849e93 100644
--- a/chaos/common/data/CDataWrapper.h
+++ b/chaos/common/data/CDataWrapper.h
@@ -267,6 +267,9 @@ namespace chaos {
                 //return the json representation for this data wrapper
                 string getJSONString() const;
                 
+                //return a compliatn json serialization
+                string getCompliantJSONString() const;
+                
                 //reinitialize the object with bson data
                 void setSerializedData(const char* bsonData);
                 
diff --git a/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h b/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h
index 533ba7f23186a045cc7817c9806e96abfeddc065..7b3868dd511d655eaba0c7e46d35b379f1b4cbbe 100644
--- a/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h
+++ b/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h
@@ -55,7 +55,7 @@ namespace chaos {
                         chaos::common::data::CDataWrapper err_data_pack;
                         err_data_pack.addInt32Value("error_code", error_code);
                         err_data_pack.addStringValue("error_message", error_message);
-                        const std::string json_error = err_data_pack.getJSONString();
+                        const std::string json_error = err_data_pack.getCompliantJSONString();
                         mg_send_head(nc, 400, 0, "Content-Type: application/json");
                         mg_printf(nc, "%s", json_error.c_str());
                     }
@@ -67,7 +67,7 @@ namespace chaos {
                         chaos::common::data::CDataWrapper err_data_pack;
                         err_data_pack.addInt32Value("error_code", error_code);
                         err_data_pack.addStringValue("error_message", error_message);
-                        const std::string json_error = err_data_pack.getJSONString();
+                        const std::string json_error = err_data_pack.getCompliantJSONString();
                         mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, json_error.c_str(), json_error.size());
                         if(close_connection){mg_send_websocket_frame(nc, WEBSOCKET_OP_CLOSE, NULL, 0);}
                     }
diff --git a/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp b/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp
index 932be79731a5a0e3c110a709e72113692d1cddce..cab2cef1a2e7f962edc8f759d5efb731afa01b17 100644
--- a/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp
+++ b/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp
@@ -265,7 +265,7 @@ void HTTPServerAdapter::sendWSJSONAcceptedConnection(mg_connection *nc,
                                                      bool close_connection) {
     chaos::common::data::CDataWrapper err_data_pack;
     err_data_pack.addInt32Value("accepted_connection", accepted);
-    const std::string accepted_json = err_data_pack.getJSONString();
+    const std::string accepted_json = err_data_pack.getCompliantJSONString();
     mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, accepted_json.c_str(), accepted_json.size());
     if(close_connection){mg_send_websocket_frame(nc, WEBSOCKET_OP_CLOSE, NULL, 0);}
 }
diff --git a/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp b/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp
index e54f0c5f9a2d89520519505a3b032ec12baab77e..d498a521afe33c527b2da12748e64b3a6aa300b2 100644
--- a/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp
+++ b/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp
@@ -32,7 +32,7 @@ ExternalBSONExtJsonSerialization::ExternalBSONExtJsonSerialization(){}
 ExternalBSONExtJsonSerialization::~ExternalBSONExtJsonSerialization(){}
 
 ChaosUniquePtr<CDataBuffer> ExternalBSONExtJsonSerialization::serialize(const CDataWrapper& cdw_in) {
-    const std::string json_result = cdw_in.getJSONString();
+    const std::string json_result = cdw_in.getCompliantJSONString();
     return ChaosUniquePtr<CDataBuffer>(new CDataBuffer(json_result.c_str(), (uint32_t)json_result.size(), true));
 }
 
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
index c1f5bdb5a817705c5aca5aab46381871e72777da..3e48eb62e0184731f0551650d9dfac91ea7ae4cc 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp
@@ -111,6 +111,7 @@ int UnitProxyHandlerWrapper::eventLoop(int32_t milliseconds_wait) {
     
     while ( base_unit->hasMoreMessage()) {
         RemoteMessageUniquePtr msg =  base_unit->getNextMessage();
+        std::cout << msg->message->toString();
         if(msg->isError()) {
             UPError err_msg = {msg->getErrorCode(),
                 msg->getErrorMessage(),
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
index ce1eaaa65c1206bb905dad43b32800532c6bfe42..79b12d549f6c9a784fc0e9d336c27ea6685180c8 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
@@ -26,10 +26,10 @@ using namespace chaos::micro_unit_toolkit::connection;
 using namespace chaos::micro_unit_toolkit::connection::unit_proxy;
 using namespace chaos::micro_unit_toolkit::connection::unit_proxy::raw_driver;
 
-#define AUTHORIZATION_KEY        "authorization_key"
-#define AUTHORIZATION_STATE      "authorization_state"
-#define MESSAGE                 "message"
-#define REQUEST_IDENTIFICATION  "request_id"
+#define AUTHORIZATION_KEY           "authorization_key"
+#define AUTHORIZATION_STATE         "authorization_state"
+#define MESSAGE                     "msg"
+#define REQUEST_IDENTIFICATION      "req_id"
 
 const ProxyType RawDriverUnitProxy::proxy_type = ProxyTypeRawDriver;
 
@@ -60,7 +60,7 @@ bool RawDriverUnitProxy::manageAutorizationPhase() {
 
 int RawDriverUnitProxy::sendMessage(DataPackUniquePtr& message_data) {
     DataPackUniquePtr message(new DataPack());
-    message->addDataPack("message", *message_data);
+    message->addDataPack(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(message);
 }
 
@@ -68,7 +68,7 @@ int RawDriverUnitProxy::sendAnswer(RemoteMessageUniquePtr& message,
                                   DataPackUniquePtr& message_data) {
     if(message->is_request == false) return - 1;
     DataPackUniquePtr answer(new DataPack());
-    answer->addInt32("request_id", message->message_id);
-    answer->addDataPack("message", *message_data);
+    answer->addInt32(REQUEST_IDENTIFICATION, message->message_id);
+    answer->addDataPack(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(answer);
 }