diff --git a/src/AppStd/AppStd_Application.hxx b/src/AppStd/AppStd_Application.hxx
index 08196a7c4f..bf9b64aa09 100644
--- a/src/AppStd/AppStd_Application.hxx
+++ b/src/AppStd/AppStd_Application.hxx
@@ -22,7 +22,6 @@
 #include <TDocStd_Application.hxx>
 #include <TColStd_SequenceOfExtendedString.hxx>
 #include <Standard_CString.hxx>
-class CDM_MessageDriver;
 
 
 class AppStd_Application;
diff --git a/src/AppStdL/AppStdL_Application.hxx b/src/AppStdL/AppStdL_Application.hxx
index e6d668c34b..a7f7aeb005 100644
--- a/src/AppStdL/AppStdL_Application.hxx
+++ b/src/AppStdL/AppStdL_Application.hxx
@@ -22,8 +22,6 @@
 #include <TDocStd_Application.hxx>
 #include <TColStd_SequenceOfExtendedString.hxx>
 #include <Standard_CString.hxx>
-class CDM_MessageDriver;
-
 
 class AppStdL_Application;
 DEFINE_STANDARD_HANDLE(AppStdL_Application, TDocStd_Application)
diff --git a/src/BinDrivers/BinDrivers.cxx b/src/BinDrivers/BinDrivers.cxx
index e9e2dd7cfd..312c8a7133 100644
--- a/src/BinDrivers/BinDrivers.cxx
+++ b/src/BinDrivers/BinDrivers.cxx
@@ -25,7 +25,7 @@
 #include <BinMDocStd.hxx>
 #include <BinMFunction.hxx>
 #include <BinMNaming.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Plugin_Macro.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_GUID.hxx>
@@ -82,7 +82,7 @@ void BinDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinDrivers::AttributeDrivers 
-                         (const Handle(CDM_MessageDriver)& aMsgDrv)
+                         (const Handle(Message_Messenger)& aMsgDrv)
 {
   Handle(BinMDF_ADriverTable) aTable = new BinMDF_ADriverTable;
 
diff --git a/src/BinDrivers/BinDrivers.hxx b/src/BinDrivers/BinDrivers.hxx
index 80fa7df994..fc74905276 100644
--- a/src/BinDrivers/BinDrivers.hxx
+++ b/src/BinDrivers/BinDrivers.hxx
@@ -21,7 +21,7 @@
 class Standard_Transient;
 class Standard_GUID;
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TCollection_AsciiString;
 class BinDrivers_DocumentStorageDriver;
 class BinDrivers_DocumentRetrievalDriver;
@@ -37,7 +37,7 @@ public:
   Standard_EXPORT static void DefineFormat (const Handle(TDocStd_Application)& theApp);
 
   //! Creates the table of drivers of types supported
-  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& MsgDrv);
+  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& MsgDrv);
   
   //! returns "1"
   Standard_EXPORT static TCollection_AsciiString StorageVersion();
diff --git a/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.cxx b/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.cxx
index 1923746e7f..45e6a1ac1a 100644
--- a/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.cxx
+++ b/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.cxx
@@ -21,7 +21,7 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinMNaming.hxx>
 #include <BinMNaming_NamedShapeDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_IStream.hxx>
@@ -45,7 +45,7 @@ BinDrivers_DocumentRetrievalDriver::BinDrivers_DocumentRetrievalDriver ()
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinDrivers_DocumentRetrievalDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver)
+       (const Handle(Message_Messenger)& theMessageDriver)
 {
   return BinDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -58,7 +58,7 @@ Handle(BinMDF_ADriverTable) BinDrivers_DocumentRetrievalDriver::AttributeDrivers
 void BinDrivers_DocumentRetrievalDriver::ReadShapeSection
                               (BinLDrivers_DocumentSection& /*theSection*/,
                                Standard_IStream&            theIS,
-			       const Standard_Boolean       /*isMess*/)
+                               const Standard_Boolean       /*isMess*/)
 
 {
   // Read Shapes
@@ -74,8 +74,8 @@ void BinDrivers_DocumentRetrievalDriver::ReadShapeSection
     catch(Standard_Failure const& anException) {
       const TCollection_ExtendedString aMethStr
         ("BinDrivers_DocumentRetrievalDriver: ");
-      WriteMessage (aMethStr + "error of Shape Section " +
-        anException.GetMessageString());
+      myMsgDriver ->Send(aMethStr + "error of Shape Section " +
+        anException.GetMessageString(), Message_Fail);
     }
   }
 }
@@ -85,8 +85,8 @@ void BinDrivers_DocumentRetrievalDriver::ReadShapeSection
 //purpose  : 
 //=======================================================================
 void BinDrivers_DocumentRetrievalDriver::CheckShapeSection(
-			      const Storage_Position& /*ShapeSectionPos*/, 
-				 	         Standard_IStream& /*IS*/)
+                              const Storage_Position& /*ShapeSectionPos*/,
+                              Standard_IStream& /*IS*/)
 {}
 
 //=======================================================================
@@ -111,7 +111,7 @@ void BinDrivers_DocumentRetrievalDriver::Clear()
 //purpose  : 
 //=======================================================================
 void BinDrivers_DocumentRetrievalDriver::PropagateDocumentVersion(
-				    const Standard_Integer theDocVersion )
+                                    const Standard_Integer theDocVersion )
 {
   BinMDataStd::SetDocumentVersion(theDocVersion);
   BinMNaming::SetDocumentVersion(theDocVersion);
diff --git a/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.hxx b/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.hxx
index 4691634aee..2275a838b2 100644
--- a/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.hxx
+++ b/src/BinDrivers/BinDrivers_DocumentRetrievalDriver.hxx
@@ -25,7 +25,7 @@
 #include <Storage_Position.hxx>
 #include <Standard_Integer.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinLDrivers_DocumentSection;
 
 
@@ -42,7 +42,7 @@ public:
   //! Constructor
   Standard_EXPORT BinDrivers_DocumentRetrievalDriver();
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
   
   Standard_EXPORT virtual void ReadShapeSection (BinLDrivers_DocumentSection& theSection, Standard_IStream& theIS, const Standard_Boolean isMess = Standard_False) Standard_OVERRIDE;
   
diff --git a/src/BinDrivers/BinDrivers_DocumentStorageDriver.cxx b/src/BinDrivers/BinDrivers_DocumentStorageDriver.cxx
index 6416c8d161..3c1f9e5d1a 100644
--- a/src/BinDrivers/BinDrivers_DocumentStorageDriver.cxx
+++ b/src/BinDrivers/BinDrivers_DocumentStorageDriver.cxx
@@ -20,7 +20,7 @@
 #include <BinMDF_ADriver.hxx>
 #include <BinMDF_ADriverTable.hxx>
 #include <BinMNaming_NamedShapeDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_NotImplemented.hxx>
 #include <Standard_Type.hxx>
@@ -43,7 +43,7 @@ BinDrivers_DocumentStorageDriver::BinDrivers_DocumentStorageDriver ()
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinDrivers_DocumentStorageDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver)
+       (const Handle(Message_Messenger)& theMessageDriver)
 {
   return BinDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -70,7 +70,7 @@ Standard_Boolean BinDrivers_DocumentStorageDriver::IsWithTriangles() const
 //function : SetWithTriangles
 //purpose  :
 //=======================================================================
-void BinDrivers_DocumentStorageDriver::SetWithTriangles (const Handle(CDM_MessageDriver)& theMessageDriver,
+void BinDrivers_DocumentStorageDriver::SetWithTriangles (const Handle(Message_Messenger)& theMessageDriver,
                                                          const Standard_Boolean theWithTriangulation)
 {
   if (myDrivers.IsNull())
@@ -113,10 +113,8 @@ void BinDrivers_DocumentStorageDriver::WriteShapeSection
       aNamedShapeDriver->WriteShapeSection (theOS);
     }
     catch(Standard_Failure const& anException) {
-      TCollection_ExtendedString anErrorStr ("Error: ");
-      TCollection_ExtendedString aStr = 
-	anErrorStr + "BinDrivers_DocumentStorageDriver, Shape Section :";
-      WriteMessage (aStr  + anException.GetMessageString());
+      TCollection_ExtendedString anErrorStr ("BinDrivers_DocumentStorageDriver, Shape Section :");
+      myMsgDriver->Send (anErrorStr  + anException.GetMessageString(), Message_Fail);
     }
   }
    
diff --git a/src/BinDrivers/BinDrivers_DocumentStorageDriver.hxx b/src/BinDrivers/BinDrivers_DocumentStorageDriver.hxx
index 4c1d843702..5cd7c3feb9 100644
--- a/src/BinDrivers/BinDrivers_DocumentStorageDriver.hxx
+++ b/src/BinDrivers/BinDrivers_DocumentStorageDriver.hxx
@@ -18,11 +18,11 @@
 
 #include <Standard.hxx>
 #include <Standard_Type.hxx>
-
-#include <BinLDrivers_DocumentStorageDriver.hxx>
 #include <Standard_OStream.hxx>
+#include <BinLDrivers_DocumentStorageDriver.hxx>
+
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinLDrivers_DocumentSection;
 
 
@@ -39,7 +39,7 @@ public:
   //! Constructor
   Standard_EXPORT BinDrivers_DocumentStorageDriver();
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
   
   //! implements the procedure of writing a shape section to file
   Standard_EXPORT virtual void WriteShapeSection (BinLDrivers_DocumentSection& theDocSection, Standard_OStream& theOS) Standard_OVERRIDE;
@@ -48,7 +48,7 @@ public:
   Standard_EXPORT Standard_Boolean IsWithTriangles() const;
 
   //! Set if triangulation should be stored or not.
-  Standard_EXPORT void SetWithTriangles (const Handle(CDM_MessageDriver)& theMessageDriver,
+  Standard_EXPORT void SetWithTriangles (const Handle(Message_Messenger)& theMessageDriver,
                                          const Standard_Boolean theWithTriangulation);
 
   DEFINE_STANDARD_RTTIEXT(BinDrivers_DocumentStorageDriver,BinLDrivers_DocumentStorageDriver)
diff --git a/src/BinLDrivers/BinLDrivers.cxx b/src/BinLDrivers/BinLDrivers.cxx
index 17c0893a43..2b9dcd2a65 100644
--- a/src/BinLDrivers/BinLDrivers.cxx
+++ b/src/BinLDrivers/BinLDrivers.cxx
@@ -22,7 +22,7 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinMDocStd.hxx>
 #include <BinMFunction.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Plugin_Macro.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_GUID.hxx>
@@ -81,7 +81,7 @@ void BinLDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinLDrivers::AttributeDrivers 
-                         (const Handle(CDM_MessageDriver)& aMsgDrv)
+                         (const Handle(Message_Messenger)& aMsgDrv)
 {
   Handle(BinMDF_ADriverTable) aTable = new BinMDF_ADriverTable;
 
diff --git a/src/BinLDrivers/BinLDrivers.hxx b/src/BinLDrivers/BinLDrivers.hxx
index 444b76fb5b..8397459817 100644
--- a/src/BinLDrivers/BinLDrivers.hxx
+++ b/src/BinLDrivers/BinLDrivers.hxx
@@ -21,7 +21,7 @@
 class Standard_Transient;
 class Standard_GUID;
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TCollection_AsciiString;
 class BinLDrivers_DocumentStorageDriver;
 class BinLDrivers_DocumentRetrievalDriver;
@@ -39,7 +39,7 @@ public:
   Standard_EXPORT static void DefineFormat (const Handle(TDocStd_Application)& theApp);
 
   //! Creates a table of the supported drivers' types
-  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& MsgDrv);
+  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& MsgDrv);
   
   //! returns last storage version
   Standard_EXPORT static TCollection_AsciiString StorageVersion();
diff --git a/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx b/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx
index ccc4e1f5ab..54d45b6311 100644
--- a/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx
+++ b/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <FSD_BinaryFile.hxx>
 #include <FSD_FileHeader.hxx>
 #include <OSD_OpenFile.hxx>
@@ -120,7 +120,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     Handle(TDocStd_Document)::DownCast(theDoc);
   if (aDoc.IsNull()) {
 #ifdef OCCT_DEBUG
-    WriteMessage (aMethStr + "error: null document");
+    myMsgDriver->Send (aMethStr + "error: null document", Message_Fail);
 #endif
     myReaderStatus = PCDM_RS_NoDocument;
     return;
@@ -154,7 +154,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
   // 1.a Version of writer
   if (!aHeaderData->StorageVersion().IsIntegerValue()) {
     // file has no format version
-    WriteMessage (aMethStr + "error: file has no format version");
+    myMsgDriver->Send (aMethStr + "error: file has no format version", Message_Fail);
     myReaderStatus = PCDM_RS_FormatFailure;
     return;
   }
@@ -164,9 +164,9 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
   if (!CheckDocumentVersion(aFileVer, aCurrVer)) {
     myReaderStatus = PCDM_RS_NoVersion;
     // file was written with another version
-    WriteMessage (aMethStr + "error: wrong file version: " +
-		  aHeaderData->StorageVersion() + " while current is " +
-		  BinLDrivers::StorageVersion());
+    myMsgDriver->Send (aMethStr + "error: wrong file version: " +
+                 aHeaderData->StorageVersion() + " while current is " +
+                 BinLDrivers::StorageVersion(), Message_Fail);
     return;
   }
 
@@ -185,14 +185,14 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     else if (begin) {
       if ( aFileVer < 8 ) {
 #ifdef DATATYPE_MIGRATION
-	TCollection_AsciiString  newName;	
-	if(Storage_Schema::CheckTypeMigration(aStr, newName)) {
+        TCollection_AsciiString  newName;	
+        if(Storage_Schema::CheckTypeMigration(aStr, newName)) {
 #ifdef OCCT_DEBUG
-	  cout << "CheckTypeMigration:OldType = " <<aStr << " Len = "<<aStr.Length()<<endl;
-	  cout << "CheckTypeMigration:NewType = " <<newName  << " Len = "<< newName.Length()<<endl;
+          cout << "CheckTypeMigration:OldType = " <<aStr << " Len = "<<aStr.Length()<<endl;
+          cout << "CheckTypeMigration:NewType = " <<newName  << " Len = "<< newName.Length()<<endl;
 #endif
-	  aStr = newName;
-	}
+          aStr = newName;
+        }
 #endif  
       } 
       aTypeNames.Append (aStr);    
@@ -208,11 +208,11 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     if (myDrivers->GetDriver(i).IsNull()) 
       myMapUnsupported.Add(i);
   if (!myMapUnsupported.IsEmpty()) {
-    WriteMessage (aMethStr + "warning: "
-                  "the following attributes have no driver:");
+    myMsgDriver->Send (aMethStr + "warning: "
+                  "the following attributes have no driver:", Message_Warning);
     for (i=1; i <= aTypeNames.Length(); i++)
       if (myMapUnsupported.Contains(i))
-	WriteMessage (aTypeNames(i));
+        myMsgDriver->Send (aTypeNames(i), Message_Warning);
   }
 
   // propagate the opened document version to data drivers
@@ -238,7 +238,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
 
     if (theIStream.eof()) {
       // There is no shape section in the file.
-      WriteMessage (aMethStr + "error: shape section is not found");
+      myMsgDriver->Send (aMethStr + "error: shape section is not found", Message_Fail);
       myReaderStatus = PCDM_RS_ReaderException;
       return;
     }
@@ -249,7 +249,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     for (; anIterS.More(); anIterS.Next()) {
       BinLDrivers_DocumentSection& aCurSection = anIterS.ChangeValue();
       if (aCurSection.IsPostRead() == Standard_False) {
-        theIStream.seekg ((std::streamsize)aCurSection.Offset());
+        theIStream.seekg ((streampos) aCurSection.Offset());
         if (aCurSection.Name().IsEqual ((Standard_CString)SHAPESECTION_POS)) 
           ReadShapeSection (aCurSection, theIStream);
         else
@@ -269,7 +269,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     if (aShapeLabel.Length() > 0) {
       // version 2+(with shapes) and higher goes here
       if(aShapeLabel.Length() <= 0 || aShapeLabel != SHAPESECTION_POS) {
-        WriteMessage (aMethStr + "error: Format failure");
+        myMsgDriver->Send (aMethStr + "error: Format failure", Message_Fail);
         myReaderStatus = PCDM_RS_FormatFailure;
         return;
       }
@@ -285,13 +285,13 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
       cout <<"aShapeSectionPos = " <<aShapeSectionPos <<endl;
 #endif
       if(aShapeSectionPos) { 
-	aDocumentPos = theIStream.tellg();
-	theIStream.seekg((streampos) aShapeSectionPos);
+        aDocumentPos = theIStream.tellg();
+        theIStream.seekg((streampos) aShapeSectionPos);
 
-	CheckShapeSection(aShapeSectionPos, theIStream);
-	// Read Shapes
-	BinLDrivers_DocumentSection aCurSection;
-	ReadShapeSection (aCurSection, theIStream, Standard_False);
+        CheckShapeSection(aShapeSectionPos, theIStream);
+        // Read Shapes
+        BinLDrivers_DocumentSection aCurSection;
+        ReadShapeSection (aCurSection, theIStream, Standard_False);
       }
     }
   } // end of reading Sections or shape section
@@ -321,8 +321,8 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
     for (; aSectIter.More(); aSectIter.Next()) {
       BinLDrivers_DocumentSection& aCurSection = aSectIter.ChangeValue();
       if (aCurSection.IsPostRead()) {
-	theIStream.seekg ((std::streamsize)aCurSection.Offset());
-	ReadSection (aCurSection, theDoc, theIStream); 
+        theIStream.seekg ((streampos) aCurSection.Offset());
+        ReadSection (aCurSection, theDoc, theIStream); 
       }
     }
   }
@@ -359,31 +359,31 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
       else
         tAtt = aDriver->NewEmpty();
       if (tAtt->Label().IsNull())
-	theLabel.AddAttribute (tAtt);
+        theLabel.AddAttribute (tAtt);
       else
-	WriteMessage (aMethStr +
-		      "warning: attempt to attach attribute " +
-		      aDriver->TypeName() + " to a second label");
+        myMsgDriver->Send (aMethStr +
+                     "warning: attempt to attach attribute " +
+                     aDriver->TypeName() + " to a second label", Message_Warning);
 
       Standard_Boolean ok = aDriver->Paste (myPAtt, tAtt, myRelocTable);
       if (!ok) {
         // error converting persistent to transient
-        WriteMessage (aMethStr + "warning: failure reading attribute " +
-                      aDriver->TypeName());
+        myMsgDriver->Send (aMethStr + "warning: failure reading attribute " +
+                      aDriver->TypeName(), Message_Warning);
       }
       else if (!isBound)
         myRelocTable.Bind (anID, tAtt);
     }
     else if (!myMapUnsupported.Contains(myPAtt.TypeId()))
-      WriteMessage (aMethStr + "warning: type ID not registered in header: "
-                    + myPAtt.TypeId());
+      myMsgDriver->Send (aMethStr + "warning: type ID not registered in header: "
+                    + myPAtt.TypeId(), Message_Warning);
 
     // read next attribute
     theIS >> myPAtt;
   }
   if (!theIS || myPAtt.TypeId() != BinLDrivers_ENDATTRLIST) {
     // unexpected EOF or garbage data
-    WriteMessage (aMethStr + "error: unexpected EOF or garbage data");
+    myMsgDriver->Send (aMethStr + "error: unexpected EOF or garbage data", Message_Fail);
     myReaderStatus = PCDM_RS_UnrecognizedFileFormat;
     return -1;
   }
@@ -414,7 +414,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
   }
   if (aTag != BinLDrivers_ENDLABEL) {
     // invalid end label marker
-    WriteMessage (aMethStr + "error: invalid end label marker");
+    myMsgDriver->Send (aMethStr + "error: invalid end label marker", Message_Fail);
     myReaderStatus = PCDM_RS_UnrecognizedFileFormat;
     return -1;
   }
@@ -428,25 +428,11 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinLDrivers_DocumentRetrievalDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver)
+       (const Handle(Message_Messenger)& theMessageDriver)
 {
   return BinLDrivers::AttributeDrivers (theMessageDriver);
 }
 
-
-//=======================================================================
-//function : WriteMessage
-//purpose  : write   theMessage   to   the   MessageDriver   of
-//           theApplication
-//=======================================================================
-
-void BinLDrivers_DocumentRetrievalDriver::WriteMessage
-                         (const TCollection_ExtendedString& theMsg)
-{
-  if (!myMsgDriver.IsNull())
-    myMsgDriver->Write (theMsg.ToExtString());
-}
-
 //=======================================================================
 //function : ReadSection
 //purpose  : 
@@ -467,13 +453,13 @@ void BinLDrivers_DocumentRetrievalDriver::ReadSection
 
 void BinLDrivers_DocumentRetrievalDriver::ReadShapeSection
                               (BinLDrivers_DocumentSection& theSection,
-                               Standard_IStream&            /*theIS*/,
-			       const Standard_Boolean isMess)
+                              Standard_IStream&            /*theIS*/,
+                              const Standard_Boolean isMess)
 
 {
   if(isMess && theSection.Length()) {
     const TCollection_ExtendedString aMethStr ("BinLDrivers_DocumentRetrievalDriver: ");
-    WriteMessage (aMethStr + "warning: Geometry is not supported by Lite schema. ");
+    myMsgDriver->Send (aMethStr + "warning: Geometry is not supported by Lite schema. ", Message_Warning);
   }
 }
 
@@ -482,8 +468,8 @@ void BinLDrivers_DocumentRetrievalDriver::ReadShapeSection
 //purpose  : 
 //=======================================================================
 void BinLDrivers_DocumentRetrievalDriver::CheckShapeSection(
-				  const Storage_Position& ShapeSectionPos, 
-						    Standard_IStream& IS)
+                                          const Storage_Position& ShapeSectionPos, 
+                                          Standard_IStream& IS)
 {
   if (!IS.eof())
   {
@@ -493,7 +479,7 @@ void BinLDrivers_DocumentRetrievalDriver::CheckShapeSection(
 #endif
     if(ShapeSectionPos != endPos) {
       const TCollection_ExtendedString aMethStr ("BinLDrivers_DocumentRetrievalDriver: ");
-      WriteMessage (aMethStr + "warning: Geometry is not supported by Lite schema. ");
+      myMsgDriver->Send (aMethStr + "warning: Geometry is not supported by Lite schema. ", Message_Warning);
     }
   }
 }
diff --git a/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.hxx b/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.hxx
index bf0294b65e..b9705779d9 100644
--- a/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.hxx
+++ b/src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.hxx
@@ -31,7 +31,7 @@
 #include <Storage_Data.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TCollection_ExtendedString;
 class PCDM_Document;
 class CDM_Document;
@@ -66,7 +66,7 @@ public:
                                      const Handle(CDM_Document)&     theDoc,
                                      const Handle(CDM_Application)&  theApplication) Standard_OVERRIDE;
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
 
 
 
@@ -101,20 +101,15 @@ protected:
   //! The default implementation: if the version of the file is greater than the
   //! current or lesser than 2, then return false, else true
   Standard_EXPORT virtual Standard_Boolean CheckDocumentVersion (const Standard_Integer theFileVersion, const Standard_Integer theCurVersion);
-  
-  //! write  theMessage  to  the  MessageDriver  of  the
-  //! Application
-  Standard_EXPORT void WriteMessage (const TCollection_ExtendedString& theMessage);
 
   Handle(BinMDF_ADriverTable) myDrivers;
   BinObjMgt_RRelocationTable myRelocTable;
-
+  Handle(Message_Messenger) myMsgDriver;
 
 private:
 
 
   BinObjMgt_Persistent myPAtt;
-  Handle(CDM_MessageDriver) myMsgDriver;
   TColStd_MapOfInteger myMapUnsupported;
   BinLDrivers_VectorOfDocumentSection mySections;
 
diff --git a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx
index a8313f614c..5249b056de 100644
--- a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx
+++ b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx
@@ -23,7 +23,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <FSD_BinaryFile.hxx>
 #include <FSD_FileHeader.hxx>
 #include <OSD_OpenFile.hxx>
@@ -158,7 +158,7 @@ void BinLDrivers_DocumentStorageDriver::Write (const Handle(CDM_Document)& theDo
     if (!myRelocTable.Extent()) {
       // No objects written
 #ifdef OCCT_DEBUG
-      WriteMessage ("BinLDrivers_DocumentStorageDriver, no objects written");
+      myMsgDriver->Send ("BinLDrivers_DocumentStorageDriver, no objects written", Message_Info);
 #endif
       SetIsError(Standard_True);
       SetStoreStatus(PCDM_SS_No_Obj);
@@ -168,9 +168,8 @@ void BinLDrivers_DocumentStorageDriver::Write (const Handle(CDM_Document)& theDo
     if (!theOStream) {
       // A problem with the stream
 #ifdef OCCT_DEBUG
-      TCollection_ExtendedString anErrorStr ("Error: ");
-      WriteMessage (anErrorStr + "BinLDrivers_DocumentStorageDriver, Problem with the file stream, rdstate="
-                    + (Standard_Integer )theOStream.rdstate());
+      TCollection_ExtendedString anErrorStr ("BinLDrivers_DocumentStorageDriver, Problem with the file stream, rdstate = ");
+      myMsgDriver->Send (anErrorStr + (Standard_Integer )theOStream.rdstate(), Message_Info);
 #endif
       SetIsError(Standard_True);
       SetStoreStatus(PCDM_SS_WriteFailure);
@@ -194,7 +193,7 @@ void BinLDrivers_DocumentStorageDriver::UnsupportedAttrMsg
   if (!myMapUnsupported.Contains(theType)) {
     myMapUnsupported.Add(theType);
 #ifdef OCCT_DEBUG
-    WriteMessage (aMsg + theType->Name() + " not found");
+    myMsgDriver->Send (aMsg + theType->Name() + " not found", Message_Info);
 #endif
   }
 }
@@ -281,7 +280,7 @@ void BinLDrivers_DocumentStorageDriver::WriteSubTree
 //=======================================================================
 
 Handle(BinMDF_ADriverTable) BinLDrivers_DocumentStorageDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver)
+       (const Handle(Message_Messenger)& theMessageDriver)
 {
   return BinLDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -479,19 +478,6 @@ void BinLDrivers_DocumentStorageDriver::WriteInfoSection
   
 }
 
-//=======================================================================
-//function : WriteMessage
-//purpose  : write  theMessage  to  the  MessageDriver  of  the
-//           Application
-//=======================================================================
-
-void BinLDrivers_DocumentStorageDriver::WriteMessage
-                         (const TCollection_ExtendedString& theMsg)
-{
-  if (!myMsgDriver.IsNull())
-    myMsgDriver->Write (theMsg.ToExtString());
-}
-
 //=======================================================================
 //function : AddSection
 //purpose  :
diff --git a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.hxx b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.hxx
index be8083a5ff..c95198f3cf 100644
--- a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.hxx
+++ b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.hxx
@@ -30,7 +30,7 @@
 #include <Standard_Boolean.hxx>
 #include <Standard_Type.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TCollection_ExtendedString;
 class CDM_Document;
 class TDF_Label;
@@ -57,7 +57,7 @@ public:
   //! Write <theDocument> to theOStream
   Standard_EXPORT virtual void Write (const Handle(CDM_Document)& theDocument, Standard_OStream& theOStream) Standard_OVERRIDE;
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
   
   //! Create a section that should be written after the OCAF data
   Standard_EXPORT void AddSection (const TCollection_AsciiString& theName, const Standard_Boolean isPostRead = Standard_True);
@@ -78,14 +78,10 @@ protected:
   
   //! defines the procedure of writing a shape  section to file
   Standard_EXPORT virtual void WriteShapeSection (BinLDrivers_DocumentSection& theDocSection, Standard_OStream& theOS);
-  
-  //! write  theMessage  to  the  MessageDriver  of  the
-  //! Application
-  Standard_EXPORT void WriteMessage (const TCollection_ExtendedString& theMessage);
 
   Handle(BinMDF_ADriverTable) myDrivers;
   BinObjMgt_SRelocationTable myRelocTable;
-
+  Handle(Message_Messenger) myMsgDriver;
 
 private:
 
@@ -102,7 +98,6 @@ private:
   Standard_EXPORT void UnsupportedAttrMsg (const Handle(Standard_Type)& theType);
 
   BinObjMgt_Persistent myPAtt;
-  Handle(CDM_MessageDriver) myMsgDriver;
   TDF_LabelList myEmptyLabels;
   TColStd_MapOfTransient myMapUnsupported;
   TColStd_IndexedMapOfTransient myTypesMap;
diff --git a/src/BinMDF/BinMDF.cxx b/src/BinMDF/BinMDF.cxx
index 60a794230f..4ec3aa37a4 100644
--- a/src/BinMDF/BinMDF.cxx
+++ b/src/BinMDF/BinMDF.cxx
@@ -18,14 +18,14 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinMDF_ReferenceDriver.hxx>
 #include <BinMDF_TagSourceDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 //=======================================================================
 //function : AddDrivers
 //purpose  : 
 //=======================================================================
 void BinMDF::AddDrivers (const Handle(BinMDF_ADriverTable)& aDriverTable,
-                         const Handle(CDM_MessageDriver)&   aMsgDrv)
+                         const Handle(Message_Messenger)&   aMsgDrv)
 {
   aDriverTable->AddDriver (new BinMDF_ReferenceDriver (aMsgDrv) );
   aDriverTable->AddDriver (new BinMDF_TagSourceDriver (aMsgDrv) );
diff --git a/src/BinMDF/BinMDF.hxx b/src/BinMDF/BinMDF.hxx
index 23c441bfff..eeb43b5226 100644
--- a/src/BinMDF/BinMDF.hxx
+++ b/src/BinMDF/BinMDF.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMDF_ADriver;
 class BinMDF_ReferenceDriver;
 class BinMDF_TagSourceDriver;
@@ -52,7 +52,7 @@ public:
 
   
   //! Adds the attribute storage drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& aMsgDrv);
 
 
 
diff --git a/src/BinMDF/BinMDF_ADriver.cxx b/src/BinMDF/BinMDF_ADriver.cxx
index df5a8c069b..8786c67f76 100644
--- a/src/BinMDF/BinMDF_ADriver.cxx
+++ b/src/BinMDF/BinMDF_ADriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDF_ADriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
@@ -28,20 +28,10 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDF_ADriver,Standard_Transient)
 //function : BinMDF_ADriver
 //purpose  : Constructor
 //=======================================================================
-BinMDF_ADriver::BinMDF_ADriver (const Handle(CDM_MessageDriver)& theMsgDriver,
+BinMDF_ADriver::BinMDF_ADriver (const Handle(Message_Messenger)& theMsgDriver,
                                 const Standard_CString           theName)
      : myMessageDriver (theMsgDriver)
 {
   if (theName)
     myTypeName = theName;
-}
-//=======================================================================
-//function : WriteMessage
-//purpose  :
-//=======================================================================
-
-void BinMDF_ADriver::WriteMessage
-                              (const TCollection_ExtendedString& aMessage) const
-{
-  myMessageDriver -> Write (aMessage.ToExtString());
-}
+}
\ No newline at end of file
diff --git a/src/BinMDF/BinMDF_ADriver.hxx b/src/BinMDF/BinMDF_ADriver.hxx
index 8c06fd138a..ba63dfafe4 100644
--- a/src/BinMDF/BinMDF_ADriver.hxx
+++ b/src/BinMDF/BinMDF_ADriver.hxx
@@ -26,7 +26,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class TCollection_AsciiString;
 class BinObjMgt_Persistent;
@@ -62,11 +62,6 @@ public:
   //! into <aTarget>, using the relocation table
   //! <aRelocTable> to keep the sharings.
   Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& aSource, BinObjMgt_Persistent& aTarget, BinObjMgt_SRelocationTable& aRelocTable) const = 0;
-  
-  //! Send message to Application (usually when error occurres)
-  Standard_EXPORT void WriteMessage (const TCollection_ExtendedString& theMessage) const;
-
-
 
 
   DEFINE_STANDARD_RTTIEXT(BinMDF_ADriver,Standard_Transient)
@@ -74,15 +69,11 @@ public:
 protected:
 
   
-  Standard_EXPORT BinMDF_ADriver(const Handle(CDM_MessageDriver)& theMsgDriver, const Standard_CString theName = NULL);
+  Standard_EXPORT BinMDF_ADriver(const Handle(Message_Messenger)& theMsgDriver, const Standard_CString theName = NULL);
 
   TCollection_AsciiString myTypeName;
 
-
-private:
-
-
-  Handle(CDM_MessageDriver) myMessageDriver;
+  Handle(Message_Messenger) myMessageDriver;
 
 
 };
diff --git a/src/BinMDF/BinMDF_ReferenceDriver.cxx b/src/BinMDF/BinMDF_ReferenceDriver.cxx
index 178be2b922..08e5d0903c 100644
--- a/src/BinMDF/BinMDF_ReferenceDriver.cxx
+++ b/src/BinMDF/BinMDF_ReferenceDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDF_ReferenceDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_Reference.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDF_ReferenceDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDF_ReferenceDriver::BinMDF_ReferenceDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDF_Reference)->Name())
 {
 }
diff --git a/src/BinMDF/BinMDF_ReferenceDriver.hxx b/src/BinMDF/BinMDF_ReferenceDriver.hxx
index d525618c5a..959bc321aa 100644
--- a/src/BinMDF/BinMDF_ReferenceDriver.hxx
+++ b/src/BinMDF/BinMDF_ReferenceDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDF_ReferenceDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDF_ReferenceDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDF_ReferenceDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDF/BinMDF_TagSourceDriver.cxx b/src/BinMDF/BinMDF_TagSourceDriver.cxx
index 946e85e875..ad444faa59 100644
--- a/src/BinMDF/BinMDF_TagSourceDriver.cxx
+++ b/src/BinMDF/BinMDF_TagSourceDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDF_TagSourceDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_TagSource.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDF_TagSourceDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDF_TagSourceDriver::BinMDF_TagSourceDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDF/BinMDF_TagSourceDriver.hxx b/src/BinMDF/BinMDF_TagSourceDriver.hxx
index 455a0c27ba..83d217010b 100644
--- a/src/BinMDF/BinMDF_TagSourceDriver.hxx
+++ b/src/BinMDF/BinMDF_TagSourceDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDF_TagSourceDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDF_TagSourceDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDF_TagSourceDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd.cxx b/src/BinMDataStd/BinMDataStd.cxx
index 9885934ebe..c0c361157d 100644
--- a/src/BinMDataStd/BinMDataStd.cxx
+++ b/src/BinMDataStd/BinMDataStd.cxx
@@ -42,7 +42,7 @@
 #include <BinMDataStd_UAttributeDriver.hxx>
 #include <BinMDataStd_VariableDriver.hxx>
 #include <BinMDF_ADriverTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 static Standard_Integer myDocumentVersion = -1;
 //=======================================================================
@@ -51,7 +51,7 @@ static Standard_Integer myDocumentVersion = -1;
 //=======================================================================
 
 void BinMDataStd::AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable,
-                              const Handle(CDM_MessageDriver)&   theMsgDriver)
+                              const Handle(Message_Messenger)&   theMsgDriver)
 {
   theDriverTable->AddDriver (new BinMDataStd_CommentDriver     (theMsgDriver) );
   theDriverTable->AddDriver (new BinMDataStd_ExpressionDriver  (theMsgDriver) );
diff --git a/src/BinMDataStd/BinMDataStd.hxx b/src/BinMDataStd/BinMDataStd.hxx
index bef76cfed3..659ef2fdda 100644
--- a/src/BinMDataStd/BinMDataStd.hxx
+++ b/src/BinMDataStd/BinMDataStd.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_Persistent.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMDataStd_NameDriver;
 class BinMDataStd_IntegerDriver;
 class BinMDataStd_RealDriver;
@@ -61,7 +61,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& aMsgDrv);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/BinMDataStd/BinMDataStd_AsciiStringDriver.cxx b/src/BinMDataStd/BinMDataStd_AsciiStringDriver.cxx
index d95c89bfbd..c4346df6e9 100644
--- a/src/BinMDataStd/BinMDataStd_AsciiStringDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_AsciiStringDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_AsciiString.hxx>
 #include <TDF_Attribute.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_AsciiStringDriver,BinMDF_ADriver)
 //purpose  :
 //=======================================================================
 BinMDataStd_AsciiStringDriver::BinMDataStd_AsciiStringDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
      : BinMDF_ADriver (theMessageDriver, STANDARD_TYPE(TDataStd_AsciiString)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_AsciiStringDriver.hxx b/src/BinMDataStd/BinMDataStd_AsciiStringDriver.hxx
index e771af431d..35c5b041d3 100644
--- a/src/BinMDataStd/BinMDataStd_AsciiStringDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_AsciiStringDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_AsciiStringDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_AsciiStringDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_AsciiStringDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.cxx
index 7bddede73a..347ce54cf1 100644
--- a/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_BooleanArrayDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfInteger.hxx>
 #include <TColStd_HArray1OfByte.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_BooleanArrayDriver,BinMDF_ADriver)
 //function : BinMDataStd_BooleanArrayDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_BooleanArrayDriver::BinMDataStd_BooleanArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_BooleanArrayDriver::BinMDataStd_BooleanArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_BooleanArray)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.hxx
index c56bc52ac9..59896282ce 100644
--- a/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_BooleanArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_BooleanArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_BooleanArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_BooleanArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_BooleanListDriver.cxx b/src/BinMDataStd/BinMDataStd_BooleanListDriver.cxx
index 974ed9e8b9..f07a5b36e8 100644
--- a/src/BinMDataStd/BinMDataStd_BooleanListDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_BooleanListDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_BooleanListDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfByte.hxx>
 #include <TDataStd_BooleanList.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_BooleanListDriver,BinMDF_ADriver)
 //function : BinMDataStd_BooleanListDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_BooleanListDriver::BinMDataStd_BooleanListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_BooleanListDriver::BinMDataStd_BooleanListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_BooleanList)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_BooleanListDriver.hxx b/src/BinMDataStd/BinMDataStd_BooleanListDriver.hxx
index 9c1304d832..26883050fb 100644
--- a/src/BinMDataStd/BinMDataStd_BooleanListDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_BooleanListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_BooleanListDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_BooleanListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_BooleanListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ByteArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_ByteArrayDriver.cxx
index 2651f19dd8..6f0cc7d92d 100644
--- a/src/BinMDataStd/BinMDataStd_ByteArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ByteArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd.hxx>
 #include <BinMDataStd_ByteArrayDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfInteger.hxx>
 #include <TColStd_HArray1OfByte.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ByteArrayDriver,BinMDF_ADriver)
 //function : BinMDataStd_ByteArrayDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_ByteArrayDriver::BinMDataStd_ByteArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_ByteArrayDriver::BinMDataStd_ByteArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_ByteArray)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_ByteArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_ByteArrayDriver.hxx
index 0a2c09fc30..b3f324e7d6 100644
--- a/src/BinMDataStd/BinMDataStd_ByteArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ByteArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ByteArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ByteArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ByteArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_CommentDriver.cxx b/src/BinMDataStd/BinMDataStd_CommentDriver.cxx
index bb3001249f..cf3a932005 100644
--- a/src/BinMDataStd/BinMDataStd_CommentDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_CommentDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_CommentDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Comment.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_CommentDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_CommentDriver::BinMDataStd_CommentDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_CommentDriver.hxx b/src/BinMDataStd/BinMDataStd_CommentDriver.hxx
index 515e31b89c..93fc8951a1 100644
--- a/src/BinMDataStd/BinMDataStd_CommentDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_CommentDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_CommentDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_CommentDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_CommentDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_DirectoryDriver.cxx b/src/BinMDataStd/BinMDataStd_DirectoryDriver.cxx
index 1b2eba6450..1ebcb40ced 100644
--- a/src/BinMDataStd/BinMDataStd_DirectoryDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_DirectoryDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Directory.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_DirectoryDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataStd_DirectoryDriver::BinMDataStd_DirectoryDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_Directory)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_DirectoryDriver.hxx b/src/BinMDataStd/BinMDataStd_DirectoryDriver.hxx
index f13a201a77..c91a36e986 100644
--- a/src/BinMDataStd/BinMDataStd_DirectoryDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_DirectoryDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_DirectoryDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_DirectoryDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_DirectoryDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ExpressionDriver.cxx b/src/BinMDataStd/BinMDataStd_ExpressionDriver.cxx
index 9b841d0ce6..cc9b08f380 100644
--- a/src/BinMDataStd/BinMDataStd_ExpressionDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ExpressionDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_ExpressionDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Expression.hxx>
 #include <TDataStd_Variable.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ExpressionDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_ExpressionDriver::BinMDataStd_ExpressionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_ExpressionDriver.hxx b/src/BinMDataStd/BinMDataStd_ExpressionDriver.hxx
