diff --git a/Database/APR/XMLCatalog/CMakeLists.txt b/Database/APR/XMLCatalog/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1b3affecab7ba3f4ed4fec1dcdd1609c84c70707
--- /dev/null
+++ b/Database/APR/XMLCatalog/CMakeLists.txt
@@ -0,0 +1,30 @@
+################################################################################
+# Package: XMLCatalog
+################################################################################
+
+# Declare the package name:
+atlas_subdir( XMLCatalog )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          Database/APR/FileCatalog
+                          GaudiKernel
+                          PRIVATE
+                          Database/PersistentDataModel
+                          TestPolicy )
+
+# External dependencies:
+find_package( CORAL COMPONENTS CoralBase CoralKernel RelationalAccess )
+find_package( CppUnit )
+find_package( XercesC )
+
+# Component(s) in the package:
+atlas_add_library( XMLCatalog
+                   src/*.cpp
+                   PUBLIC_HEADERS XMLCatalog
+                   PRIVATE_INCLUDE_DIRS ${XERCESC_INCLUDE_DIRS} ${CPPUNIT_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS}
+                   LINK_LIBRARIES FileCatalog GaudiKernel
+                   PRIVATE_LINK_LIBRARIES ${XERCESC_LIBRARIES} ${CPPUNIT_LIBRARIES} ${CORAL_LIBRARIES} PersistentDataModel )
+
+# Component list generation:
+atlas_generate_componentslist( XMLCatalog )
diff --git a/Database/APR/XMLCatalog/XMLCatalog/XMLFileCatalog.h b/Database/APR/XMLCatalog/XMLCatalog/XMLFileCatalog.h
index 7d79a8cc5f7b9e91102286a98003d9d99e57a303..b98f7d76f4c1ed626883a2b6aa10c14476ef0a8b 100755
--- a/Database/APR/XMLCatalog/XMLCatalog/XMLFileCatalog.h
+++ b/Database/APR/XMLCatalog/XMLCatalog/XMLFileCatalog.h
@@ -10,6 +10,7 @@
 #ifdef HAVE_GAUDI_PLUGINSVC
 #include "Gaudi/PluginService.h"
 #endif
+#include "GAUDI_VERSION.h"
 
 namespace pool { 
 
@@ -26,7 +27,11 @@ class XMLMetaDataCatalog;
 class XMLFileCatalog: public FCImpl{
  public:
 #ifdef HAVE_GAUDI_PLUGINSVC
-typedef Gaudi::PluginService::Factory0<FCImpl*> Factory;
+  #if GAUDI_VERSION > CALC_GAUDI_VERSION(25, 3) 
+    typedef Gaudi::PluginService::Factory<FCImpl*> Factory;
+  #else  
+    typedef Gaudi::PluginService::Factory0<FCImpl*> Factory;
+  #endif
 #endif
   /**Default constructor.
    */
diff --git a/Database/APR/XMLCatalog/XMLCatalog/XMLMetaDataCatalog.h b/Database/APR/XMLCatalog/XMLCatalog/XMLMetaDataCatalog.h
index 357c72f1799c47d6b099ff70b4e8ef47016c54c6..0513bb55d21153812380a46f069621c530565bd0 100755
--- a/Database/APR/XMLCatalog/XMLCatalog/XMLMetaDataCatalog.h
+++ b/Database/APR/XMLCatalog/XMLCatalog/XMLMetaDataCatalog.h
@@ -10,6 +10,7 @@
 #ifdef HAVE_GAUDI_PLUGINSVC
 #include "Gaudi/PluginService.h"
 #endif
+#include "GAUDI_VERSION.h"
 
 namespace pool {
 class FCImpl;
@@ -19,7 +20,11 @@ class XMLFileCatalog;
 class XMLMetaDataCatalog: public FCMetaImpl{
  public:
 #ifdef HAVE_GAUDI_PLUGINSVC
-typedef Gaudi::PluginService::Factory1<FCMetaImpl*, FCImpl*> Factory;
+  #if GAUDI_VERSION > CALC_GAUDI_VERSION(25, 3) 
+    typedef Gaudi::PluginService::Factory<FCMetaImpl*, FCImpl*> Factory;
+  #else  
+    typedef Gaudi::PluginService::Factory1<FCMetaImpl*, FCImpl*> Factory;
+  #endif
 #endif
 
   /// Defsult Constructor
diff --git a/Database/APR/XMLCatalog/src/DTDRedirect.cpp b/Database/APR/XMLCatalog/src/DTDRedirect.cpp
index d9f7a3251fb055a39553c502827134d3a3e0bd73..1f866285743860bea7e402387f6108972b1f713f 100755
--- a/Database/APR/XMLCatalog/src/DTDRedirect.cpp
+++ b/Database/APR/XMLCatalog/src/DTDRedirect.cpp
@@ -13,6 +13,8 @@
 #include <string>
 #include <iostream>
 
+using namespace xercesc;
+
 static const char* inmemdtd = "\
 <!ELEMENT POOLFILECATALOG (META*,File*)>\
 <!ELEMENT META EMPTY>\
diff --git a/Database/APR/XMLCatalog/src/DTDRedirect.h b/Database/APR/XMLCatalog/src/DTDRedirect.h
index 366d0e5779b4cb11ca291e226e015d53803b85b7..9c4b9f343b1bf21e3fe439a06dbc856a8ce22de7 100755
--- a/Database/APR/XMLCatalog/src/DTDRedirect.h
+++ b/Database/APR/XMLCatalog/src/DTDRedirect.h
@@ -8,14 +8,14 @@
 #include "xercesc/sax/EntityResolver.hpp"
 #include "xercesc/sax/InputSource.hpp"
 
-using namespace xercesc;
+//using namespace xercesc;
 
-class DTDRedirect : public EntityResolver
+class DTDRedirect : public xercesc::EntityResolver
 {
   public:
   DTDRedirect() {}
   ~DTDRedirect() {}
-  InputSource* resolveEntity
+  xercesc::InputSource* resolveEntity
     (
              const   XMLCh* const    publicId
              , const XMLCh* const    systemId
diff --git a/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.cpp b/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.cpp
index 5421269621992d1d963bba34934c3dc8eaa3ea0a..362e0f83d79ce30fca28bc865c982ba9559c2ea3 100755
--- a/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.cpp
+++ b/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.cpp
@@ -21,6 +21,8 @@
 #include <fstream>
 #include <stdexcept>
 
+using namespace xercesc;
+
 const std::string pool::PoolXMLFileCatalog::MainNode  = "POOLFILECATALOG";
 
 const std::string pool::PoolXMLFileCatalog::METANode        = "META";
@@ -1173,9 +1175,9 @@ pool::PoolXMLFileCatalog::getNode(const std::string& nodename,
         MyNode = mem_pfn[attrname];
         if (!MyNode) {
           // back compatibility with POOL_1_3_3
-          XMLCh* attr = pool::_toDOMS(attrname);
-          MyNode = doc->getElementById(attr);          
-          XMLString::release(&attr);
+          XMLCh* attr2 = pool::_toDOMS(attrname);
+          MyNode = doc->getElementById(attr2);          
+          XMLString::release(&attr2);
         }
       }
     }
diff --git a/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.h b/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.h
index aaba25777671b383b81e3421b68c29fc2cd2d37e..8cbeea93c560b7cafec8349acf14554fc3458646 100755
--- a/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.h
+++ b/Database/APR/XMLCatalog/src/PoolXMLFileCatalog.h
@@ -15,8 +15,6 @@
 #include "xercesc/dom/DOMNode.hpp"
 #include <xercesc/parsers/XercesDOMParser.hpp>
 
-using namespace xercesc;
-
 namespace pool {
 
 
@@ -257,6 +255,9 @@ namespace pool {
     std::string getfiletype(const std::string& pfn);
 
   private:
+    typedef xercesc::DOMNode DOMNode;
+    typedef xercesc::DOMDocument DOMDocument;
+    typedef xercesc::XercesDOMParser XercesDOMParser;
     DOMNode*   getNode(const std::string & nodename, 
 		       const std::string & attr,
 		       const std::string & attrname);
diff --git a/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.cpp b/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.cpp
index f8933e6ab480cbc45590dab8beabdb0bab1d7db7..528fca5551d69f670781ead5df286d1d91170e57 100755
--- a/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.cpp
+++ b/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.cpp
@@ -17,6 +17,8 @@
 #include <string>
 #include <stdexcept>
 
+using namespace xercesc;
+
 // Global streaming operator for DOMString is defined in DOMPrint.cpp
 //extern ostream& operator<<(ostream& target, const DOMString& s);
 
diff --git a/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.h b/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.h
index 34ae01ef5ef38b18d2d766102ef41f796826210d..a2df7c646c603931f6709cb47cf745954efba84c 100755
--- a/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.h
+++ b/Database/APR/XMLCatalog/src/XMLDOMErrorMessanger.h
@@ -6,11 +6,11 @@
 #include "xercesc/sax/ErrorHandler.hpp"
 #include <iostream>
 
-using namespace xercesc;
+//using namespace xercesc;
 
 namespace pool{
 
-class XMLDOMErrorMessanger : public ErrorHandler
+class XMLDOMErrorMessanger : public xercesc::ErrorHandler
 {
 public:
     // -----------------------------------------------------------------------
@@ -26,9 +26,9 @@ public:
     // -----------------------------------------------------------------------
     //  Implementation of the error handler interface
     // -----------------------------------------------------------------------
-    void warning(const SAXParseException& toCatch);
-    void error(const SAXParseException& toCatch);
-    void fatalError(const SAXParseException& toCatch);
+    void warning(const xercesc::SAXParseException& toCatch);
+    void error(const xercesc::SAXParseException& toCatch);
+    void fatalError(const xercesc::SAXParseException& toCatch);
     void resetErrors();
 
     // -----------------------------------------------------------------------