index 657f26964e..bae055c967 100644
--- a/src/BinMDataStd/BinMDataStd_ExpressionDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ExpressionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ExpressionDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ExpressionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ExpressionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.cxx
index e208f8ac5d..32140aff6b 100644
--- a/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd.hxx>
 #include <BinMDataStd_ExtStringArrayDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfExtendedString.hxx>
 #include <TColStd_HArray1OfExtendedString.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ExtStringArrayDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_ExtStringArrayDriver::BinMDataStd_ExtStringArrayDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_ExtStringArray)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.hxx
index 7075688329..d75d45b93d 100644
--- a/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ExtStringArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ExtStringArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ExtStringArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ExtStringArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ExtStringListDriver.cxx b/src/BinMDataStd/BinMDataStd_ExtStringListDriver.cxx
index 1df22371a6..35c3724dad 100644
--- a/src/BinMDataStd/BinMDataStd_ExtStringListDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ExtStringListDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_ExtStringListDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfExtendedString.hxx>
 #include <TDataStd_ExtStringList.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ExtStringListDriver,BinMDF_ADriver)
 //function : BinMDataStd_ExtStringListDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_ExtStringListDriver::BinMDataStd_ExtStringListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_ExtStringListDriver::BinMDataStd_ExtStringListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_ExtStringList)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_ExtStringListDriver.hxx b/src/BinMDataStd/BinMDataStd_ExtStringListDriver.hxx
index 909cace4a2..4dc4d76001 100644
--- a/src/BinMDataStd/BinMDataStd_ExtStringListDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ExtStringListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ExtStringListDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ExtStringListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ExtStringListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.cxx b/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.cxx
index ccc5e91e64..ce8004c716 100644
--- a/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.cxx
@@ -20,7 +20,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <TColStd_HPackedMapOfInteger.hxx>
@@ -36,7 +36,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_IntPackedMapDriver,BinMDF_ADriver)
 //purpose  :
 //=======================================================================
 BinMDataStd_IntPackedMapDriver::BinMDataStd_IntPackedMapDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
      : BinMDF_ADriver (theMessageDriver, STANDARD_TYPE(TDataStd_IntPackedMap)->Name())
 {
 }
@@ -63,13 +63,13 @@ Standard_Boolean BinMDataStd_IntPackedMapDriver::Paste
 {
   Handle(TDataStd_IntPackedMap) aTagAtt = Handle(TDataStd_IntPackedMap)::DownCast(Target);
   if(aTagAtt.IsNull()) {
-    WriteMessage (TCollection_ExtendedString("IntPackedMapDriver:: The target attribute is Null."));
+    myMessageDriver->Send ("IntPackedMapDriver:: The target attribute is Null.", Message_Fail);
     return Standard_False;
   }
 
   Standard_Integer aSize = 0;
   if (! (Source >> aSize)) {
-    WriteMessage (TCollection_ExtendedString("Cannot retrieve size for IntPackedMap attribute."));
+    myMessageDriver->Send ("Cannot retrieve size for IntPackedMap attribute.", Message_Fail);
     return Standard_False;
   }
   if(aSize) {
@@ -78,7 +78,7 @@ Standard_Boolean BinMDataStd_IntPackedMapDriver::Paste
     for(Standard_Integer i = 0; i< aSize; i++) {
       Standard_Boolean ok = Source >> aKey;
       if (!ok) {
-	WriteMessage ("Cannot retrieve integer member for IntPackedMap attribute.");
+	myMessageDriver->Send ("Cannot retrieve integer member for IntPackedMap attribute.", Message_Fail);
 	return Standard_False;
       }
       if(!aHMap->ChangeMap().Add( aKey )) return Standard_False;
@@ -110,7 +110,7 @@ void BinMDataStd_IntPackedMapDriver::Paste
 {
   Handle(TDataStd_IntPackedMap) anAtt = Handle(TDataStd_IntPackedMap)::DownCast(Source);
   if (anAtt.IsNull()) {
-    WriteMessage ("IntPackedMapDriver:: The source attribute is Null.");
+    myMessageDriver->Send ("IntPackedMapDriver:: The source attribute is Null.", Message_Fail);
     return;
   }
   Standard_Integer aSize = (anAtt->IsEmpty()) ? 0 : anAtt->Extent();
diff --git a/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.hxx b/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.hxx
index 8194122f43..de07d74255 100644
--- a/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_IntPackedMapDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_IntPackedMapDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_IntPackedMapDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_IntPackedMapDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.cxx
index 29f44e5da9..408410c9b2 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd.hxx>
 #include <BinMDataStd_IntegerArrayDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_HArray1OfInteger.hxx>
 #include <TDataStd_IntegerArray.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_IntegerArrayDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_IntegerArrayDriver::BinMDataStd_IntegerArrayDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_IntegerArray)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.hxx
index 582fdadb3f..64307414b9 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_IntegerArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_IntegerArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_IntegerArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_IntegerDriver.cxx b/src/BinMDataStd/BinMDataStd_IntegerDriver.cxx
index b963ca6bbd..5ddca9fd05 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_IntegerDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Integer.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_IntegerDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_IntegerDriver::BinMDataStd_IntegerDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_Integer)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_IntegerDriver.hxx b/src/BinMDataStd/BinMDataStd_IntegerDriver.hxx
index 9fbd27e998..0c8d672bf4 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_IntegerDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_IntegerDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_IntegerDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_IntegerListDriver.cxx b/src/BinMDataStd/BinMDataStd_IntegerListDriver.cxx
index 6945304675..cc94ed2020 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerListDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerListDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_IntegerListDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfInteger.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_IntegerListDriver,BinMDF_ADriver)
 //function : BinMDataStd_IntegerListDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_IntegerListDriver::BinMDataStd_IntegerListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_IntegerListDriver::BinMDataStd_IntegerListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_IntegerList)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_IntegerListDriver.hxx b/src/BinMDataStd/BinMDataStd_IntegerListDriver.hxx
index 23bc69e3ab..09614dbeb2 100644
--- a/src/BinMDataStd/BinMDataStd_IntegerListDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_IntegerListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_IntegerListDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_IntegerListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_IntegerListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_NameDriver.cxx b/src/BinMDataStd/BinMDataStd_NameDriver.cxx
index 96817dcfaa..25531e837b 100644
--- a/src/BinMDataStd/BinMDataStd_NameDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_NameDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_NameDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Name.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_NameDriver,BinMDF_ADriver)
 //purpose  :
 //=======================================================================
 BinMDataStd_NameDriver::BinMDataStd_NameDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
      : BinMDF_ADriver (theMessageDriver, STANDARD_TYPE(TDataStd_Name)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_NameDriver.hxx b/src/BinMDataStd/BinMDataStd_NameDriver.hxx
index 19e20fc750..86e89a6cd7 100644
--- a/src/BinMDataStd/BinMDataStd_NameDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_NameDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_NameDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_NameDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_NameDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_NamedDataDriver.cxx b/src/BinMDataStd/BinMDataStd_NamedDataDriver.cxx
index cf463bc498..15e64a4b00 100644
--- a/src/BinMDataStd/BinMDataStd_NamedDataDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_NamedDataDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_NamedDataDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <TColStd_DataMapIteratorOfDataMapOfStringInteger.hxx>
@@ -42,7 +42,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_NamedDataDriver,BinMDF_ADriver)
 //function : BinMDataStd_NamedDataDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_NamedDataDriver::BinMDataStd_NamedDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_NamedDataDriver::BinMDataStd_NamedDataDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_NamedData)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_NamedDataDriver.hxx b/src/BinMDataStd/BinMDataStd_NamedDataDriver.hxx
index a66d2f9515..835548de22 100644
--- a/src/BinMDataStd/BinMDataStd_NamedDataDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_NamedDataDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_NamedDataDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_NamedDataDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_NamedDataDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_NoteBookDriver.cxx b/src/BinMDataStd/BinMDataStd_NoteBookDriver.cxx
index d369ba629c..35c536c074 100644
--- a/src/BinMDataStd/BinMDataStd_NoteBookDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_NoteBookDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_NoteBook.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_NoteBookDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataStd_NoteBookDriver::BinMDataStd_NoteBookDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_NoteBook)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_NoteBookDriver.hxx b/src/BinMDataStd/BinMDataStd_NoteBookDriver.hxx
index 415a0a318f..11dee1ab31 100644
--- a/src/BinMDataStd/BinMDataStd_NoteBookDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_NoteBookDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_NoteBookDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_NoteBookDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_NoteBookDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_RealArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_RealArrayDriver.cxx
index b0eafdb217..fa43a79032 100644
--- a/src/BinMDataStd/BinMDataStd_RealArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_RealArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd.hxx>
 #include <BinMDataStd_RealArrayDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_HArray1OfReal.hxx>
 #include <TDataStd_RealArray.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_RealArrayDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_RealArrayDriver::BinMDataStd_RealArrayDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_RealArray)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_RealArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_RealArrayDriver.hxx
index 0dc82103b7..91693010c6 100644
--- a/src/BinMDataStd/BinMDataStd_RealArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_RealArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_RealArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_RealArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_RealArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_RealDriver.cxx b/src/BinMDataStd/BinMDataStd_RealDriver.cxx
index a987ccbc3c..e147eec9a8 100644
--- a/src/BinMDataStd/BinMDataStd_RealDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_RealDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_RealDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Real.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_RealDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_RealDriver::BinMDataStd_RealDriver 
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_Real)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_RealDriver.hxx b/src/BinMDataStd/BinMDataStd_RealDriver.hxx
index 51801a5614..33e05c46ed 100644
--- a/src/BinMDataStd/BinMDataStd_RealDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_RealDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_RealDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_RealDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_RealDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_RealListDriver.cxx b/src/BinMDataStd/BinMDataStd_RealListDriver.cxx
index 957ca3ef51..a1c4a1918d 100644
--- a/src/BinMDataStd/BinMDataStd_RealListDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_RealListDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_RealListDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfReal.hxx>
 #include <TColStd_ListIteratorOfListOfReal.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_RealListDriver,BinMDF_ADriver)
 //function : BinMDataStd_RealListDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_RealListDriver::BinMDataStd_RealListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_RealListDriver::BinMDataStd_RealListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_RealList)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_RealListDriver.hxx b/src/BinMDataStd/BinMDataStd_RealListDriver.hxx
index 5353092fda..ac9e47a653 100644
--- a/src/BinMDataStd/BinMDataStd_RealListDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_RealListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_RealListDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_RealListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_RealListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.cxx b/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.cxx
index 57b2490d13..c1d47a7466 100644
--- a/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_ReferenceArrayDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ReferenceArray.hxx>
 #include <TDF_Attribute.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ReferenceArrayDriver,BinMDF_ADriver)
 //function : BinMDataStd_ReferenceArrayDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_ReferenceArrayDriver::BinMDataStd_ReferenceArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_ReferenceArrayDriver::BinMDataStd_ReferenceArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_ReferenceArray)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.hxx b/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.hxx
index dc6e605dfa..004511149b 100644
--- a/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ReferenceArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ReferenceArrayDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ReferenceArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ReferenceArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_ReferenceListDriver.cxx b/src/BinMDataStd/BinMDataStd_ReferenceListDriver.cxx
index 3f43858cf0..3105ec5f6e 100644
--- a/src/BinMDataStd/BinMDataStd_ReferenceListDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_ReferenceListDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDataStd_ReferenceListDriver.hxx>
 #include <BinMDataStd.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ReferenceList.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_ReferenceListDriver,BinMDF_ADriver)
 //function : BinMDataStd_ReferenceListDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataStd_ReferenceListDriver::BinMDataStd_ReferenceListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_ReferenceListDriver::BinMDataStd_ReferenceListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_ReferenceList)->Name())
 {
 
diff --git a/src/BinMDataStd/BinMDataStd_ReferenceListDriver.hxx b/src/BinMDataStd/BinMDataStd_ReferenceListDriver.hxx
index 81ddaa688a..2436cb7348 100644
--- a/src/BinMDataStd/BinMDataStd_ReferenceListDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_ReferenceListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_ReferenceListDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_ReferenceListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_ReferenceListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_RelationDriver.cxx b/src/BinMDataStd/BinMDataStd_RelationDriver.cxx
index 25120e9152..581a073455 100644
--- a/src/BinMDataStd/BinMDataStd_RelationDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_RelationDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_RelationDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Relation.hxx>
 #include <TDataStd_Variable.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_RelationDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_RelationDriver::BinMDataStd_RelationDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_RelationDriver.hxx b/src/BinMDataStd/BinMDataStd_RelationDriver.hxx
index ca6915b608..eee881ecf1 100644
--- a/src/BinMDataStd/BinMDataStd_RelationDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_RelationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_RelationDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_RelationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_RelationDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_TickDriver.cxx b/src/BinMDataStd/BinMDataStd_TickDriver.cxx
index 2421395f89..278432d191 100644
--- a/src/BinMDataStd/BinMDataStd_TickDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_TickDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Tick.hxx>
 #include <TDF_Attribute.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_TickDriver,BinMDF_ADriver)
 //function : BinMDataStd_TickDriver
 //purpose  : 
 //=======================================================================
-BinMDataStd_TickDriver::BinMDataStd_TickDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataStd_TickDriver::BinMDataStd_TickDriver(const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_Tick)->Name())
 {
 }
diff --git a/src/BinMDataStd/BinMDataStd_TickDriver.hxx b/src/BinMDataStd/BinMDataStd_TickDriver.hxx
index 3fe9c31283..430d9727b6 100644
--- a/src/BinMDataStd/BinMDataStd_TickDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_TickDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_TickDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_TickDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_TickDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_TreeNodeDriver.cxx b/src/BinMDataStd/BinMDataStd_TreeNodeDriver.cxx
index f09471894b..48ab0a253e 100644
--- a/src/BinMDataStd/BinMDataStd_TreeNodeDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_TreeNodeDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_TreeNodeDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <TDataStd_TreeNode.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_TreeNodeDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_TreeNodeDriver::BinMDataStd_TreeNodeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_TreeNodeDriver.hxx b/src/BinMDataStd/BinMDataStd_TreeNodeDriver.hxx
index 8bcd2e3c2e..b272da2c64 100644
--- a/src/BinMDataStd/BinMDataStd_TreeNodeDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_TreeNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_TreeNodeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_TreeNodeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_TreeNodeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_UAttributeDriver.cxx b/src/BinMDataStd/BinMDataStd_UAttributeDriver.cxx
index 9e1fa27feb..7500f36b24 100644
--- a/src/BinMDataStd/BinMDataStd_UAttributeDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_UAttributeDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_UAttributeDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_UAttribute.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_UAttributeDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_UAttributeDriver::BinMDataStd_UAttributeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_UAttributeDriver.hxx b/src/BinMDataStd/BinMDataStd_UAttributeDriver.hxx
index b71d5d0abf..47742f48df 100644
--- a/src/BinMDataStd/BinMDataStd_UAttributeDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_UAttributeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_UAttributeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_UAttributeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_UAttributeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataStd/BinMDataStd_VariableDriver.cxx b/src/BinMDataStd/BinMDataStd_VariableDriver.cxx
index 96d2cc353b..ccc2dbc411 100644
--- a/src/BinMDataStd/BinMDataStd_VariableDriver.cxx
+++ b/src/BinMDataStd/BinMDataStd_VariableDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMDataStd_VariableDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TDataStd_Variable.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataStd_VariableDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataStd_VariableDriver::BinMDataStd_VariableDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataStd/BinMDataStd_VariableDriver.hxx b/src/BinMDataStd/BinMDataStd_VariableDriver.hxx
index 2406c33945..57b07d8782 100644
--- a/src/BinMDataStd/BinMDataStd_VariableDriver.hxx
+++ b/src/BinMDataStd/BinMDataStd_VariableDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataStd_VariableDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataStd_VariableDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataStd_VariableDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd.cxx b/src/BinMDataXtd/BinMDataXtd.cxx
index 10402c0af8..7b967f73e5 100644
--- a/src/BinMDataXtd/BinMDataXtd.cxx
+++ b/src/BinMDataXtd/BinMDataXtd.cxx
@@ -25,7 +25,7 @@
 #include <BinMDataXtd_PointDriver.hxx>
 #include <BinMDataXtd_ShapeDriver.hxx>
 #include <BinMDF_ADriverTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <BinMDataXtd_PresentationDriver.hxx>
 #include <BinMDataXtd_PositionDriver.hxx>
 #include <BinMDataXtd_TriangulationDriver.hxx>
@@ -37,7 +37,7 @@ static Standard_Integer myDocumentVersion = -1;
 //=======================================================================
 
 void BinMDataXtd::AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable,
-                              const Handle(CDM_MessageDriver)&   theMsgDriver)
+                              const Handle(Message_Messenger)&   theMsgDriver)
 {
   theDriverTable->AddDriver (new BinMDataXtd_ConstraintDriver   (theMsgDriver) );
   theDriverTable->AddDriver (new BinMDataXtd_GeometryDriver     (theMsgDriver) );
diff --git a/src/BinMDataXtd/BinMDataXtd.hxx b/src/BinMDataXtd/BinMDataXtd.hxx
index cddf90b974..a4f1ac8c62 100644
--- a/src/BinMDataXtd/BinMDataXtd.hxx
+++ b/src/BinMDataXtd/BinMDataXtd.hxx
@@ -22,7 +22,7 @@
 
 #include <Standard_Integer.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMDataXtd_PointDriver;
 class BinMDataXtd_AxisDriver;
 class BinMDataXtd_PlaneDriver;
@@ -42,7 +42,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& aMsgDrv);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/BinMDataXtd/BinMDataXtd_AxisDriver.cxx b/src/BinMDataXtd/BinMDataXtd_AxisDriver.cxx
index a0a60c6eaf..149d3c88f2 100644
--- a/src/BinMDataXtd/BinMDataXtd_AxisDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_AxisDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Axis.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_AxisDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataXtd_AxisDriver::BinMDataXtd_AxisDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Axis)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_AxisDriver.hxx b/src/BinMDataXtd/BinMDataXtd_AxisDriver.hxx
index 121867460a..8af19ce9d2 100644
--- a/src/BinMDataXtd/BinMDataXtd_AxisDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_AxisDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_AxisDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_AxisDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_AxisDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.cxx b/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.cxx
index 47ce2b4340..bdd79dc540 100644
--- a/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.cxx
@@ -17,7 +17,7 @@
 
 #include <BinMDataXtd_ConstraintDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Real.hxx>
 #include <TDataXtd_Constraint.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_ConstraintDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataXtd_ConstraintDriver::BinMDataXtd_ConstraintDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.hxx b/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.hxx
index 6ee9f7da15..7a66e74a6d 100644
--- a/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_ConstraintDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_ConstraintDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_ConstraintDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_ConstraintDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_GeometryDriver.cxx b/src/BinMDataXtd/BinMDataXtd_GeometryDriver.cxx
index 6d320700ac..5144b187a6 100644
--- a/src/BinMDataXtd/BinMDataXtd_GeometryDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_GeometryDriver.cxx
@@ -17,7 +17,7 @@
 
 #include <BinMDataXtd_GeometryDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Geometry.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_GeometryDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataXtd_GeometryDriver::BinMDataXtd_GeometryDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataXtd/BinMDataXtd_GeometryDriver.hxx b/src/BinMDataXtd/BinMDataXtd_GeometryDriver.hxx
index 4a4072459f..0cf882c087 100644
--- a/src/BinMDataXtd/BinMDataXtd_GeometryDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_GeometryDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_GeometryDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_GeometryDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_GeometryDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.cxx
index db75226088..72a6bfcb1d 100644
--- a/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.cxx
@@ -17,7 +17,7 @@
 
 #include <BinMDataXtd_PatternStdDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Integer.hxx>
 #include <TDataStd_Real.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PatternStdDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataXtd_PatternStdDriver::BinMDataXtd_PatternStdDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : BinMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.hxx
index ca12d14725..51c3f45b32 100644
--- a/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PatternStdDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_PatternStdDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PatternStdDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PatternStdDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PlacementDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PlacementDriver.cxx
index 7af4277755..51ff6b349c 100644
--- a/src/BinMDataXtd/BinMDataXtd_PlacementDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PlacementDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Placement.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PlacementDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataXtd_PlacementDriver::BinMDataXtd_PlacementDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Placement)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_PlacementDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PlacementDriver.hxx
index 1a03b22a72..8378a0fe89 100644
--- a/src/BinMDataXtd/BinMDataXtd_PlacementDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PlacementDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_PlacementDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PlacementDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PlacementDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PlaneDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PlaneDriver.cxx
index 8c460140d5..75beee8412 100644
--- a/src/BinMDataXtd/BinMDataXtd_PlaneDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PlaneDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Plane.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PlaneDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataXtd_PlaneDriver::BinMDataXtd_PlaneDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Plane)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_PlaneDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PlaneDriver.hxx
index 6d00b06b0e..19b6fb42ee 100644
--- a/src/BinMDataXtd/BinMDataXtd_PlaneDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PlaneDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_PlaneDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PlaneDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PlaneDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PointDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PointDriver.cxx
index 4d1900a86f..8371af9b7e 100644
--- a/src/BinMDataXtd/BinMDataXtd_PointDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PointDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Point.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PointDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataXtd_PointDriver::BinMDataXtd_PointDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Point)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_PointDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PointDriver.hxx
index a8d22b6ed3..4c8ddadc50 100644
--- a/src/BinMDataXtd/BinMDataXtd_PointDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PointDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_PointDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PointDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PointDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PositionDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PositionDriver.cxx
index 2a4491a8c0..e857140a89 100644
--- a/src/BinMDataXtd/BinMDataXtd_PositionDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PositionDriver.cxx
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PositionDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataXtd_PositionDriver::BinMDataXtd_PositionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Position)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_PositionDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PositionDriver.hxx
index b747858fb4..2ceecc5f35 100644
--- a/src/BinMDataXtd/BinMDataXtd_PositionDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PositionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_PositionDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PositionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PositionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_PresentationDriver.cxx b/src/BinMDataXtd/BinMDataXtd_PresentationDriver.cxx
index 0dc0dc3140..3e30f775f1 100644
--- a/src/BinMDataXtd/BinMDataXtd_PresentationDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_PresentationDriver.cxx
@@ -17,7 +17,7 @@
 
 #include <TDataXtd_Presentation.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PresentationDriver,BinMDF_ADriver)
 
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PresentationDriver,BinMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 BinMDataXtd_PresentationDriver::BinMDataXtd_PresentationDriver
-                          (const Handle(CDM_MessageDriver)& theMsgDriver)
+                          (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(TDataXtd_Presentation)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_PresentationDriver.hxx b/src/BinMDataXtd/BinMDataXtd_PresentationDriver.hxx
index 206bdc952e..e7f242e6f5 100644
--- a/src/BinMDataXtd/BinMDataXtd_PresentationDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_PresentationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -39,7 +39,7 @@ class BinMDataXtd_PresentationDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_PresentationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_PresentationDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_ShapeDriver.cxx b/src/BinMDataXtd/BinMDataXtd_ShapeDriver.cxx
index 34b9161c24..56960196e3 100644
--- a/src/BinMDataXtd/BinMDataXtd_ShapeDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_ShapeDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Shape.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_ShapeDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDataXtd_ShapeDriver::BinMDataXtd_ShapeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Shape)->Name())
 {
 }
diff --git a/src/BinMDataXtd/BinMDataXtd_ShapeDriver.hxx b/src/BinMDataXtd/BinMDataXtd_ShapeDriver.hxx
index 76c5e85b14..cb8b06ec5d 100644
--- a/src/BinMDataXtd/BinMDataXtd_ShapeDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_ShapeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDataXtd_ShapeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDataXtd_ShapeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_ShapeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.cxx b/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.cxx
index fa7e565539..503999b67a 100644
--- a/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.cxx
+++ b/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.cxx
@@ -15,7 +15,7 @@
 
 #include <BinMDataXtd_TriangulationDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Triangulation.hxx>
 #include <TDF_Attribute.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_TriangulationDriver,BinMDF_ADriver)
 //function : BinMDataXtd_TriangulationDriver
 //purpose  : Constructor
 //=======================================================================
-BinMDataXtd_TriangulationDriver::BinMDataXtd_TriangulationDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMDataXtd_TriangulationDriver::BinMDataXtd_TriangulationDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataXtd_Triangulation)->Name())
 {
 
diff --git a/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.hxx b/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.hxx
index 66476b8c9a..0b34976431 100644
--- a/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.hxx
+++ b/src/BinMDataXtd/BinMDataXtd_TriangulationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -35,7 +35,7 @@ class BinMDataXtd_TriangulationDriver : public BinMDF_ADriver
 
 public:
 
-  Standard_EXPORT BinMDataXtd_TriangulationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDataXtd_TriangulationDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/BinMDocStd/BinMDocStd.cxx b/src/BinMDocStd/BinMDocStd.cxx
index f8b6e4143b..72d28027ae 100644
--- a/src/BinMDocStd/BinMDocStd.cxx
+++ b/src/BinMDocStd/BinMDocStd.cxx
@@ -17,14 +17,14 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinMDocStd.hxx>
 #include <BinMDocStd_XLinkDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 //=======================================================================
 //function : AddDrivers
 //purpose  : 
 //=======================================================================
 void BinMDocStd::AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable,
-                              const Handle(CDM_MessageDriver)&   theMsgDriver)
+                              const Handle(Message_Messenger)&   theMsgDriver)
 {
   theDriverTable->AddDriver (new BinMDocStd_XLinkDriver  (theMsgDriver) );
   
diff --git a/src/BinMDocStd/BinMDocStd.hxx b/src/BinMDocStd/BinMDocStd.hxx
index 32b51f4864..efba2c01cd 100644
--- a/src/BinMDocStd/BinMDocStd.hxx
+++ b/src/BinMDocStd/BinMDocStd.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMDocStd_XLinkDriver;
 
 
@@ -34,7 +34,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& aMsgDrv);
 
 
 
diff --git a/src/BinMDocStd/BinMDocStd_XLinkDriver.cxx b/src/BinMDocStd/BinMDocStd_XLinkDriver.cxx
index b35cf166a5..4383219f95 100644
--- a/src/BinMDocStd/BinMDocStd_XLinkDriver.cxx
+++ b/src/BinMDocStd/BinMDocStd_XLinkDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDocStd_XLink.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMDocStd_XLinkDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMDocStd_XLinkDriver::BinMDocStd_XLinkDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDocStd_XLink)->Name())
 {
 }
diff --git a/src/BinMDocStd/BinMDocStd_XLinkDriver.hxx b/src/BinMDocStd/BinMDocStd_XLinkDriver.hxx
index dca3ce33c4..03134ed61a 100644
--- a/src/BinMDocStd/BinMDocStd_XLinkDriver.hxx
+++ b/src/BinMDocStd/BinMDocStd_XLinkDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMDocStd_XLinkDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMDocStd_XLinkDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMDocStd_XLinkDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMFunction/BinMFunction.cxx b/src/BinMFunction/BinMFunction.cxx
index f9c09dce2d..4e0324daf9 100644
--- a/src/BinMFunction/BinMFunction.cxx
+++ b/src/BinMFunction/BinMFunction.cxx
@@ -19,14 +19,14 @@
 #include <BinMFunction_FunctionDriver.hxx>
 #include <BinMFunction_GraphNodeDriver.hxx>
 #include <BinMFunction_ScopeDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 //=======================================================================
 //function : AddDrivers
 //purpose  : 
 //=======================================================================
 void BinMFunction::AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable,
-			       const Handle(CDM_MessageDriver)&   theMsgDriver)
+			       const Handle(Message_Messenger)&   theMsgDriver)
 {
   theDriverTable->AddDriver (new BinMFunction_FunctionDriver  (theMsgDriver) );
   theDriverTable->AddDriver (new BinMFunction_GraphNodeDriver (theMsgDriver) );
diff --git a/src/BinMFunction/BinMFunction.hxx b/src/BinMFunction/BinMFunction.hxx
index 83fc032faf..8d1c849883 100644
--- a/src/BinMFunction/BinMFunction.hxx
+++ b/src/BinMFunction/BinMFunction.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMFunction_FunctionDriver;
 class BinMFunction_GraphNodeDriver;
 class BinMFunction_ScopeDriver;
@@ -36,7 +36,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& aMsgDrv);
 
 
 
diff --git a/src/BinMFunction/BinMFunction_FunctionDriver.cxx b/src/BinMFunction/BinMFunction_FunctionDriver.cxx
index eae9bedf1e..6db923651a 100644
--- a/src/BinMFunction/BinMFunction_FunctionDriver.cxx
+++ b/src/BinMFunction/BinMFunction_FunctionDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TFunction_Function.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMFunction_FunctionDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMFunction_FunctionDriver::BinMFunction_FunctionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TFunction_Function)->Name())
 {
 }
diff --git a/src/BinMFunction/BinMFunction_FunctionDriver.hxx b/src/BinMFunction/BinMFunction_FunctionDriver.hxx
index 34a1f3dd7d..bb6d5b50ac 100644
--- a/src/BinMFunction/BinMFunction_FunctionDriver.hxx
+++ b/src/BinMFunction/BinMFunction_FunctionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMFunction_FunctionDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMFunction_FunctionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMFunction_FunctionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMFunction/BinMFunction_GraphNodeDriver.cxx b/src/BinMFunction/BinMFunction_GraphNodeDriver.cxx
index 6632a3f483..122ab8cb0f 100644
--- a/src/BinMFunction/BinMFunction_GraphNodeDriver.cxx
+++ b/src/BinMFunction/BinMFunction_GraphNodeDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfInteger.hxx>
 #include <TColStd_MapIteratorOfMapOfInteger.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMFunction_GraphNodeDriver,BinMDF_ADriver)
 //function : BinMFunction_GraphNodeDriver
 //purpose  : 
 //=======================================================================
-BinMFunction_GraphNodeDriver::BinMFunction_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMFunction_GraphNodeDriver::BinMFunction_GraphNodeDriver(const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TFunction_GraphNode)->Name())
 {
 }
diff --git a/src/BinMFunction/BinMFunction_GraphNodeDriver.hxx b/src/BinMFunction/BinMFunction_GraphNodeDriver.hxx
index d61e6234c2..64b6ea428f 100644
--- a/src/BinMFunction/BinMFunction_GraphNodeDriver.hxx
+++ b/src/BinMFunction/BinMFunction_GraphNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMFunction_GraphNodeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMFunction_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMFunction_GraphNodeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMFunction/BinMFunction_ScopeDriver.cxx b/src/BinMFunction/BinMFunction_ScopeDriver.cxx
index 374d44ac47..412b85edf2 100644
--- a/src/BinMFunction/BinMFunction_ScopeDriver.cxx
+++ b/src/BinMFunction/BinMFunction_ScopeDriver.cxx
@@ -19,7 +19,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_Array1OfInteger.hxx>
 #include <TDF_Attribute.hxx>
@@ -34,7 +34,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMFunction_ScopeDriver,BinMDF_ADriver)
 //function : BinMFunction_GraphNodeDriver
 //purpose  : 
 //=======================================================================
-BinMFunction_ScopeDriver::BinMFunction_ScopeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMFunction_ScopeDriver::BinMFunction_ScopeDriver(const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TFunction_Scope)->Name())
 {
 }
diff --git a/src/BinMFunction/BinMFunction_ScopeDriver.hxx b/src/BinMFunction/BinMFunction_ScopeDriver.hxx
index 0d63038598..560f4e424a 100644
--- a/src/BinMFunction/BinMFunction_ScopeDriver.hxx
+++ b/src/BinMFunction/BinMFunction_ScopeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMFunction_ScopeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMFunction_ScopeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMFunction_ScopeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMNaming/BinMNaming.cxx b/src/BinMNaming/BinMNaming.cxx
index 41767ecdb8..530c490138 100644
--- a/src/BinMNaming/BinMNaming.cxx
+++ b/src/BinMNaming/BinMNaming.cxx
@@ -18,7 +18,7 @@
 #include <BinMNaming.hxx>
 #include <BinMNaming_NamedShapeDriver.hxx>
 #include <BinMNaming_NamingDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 
 static Standard_Integer myDocumentVersion = -1;
 //=======================================================================
@@ -26,7 +26,7 @@ static Standard_Integer myDocumentVersion = -1;
 //purpose  : 
 //=======================================================================
 void BinMNaming::AddDrivers (const Handle(BinMDF_ADriverTable)& aDriverTable,
-                             const Handle(CDM_MessageDriver)&   aMessageDriver)
+                             const Handle(Message_Messenger)&   aMessageDriver)
 {
   aDriverTable->AddDriver (new BinMNaming_NamedShapeDriver(aMessageDriver));
   aDriverTable->AddDriver (new BinMNaming_NamingDriver(aMessageDriver));
diff --git a/src/BinMNaming/BinMNaming.hxx b/src/BinMNaming/BinMNaming.hxx
index f53dfbb50b..27aea44361 100644
--- a/src/BinMNaming/BinMNaming.hxx
+++ b/src/BinMNaming/BinMNaming.hxx
@@ -22,7 +22,7 @@
 
 #include <Standard_Integer.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMNaming_NamedShapeDriver;
 class BinMNaming_NamingDriver;
 
@@ -36,7 +36,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& aMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& aMsgDrv);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/BinMNaming/BinMNaming_NamedShapeDriver.cxx b/src/BinMNaming/BinMNaming_NamedShapeDriver.cxx
index f134517614..eeac367616 100644
--- a/src/BinMNaming/BinMNaming_NamedShapeDriver.cxx
+++ b/src/BinMNaming/BinMNaming_NamedShapeDriver.cxx
@@ -18,7 +18,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinTools_LocationSet.hxx>
 #include <BinTools_ShapeSet.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_DomainError.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_AsciiString.hxx>
@@ -141,7 +141,7 @@ static int TranslateFrom  (const BinObjMgt_Persistent&  theSource,
 //=======================================================================
 
 BinMNaming_NamedShapeDriver::BinMNaming_NamedShapeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TNaming_NamedShape)->Name()), myShapeSet(Standard_False),myFormatNb(FORMAT_NUMBER)
 {
 }
diff --git a/src/BinMNaming/BinMNaming_NamedShapeDriver.hxx b/src/BinMNaming/BinMNaming_NamedShapeDriver.hxx
index 057199d71b..06368b0445 100644
--- a/src/BinMNaming/BinMNaming_NamedShapeDriver.hxx
+++ b/src/BinMNaming/BinMNaming_NamedShapeDriver.hxx
@@ -27,7 +27,7 @@
 #include <BinObjMgt_SRelocationTable.hxx>
 #include <Standard_IStream.hxx>
 #include <Standard_OStream.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 class BinTools_LocationSet;
@@ -43,7 +43,7 @@ class BinMNaming_NamedShapeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMNaming_NamedShapeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMNaming_NamedShapeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMNaming/BinMNaming_NamingDriver.cxx b/src/BinMNaming/BinMNaming_NamingDriver.cxx
index 8c93b435ce..5fc8aa26b3 100644
--- a/src/BinMNaming/BinMNaming_NamingDriver.cxx
+++ b/src/BinMNaming/BinMNaming_NamingDriver.cxx
@@ -20,7 +20,7 @@
 #include <BinObjMgt_Persistent.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
@@ -123,7 +123,7 @@ static TopAbs_ShapeEnum CharToShapeType(const Standard_Character theCharType)
 //=======================================================================
 
 BinMNaming_NamingDriver::BinMNaming_NamingDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver (theMsgDriver, STANDARD_TYPE(TNaming_Naming)->Name())
 {
 }
@@ -222,19 +222,19 @@ Standard_Boolean BinMNaming_NamingDriver::Paste
           else {
             aMsg = TCollection_ExtendedString("BinMNaming_NamingDriver: "
                                               "Cannot retrieve Index of Name");
-            WriteMessage (aMsg); 
+            myMessageDriver->Send (aMsg, Message_Warning); 
           }
         } else {
           aMsg = TCollection_ExtendedString("BinMNaming_NamingDriver: "
                                             "Cannot retrieve reference on "
                                             "StopNamedShape");
-          WriteMessage (aMsg); 
+          myMessageDriver->Send (aMsg, Message_Warning); 
         }
       } else {
         aMsg = TCollection_ExtendedString("BinMNaming_NamingDriver: "
                                           "Cannot retrieve reference on "
                                           "Arguments of Name");
-	WriteMessage (aMsg);
+	myMessageDriver->Send (aMsg, Message_Warning);
 	  }
 
     if(BinMNaming::DocumentVersion() > 3) {
@@ -285,7 +285,7 @@ Standard_Boolean BinMNaming_NamingDriver::Paste
 	  } else {
           aMsg = TCollection_ExtendedString("BinMNaming_NamingDriver: "
                                             "Cannot retrieve Name Orientation ");
-	  WriteMessage (aMsg);
+	  myMessageDriver->Send (aMsg, Message_Warning);
 	  }
 	}
 	}
diff --git a/src/BinMNaming/BinMNaming_NamingDriver.hxx b/src/BinMNaming/BinMNaming_NamingDriver.hxx
index 8768804e4c..dbd1e98570 100644
--- a/src/BinMNaming/BinMNaming_NamingDriver.hxx
+++ b/src/BinMNaming/BinMNaming_NamingDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMNaming_NamingDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMNaming_NamingDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT BinMNaming_NamingDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc.cxx b/src/BinMXCAFDoc/BinMXCAFDoc.cxx
index 0ebe7bfedf..28b13c5abb 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc.cxx
@@ -42,7 +42,7 @@
 #include <BinMXCAFDoc_ViewDriver.hxx>
 #include <BinMXCAFDoc_ViewToolDriver.hxx>
 #include <BinMXCAFDoc_VolumeDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TNaming_NamedShape.hxx>
 
 //=======================================================================
@@ -50,7 +50,7 @@
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
-			                       const Handle(CDM_MessageDriver)&   theMsgDrv) 
+                             const Handle(Message_Messenger)&   theMsgDrv) 
 {
   theDriverTable->AddDriver( new BinMXCAFDoc_AreaDriver     (theMsgDrv));
   theDriverTable->AddDriver( new BinMXCAFDoc_CentroidDriver (theMsgDrv));
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc.hxx b/src/BinMXCAFDoc/BinMXCAFDoc.hxx
index d18a4ce1b2..bfd6213584 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinMXCAFDoc_AreaDriver;
 class BinMXCAFDoc_CentroidDriver;
 class BinMXCAFDoc_ClippingPlaneToolDriver;
@@ -53,7 +53,7 @@ public:
 
   
   //! Adds the attribute drivers to <theDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(CDM_MessageDriver)& theMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(BinMDF_ADriverTable)& theDriverTable, const Handle(Message_Messenger)& theMsgDrv);
 
 
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.cxx
index 445c2bd89d..bbb29fe55b 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_AreaDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Area.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_AreaDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_AreaDriver::BinMXCAFDoc_AreaDriver(const Handle(CDM_MessageDriver)& theMsgDriver) 
+BinMXCAFDoc_AreaDriver::BinMXCAFDoc_AreaDriver(const Handle(Message_Messenger)& theMsgDriver) 
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Area)->Name()) {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.hxx
index af3441ec6c..4e2e2e1ae5 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_AreaDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_AreaDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_AreaDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_AreaDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.cxx
index 7d362ec27c..356b65984a 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinMXCAFDoc_AssemblyItemRefDriver.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_AssemblyItemRefDriver, BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_AssemblyItemRefDriver::BinMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_AssemblyItemRefDriver::BinMXCAFDoc_AssemblyItemRefDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_AssemblyItemRef)->Name())
 {
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.hxx
index 9f031eae6d..ebacff89bf 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -35,7 +35,7 @@ class BinMXCAFDoc_AssemblyItemRefDriver : public BinMDF_ADriver
 {
 public:
 
-  Standard_EXPORT BinMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_AssemblyItemRefDriver(const Handle(Message_Messenger)& theMsgDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.cxx
index ebc84692fe..53fbb560a3 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_CentroidDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Centroid.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_CentroidDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_CentroidDriver::BinMXCAFDoc_CentroidDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_CentroidDriver::BinMXCAFDoc_CentroidDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Centroid)->Name()) {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.hxx
index d0938dd213..115de2d9d9 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_CentroidDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_CentroidDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_CentroidDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_CentroidDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.cxx
index 54c510547f..9727b5cd08 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ClippingPlaneToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ClippingPlaneTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ClippingPlaneToolDriver, BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_ClippingPlaneToolDriver::BinMXCAFDoc_ClippingPlaneToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
   : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_ClippingPlaneTool)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.hxx
index b86cc75c55..2eaf2309d8 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ClippingPlaneToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -36,7 +36,7 @@ class BinMXCAFDoc_ClippingPlaneToolDriver : public BinMDF_ADriver
 {
 public:
 
-  Standard_EXPORT BinMXCAFDoc_ClippingPlaneToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ClippingPlaneToolDriver(const Handle(Message_Messenger)& theMsgDriver);
 
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.cxx
index 57a34206bf..b8ffbba0d0 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ColorDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Color.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ColorDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_ColorDriver::BinMXCAFDoc_ColorDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_ColorDriver::BinMXCAFDoc_ColorDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Color)->Name()) {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.hxx
index 0caebfd33d..3bfe550936 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ColorDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_ColorDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_ColorDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ColorDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.cxx
index 181df4e2fe..604a1fa03b 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ColorToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ColorTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ColorToolDriver,BinMDF_ADriver)
 //function : 
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_ColorToolDriver::BinMXCAFDoc_ColorToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_ColorToolDriver::BinMXCAFDoc_ColorToolDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_ColorTool)->Name()) {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.hxx
index 71e881273d..d18e4fcc52 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ColorToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_ColorToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_ColorToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ColorToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.cxx
index d15ada8829..8dc949d42b 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_DatumDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_Array1OfReal.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_DatumDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_DatumDriver::BinMXCAFDoc_DatumDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Datum)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.hxx
index 705edf294c..f3d0204a25 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DatumDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_DatumDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_DatumDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_DatumDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.cxx
index 8df20ba15b..f2bde5018c 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_DimTolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_Array1OfReal.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_DimTolDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_DimTolDriver::BinMXCAFDoc_DimTolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_DimTol)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.hxx
index eb3f93bb67..93b2825b35 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_DimTolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_DimTolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_DimTolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.cxx
index fdc4ccb5ff..0044d1ec7d 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_DimTolToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_DimTolTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_DimTolToolDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_DimTolToolDriver::BinMXCAFDoc_DimTolToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_DimTolTool)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.hxx
index 51024da126..ae484d6d6e 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimTolToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_DimTolToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_DimTolToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_DimTolToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.cxx
index 160abcc9da..7c780f1e3f 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_DimensionDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_Array1OfReal.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_DimensionDriver,BinMDF_ADriver)
 //function : Constructor
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_DimensionDriver::BinMXCAFDoc_DimensionDriver (const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_DimensionDriver::BinMXCAFDoc_DimensionDriver (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Dimension)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.hxx
index 3be43adede..665dcfb89c 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DimensionDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -37,7 +37,7 @@ class BinMXCAFDoc_DimensionDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_DimensionDriver (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_DimensionDriver (const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.cxx
index 5b73f000e4..59720c1768 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_DocumentToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_DocumentTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_DocumentToolDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_DocumentToolDriver::BinMXCAFDoc_DocumentToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver) 
+BinMXCAFDoc_DocumentToolDriver::BinMXCAFDoc_DocumentToolDriver(const Handle(Message_Messenger)& theMsgDriver) 
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_DocumentTool)->Name()) {
 }
 
@@ -44,8 +44,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_DocumentToolDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_DocumentToolDriver::Paste(const BinObjMgt_Persistent& /*theSource*/,
-							const Handle(TDF_Attribute)& theTarget,
-							BinObjMgt_RRelocationTable& /*theRelocTable*/) const
+                                                        const Handle(TDF_Attribute)& theTarget,
+                                                        BinObjMgt_RRelocationTable& /*theRelocTable*/) const
 {
   Handle(XCAFDoc_DocumentTool) T = Handle(XCAFDoc_DocumentTool)::DownCast(theTarget);
   T->Init();
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.hxx
index b4f94927e7..e59115065e 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_DocumentToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_DocumentToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_DocumentToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_DocumentToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.cxx
index 59bb73e05d..e9f81b95bd 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_GeomToleranceDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_Array1OfReal.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_GeomToleranceDriver,BinMDF_ADriver)
 //function : Constructor
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_GeomToleranceDriver::BinMXCAFDoc_GeomToleranceDriver (const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_GeomToleranceDriver::BinMXCAFDoc_GeomToleranceDriver (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_GeomTolerance)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.hxx
index 0c01139dc6..cc4a4c7504 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_GeomToleranceDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -37,7 +37,7 @@ class BinMXCAFDoc_GeomToleranceDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_GeomToleranceDriver (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_GeomToleranceDriver (const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.cxx
index 74d88c12ff..15c2452188 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_GraphNodeDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_GraphNode.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_GraphNodeDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_GraphNodeDriver::BinMXCAFDoc_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_GraphNodeDriver::BinMXCAFDoc_GraphNodeDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_GraphNode)->Name()) {
 }
 
@@ -44,8 +44,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_GraphNodeDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_GraphNodeDriver::Paste(const BinObjMgt_Persistent& theSource,
-						    const Handle(TDF_Attribute)& theTarget,
-						    BinObjMgt_RRelocationTable& theRelocTable) const
+                                                    const Handle(TDF_Attribute)& theTarget,
+                                                    BinObjMgt_RRelocationTable& theRelocTable) const
 {
   Handle(XCAFDoc_GraphNode) aT = Handle(XCAFDoc_GraphNode)::DownCast(theTarget);
   Standard_Integer anID;
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.hxx
index 105dc6121a..e748c87d08 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_GraphNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_GraphNodeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_GraphNodeDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.cxx
index d69d1823cf..6afe0c35ae 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_LayerToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_LayerTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_LayerToolDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_LayerToolDriver::BinMXCAFDoc_LayerToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_LayerToolDriver::BinMXCAFDoc_LayerToolDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_LayerTool)->Name()) {
 }
 
@@ -44,8 +44,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_LayerToolDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_LayerToolDriver::Paste(const BinObjMgt_Persistent& /*theSource*/,
-						    const Handle(TDF_Attribute)& /*theTarget*/,
-						    BinObjMgt_RRelocationTable& /*theRelocTable*/) const
+                                                    const Handle(TDF_Attribute)& /*theTarget*/,
+                                                    BinObjMgt_RRelocationTable& /*theRelocTable*/) const
 {
   return Standard_True;
 }
@@ -55,8 +55,8 @@ Standard_Boolean BinMXCAFDoc_LayerToolDriver::Paste(const BinObjMgt_Persistent&
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_LayerToolDriver::Paste(const Handle(TDF_Attribute)& /*theSource*/,
-					BinObjMgt_Persistent& /*theTarget*/,
-					BinObjMgt_SRelocationTable& /*theRelocTable*/) const
+                                        BinObjMgt_Persistent& /*theTarget*/,
+                                        BinObjMgt_SRelocationTable& /*theRelocTable*/) const
 {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.hxx
index d66d746be7..b336f5b896 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_LayerToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_LayerToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_LayerToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_LayerToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.cxx
index 3d58f6c94e..95465ef636 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.cxx
@@ -18,7 +18,7 @@
 #include <BinMXCAFDoc_LocationDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
 #include <BinTools_LocationSet.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <gp_Mat.hxx>
 #include <gp_Trsf.hxx>
 #include <gp_XYZ.hxx>
@@ -35,7 +35,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_LocationDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_LocationDriver::BinMXCAFDoc_LocationDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_LocationDriver::BinMXCAFDoc_LocationDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Location)->Name())
      , myLocations(0) {
 }
@@ -53,8 +53,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_LocationDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_LocationDriver::Paste(const BinObjMgt_Persistent& theSource,
-						   const Handle(TDF_Attribute)& theTarget,
-						   BinObjMgt_RRelocationTable& theRelocTable) const
+                                                   const Handle(TDF_Attribute)& theTarget,
+                                                   BinObjMgt_RRelocationTable& theRelocTable) const
 {
   Handle(XCAFDoc_Location) anAtt = Handle(XCAFDoc_Location)::DownCast(theTarget);
   TopLoc_Location aLoc;
@@ -81,8 +81,8 @@ void BinMXCAFDoc_LocationDriver::Paste(const Handle(TDF_Attribute)& theSource,
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_LocationDriver::Translate(const BinObjMgt_Persistent& theSource,
-						       TopLoc_Location& theLoc,
-						       BinObjMgt_RRelocationTable& theMap) const
+                                                       TopLoc_Location& theLoc,
+                                                       BinObjMgt_RRelocationTable& theMap) const
 {
   Standard_Integer anId = 0;
   theSource >> anId;
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.hxx
index b7355bd707..76fe223d8b 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_LocationDriver.hxx
@@ -24,7 +24,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 class TopLoc_Location;
@@ -40,7 +40,7 @@ class BinMXCAFDoc_LocationDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_LocationDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_LocationDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.cxx
index c8204507a4..ea41cf5be1 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_MaterialDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_MaterialDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_MaterialDriver::BinMXCAFDoc_MaterialDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Material)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.hxx
index caa65a3e7b..f2ecd6aff2 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_MaterialDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_MaterialDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_MaterialDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.cxx
index 1e16af91fe..4adc8f3fee 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_MaterialToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_MaterialTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_MaterialToolDriver,BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_MaterialToolDriver::BinMXCAFDoc_MaterialToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_MaterialTool)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.hxx
index 9005038a22..908fb5b02c 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_MaterialToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_MaterialToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_MaterialToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_MaterialToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.cxx
index 700ec100f7..cf7bf92180 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinMXCAFDoc_NoteBalloonDriver.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommen
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMXCAFDoc_NoteCommentDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBalloon)->Name())
 {
 }
@@ -44,7 +44,7 @@ Handle(TDF_Attribute) BinMXCAFDoc_NoteBalloonDriver::NewEmpty() const
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                              Standard_CString                 theName)
   : BinMXCAFDoc_NoteCommentDriver(theMsgDriver, theName)
 {
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.hxx
index 444b77a53d..516f3a7f04 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.hxx
@@ -25,7 +25,7 @@ class BinMXCAFDoc_NoteBalloonDriver : public BinMXCAFDoc_NoteCommentDriver
 {
 public:
   
-  Standard_EXPORT BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
@@ -34,7 +34,7 @@ public:
 
 protected:
 
-  BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  BinMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
                                 Standard_CString                 theName);
 
 };
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.cxx
index ee73b46636..c37709d35b 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TColStd_HArray1OfByte.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteBinDataDriver::BinMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_NoteBinDataDriver::BinMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBinData)->Name())
 {
 }
@@ -81,8 +81,8 @@ Standard_Boolean BinMXCAFDoc_NoteBinDataDriver::Paste(const BinObjMgt_Persistent
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_NoteBinDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
-					                                BinObjMgt_Persistent&        theTarget,
-					                                BinObjMgt_SRelocationTable&  theRelocTable) const
+                                                       BinObjMgt_Persistent&        theTarget,
+                                                       BinObjMgt_SRelocationTable&  theRelocTable) const
 {
   BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.hxx
index 422f79784d..1ca25c4165 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.hxx
@@ -25,7 +25,7 @@ class BinMXCAFDoc_NoteBinDataDriver : public BinMXCAFDoc_NoteDriver
 {
 public:
   
-  Standard_EXPORT BinMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.cxx
index e550915508..14e00cf561 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinMXCAFDoc_NoteCommentDriver.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteComment)->Name())
 {
 }
@@ -69,8 +69,8 @@ Standard_Boolean BinMXCAFDoc_NoteCommentDriver::Paste(const BinObjMgt_Persistent
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_NoteCommentDriver::Paste(const Handle(TDF_Attribute)& theSource,
-					                                BinObjMgt_Persistent&        theTarget,
-					                                BinObjMgt_SRelocationTable&  theRelocTable) const
+                                          BinObjMgt_Persistent&        theTarget,
+                                          BinObjMgt_SRelocationTable&  theRelocTable) const
 {
   BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
 
@@ -83,7 +83,7 @@ void BinMXCAFDoc_NoteCommentDriver::Paste(const Handle(TDF_Attribute)& theSource
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                              Standard_CString                 theName)
   : BinMXCAFDoc_NoteDriver(theMsgDriver, theName)
 {
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.hxx
index cad5b6b198..8ae85f4d14 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.hxx
@@ -25,7 +25,7 @@ class BinMXCAFDoc_NoteCommentDriver : public BinMXCAFDoc_NoteDriver
 {
 public:
   
-  Standard_EXPORT BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
@@ -41,7 +41,7 @@ public:
 
 protected:
 
-  BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  BinMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
                                 Standard_CString                 theName);
 
 };
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.cxx
index fc00d0b83c..477f153fa7 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinMXCAFDoc_NoteDriver.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NoteDriver::BinMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+BinMXCAFDoc_NoteDriver::BinMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                Standard_CString                 theName)
   : BinMDF_ADriver(theMsgDriver, theName)
 {
@@ -59,8 +59,8 @@ Standard_Boolean BinMXCAFDoc_NoteDriver::Paste(const BinObjMgt_Persistent&  theS
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_NoteDriver::Paste(const Handle(TDF_Attribute)& theSource,
-					                         BinObjMgt_Persistent&        theTarget,
-					                         BinObjMgt_SRelocationTable&  /*theRelocTable*/) const
+                                         BinObjMgt_Persistent&        theTarget,
+                                         BinObjMgt_SRelocationTable&  /*theRelocTable*/) const
 {
   Handle(XCAFDoc_Note) aNote = Handle(XCAFDoc_Note)::DownCast(theSource);
   if (!aNote.IsNull())
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.hxx
index 17900a0b1a..10be389d91 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -47,7 +47,7 @@ public:
 
 protected:
 
-  BinMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  BinMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver,
                          Standard_CString                 theName);
 
 };
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.cxx
index a3979e2be5..f100f09e69 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinMXCAFDoc_NotesToolDriver.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NotesToolDriver, BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_NotesToolDriver::BinMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_NotesToolDriver::BinMXCAFDoc_NotesToolDriver(const Handle(Message_Messenger)& theMsgDriver)
   : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NotesTool)->Name())
 {
 }
@@ -56,7 +56,7 @@ Standard_Boolean BinMXCAFDoc_NotesToolDriver::Paste(const BinObjMgt_Persistent&
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_NotesToolDriver::Paste(const Handle(TDF_Attribute)& /*theSource*/,
-					                              BinObjMgt_Persistent&        /*theTarget*/,
-					                              BinObjMgt_SRelocationTable&  /*theRelocTable*/) const
+                                        BinObjMgt_Persistent&        /*theTarget*/,
+                                        BinObjMgt_SRelocationTable&  /*theRelocTable*/) const
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.hxx
index 3a8fa0a3b7..61129f014f 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -35,7 +35,7 @@ class BinMXCAFDoc_NotesToolDriver : public BinMDF_ADriver
 {
 public:
   
-  Standard_EXPORT BinMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_NotesToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.cxx
index 7598c4ac95..6b2897f613 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ShapeToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ShapeTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ShapeToolDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_ShapeToolDriver::BinMXCAFDoc_ShapeToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_ShapeToolDriver::BinMXCAFDoc_ShapeToolDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_ShapeTool)->Name())
 {
 }
@@ -45,8 +45,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_ShapeToolDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_ShapeToolDriver::Paste(const BinObjMgt_Persistent& /*theSource*/,
-						    const Handle(TDF_Attribute)& /*theTarget*/,
-						    BinObjMgt_RRelocationTable& /*theRelocTable*/) const
+                                                    const Handle(TDF_Attribute)& /*theTarget*/,
+                                                    BinObjMgt_RRelocationTable& /*theRelocTable*/) const
 {
   return Standard_True;
 }
@@ -56,8 +56,8 @@ Standard_Boolean BinMXCAFDoc_ShapeToolDriver::Paste(const BinObjMgt_Persistent&
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_ShapeToolDriver::Paste(const Handle(TDF_Attribute)& /*theSource*/,
-					BinObjMgt_Persistent& /*theTarget*/,
-					BinObjMgt_SRelocationTable& /*theRelocTable*/) const
+                                        BinObjMgt_Persistent& /*theTarget*/,
+                                        BinObjMgt_SRelocationTable& /*theRelocTable*/) const
 {
 }
 
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.hxx
index ff2f249c21..94a4b4041f 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ShapeToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_ShapeToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_ShapeToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ShapeToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.cxx
index 11bbc89ac0..1708c4447c 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ViewDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_View.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ViewDriver, BinMDF_ADriver)
 //function : Constructor
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_ViewDriver::BinMXCAFDoc_ViewDriver (const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_ViewDriver::BinMXCAFDoc_ViewDriver (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_View)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.hxx
index bd86b6394c..0c011114cd 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ViewDriver.hxx
@@ -24,7 +24,7 @@
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -37,7 +37,7 @@ class BinMXCAFDoc_ViewDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_ViewDriver (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ViewDriver (const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.cxx
index 33391b0f6f..bd80bc39ba 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_ViewToolDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ViewTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_ViewToolDriver, BinMDF_ADriver)
 //purpose  : 
 //=======================================================================
 BinMXCAFDoc_ViewToolDriver::BinMXCAFDoc_ViewToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_ViewTool)->Name())
 {
 }
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.hxx
index 144f8b33bf..46430fb798 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_ViewToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_ViewToolDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_ViewToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_ViewToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.cxx b/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.cxx
index af35ecd952..d40dccf8e8 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.cxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <BinMXCAFDoc_VolumeDriver.hxx>
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Volume.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_VolumeDriver,BinMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-BinMXCAFDoc_VolumeDriver::BinMXCAFDoc_VolumeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+BinMXCAFDoc_VolumeDriver::BinMXCAFDoc_VolumeDriver(const Handle(Message_Messenger)& theMsgDriver)
      : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_Volume)->Name()) {
 }
 
@@ -44,8 +44,8 @@ Handle(TDF_Attribute) BinMXCAFDoc_VolumeDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean BinMXCAFDoc_VolumeDriver::Paste(const BinObjMgt_Persistent& theSource,
-						 const Handle(TDF_Attribute)& theTarget,
-						 BinObjMgt_RRelocationTable& /*theRelocTable*/) const
+                                                 const Handle(TDF_Attribute)& theTarget,
+                                                 BinObjMgt_RRelocationTable& /*theRelocTable*/) const
 {
   Handle(XCAFDoc_Volume) anAtt = Handle(XCAFDoc_Volume)::DownCast(theTarget);
   Standard_Real aVol;
@@ -60,8 +60,8 @@ Standard_Boolean BinMXCAFDoc_VolumeDriver::Paste(const BinObjMgt_Persistent& the
 //purpose  : 
 //=======================================================================
 void BinMXCAFDoc_VolumeDriver::Paste(const Handle(TDF_Attribute)& theSource,
-				     BinObjMgt_Persistent& theTarget,
-				     BinObjMgt_SRelocationTable& /*theRelocTable*/) const
+                                     BinObjMgt_Persistent& theTarget,
+                                     BinObjMgt_SRelocationTable& /*theRelocTable*/) const
 {
   Handle(XCAFDoc_Volume) anAtt = Handle(XCAFDoc_Volume)::DownCast(theSource);
   theTarget << anAtt->Get();
diff --git a/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.hxx b/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.hxx
index d6efa21459..8741d36c83 100644
--- a/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.hxx
+++ b/src/BinMXCAFDoc/BinMXCAFDoc_VolumeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <BinObjMgt_RRelocationTable.hxx>
 #include <BinObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class BinObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class BinMXCAFDoc_VolumeDriver : public BinMDF_ADriver
 public:
 
   
-  Standard_EXPORT BinMXCAFDoc_VolumeDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT BinMXCAFDoc_VolumeDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/BinTObjDrivers/BinTObjDrivers.cxx b/src/BinTObjDrivers/BinTObjDrivers.cxx
index 03fb78a20b..c8444de623 100644
--- a/src/BinTObjDrivers/BinTObjDrivers.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers.cxx
@@ -72,7 +72,7 @@ void BinTObjDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //purpose  : 
 //=======================================================================
 void BinTObjDrivers::AddDrivers (const Handle(BinMDF_ADriverTable)& aDriverTable,
-                                 const Handle(CDM_MessageDriver)&   aMsgDrv)
+                                 const Handle(Message_Messenger)&   aMsgDrv)
 {
   aDriverTable -> AddDriver (new BinTObjDrivers_ModelDriver      (aMsgDrv));
   aDriverTable -> AddDriver (new BinTObjDrivers_ObjectDriver     (aMsgDrv));
diff --git a/src/BinTObjDrivers/BinTObjDrivers.hxx b/src/BinTObjDrivers/BinTObjDrivers.hxx
index 12f0019295..db1c7383f1 100644
--- a/src/BinTObjDrivers/BinTObjDrivers.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers.hxx
@@ -22,7 +22,7 @@
 #include <Standard_GUID.hxx>
 
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDocStd_Application;
 
 //! Class for registering storage/retrieval drivers for TObj Bin persistence
@@ -42,7 +42,7 @@ class BinTObjDrivers
 
   Standard_EXPORT static void AddDrivers
                         (const Handle(BinMDF_ADriverTable)& aDriverTable,
-                         const Handle(CDM_MessageDriver)&   aMsgDrv);
+                         const Handle(Message_Messenger)&   aMsgDrv);
 
 };
 
diff --git a/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.cxx
index b9e4581179..2b3742f545 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.cxx
@@ -38,7 +38,7 @@ BinTObjDrivers_DocumentRetrievalDriver::BinTObjDrivers_DocumentRetrievalDriver()
 
 Handle(BinMDF_ADriverTable)
         BinTObjDrivers_DocumentRetrievalDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv) 
+                        (const Handle(Message_Messenger)& theMsgDrv) 
 {
   // Standard drivers
   Handle(BinMDF_ADriverTable) aTable = BinLDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.hxx
index 9408fdff78..ced6199898 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_DocumentRetrievalDriver.hxx
@@ -36,7 +36,7 @@ class BinTObjDrivers_DocumentRetrievalDriver :
   // Constructor
 
   Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+                        (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
  public:
   // Declaration of CASCADE RTTI
diff --git a/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.cxx
index 82a204a267..a4735716b0 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.cxx
@@ -38,7 +38,7 @@ BinTObjDrivers_DocumentStorageDriver::BinTObjDrivers_DocumentStorageDriver ()
 
 Handle(BinMDF_ADriverTable)
         BinTObjDrivers_DocumentStorageDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv)
+                        (const Handle(Message_Messenger)& theMsgDrv)
 {
   // Standard drivers
   Handle(BinMDF_ADriverTable) aTable = BinLDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.hxx
index 7db397952a..8627329665 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_DocumentStorageDriver.hxx
@@ -36,7 +36,7 @@ class BinTObjDrivers_DocumentStorageDriver :
   // Constructor
 
   Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+                        (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
  public:
   // Declaration of CASCADE RTTI
diff --git a/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.cxx
index ea52587457..b217994c91 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.cxx
@@ -16,7 +16,7 @@
 // The original implementation Copyright: (C) RINA S.p.A
 
 #include <BinTObjDrivers_IntSparseArrayDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinObjMgt_Persistent.hxx>
 #include <TObj_TIntSparseArray.hxx>
@@ -33,7 +33,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinTObjDrivers_IntSparseArrayDriver,BinMDF_ADriver)
 //=======================================================================
 
 BinTObjDrivers_IntSparseArrayDriver::BinTObjDrivers_IntSparseArrayDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : BinMDF_ADriver( theMessageDriver, NULL)
 {
 }
diff --git a/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.hxx
index b981c4d5a5..64805a4d02 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_IntSparseArrayDriver.hxx
@@ -27,7 +27,7 @@ class BinTObjDrivers_IntSparseArrayDriver : public BinMDF_ADriver
  public:
 
   Standard_EXPORT BinTObjDrivers_IntSparseArrayDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.cxx
index 53775552b1..238451e83e 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.cxx
@@ -18,7 +18,7 @@
 #include <BinTObjDrivers_ModelDriver.hxx>
 
 #include <BinObjMgt_Persistent.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_GUID.hxx>
 #include <TDF_Attribute.hxx>
 
@@ -37,7 +37,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinTObjDrivers_ModelDriver,BinMDF_ADriver)
 //=======================================================================
 
 BinTObjDrivers_ModelDriver::BinTObjDrivers_ModelDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : BinMDF_ADriver( theMessageDriver, NULL)
 {
 }
@@ -73,7 +73,7 @@ Standard_Boolean BinTObjDrivers_ModelDriver::Paste
 
   if (aGUID != aCurrentModel->GetGUID())
   {
-    WriteMessage("TObj_TModel retrieval: wrong model GUID");
+    myMessageDriver->Send("TObj_TModel retrieval: wrong model GUID", Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.hxx
index a6f61a89c1..fcb0c7ca03 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ModelDriver.hxx
@@ -27,7 +27,7 @@ class BinTObjDrivers_ModelDriver : public BinMDF_ADriver
  public:
 
   Standard_EXPORT BinTObjDrivers_ModelDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.cxx
index 4282a3d7f8..de9979dbc0 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.cxx
@@ -16,7 +16,7 @@
 // The original implementation Copyright: (C) RINA S.p.A
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <BinObjMgt_Persistent.hxx>
 #include <TDF_Tool.hxx>
 
@@ -36,7 +36,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinTObjDrivers_ObjectDriver,BinMDF_ADriver)
 //=======================================================================
 
 BinTObjDrivers_ObjectDriver::BinTObjDrivers_ObjectDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : BinMDF_ADriver( theMessageDriver, NULL)
 {
 }
@@ -81,9 +81,9 @@ Standard_Boolean BinTObjDrivers_ObjectDriver::Paste
     {
       TCollection_AsciiString anEntry;
       TDF_Tool::Entry (theTarget->Label(), anEntry);
-      WriteMessage (TCollection_ExtendedString
-                    ("TObj_TObject retrieval: wrong object type name ") +
-                    aName + ", entry " + anEntry);
+      myMessageDriver->Send (TCollection_ExtendedString
+                       ("TObj_TObject retrieval: wrong object type name ") +
+                       aName + ", entry " + anEntry, Message_Fail);
       TObj_Assistant::BindType(0);
       return Standard_False;
     }
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.hxx
index fcd53214f8..07341da005 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ObjectDriver.hxx
@@ -28,7 +28,7 @@ class BinTObjDrivers_ObjectDriver : public BinMDF_ADriver
  public:
 
   Standard_EXPORT BinTObjDrivers_ObjectDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.cxx
index cbc1ce3e9e..89301a27ff 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.cxx
@@ -17,7 +17,7 @@
 
 
 #include <BinTObjDrivers_ReferenceDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Attribute.hxx>
 #include <TObj_TReference.hxx>
 #include <BinObjMgt_Persistent.hxx>
@@ -36,7 +36,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinTObjDrivers_ReferenceDriver,BinMDF_ADriver)
 //=======================================================================
 
 BinTObjDrivers_ReferenceDriver::BinTObjDrivers_ReferenceDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : BinMDF_ADriver( theMessageDriver, NULL)
 {
 }
@@ -81,8 +81,8 @@ Standard_Boolean BinTObjDrivers_ReferenceDriver::Paste
     {
       TCollection_AsciiString anEntry;
       TDF_Tool::Entry (theTarget->Label(), anEntry);
-      WriteMessage (TCollection_ExtendedString ("TObj_TReference retrieval: ")
-                    + "wrong model ID " + aName + ", entry " + anEntry);
+      myMessageDriver->Send (TCollection_ExtendedString ("TObj_TReference retrieval: ")
+                             + "wrong model ID " + aName + ", entry " + anEntry, Message_Fail);
       return Standard_False;
     }
     aDS = aModel->GetLabel().Data();
diff --git a/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.hxx
index cfc7cea957..a9dec24dec 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_ReferenceDriver.hxx
@@ -28,7 +28,7 @@ class BinTObjDrivers_ReferenceDriver : public BinMDF_ADriver
  public:
 
   Standard_EXPORT BinTObjDrivers_ReferenceDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.cxx b/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.cxx
index 691a320499..e72a30b1e7 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.cxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.cxx
@@ -17,7 +17,7 @@
 
 
 #include <BinTObjDrivers_XYZDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Attribute.hxx>
 #include <BinObjMgt_Persistent.hxx>
 #include <TObj_TXYZ.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BinTObjDrivers_XYZDriver,BinMDF_ADriver)
 //=======================================================================
 
 BinTObjDrivers_XYZDriver::BinTObjDrivers_XYZDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : BinMDF_ADriver( theMessageDriver, NULL)
 {
 }
diff --git a/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.hxx b/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.hxx
index 45f044e863..6e3c315d51 100644
--- a/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.hxx
+++ b/src/BinTObjDrivers/BinTObjDrivers_XYZDriver.hxx
@@ -28,7 +28,7 @@ class BinTObjDrivers_XYZDriver : public BinMDF_ADriver
  public:
 
   Standard_EXPORT BinTObjDrivers_XYZDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers.cxx b/src/BinXCAFDrivers/BinXCAFDrivers.cxx
index 7db8886566..ac413c99ef 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers.cxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers.cxx
@@ -20,7 +20,7 @@
 #include <BinXCAFDrivers.hxx>
 #include <BinXCAFDrivers_DocumentRetrievalDriver.hxx>
 #include <BinXCAFDrivers_DocumentStorageDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Plugin_Macro.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_GUID.hxx>
@@ -74,7 +74,7 @@ void BinXCAFDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //function :
 //purpose  : 
 //=======================================================================
-Handle(BinMDF_ADriverTable) BinXCAFDrivers::AttributeDrivers(const Handle(CDM_MessageDriver)& aMsgDrv) {
+Handle(BinMDF_ADriverTable) BinXCAFDrivers::AttributeDrivers(const Handle(Message_Messenger)& aMsgDrv) {
   // Standard Drivers
   Handle(BinMDF_ADriverTable) aTable = BinDrivers::AttributeDrivers(aMsgDrv);
 
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers.hxx b/src/BinXCAFDrivers/BinXCAFDrivers.hxx
index d55abbcd04..dfc1cda7c8 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers.hxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers.hxx
@@ -21,7 +21,7 @@
 class Standard_Transient;
 class Standard_GUID;
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class BinXCAFDrivers_DocumentStorageDriver;
 class BinXCAFDrivers_DocumentRetrievalDriver;
 class TDocStd_Application;
@@ -37,7 +37,7 @@ public:
   Standard_EXPORT static void DefineFormat (const Handle(TDocStd_Application)& theApp);
 
   //! Creates the table of drivers of types supported
-  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& MsgDrv);
+  Standard_EXPORT static Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& MsgDrv);
 };
 
 #endif // _BinXCAFDrivers_HeaderFile
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.cxx b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.cxx
index 1e36379f69..9c5623cf2e 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.cxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinXCAFDrivers.hxx>
 #include <BinXCAFDrivers_DocumentRetrievalDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(BinXCAFDrivers_DocumentRetrievalDriver,BinDrivers_DocumentRetrievalDriver)
@@ -33,7 +33,7 @@ BinXCAFDrivers_DocumentRetrievalDriver::BinXCAFDrivers_DocumentRetrievalDriver()
 //function : 
 //purpose  :
 //=======================================================================
-Handle(BinMDF_ADriverTable) BinXCAFDrivers_DocumentRetrievalDriver::AttributeDrivers(const Handle(CDM_MessageDriver)& theMsgDriver) {
+Handle(BinMDF_ADriverTable) BinXCAFDrivers_DocumentRetrievalDriver::AttributeDrivers(const Handle(Message_Messenger)& theMsgDriver) {
   return BinXCAFDrivers::AttributeDrivers (theMsgDriver);
 }
 
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.hxx b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.hxx
index ef6c7ee4f6..90b444fb29 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.hxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentRetrievalDriver.hxx
@@ -21,7 +21,7 @@
 
 #include <BinDrivers_DocumentRetrievalDriver.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class BinXCAFDrivers_DocumentRetrievalDriver;
@@ -37,7 +37,7 @@ public:
   //! Constructor
   Standard_EXPORT BinXCAFDrivers_DocumentRetrievalDriver();
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
 
 
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.cxx b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.cxx
index 07d370c53e..218696668c 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.cxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.cxx
@@ -17,7 +17,7 @@
 #include <BinMDF_ADriverTable.hxx>
 #include <BinXCAFDrivers.hxx>
 #include <BinXCAFDrivers_DocumentStorageDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(BinXCAFDrivers_DocumentStorageDriver,BinDrivers_DocumentStorageDriver)
@@ -33,7 +33,7 @@ BinXCAFDrivers_DocumentStorageDriver::BinXCAFDrivers_DocumentStorageDriver() {
 //function : 
 //purpose  :
 //=======================================================================
-Handle(BinMDF_ADriverTable) BinXCAFDrivers_DocumentStorageDriver::AttributeDrivers(const Handle(CDM_MessageDriver)& theMsgDriver) {
+Handle(BinMDF_ADriverTable) BinXCAFDrivers_DocumentStorageDriver::AttributeDrivers(const Handle(Message_Messenger)& theMsgDriver) {
   return BinXCAFDrivers::AttributeDrivers (theMsgDriver);
 }
 
diff --git a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.hxx b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.hxx
index e491f115d9..e7fae190e5 100644
--- a/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.hxx
+++ b/src/BinXCAFDrivers/BinXCAFDrivers_DocumentStorageDriver.hxx
@@ -21,7 +21,7 @@
 
 #include <BinDrivers_DocumentStorageDriver.hxx>
 class BinMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class BinXCAFDrivers_DocumentStorageDriver;
@@ -37,7 +37,7 @@ public:
   //! Constructor
   Standard_EXPORT BinXCAFDrivers_DocumentStorageDriver();
   
-  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(BinMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
 
 
diff --git a/src/CDM/CDM_Application.cxx b/src/CDM/CDM_Application.cxx
index f61332d971..627960aa82 100644
--- a/src/CDM/CDM_Application.cxx
+++ b/src/CDM/CDM_Application.cxx
@@ -17,13 +17,13 @@
 
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
 #include <CDM_MetaData.hxx>
-#include <CDM_NullMessageDriver.hxx>
 #include <CDM_Reference.hxx>
 #include <Resource_Manager.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
+#include <Message.hxx>
+#include <Message_Messenger.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(CDM_Application,Standard_Transient)
 
@@ -55,11 +55,12 @@ void CDM_Application::SetReferenceCounter
 //purpose  : 
 //=======================================================================
 
-Handle(CDM_MessageDriver) CDM_Application::MessageDriver()
+Handle(Message_Messenger) CDM_Application::MessageDriver()
 {
-  static Handle(CDM_NullMessageDriver) theMessageDriver
-    =new CDM_NullMessageDriver;
-  return theMessageDriver;
+  static Handle(Message_Messenger) theMessenger;
+  if(theMessenger.IsNull()) 
+    theMessenger = Message::DefaultMessenger();
+  return theMessenger;
 }
 
 //=======================================================================
@@ -69,7 +70,7 @@ Handle(CDM_MessageDriver) CDM_Application::MessageDriver()
 
 void CDM_Application::Write(const Standard_ExtString aString)
 {
-  MessageDriver()->Write(aString);
+  MessageDriver()->Send(aString);
 }
 
 //=======================================================================
diff --git a/src/CDM/CDM_Application.hxx b/src/CDM/CDM_Application.hxx
index 3720527b6f..05269990a4 100644
--- a/src/CDM/CDM_Application.hxx
+++ b/src/CDM/CDM_Application.hxx
@@ -31,8 +31,7 @@ class CDM_Reference;
 class CDM_MetaData;
 class CDM_Document;
 class Resource_Manager;
-class CDM_MessageDriver;
-
+class Message_Messenger;
 
 class CDM_Application;
 DEFINE_STANDARD_HANDLE(CDM_Application, Standard_Transient)
@@ -48,8 +47,8 @@ public:
   //! used to search for Format.Retrieval  resource items.
   Standard_EXPORT virtual Handle(Resource_Manager) Resources() = 0;
   
-  //! By default returns a NullMessageDriver;
-  Standard_EXPORT virtual Handle(CDM_MessageDriver) MessageDriver();
+  //! Returns default messenger;
+  Standard_EXPORT virtual Handle(Message_Messenger) MessageDriver();
   
   //! this method is called before the update of a document.
   //! By default, writes in MessageDriver().
diff --git a/src/CDM/CDM_COutMessageDriver.cxx b/src/CDM/CDM_COutMessageDriver.cxx
deleted file mode 100644
index ead684c72e..0000000000
--- a/src/CDM/CDM_COutMessageDriver.cxx
+++ /dev/null
@@ -1,51 +0,0 @@
-// Created on: 2001-08-30
-// Created by: Alexander GRIGORIEV
-// Copyright (c) 2001-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <CDM_COutMessageDriver.hxx>
-#include <Standard_PCharacter.hxx>
-#include <Standard_Type.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(CDM_COutMessageDriver,CDM_MessageDriver)
-
-//=======================================================================
-//function : Write
-//purpose  : 
-//=======================================================================
-void CDM_COutMessageDriver::Write (const Standard_ExtString aString)
-{
-  //    Find the length of the input string
-  Standard_ExtCharacter aChar = aString[0];
-  Standard_Integer aLength = 0;
-  while (aChar) {
-    if (IsAnAscii(aChar) == Standard_False)
-      return;
-    aChar = aString [++aLength];
-  }
-
-  //    Copy the input string to ASCII buffer
-  Standard_PCharacter anAsciiString = new Standard_Character [aLength+2];
-  Standard_Integer anI = 0;
-  while (anI < aLength) {
-    anAsciiString[anI] = Standard_Character (aString[anI]);
-    ++ anI;
-  }
-  anAsciiString[anI+0] = '\n';
-  anAsciiString[anI+1] = '\0';
-
-  //    Output
-  cout << anAsciiString << flush;
-  delete [] anAsciiString;
-}
diff --git a/src/CDM/CDM_COutMessageDriver.hxx b/src/CDM/CDM_COutMessageDriver.hxx
deleted file mode 100644
index ab9f4c1e91..0000000000
--- a/src/CDM/CDM_COutMessageDriver.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-// Created on: 2001-08-30
-// Created by: Alexander GRIGORIEV
-// Copyright (c) 2001-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _CDM_COutMessageDriver_HeaderFile
-#define _CDM_COutMessageDriver_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <CDM_MessageDriver.hxx>
-#include <Standard_ExtString.hxx>
-
-
-class CDM_COutMessageDriver;
-DEFINE_STANDARD_HANDLE(CDM_COutMessageDriver, CDM_MessageDriver)
-
-//! aMessageDriver for output to COUT (only ASCII strings)
-class CDM_COutMessageDriver : public CDM_MessageDriver
-{
-
-public:
-
-  
-  Standard_EXPORT void Write (const Standard_ExtString aString) Standard_OVERRIDE;
-
-
-
-
-  DEFINE_STANDARD_RTTIEXT(CDM_COutMessageDriver,CDM_MessageDriver)
-
-protected:
-
-
-
-
-private:
-
-
-
-
-};
-
-
-
-
-
-
-
-#endif // _CDM_COutMessageDriver_HeaderFile
diff --git a/src/CDM/CDM_MessageDriver.cxx b/src/CDM/CDM_MessageDriver.cxx
deleted file mode 100644
index e8eddb4d85..0000000000
--- a/src/CDM/CDM_MessageDriver.cxx
+++ /dev/null
@@ -1,21 +0,0 @@
-// Created on: 1998-10-29
-// Created by: Mister rmi
-// Copyright (c) 1998-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <CDM_MessageDriver.hxx>
-#include <Standard_Type.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(CDM_MessageDriver,Standard_Transient)
\ No newline at end of file
diff --git a/src/CDM/CDM_MessageDriver.hxx b/src/CDM/CDM_MessageDriver.hxx
deleted file mode 100644
index be67b1d33c..0000000000
--- a/src/CDM/CDM_MessageDriver.hxx
+++ /dev/null
@@ -1,62 +0,0 @@
-// Created on: 1998-10-29
-// Created by: Jean-Louis Frenkel
-// Copyright (c) 1998-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _CDM_MessageDriver_HeaderFile
-#define _CDM_MessageDriver_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <Standard_Transient.hxx>
-#include <Standard_ExtString.hxx>
-
-
-class CDM_MessageDriver;
-DEFINE_STANDARD_HANDLE(CDM_MessageDriver, Standard_Transient)
-
-
-class CDM_MessageDriver : public Standard_Transient
-{
-
-public:
-
-  
-  Standard_EXPORT virtual void Write (const Standard_ExtString aString) = 0;
-
-
-
-
-  DEFINE_STANDARD_RTTIEXT(CDM_MessageDriver,Standard_Transient)
-
-protected:
-
-
-
-
-private:
-
-
-
-
-};
-
-
-
-
-
-
-
-#endif // _CDM_MessageDriver_HeaderFile
diff --git a/src/CDM/CDM_NullMessageDriver.cxx b/src/CDM/CDM_NullMessageDriver.cxx
deleted file mode 100644
index 2a588658f9..0000000000
--- a/src/CDM/CDM_NullMessageDriver.cxx
+++ /dev/null
@@ -1,27 +0,0 @@
-// Created on: 1998-10-29
-// Created by: Mister rmi
-// Copyright (c) 1998-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <CDM_NullMessageDriver.hxx>
-#include <Standard_Type.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(CDM_NullMessageDriver,CDM_MessageDriver)
-
-CDM_NullMessageDriver::CDM_NullMessageDriver() {}
-
-void CDM_NullMessageDriver::Write(const Standard_ExtString /*aString*/) {
-}
diff --git a/src/CDM/CDM_NullMessageDriver.hxx b/src/CDM/CDM_NullMessageDriver.hxx
deleted file mode 100644
index b616fdb9ff..0000000000
--- a/src/CDM/CDM_NullMessageDriver.hxx
+++ /dev/null
@@ -1,64 +0,0 @@
-// Created on: 1998-10-29
-// Created by: Jean-Louis Frenkel
-// Copyright (c) 1998-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _CDM_NullMessageDriver_HeaderFile
-#define _CDM_NullMessageDriver_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <CDM_MessageDriver.hxx>
-#include <Standard_ExtString.hxx>
-
-
-class CDM_NullMessageDriver;
-DEFINE_STANDARD_HANDLE(CDM_NullMessageDriver, CDM_MessageDriver)
-
-//! a MessageDriver that writes nowhere.
-class CDM_NullMessageDriver : public CDM_MessageDriver
-{
-
-public:
-
-  
-  Standard_EXPORT CDM_NullMessageDriver();
-  
-  Standard_EXPORT void Write (const Standard_ExtString aString) Standard_OVERRIDE;
-
-
-
-
-  DEFINE_STANDARD_RTTIEXT(CDM_NullMessageDriver,CDM_MessageDriver)
-
-protected:
-
-
-
-
-private:
-
-
-
-
-};
-
-
-
-
-
-
-
-#endif // _CDM_NullMessageDriver_HeaderFile
diff --git a/src/CDM/FILES b/src/CDM/FILES
index 69693e500f..e1e386807f 100644
--- a/src/CDM/FILES
+++ b/src/CDM/FILES
@@ -1,8 +1,6 @@
 CDM_Application.cxx
 CDM_Application.hxx
 CDM_CanCloseStatus.hxx
-CDM_COutMessageDriver.cxx
-CDM_COutMessageDriver.hxx
 CDM_DataMapIteratorOfMetaDataLookUpTable.hxx
 CDM_DataMapIteratorOfPresentationDirectory.hxx
 CDM_Document.cxx
@@ -15,14 +13,10 @@ CDM_ListOfDocument.hxx
 CDM_ListOfReferences.hxx
 CDM_MapIteratorOfMapOfDocument.hxx
 CDM_MapOfDocument.hxx
-CDM_MessageDriver.cxx
-CDM_MessageDriver.hxx
 CDM_MetaData.cxx
 CDM_MetaData.hxx
 CDM_MetaDataLookUpTable.hxx
 CDM_NamesDirectory.hxx
-CDM_NullMessageDriver.cxx
-CDM_NullMessageDriver.hxx
 CDM_PresentationDirectory.hxx
 CDM_Reference.cxx
 CDM_Reference.hxx
diff --git a/src/PCDM/PCDM_ReadWriter.cxx b/src/PCDM/PCDM_ReadWriter.cxx
index 35574787dd..04ea7bf7ed 100644
--- a/src/PCDM/PCDM_ReadWriter.cxx
+++ b/src/PCDM/PCDM_ReadWriter.cxx
@@ -16,7 +16,6 @@
 
 
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
 #include <PCDM.hxx>
 #include <PCDM_DOMHeaderParser.hxx>
 #include <PCDM_ReadWriter.hxx>
diff --git a/src/PCDM/PCDM_ReadWriter.hxx b/src/PCDM/PCDM_ReadWriter.hxx
index a66ad8e8f3..751b67ea61 100644
--- a/src/PCDM/PCDM_ReadWriter.hxx
+++ b/src/PCDM/PCDM_ReadWriter.hxx
@@ -29,7 +29,7 @@ class TCollection_AsciiString;
 class Storage_Data;
 class CDM_Document;
 class TCollection_ExtendedString;
-class CDM_MessageDriver;
+class Message_Messenger;
 class Storage_BaseDriver;
 
 
@@ -54,13 +54,13 @@ public:
   
   Standard_EXPORT virtual void WriteVersion (const Handle(Storage_Data)& aData, const Handle(CDM_Document)& aDocument) const = 0;
   
-  Standard_EXPORT virtual Standard_Integer ReadReferenceCounter (const TCollection_ExtendedString& theFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const = 0;
+  Standard_EXPORT virtual Standard_Integer ReadReferenceCounter (const TCollection_ExtendedString& theFileName, const Handle(Message_Messenger)& theMsgDriver) const = 0;
   
-  Standard_EXPORT virtual void ReadReferences (const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(CDM_MessageDriver)& theMsgDriver) const = 0;
+  Standard_EXPORT virtual void ReadReferences (const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(Message_Messenger)& theMsgDriver) const = 0;
   
-  Standard_EXPORT virtual void ReadExtensions (const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(CDM_MessageDriver)& theMsgDriver) const = 0;
+  Standard_EXPORT virtual void ReadExtensions (const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(Message_Messenger)& theMsgDriver) const = 0;
   
-  Standard_EXPORT virtual Standard_Integer ReadDocumentVersion (const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const = 0;
+  Standard_EXPORT virtual Standard_Integer ReadDocumentVersion (const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver) const = 0;
   
   Standard_EXPORT static void Open (Storage_BaseDriver& aDriver, const TCollection_ExtendedString& aFileName, const Storage_OpenMode anOpenMode);
   
diff --git a/src/PCDM/PCDM_ReadWriter_1.cxx b/src/PCDM/PCDM_ReadWriter_1.cxx
index 86fc644ab0..18b9bb16df 100644
--- a/src/PCDM/PCDM_ReadWriter_1.cxx
+++ b/src/PCDM/PCDM_ReadWriter_1.cxx
@@ -16,7 +16,6 @@
 
 
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
 #include <CDM_MetaData.hxx>
 #include <CDM_ReferenceIterator.hxx>
 #include <OSD_Path.hxx>
@@ -25,6 +24,7 @@
 #include <PCDM_ReadWriter_1.hxx>
 #include <PCDM_Reference.hxx>
 #include <PCDM_TypeOfFileDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_Type.hxx>
 #include <Storage_Data.hxx>
@@ -224,7 +224,7 @@ void PCDM_ReadWriter_1::WriteVersion(const Handle(Storage_Data)& aData, const Ha
 //purpose  : 
 //=======================================================================
 
-Standard_Integer PCDM_ReadWriter_1::ReadReferenceCounter(const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const {
+Standard_Integer PCDM_ReadWriter_1::ReadReferenceCounter(const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver) const {
 
   static Standard_Integer theReferencesCounter ;
   theReferencesCounter=0;
@@ -256,7 +256,7 @@ Standard_Integer PCDM_ReadWriter_1::ReadReferenceCounter(const TCollection_Exten
 	  TCollection_ExtendedString aMsg("Warning: ");
 	  aMsg = aMsg.Cat("could not read the reference counter in ").Cat(aFileName).Cat("\0");
 	  if(!theMsgDriver.IsNull()) 
-	    theMsgDriver->Write(aMsg.ToExtString());
+	    theMsgDriver->Send(aMsg.ToExtString());
 	}
       }
     }
@@ -275,7 +275,7 @@ Standard_Integer PCDM_ReadWriter_1::ReadReferenceCounter(const TCollection_Exten
 //purpose  : 
 //=======================================================================
 
-void PCDM_ReadWriter_1::ReadReferences(const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(CDM_MessageDriver)& theMsgDriver) const  {
+void PCDM_ReadWriter_1::ReadReferences(const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(Message_Messenger)& theMsgDriver) const  {
 
   TColStd_SequenceOfExtendedString ReadReferences;
   
@@ -308,7 +308,7 @@ void PCDM_ReadWriter_1::ReadReferences(const TCollection_ExtendedString& aFileNa
 //      cout << "reference found; ReferenceIdentifier: " << theReferenceIdentifier << "; File:" << thePath << ", version:" << theDocumentVersion;
 	TCollection_ExtendedString aMsg("Warning: ");
 	aMsg = aMsg.Cat("reference found; ReferenceIdentifier:  ").Cat(theReferenceIdentifier).Cat("; File:").Cat(thePath).Cat(", version:").Cat(theDocumentVersion).Cat("\0");
-	theMsgDriver->Write(aMsg.ToExtString());
+	theMsgDriver->Send(aMsg.ToExtString());
       }
       TCollection_ExtendedString aPathW(thePath);
       theReferences.Append(PCDM_Reference (theReferenceIdentifier,aPathW,theDocumentVersion));
@@ -323,7 +323,7 @@ void PCDM_ReadWriter_1::ReadReferences(const TCollection_ExtendedString& aFileNa
 //purpose  : 
 //=======================================================================
 
-void PCDM_ReadWriter_1::ReadExtensions(const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(CDM_MessageDriver)& theMsgDriver) const {
+void PCDM_ReadWriter_1::ReadExtensions(const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(Message_Messenger)& theMsgDriver) const {
   
   ReadUserInfo(aFileName,START_EXT,END_EXT,theExtensions, theMsgDriver);
 }
@@ -338,7 +338,7 @@ void PCDM_ReadWriter_1::ReadUserInfo(const TCollection_ExtendedString& aFileName
                                      const TCollection_AsciiString& Start,
                                      const TCollection_AsciiString& End,
                                      TColStd_SequenceOfExtendedString& theUserInfo,
-                                     const Handle(CDM_MessageDriver)&) {
+                                     const Handle(Message_Messenger)&) {
 
   static Standard_Integer i ;
   PCDM_BaseDriverPointer theFileDriver;
@@ -374,7 +374,7 @@ void PCDM_ReadWriter_1::ReadUserInfo(const TCollection_ExtendedString& aFileName
 //purpose  : 
 //=======================================================================
 
-Standard_Integer PCDM_ReadWriter_1::ReadDocumentVersion(const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const {
+Standard_Integer PCDM_ReadWriter_1::ReadDocumentVersion(const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver) const {
 
   static Standard_Integer theVersion ;
   theVersion=-1;
@@ -405,7 +405,7 @@ Standard_Integer PCDM_ReadWriter_1::ReadDocumentVersion(const TCollection_Extend
 	  TCollection_ExtendedString aMsg("Warning: ");
 	  aMsg = aMsg.Cat("could not read the version in ").Cat(aFileName).Cat("\0");
 	  if(!theMsgDriver.IsNull()) 
-	    theMsgDriver->Write(aMsg.ToExtString());
+	    theMsgDriver->Send(aMsg.ToExtString());
 	}
 
       }
diff --git a/src/PCDM/PCDM_ReadWriter_1.hxx b/src/PCDM/PCDM_ReadWriter_1.hxx
index b04668a64a..d2c5a56fee 100644
--- a/src/PCDM/PCDM_ReadWriter_1.hxx
+++ b/src/PCDM/PCDM_ReadWriter_1.hxx
@@ -28,7 +28,7 @@ class TCollection_AsciiString;
 class Storage_Data;
 class CDM_Document;
 class TCollection_ExtendedString;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class PCDM_ReadWriter_1;
@@ -54,13 +54,13 @@ public:
   
   Standard_EXPORT void WriteVersion (const Handle(Storage_Data)& aData, const Handle(CDM_Document)& aDocument) const Standard_OVERRIDE;
   
-  Standard_EXPORT Standard_Integer ReadReferenceCounter (const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const Standard_OVERRIDE;
+  Standard_EXPORT Standard_Integer ReadReferenceCounter (const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver) const Standard_OVERRIDE;
   
-  Standard_EXPORT void ReadReferences (const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(CDM_MessageDriver)& theMsgDriver) const Standard_OVERRIDE;
+  Standard_EXPORT void ReadReferences (const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(Message_Messenger)& theMsgDriver) const Standard_OVERRIDE;
   
-  Standard_EXPORT void ReadExtensions (const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(CDM_MessageDriver)& theMsgDriver) const Standard_OVERRIDE;
+  Standard_EXPORT void ReadExtensions (const TCollection_ExtendedString& aFileName, TColStd_SequenceOfExtendedString& theExtensions, const Handle(Message_Messenger)& theMsgDriver) const Standard_OVERRIDE;
   
-  Standard_EXPORT Standard_Integer ReadDocumentVersion (const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver) const Standard_OVERRIDE;
+  Standard_EXPORT Standard_Integer ReadDocumentVersion (const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver) const Standard_OVERRIDE;
 
 
 
@@ -75,7 +75,7 @@ protected:
 private:
 
   
-  Standard_EXPORT static void ReadUserInfo (const TCollection_ExtendedString& aFileName, const TCollection_AsciiString& Start, const TCollection_AsciiString& End, TColStd_SequenceOfExtendedString& theUserInfo, const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT static void ReadUserInfo (const TCollection_ExtendedString& aFileName, const TCollection_AsciiString& Start, const TCollection_AsciiString& End, TColStd_SequenceOfExtendedString& theUserInfo, const Handle(Message_Messenger)& theMsgDriver);
 
 
 
diff --git a/src/PCDM/PCDM_ReferenceIterator.cxx b/src/PCDM/PCDM_ReferenceIterator.cxx
index 60ee20bbaa..a3554f24a8 100644
--- a/src/PCDM/PCDM_ReferenceIterator.cxx
+++ b/src/PCDM/PCDM_ReferenceIterator.cxx
@@ -17,7 +17,7 @@
 
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <CDM_MetaData.hxx>
 #include <OSD_Path.hxx>
 #include <PCDM_Reference.hxx>
@@ -38,7 +38,7 @@ IMPLEMENT_STANDARD_RTTIEXT(PCDM_ReferenceIterator,Standard_Transient)
 //purpose  : 
 //=======================================================================
 
-PCDM_ReferenceIterator::PCDM_ReferenceIterator (const Handle(CDM_MessageDriver)& theMsgDriver) :
+PCDM_ReferenceIterator::PCDM_ReferenceIterator (const Handle(Message_Messenger)& theMsgDriver) :
       myIterator(0)
 {
   myMessageDriver = theMsgDriver;
diff --git a/src/PCDM/PCDM_ReferenceIterator.hxx b/src/PCDM/PCDM_ReferenceIterator.hxx
index 5a1f82adac..be0b523781 100644
--- a/src/PCDM/PCDM_ReferenceIterator.hxx
+++ b/src/PCDM/PCDM_ReferenceIterator.hxx
@@ -24,7 +24,7 @@
 #include <Standard_Integer.hxx>
 #include <Standard_Transient.hxx>
 #include <Standard_Boolean.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class CDM_Document;
 class CDM_MetaData;
 class CDM_Application;
@@ -41,7 +41,7 @@ public:
 
   
   //! Warning! The constructor does not initialization.
-  Standard_EXPORT PCDM_ReferenceIterator(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT PCDM_ReferenceIterator(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT void LoadReferences (const Handle(CDM_Document)& aDocument, const Handle(CDM_MetaData)& aMetaData, const Handle(CDM_Application)& anApplication, const Standard_Boolean UseStorageConfiguration);
   
@@ -73,7 +73,7 @@ private:
 
   PCDM_SequenceOfReference myReferences;
   Standard_Integer myIterator;
-  Handle(CDM_MessageDriver) myMessageDriver;
+  Handle(Message_Messenger) myMessageDriver;
 
 
 };
diff --git a/src/PCDM/PCDM_RetrievalDriver.cxx b/src/PCDM/PCDM_RetrievalDriver.cxx
index 5f5c413f9e..400b4c928c 100644
--- a/src/PCDM/PCDM_RetrievalDriver.cxx
+++ b/src/PCDM/PCDM_RetrievalDriver.cxx
@@ -17,7 +17,7 @@
 
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <CDM_MetaData.hxx>
 #include <PCDM.hxx>
 #include <PCDM_BaseDriverPointer.hxx>
@@ -37,13 +37,13 @@
 
 IMPLEMENT_STANDARD_RTTIEXT(PCDM_RetrievalDriver,PCDM_Reader)
 
-void PCDM_RetrievalDriver::References(const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(CDM_MessageDriver)& theMsgDriver)
+void PCDM_RetrievalDriver::References(const TCollection_ExtendedString& aFileName, PCDM_SequenceOfReference& theReferences, const Handle(Message_Messenger)& theMsgDriver)
   { PCDM_ReadWriter::Reader(aFileName)->ReadReferences(aFileName, theReferences, theMsgDriver);}
 
-Standard_Integer PCDM_RetrievalDriver::DocumentVersion(const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver)
+Standard_Integer PCDM_RetrievalDriver::DocumentVersion(const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver)
   { return PCDM_ReadWriter::Reader(aFileName)->ReadDocumentVersion(aFileName, theMsgDriver); }
 
-Standard_Integer PCDM_RetrievalDriver::ReferenceCounter(const TCollection_ExtendedString& aFileName, const Handle(CDM_MessageDriver)& theMsgDriver)
+Standard_Integer PCDM_RetrievalDriver::ReferenceCounter(const TCollection_ExtendedString& aFileName, const Handle(Message_Messenger)& theMsgDriver)
   { return PCDM_ReadWriter::Reader(aFileName)->ReadReferenceCounter(aFileName, theMsgDriver); }
 
 void PCDM_RetrievalDriver::SetFormat (const TCollection_ExtendedString& aformat)
diff --git a/src/PCDM/PCDM_RetrievalDriver.hxx b/src/PCDM/PCDM_RetrievalDriver.hxx
index 09d898bccd..060e9cd0d3 100644
--- a/src/PCDM/PCDM_RetrievalDriver.hxx
+++ b/src/PCDM/PCDM_RetrievalDriver.hxx
@@ -25,7 +25,7 @@
 #include <PCDM_SequenceOfReference.hxx>
 
 class CDM_MetaData;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TCollection_AsciiString;
 class TCollection_ExtendedString;
 
@@ -39,11 +39,11 @@ class PCDM_RetrievalDriver : public PCDM_Reader
 public:
   Standard_EXPORT static Standard_Integer DocumentVersion (
     const TCollection_ExtendedString& theFileName,
-    const Handle(CDM_MessageDriver)&  theMsgDriver);
+    const Handle(Message_Messenger)&  theMsgDriver);
 
   Standard_EXPORT static Standard_Integer ReferenceCounter (
     const TCollection_ExtendedString& theFileName,
-    const Handle(CDM_MessageDriver)&  theMsgDriver);
+    const Handle(Message_Messenger)&  theMsgDriver);
 
   Standard_EXPORT void SetFormat (const TCollection_ExtendedString& aformat);
 
@@ -55,7 +55,7 @@ private:
   Standard_EXPORT static void References (
     const TCollection_ExtendedString& theFileName,
     PCDM_SequenceOfReference&         theReferences,
-    const Handle(CDM_MessageDriver)&  theMsgDriver);
+    const Handle(Message_Messenger)&  theMsgDriver);
 
   TCollection_ExtendedString myFormat;
 };
diff --git a/src/TDocStd/TDocStd_Application.cxx b/src/TDocStd/TDocStd_Application.cxx
index 017f99b2f5..6ef437909c 100644
--- a/src/TDocStd/TDocStd_Application.cxx
+++ b/src/TDocStd/TDocStd_Application.cxx
@@ -19,7 +19,8 @@
 #include <CDF_DirectoryIterator.hxx>
 #include <CDF_Session.hxx>
 #include <CDF_Store.hxx>
-#include <CDM_COutMessageDriver.hxx>
+#include <Message_Messenger.hxx>
+#include <Message_PrinterOStream.hxx>
 #include <PCDM_RetrievalDriver.hxx>
 #include <PCDM_StorageDriver.hxx>
 #include <Plugin.hxx>
@@ -45,10 +46,9 @@ IMPLEMENT_STANDARD_RTTIEXT(TDocStd_Application,CDF_Application)
 //purpose  :
 //=======================================================================
 TDocStd_Application::TDocStd_Application()
-     : myIsDriverLoaded (Standard_True)
+        : myIsDriverLoaded (Standard_True)
 {
-  myMessageDriver = new CDM_COutMessageDriver;
-
+  myMessageDriver = CDM_Application::MessageDriver();
   Handle(CDF_Session) S;
   if (!CDF_Session::Exists()) S = new CDF_Session();
   else S = CDF_Session::CurrentSession();
@@ -78,7 +78,7 @@ Standard_Boolean TDocStd_Application::IsDriverLoaded() const
 //function : MessageDriver
 //purpose  :
 //=======================================================================
-Handle(CDM_MessageDriver) TDocStd_Application::MessageDriver()
+Handle(Message_Messenger) TDocStd_Application::MessageDriver()
 {
   return myMessageDriver;
 }
@@ -307,7 +307,7 @@ PCDM_ReaderStatus TDocStd_Application::Open(const TCollection_ExtendedString& pa
 //      aMsg << Standard_Failure::Caught() << endl;
 //      cout << "TDocStd_Application::Open(): " << aMsg.rdbuf()->str() << endl;
       TCollection_ExtendedString aString (anException.GetMessageString());
-      MessageDriver()->Write(aString.ToExtString());
+      MessageDriver()->Send(aString.ToExtString(), Message_Fail);
     }
   }
   status = GetRetrieveStatus();
@@ -339,7 +339,7 @@ PCDM_ReaderStatus TDocStd_Application::Open (Standard_IStream& theIStream, Handl
     if (!MessageDriver().IsNull())
     {
       TCollection_ExtendedString aFailureMessage (anException.GetMessageString());
-      MessageDriver()->Write (aFailureMessage.ToExtString());
+      MessageDriver()->Send (aFailureMessage.ToExtString(), Message_Fail);
     }
   }
 
@@ -365,7 +365,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs(const Handle(TDocStd_Document)& D,c
     aMsg += directory;
     aMsg += " does not exist";
     if(!MessageDriver().IsNull())
-      MessageDriver()->Write(aMsg.ToExtString());
+      MessageDriver()->Send(aMsg.ToExtString(), Message_Fail);
     return storer.StoreStatus(); //CDF_SS_Failure;
   }
   storer.SetName (file);
@@ -376,7 +376,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs(const Handle(TDocStd_Document)& D,c
   catch (Standard_Failure const& anException) {
     if (!MessageDriver().IsNull()) {
       TCollection_ExtendedString aString (anException.GetMessageString());
-      MessageDriver()->Write(aString.ToExtString());
+      MessageDriver()->Send(aString.ToExtString(), Message_Fail);
     }
   }
   if(storer.StoreStatus() == PCDM_SS_OK)
@@ -417,7 +417,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs (const Handle(TDocStd_Document)& th
     if (!MessageDriver().IsNull())
     {
       TCollection_ExtendedString aString(anException.GetMessageString());
-      MessageDriver()->Write(aString.ToExtString());
+      MessageDriver()->Send(aString.ToExtString(), Message_Fail);
     }
   }
   return PCDM_SS_Failure;
@@ -439,7 +439,7 @@ PCDM_StoreStatus TDocStd_Application::Save (const Handle(TDocStd_Document)& D) {
     catch (Standard_Failure const& anException) {
       if (!MessageDriver().IsNull()) {
         TCollection_ExtendedString aString (anException.GetMessageString());
-        MessageDriver()->Write(aString.ToExtString());
+        MessageDriver()->Send(aString.ToExtString(), Message_Fail);
       }
     }
     if(storer.StoreStatus() == PCDM_SS_OK)
@@ -448,7 +448,7 @@ PCDM_StoreStatus TDocStd_Application::Save (const Handle(TDocStd_Document)& D) {
   } else {
     if(!MessageDriver().IsNull()) {
       TCollection_ExtendedString aMsg("Document has not been saved yet");
-      MessageDriver()->Write(aMsg.ToExtString());
+      MessageDriver()->Send(aMsg.ToExtString(), Message_Fail);
     }
     status = PCDM_SS_Failure;
   }
@@ -464,8 +464,8 @@ PCDM_StoreStatus TDocStd_Application::Save (const Handle(TDocStd_Document)& D) {
 //=======================================================================
 
 PCDM_StoreStatus TDocStd_Application::SaveAs(const Handle(TDocStd_Document)& D,
-					      const TCollection_ExtendedString& path,
-					      TCollection_ExtendedString& theStatusMessage) 
+                                             const TCollection_ExtendedString& path,
+                                             TCollection_ExtendedString& theStatusMessage) 
 { 
   TDocStd_PathParser tool (path);
   PCDM_StoreStatus aStatus = PCDM_SS_Failure;
@@ -484,7 +484,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs(const Handle(TDocStd_Document)& D,
     catch (Standard_Failure const& anException) {
       if (!MessageDriver().IsNull()) {
         TCollection_ExtendedString aString (anException.GetMessageString());
-        MessageDriver()->Write(aString.ToExtString());
+        MessageDriver()->Send(aString.ToExtString(), Message_Fail);
       }
     }
     if(storer.StoreStatus() == PCDM_SS_OK)
@@ -533,7 +533,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs (const Handle(TDocStd_Document)& th
     if (!MessageDriver().IsNull())
     {
       TCollection_ExtendedString aString(anException.GetMessageString());
-      MessageDriver()->Write(aString.ToExtString());
+      MessageDriver()->Send(aString.ToExtString(), Message_Fail);
     }
   }
   return PCDM_SS_Failure;
@@ -545,7 +545,7 @@ PCDM_StoreStatus TDocStd_Application::SaveAs (const Handle(TDocStd_Document)& th
 //=======================================================================
 
 PCDM_StoreStatus TDocStd_Application::Save (const Handle(TDocStd_Document)& D,
-					   TCollection_ExtendedString& theStatusMessage)
+                                            TCollection_ExtendedString& theStatusMessage)
 {  
   PCDM_StoreStatus status = PCDM_SS_OK;
   if (D->IsSaved()) {  
@@ -557,7 +557,7 @@ PCDM_StoreStatus TDocStd_Application::Save (const Handle(TDocStd_Document)& D,
     catch (Standard_Failure const& anException) {
       if (!MessageDriver().IsNull()) {
         TCollection_ExtendedString aString (anException.GetMessageString());
-        MessageDriver()->Write(aString.ToExtString());
+        MessageDriver()->Send(aString.ToExtString(), Message_Fail);
       }
     }
     if(storer.StoreStatus() == PCDM_SS_OK)
diff --git a/src/TDocStd/TDocStd_Application.hxx b/src/TDocStd/TDocStd_Application.hxx
index eae5f954d2..a93f59bfec 100644
--- a/src/TDocStd/TDocStd_Application.hxx
+++ b/src/TDocStd/TDocStd_Application.hxx
@@ -22,7 +22,7 @@
 
 #include <Standard_Boolean.hxx>
 #include <CDF_Application.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_CString.hxx>
 #include <Standard_Integer.hxx>
 #include <Standard_IStream.hxx>
@@ -61,12 +61,13 @@ DEFINE_STANDARD_HANDLE(TDocStd_Application, CDF_Application)
 //! -   Initialization of document views.
 //! Note:
 //! If a client needs detailed information concerning
-//! the events during the Open/Store operation, MessageDriver
-//! inherited from CDM_MessageDriver of the
-//! corresponding application has to be implemented.
-//! If the MessageDriver is not defined all messages
-//! will be (by default) directed to
-//! CDM_NullMessageDriver and will be lost.
+//! the events during the Open/Store operation, a MessageDriver
+//! based on Message_PrinterOStream may be used. In case of need client
+//! can implement his own version inheriting from Message_Printer class 
+//! and add it to the Messanger.
+//! Also the trace level of messages can be tuned by setting trace level (SetTraceLevel (Gravity )) for the used Printer.
+//! By default, trace level is Message_Info, so that all messages are output.
+
 class TDocStd_Application : public CDF_Application
 {
 
@@ -80,7 +81,7 @@ public:
   Standard_EXPORT Standard_Boolean IsDriverLoaded() const;
 
   //! Redefines message driver, by default outputs to cout.
-  Standard_EXPORT virtual Handle(CDM_MessageDriver) MessageDriver() Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(Message_Messenger) MessageDriver() Standard_OVERRIDE;
   
   //! Returns resource manager defining supported persistent formats.
   //!
@@ -269,7 +270,7 @@ public:
   DEFINE_STANDARD_RTTIEXT(TDocStd_Application,CDF_Application)
 
 protected:
-  Handle(CDM_MessageDriver) myMessageDriver;
+  Handle(Message_Messenger) myMessageDriver;
   Handle(Resource_Manager) myResources;
   Standard_Boolean myIsDriverLoaded;
 };
diff --git a/src/TObj/TObj_Application.cxx b/src/TObj/TObj_Application.cxx
index 5fc08559c3..07e92ab329 100644
--- a/src/TObj/TObj_Application.cxx
+++ b/src/TObj/TObj_Application.cxx
@@ -21,7 +21,6 @@
 #include <Standard_ErrorHandler.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <TColStd_SequenceOfExtendedString.hxx>
-#include <CDM_COutMessageDriver.hxx>
 #include <Message_Msg.hxx>
 #include <Message_MsgFile.hxx>
 #include <Resource_Manager.hxx>
diff --git a/src/XmlDrivers/XmlDrivers.cxx b/src/XmlDrivers/XmlDrivers.cxx
index 4c627292bf..291c84470e 100644
--- a/src/XmlDrivers/XmlDrivers.cxx
+++ b/src/XmlDrivers/XmlDrivers.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Plugin_Macro.hxx>
 #include <Standard_GUID.hxx>
 #include <TDocStd_Application.hxx>
@@ -80,7 +80,7 @@ void XmlDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlDrivers::AttributeDrivers
-                (const Handle(CDM_MessageDriver)& theMessageDriver)
+                (const Handle(Message_Messenger)& theMessageDriver)
 {
   Handle(XmlMDF_ADriverTable) aTable = new XmlMDF_ADriverTable();
   //
diff --git a/src/XmlDrivers/XmlDrivers.hxx b/src/XmlDrivers/XmlDrivers.hxx
index f29da26c74..f5d998326d 100644
--- a/src/XmlDrivers/XmlDrivers.hxx
+++ b/src/XmlDrivers/XmlDrivers.hxx
@@ -21,7 +21,7 @@
 class Standard_Transient;
 class Standard_GUID;
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlDrivers_DocumentStorageDriver;
 class XmlDrivers_DocumentRetrievalDriver;
 class TDocStd_Application;
@@ -35,7 +35,7 @@ public:
   //! in the specified application
   Standard_EXPORT static void DefineFormat (const Handle(TDocStd_Application)& theApp);
 
-  Standard_EXPORT static Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT static Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
 };
 
 #endif // _XmlDrivers_HeaderFile
diff --git a/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.cxx b/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.cxx
index 98fa1819d8..5c5d4ab54a 100644
--- a/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.cxx
+++ b/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TNaming_NamedShape.hxx>
 #include <XmlDrivers.hxx>
@@ -41,7 +41,7 @@ XmlDrivers_DocumentRetrievalDriver::XmlDrivers_DocumentRetrievalDriver()
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlDrivers_DocumentRetrievalDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver) 
+       (const Handle(Message_Messenger)& theMessageDriver) 
 {
   return XmlDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -63,7 +63,7 @@ void XmlDrivers_DocumentRetrievalDriver::PropagateDocumentVersion(
 //=======================================================================
 Handle(XmlMDF_ADriver) XmlDrivers_DocumentRetrievalDriver::ReadShapeSection(
                                const XmlObjMgt_Element&       theElement,
-                               const Handle(CDM_MessageDriver)& theMsgDriver)
+                               const Handle(Message_Messenger)& theMsgDriver)
 {
   if (myDrivers.IsNull()) myDrivers = AttributeDrivers (theMsgDriver);
   Handle(XmlMDF_ADriver) aDriver;
diff --git a/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.hxx b/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.hxx
index ddedf01392..2c45e89837 100644
--- a/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.hxx
+++ b/src/XmlDrivers/XmlDrivers_DocumentRetrievalDriver.hxx
@@ -23,7 +23,7 @@
 #include <XmlObjMgt_Element.hxx>
 #include <Standard_Integer.hxx>
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDF_ADriver;
 
 
@@ -39,9 +39,9 @@ public:
   
   Standard_EXPORT XmlDrivers_DocumentRetrievalDriver();
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriver) ReadShapeSection (const XmlObjMgt_Element& thePDoc, const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(XmlMDF_ADriver) ReadShapeSection (const XmlObjMgt_Element& thePDoc, const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
   
   Standard_EXPORT virtual void ShapeSetCleaning (const Handle(XmlMDF_ADriver)& theDriver) Standard_OVERRIDE;
   
diff --git a/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.cxx b/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.cxx
index 85d80c8f52..5cbcd1cd4e 100644
--- a/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.cxx
+++ b/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <TNaming_NamedShape.hxx>
@@ -41,7 +41,7 @@ XmlDrivers_DocumentStorageDriver::XmlDrivers_DocumentStorageDriver
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlDrivers_DocumentStorageDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver) 
+       (const Handle(Message_Messenger)& theMessageDriver) 
 {
   return XmlDrivers::AttributeDrivers (theMessageDriver);
 }
diff --git a/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.hxx b/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.hxx
index f0ab0e0341..a100f8f6af 100644
--- a/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.hxx
+++ b/src/XmlDrivers/XmlDrivers_DocumentStorageDriver.hxx
@@ -24,7 +24,7 @@
 #include <XmlObjMgt_Element.hxx>
 class TCollection_ExtendedString;
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class XmlDrivers_DocumentStorageDriver;
@@ -39,7 +39,7 @@ public:
   
   Standard_EXPORT XmlDrivers_DocumentStorageDriver(const TCollection_ExtendedString& theCopyright);
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
   
   Standard_EXPORT virtual Standard_Boolean WriteShapeSection (XmlObjMgt_Element& thePDoc) Standard_OVERRIDE;
 
diff --git a/src/XmlLDrivers/XmlLDrivers.cxx b/src/XmlLDrivers/XmlLDrivers.cxx
index 705f524c84..7f7ca1d115 100644
--- a/src/XmlLDrivers/XmlLDrivers.cxx
+++ b/src/XmlLDrivers/XmlLDrivers.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Plugin_Macro.hxx>
 #include <Standard_GUID.hxx>
 #include <TDocStd_Application.hxx>
@@ -111,7 +111,7 @@ void XmlLDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlLDrivers::AttributeDrivers
-                (const Handle(CDM_MessageDriver)& theMessageDriver)
+                (const Handle(Message_Messenger)& theMessageDriver)
 {
   Handle(XmlMDF_ADriverTable) aTable = new XmlMDF_ADriverTable();
   //
diff --git a/src/XmlLDrivers/XmlLDrivers.hxx b/src/XmlLDrivers/XmlLDrivers.hxx
index 2fcdad82e1..767799a693 100644
--- a/src/XmlLDrivers/XmlLDrivers.hxx
+++ b/src/XmlLDrivers/XmlLDrivers.hxx
@@ -22,7 +22,7 @@ class Standard_Transient;
 class Standard_GUID;
 class TCollection_AsciiString;
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlLDrivers_DocumentStorageDriver;
 class XmlLDrivers_DocumentRetrievalDriver;
 class XmlLDrivers_NamespaceDef;
@@ -40,7 +40,7 @@ public:
   //! in the specified application
   Standard_EXPORT static void DefineFormat (const Handle(TDocStd_Application)& theApp);
 
-  Standard_EXPORT static Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT static Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT static int StorageVersion();
   Standard_EXPORT static void SetStorageVersion (const int version);
diff --git a/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.cxx b/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.cxx
index d220573fda..499acd7bba 100644
--- a/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.cxx
+++ b/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.cxx
@@ -16,7 +16,7 @@
 
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <CDM_MetaData.hxx>
 #include <LDOM_DocumentType.hxx>
 #include <LDOM_LDOMImplementation.hxx>
@@ -60,7 +60,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlLDrivers_DocumentRetrievalDriver,PCDM_RetrievalDri
 
 //#define TAKE_TIMES
 static void take_time (const Standard_Integer, const char *,
-                       const Handle(CDM_MessageDriver)&)
+                       const Handle(Message_Messenger)&)
 #ifdef TAKE_TIMES
 ;
 #else
@@ -196,7 +196,7 @@ void XmlLDrivers_DocumentRetrievalDriver::Read
     TCollection_ExtendedString aMsg = TCollection_ExtendedString("Error: the file ") +
                                       theFileName + " cannot be opened for reading";
 
-    theApplication->MessageDriver()->Write (aMsg.ToExtString());
+    theApplication->MessageDriver()->Send (aMsg.ToExtString(), Message_Fail);
     throw Standard_Failure("File cannot be opened for reading");
   }
 }
@@ -210,7 +210,7 @@ void XmlLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&              t
                                                 const Handle(CDM_Document)&    theNewDocument,
                                                 const Handle(CDM_Application)& theApplication)
 {
-  Handle(CDM_MessageDriver) aMessageDriver = theApplication -> MessageDriver();
+  Handle(Message_Messenger) aMessageDriver = theApplication -> MessageDriver();
   ::take_time (~0, " +++++ Start RETRIEVE procedures ++++++", aMessageDriver);
 
   // 1. Read DOM_Document from file
@@ -245,7 +245,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
                                  const Handle(CDM_Document)&    theNewDocument,
                                  const Handle(CDM_Application)& theApplication)
 {
-  const Handle(CDM_MessageDriver) aMsgDriver =
+  const Handle(Message_Messenger) aMsgDriver =
     theApplication -> MessageDriver();
   // 1. Read info // to be done
   TCollection_AsciiString anAbsoluteDirectory = GetDirFromFile(myFileName);
@@ -262,7 +262,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
         TCollection_ExtendedString ("Cannot retrieve the current Document version"
                                     " attribute as \"") + aDocVerStr + "\"";
       if(!aMsgDriver.IsNull()) 
-        aMsgDriver->Write(aMsg.ToExtString());
+        aMsgDriver->Send(aMsg.ToExtString(), Message_Fail);
     }
     
     // oan: OCC22305 - check a document verison and if it's greater than
@@ -275,7 +275,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
                                     XmlLDrivers::StorageVersion();
       myReaderStatus = PCDM_RS_NoVersion;
       if(!aMsgDriver.IsNull()) 
-        aMsgDriver->Write(aMsg.ToExtString());
+        aMsgDriver->Send(aMsg.ToExtString(), Message_Fail);
       return;
     }
 
@@ -302,7 +302,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
         TCollection_ExtendedString aMsg("Warning: ");
         aMsg = aMsg.Cat("could not read the reference counter").Cat("\0");
         if(!aMsgDriver.IsNull()) 
-    aMsgDriver->Write(aMsg.ToExtString());
+          aMsgDriver->Send(aMsg.ToExtString(), Message_Warning);
       }
     }
     else if (anInfo.Search(MODIFICATION_COUNTER) != -1) {
@@ -316,7 +316,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
       catch (Standard_Failure) { 
         TCollection_ExtendedString aMsg("Warning: could not read the modification counter\0");
         if(!aMsgDriver.IsNull()) 
-          aMsgDriver->Write(aMsg.ToExtString());
+          aMsgDriver->Send(aMsg.ToExtString(), Message_Warning);
       }
     }
     
@@ -348,9 +348,9 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
         }
         if(!aMsgDriver.IsNull()) {
     //      cout << "reference found; ReferenceIdentifier: " << theReferenceIdentifier << "; File:" << thePath << ", version:" << theDocumentVersion;
-    TCollection_ExtendedString aMsg("Warning: ");
-    aMsg = aMsg.Cat("reference found; ReferenceIdentifier:  ").Cat(aRefId).Cat("; File:").Cat(aPath).Cat(", version:").Cat(aDocumentVersion).Cat("\0");
-    aMsgDriver->Write(aMsg.ToExtString());
+          TCollection_ExtendedString aMsg("Warning: ");
+          aMsg = aMsg.Cat("reference found; ReferenceIdentifier:  ").Cat(aRefId).Cat("; File:").Cat(aPath).Cat(", version:").Cat(aDocumentVersion).Cat("\0");
+          aMsgDriver->Send(aMsg.ToExtString(), Message_Warning);
         }
         // Add new ref!
         /////////////
@@ -444,7 +444,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
     OCC_CATCH_SIGNALS
 #ifdef OCCT_DEBUG
     TCollection_ExtendedString aMessage ("PasteDocument");
-    aMsgDriver -> Write (aMessage.ToExtString());
+    aMsgDriver ->Send (aMessage.ToExtString(), Message_Trace);
 #endif
     if (!MakeDocument(theElement, theNewDocument))
       myReaderStatus = PCDM_RS_MakeFailure;
@@ -454,7 +454,7 @@ void XmlLDrivers_DocumentRetrievalDriver::ReadFromDomDocument
   catch (Standard_Failure const& anException)
   {
     TCollection_ExtendedString anErrorString (anException.GetMessageString());
-    aMsgDriver -> Write (anErrorString.ToExtString());
+    aMsgDriver ->Send (anErrorString.ToExtString(), Message_Fail);
   }
 
   //    Wipe off the shapes written to the <shapes> section
@@ -495,7 +495,7 @@ Standard_Boolean XmlLDrivers_DocumentRetrievalDriver::MakeDocument
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlLDrivers_DocumentRetrievalDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver) 
+       (const Handle(Message_Messenger)& theMessageDriver) 
 {
   return XmlLDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -516,7 +516,7 @@ extern "C" int ftime (struct timeb *tp);
 extern struct timeb  tmbuf0;
 
 static void take_time (const Standard_Integer isReset, const char * aHeader,
-                       const Handle(CDM_MessageDriver)& aMessageDriver)
+                       const Handle(Message_Messenger)& aMessageDriver)
 {
   struct timeb  tmbuf;
   ftime (&tmbuf);
@@ -549,7 +549,7 @@ void XmlLDrivers_DocumentRetrievalDriver::PropagateDocumentVersion(
 //=======================================================================
 Handle(XmlMDF_ADriver) XmlLDrivers_DocumentRetrievalDriver::ReadShapeSection(
                                const XmlObjMgt_Element&       /*theElement*/,
-             const Handle(CDM_MessageDriver)& /*aMsgDriver*/)
+             const Handle(Message_Messenger)& /*aMsgDriver*/)
 {
   Handle(XmlMDF_ADriver) aDriver;
   //empty; to be redefined
diff --git a/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.hxx b/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.hxx
index db895dcda5..cbb66a0ffe 100644
--- a/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.hxx
+++ b/src/XmlLDrivers/XmlLDrivers_DocumentRetrievalDriver.hxx
@@ -31,7 +31,7 @@ class TCollection_ExtendedString;
 class PCDM_Document;
 class CDM_Document;
 class CDM_Application;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDF_ADriver;
 
 
@@ -56,7 +56,7 @@ public:
                                      const Handle(CDM_Document)&     theDoc,
                                      const Handle(CDM_Application)&  theApplication) Standard_OVERRIDE;
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
 
 
 
@@ -70,7 +70,7 @@ protected:
   
   Standard_EXPORT virtual Standard_Boolean MakeDocument (const XmlObjMgt_Element& thePDoc, const Handle(CDM_Document)& theTDoc);
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriver) ReadShapeSection (const XmlObjMgt_Element& thePDoc, const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT virtual Handle(XmlMDF_ADriver) ReadShapeSection (const XmlObjMgt_Element& thePDoc, const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual void ShapeSetCleaning (const Handle(XmlMDF_ADriver)& theDriver);
   
diff --git a/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx b/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
index cb210d27bb..91274b5a9b 100644
--- a/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
+++ b/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
@@ -16,8 +16,8 @@
 
 #include <CDM_Application.hxx>
 #include <CDM_Document.hxx>
-#include <CDM_MessageDriver.hxx>
-#include <CDM_NullMessageDriver.hxx>
+#include <Message.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_DocumentType.hxx>
 #include <LDOM_LDOMImplementation.hxx>
 #include <LDOM_XmlWriter.hxx>
@@ -56,7 +56,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlLDrivers_DocumentStorageDriver,PCDM_StorageDriver)
 
 //#define TAKE_TIMES
 static void take_time (const Standard_Integer, const char *,
-                       const Handle(CDM_MessageDriver)&)
+                       const Handle(Message_Messenger)&)
 #ifdef TAKE_TIMES
 ;
 #else
@@ -111,7 +111,7 @@ void XmlLDrivers_DocumentStorageDriver::Write (const Handle(CDM_Document)&
     TCollection_ExtendedString aMsg = TCollection_ExtendedString("Error: the file ") +
                                       theFileName + " cannot be opened for writing";
 
-    theDocument->Application()->MessageDriver()->Write (aMsg.ToExtString());
+    theDocument->Application()->MessageDriver()->Send (aMsg.ToExtString(), Message_Fail);
     throw Standard_Failure("File cannot be opened for writing");
   }
 }
@@ -123,7 +123,7 @@ void XmlLDrivers_DocumentStorageDriver::Write (const Handle(CDM_Document)&
 Standard_EXPORT void XmlLDrivers_DocumentStorageDriver::Write (const Handle(CDM_Document)& theDocument,
                                                                Standard_OStream&           theOStream)
 {
-  Handle(CDM_MessageDriver) aMessageDriver = theDocument->Application()->MessageDriver();
+  Handle(Message_Messenger) aMessageDriver = theDocument->Application()->MessageDriver();
   ::take_time (~0, " +++++ Start STORAGE procedures ++++++", aMessageDriver);
 
   // Create new DOM_Document
@@ -148,7 +148,7 @@ Standard_EXPORT void XmlLDrivers_DocumentStorageDriver::Write (const Handle(CDM_
 
       TCollection_ExtendedString aMsg = TCollection_ExtendedString("Error: the stream is bad and") +
                                         " cannot be used for writing";
-      theDocument->Application()->MessageDriver()->Write (aMsg.ToExtString());
+      theDocument->Application()->MessageDriver()->Send (aMsg.ToExtString(), Message_Fail);
       
       throw Standard_Failure("File cannot be opened for writing");
     }
@@ -168,7 +168,7 @@ Standard_Boolean XmlLDrivers_DocumentStorageDriver::WriteToDomDocument (const Ha
                                                                         XmlObjMgt_Element&           theElement)
 {
   SetIsError(Standard_False);
-  Handle(CDM_MessageDriver) aMessageDriver =
+  Handle(Message_Messenger) aMessageDriver =
     theDocument -> Application() -> MessageDriver();
   // 1. Write header information
   Standard_Integer i;
@@ -210,12 +210,12 @@ Standard_Boolean XmlLDrivers_DocumentStorageDriver::WriteToDomDocument (const Ha
       aResourceDir += "/src/XmlOcafResource" ;
       aToSetCSFVariable = Standard_True; //CSF variable to be set later
     }
-#ifdef OCCT_DEBUG
+#ifdef OCCT_DEBUGXML
     else {
       TCollection_ExtendedString aWarn = FAILSTR "Neither ";
       aWarn = (aWarn + aCSFVariable[0] + ", nor " + aCSFVariable[1]
                + " variables have been set");
-      aMessageDriver->Write (aWarn.ToExtString());
+      aMessageDriver->Send (aWarn.ToExtString(), Message_Warning);
     }
 #endif
   }
@@ -228,24 +228,24 @@ Standard_Boolean XmlLDrivers_DocumentStorageDriver::WriteToDomDocument (const Ha
       if (aToSetCSFVariable) {
         OSD_Environment aCSFVarEnv ( aCSFVariable[0], aResourceDir );
         aCSFVarEnv.Build();
-#ifdef OCCT_DEBUG
+#ifdef OCCT_DEBUGXML
         TCollection_ExtendedString aWarn1 = "Variable ";
         aWarn1 = (aWarn1 + aCSFVariable[0]
                   + " has not been explicitly defined. Set to " + aResourceDir);
-        aMessageDriver->Write (aWarn1.ToExtString());
+        aMessageDriver->Send (aWarn1.ToExtString(), Message_Warning);
 #endif
         if ( aCSFVarEnv.Failed() ) {
           TCollection_ExtendedString aWarn = FAILSTR "Failed to initialize ";
           aWarn = aWarn + aCSFVariable[0] + " with " + aResourceDir;
-          aMessageDriver->Write (aWarn.ToExtString());
+          aMessageDriver->Send (aWarn.ToExtString(), Message_Fail);
         }
       }
     }
-#ifdef OCCT_DEBUG
+#ifdef OCCT_DEBUGXML
     else {
       TCollection_ExtendedString aWarn = FAILSTR "Schema definition file ";
       aWarn += (aResourceFileName + " was not found");
-      aMessageDriver->Write (aWarn.ToExtString());
+      aMessageDriver->Send (aWarn.ToExtString(), Message_Warning);
     }
 #endif
     anHTTP = anHTTP + ' ' + aResourceFileName;
@@ -317,14 +317,14 @@ Standard_Boolean XmlLDrivers_DocumentStorageDriver::WriteToDomDocument (const Ha
       SetIsError (Standard_True);
       SetStoreStatus(PCDM_SS_Failure);
       TCollection_ExtendedString anErrorString (anException.GetMessageString());
-      aMessageDriver -> Write (anErrorString.ToExtString());
+      aMessageDriver ->Send (anErrorString.ToExtString(), Message_Fail);
     }
   }
   if (anObjNb <= 0 && IsError() == Standard_False) {
     SetIsError (Standard_True);
     SetStoreStatus(PCDM_SS_No_Obj);
     TCollection_ExtendedString anErrorString ("error occurred");
-    aMessageDriver -> Write (anErrorString.ToExtString());
+    aMessageDriver ->Send (anErrorString.ToExtString(), Message_Fail);
   }
   // 2b. Write number of objects into the info section
   anInfoElem.setAttribute("objnb", anObjNb);
@@ -359,18 +359,20 @@ Standard_Integer XmlLDrivers_DocumentStorageDriver::MakeDocument
 
 //      Find MessageDriver and pass it to AttributeDrivers()
     Handle(CDM_Application) anApplication= theTDoc -> Application();
-    Handle(CDM_MessageDriver) aMessageDriver;
-    if (anApplication.IsNull())
-      aMessageDriver = new CDM_NullMessageDriver;
+    Handle(Message_Messenger) aMessageDriver;
+    if (anApplication.IsNull()) {
+      aMessageDriver = Message::DefaultMessenger();
+      aMessageDriver->ChangePrinters().Clear();
+    }
     else
       aMessageDriver = anApplication -> MessageDriver();
     if (myDrivers.IsNull()) myDrivers = AttributeDrivers (aMessageDriver);
 
 //      Retrieve from DOM_Document
     XmlMDF::FromTo (aTDF, theElement, myRelocTable, myDrivers); 
-#ifdef OCCT_DEBUG
+#ifdef OCCT_DEBUGXML
     aMessage = "First step successfull";
-    aMessageDriver -> Write (aMessage.ToExtString());
+    aMessageDriver -> Send (aMessage.ToExtString(), Message_Warning);
 #endif
     return myRelocTable.Extent();
   }
@@ -385,7 +387,7 @@ Standard_Integer XmlLDrivers_DocumentStorageDriver::MakeDocument
 //purpose  : 
 //=======================================================================
 Handle(XmlMDF_ADriverTable) XmlLDrivers_DocumentStorageDriver::AttributeDrivers
-       (const Handle(CDM_MessageDriver)& theMessageDriver) 
+       (const Handle(Message_Messenger)& theMessageDriver) 
 {
   return XmlLDrivers::AttributeDrivers (theMessageDriver);
 }
@@ -406,7 +408,7 @@ extern "C" int ftime (struct timeb *tp);
 struct timeb  tmbuf0;
 
 static void take_time (const Standard_Integer isReset, const char * aHeader,
-                       const Handle(CDM_MessageDriver)& aMessageDriver)
+                       const Handle(Message_Messenger)& aMessageDriver)
 {
   struct timeb  tmbuf;
   ftime (&tmbuf);
@@ -419,7 +421,7 @@ static void take_time (const Standard_Integer isReset, const char * aHeader,
              double(tmbuf.millitm - tmbuf0.millitm)/1000.);
     aMessage += take_tm_buf;
   }
-  aMessageDriver -> Write (aMessage.ToExtString());
+  aMessageDriver ->Send (aMessage.ToExtString(), Message_Trace);
 }
 #endif
 
diff --git a/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx b/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx
index 4b35293676..b5dd604a29 100644
--- a/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx
+++ b/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx
@@ -30,7 +30,7 @@ class XmlMDF_ADriverTable;
 class TCollection_ExtendedString;
 class CDM_Document;
 class TCollection_AsciiString;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class XmlLDrivers_DocumentStorageDriver;
@@ -49,7 +49,7 @@ public:
 
   Standard_EXPORT virtual void Write (const Handle(CDM_Document)& theDocument, Standard_OStream& theOStream) Standard_OVERRIDE;
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver);
 
 
 
diff --git a/src/XmlMDF/XmlMDF.cxx b/src/XmlMDF/XmlMDF.cxx
index d688b6de10..dd6588e0a7 100644
--- a/src/XmlMDF/XmlMDF.cxx
+++ b/src/XmlMDF/XmlMDF.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Storage_Schema.hxx>
 #include <TColStd_MapOfTransient.hxx>
 #include <TDF_Attribute.hxx>
@@ -208,7 +208,7 @@ Standard_Integer XmlMDF::ReadSubTree (const XmlObjMgt_Element&    theElement,
           TCollection_ExtendedString anErrorMessage =
             TCollection_ExtendedString ("Wrong Tag value for OCAF Label: ")
               + aTag;
-          theDriverMap.Find("TDF_TagSource") -> WriteMessage (anErrorMessage);
+          theDriverMap.Find("TDF_TagSource") -> myMessageDriver->Send (anErrorMessage, Message_Fail);
           return -1;
         }
         // create label
@@ -248,7 +248,7 @@ Standard_Integer XmlMDF::ReadSubTree (const XmlObjMgt_Element&    theElement,
             TCollection_ExtendedString anErrorMessage =
              TCollection_ExtendedString("Wrong ID of OCAF attribute with type ")
                + aName;
-            driver -> WriteMessage (anErrorMessage);
+            driver -> myMessageDriver->Send (anErrorMessage, Message_Fail);
             return -1;
           }
           Handle(TDF_Attribute) tAtt;
@@ -260,17 +260,17 @@ Standard_Integer XmlMDF::ReadSubTree (const XmlObjMgt_Element&    theElement,
 	  if (tAtt->Label().IsNull())
 	    theLabel.AddAttribute (tAtt);
 	  else
-	    driver->WriteMessage
+	    driver->myMessageDriver->Send
 	      (TCollection_ExtendedString("XmlDriver warning: ") +
 	       "attempt to attach attribute " +
-	       aName + " to a second label");
+	       aName + " to a second label", Message_Warning);
 
           if (! driver -> Paste (pAtt, tAtt, theRelocTable))
           {
             // error converting persistent to transient
-            driver->WriteMessage
+            driver->myMessageDriver->Send
               (TCollection_ExtendedString("XmlDriver warning: ") +
-               "failure reading attribute " + aName);
+               "failure reading attribute " + aName, Message_Warning);
           }
           else if (isBound == Standard_False)
             theRelocTable.Bind (anID, tAtt);
@@ -303,7 +303,7 @@ Standard_Integer XmlMDF::ReadSubTree (const XmlObjMgt_Element&    theElement,
 //purpose  : 
 //=======================================================================
 void XmlMDF::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                         const Handle(CDM_MessageDriver)&   aMessageDriver)
+                         const Handle(Message_Messenger)&   aMessageDriver)
 {
   aDriverTable->AddDriver (new XmlMDF_TagSourceDriver(aMessageDriver)); 
   aDriverTable->AddDriver (new XmlMDF_ReferenceDriver(aMessageDriver));
@@ -325,9 +325,9 @@ void XmlMDF::CreateDrvMap (const Handle(XmlMDF_ADriverTable)& theDrivers,
     if (theAsciiDriverMap.IsBound (aTypeName) == Standard_False)
       theAsciiDriverMap.Bind (aTypeName, aDriver);
     else
-      aDriver -> WriteMessage
+      aDriver -> myMessageDriver->Send
         (TCollection_ExtendedString ("Warning: skipped driver name: \"")
-         + aTypeName + '\"');
+         + aTypeName + '\"', Message_Warning);
     anIter.Next();
   }
 }
diff --git a/src/XmlMDF/XmlMDF.hxx b/src/XmlMDF/XmlMDF.hxx
index c894c381da..2b0eb77852 100644
--- a/src/XmlMDF/XmlMDF.hxx
+++ b/src/XmlMDF/XmlMDF.hxx
@@ -29,7 +29,7 @@
 class TDF_Data;
 class XmlMDF_ADriverTable;
 class TDF_Label;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDF_ADriver;
 class XmlMDF_TagSourceDriver;
 class XmlMDF_ReferenceDriver;
@@ -69,7 +69,7 @@ public:
   Standard_EXPORT static Standard_Boolean FromTo (const XmlObjMgt_Element& aSource, Handle(TDF_Data)& aTarget, XmlObjMgt_RRelocationTable& aReloc, const Handle(XmlMDF_ADriverTable)& aDrivers);
   
   //! Adds the attribute storage drivers to <aDriverSeq>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& theMessageDriver);
 
 
 
diff --git a/src/XmlMDF/XmlMDF_ADriver.cxx b/src/XmlMDF/XmlMDF_ADriver.cxx
index 60fc19a14a..85473abeff 100644
--- a/src/XmlMDF/XmlMDF_ADriver.cxx
+++ b/src/XmlMDF/XmlMDF_ADriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDF_ADriver,Standard_Transient)
 //function : XmlMDF_ADriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDF_ADriver::XmlMDF_ADriver (const Handle(CDM_MessageDriver)& theMsgDriver,
+XmlMDF_ADriver::XmlMDF_ADriver (const Handle(Message_Messenger)& theMsgDriver,
                                 const Standard_CString           theNS,
                                 const Standard_CString           theName)
      : myMessageDriver (theMsgDriver)
@@ -73,15 +73,4 @@ const TCollection_AsciiString& XmlMDF_ADriver::TypeName () const
   if (myTypeName.Length() == 0 || aString [myTypeName.Length() - 1] == ':')
     (TCollection_AsciiString&)myTypeName += SourceType() -> Name();
   return myTypeName;
-}
-
-//=======================================================================
-//function : WriteMessage
-//purpose  : 
-//=======================================================================
-
-void XmlMDF_ADriver::WriteMessage
-                              (const TCollection_ExtendedString& aMessage) const
-{
-  myMessageDriver -> Write (aMessage.ToExtString());
-}
+}
\ No newline at end of file
diff --git a/src/XmlMDF/XmlMDF_ADriver.hxx b/src/XmlMDF/XmlMDF_ADriver.hxx
index 9b5d4651fd..c675f9598e 100644
--- a/src/XmlMDF/XmlMDF_ADriver.hxx
+++ b/src/XmlMDF/XmlMDF_ADriver.hxx
@@ -27,7 +27,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class TCollection_AsciiString;
 class XmlObjMgt_Persistent;
@@ -67,28 +67,20 @@ public:
   //! into <aTarget>, using the relocation table
   //! <aRelocTable> to keep the sharings.
   Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& aSource, XmlObjMgt_Persistent& aTarget, XmlObjMgt_SRelocationTable& aRelocTable) const = 0;
-  
-  //! Send message to Application (usually when error occurres)
-  Standard_EXPORT void WriteMessage (const TCollection_ExtendedString& theMessage) const;
-
-
-
 
   DEFINE_STANDARD_RTTIEXT(XmlMDF_ADriver,Standard_Transient)
 
 protected:
 
-  
-  Standard_EXPORT XmlMDF_ADriver(const Handle(CDM_MessageDriver)& theMessageDriver, const Standard_CString theNamespace, const Standard_CString theName = NULL);
+  Standard_EXPORT XmlMDF_ADriver(const Handle(Message_Messenger)& theMessageDriver, const Standard_CString theNamespace, const Standard_CString theName = NULL);
 
   TCollection_AsciiString myTypeName;
 
+  Handle(Message_Messenger) myMessageDriver;
 
 private:
 
-
-  Handle(CDM_MessageDriver) myMessageDriver;
-
+friend class XmlMDF;
 
 };
 
diff --git a/src/XmlMDF/XmlMDF_ReferenceDriver.cxx b/src/XmlMDF/XmlMDF_ReferenceDriver.cxx
index 213c41d48a..e1042061ce 100644
--- a/src/XmlMDF/XmlMDF_ReferenceDriver.cxx
+++ b/src/XmlMDF/XmlMDF_ReferenceDriver.cxx
@@ -15,7 +15,7 @@
 
 //AGV 150202: Changed prototype XmlObjMgt::SetStringValue()
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_Reference.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDF_ReferenceDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDF_ReferenceDriver::XmlMDF_ReferenceDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -57,7 +57,7 @@ Standard_Boolean XmlMDF_ReferenceDriver::Paste
 
   if (anXPath == NULL)
   {
-    WriteMessage ("Cannot retrieve reference string from element");
+    myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
     return Standard_False;
   }
 
@@ -67,7 +67,7 @@ Standard_Boolean XmlMDF_ReferenceDriver::Paste
     TCollection_ExtendedString aMessage =
       TCollection_ExtendedString ("Cannot retrieve reference from \"")
         + anXPath + '\"';
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDF/XmlMDF_ReferenceDriver.hxx b/src/XmlMDF/XmlMDF_ReferenceDriver.hxx
index 0dc8363107..a0ac78f64d 100644
--- a/src/XmlMDF/XmlMDF_ReferenceDriver.hxx
+++ b/src/XmlMDF/XmlMDF_ReferenceDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDF_ReferenceDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDF_ReferenceDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDF_ReferenceDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDF/XmlMDF_TagSourceDriver.cxx b/src/XmlMDF/XmlMDF_TagSourceDriver.cxx
index e3254085f9..b6fda8cb39 100644
--- a/src/XmlMDF/XmlMDF_TagSourceDriver.cxx
+++ b/src/XmlMDF/XmlMDF_TagSourceDriver.cxx
@@ -15,7 +15,7 @@
 
 //AGV 150202: Changed prototype XmlObjMgt::SetStringValue()
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_TagSource.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDF_TagSourceDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDF_TagSourceDriver::XmlMDF_TagSourceDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -59,7 +59,7 @@ Standard_Boolean XmlMDF_TagSourceDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString ("Cannot retrieve TagSource attribute from \"")
         + aTagStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -67,7 +67,7 @@ Standard_Boolean XmlMDF_TagSourceDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString ("Invalid value of TagSource retrieved: ")
         + aTag;
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDF/XmlMDF_TagSourceDriver.hxx b/src/XmlMDF/XmlMDF_TagSourceDriver.hxx
index e197ab5108..fb863ac25c 100644
--- a/src/XmlMDF/XmlMDF_TagSourceDriver.hxx
+++ b/src/XmlMDF/XmlMDF_TagSourceDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDF_TagSourceDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDF_TagSourceDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDF_TagSourceDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd.cxx b/src/XmlMDataStd/XmlMDataStd.cxx
index 8a10e98f0b..da793d45a9 100644
--- a/src/XmlMDataStd/XmlMDataStd.cxx
+++ b/src/XmlMDataStd/XmlMDataStd.cxx
@@ -15,7 +15,7 @@
 
 // modified     20.04.2009 Sergey Zaritchny
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlMDataStd.hxx>
 #include <XmlMDataStd_AsciiStringDriver.hxx>
 #include <XmlMDataStd_BooleanArrayDriver.hxx>
@@ -51,7 +51,7 @@ static Standard_Integer myDocumentVersion = -1;
 //purpose  : 
 //=======================================================================
 void XmlMDataStd::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                              const Handle(CDM_MessageDriver)&   anMsgDrv)
+                              const Handle(Message_Messenger)&   anMsgDrv)
 {
   aDriverTable-> AddDriver (new XmlMDataStd_DirectoryDriver     (anMsgDrv));
   aDriverTable-> AddDriver (new XmlMDataStd_IntegerArrayDriver  (anMsgDrv));
diff --git a/src/XmlMDataStd/XmlMDataStd.hxx b/src/XmlMDataStd/XmlMDataStd.hxx
index a1ac39e472..a526ab9d42 100644
--- a/src/XmlMDataStd/XmlMDataStd.hxx
+++ b/src/XmlMDataStd/XmlMDataStd.hxx
@@ -20,7 +20,7 @@
 
 #include <Standard_Integer.hxx>
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDataStd_NameDriver;
 class XmlMDataStd_IntegerDriver;
 class XmlMDataStd_RealDriver;
@@ -59,7 +59,7 @@ public:
 
   
   //! Adds the attribute drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& anMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& anMsgDrv);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.cxx b/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.cxx
index 70f77f50ce..ec80a896b8 100644
--- a/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_AsciiString.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "asciiguid")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_AsciiStringDriver::XmlMDataStd_AsciiStringDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -68,7 +68,7 @@ Standard_Boolean XmlMDataStd_AsciiStringDriver::Paste
   Handle(TDataStd_AsciiString)::DownCast(theTarget)->SetID(aGUID);
   return Standard_True;
   }
-  WriteMessage("error retrieving AsciiString for type TDataStd_AsciiString");
+  myMessageDriver->Send("error retrieving AsciiString for type TDataStd_AsciiString", Message_Fail);
   return Standard_False;
 }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.hxx b/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.hxx
index 8ffb532da3..6eaf00314f 100644
--- a/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_AsciiStringDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_AsciiStringDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_AsciiStringDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_AsciiStringDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.cxx
index 876d403341..c2cd22d8a9 100644
--- a/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_HArray1OfByte.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "boolarrattguid")
 //function : XmlMDataStd_BooleanArrayDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_BooleanArrayDriver::XmlMDataStd_BooleanArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_BooleanArrayDriver::XmlMDataStd_BooleanArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -68,7 +68,7 @@ Standard_Boolean XmlMDataStd_BooleanArrayDriver::Paste(const XmlObjMgt_Persisten
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for BooleanArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -79,7 +79,7 @@ Standard_Boolean XmlMDataStd_BooleanArrayDriver::Paste(const XmlObjMgt_Persisten
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for BooleanArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -88,7 +88,7 @@ Standard_Boolean XmlMDataStd_BooleanArrayDriver::Paste(const XmlObjMgt_Persisten
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("The last index is greater than the first index"
                                  " for BooleanArray attribute \"");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -108,7 +108,7 @@ Standard_Boolean XmlMDataStd_BooleanArrayDriver::Paste(const XmlObjMgt_Persisten
         TCollection_ExtendedString("Cannot retrieve integer member"
         " for BooleanArray attribute as \"")
         + aValueStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     arr.SetValue(i, (Standard_Byte) aValue);
diff --git a/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.hxx
index df8841b64f..8095e52e68 100644
--- a/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_BooleanArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_BooleanArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_BooleanArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_BooleanArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.cxx b/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.cxx
index e78a52d517..c4c22dacc0 100644
--- a/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_BooleanList.hxx>
@@ -33,7 +33,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "boollistattguid")
 //function : XmlMDataStd_BooleanListDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_BooleanListDriver::XmlMDataStd_BooleanListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_BooleanListDriver::XmlMDataStd_BooleanListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -69,7 +69,7 @@ Standard_Boolean XmlMDataStd_BooleanListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for BooleanList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -80,7 +80,7 @@ Standard_Boolean XmlMDataStd_BooleanListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for BooleanList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -94,7 +94,7 @@ Standard_Boolean XmlMDataStd_BooleanListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString aMessageString =
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for BooleanList attribute as \"");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aBooleanList->Append(anInteger ? Standard_True : Standard_False);
@@ -110,7 +110,7 @@ Standard_Boolean XmlMDataStd_BooleanListDriver::Paste(const XmlObjMgt_Persistent
           TCollection_ExtendedString("Cannot retrieve integer member"
                                      " for BooleanList attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       aBooleanList->Append(aValue ? Standard_True : Standard_False);
diff --git a/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.hxx b/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.hxx
index 077aeccd37..08b5cf1074 100644
--- a/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_BooleanListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_BooleanListDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_BooleanListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_BooleanListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.cxx
index 988ad28ce4..71eb2447dc 100644
--- a/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_HArray1OfByte.hxx>
@@ -34,7 +34,7 @@ IMPLEMENT_DOMSTRING (IsDeltaOn,        "delta")
 //function : XmlMDataStd_ByteArrayDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_ByteArrayDriver::XmlMDataStd_ByteArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_ByteArrayDriver::XmlMDataStd_ByteArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -70,7 +70,7 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for ByteArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -81,7 +81,7 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for ByteArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -90,7 +90,7 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("The last index is greater than the first index"
                                  " for ByteArray attribute \"");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -109,7 +109,7 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for ByteArray attribute as \"")
                                    + aValueStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     arr.SetValue(i, (Standard_Byte) aValue);
@@ -126,7 +126,7 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
         TCollection_ExtendedString("Cannot retrieve the isDelta value"
                                    " for ByteArray attribute as \"")
                                    + aDeltaValue + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     } 
     else
diff --git a/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.hxx
index 305bdd985b..d9bd04448f 100644
--- a/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ByteArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ByteArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ByteArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ByteArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_CommentDriver.cxx b/src/XmlMDataStd/XmlMDataStd_CommentDriver.cxx
index febe1460ad..a38e294635 100644
--- a/src/XmlMDataStd/XmlMDataStd_CommentDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_CommentDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Comment.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataStd_CommentDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_CommentDriver::XmlMDataStd_CommentDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -57,7 +57,7 @@ Standard_Boolean XmlMDataStd_CommentDriver::Paste
     Handle(TDataStd_Comment)::DownCast(theTarget) -> Set (aString);
     return Standard_True;
   }
-  WriteMessage("error retrieving ExtendedString for type TDataStd_Comment");
+  myMessageDriver->Send("error retrieving ExtendedString for type TDataStd_Comment", Message_Fail);
   return Standard_False;
 }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_CommentDriver.hxx b/src/XmlMDataStd/XmlMDataStd_CommentDriver.hxx
index ba0054e58e..455d8be749 100644
--- a/src/XmlMDataStd/XmlMDataStd_CommentDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_CommentDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_CommentDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_CommentDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_CommentDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.cxx b/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.cxx
index a325818386..511228609f 100644
--- a/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Directory.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataStd_DirectoryDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_DirectoryDriver::XmlMDataStd_DirectoryDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.hxx b/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.hxx
index 36eaee3719..fcdb5fd455 100644
--- a/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_DirectoryDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_DirectoryDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_DirectoryDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_DirectoryDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.cxx
index ff8b7d0034..fc55ecaf49 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Expression.hxx>
 #include <TDataStd_Variable.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (VariablesString, "variables")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_ExpressionDriver::XmlMDataStd_ExpressionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -65,7 +65,7 @@ Standard_Boolean XmlMDataStd_ExpressionDriver::Paste
   TCollection_ExtendedString aString;
   if (!XmlObjMgt::GetExtendedString (theSource, aString))
   {
-    WriteMessage("error retrieving ExtendedString for type TDataStd_Expression");
+    myMessageDriver->Send("error retrieving ExtendedString for type TDataStd_Expression", Message_Fail);
     return Standard_False;
   }
   aC->SetExpression(aString);
@@ -82,7 +82,7 @@ Standard_Boolean XmlMDataStd_ExpressionDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataStd_ExpressionDriver: Cannot retrieve reference on first variable from \"")
           + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     Standard_Integer i = 1;
diff --git a/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.hxx
index 8857d868e2..eafa4dc99f 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExpressionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ExpressionDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ExpressionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ExpressionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.cxx
index 2e0c9662b8..1347a17294 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ExtStringArray.hxx>
@@ -55,7 +55,7 @@ static Standard_Boolean Contains(const Handle(TDataStd_ExtStringArray)& arr,
 //=======================================================================
 
 XmlMDataStd_ExtStringArrayDriver::XmlMDataStd_ExtStringArrayDriver
-                        ( const Handle(CDM_MessageDriver)& theMsgDriver )
+                        ( const Handle(Message_Messenger)& theMsgDriver )
 : XmlMDF_ADriver( theMsgDriver, NULL )
 {}
 
@@ -90,7 +90,7 @@ Standard_Boolean XmlMDataStd_ExtStringArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for ExtStringArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -100,7 +100,7 @@ Standard_Boolean XmlMDataStd_ExtStringArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for ExtStringArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -192,7 +192,7 @@ Standard_Boolean XmlMDataStd_ExtStringArrayDriver::Paste
           TCollection_ExtendedString("Cannot retrieve the isDelta value"
                                      " for IntegerArray attribute as \"")
                                      + aDeltaValue + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       } 
     else
diff --git a/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.hxx
index d6a8b4a49b..c3491e5d34 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExtStringArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ExtStringArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ExtStringArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ExtStringArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.cxx
index 6eeb9b1ae3..0489eb8322 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ExtStringList.hxx>
@@ -35,7 +35,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "extstrlistattguid")
 //function : XmlMDataStd_ExtStringListDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_ExtStringListDriver::XmlMDataStd_ExtStringListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_ExtStringListDriver::XmlMDataStd_ExtStringListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -71,7 +71,7 @@ Standard_Boolean XmlMDataStd_ExtStringListDriver::Paste(const XmlObjMgt_Persiste
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for ExtStringList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -82,7 +82,7 @@ Standard_Boolean XmlMDataStd_ExtStringListDriver::Paste(const XmlObjMgt_Persiste
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for ExtStringList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -92,7 +92,7 @@ Standard_Boolean XmlMDataStd_ExtStringListDriver::Paste(const XmlObjMgt_Persiste
     {
       TCollection_ExtendedString aMessageString = 
         TCollection_ExtendedString("Cannot retrieve a list of extended strings");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.hxx
index 390800f42d..53d86b7609 100644
--- a/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ExtStringListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ExtStringListDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ExtStringListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ExtStringListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.cxx b/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.cxx
index 4a4cb41b1b..eb814a4349 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_HPackedMapOfInteger.hxx>
@@ -39,7 +39,7 @@ IMPLEMENT_DOMSTRING (IsDeltaOn,        "delta")
 //=======================================================================
 
 XmlMDataStd_IntPackedMapDriver::XmlMDataStd_IntPackedMapDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, STANDARD_TYPE(TDataStd_IntPackedMap)->Name())
 {}
 
@@ -74,61 +74,61 @@ Standard_Boolean XmlMDataStd_IntPackedMapDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the Map size"
                                  " for IntPackedMap attribute as \"")
         + aSize + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;            
     }
     Handle(TColStd_HPackedMapOfInteger) aHMap = new TColStd_HPackedMapOfInteger ();
     Standard_Boolean Ok = Standard_True;
     if(aSize) {    
       Standard_CString aValueString =
-	Standard_CString(XmlObjMgt::GetStringValue(anElement).GetString());
+        Standard_CString(XmlObjMgt::GetStringValue(anElement).GetString());
 //      Handle(TColStd_HPackedMapOfInteger) aHMap = new TColStd_HPackedMapOfInteger ();
       for (Standard_Integer i = 1; i <= aSize; i++) {
-	Standard_Integer aValue;
-	if (!XmlObjMgt::GetInteger(aValueString, aValue)) {
-	  Ok = Standard_False; break;
-	}
-	if(!aHMap->ChangeMap().Add( aValue )) {
-	  Ok = Standard_False; break;
-	}
+        Standard_Integer aValue;
+        if (!XmlObjMgt::GetInteger(aValueString, aValue)) {
+          Ok = Standard_False; break;
+        }
+        if(!aHMap->ChangeMap().Add( aValue )) {
+          Ok = Standard_False; break;
+        }
       }
       if(!Ok) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve integer member"
-				     " for IntPackedMap attribute as \"")
-	    + aValueString + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve integer member"
+          " for IntPackedMap attribute as \"")
+          + aValueString + "\"";
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       if(aPackedMap->ChangeMap(aHMap))
-	Ok = Standard_True;
+        Ok = Standard_True;
     }
     if(Ok) {
       Standard_Boolean aDelta(Standard_False);
-  
+
       if(XmlMDataStd::DocumentVersion() > 2) {
-	Standard_Integer aDeltaValue;
-	if (!anElement.getAttribute(::IsDeltaOn()).GetInteger(aDeltaValue)) 
-	  {
-	    TCollection_ExtendedString aMessageString =
-	      TCollection_ExtendedString("Cannot retrieve the isDelta value"
-					 " for IntPackedMap attribute as \"")
-		+ aDeltaValue + "\"";
-	    WriteMessage (aMessageString);
-	    return Standard_False;
-	  } 
-	else
-	  aDelta = aDeltaValue != 0;
+        Standard_Integer aDeltaValue;
+        if (!anElement.getAttribute(::IsDeltaOn()).GetInteger(aDeltaValue)) 
+        {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve the isDelta value"
+            " for IntPackedMap attribute as \"")
+            + aDeltaValue + "\"";
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        } 
+        else
+          aDelta = aDeltaValue != 0;
       }
 #ifdef OCCT_DEBUG
       else if(XmlMDataStd::DocumentVersion() == -1)
-	cout << "Current DocVersion field is not initialized. "  <<endl;
+        cout << "Current DocVersion field is not initialized. "  <<endl;
 #endif
       aPackedMap->SetDelta(aDelta);
       return Standard_True;
     }  
   }
-  WriteMessage("error retrieving Map for type TDataStd_IntPackedMap");
+  myMessageDriver->Send("error retrieving Map for type TDataStd_IntPackedMap", Message_Fail);
   return Standard_False;
 }
 
@@ -142,7 +142,7 @@ void XmlMDataStd_IntPackedMapDriver::Paste (const Handle(TDF_Attribute)& theSour
 {
   Handle(TDataStd_IntPackedMap) aS = Handle(TDataStd_IntPackedMap)::DownCast(theSource);
   if (aS.IsNull()) {
-    WriteMessage ("IntPackedMapDriver:: The source attribute is Null.");
+    myMessageDriver->Send ("IntPackedMapDriver:: The source attribute is Null.", Message_Warning);
     return;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.hxx b/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.hxx
index 58430173da..9124c7265f 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntPackedMapDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_IntPackedMapDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_IntPackedMapDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_IntPackedMapDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.cxx
index 4920b69131..cad547b177 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.cxx
@@ -15,7 +15,7 @@
 
 //AGV 150202: Changed prototype XmlObjMgt::SetStringValue()
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_IntegerArray.hxx>
@@ -37,7 +37,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "intarrattguid")
 //=======================================================================
 
 XmlMDataStd_IntegerArrayDriver::XmlMDataStd_IntegerArrayDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -71,7 +71,7 @@ Standard_Boolean XmlMDataStd_IntegerArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for IntegerArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -81,7 +81,7 @@ Standard_Boolean XmlMDataStd_IntegerArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for IntegerArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -95,7 +95,7 @@ Standard_Boolean XmlMDataStd_IntegerArrayDriver::Paste
       TCollection_ExtendedString aMessageString =
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for IntegerArray attribute as \"");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     anIntArray->SetValue(aFirstInd, anInteger);
@@ -113,7 +113,7 @@ Standard_Boolean XmlMDataStd_IntegerArrayDriver::Paste
           TCollection_ExtendedString("Cannot retrieve integer member"
                                      " for IntegerArray attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       anIntArray->SetValue(ind, aValue);
@@ -129,7 +129,7 @@ Standard_Boolean XmlMDataStd_IntegerArrayDriver::Paste
           TCollection_ExtendedString("Cannot retrieve the isDelta value"
                                      " for IntegerArray attribute as \"")
                                      + aDeltaValue + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       } 
     else
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.hxx
index 2976875069..8617bb20aa 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_IntegerArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_IntegerArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_IntegerArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerDriver.cxx b/src/XmlMDataStd/XmlMDataStd_IntegerDriver.cxx
index 505c052ecc..55a85b6ec0 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Integer.hxx>
 #include <TDF_Attribute.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "intattguid")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_IntegerDriver::XmlMDataStd_IntegerDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -58,7 +58,7 @@ Standard_Boolean XmlMDataStd_IntegerDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Integer attribute from \"")
         + anIntStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerDriver.hxx b/src/XmlMDataStd/XmlMDataStd_IntegerDriver.hxx
index cb72329f9a..89589ba346 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_IntegerDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_IntegerDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_IntegerDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.cxx b/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.cxx
index e71f856d5b..fc1317300e 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
@@ -33,7 +33,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "intlistattguid")
 //function : XmlMDataStd_IntegerListDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_IntegerListDriver::XmlMDataStd_IntegerListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_IntegerListDriver::XmlMDataStd_IntegerListDriver(const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -69,7 +69,7 @@ Standard_Boolean XmlMDataStd_IntegerListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for IntegerList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -80,7 +80,7 @@ Standard_Boolean XmlMDataStd_IntegerListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for IntegerList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -94,7 +94,7 @@ Standard_Boolean XmlMDataStd_IntegerListDriver::Paste(const XmlObjMgt_Persistent
       TCollection_ExtendedString aMessageString =
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for IntegerList attribute as \"");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     anIntList->Append(anInteger);
@@ -110,7 +110,7 @@ Standard_Boolean XmlMDataStd_IntegerListDriver::Paste(const XmlObjMgt_Persistent
           TCollection_ExtendedString("Cannot retrieve integer member"
                                      " for IntegerList attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       anIntList->Append(aValue);
diff --git a/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.hxx b/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.hxx
index d726c0cd56..aad5d9e92c 100644
--- a/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_IntegerListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_IntegerListDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_IntegerListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_IntegerListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_NameDriver.cxx b/src/XmlMDataStd/XmlMDataStd_NameDriver.cxx
index 5745223dce..a558391ec6 100644
--- a/src/XmlMDataStd/XmlMDataStd_NameDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_NameDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Name.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "nameguid")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_NameDriver::XmlMDataStd_NameDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -71,7 +71,7 @@ Standard_Boolean XmlMDataStd_NameDriver::Paste
 	  return Standard_True;
     }
   }
-  WriteMessage("error retrieving ExtendedString for type TDataStd_Name");
+  myMessageDriver->Send("error retrieving ExtendedString for type TDataStd_Name", Message_Fail);
   return Standard_False;
 }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_NameDriver.hxx b/src/XmlMDataStd/XmlMDataStd_NameDriver.hxx
index bfec7d472c..80c67c11d0 100644
--- a/src/XmlMDataStd/XmlMDataStd_NameDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_NameDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_NameDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_NameDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_NameDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.cxx b/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.cxx
index a310c9d3f0..8e7a9753aa 100644
--- a/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
@@ -65,7 +65,7 @@ IMPLEMENT_DOMSTRING (Value,     "value")
 //function : XmlMDataStd_NamedDataDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_NamedDataDriver::XmlMDataStd_NamedDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_NamedDataDriver::XmlMDataStd_NamedDataDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -102,7 +102,7 @@ static TCollection_ExtendedString SplitItemFromStart(TCollection_ExtendedString&
 }
 //=======================================================================
 Handle(TColStd_HArray1OfInteger) BuildIntArray(const TCollection_AsciiString& ValString, 
-					       const Standard_Integer theLen) 
+                                               const Standard_Integer theLen) 
 {
   Handle(TColStd_HArray1OfInteger) anArr;
   if(ValString.Length() == 0 || !theLen) return anArr;
@@ -117,7 +117,7 @@ Handle(TColStd_HArray1OfInteger) BuildIntArray(const TCollection_AsciiString& Va
 
 //=======================================================================
 Handle(TColStd_HArray1OfReal) BuildRealArray(const TCollection_AsciiString& ValString, 
-					     const Standard_Integer theLen) 
+                                             const Standard_Integer theLen) 
 {
   Handle(TColStd_HArray1OfReal) anArr;
   if(ValString.Length() == 0 || !theLen) return anArr;
@@ -134,8 +134,8 @@ Handle(TColStd_HArray1OfReal) BuildRealArray(const TCollection_AsciiString& ValS
 //purpose  : persistent -> transient (retrieve)
 //=======================================================================
 Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&  theSource,
-						      const Handle(TDF_Attribute)& theTarget,
-						      XmlObjMgt_RRelocationTable&  ) const
+                                                    const Handle(TDF_Attribute)& theTarget,
+                                                    XmlObjMgt_RRelocationTable&  ) const
 {
   Standard_Integer aFirstInd, aLastInd, ind;
   const XmlObjMgt_Element& anElement = theSource;
@@ -150,7 +150,7 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the first index for NamedData"
                                  " attribute (DataMapOfStringInteger) as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -164,7 +164,7 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
                                  " attribute (DataMapOfStringInteger) as \"")
         + aLastIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   try {
@@ -173,38 +173,38 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
 
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) {
       if ( !anElement.hasChildNodes() )
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringInteger");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringInteger");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
       aCurNode = anElement.getFirstChild();
       LDOM_Element* aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aValueStr, aKey;
       TColStd_DataMapOfStringInteger aMap;
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );
-	aValueStr = SplitItemFromEnd(aKey);
-	if(aValueStr.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	TCollection_AsciiString aVal(aValueStr,'?');
-	Standard_Integer aValue = aVal.IntegerValue();
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );
+        aValueStr = SplitItemFromEnd(aKey);
+        if(aValueStr.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+        TCollection_AsciiString aVal(aValueStr,'?');
+        Standard_Integer aValue = aVal.IntegerValue();
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValueStr = SplitItemFromEnd(aKey);
       if(aValueStr.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       TCollection_AsciiString aVal(aValueStr,'?');
       Standard_Integer aValue = aVal.IntegerValue();
@@ -212,74 +212,74 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
       T->ChangeIntegers(aMap);
     }
 
-//DataMapOfStringReal
+    //DataMapOfStringReal
     aFirstIndex = anElement.getAttribute(::FirstRealIndex());
     if (aFirstIndex == NULL)
       aFirstInd = 1;
     else if (!aFirstIndex.GetInteger(aFirstInd)) 
-      {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
-				     "attribute (DataMapOfStringReal) as \"")
-	    + aFirstIndex + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
-      }
+    {
+      TCollection_ExtendedString aMessageString =
+        TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
+        "attribute (DataMapOfStringReal) as \"")
+        + aFirstIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
+      return Standard_False;
+    }
 
-  // Read the LastIndex;
+    // Read the LastIndex;
     aLastIndex = anElement.getAttribute(::LastRealIndex());
     if(aLastIndex == NULL) {
       aFirstInd = 0;
       aLastInd  = 0;
     } else if (!aLastIndex.GetInteger(aLastInd)) {
       TCollection_ExtendedString aMessageString =
-	TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
-				   " attribute (DataMapOfStringReal) as \"")
-	  + aLastIndex + "\"";
-      WriteMessage (aMessageString);
+        TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
+        " attribute (DataMapOfStringReal) as \"")
+        + aLastIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
 
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) { 
       if ( !anElement.hasChildNodes())
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringReal");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-      
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringReal");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
+
       LDOM_Element* aCurElement; 
       if (aCurNode.isNull())
-	    aCurNode = anElement.getFirstChild();
+        aCurNode = anElement.getFirstChild();
       else    
         aCurNode    = ((LDOM_Element*)&aCurNode)->getNextSibling();
-          
+
       aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aValueStr, aKey;
       TDataStd_DataMapOfStringReal aMap;
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );
-	aValueStr = SplitItemFromEnd(aKey);
-	if(aValueStr.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	TCollection_AsciiString aVal(aValueStr,'?');
-	Standard_Real aValue = aVal.RealValue();
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );
+        aValueStr = SplitItemFromEnd(aKey);
+        if(aValueStr.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+        TCollection_AsciiString aVal(aValueStr,'?');
+        Standard_Real aValue = aVal.RealValue();
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValueStr = SplitItemFromEnd(aKey);
       if(aValueStr.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       TCollection_AsciiString aVal(aValueStr,'?');
       Standard_Real aValue = aVal.RealValue();
@@ -292,66 +292,66 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
     if (aFirstIndex == NULL)
       aFirstInd = 1;
     else if (!aFirstIndex.GetInteger(aFirstInd)) 
-      {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve the first index for NamedData"
-				     " attribute (DataMapOfStringString) as \"")
-	    + aFirstIndex + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
-      }
+    {
+      TCollection_ExtendedString aMessageString =
+        TCollection_ExtendedString("Cannot retrieve the first index for NamedData"
+        " attribute (DataMapOfStringString) as \"")
+        + aFirstIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
+      return Standard_False;
+    }
     aLastIndex = anElement.getAttribute(::LastStringIndex());
     if(aLastIndex == NULL) {
       aFirstInd = 0;
       aLastInd  = 0;
     } else if (!aLastIndex.GetInteger(aLastInd)) {
       TCollection_ExtendedString aMessageString =
-	TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
-				   " attribute (DataMapOfStringString) as \"")
-	  + aLastIndex + "\"";
-      WriteMessage (aMessageString);
+        TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
+        " attribute (DataMapOfStringString) as \"")
+        + aLastIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
-    
+
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) {
       if ( !anElement.hasChildNodes())
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringString");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringString");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
       LDOM_Element* aCurElement;
       if (aCurNode.isNull())
-	    aCurNode = anElement.getFirstChild();
+        aCurNode = anElement.getFirstChild();
       else 
-	    aCurNode = ((LDOM_Element*)&aCurNode)->getNextSibling();
-      
+        aCurNode = ((LDOM_Element*)&aCurNode)->getNextSibling();
+
       aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aValue, aKey;
       TDataStd_DataMapOfStringString aMap;
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );
-	aValue = SplitItemFromStart(aKey); // ==>from start
-	if(aValue.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );
+        aValue = SplitItemFromStart(aKey); // ==>from start
+        if(aValue.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValue = SplitItemFromStart(aKey);
       if(aValue.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
-      
+
       aMap.Bind(aKey, aValue);
       T->ChangeStrings(aMap);
     }
@@ -361,73 +361,73 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
     if (aFirstIndex == NULL)
       aFirstInd = 1;
     else if (!aFirstIndex.GetInteger(aFirstInd)) 
-      {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
-				     "attribute (DataMapOfStringByte) as \"")
-	    + aFirstIndex + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
-      }
+    {
+      TCollection_ExtendedString aMessageString =
+        TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
+        "attribute (DataMapOfStringByte) as \"")
+        + aFirstIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
+      return Standard_False;
+    }
 
-  // Read the LastIndex;
+    // Read the LastIndex;
     aLastIndex = anElement.getAttribute(::LastByteIndex());
     if(aLastIndex == NULL) {
       aFirstInd = 0;
       aLastInd  = 0;
     } else if (!aLastIndex.GetInteger(aLastInd)) {
       TCollection_ExtendedString aMessageString =
-	TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
-				   " attribute (DataMapOfStringByte) as \"")
-	  + aLastIndex + "\"";
-      WriteMessage (aMessageString);
+        TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
+        " attribute (DataMapOfStringByte) as \"")
+        + aLastIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
-    
+
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) { 
       if ( !anElement.hasChildNodes())
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringByte");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-      
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringByte");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
+
       LDOM_Element* aCurElement;
       if (aCurNode.isNull())
-	    aCurNode = anElement.getFirstChild();
+        aCurNode = anElement.getFirstChild();
       else 
-	    aCurNode = ((LDOM_Element*)&aCurNode)->getNextSibling();
-      
+        aCurNode = ((LDOM_Element*)&aCurNode)->getNextSibling();
+
       aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aValueStr, aKey;
       TDataStd_DataMapOfStringByte aMap;
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );
-	aValueStr = SplitItemFromEnd(aKey);
-	if(aValueStr.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	
-	TCollection_AsciiString aVal(aValueStr,'?');
-	Standard_Byte aValue = (Standard_Byte)aVal.IntegerValue();
-	
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );
+        aValueStr = SplitItemFromEnd(aKey);
+        if(aValueStr.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+
+        TCollection_AsciiString aVal(aValueStr,'?');
+        Standard_Byte aValue = (Standard_Byte)aVal.IntegerValue();
+
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValueStr = SplitItemFromEnd(aKey);
       if(aValueStr.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
-      
+
       TCollection_AsciiString aVal(aValueStr,'?');
       Standard_Byte aValue = (Standard_Byte)aVal.IntegerValue();
       aMap.Bind(aKey, aValue);
@@ -439,14 +439,14 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
     if (aFirstIndex == NULL)
       aFirstInd = 1;
     else if (!aFirstIndex.GetInteger(aFirstInd)) 
-      {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
-				     "attribute (DataMapOfStringHArray1OfInteger) as \"")
-	    + aFirstIndex + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
-      }
+    {
+      TCollection_ExtendedString aMessageString =
+        TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
+        "attribute (DataMapOfStringHArray1OfInteger) as \"")
+        + aFirstIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
+      return Standard_False;
+    }
     
   // Read the LastIndex;
     aLastIndex = anElement.getAttribute(::LastIntArrIndex());
@@ -455,74 +455,74 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
       aLastInd  = 0;
     } else if (!aLastIndex.GetInteger(aLastInd)) {
       TCollection_ExtendedString aMessageString =
-	TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
-				   " attribute (DataMapOfStringHArray1OfInteger) as \"")
-	  + aLastIndex + "\"";
-      WriteMessage (aMessageString);
+        TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
+        " attribute (DataMapOfStringHArray1OfInteger) as \"")
+        + aLastIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
-    
+
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) { 
       if ( !anElement.hasChildNodes())
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringHArray1OfInteger");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringHArray1OfInteger");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
       LDOM_Element* aCurElement;
       if (aCurNode.isNull())
-	    aCurNode = anElement.getFirstChild();
+        aCurNode = anElement.getFirstChild();
       else 
-	    aCurNode =((LDOM_Element*)&aCurNode)->getNextSibling();
-      
+        aCurNode =((LDOM_Element*)&aCurNode)->getNextSibling();
+
       aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aKey, aValueStr;
       TDataStd_DataMapOfStringHArray1OfInteger aMap;
-      
+
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );// Len - at the end
-	aValueStr = SplitItemFromEnd(aKey);
-	if(aValueStr.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	TCollection_AsciiString aVal(aValueStr,'?');
-	Standard_Integer aLen = aVal.IntegerValue();
-	
-	TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value()); 
-	Handle(TColStd_HArray1OfInteger) aValue = BuildIntArray(aValueString, aLen);
-	if(aValue.IsNull()) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );// Len - at the end
+        aValueStr = SplitItemFromEnd(aKey);
+        if(aValueStr.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+        TCollection_AsciiString aVal(aValueStr,'?');
+        Standard_Integer aLen = aVal.IntegerValue();
+
+        TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value()); 
+        Handle(TColStd_HArray1OfInteger) aValue = BuildIntArray(aValueString, aLen);
+        if(aValue.IsNull()) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
-      
+
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValueStr = SplitItemFromEnd(aKey);
       if(aValueStr.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       TCollection_AsciiString aVal(aValueStr,'?');
       Standard_Integer aLen = aVal.IntegerValue();
       TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value());
       Handle(TColStd_HArray1OfInteger) aValue = BuildIntArray(aValueString, aLen);
       if(aValue.IsNull()) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       aMap.Bind(aKey, aValue);
       T->ChangeArraysOfIntegers(aMap);
@@ -533,104 +533,104 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
     if (aFirstIndex == NULL)
       aFirstInd = 1;
     else if (!aFirstIndex.GetInteger(aFirstInd)) 
-      {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
-				     "attribute (DataMapOfStringHArray1OfReal) as \"")
-	    + aFirstIndex + "\"";
-	WriteMessage (aMessageString);
-	return Standard_False;
-      }
-    
-  // Read the LastIndex;
+    {
+      TCollection_ExtendedString aMessageString =
+        TCollection_ExtendedString("Cannot retrieve the first index for NamedData "
+        "attribute (DataMapOfStringHArray1OfReal) as \"")
+        + aFirstIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
+      return Standard_False;
+    }
+
+    // Read the LastIndex;
     aLastIndex = anElement.getAttribute(::LastRealArrIndex());
     if(aLastIndex == NULL) {
       aFirstInd = 0;
       aLastInd  = 0;
     } else if (!aLastIndex.GetInteger(aLastInd)) {
       TCollection_ExtendedString aMessageString =
-	TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
-                                 " attribute (DataMapOfStringHArray1OfReal) as \"")
-	  + aLastIndex + "\"";
-      WriteMessage (aMessageString);
+        TCollection_ExtendedString("Cannot retrieve the last index for NamedData"
+        " attribute (DataMapOfStringHArray1OfReal) as \"")
+        + aLastIndex + "\"";
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
-    
+
     if((aFirstInd | aLastInd) && aLastInd >= aFirstInd) { 
       if ( !anElement.hasChildNodes())
-	{
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve DataMapOfStringHArray1OfReal");
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-      
+      {
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve DataMapOfStringHArray1OfReal");
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
+      }
+
       LDOM_Element* aCurElement;
       if (aCurNode.isNull())
-	    aCurNode = anElement.getFirstChild();
+        aCurNode = anElement.getFirstChild();
       else 
-	    aCurNode =((LDOM_Element*)&aCurNode)->getNextSibling();
-      
+        aCurNode =((LDOM_Element*)&aCurNode)->getNextSibling();
+
       aCurElement = (LDOM_Element*)&aCurNode;
       TCollection_ExtendedString aKey, aValueStr;
       TDataStd_DataMapOfStringHArray1OfReal aMap;
-      
+
       for (ind = aFirstInd; ind < aLastInd; ind++) {
-	XmlObjMgt::GetExtendedString( *aCurElement, aKey );// Len - at the end
-	aValueStr = SplitItemFromEnd(aKey);
-	if(aValueStr.Length() == 0) {
-	  TCollection_ExtendedString aMessageString =
- 	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	TCollection_AsciiString aVal(aValueStr,'?');
-	Standard_Integer aLen = aVal.IntegerValue();      
-	
-	TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value());
-	Handle(TColStd_HArray1OfReal) aValue = BuildRealArray(aValueString, aLen);
-	if(aValue.IsNull()) {
-	  TCollection_ExtendedString aMessageString =
-	    TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	  WriteMessage (aMessageString);
-	  return Standard_False;
-	}
-	
-	aMap.Bind(aKey, aValue);
-	aCurNode = aCurElement->getNextSibling();
-	aCurElement = (LDOM_Element*)&aCurNode;
+        XmlObjMgt::GetExtendedString( *aCurElement, aKey );// Len - at the end
+        aValueStr = SplitItemFromEnd(aKey);
+        if(aValueStr.Length() == 0) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+        TCollection_AsciiString aVal(aValueStr,'?');
+        Standard_Integer aLen = aVal.IntegerValue();      
+
+        TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value());
+        Handle(TColStd_HArray1OfReal) aValue = BuildRealArray(aValueString, aLen);
+        if(aValue.IsNull()) {
+          TCollection_ExtendedString aMessageString =
+            TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+          myMessageDriver->Send (aMessageString, Message_Fail);
+          return Standard_False;
+        }
+
+        aMap.Bind(aKey, aValue);
+        aCurNode = aCurElement->getNextSibling();
+        aCurElement = (LDOM_Element*)&aCurNode;
       }
-      
+
       XmlObjMgt::GetExtendedString( *aCurElement, aKey );
       aValueStr = SplitItemFromEnd(aKey);
       if(aValueStr.Length() == 0) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
       TCollection_AsciiString aVal(aValueStr,'?');
       Standard_Integer aLen = aVal.IntegerValue();
-      
+
       TCollection_AsciiString aValueString = aCurElement->getAttribute(::Value());
       Handle(TColStd_HArray1OfReal) aValue = BuildRealArray(aValueString, aLen);
       if(aValue.IsNull()) {
-	TCollection_ExtendedString aMessageString =
-	  TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
-	WriteMessage (aMessageString);
-	return Standard_False;
+        TCollection_ExtendedString aMessageString =
+          TCollection_ExtendedString("Cannot retrieve a value from item = ") + aKey;
+        myMessageDriver->Send (aMessageString, Message_Fail);
+        return Standard_False;
       }
-      
+
       aMap.Bind(aKey, aValue);
-    T->ChangeArraysOfReals(aMap);
+      T->ChangeArraysOfReals(aMap);
     } 
   } catch (EXCEPTION) {
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Unknown exception during data retrieve in NamedDatDriver ");
-    WriteMessage (aMessageString);
-      return Standard_False;} 
-  
-  return Standard_True;
+    myMessageDriver->Send (aMessageString, Message_Fail);
+    return Standard_False;} 
+
+    return Standard_True;
 }
 
 //=======================================================================
@@ -638,12 +638,12 @@ Standard_Boolean XmlMDataStd_NamedDataDriver::Paste(const XmlObjMgt_Persistent&
 //purpose  : transient -> persistent (store)
 //=======================================================================
 void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
-					XmlObjMgt_Persistent&        theTarget,
-					XmlObjMgt_SRelocationTable&  ) const
+                                        XmlObjMgt_Persistent&        theTarget,
+                                        XmlObjMgt_SRelocationTable&  ) const
 {
   Handle(TDataStd_NamedData) S = Handle(TDataStd_NamedData)::DownCast(theSource);
   if(S.IsNull()) {
-    WriteMessage ("NamedDataDriver:: The source attribute is Null.");
+    myMessageDriver->Send ("NamedDataDriver:: The source attribute is Null.", Message_Warning);
     return;}
 
   Standard_Integer i=0, up;
@@ -657,7 +657,7 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
     TColStd_DataMapIteratorOfDataMapOfStringInteger itr(S->GetIntegersContainer());
     for (i=1; itr.More(); itr.Next(),i++) {
       const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
+        itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
       XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
       XmlObjMgt::SetExtendedString( aCurTarget, aValueStr );
       anElement.appendChild( aCurTarget );
@@ -669,11 +669,11 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
     theTarget.Element().setAttribute(::LastRealIndex(), up);
     TDataStd_DataMapIteratorOfDataMapOfStringReal itr(S->GetRealsContainer());
     for (i=1; itr.More(); itr.Next(),i++) {
-     const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
-     XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
-     XmlObjMgt::SetExtendedString( aCurTarget, aValueStr );
-     anElement.appendChild( aCurTarget );
+      const TCollection_ExtendedString aValueStr = 
+        itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
+      XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
+      XmlObjMgt::SetExtendedString( aCurTarget, aValueStr );
+      anElement.appendChild( aCurTarget );
     }
   } 
 
@@ -683,7 +683,7 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
     TDataStd_DataMapIteratorOfDataMapOfStringString itr(S->GetStringsContainer());
     for (i=1; itr.More(); itr.Next(),i++) {
       const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key(without blanks) - value;
+        itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key(without blanks) - value;
       XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
       XmlObjMgt::SetExtendedString( aCurTarget, aValueStr );
       anElement.appendChild( aCurTarget );
@@ -696,7 +696,7 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
     TDataStd_DataMapIteratorOfDataMapOfStringByte itr(S->GetBytesContainer());
     for (i=1; itr.More(); itr.Next(),i++) {
       const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
+        itr.Key() + ' ' + TCollection_ExtendedString(itr.Value());// key - value;
       XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
       XmlObjMgt::SetExtendedString( aCurTarget, aValueStr );
       anElement.appendChild( aCurTarget );
@@ -712,7 +712,7 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
       const Standard_Integer aLen = anArr1.Upper() - anArr1.Lower() +1;
 
       const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(aLen);// key - Num_of_Arr_elements;
+        itr.Key() + ' ' + TCollection_ExtendedString(aLen);// key - Num_of_Arr_elements;
       XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
       XmlObjMgt::SetExtendedString( aCurTarget,  aValueStr); //key
       anElement.appendChild( aCurTarget );
@@ -720,12 +720,12 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
       //Value = Array
       TCollection_AsciiString aValueStr2;
       Standard_Integer j = anArr1.Lower();
-       for(;;) {
-	 aValueStr2 += TCollection_AsciiString(anArr1.Value(j));
-	 if (j >= anArr1.Upper()) break;
-	 aValueStr2 += ' ';
-	 j++;
-       }
+      for(;;) {
+        aValueStr2 += TCollection_AsciiString(anArr1.Value(j));
+        if (j >= anArr1.Upper()) break;
+        aValueStr2 += ' ';
+        j++;
+      }
 
       aCurTarget.setAttribute(::Value(), aValueStr2.ToCString());
     }
@@ -741,7 +741,7 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
 
       //key
       const TCollection_ExtendedString aValueStr = 
-	itr.Key() + ' ' + TCollection_ExtendedString(aLen);// key - Num_of_Arr_elements;
+        itr.Key() + ' ' + TCollection_ExtendedString(aLen);// key - Num_of_Arr_elements;
       XmlObjMgt_Element aCurTarget = aDoc.createElement( ::ExtString() );
       XmlObjMgt::SetExtendedString( aCurTarget,  aValueStr); //key
       anElement.appendChild( aCurTarget );
@@ -750,13 +750,13 @@ void XmlMDataStd_NamedDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
       TCollection_AsciiString aValueStr2;
       Standard_Integer j = anArr1.Lower();
       for(;;) {
-	char aValueChar[32];
-	Sprintf(aValueChar, "%.15g", anArr1.Value(j));
-	TCollection_AsciiString aValueStr3(aValueChar);
-	aValueStr2 += aValueStr3;
-	if (j >= anArr1.Upper()) break;
-	aValueStr2 += ' ';
-	j++;
+        char aValueChar[32];
+        Sprintf(aValueChar, "%.15g", anArr1.Value(j));
+        TCollection_AsciiString aValueStr3(aValueChar);
+        aValueStr2 += aValueStr3;
+        if (j >= anArr1.Upper()) break;
+        aValueStr2 += ' ';
+        j++;
       }
       aCurTarget.setAttribute(::Value(), aValueStr2.ToCString());
 
diff --git a/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.hxx b/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.hxx
index 39c275bece..e688f77ffe 100644
--- a/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_NamedDataDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_NamedDataDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_NamedDataDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_NamedDataDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.cxx b/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.cxx
index 3ee4a95543..49d5e6c6c1 100644
--- a/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_NoteBook.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataStd_NoteBookDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_NoteBookDriver::XmlMDataStd_NoteBookDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.hxx b/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.hxx
index 98ce4da3ec..7dc48f33cc 100644
--- a/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_NoteBookDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_NoteBookDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_NoteBookDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_NoteBookDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.cxx
index 8fca3dbd5f..1fe199281e 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.cxx
@@ -15,7 +15,7 @@
 
 //AGV 150202: Changed prototype XmlObjMgt::SetStringValue()
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_OutOfMemory.hxx>
@@ -40,7 +40,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "realarrattguid")
 //=======================================================================
 
 XmlMDataStd_RealArrayDriver::XmlMDataStd_RealArrayDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -75,7 +75,7 @@ Standard_Boolean XmlMDataStd_RealArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for RealArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -85,7 +85,7 @@ Standard_Boolean XmlMDataStd_RealArrayDriver::Paste
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for RealArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -105,7 +105,7 @@ Standard_Boolean XmlMDataStd_RealArrayDriver::Paste
         TCollection_ExtendedString("Cannot retrieve array of real members"
                                    " for RealArray attribute from Integer \"")
         + aString + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
   } else {
@@ -117,7 +117,7 @@ Standard_Boolean XmlMDataStd_RealArrayDriver::Paste
           TCollection_ExtendedString("Cannot retrieve real member"
                                      " for RealArray attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       aRealArray->SetValue(ind, aValue);
@@ -133,7 +133,7 @@ Standard_Boolean XmlMDataStd_RealArrayDriver::Paste
           TCollection_ExtendedString("Cannot retrieve the isDelta value"
                                      " for RealArray attribute as \"")
                                      + aDeltaValue + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       } 
     else
diff --git a/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.hxx
index 3d9e362316..df7bf13b50 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_RealArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_RealArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_RealArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_RealDriver.cxx b/src/XmlMDataStd/XmlMDataStd_RealDriver.cxx
index 902d3d66cf..2ccaad3ab1 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealDriver.cxx
@@ -15,7 +15,7 @@
 
 //AGV 150202: Changed prototype XmlObjMgt::SetStringValue()
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Real.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "realattguid")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_RealDriver::XmlMDataStd_RealDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -60,7 +60,7 @@ Standard_Boolean XmlMDataStd_RealDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Real attribute from \"")
         + aRealStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_RealDriver.hxx b/src/XmlMDataStd/XmlMDataStd_RealDriver.hxx
index 9148d8880c..6ab6960226 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_RealDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_RealDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_RealDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_RealListDriver.cxx b/src/XmlMDataStd/XmlMDataStd_RealListDriver.cxx
index 4c04da7943..c012a218a5 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealListDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealListDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_ListIteratorOfListOfReal.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "reallistattguid")
 //function : XmlMDataStd_RealListDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_RealListDriver::XmlMDataStd_RealListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_RealListDriver::XmlMDataStd_RealListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -69,7 +69,7 @@ Standard_Boolean XmlMDataStd_RealListDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for RealList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -80,7 +80,7 @@ Standard_Boolean XmlMDataStd_RealListDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for RealList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -102,7 +102,7 @@ Standard_Boolean XmlMDataStd_RealListDriver::Paste(const XmlObjMgt_Persistent&
         TCollection_ExtendedString("Cannot retrieve array of real members"
                                    " for RealList attribute from Integer \"")
         + aString + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
   } 
@@ -116,7 +116,7 @@ Standard_Boolean XmlMDataStd_RealListDriver::Paste(const XmlObjMgt_Persistent&
           TCollection_ExtendedString("Cannot retrieve real member"
                                      " for RealList attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       aRealList->Append(aValue);
diff --git a/src/XmlMDataStd/XmlMDataStd_RealListDriver.hxx b/src/XmlMDataStd/XmlMDataStd_RealListDriver.hxx
index d4d2714991..bf66a9ada0 100644
--- a/src/XmlMDataStd/XmlMDataStd_RealListDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_RealListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_RealListDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_RealListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_RealListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.cxx
index 3593e448fe..0a84561a61 100644
--- a/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ReferenceArray.hxx>
@@ -35,7 +35,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "refarrattguid")
 //function : XmlMDataStd_ReferenceArrayDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_ReferenceArrayDriver::XmlMDataStd_ReferenceArrayDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_ReferenceArrayDriver::XmlMDataStd_ReferenceArrayDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -71,7 +71,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for ReferenceArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -82,7 +82,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for ReferenceArray attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -93,7 +93,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
   {
     TCollection_ExtendedString aMessageString = 
       TCollection_ExtendedString("Cannot retrieve a Array of reference");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -106,7 +106,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
     aValueStr = XmlObjMgt::GetStringValue( *aCurElement );
     if (aValueStr == NULL)
     {
-      WriteMessage ("Cannot retrieve reference string from element");
+      myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
       return Standard_False;
     }
     TCollection_AsciiString anEntry;
@@ -115,7 +115,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
       TCollection_ExtendedString aMessage =
         TCollection_ExtendedString ("Cannot retrieve reference from \"")
         + aValueStr + '\"';
-      WriteMessage (aMessage);
+      myMessageDriver->Send (aMessage, Message_Fail);
       return Standard_False;
     }
     // Find label by entry
@@ -133,7 +133,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
   aValueStr = XmlObjMgt::GetStringValue( *aCurElement );
   if (aValueStr == NULL)
   {
-    WriteMessage ("Cannot retrieve reference string from element");
+    myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
     return Standard_False;
   }
   TCollection_AsciiString anEntry;
@@ -142,7 +142,7 @@ Standard_Boolean XmlMDataStd_ReferenceArrayDriver::Paste(const XmlObjMgt_Persist
     TCollection_ExtendedString aMessage =
       TCollection_ExtendedString ("Cannot retrieve reference from \"")
       + aValueStr + '\"';
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
   // Find label by entry
@@ -178,7 +178,7 @@ void XmlMDataStd_ReferenceArrayDriver::Paste(const Handle(TDF_Attribute)& theSou
   TDF_Label L = aReferenceArray->Label();
   if (L.IsNull())
   {
-    WriteMessage ("Label of a ReferenceArray is Null.");
+    myMessageDriver->Send ("Label of a ReferenceArray is Null.", Message_Fail);
     return;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.hxx
index 2a2b9565b5..06bfadf3d3 100644
--- a/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ReferenceArrayDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ReferenceArrayDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ReferenceArrayDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ReferenceArrayDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.cxx b/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.cxx
index 2eabdecbda..e6ffe530e5 100644
--- a/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_ReferenceList.hxx>
@@ -36,7 +36,7 @@ IMPLEMENT_DOMSTRING (AttributeIDString, "reflistattguid")
 //function : XmlMDataStd_ReferenceListDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_ReferenceListDriver::XmlMDataStd_ReferenceListDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_ReferenceListDriver::XmlMDataStd_ReferenceListDriver(const Handle(Message_Messenger)& theMsgDriver)
      : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -72,7 +72,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
       TCollection_ExtendedString("Cannot retrieve the first index"
                                  " for ReferenceList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -83,7 +83,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for ReferenceList attribute as \"")
         + aFirstIndex + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -93,7 +93,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
     {
       TCollection_ExtendedString aMessageString = 
         TCollection_ExtendedString("Cannot retrieve a list of reference");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
 
@@ -105,7 +105,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
       aValueStr = XmlObjMgt::GetStringValue( *aCurElement );
       if (aValueStr == NULL)
       {
-        WriteMessage ("Cannot retrieve reference string from element");
+        myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
         return Standard_False;
       }
       TCollection_AsciiString anEntry;
@@ -114,7 +114,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
         TCollection_ExtendedString aMessage =
         TCollection_ExtendedString ("Cannot retrieve reference from \"")
         + aValueStr + '\"';
-        WriteMessage (aMessage);
+        myMessageDriver->Send (aMessage, Message_Fail);
         return Standard_False;
       }
       // Find label by entry
@@ -131,7 +131,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
   aValueStr = XmlObjMgt::GetStringValue( *aCurElement );
   if (aValueStr == NULL)
   {
-    WriteMessage ("Cannot retrieve reference string from element");
+    myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
     return Standard_False;
   }
   TCollection_AsciiString anEntry;
@@ -140,7 +140,7 @@ Standard_Boolean XmlMDataStd_ReferenceListDriver::Paste(const XmlObjMgt_Persiste
     TCollection_ExtendedString aMessage =
     TCollection_ExtendedString ("Cannot retrieve reference from \"")
     + aValueStr + '\"';
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
   // Find label by entry
@@ -176,7 +176,7 @@ void XmlMDataStd_ReferenceListDriver::Paste(const Handle(TDF_Attribute)& theSour
   TDF_Label L = aReferenceList->Label();
   if (L.IsNull())
   {
-    WriteMessage ("Label of a ReferenceList is Null.");
+    myMessageDriver->Send ("Label of a ReferenceList is Null.", Message_Fail);
     return;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.hxx b/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.hxx
index 49bb896607..56f4484691 100644
--- a/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_ReferenceListDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_ReferenceListDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_ReferenceListDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_ReferenceListDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_RelationDriver.cxx b/src/XmlMDataStd/XmlMDataStd_RelationDriver.cxx
index b6c6108707..0415eabd43 100644
--- a/src/XmlMDataStd/XmlMDataStd_RelationDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_RelationDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Relation.hxx>
 #include <TDataStd_Variable.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (VariablesString, "variables")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_RelationDriver::XmlMDataStd_RelationDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -65,7 +65,7 @@ Standard_Boolean XmlMDataStd_RelationDriver::Paste
   TCollection_ExtendedString aString;
   if (!XmlObjMgt::GetExtendedString (theSource, aString))
   {
-    WriteMessage("error retrieving ExtendedString for type TDataStd_Relation");
+    myMessageDriver->Send("error retrieving ExtendedString for type TDataStd_Relation", Message_Fail);
     return Standard_False;
   }
   aC->SetRelation(aString);
@@ -82,7 +82,7 @@ Standard_Boolean XmlMDataStd_RelationDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataStd_RelationDriver: Cannot retrieve reference on first variable from \"")
           + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     Standard_Integer i = 1;
diff --git a/src/XmlMDataStd/XmlMDataStd_RelationDriver.hxx b/src/XmlMDataStd/XmlMDataStd_RelationDriver.hxx
index 4e0bf2a5c3..7f4df0e999 100644
--- a/src/XmlMDataStd/XmlMDataStd_RelationDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_RelationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_RelationDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_RelationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_RelationDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_TickDriver.cxx b/src/XmlMDataStd/XmlMDataStd_TickDriver.cxx
index ed1bbf902b..90594fb6b8 100644
--- a/src/XmlMDataStd/XmlMDataStd_TickDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_TickDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Tick.hxx>
 #include <TDF_Attribute.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataStd_TickDriver,XmlMDF_ADriver)
 //function : XmlMDataStd_TickDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataStd_TickDriver::XmlMDataStd_TickDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataStd_TickDriver::XmlMDataStd_TickDriver(const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
diff --git a/src/XmlMDataStd/XmlMDataStd_TickDriver.hxx b/src/XmlMDataStd/XmlMDataStd_TickDriver.hxx
index a000cab2a8..ee302fb831 100644
--- a/src/XmlMDataStd/XmlMDataStd_TickDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_TickDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_TickDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_TickDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_TickDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.cxx b/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.cxx
index f81b0e5221..d8dcc7972e 100644
--- a/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_TreeNode.hxx>
@@ -34,7 +34,7 @@ IMPLEMENT_DOMSTRING (ChildrenString, "children")
 //=======================================================================
 
 XmlMDataStd_TreeNodeDriver::XmlMDataStd_TreeNodeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.hxx b/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.hxx
index b95471c050..eb415fea17 100644
--- a/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_TreeNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_TreeNodeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_TreeNodeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_TreeNodeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.cxx b/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.cxx
index 601361378e..7d5515ed77 100644
--- a/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_UAttribute.hxx>
 #include <TDF_Attribute.hxx>
@@ -30,7 +30,7 @@ IMPLEMENT_DOMSTRING (GuidString, "guid")
 //=======================================================================
 
 XmlMDataStd_UAttributeDriver::XmlMDataStd_UAttributeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -56,7 +56,7 @@ Standard_Boolean XmlMDataStd_UAttributeDriver::Paste
     theSource.Element().getAttribute (::GuidString());
   Standard_CString aGuidStr = (Standard_CString)aGuidDomStr.GetString();
   if (aGuidStr[0] == '\0') {
-    WriteMessage ("error retrieving GUID for type TDataStd_UAttribute");
+    myMessageDriver->Send ("error retrieving GUID for type TDataStd_UAttribute", Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.hxx b/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.hxx
index 84071f77dd..054efd98b2 100644
--- a/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_UAttributeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_UAttributeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_UAttributeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_UAttributeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataStd/XmlMDataStd_VariableDriver.cxx b/src/XmlMDataStd/XmlMDataStd_VariableDriver.cxx
index c989329043..06ed90cc1d 100644
--- a/src/XmlMDataStd/XmlMDataStd_VariableDriver.cxx
+++ b/src/XmlMDataStd/XmlMDataStd_VariableDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Variable.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_DOMSTRING (ConstString,   "true")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataStd_VariableDriver::XmlMDataStd_VariableDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataStd/XmlMDataStd_VariableDriver.hxx b/src/XmlMDataStd/XmlMDataStd_VariableDriver.hxx
index 0f19eba36a..7aea8eaed8 100644
--- a/src/XmlMDataStd/XmlMDataStd_VariableDriver.hxx
+++ b/src/XmlMDataStd/XmlMDataStd_VariableDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataStd_VariableDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataStd_VariableDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataStd_VariableDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd.cxx b/src/XmlMDataXtd/XmlMDataXtd.cxx
index 17f28e2161..0054151c3d 100644
--- a/src/XmlMDataXtd/XmlMDataXtd.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd.cxx
@@ -15,7 +15,7 @@
 
 // modified     20.04.2009 Sergey Zaritchny
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlMDataXtd.hxx>
 #include <XmlMDataXtd_AxisDriver.hxx>
 #include <XmlMDataXtd_ConstraintDriver.hxx>
@@ -37,7 +37,7 @@ static Standard_Integer myDocumentVersion = -1;
 //purpose  : 
 //=======================================================================
 void XmlMDataXtd::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                              const Handle(CDM_MessageDriver)&   anMsgDrv)
+                              const Handle(Message_Messenger)&   anMsgDrv)
 {
   aDriverTable->AddDriver(new XmlMDataXtd_ShapeDriver         (anMsgDrv));
   aDriverTable->AddDriver(new XmlMDataXtd_PointDriver         (anMsgDrv));
diff --git a/src/XmlMDataXtd/XmlMDataXtd.hxx b/src/XmlMDataXtd/XmlMDataXtd.hxx
index 9c32adae1e..64b30a53c6 100644
--- a/src/XmlMDataXtd/XmlMDataXtd.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd.hxx
@@ -20,7 +20,7 @@
 
 #include <Standard_Integer.hxx>
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDataXtd_AxisDriver;
 class XmlMDataXtd_ShapeDriver;
 class XmlMDataXtd_PointDriver;
@@ -41,7 +41,7 @@ public:
 
   
   //! Adds the attribute drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& anMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& anMsgDrv);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.cxx
index f511f3eedf..0890b51cc7 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Axis.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_AxisDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_AxisDriver::XmlMDataXtd_AxisDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.hxx
index 6b8e5dbc2c..8ee1d1bf3c 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_AxisDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_AxisDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_AxisDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_AxisDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.cxx
index 6c5fedd5b1..76c869e266 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Real.hxx>
 #include <TDataXtd_Constraint.hxx>
@@ -70,7 +70,7 @@ IMPLEMENT_DOMSTRING (ConOffsetString,        "offset")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_ConstraintDriver::XmlMDataXtd_ConstraintDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -110,7 +110,7 @@ Standard_Boolean XmlMDataXtd_ConstraintDriver::Paste
         ("XmlMDataXtd_ConstraintDriver: "
          "Cannot retrieve reference on Integer attribute from \"")
           + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (aNb > 0)
@@ -138,7 +138,7 @@ Standard_Boolean XmlMDataXtd_ConstraintDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_ConstraintDriver: Cannot retrieve reference on first Geometry from \"")
           + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     Standard_Integer i = 1;
@@ -169,7 +169,7 @@ Standard_Boolean XmlMDataXtd_ConstraintDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_ConstraintDriver: Cannot retrieve reference on Plane from \"")
           + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     Handle(TNaming_NamedShape) aTPlane;
diff --git a/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.hxx
index 28c83baae5..70a6b50527 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_ConstraintDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_ConstraintDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_ConstraintDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_ConstraintDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.cxx
index ddd2b221a0..2d43aae7e1 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Geometry.hxx>
 #include <TDF_Attribute.hxx>
@@ -45,7 +45,7 @@ IMPLEMENT_DOMSTRING (GeomCylinderString, "cylinder")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_GeometryDriver::XmlMDataXtd_GeometryDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -73,8 +73,8 @@ Standard_Boolean XmlMDataXtd_GeometryDriver::Paste
   XmlObjMgt_DOMString aType = theSource.Element().getAttribute(::TypeString());
   TDataXtd_GeometryEnum aTypeEnum;
   if (GeometryTypeEnum (aType, aTypeEnum) == Standard_False) {
-    WriteMessage ("TDataXtd_GeometryEnum; "
-                  "string value without enum term equivalence");
+    myMessageDriver->Send ("TDataXtd_GeometryEnum; "
+                  "string value without enum term equivalence", Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.hxx
index 8eab69a0d8..3b96e63168 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_GeometryDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_GeometryDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_GeometryDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_GeometryDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.cxx
index 1e9a32b51b..177e59a494 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataStd_Integer.hxx>
 #include <TDataStd_Real.hxx>
@@ -46,7 +46,7 @@ IMPLEMENT_DOMSTRING (TrueString,                "true")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PatternStdDriver::XmlMDataXtd_PatternStdDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -81,7 +81,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
     aMsgString = TCollection_ExtendedString
       ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
         + ::SignatureString() + "\" attribute (must be integer)";
-    WriteMessage (aMsgString);
+    myMessageDriver->Send (aMsgString, Message_Fail);
     return Standard_False;
   }
   
@@ -103,7 +103,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
           + ::Axis1RefString() + "\" attribute (must be integer)";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (theRelocTable.IsBound(aNb))
@@ -120,7 +120,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
           + ::Value1RefString() + "\" attribute (must be integer)";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (theRelocTable.IsBound(aNb))
@@ -137,7 +137,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
           + ::NbInstances1RefString() + "\" attribute (must be integer)";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (theRelocTable.IsBound(aNb))
@@ -156,7 +156,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
         aMsgString = TCollection_ExtendedString
           ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
             + ::Axis2RefString() + "\" attribute (must be integer)";
-        WriteMessage (aMsgString);
+        myMessageDriver->Send (aMsgString, Message_Fail);
         return Standard_False;
       }
       if (theRelocTable.IsBound(aNb))
@@ -173,7 +173,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
         aMsgString = TCollection_ExtendedString
           ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
             + ::Value2RefString() + "\" attribute (must be integer)";
-        WriteMessage (aMsgString);
+        myMessageDriver->Send (aMsgString, Message_Fail);
         return Standard_False;
       }
       if (theRelocTable.IsBound(aNb))
@@ -190,7 +190,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
         aMsgString = TCollection_ExtendedString
           ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
             + ::NbInstances2RefString() + "\" attribute (must be integer)";
-        WriteMessage (aMsgString);
+        myMessageDriver->Send (aMsgString, Message_Fail);
         return Standard_False;
       }
       if (theRelocTable.IsBound(aNb))
@@ -210,7 +210,7 @@ Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
           + ::MirrorRefString() + "\" attribute (must be integer)";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (theRelocTable.IsBound(aNb))
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.hxx
index 58b506f682..e1bc56c3cc 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PatternStdDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_PatternStdDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PatternStdDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PatternStdDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.cxx
index 9cc093630d..ef7de904c3 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Placement.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_PlacementDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PlacementDriver::XmlMDataXtd_PlacementDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.hxx
index ce0d980df9..9c26368ff1 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PlacementDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_PlacementDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PlacementDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PlacementDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.cxx
index 0928feae60..46d1bd6ea4 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Plane.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_PlaneDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PlaneDriver::XmlMDataXtd_PlaneDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.hxx
index 821c0b3827..3c969450cb 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PlaneDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_PlaneDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PlaneDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PlaneDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PointDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PointDriver.cxx
index c258a3cb97..350df868d2 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PointDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PointDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Point.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_PointDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PointDriver::XmlMDataXtd_PointDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PointDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PointDriver.hxx
index 3112e5f3f5..5917ab7fb2 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PointDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PointDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_PointDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PointDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PointDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.cxx
index 2117364d31..9054631b49 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.cxx
@@ -15,7 +15,7 @@
 
 #include <XmlMDataXtd_PositionDriver.hxx>
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <gp_XYZ.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Position.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_PositionDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PositionDriver::XmlMDataXtd_PositionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -60,7 +60,7 @@ Standard_Boolean XmlMDataXtd_PositionDriver::Paste
   XmlObjMgt_DOMString aPosStr = XmlObjMgt::GetStringValue(theSource.Element());
   if (aPosStr == NULL)
   {
-    WriteMessage ("Cannot retrieve position string from element");
+    myMessageDriver->Send ("Cannot retrieve position string from element", Message_Fail);
     return Standard_False;
   }
 
@@ -75,7 +75,7 @@ Standard_Boolean XmlMDataXtd_PositionDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve X coordinate for TDataXtd_Position attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetX(aValue);
@@ -87,7 +87,7 @@ Standard_Boolean XmlMDataXtd_PositionDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve Y coordinate for TDataXtd_Position attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetY(aValue);
@@ -99,7 +99,7 @@ Standard_Boolean XmlMDataXtd_PositionDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve Z coordinate for TDataXtd_Position attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetZ(aValue);
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.hxx
index c6496c247e..b399002534 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PositionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -39,7 +39,7 @@ class XmlMDataXtd_PositionDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PositionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PositionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.cxx
index 32eb2d8a14..1dd928da0d 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.cxx
@@ -15,7 +15,7 @@
 
 #include <XmlMDataXtd_PresentationDriver.hxx>
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XmlObjMgt.hxx>
@@ -40,7 +40,7 @@ IMPLEMENT_DOMSTRING (DisplayedString,   "true")
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_PresentationDriver::XmlMDataXtd_PresentationDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
   : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -73,7 +73,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
   aDOMStr = anElem.getAttribute(::GuidString());
   if (aDOMStr == NULL)
   {
-    WriteMessage("Cannot retrieve guid string from attribute");
+    myMessageDriver->Send("Cannot retrieve guid string from attribute", Message_Fail);
     return Standard_False;
   }
   Standard_CString aGuidStr = (Standard_CString) aDOMStr.GetString();
@@ -93,7 +93,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
     {
       aMessageString = TCollection_ExtendedString
         ("Cannot retrieve Integer value from \"") + aDOMStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aTPrs->SetColor((Quantity_NameOfColor)anIValue);
@@ -111,7 +111,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
     {
       aMessageString = TCollection_ExtendedString
         ("Cannot retrieve Integer value from \"") + aDOMStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aTPrs->SetMaterialIndex(anIValue);
@@ -131,7 +131,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
     {
       aMessageString = TCollection_ExtendedString
         ("Cannot retrieve Real value from \"") + aDOMStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aTPrs->SetTransparency(aValue);
@@ -149,7 +149,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
     {
       aMessageString = TCollection_ExtendedString
         ("Cannot retrieve Real value from \"") + aDOMStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aTPrs->SetWidth(aValue);
@@ -167,7 +167,7 @@ Standard_Boolean XmlMDataXtd_PresentationDriver::Paste
     {
       aMessageString = TCollection_ExtendedString
         ("Cannot retrieve Integer value from \"") + aDOMStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     aTPrs->SetMode(anIValue);
diff --git a/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.hxx
index db477dcd43..a03139d433 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_PresentationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_PresentationDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_PresentationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_PresentationDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.cxx
index d32ac90846..68956ac9f4 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDataXtd_Shape.hxx>
 #include <TDF_Attribute.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMDataXtd_ShapeDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMDataXtd_ShapeDriver::XmlMDataXtd_ShapeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.hxx
index 50d50d90bb..f0e54834f2 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_ShapeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDataXtd_ShapeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDataXtd_ShapeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_ShapeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.cxx b/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.cxx
index 082cdb28ea..a46cbf1815 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.cxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 #include <XmlMDataXtd_TriangulationDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <NCollection_LocalArray.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (ExistString, "exists")
 //function : XmlMDataXtd_TriangulationDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMDataXtd_TriangulationDriver::XmlMDataXtd_TriangulationDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMDataXtd_TriangulationDriver::XmlMDataXtd_TriangulationDriver(const Handle(Message_Messenger)& theMsgDriver)
   : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
diff --git a/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.hxx b/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.hxx
index a3707d37bc..dfad90bd27 100644
--- a/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.hxx
+++ b/src/XmlMDataXtd/XmlMDataXtd_TriangulationDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -35,7 +35,7 @@ class XmlMDataXtd_TriangulationDriver : public XmlMDF_ADriver
 
 public:
 
-  Standard_EXPORT XmlMDataXtd_TriangulationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDataXtd_TriangulationDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/XmlMDocStd/XmlMDocStd.cxx b/src/XmlMDocStd/XmlMDocStd.cxx
index f4623f31c3..7fa7bd085e 100644
--- a/src/XmlMDocStd/XmlMDocStd.cxx
+++ b/src/XmlMDocStd/XmlMDocStd.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlMDF_ADriverTable.hxx>
 #include <XmlMDocStd.hxx>
 #include <XmlMDocStd_XLinkDriver.hxx>
@@ -24,7 +24,7 @@
 //purpose  : 
 //=======================================================================
 void XmlMDocStd::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                             const Handle(CDM_MessageDriver)&   aMessageDriver)
+                             const Handle(Message_Messenger)&   aMessageDriver)
 {
   aDriverTable->AddDriver (new XmlMDocStd_XLinkDriver(aMessageDriver)); 
 }
diff --git a/src/XmlMDocStd/XmlMDocStd.hxx b/src/XmlMDocStd/XmlMDocStd.hxx
index f06907c45b..da4c95d4f2 100644
--- a/src/XmlMDocStd/XmlMDocStd.hxx
+++ b/src/XmlMDocStd/XmlMDocStd.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMDocStd_XLinkDriver;
 
 
@@ -34,7 +34,7 @@ public:
 
   
   //! Adds the attribute drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& theMessageDriver);
 
 
 
diff --git a/src/XmlMDocStd/XmlMDocStd_XLinkDriver.cxx b/src/XmlMDocStd/XmlMDocStd_XLinkDriver.cxx
index 871928356a..24e6c9b9fc 100644
--- a/src/XmlMDocStd/XmlMDocStd_XLinkDriver.cxx
+++ b/src/XmlMDocStd/XmlMDocStd_XLinkDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_Label.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (DocEntryString, "documentEntry")
 //purpose  : Constructor
 //=======================================================================
 XmlMDocStd_XLinkDriver::XmlMDocStd_XLinkDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -58,7 +58,7 @@ Standard_Boolean XmlMDocStd_XLinkDriver::Paste
 
   if (anXPath == NULL)
   {
-    WriteMessage ("XLink: Cannot retrieve reference string from element");
+    myMessageDriver->Send ("XLink: Cannot retrieve reference string from element", Message_Fail);
     return Standard_False;
   }
 
@@ -68,7 +68,7 @@ Standard_Boolean XmlMDocStd_XLinkDriver::Paste
     TCollection_ExtendedString aMessage =
       TCollection_ExtendedString ("Cannot retrieve XLink reference from \"")
         + anXPath + '\"';
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMDocStd/XmlMDocStd_XLinkDriver.hxx b/src/XmlMDocStd/XmlMDocStd_XLinkDriver.hxx
index f4937ea589..f1c1bba778 100644
--- a/src/XmlMDocStd/XmlMDocStd_XLinkDriver.hxx
+++ b/src/XmlMDocStd/XmlMDocStd_XLinkDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMDocStd_XLinkDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMDocStd_XLinkDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMDocStd_XLinkDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMFunction/XmlMFunction.cxx b/src/XmlMFunction/XmlMFunction.cxx
index eb2bdbc840..8b72f1a574 100644
--- a/src/XmlMFunction/XmlMFunction.cxx
+++ b/src/XmlMFunction/XmlMFunction.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlMDF_ADriverTable.hxx>
 #include <XmlMFunction.hxx>
 #include <XmlMFunction_FunctionDriver.hxx>
@@ -26,7 +26,7 @@
 //purpose  : 
 //=======================================================================
 void XmlMFunction::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                               const Handle(CDM_MessageDriver)&   aMessageDriver)
+                               const Handle(Message_Messenger)&   aMessageDriver)
 {
   aDriverTable->AddDriver(new XmlMFunction_FunctionDriver(aMessageDriver));
   aDriverTable->AddDriver(new XmlMFunction_ScopeDriver(aMessageDriver));
diff --git a/src/XmlMFunction/XmlMFunction.hxx b/src/XmlMFunction/XmlMFunction.hxx
index 8269c11911..3d132054be 100644
--- a/src/XmlMFunction/XmlMFunction.hxx
+++ b/src/XmlMFunction/XmlMFunction.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMFunction_FunctionDriver;
 class XmlMFunction_ScopeDriver;
 class XmlMFunction_GraphNodeDriver;
@@ -36,7 +36,7 @@ public:
 
   
   //! Adds the attribute storage drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& theMessageDriver);
 
 
 
diff --git a/src/XmlMFunction/XmlMFunction_FunctionDriver.cxx b/src/XmlMFunction/XmlMFunction_FunctionDriver.cxx
index b172c1a073..24c6eedd4c 100644
--- a/src/XmlMFunction/XmlMFunction_FunctionDriver.cxx
+++ b/src/XmlMFunction/XmlMFunction_FunctionDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_Tool.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (FailureString, "failure")
 //purpose  : Constructor
 //=======================================================================
 XmlMFunction_FunctionDriver::XmlMFunction_FunctionDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -62,7 +62,7 @@ Standard_Boolean XmlMFunction_FunctionDriver::Paste
   Standard_CString aGuidStr = (Standard_CString)aGuidDomStr.GetString();
   if (aGuidStr[0] == '\0')
   {
-    WriteMessage ("error retrieving GUID for type TFunction_Function");
+    myMessageDriver->Send ("error retrieving GUID for type TFunction_Function", Message_Fail);
     return Standard_False;
   }
   aF->SetDriverGUID(aGuidStr);
@@ -76,7 +76,7 @@ Standard_Boolean XmlMFunction_FunctionDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve failure number for TFunction_Function attribute from \"")
           + aFStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aF->SetFailure(aValue);
diff --git a/src/XmlMFunction/XmlMFunction_FunctionDriver.hxx b/src/XmlMFunction/XmlMFunction_FunctionDriver.hxx
index 16b876134f..f99aedd731 100644
--- a/src/XmlMFunction/XmlMFunction_FunctionDriver.hxx
+++ b/src/XmlMFunction/XmlMFunction_FunctionDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMFunction_FunctionDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMFunction_FunctionDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMFunction_FunctionDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMFunction/XmlMFunction_GraphNodeDriver.cxx b/src/XmlMFunction/XmlMFunction_GraphNodeDriver.cxx
index 883e4b2b69..0163311fac 100644
--- a/src/XmlMFunction/XmlMFunction_GraphNodeDriver.cxx
+++ b/src/XmlMFunction/XmlMFunction_GraphNodeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_MapIteratorOfMapOfInteger.hxx>
 #include <TDF_Attribute.hxx>
@@ -32,7 +32,7 @@ IMPLEMENT_DOMSTRING (ExecutionStatus,   "exec")
 //function : XmlMFunction_GraphNodeDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMFunction_GraphNodeDriver::XmlMFunction_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMFunction_GraphNodeDriver::XmlMFunction_GraphNodeDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -52,8 +52,8 @@ Handle(TDF_Attribute) XmlMFunction_GraphNodeDriver::NewEmpty() const
 //purpose  : persistent -> transient (retrieve)
 //=======================================================================
 Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&  theSource,
-						     const Handle(TDF_Attribute)& theTarget,
-						     XmlObjMgt_RRelocationTable&  ) const
+                                                     const Handle(TDF_Attribute)& theTarget,
+                                                     XmlObjMgt_RRelocationTable&  ) const
 {
   Handle(TFunction_GraphNode) G = Handle(TFunction_GraphNode)::DownCast(theTarget);
 
@@ -72,7 +72,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for previous functions of GraphNode attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -84,7 +84,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
       TCollection_ExtendedString aMessageString =
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for previous functions of GraphNode attribute");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     G->AddPrevious(anInteger);
@@ -102,7 +102,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
           TCollection_ExtendedString("Cannot retrieve integer member"
                                      " for previous functions of GraphNode attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       G->AddPrevious(aValue);
@@ -122,7 +122,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for next functions of GraphNode attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aLastIndNext += aLastIndPrev;
@@ -138,7 +138,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for next functions of GraphNode attribute as \"")
           + aValueStr + "\"";
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     if (ind < aFirstIndNext)
@@ -153,7 +153,7 @@ Standard_Boolean XmlMFunction_GraphNodeDriver::Paste(const XmlObjMgt_Persistent&
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve the execution status"
                                  " for GraphNode attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   G->SetStatus((TFunction_ExecutionStatus) exec);
diff --git a/src/XmlMFunction/XmlMFunction_GraphNodeDriver.hxx b/src/XmlMFunction/XmlMFunction_GraphNodeDriver.hxx
index 5d69210045..6362aa7474 100644
--- a/src/XmlMFunction/XmlMFunction_GraphNodeDriver.hxx
+++ b/src/XmlMFunction/XmlMFunction_GraphNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMFunction_GraphNodeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMFunction_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMFunction_GraphNodeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMFunction/XmlMFunction_ScopeDriver.cxx b/src/XmlMFunction/XmlMFunction_ScopeDriver.cxx
index fb8bf121d6..fa3725177f 100644
--- a/src/XmlMFunction/XmlMFunction_ScopeDriver.cxx
+++ b/src/XmlMFunction/XmlMFunction_ScopeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_MemManager.hxx>
 #include <Standard_Type.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
@@ -41,7 +41,7 @@ IMPLEMENT_DOMSTRING (ExtString,      "string")
 //function : XmlMFunction_ScopeDriver
 //purpose  : Constructor
 //=======================================================================
-XmlMFunction_ScopeDriver::XmlMFunction_ScopeDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMFunction_ScopeDriver::XmlMFunction_ScopeDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {
 
@@ -61,8 +61,8 @@ Handle(TDF_Attribute) XmlMFunction_ScopeDriver::NewEmpty() const
 //purpose  : persistent -> transient (retrieve)
 //=======================================================================
 Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  theSource,
-						 const Handle(TDF_Attribute)& theTarget,
-						 XmlObjMgt_RRelocationTable&  ) const
+                                                 const Handle(TDF_Attribute)& theTarget,
+                                                 XmlObjMgt_RRelocationTable&  ) const
 {
   Handle(TFunction_Scope) S = Handle(TFunction_Scope)::DownCast(theTarget);
   TColStd_ListOfInteger   IDs;
@@ -83,7 +83,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for Scope attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   nbIDs = aLastInd - aFirstInd + 1;
@@ -96,7 +96,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
       TCollection_ExtendedString aMessageString =
         TCollection_ExtendedString("Cannot retrieve integer member"
                                    " for Scope attribute as \"");
-      WriteMessage (aMessageString);
+      myMessageDriver->Send (aMessageString, Message_Fail);
       return Standard_False;
     }
     IDs.Append(anInteger);
@@ -114,7 +114,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
           TCollection_ExtendedString("Cannot retrieve integer member"
                                      " for Scope attribute as \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       IDs.Append(aValue);
@@ -133,7 +133,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve the last index"
                                  " for Scope attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   nbLabels = aLastInd - aFirstInd + 1;
@@ -142,7 +142,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
   {
     TCollection_ExtendedString aMessageString = 
       TCollection_ExtendedString("Cannot retrieve an array of labels");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -164,7 +164,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
       TCollection_ExtendedString aMessage =
 	TCollection_ExtendedString ("Cannot retrieve reference from \"")
 	  + aValueStr + '\"';
-      WriteMessage (aMessage);
+      myMessageDriver->Send (aMessage, Message_Fail);
       return Standard_False;
     }
     // Find label by entry
@@ -182,7 +182,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
   aValueStr = XmlObjMgt::GetStringValue( *aCurElement );
   if (aValueStr == NULL)
   {
-    WriteMessage ("Cannot retrieve reference string from element");
+    myMessageDriver->Send ("Cannot retrieve reference string from element", Message_Fail);
     return Standard_False;
   }
   TCollection_AsciiString anEntry;
@@ -191,7 +191,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
     TCollection_ExtendedString aMessage =
       TCollection_ExtendedString ("Cannot retrieve reference from \"")
 	+ aValueStr + '\"';
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
   // Find label by entry
@@ -207,7 +207,7 @@ Standard_Boolean XmlMFunction_ScopeDriver::Paste(const XmlObjMgt_Persistent&  th
   {
     TCollection_ExtendedString aMessage =
       TCollection_ExtendedString ("Numbers of IDs & Labels are different");
-    WriteMessage (aMessage);
+    myMessageDriver->Send (aMessage, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMFunction/XmlMFunction_ScopeDriver.hxx b/src/XmlMFunction/XmlMFunction_ScopeDriver.hxx
index 662d213d22..a0144aeab6 100644
--- a/src/XmlMFunction/XmlMFunction_ScopeDriver.hxx
+++ b/src/XmlMFunction/XmlMFunction_ScopeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMFunction_ScopeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMFunction_ScopeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMFunction_ScopeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMNaming/XmlMNaming.cxx b/src/XmlMNaming/XmlMNaming.cxx
index 9f403bfc0b..1aedabda60 100644
--- a/src/XmlMNaming/XmlMNaming.cxx
+++ b/src/XmlMNaming/XmlMNaming.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlMDF_ADriverTable.hxx>
 #include <XmlMNaming.hxx>
 #include <XmlMNaming_NamedShapeDriver.hxx>
@@ -26,7 +26,7 @@ static Standard_Integer myDocumentVersion = -1;
 //purpose  : 
 //=======================================================================
 void XmlMNaming::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                             const Handle(CDM_MessageDriver)&   aMessageDriver)
+                             const Handle(Message_Messenger)&   aMessageDriver)
 {
   aDriverTable->AddDriver (new XmlMNaming_NamedShapeDriver(aMessageDriver));
   aDriverTable->AddDriver (new XmlMNaming_NamingDriver(aMessageDriver));
diff --git a/src/XmlMNaming/XmlMNaming.hxx b/src/XmlMNaming/XmlMNaming.hxx
index 6702a4ab47..c7971fa148 100644
--- a/src/XmlMNaming/XmlMNaming.hxx
+++ b/src/XmlMNaming/XmlMNaming.hxx
@@ -22,7 +22,7 @@
 
 #include <Standard_Integer.hxx>
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMNaming_NamedShapeDriver;
 class XmlMNaming_NamingDriver;
 class XmlMNaming_Shape1;
@@ -37,7 +37,7 @@ public:
 
   
   //! Adds the attribute drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& aMessageDriver);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& aMessageDriver);
   
   Standard_EXPORT static void SetDocumentVersion (const Standard_Integer DocVersion);
   
diff --git a/src/XmlMNaming/XmlMNaming_NamedShapeDriver.cxx b/src/XmlMNaming/XmlMNaming_NamedShapeDriver.cxx
index 294a5df51a..a9ed309d8c 100644
--- a/src/XmlMNaming/XmlMNaming_NamedShapeDriver.cxx
+++ b/src/XmlMNaming/XmlMNaming_NamedShapeDriver.cxx
@@ -16,7 +16,7 @@
 //AGV 150202: Changed prototype LDOM_Node::getOwnerDocument()
 
 #include <BRepTools.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <LDOM_OSStream.hxx>
 #include <LDOM_Text.hxx>
 #include <Standard_SStream.hxx>
@@ -64,7 +64,7 @@ IMPLEMENT_DOMSTRING (EvolReplaceString,   "replace")
 //=======================================================================
 
 XmlMNaming_NamedShapeDriver::XmlMNaming_NamedShapeDriver
-                        (const Handle(CDM_MessageDriver)& theMessageDriver)
+                        (const Handle(Message_Messenger)& theMessageDriver)
      : XmlMDF_ADriver (theMessageDriver, NULL),
   myShapeSet (Standard_False) // triangles mode
 {}
@@ -129,7 +129,7 @@ Standard_Boolean XmlMNaming_NamedShapeDriver::Paste
     if ( evol != TNaming_PRIMITIVE && anOldPShape.Element() != NULL )
     {
       if (::doTranslate (anOldPShape, anOldShape, aShapeSet)) {
-        WriteMessage ("NamedShapeDriver: Error reading a shape from array");
+        myMessageDriver->Send ("NamedShapeDriver: Error reading a shape from array", Message_Fail);
         return Standard_False;
       }
     }
@@ -137,7 +137,7 @@ Standard_Boolean XmlMNaming_NamedShapeDriver::Paste
     if (evol != TNaming_DELETE && aNewPShape.Element() != NULL )
     {
       if (::doTranslate (aNewPShape, aNewShape, aShapeSet)) {
-        WriteMessage ("NamedShapeDriver: Error reading a shape from array");
+        myMessageDriver->Send ("NamedShapeDriver: Error reading a shape from array", Message_Fail);
         return Standard_False;
       }
     }
diff --git a/src/XmlMNaming/XmlMNaming_NamedShapeDriver.hxx b/src/XmlMNaming/XmlMNaming_NamedShapeDriver.hxx
index fcb4eec5df..c72b999a43 100644
--- a/src/XmlMNaming/XmlMNaming_NamedShapeDriver.hxx
+++ b/src/XmlMNaming/XmlMNaming_NamedShapeDriver.hxx
@@ -25,7 +25,7 @@
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
 #include <XmlObjMgt_Element.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 class TopTools_LocationSet;
@@ -41,7 +41,7 @@ class XmlMNaming_NamedShapeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMNaming_NamedShapeDriver(const Handle(CDM_MessageDriver)& aMessageDriver);
+  Standard_EXPORT XmlMNaming_NamedShapeDriver(const Handle(Message_Messenger)& aMessageDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMNaming/XmlMNaming_NamingDriver.cxx b/src/XmlMNaming/XmlMNaming_NamingDriver.cxx
index 8283126a22..6f4710aee9 100644
--- a/src/XmlMNaming/XmlMNaming_NamingDriver.cxx
+++ b/src/XmlMNaming/XmlMNaming_NamingDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TDF_Tool.hxx>
@@ -73,7 +73,7 @@ IMPLEMENT_DOMSTRING (ShShapeString,             "shape")
 //purpose  : Constructor
 //=======================================================================
 XmlMNaming_NamingDriver::XmlMNaming_NamingDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, NULL)
 {}
 
@@ -119,7 +119,7 @@ Standard_Boolean XmlMNaming_NamingDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMNaming_NamingDriver: Cannot retrieve reference "
          "on first Argument from \"") + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     while (aNb > 0)
@@ -147,7 +147,7 @@ Standard_Boolean XmlMNaming_NamingDriver::Paste
       aMsgString = TCollection_ExtendedString
         ("XmlMNaming_NamingDriver: Cannot retrieve reference "
          "on StopNamedShape from \"") + aDOMStr + "\"";
-      WriteMessage (aMsgString);
+      myMessageDriver->Send (aMsgString, Message_Fail);
       return Standard_False;
     }
     if (aNb > 0)
@@ -170,7 +170,7 @@ Standard_Boolean XmlMNaming_NamingDriver::Paste
     aMsgString = TCollection_ExtendedString
       ("XmlMNaming_NamingDriver: Cannot retrieve "
        "integer value of Index from \"") + aDOMStr + "\"";
-    WriteMessage (aMsgString);
+    myMessageDriver->Send (aMsgString, Message_Fail);
     return Standard_False;
   }
   aNgName.Index(aNb);
@@ -178,27 +178,27 @@ Standard_Boolean XmlMNaming_NamingDriver::Paste
   if(XmlMNaming::DocumentVersion() > 3) {
     XmlObjMgt_DOMString aDomEntry = anElem.getAttribute(::ContextLabelString());
     if (aDomEntry != NULL)
-      {	
-	TCollection_AsciiString anEntry;
-	if (XmlObjMgt::GetTagEntryString (aDomEntry, anEntry) == Standard_False)
-	  {
-	    TCollection_ExtendedString aMessage =
-	      TCollection_ExtendedString ("Cannot retrieve Entry from \"")
-		+ aDomEntry + '\"';
-	    WriteMessage (aMessage);
-	    return Standard_False;
-	  }
-    
-	// find label by entry
-	TDF_Label tLab; // Null label.
-	if (anEntry.Length() > 0) {
-	  TDF_Tool::Label(aNg->Label().Data(), anEntry, tLab, Standard_True);
-	    aNgName.ContextLabel(tLab);
-#ifdef OCCT_DEBUG
-	    cout << "Retrieving Context Label = " << anEntry.ToCString() <<endl;
-#endif
-	  }
+    {	
+      TCollection_AsciiString anEntry;
+      if (XmlObjMgt::GetTagEntryString (aDomEntry, anEntry) == Standard_False)
+      {
+        TCollection_ExtendedString aMessage =
+          TCollection_ExtendedString ("Cannot retrieve Entry from \"")
+          + aDomEntry + '\"';
+        myMessageDriver->Send (aMessage, Message_Fail);
+        return Standard_False;
       }
+
+      // find label by entry
+      TDF_Label tLab; // Null label.
+      if (anEntry.Length() > 0) {
+        TDF_Tool::Label(aNg->Label().Data(), anEntry, tLab, Standard_True);
+        aNgName.ContextLabel(tLab);
+#ifdef OCCT_DEBUG
+        cout << "Retrieving Context Label = " << anEntry.ToCString() <<endl;
+#endif
+      }
+    }
 #ifdef OCCT_DEBUG
     else
       cout << "Retrieving Context Label is NULL" <<endl;
@@ -230,7 +230,7 @@ Standard_Boolean XmlMNaming_NamingDriver::Paste
          aMsgString = TCollection_ExtendedString
            ("XmlMNaming_NamingDriver: Cannot retrieve "
             "integer value of orientation from \"") + aDOMStr + "\"";
-         WriteMessage (aMsgString);
+         myMessageDriver->Send (aMsgString, Message_Fail);
          return Standard_False;
        }
        aNgName.Orientation((TopAbs_Orientation)aNb);
diff --git a/src/XmlMNaming/XmlMNaming_NamingDriver.hxx b/src/XmlMNaming/XmlMNaming_NamingDriver.hxx
index dec73389ad..67fb9d9903 100644
--- a/src/XmlMNaming/XmlMNaming_NamingDriver.hxx
+++ b/src/XmlMNaming/XmlMNaming_NamingDriver.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -36,7 +36,7 @@ class XmlMNaming_NamingDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMNaming_NamingDriver(const Handle(CDM_MessageDriver)& aMessageDriver);
+  Standard_EXPORT XmlMNaming_NamingDriver(const Handle(Message_Messenger)& aMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc.cxx
index 2ce8743dae..0ffa311b08 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TNaming_NamedShape.hxx>
 #include <XmlMDF_ADriverTable.hxx>
 #include <XmlMNaming_NamedShapeDriver.hxx>
@@ -47,7 +47,7 @@
 //purpose  : 
 //=======================================================================
 void XmlMXCAFDoc::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                              const Handle(CDM_MessageDriver)&   anMsgDrv)
+                              const Handle(Message_Messenger)&   anMsgDrv)
 {
   aDriverTable -> AddDriver (new XmlMXCAFDoc_AreaDriver      (anMsgDrv));
   aDriverTable -> AddDriver (new XmlMXCAFDoc_CentroidDriver  (anMsgDrv));
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc.hxx
index 9f5582e68e..c052c584ff 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc.hxx
@@ -21,7 +21,7 @@
 #include <Standard_Handle.hxx>
 
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class XmlMXCAFDoc_AreaDriver;
 class XmlMXCAFDoc_CentroidDriver;
 class XmlMXCAFDoc_ColorDriver;
@@ -55,7 +55,7 @@ public:
 
   
   //! Adds the attribute drivers to <aDriverTable>.
-  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(CDM_MessageDriver)& anMsgDrv);
+  Standard_EXPORT static void AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable, const Handle(Message_Messenger)& anMsgDrv);
 
 
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.cxx
index 8515412c63..9af205074f 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Area.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_AreaDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_AreaDriver::XmlMXCAFDoc_AreaDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "Area")
 {}
 
@@ -58,7 +58,7 @@ Standard_Boolean XmlMXCAFDoc_AreaDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Area attribute from \"")
         + aRealStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.hxx
index 33d260eb25..beda82ec9e 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AreaDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_AreaDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_AreaDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_AreaDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.cxx
index f9fe9fb022..378c71eda2 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_AssemblyItemRef.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_DOMSTRING(SubshapeIndex, "subshape_index")
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_AssemblyItemRefDriver::XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_AssemblyItemRefDriver::XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_AssemblyItemRef)->Name())
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.hxx
index 2be1a1e751..ceee404bfd 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyItemRefDriver.hxx
@@ -24,7 +24,7 @@
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -36,7 +36,7 @@ class XmlMXCAFDoc_AssemblyItemRefDriver : public XmlMDF_ADriver
 {
 public:
 
-  Standard_EXPORT XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.cxx
index 100a91776e..95280fab56 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <gp_XYZ.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_CentroidDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_CentroidDriver::XmlMXCAFDoc_CentroidDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "Centroid")
 {}
 
@@ -59,7 +59,7 @@ Standard_Boolean XmlMXCAFDoc_CentroidDriver::Paste
   XmlObjMgt_DOMString aPosStr = XmlObjMgt::GetStringValue(theSource.Element());
   if (aPosStr == NULL)
   {
-    WriteMessage ("Cannot retrieve position string from element");
+    myMessageDriver->Send ("Cannot retrieve position string from element", Message_Fail);
     return Standard_False;
   }
 
@@ -74,7 +74,7 @@ Standard_Boolean XmlMXCAFDoc_CentroidDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve X coordinate for XCAFDoc_Centroid attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetX(aValue);
@@ -86,7 +86,7 @@ Standard_Boolean XmlMXCAFDoc_CentroidDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve Y coordinate for XCAFDoc_Centroid attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetY(aValue);
@@ -98,7 +98,7 @@ Standard_Boolean XmlMXCAFDoc_CentroidDriver::Paste
       TCollection_ExtendedString
         ("Cannot retrieve Z coordinate for XCAFDoc_Centroid attribute as \"")
           + aValueStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   aPos.SetZ(aValue);
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.hxx
index b499cf2290..170eb46807 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_CentroidDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_CentroidDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_CentroidDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_CentroidDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.cxx
index e2d504bbb4..2eadae3a6f 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ClippingPlaneTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_ClippingPlaneToolDriver,XmlMDF_ADriver)
 //purpose  : 
 //=======================================================================
 XmlMXCAFDoc_ClippingPlaneToolDriver::XmlMXCAFDoc_ClippingPlaneToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "ClippingPlaneTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.hxx
index f7d54775ae..d308c33591 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ClippingPlaneToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -36,7 +36,7 @@ class XmlMXCAFDoc_ClippingPlaneToolDriver : public XmlMDF_ADriver
 {
 public:
 
-  Standard_EXPORT XmlMXCAFDoc_ClippingPlaneToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_ClippingPlaneToolDriver(const Handle(Message_Messenger)& theMsgDriver);
 
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.cxx
index d14b22d3e6..557ec06f61 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Color.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_ColorDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_ColorDriver::XmlMXCAFDoc_ColorDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "Color")
 {}
 
@@ -58,7 +58,7 @@ Standard_Boolean XmlMXCAFDoc_ColorDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Color attribute from \"")
         + anIntStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.hxx
index bd299704ac..52b1d313d0 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_ColorDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_ColorDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_ColorDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.cxx
index e7e2d6ef07..eb00799c6c 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ColorTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_ColorToolDriver,XmlMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_ColorToolDriver::XmlMXCAFDoc_ColorToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_ColorToolDriver::XmlMXCAFDoc_ColorToolDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "ColorTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.hxx
index 88ac3636f7..69b52a83fa 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ColorToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_ColorToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_ColorToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_ColorToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.cxx
index 4520fc6460..cdca87b703 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_HArray1OfReal.hxx>
@@ -33,7 +33,7 @@ IMPLEMENT_DOMSTRING (IdIndexString,    "ident")
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_DatumDriver::XmlMXCAFDoc_DatumDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "Datum")
 {}
 
@@ -60,7 +60,7 @@ Standard_Boolean XmlMXCAFDoc_DatumDriver::Paste
   if (aNameStr == NULL) {
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Datum attribute");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   
@@ -71,7 +71,7 @@ Standard_Boolean XmlMXCAFDoc_DatumDriver::Paste
   if ( aDescrStr == NULL || anIdStr == NULL ) {
     TCollection_ExtendedString aMessageString
       ("Cannot retrieve Datum attribute description or identification");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.hxx
index 2b8fc73647..559433c1c1 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DatumDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_DatumDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_DatumDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_DatumDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.cxx
index 733af5feee..e851551b8c 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TColStd_HArray1OfReal.hxx>
@@ -36,7 +36,7 @@ IMPLEMENT_DOMSTRING (ValueIndexString, "values")
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_DimTolDriver::XmlMXCAFDoc_DimTolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "DimTol")
 {}
 
@@ -65,7 +65,7 @@ Standard_Boolean XmlMXCAFDoc_DimTolDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve DimTol attribute kind from \"")
         + anIntStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   
@@ -75,7 +75,7 @@ Standard_Boolean XmlMXCAFDoc_DimTolDriver::Paste
   if ( aNameStr == NULL || aDescrStr == NULL ) {
     TCollection_ExtendedString aMessageString
       ("Cannot retrieve DimTol attribute name or description");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
@@ -91,7 +91,7 @@ Standard_Boolean XmlMXCAFDoc_DimTolDriver::Paste
   else if (!aFirstIndex.GetInteger(aFirstInd)) {
     TCollection_ExtendedString aMessageString
       ("Cannot retrieve the DimTol first index for real array ");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   XmlObjMgt_DOMString aLastIndex = anElement.getAttribute(::LastIndexString());
@@ -100,7 +100,7 @@ Standard_Boolean XmlMXCAFDoc_DimTolDriver::Paste
   else if (!aLastIndex.GetInteger(aLastInd)) {
     TCollection_ExtendedString aMessageString
       ("Cannot retrieve the DimTol last index for real array ");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   
@@ -119,7 +119,7 @@ Standard_Boolean XmlMXCAFDoc_DimTolDriver::Paste
           TCollection_ExtendedString("Cannot retrieve real member"
                                      " for real array \"")
             + aValueStr + "\"";
-        WriteMessage (aMessageString);
+        myMessageDriver->Send (aMessageString, Message_Fail);
         return Standard_False;
       }
       aHArr->SetValue(ind, aValue);
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.hxx
index 6212dbba8a..0084150ffe 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_DimTolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_DimTolDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_DimTolDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.cxx
index 5370ecb705..a7f5d70106 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_DimTolTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_DimTolToolDriver,XmlMDF_ADriver)
 //purpose  : 
 //=======================================================================
 XmlMXCAFDoc_DimTolToolDriver::XmlMXCAFDoc_DimTolToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "DimTolTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.hxx
index 188b78a2df..e05ef65107 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DimTolToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_DimTolToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_DimTolToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_DimTolToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.cxx
index ec4ccff289..f65a2bc729 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_DocumentTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_DocumentToolDriver,XmlMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_DocumentToolDriver::XmlMXCAFDoc_DocumentToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_DocumentToolDriver::XmlMXCAFDoc_DocumentToolDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "DocumentTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.hxx
index 3c527bf5cc..ec917486ff 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_DocumentToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_DocumentToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_DocumentToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_DocumentToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.cxx
index 5a36f09213..193b1732e6 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_PCharacter.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
@@ -35,7 +35,7 @@ IMPLEMENT_DOMSTRING (FathersString,  "fathers")
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_GraphNodeDriver::XmlMXCAFDoc_GraphNodeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "GraphNode")
 {}
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.hxx
index 742633c98e..66f5c20f56 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_GraphNodeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_GraphNodeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_GraphNodeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_GraphNodeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.cxx
index d4507f77d1..7bfef988af 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_LayerTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_LayerToolDriver,XmlMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_LayerToolDriver::XmlMXCAFDoc_LayerToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_LayerToolDriver::XmlMXCAFDoc_LayerToolDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "LayerTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.hxx
index fd71e23a98..61a42fab74 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_LayerToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_LayerToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_LayerToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_LayerToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.cxx
index e819f7279f..6f92de126e 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <TopLoc_Datum3D.hxx>
@@ -41,7 +41,7 @@ IMPLEMENT_DOMSTRING (LocIdString,    "locId")
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_LocationDriver::XmlMXCAFDoc_LocationDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "Location")
       , myLocations(0)
 {}
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.hxx
index 7c83bb043c..a069ea8223 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_LocationDriver.hxx
@@ -25,7 +25,7 @@
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
 #include <XmlObjMgt_Element.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 class TopLoc_Location;
@@ -41,7 +41,7 @@ class XmlMXCAFDoc_LocationDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_LocationDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_LocationDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.cxx
index 89682e5757..3826b61b34 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 #include <TDF_Attribute.hxx>
@@ -34,7 +34,7 @@ IMPLEMENT_DOMSTRING (DensTypeIndexString, "dens_type")
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_MaterialDriver::XmlMXCAFDoc_MaterialDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "Material")
 {}
 
@@ -63,7 +63,7 @@ Standard_Boolean XmlMXCAFDoc_MaterialDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Material attribute density from \"")
         + aRealStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
   
@@ -76,7 +76,7 @@ Standard_Boolean XmlMXCAFDoc_MaterialDriver::Paste
        aDensNameStr == NULL ||aDensTypeStr == NULL ) {
     TCollection_ExtendedString aMessageString
       ("Cannot retrieve Material attribute name or description");
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.hxx
index 6d879d7cf0..2c33a500bf 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_MaterialDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_MaterialDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_MaterialDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.cxx
index 0a93204e49..e6e91ae494 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_MaterialTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_MaterialToolDriver,XmlMDF_ADriver)
 //purpose  : 
 //=======================================================================
 XmlMXCAFDoc_MaterialToolDriver::XmlMXCAFDoc_MaterialToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "MaterialTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.hxx
index d07f279cb2..eb90884c43 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_MaterialToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_MaterialToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_MaterialToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_MaterialToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.cxx
index f3e5449134..3e3ccec86c 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_NoteBalloon.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_NoteBalloonDriver, XmlMXCAFDoc_NoteCommen
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteBalloonDriver::XmlMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_NoteBalloonDriver::XmlMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver)
   : XmlMXCAFDoc_NoteCommentDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBalloon)->Name())
 {
 }
@@ -44,7 +44,7 @@ Handle(TDF_Attribute) XmlMXCAFDoc_NoteBalloonDriver::NewEmpty() const
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteBalloonDriver::XmlMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+XmlMXCAFDoc_NoteBalloonDriver::XmlMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                              Standard_CString                 theName)
   : XmlMXCAFDoc_NoteCommentDriver(theMsgDriver, theName)
 {
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.hxx
index 9db95bc4e5..576c6c1725 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBalloonDriver.hxx
@@ -26,7 +26,7 @@ class XmlMXCAFDoc_NoteBalloonDriver : public XmlMXCAFDoc_NoteCommentDriver
 {
 public:
 
-  Standard_EXPORT XmlMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
@@ -34,7 +34,7 @@ public:
 
 protected:
 
-  XmlMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  XmlMXCAFDoc_NoteBalloonDriver(const Handle(Message_Messenger)& theMsgDriver,
                                 Standard_CString                 theName);
 
 };
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.cxx
index 7a0c9c413e..c7d64dd0d4 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_NoteBinData.hxx>
@@ -31,7 +31,7 @@ IMPLEMENT_DOMSTRING(Size, "size")
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteBinDataDriver::XmlMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_NoteBinDataDriver::XmlMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMsgDriver)
   : XmlMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBinData)->Name())
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.hxx
index cca07af0bb..c2d12f52ca 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteBinDataDriver.hxx
@@ -26,7 +26,7 @@ class XmlMXCAFDoc_NoteBinDataDriver : public XmlMXCAFDoc_NoteDriver
 {
 public:
 
-  Standard_EXPORT XmlMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_NoteBinDataDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.cxx
index b3e661e4e0..8acb765098 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_NoteComment.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_DOMSTRING(Comment, "comment")
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteCommentDriver::XmlMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_NoteCommentDriver::XmlMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver)
   : XmlMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteComment)->Name())
 {
 }
@@ -87,7 +87,7 @@ void XmlMXCAFDoc_NoteCommentDriver::Paste(const Handle(TDF_Attribute)& theSource
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteCommentDriver::XmlMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+XmlMXCAFDoc_NoteCommentDriver::XmlMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                              Standard_CString                 theName)
   : XmlMXCAFDoc_NoteDriver(theMsgDriver, theName)
 {
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.hxx
index dba66c6542..cfeaa74cc3 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteCommentDriver.hxx
@@ -26,7 +26,7 @@ class XmlMXCAFDoc_NoteCommentDriver : public XmlMXCAFDoc_NoteDriver
 {
 public:
 
-  Standard_EXPORT XmlMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMessageDriver);
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
 
@@ -42,7 +42,7 @@ public:
 
 protected:
 
-  XmlMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  XmlMXCAFDoc_NoteCommentDriver(const Handle(Message_Messenger)& theMsgDriver,
                                 Standard_CString                 theName);
 
 };
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.cxx
index 63b2b8d18b..450806e7e6 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Note.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_DOMSTRING(TimeStamp, "time_stamp")
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NoteDriver::XmlMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+XmlMXCAFDoc_NoteDriver::XmlMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver,
                                                Standard_CString                 theName)
   : XmlMDF_ADriver(theMsgDriver, theName)
 {
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.hxx
index 9dca3f7f48..3f8231b57f 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NoteDriver.hxx
@@ -24,7 +24,7 @@
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -48,7 +48,7 @@ public:
 
 protected:
 
-  XmlMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
+  XmlMXCAFDoc_NoteDriver(const Handle(Message_Messenger)& theMsgDriver,
                          Standard_CString                 theName);
 
 };
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.cxx
index dd946f5034..da17e47a05 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.cxx
@@ -13,7 +13,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_NotesTool.hxx>
@@ -26,7 +26,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_NotesToolDriver, XmlMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_NotesToolDriver::XmlMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_NotesToolDriver::XmlMXCAFDoc_NotesToolDriver(const Handle(Message_Messenger)& theMsgDriver)
   : XmlMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NotesTool)->Name())
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.hxx
index 6de16cbe54..6a242ab5c0 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_NotesToolDriver.hxx
@@ -24,7 +24,7 @@
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
 
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -36,7 +36,7 @@ class XmlMXCAFDoc_NotesToolDriver : public XmlMDF_ADriver
 {
 public:
   
-  Standard_EXPORT XmlMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_NotesToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.cxx
index d35651e99e..f56848dc82 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ShapeTool.hxx>
@@ -27,7 +27,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_ShapeToolDriver,XmlMDF_ADriver)
 //function :
 //purpose  : 
 //=======================================================================
-XmlMXCAFDoc_ShapeToolDriver::XmlMXCAFDoc_ShapeToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
+XmlMXCAFDoc_ShapeToolDriver::XmlMXCAFDoc_ShapeToolDriver(const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "ShapeTool")
 {
 }
@@ -45,8 +45,8 @@ Handle(TDF_Attribute) XmlMXCAFDoc_ShapeToolDriver::NewEmpty() const {
 //purpose  : 
 //=======================================================================
 Standard_Boolean XmlMXCAFDoc_ShapeToolDriver::Paste(const XmlObjMgt_Persistent& /*theSource*/,
-						    const Handle(TDF_Attribute)& /*theTarget*/,
-						    XmlObjMgt_RRelocationTable& /*theRelocTable*/) const
+                                                    const Handle(TDF_Attribute)& /*theTarget*/,
+                                                    XmlObjMgt_RRelocationTable& /*theRelocTable*/) const
 {
   return Standard_True;
 }
@@ -56,8 +56,8 @@ Standard_Boolean XmlMXCAFDoc_ShapeToolDriver::Paste(const XmlObjMgt_Persistent&
 //purpose  : 
 //=======================================================================
 void XmlMXCAFDoc_ShapeToolDriver::Paste(const Handle(TDF_Attribute)& /*theSource*/,
-					XmlObjMgt_Persistent& /*theTarget*/,
-					XmlObjMgt_SRelocationTable& /*theRelocTable*/) const
+                                        XmlObjMgt_Persistent& /*theTarget*/,
+                                        XmlObjMgt_SRelocationTable& /*theRelocTable*/) const
 {
 }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.hxx
index 9764434533..e728d49566 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ShapeToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_ShapeToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_ShapeToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_ShapeToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.cxx
index e8d23e7e17..d0eb1276fe 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_ViewTool.hxx>
@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_ViewToolDriver, XmlMDF_ADriver)
 //purpose  : 
 //=======================================================================
 XmlMXCAFDoc_ViewToolDriver::XmlMXCAFDoc_ViewToolDriver
-  (const Handle(CDM_MessageDriver)& theMsgDriver)
+  (const Handle(Message_Messenger)& theMsgDriver)
 : XmlMDF_ADriver (theMsgDriver, "xcaf", "ViewTool")
 {
 }
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.hxx
index 198fb693ea..a2be15e47f 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_ViewToolDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_ViewToolDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_ViewToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
+  Standard_EXPORT XmlMXCAFDoc_ViewToolDriver(const Handle(Message_Messenger)& theMsgDriver);
   
   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.cxx
index fc6825b1e4..f0e4843a84 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.cxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TDF_Attribute.hxx>
 #include <XCAFDoc_Volume.hxx>
@@ -29,7 +29,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_VolumeDriver,XmlMDF_ADriver)
 //purpose  : Constructor
 //=======================================================================
 XmlMXCAFDoc_VolumeDriver::XmlMXCAFDoc_VolumeDriver
-                        (const Handle(CDM_MessageDriver)& theMsgDriver)
+                        (const Handle(Message_Messenger)& theMsgDriver)
       : XmlMDF_ADriver (theMsgDriver, "xcaf", "Volume")
 {}
 
@@ -58,7 +58,7 @@ Standard_Boolean XmlMXCAFDoc_VolumeDriver::Paste
     TCollection_ExtendedString aMessageString =
       TCollection_ExtendedString("Cannot retrieve Volume attribute from \"")
         + aRealStr + "\"";
-    WriteMessage (aMessageString);
+    myMessageDriver->Send (aMessageString, Message_Fail);
     return Standard_False;
   }
 
diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.hxx
index 700aacc0bf..49b525e5af 100644
--- a/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.hxx
+++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_VolumeDriver.hxx
@@ -23,7 +23,7 @@
 #include <Standard_Boolean.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt_SRelocationTable.hxx>
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDF_Attribute;
 class XmlObjMgt_Persistent;
 
@@ -38,7 +38,7 @@ class XmlMXCAFDoc_VolumeDriver : public XmlMDF_ADriver
 public:
 
   
-  Standard_EXPORT XmlMXCAFDoc_VolumeDriver(const Handle(CDM_MessageDriver)& theMessageDriver);
+  Standard_EXPORT XmlMXCAFDoc_VolumeDriver(const Handle(Message_Messenger)& theMessageDriver);
   
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
   
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers.cxx b/src/XmlTObjDrivers/XmlTObjDrivers.cxx
index a546d8b6b7..cb4d813ccb 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers.cxx
@@ -74,7 +74,7 @@ void XmlTObjDrivers::DefineFormat (const Handle(TDocStd_Application)& theApp)
 //purpose  : 
 //=======================================================================
 void XmlTObjDrivers::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                                 const Handle(CDM_MessageDriver)&   anMsgDrv)
+                                 const Handle(Message_Messenger)&   anMsgDrv)
 {
   aDriverTable -> AddDriver (new XmlTObjDrivers_ModelDriver         (anMsgDrv));
   aDriverTable -> AddDriver (new XmlTObjDrivers_ObjectDriver        (anMsgDrv));
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers.hxx b/src/XmlTObjDrivers/XmlTObjDrivers.hxx
index 1189a72db3..af3d4b060f 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers.hxx
@@ -22,7 +22,7 @@
 #include <Standard_GUID.hxx>
 
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 class TDocStd_Application;
 
 //! Class for registering storage/retrieval drivers for TObj XML persistence
@@ -41,7 +41,7 @@ class XmlTObjDrivers
 
   Standard_EXPORT static void AddDrivers
                         (const Handle(XmlMDF_ADriverTable)& aDriverTable,
-                         const Handle(CDM_MessageDriver)& anMsgDrv);
+                         const Handle(Message_Messenger)& anMsgDrv);
 
 };
 
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.cxx
index 30c5111352..ec11f00c28 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.cxx
@@ -37,7 +37,7 @@ XmlTObjDrivers_DocumentRetrievalDriver::XmlTObjDrivers_DocumentRetrievalDriver()
 
 Handle(XmlMDF_ADriverTable)
         XmlTObjDrivers_DocumentRetrievalDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv) 
+                        (const Handle(Message_Messenger)& theMsgDrv) 
 {
   // Standard drivers
   Handle(XmlMDF_ADriverTable) aTable = XmlLDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.hxx
index e7f6dd19f5..43fb21757d 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentRetrievalDriver.hxx
@@ -36,7 +36,7 @@ class XmlTObjDrivers_DocumentRetrievalDriver :
   // Constructor
 
   Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+                        (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
  public:
   // Declaration of CASCADE RTTI
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.cxx
index c52096ca01..e079ce8391 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.cxx
@@ -39,7 +39,7 @@ XmlTObjDrivers_DocumentStorageDriver::XmlTObjDrivers_DocumentStorageDriver
 
 Handle(XmlMDF_ADriverTable)
         XmlTObjDrivers_DocumentStorageDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv)
+                        (const Handle(Message_Messenger)& theMsgDrv)
 {
   // Standard drivers
   Handle(XmlMDF_ADriverTable) aTable = XmlLDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.hxx
index 99df9f8d7b..544bb4d4dc 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_DocumentStorageDriver.hxx
@@ -37,7 +37,7 @@ class XmlTObjDrivers_DocumentStorageDriver :
   // Constructor
 
   Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+                        (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
  public:
   // Declaration of CASCADE RTTI
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.cxx
index 2f4ec63bfa..0600a2f3ed 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.cxx
@@ -16,7 +16,7 @@
 // The original implementation Copyright: (C) RINA S.p.A
 
 #include <XmlTObjDrivers_IntSparseArrayDriver.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Attribute.hxx>
 #include <XmlObjMgt_Persistent.hxx>
 #include <TObj_TIntSparseArray.hxx>
@@ -36,7 +36,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_IntSparseArrayDriver,XmlMDF_ADriver)
 //=======================================================================
 
 XmlTObjDrivers_IntSparseArrayDriver::XmlTObjDrivers_IntSparseArrayDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : XmlMDF_ADriver( theMessageDriver, NULL)
 {
 }
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.hxx
index 8f2e46066b..5b9dc4bb5d 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_IntSparseArrayDriver.hxx
@@ -27,7 +27,7 @@ class XmlTObjDrivers_IntSparseArrayDriver : public XmlMDF_ADriver
  public:
 
   Standard_EXPORT XmlTObjDrivers_IntSparseArrayDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.cxx
index cb3f6e6755..0734dadbbf 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.cxx
@@ -18,7 +18,7 @@
 
 #include "XmlTObjDrivers_ModelDriver.hxx"
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <XmlObjMgt_Persistent.hxx>
 #include <XmlObjMgt_RRelocationTable.hxx>
 #include <XmlObjMgt.hxx>
@@ -40,7 +40,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_ModelDriver,XmlMDF_ADriver)
 //=======================================================================
 
 XmlTObjDrivers_ModelDriver::XmlTObjDrivers_ModelDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : XmlMDF_ADriver( theMessageDriver, NULL)
 {
 }
@@ -81,10 +81,10 @@ Standard_Boolean XmlTObjDrivers_ModelDriver::Paste
       aTModel->Set( aCurrentModel );
       return Standard_True;
     }
-    WriteMessage("TObj_TModel retrieval: wrong model GUID");
+    myMessageDriver->Send("TObj_TModel retrieval: wrong model GUID", Message_Fail);
     return Standard_False;
   }
-  WriteMessage("error retrieving ExtendedString for type TObj_TModel");
+  myMessageDriver->Send("error retrieving ExtendedString for type TObj_TModel", Message_Fail);
   return Standard_False;
 }
 
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.hxx
index f98d7623c2..340e18fc54 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ModelDriver.hxx
@@ -27,7 +27,7 @@ class XmlTObjDrivers_ModelDriver : public XmlMDF_ADriver
  public:
 
   Standard_EXPORT XmlTObjDrivers_ModelDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.cxx
index 36ea7d4baa..eeb29b8f6e 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.cxx
@@ -16,7 +16,7 @@
 // The original implementation Copyright: (C) RINA S.p.A
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include "XmlTObjDrivers_ObjectDriver.hxx"
 #include <TObj_TObject.hxx>
 #include <TObj_Persistence.hxx>
@@ -35,7 +35,7 @@ IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_ObjectDriver,XmlMDF_ADriver)
 //=======================================================================
 
 XmlTObjDrivers_ObjectDriver::XmlTObjDrivers_ObjectDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : XmlMDF_ADriver( theMessageDriver, NULL)
 {
 }
@@ -71,7 +71,7 @@ Standard_Boolean XmlTObjDrivers_ObjectDriver::Paste
     Handle(TObj_TObject)::DownCast (Target) ->Set( anObject );
     return Standard_True;
   }
-  WriteMessage("error retrieving ExtendedString for type TObj_TModel");
+  myMessageDriver->Send("error retrieving ExtendedString for type TObj_TModel", Message_Fail);
   return Standard_False;
 }
 
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.hxx
index 279904a528..4a04cfb2a3 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ObjectDriver.hxx
@@ -28,7 +28,7 @@ class XmlTObjDrivers_ObjectDriver : public XmlMDF_ADriver
  public:
 
   Standard_EXPORT XmlTObjDrivers_ObjectDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.cxx
index bafc7547cc..cf2abb5b5a 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.cxx
@@ -18,7 +18,7 @@
 
 #include "XmlTObjDrivers_ReferenceDriver.hxx"
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Tool.hxx>
 #include <TDF_Attribute.hxx>
 
@@ -44,7 +44,7 @@ IMPLEMENT_DOMSTRING (ReferredModelEntry, "modelentry")
 //=======================================================================
 
 XmlTObjDrivers_ReferenceDriver::XmlTObjDrivers_ReferenceDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : XmlMDF_ADriver( theMessageDriver, NULL)
 {
 }
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.hxx
index ecbd14a519..11212786b1 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_ReferenceDriver.hxx
@@ -28,7 +28,7 @@ class XmlTObjDrivers_ReferenceDriver : public XmlMDF_ADriver
  public:
 
   Standard_EXPORT XmlTObjDrivers_ReferenceDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.cxx b/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.cxx
index 3a0c7d266f..1bee432dc5 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.cxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.cxx
@@ -18,7 +18,7 @@
 
 #include <XmlTObjDrivers_XYZDriver.hxx>
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <TDF_Attribute.hxx>
 
 #include <XmlObjMgt.hxx>
@@ -39,7 +39,7 @@ IMPLEMENT_DOMSTRING (CoordZ,             "Z")
 //=======================================================================
 
 XmlTObjDrivers_XYZDriver::XmlTObjDrivers_XYZDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver)
+                         (const Handle(Message_Messenger)& theMessageDriver)
 : XmlMDF_ADriver( theMessageDriver, NULL)
 {
 }
diff --git a/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.hxx b/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.hxx
index d289f5dbd7..6b276c3254 100644
--- a/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.hxx
+++ b/src/XmlTObjDrivers/XmlTObjDrivers_XYZDriver.hxx
@@ -28,7 +28,7 @@ class XmlTObjDrivers_XYZDriver : public XmlMDF_ADriver
  public:
 
   Standard_EXPORT XmlTObjDrivers_XYZDriver
-                         (const Handle(CDM_MessageDriver)& theMessageDriver);
+                         (const Handle(Message_Messenger)& theMessageDriver);
   // constructor
 
   Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
diff --git a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.cxx b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.cxx
index 5170fe42cc..62a1f212d3 100644
--- a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.cxx
+++ b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <XmlDrivers.hxx>
 #include <XmlMDF_ADriverTable.hxx>
@@ -37,7 +37,7 @@ XmlXCAFDrivers_DocumentRetrievalDriver::XmlXCAFDrivers_DocumentRetrievalDriver()
 //=======================================================================
 Handle(XmlMDF_ADriverTable)
         XmlXCAFDrivers_DocumentRetrievalDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv) 
+                        (const Handle(Message_Messenger)& theMsgDrv) 
 { 
   // Standard drivers
   Handle(XmlMDF_ADriverTable) aTable = XmlDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.hxx b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.hxx
index fa10b50b73..6dc1ef0c8e 100644
--- a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.hxx
+++ b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentRetrievalDriver.hxx
@@ -21,7 +21,7 @@
 
 #include <XmlDrivers_DocumentRetrievalDriver.hxx>
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class XmlXCAFDrivers_DocumentRetrievalDriver;
@@ -36,7 +36,7 @@ public:
   
   Standard_EXPORT XmlXCAFDrivers_DocumentRetrievalDriver();
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;
 
 
 
diff --git a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.cxx b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.cxx
index 2a58dc4266..18a9f589c2 100644
--- a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.cxx
+++ b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.cxx
@@ -14,7 +14,7 @@
 // commercial license or contractual agreement.
 
 
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
 #include <Standard_Type.hxx>
 #include <TCollection_ExtendedString.hxx>
 #include <XmlDrivers.hxx>
@@ -41,7 +41,7 @@ XmlXCAFDrivers_DocumentStorageDriver::XmlXCAFDrivers_DocumentStorageDriver
 //=======================================================================
 Handle(XmlMDF_ADriverTable)
         XmlXCAFDrivers_DocumentStorageDriver::AttributeDrivers
-                        (const Handle(CDM_MessageDriver)& theMsgDrv) 
+                        (const Handle(Message_Messenger)& theMsgDrv) 
 {
   // Standard drivers
   Handle(XmlMDF_ADriverTable) aTable = XmlDrivers::AttributeDrivers (theMsgDrv);
diff --git a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.hxx b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.hxx
index 7d0d992b38..826369c4b2 100644
--- a/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.hxx
+++ b/src/XmlXCAFDrivers/XmlXCAFDrivers_DocumentStorageDriver.hxx
@@ -22,7 +22,7 @@
 #include <XmlDrivers_DocumentStorageDriver.hxx>
 class TCollection_ExtendedString;
 class XmlMDF_ADriverTable;
-class CDM_MessageDriver;
+class Message_Messenger;
 
 
 class XmlXCAFDrivers_DocumentStorageDriver;
@@ -37,7 +37,7 @@ public:
   
   Standard_EXPORT XmlXCAFDrivers_DocumentStorageDriver(const TCollection_ExtendedString& theCopyright);
   
-  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(CDM_MessageDriver)& theMsgDriver) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers (const Handle(Message_Messenger)& theMsgDriver) Standard_OVERRIDE;