From 589a44423751610cc9a6c5b834906d96bde91865 Mon Sep 17 00:00:00 2001
From: Steven Murray <steven.murray@cern.ch>
Date: Mon, 4 Jul 2016 10:44:21 +0200
Subject: [PATCH] Split cta::catalogue into cta::catalogue and cta::rdbms

---
 CMakeLists.txt                                |   1 +
 catalogue/CMakeLists.txt                      |  29 +--
 catalogue/CatalogueFactory.cpp                |  10 +-
 catalogue/CatalogueFactory.hpp                |   4 +-
 catalogue/CatalogueFactoryTest.cpp            |   2 +-
 catalogue/CatalogueTest.hpp                   |   4 +-
 catalogue/DbConfigCatalogueTest.cpp           |   8 +-
 catalogue/InMemoryCatalogue.cpp               |   6 +-
 catalogue/InMemoryCatalogueTest.cpp           |   8 +-
 catalogue/OracleCatalogue.cpp                 |  22 +--
 catalogue/RdbmsCatalogue.cpp                  | 178 +++++++++---------
 catalogue/RdbmsCatalogue.hpp                  |   6 +-
 catalogue/SqliteCatalogue.cpp                 |  24 +--
 cta.spec.in                                   |   1 +
 {catalogue => rdbms}/AutoRollback.cpp         |   8 +-
 {catalogue => rdbms}/AutoRollback.hpp         |   4 +-
 rdbms/CMakeLists.txt                          |  51 +++++
 {catalogue => rdbms}/ColumnNameToIdx.cpp      |   6 +-
 {catalogue => rdbms}/ColumnNameToIdx.hpp      |   4 +-
 .../ColumnNameToIdxAndType.cpp                |   6 +-
 .../ColumnNameToIdxAndType.hpp                |   4 +-
 {catalogue => rdbms}/DbConn.cpp               |   6 +-
 {catalogue => rdbms}/DbConn.hpp               |   6 +-
 {catalogue => rdbms}/DbLogin.cpp              |   4 +-
 {catalogue => rdbms}/DbLogin.hpp              |   4 +-
 {catalogue => rdbms}/DbLoginFactory.cpp       |   6 +-
 {catalogue => rdbms}/DbLoginFactory.hpp       |   6 +-
 {catalogue => rdbms}/DbLoginTest.cpp          |  24 +--
 {catalogue => rdbms}/DbRset.cpp               |   8 +-
 {catalogue => rdbms}/DbRset.hpp               |   4 +-
 {catalogue => rdbms}/DbStmt.cpp               |   6 +-
 {catalogue => rdbms}/DbStmt.hpp               |   6 +-
 {catalogue => rdbms}/NullDbValue.cpp          |   6 +-
 {catalogue => rdbms}/NullDbValue.hpp          |   4 +-
 {catalogue => rdbms}/OcciConn.cpp             |  10 +-
 {catalogue => rdbms}/OcciConn.hpp             |   6 +-
 {catalogue => rdbms}/OcciEnv.cpp              |  10 +-
 {catalogue => rdbms}/OcciEnv.hpp              |   4 +-
 {catalogue => rdbms}/OcciEnvSingleton.cpp     |  12 +-
 {catalogue => rdbms}/OcciEnvSingleton.hpp     |   6 +-
 {catalogue => rdbms}/OcciRset.cpp             |  10 +-
 {catalogue => rdbms}/OcciRset.hpp             |   8 +-
 {catalogue => rdbms}/OcciStmt.cpp             |  10 +-
 {catalogue => rdbms}/OcciStmt.hpp             |   8 +-
 {catalogue => rdbms}/ParamNameToIdx.cpp       |   6 +-
 {catalogue => rdbms}/ParamNameToIdx.hpp       |   4 +-
 {catalogue => rdbms}/ParamNameToIdxTest.cpp   |  12 +-
 {catalogue => rdbms}/Sqlite.cpp               |  10 +-
 {catalogue => rdbms}/Sqlite.hpp               |   4 +-
 {catalogue => rdbms}/SqliteConn.cpp           |   8 +-
 {catalogue => rdbms}/SqliteConn.hpp           |   6 +-
 {catalogue => rdbms}/SqliteRset.cpp           |  12 +-
 {catalogue => rdbms}/SqliteRset.hpp           |   8 +-
 {catalogue => rdbms}/SqliteStmt.cpp           |  12 +-
 {catalogue => rdbms}/SqliteStmt.hpp           |   8 +-
 {catalogue => rdbms}/SqliteStmtTest.cpp       |  28 +--
 scheduler/SchedulerTest.cpp                   |   4 +-
 .../daemon/MigrationReportPackerTest.cpp      |   3 +-
 .../tape/tapeserver/daemon/ProcessForker.cpp  |   6 +-
 xroot_plugins/XrdCtaFilesystem.cpp            |   2 +-
 60 files changed, 365 insertions(+), 328 deletions(-)
 rename {catalogue => rdbms}/AutoRollback.cpp (93%)
 rename {catalogue => rdbms}/AutoRollback.hpp (97%)
 create mode 100644 rdbms/CMakeLists.txt
 rename {catalogue => rdbms}/ColumnNameToIdx.cpp (95%)
 rename {catalogue => rdbms}/ColumnNameToIdx.hpp (97%)
 rename {catalogue => rdbms}/ColumnNameToIdxAndType.cpp (95%)
 rename {catalogue => rdbms}/ColumnNameToIdxAndType.hpp (98%)
 rename {catalogue => rdbms}/DbConn.cpp (94%)
 rename {catalogue => rdbms}/DbConn.hpp (95%)
 rename {catalogue => rdbms}/DbLogin.cpp (99%)
 rename {catalogue => rdbms}/DbLogin.hpp (98%)
 rename {catalogue => rdbms}/DbLoginFactory.cpp (91%)
 rename {catalogue => rdbms}/DbLoginFactory.hpp (93%)
 rename {catalogue => rdbms}/DbLoginTest.cpp (88%)
 rename {catalogue => rdbms}/DbRset.cpp (94%)
 rename {catalogue => rdbms}/DbRset.hpp (98%)
 rename {catalogue => rdbms}/DbStmt.cpp (92%)
 rename {catalogue => rdbms}/DbStmt.hpp (96%)
 rename {catalogue => rdbms}/NullDbValue.cpp (92%)
 rename {catalogue => rdbms}/NullDbValue.hpp (96%)
 rename {catalogue => rdbms}/OcciConn.cpp (96%)
 rename {catalogue => rdbms}/OcciConn.hpp (96%)
 rename {catalogue => rdbms}/OcciEnv.cpp (95%)
 rename {catalogue => rdbms}/OcciEnv.hpp (97%)
 rename {catalogue => rdbms}/OcciEnvSingleton.cpp (91%)
 rename {catalogue => rdbms}/OcciEnvSingleton.hpp (95%)
 rename {catalogue => rdbms}/OcciRset.cpp (97%)
 rename {catalogue => rdbms}/OcciRset.hpp (96%)
 rename {catalogue => rdbms}/OcciStmt.cpp (97%)
 rename {catalogue => rdbms}/OcciStmt.hpp (96%)
 rename {catalogue => rdbms}/ParamNameToIdx.cpp (97%)
 rename {catalogue => rdbms}/ParamNameToIdx.hpp (97%)
 rename {catalogue => rdbms}/ParamNameToIdxTest.cpp (89%)
 rename {catalogue => rdbms}/Sqlite.cpp (95%)
 rename {catalogue => rdbms}/Sqlite.hpp (96%)
 rename {catalogue => rdbms}/SqliteConn.cpp (97%)
 rename {catalogue => rdbms}/SqliteConn.hpp (96%)
 rename {catalogue => rdbms}/SqliteRset.cpp (97%)
 rename {catalogue => rdbms}/SqliteRset.hpp (95%)
 rename {catalogue => rdbms}/SqliteStmt.cpp (96%)
 rename {catalogue => rdbms}/SqliteStmt.hpp (96%)
 rename {catalogue => rdbms}/SqliteStmtTest.cpp (91%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 42eb4f35f9..b881f0a2c5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -114,6 +114,7 @@ ELSE(DEFINED PackageOnly)
   add_subdirectory(cmdline)
   add_subdirectory(common)
   add_subdirectory(objectstore)
+  add_subdirectory(rdbms)
   add_subdirectory(remotens)
   add_subdirectory(scheduler)
   add_subdirectory(tapeserver)
diff --git a/catalogue/CMakeLists.txt b/catalogue/CMakeLists.txt
index 574c8c842b..14682ed2f7 100644
--- a/catalogue/CMakeLists.txt
+++ b/catalogue/CMakeLists.txt
@@ -23,32 +23,14 @@ include_directories (${ORACLE-INSTANTCLIENT_INCLUDE_DIRS})
 set (CATALOGUE_LIB_SRC_FILES
   ArchiveFileRow.cpp
   ArchiveFileItor.cpp
-  AutoRollback.cpp
   Catalogue.cpp
   CatalogueFactory.cpp
-  ColumnNameToIdx.cpp
-  ColumnNameToIdxAndType.cpp
-  DbConn.cpp
-  DbLogin.cpp
-  DbRset.cpp
-  DbStmt.cpp
   InMemoryCatalogue.cpp
   InMemoryCatalogueSchema.cpp
   TapeFileWritten.cpp
-  NullDbValue.cpp
-  OcciConn.cpp
-  OcciEnv.cpp
-  OcciEnvSingleton.cpp
-  OcciRset.cpp
-  OcciStmt.cpp
   OracleCatalogue.cpp
-  ParamNameToIdx.cpp
   RdbmsCatalogue.cpp
-  Sqlite.cpp
   SqliteCatalogue.cpp
-  SqliteConn.cpp
-  SqliteRset.cpp
-  SqliteStmt.cpp
   TapeForWriting.cpp
   UserError.cpp)
 
@@ -59,6 +41,7 @@ install (TARGETS ctacatalogue DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
 
 target_link_libraries (ctacatalogue
   ctacommon
+  ctardbms
   ${ORACLE-INSTANTCLIENT_LIBRARIES}
   ${SQLITE_LIBRARIES})
 
@@ -91,11 +74,11 @@ add_custom_command(OUTPUT InMemoryCatalogueSchema.cpp
 set(IN_MEMORY_CATALOGUE_UNIT_TESTS_LIB_SRC_FILES
   CatalogueTest.cpp
   CatalogueFactoryTest.cpp
-  DbLoginFactory.cpp
-  DbLoginTest.cpp
-  ParamNameToIdxTest.cpp
+  ../rdbms/DbLoginFactory.cpp
+  ../rdbms/DbLoginTest.cpp
+  ../rdbms/ParamNameToIdxTest.cpp
   InMemoryCatalogueTest.cpp
-  SqliteStmtTest.cpp)
+  ../rdbms/SqliteStmtTest.cpp)
 
 add_library (ctainmemorycatalogueunittests SHARED
   ${IN_MEMORY_CATALOGUE_UNIT_TESTS_LIB_SRC_FILES})
@@ -108,7 +91,7 @@ install(TARGETS ctainmemorycatalogueunittests DESTINATION usr/${CMAKE_INSTALL_LI
 set (CATALOGUE_UNIT_TESTS_LIB_SRC_FILES
   CatalogueTest.cpp
   DbConfigCatalogueTest.cpp
-  DbLoginFactory.cpp)
+  ../rdbms/DbLoginFactory.cpp)
 
 add_library (ctacatalogueunittests SHARED
   ${CATALOGUE_UNIT_TESTS_LIB_SRC_FILES})
diff --git a/catalogue/CatalogueFactory.cpp b/catalogue/CatalogueFactory.cpp
index 4becb42882..bd957c5e99 100644
--- a/catalogue/CatalogueFactory.cpp
+++ b/catalogue/CatalogueFactory.cpp
@@ -28,16 +28,16 @@ namespace catalogue {
 //------------------------------------------------------------------------------
 // create
 //------------------------------------------------------------------------------
-Catalogue *CatalogueFactory::create(const DbLogin &dbLogin) {
+Catalogue *CatalogueFactory::create(const rdbms::DbLogin &dbLogin) {
   try {
     switch(dbLogin.dbType) {
-    case DbLogin::DBTYPE_IN_MEMORY:
+    case rdbms::DbLogin::DBTYPE_IN_MEMORY:
       return new InMemoryCatalogue();
-    case DbLogin::DBTYPE_ORACLE:
+    case rdbms::DbLogin::DBTYPE_ORACLE:
       return new OracleCatalogue(dbLogin.username, dbLogin.password, dbLogin.database);
-    case DbLogin::DBTYPE_SQLITE:
+    case rdbms::DbLogin::DBTYPE_SQLITE:
       return new SqliteCatalogue(dbLogin.database);
-    case DbLogin::DBTYPE_NONE:
+    case rdbms::DbLogin::DBTYPE_NONE:
       throw exception::Exception("Cannot create a catalogue without a database type");
     default:
       {
diff --git a/catalogue/CatalogueFactory.hpp b/catalogue/CatalogueFactory.hpp
index 1b39be7b9a..609ca92e13 100644
--- a/catalogue/CatalogueFactory.hpp
+++ b/catalogue/CatalogueFactory.hpp
@@ -19,7 +19,7 @@
 #pragma once
 
 #include "catalogue/Catalogue.hpp"
-#include "catalogue/DbLogin.hpp"
+#include "rdbms/DbLogin.hpp"
 
 #include <memory>
 #include <mutex>
@@ -46,7 +46,7 @@ public:
    * @return The newly created CTA catalogue object.  Please note that it is the
    * responsibility of the caller to delete the returned CTA catalogue object.
    */
-  static Catalogue *create(const DbLogin &dbLogin);
+  static Catalogue *create(const rdbms::DbLogin &dbLogin);
 
 }; // class CatalogueFactory
 
diff --git a/catalogue/CatalogueFactoryTest.cpp b/catalogue/CatalogueFactoryTest.cpp
index 238d4dca84..d2a49cdb61 100644
--- a/catalogue/CatalogueFactoryTest.cpp
+++ b/catalogue/CatalogueFactoryTest.cpp
@@ -58,7 +58,7 @@ TEST_F(cta_catalogue_CatalogueFactoryTest, instance_in_memory) {
   using namespace cta;
   using namespace cta::catalogue;
 
-  DbLogin dbLogin(DbLogin::DBTYPE_IN_MEMORY, "", "", "");
+  rdbms::DbLogin dbLogin(rdbms::DbLogin::DBTYPE_IN_MEMORY, "", "", "");
   std::unique_ptr<Catalogue> catalogue(CatalogueFactory::create(dbLogin));
   ASSERT_TRUE(NULL != catalogue.get());
 
diff --git a/catalogue/CatalogueTest.hpp b/catalogue/CatalogueTest.hpp
index 6856ba2718..c0a3c068f1 100644
--- a/catalogue/CatalogueTest.hpp
+++ b/catalogue/CatalogueTest.hpp
@@ -20,9 +20,9 @@
 
 #include "catalogue/ArchiveFileRow.hpp"
 #include "catalogue/CatalogueFactory.hpp"
-#include "catalogue/DbLoginFactory.hpp"
 #include "catalogue/UserError.hpp"
 #include "common/exception/Exception.hpp"
+#include "rdbms/DbLoginFactory.hpp"
 
 #include <gtest/gtest.h>
 #include <map>
@@ -31,7 +31,7 @@
 
 namespace unitTests {
 
-class cta_catalogue_CatalogueTest : public ::testing::TestWithParam<cta::catalogue::DbLoginFactory*> {
+class cta_catalogue_CatalogueTest : public ::testing::TestWithParam<cta::rdbms::DbLoginFactory*> {
 public:
 
   /**
diff --git a/catalogue/DbConfigCatalogueTest.cpp b/catalogue/DbConfigCatalogueTest.cpp
index b3181c45f7..fe95d49d3c 100644
--- a/catalogue/DbConfigCatalogueTest.cpp
+++ b/catalogue/DbConfigCatalogueTest.cpp
@@ -26,7 +26,7 @@ namespace {
  * details are specified in a database configuration file passed on the
  * command-line to the catalogue unit-tests program.
  */
-class DbConfigFileLoginFactory: public cta::catalogue::DbLoginFactory {
+class DbConfigFileLoginFactory: public cta::rdbms::DbLoginFactory {
 public:
 
   /**
@@ -40,9 +40,9 @@ public:
    *
    * @return A newly created DbLogin object.
    */
-  virtual cta::catalogue::DbLogin create() {
+  virtual cta::rdbms::DbLogin create() {
     using namespace cta::catalogue;
-    return DbLogin::parseFile(g_cmdLineArgs.dbConfigPath);
+    return cta::rdbms::DbLogin::parseFile(g_cmdLineArgs.dbConfigPath);
   }
 }; // class OracleDbLoginFactory
 
@@ -53,6 +53,6 @@ DbConfigFileLoginFactory g_dbConfigLoginFactory;
 namespace unitTests {
 
 INSTANTIATE_TEST_CASE_P(DbConfigFile, cta_catalogue_CatalogueTest,
-  ::testing::Values(dynamic_cast<cta::catalogue::DbLoginFactory*>(&g_dbConfigLoginFactory)));
+  ::testing::Values(dynamic_cast<cta::rdbms::DbLoginFactory*>(&g_dbConfigLoginFactory)));
 
 } // namespace unitTests
diff --git a/catalogue/InMemoryCatalogue.cpp b/catalogue/InMemoryCatalogue.cpp
index fe334c3199..2afe62e9e0 100644
--- a/catalogue/InMemoryCatalogue.cpp
+++ b/catalogue/InMemoryCatalogue.cpp
@@ -18,7 +18,7 @@
 
 #include "catalogue/InMemoryCatalogue.hpp"
 #include "catalogue/RdbmsCatalogueSchema.hpp"
-#include "catalogue/SqliteConn.hpp"
+#include "rdbms/SqliteConn.hpp"
 
 namespace cta {
 namespace catalogue {
@@ -27,7 +27,7 @@ namespace catalogue {
 // constructor
 //------------------------------------------------------------------------------
 InMemoryCatalogue::InMemoryCatalogue() {
-  std::unique_ptr<SqliteConn> sqliteConn(new SqliteConn(":memory:"));
+  std::unique_ptr<rdbms::SqliteConn> sqliteConn(new rdbms::SqliteConn(":memory:"));
   m_conn.reset(sqliteConn.release());
   createCatalogueSchema();
 }
@@ -51,7 +51,7 @@ void InMemoryCatalogue::executeNonQueryMultiStmt(const std::string &multiStmt) {
     const std::string::size_type length = findResult - searchPos + 1;
     const std::string sql = multiStmt.substr(searchPos, length);
     searchPos = findResult + 1;
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->executeNonQuery();
   }
 }
diff --git a/catalogue/InMemoryCatalogueTest.cpp b/catalogue/InMemoryCatalogueTest.cpp
index 7234d88bbd..3108ea4a86 100644
--- a/catalogue/InMemoryCatalogueTest.cpp
+++ b/catalogue/InMemoryCatalogueTest.cpp
@@ -25,7 +25,7 @@ namespace {
 /**
  * Creates DbLogin objects for in-memory catalogue databases.
  */
-class InMemoryDbLoginFactory: public cta::catalogue::DbLoginFactory {
+class InMemoryDbLoginFactory: public cta::rdbms::DbLoginFactory {
 public:
 
   /**
@@ -39,9 +39,9 @@ public:
    *
    * @return A newly created DbLogin object.
    */
-  virtual cta::catalogue::DbLogin create() {
+  virtual cta::rdbms::DbLogin create() {
     using namespace cta::catalogue;
-    return DbLogin(DbLogin::DBTYPE_IN_MEMORY, "", "", "");
+    return cta::rdbms::DbLogin(cta::rdbms::DbLogin::DBTYPE_IN_MEMORY, "", "", "");
   }
 }; // class InMemoryDbLoginFactory
 
@@ -50,6 +50,6 @@ InMemoryDbLoginFactory g_inMemoryDbLoginFactory;
 } // anonymous namespace
 
 INSTANTIATE_TEST_CASE_P(InMemory, cta_catalogue_CatalogueTest,
-  ::testing::Values(dynamic_cast<cta::catalogue::DbLoginFactory*>(&g_inMemoryDbLoginFactory)));
+  ::testing::Values(dynamic_cast<cta::rdbms::DbLoginFactory*>(&g_inMemoryDbLoginFactory)));
 
 } // namespace unitTests
diff --git a/catalogue/OracleCatalogue.cpp b/catalogue/OracleCatalogue.cpp
index 0d3e49fbfd..b6892b470b 100644
--- a/catalogue/OracleCatalogue.cpp
+++ b/catalogue/OracleCatalogue.cpp
@@ -16,8 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/OcciConn.hpp"
-#include "catalogue/OcciEnvSingleton.hpp"
+#include "rdbms/OcciConn.hpp"
+#include "rdbms/OcciEnvSingleton.hpp"
 #include "catalogue/OracleCatalogue.hpp"
 #include "catalogue/UserError.hpp"
 #include "common/exception/Exception.hpp"
@@ -33,7 +33,7 @@ OracleCatalogue::OracleCatalogue(
   const std::string &username,
   const std::string &password,
   const std::string &database) {
-  m_conn.reset(OcciEnvSingleton::instance().createConn(username, password, database));
+  m_conn.reset(rdbms::OcciEnvSingleton::instance().createConn(username, password, database));
 }
 
 //------------------------------------------------------------------------------
@@ -77,9 +77,9 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(const uin
       "WHERE "
         "ARCHIVE_FILE.ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID "
       "FOR UPDATE";
-    std::unique_ptr<DbStmt> selectStmt(m_conn->createStmt(selectSql));
+    std::unique_ptr<rdbms::DbStmt> selectStmt(m_conn->createStmt(selectSql));
     selectStmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
-    std::unique_ptr<DbRset> selectRset(selectStmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> selectRset(selectStmt->executeQuery());
     while(selectRset->next()) {
       if(NULL == archiveFile.get()) {
         archiveFile.reset(new common::dataStructures::ArchiveFile);
@@ -121,14 +121,14 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(const uin
 
     {
       const char *const sql = "DELETE FROM TAPE_FILE WHERE ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID";
-      std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+      std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
       stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
       stmt->executeNonQuery();
     }
 
     {
       const char *const sql = "DELETE FROM ARCHIVE_FILE WHERE ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID";
-      std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+      std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
       stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
       stmt->executeNonQuery();
     }
@@ -154,8 +154,8 @@ uint64_t OracleCatalogue::getNextArchiveFileId() {
       "FROM "
         "DUAL";
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     if (!rset->next()) {
       throw exception::Exception(std::string("Result set is unexpectedly empty"));
     }
@@ -208,9 +208,9 @@ common::dataStructures::Tape OracleCatalogue::selectTapeForUpdate(const std::str
         "VID = :VID "
       "FOR UPDATE";
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":VID", vid);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     if (!rset->next()) {
       throw exception::Exception(std::string("The tape with VID " + vid + " does not exist"));
     }
diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp
index 14a65126a7..0321a3fd18 100644
--- a/catalogue/RdbmsCatalogue.cpp
+++ b/catalogue/RdbmsCatalogue.cpp
@@ -17,7 +17,7 @@
  */
 
 #include "catalogue/ArchiveFileRow.hpp"
-#include "catalogue/AutoRollback.hpp"
+#include "rdbms/AutoRollback.hpp"
 #include "catalogue/RdbmsCatalogue.hpp"
 #include "catalogue/RdbmsCatalogueSchema.hpp"
 #include "catalogue/UserError.hpp"
@@ -101,7 +101,7 @@ void RdbmsCatalogue::createAdminUser(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":ADMIN_USER_NAME", username);
 
@@ -135,9 +135,9 @@ bool RdbmsCatalogue::adminUserExists(const std::string adminUsername) const {
         "ADMIN_USER "
       "WHERE "
         "ADMIN_USER_NAME = :ADMIN_USER_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":ADMIN_USER_NAME", adminUsername);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -150,7 +150,7 @@ bool RdbmsCatalogue::adminUserExists(const std::string adminUsername) const {
 void RdbmsCatalogue::deleteAdminUser(const std::string &username) {
   try {
     const char *const sql = "DELETE FROM ADMIN_USER WHERE ADMIN_USER_NAME = :ADMIN_USER_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":ADMIN_USER_NAME", username);
     stmt->executeNonQuery();
 
@@ -186,8 +186,8 @@ RdbmsCatalogue::getAdminUsers() const {
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "ADMIN_USER";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::AdminUser admin;
 
@@ -255,7 +255,7 @@ void RdbmsCatalogue::createAdminHost(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":ADMIN_HOST_NAME", hostName);
 
@@ -289,9 +289,9 @@ bool RdbmsCatalogue::adminHostExists(const std::string adminHost) const {
         "ADMIN_HOST "
       "WHERE "
         "ADMIN_HOST_NAME = :ADMIN_HOST_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":ADMIN_HOST_NAME", adminHost);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -304,7 +304,7 @@ bool RdbmsCatalogue::adminHostExists(const std::string adminHost) const {
 void RdbmsCatalogue::deleteAdminHost(const std::string &hostName) {
   try {
     const char *const sql = "DELETE FROM ADMIN_HOST WHERE ADMIN_HOST_NAME = :ADMIN_HOST_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":ADMIN_HOST_NAME", hostName);
     stmt->executeNonQuery();
 
@@ -339,8 +339,8 @@ std::list<common::dataStructures::AdminHost> RdbmsCatalogue::getAdminHosts() con
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "ADMIN_HOST";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::AdminHost host;
 
@@ -411,7 +411,7 @@ void RdbmsCatalogue::createStorageClass(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":STORAGE_CLASS_NAME", name);
     stmt->bindUint64(":NB_COPIES", nbCopies);
@@ -446,9 +446,9 @@ bool RdbmsCatalogue::storageClassExists(const std::string &storageClassName) con
         "STORAGE_CLASS "
       "WHERE "
         "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":STORAGE_CLASS_NAME", storageClassName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -465,7 +465,7 @@ void RdbmsCatalogue::deleteStorageClass(const std::string &name) {
         "STORAGE_CLASS "
       "WHERE "
         "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":STORAGE_CLASS_NAME", name);
 
@@ -503,8 +503,8 @@ std::list<common::dataStructures::StorageClass>
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "STORAGE_CLASS";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::StorageClass storageClass;
 
@@ -585,7 +585,7 @@ void RdbmsCatalogue::createTapePool(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":TAPE_POOL_NAME", name);
     stmt->bindUint64(":NB_PARTIAL_TAPES", nbPartialTapes);
@@ -621,9 +621,9 @@ bool RdbmsCatalogue::tapePoolExists(const std::string &tapePoolName) const {
         "TAPE_POOL "
       "WHERE "
         "TAPE_POOL_NAME = :TAPE_POOL_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":TAPE_POOL_NAME", tapePoolName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -636,7 +636,7 @@ bool RdbmsCatalogue::tapePoolExists(const std::string &tapePoolName) const {
 void RdbmsCatalogue::deleteTapePool(const std::string &name) {
   try {
     const char *const sql = "DELETE FROM TAPE_POOL WHERE TAPE_POOL_NAME = :TAPE_POOL_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":TAPE_POOL_NAME", name);
     stmt->executeNonQuery();
 
@@ -673,8 +673,8 @@ std::list<common::dataStructures::TapePool> RdbmsCatalogue::getTapePools() const
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "TAPE_POOL";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::TapePool pool;
 
@@ -759,7 +759,7 @@ void RdbmsCatalogue::createArchiveRoute(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":STORAGE_CLASS_NAME", storageClassName);
     stmt->bindUint64(":COPY_NB", copyNb);
@@ -792,7 +792,7 @@ void RdbmsCatalogue::deleteArchiveRoute(const std::string &storageClassName, con
       "WHERE "
         "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME AND "
         "COPY_NB = :COPY_NB";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":STORAGE_CLASS_NAME", storageClassName);
     stmt->bindUint64(":COPY_NB", copyNb);
     stmt->executeNonQuery();
@@ -834,8 +834,8 @@ std::list<common::dataStructures::ArchiveRoute>
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "ARCHIVE_ROUTE";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::ArchiveRoute route;
 
@@ -911,7 +911,7 @@ void RdbmsCatalogue::createLogicalLibrary(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":LOGICAL_LIBRARY_NAME", name);
 
@@ -945,9 +945,9 @@ bool RdbmsCatalogue::logicalLibraryExists(const std::string &logicalLibraryName)
         "LOGICAL_LIBRARY "
       "WHERE "
         "LOGICAL_LIBRARY_NAME = :LOGICAL_LIBRARY_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":LOGICAL_LIBRARY_NAME", logicalLibraryName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -960,7 +960,7 @@ bool RdbmsCatalogue::logicalLibraryExists(const std::string &logicalLibraryName)
 void RdbmsCatalogue::deleteLogicalLibrary(const std::string &name) {
   try {
     const char *const sql = "DELETE FROM LOGICAL_LIBRARY WHERE LOGICAL_LIBRARY_NAME = :LOGICAL_LIBRARY_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":LOGICAL_LIBRARY_NAME", name);
     stmt->executeNonQuery();
 
@@ -996,8 +996,8 @@ std::list<common::dataStructures::LogicalLibrary>
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "LOGICAL_LIBRARY";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::LogicalLibrary lib;
 
@@ -1088,7 +1088,7 @@ void RdbmsCatalogue::createTape(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":VID", vid);
     stmt->bindString(":LOGICAL_LIBRARY_NAME", logicalLibraryName);
@@ -1131,9 +1131,9 @@ bool RdbmsCatalogue::tapeExists(const std::string &vid) const {
         "TAPE "
       "WHERE "
         "VID = :VID";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":VID", vid);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -1146,7 +1146,7 @@ bool RdbmsCatalogue::tapeExists(const std::string &vid) const {
 void RdbmsCatalogue::deleteTape(const std::string &vid) {
   try {
     const char *const sql = "DELETE FROM TAPE WHERE VID = :VID";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":VID", vid);
     stmt->executeNonQuery();
 
@@ -1246,7 +1246,7 @@ std::list<common::dataStructures::Tape> RdbmsCatalogue::getTapes(const TapeSearc
       sql += " LBP_IS_ON = :LBP_IS_ON";
     }
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     if(searchCriteria.vid) stmt->bindString(":VID", searchCriteria.vid.value());
     if(searchCriteria.logicalLibrary) stmt->bindString(":LOGICAL_LIBRARY_NAME", searchCriteria.logicalLibrary.value());
@@ -1256,7 +1256,7 @@ std::list<common::dataStructures::Tape> RdbmsCatalogue::getTapes(const TapeSearc
     if(searchCriteria.full) stmt->bindUint64(":IS_FULL", searchCriteria.full.value() ? 1 : 0);
     if(searchCriteria.lbp) stmt->bindUint64(":LBP_IS_ON", searchCriteria.lbp.value() ? 1 : 0);
 
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::Tape tape;
 
@@ -1295,7 +1295,7 @@ std::list<common::dataStructures::Tape> RdbmsCatalogue::getTapes(const TapeSearc
 //------------------------------------------------------------------------------
 // getTapeLogFromRset
 //------------------------------------------------------------------------------
-optional<common::dataStructures::TapeLog> RdbmsCatalogue::getTapeLogFromRset(const DbRset &rset,
+optional<common::dataStructures::TapeLog> RdbmsCatalogue::getTapeLogFromRset(const rdbms::DbRset &rset,
   const std::string &driveColName, const std::string &timeColName) const {
   try {
     const optional<std::string> drive = rset.columnOptionalText(driveColName);
@@ -1503,7 +1503,7 @@ void RdbmsCatalogue::createMountPolicy(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":MOUNT_POLICY_NAME", name);
 
@@ -1580,7 +1580,7 @@ void RdbmsCatalogue::createRequesterMountRule(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":REQUESTER_NAME", requesterName);
     stmt->bindString(":MOUNT_POLICY_NAME", mountPolicyName);
@@ -1625,8 +1625,8 @@ std::list<common::dataStructures::RequesterMountRule> RdbmsCatalogue::getRequest
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "REQUESTER_MOUNT_RULE";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while(rset->next()) {
       common::dataStructures::RequesterMountRule rule;
 
@@ -1655,7 +1655,7 @@ std::list<common::dataStructures::RequesterMountRule> RdbmsCatalogue::getRequest
 void RdbmsCatalogue::deleteRequesterMountRule(const std::string &requesterName) {
   try {
     const char *const sql = "DELETE FROM REQUESTER_MOUNT_RULE WHERE REQUESTER_NAME = :REQUESTER_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_NAME", requesterName);
     stmt->executeNonQuery();
 
@@ -1717,7 +1717,7 @@ void RdbmsCatalogue::createRequesterGroupMountRule(
         ":LAST_UPDATE_USER_NAME,"
         ":LAST_UPDATE_HOST_NAME,"
         ":LAST_UPDATE_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":REQUESTER_GROUP_NAME", requesterGroupName);
     stmt->bindString(":MOUNT_POLICY_NAME", mountPolicyName);
@@ -1775,9 +1775,9 @@ common::dataStructures::MountPolicy *RdbmsCatalogue::getRequesterGroupMountPolic
         "MOUNT_POLICY.MOUNT_POLICY_NAME = REQUESTER_GROUP_MOUNT_RULE.MOUNT_POLICY_NAME "
       "WHERE "
         "REQUESTER_GROUP_MOUNT_RULE.REQUESTER_GROUP_NAME = :REQUESTER_GROUP_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_GROUP_NAME", requesterGroupName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     if(rset->next()) {
       std::unique_ptr<common::dataStructures::MountPolicy> policy(new common::dataStructures::MountPolicy);
 
@@ -1830,8 +1830,8 @@ std::list<common::dataStructures::RequesterGroupMountRule> RdbmsCatalogue::getRe
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "REQUESTER_GROUP_MOUNT_RULE";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while(rset->next()) {
       common::dataStructures::RequesterGroupMountRule rule;
 
@@ -1862,7 +1862,7 @@ void RdbmsCatalogue::deleteRequesterGroupMountRule(const std::string &requesterG
   try {
     const char *const sql =
       "DELETE FROM REQUESTER_GROUP_MOUNT_RULE WHERE REQUESTER_GROUP_NAME = :REQUESTER_GROUP_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_GROUP_NAME", requesterGroupName);
     stmt->executeNonQuery();
 
@@ -1889,9 +1889,9 @@ bool RdbmsCatalogue::mountPolicyExists(const std::string &mountPolicyName) const
         "MOUNT_POLICY "
       "WHERE "
         "MOUNT_POLICY_NAME = :MOUNT_POLICY_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":MOUNT_POLICY_NAME", mountPolicyName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -1910,9 +1910,9 @@ bool RdbmsCatalogue::requesterExists(const std::string &requesterName) const {
         "REQUESTER_MOUNT_RULE "
       "WHERE "
         "REQUESTER_NAME = :REQUESTER_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_NAME", requesterName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -1953,9 +1953,9 @@ common::dataStructures::MountPolicy *RdbmsCatalogue::getRequesterMountPolicy(con
         "MOUNT_POLICY.MOUNT_POLICY_NAME = REQUESTER_MOUNT_RULE.MOUNT_POLICY_NAME "
       "WHERE "
         "REQUESTER_MOUNT_RULE.REQUESTER_NAME = :REQUESTER_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_NAME", requesterName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     if(rset->next()) {
       std::unique_ptr<common::dataStructures::MountPolicy> policy(new common::dataStructures::MountPolicy);
 
@@ -2001,9 +2001,9 @@ bool RdbmsCatalogue::requesterGroupExists(const std::string &requesterGroupName)
         "REQUESTER_GROUP_MOUNT_RULE "
       "WHERE "
         "REQUESTER_GROUP_NAME = :REQUESTER_GROUP_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_GROUP_NAME", requesterGroupName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     return rset->next();
   } catch (exception::Exception &ex) {
     throw exception::Exception(std::string(__FUNCTION__) + " failed: " + ex.getMessage().str());
@@ -2016,7 +2016,7 @@ bool RdbmsCatalogue::requesterGroupExists(const std::string &requesterGroupName)
 void RdbmsCatalogue::deleteMountPolicy(const std::string &name) {
   try {
     const char *const sql = "DELETE FROM MOUNT_POLICY WHERE MOUNT_POLICY_NAME = :MOUNT_POLICY_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":MOUNT_POLICY_NAME", name);
     stmt->executeNonQuery();
 
@@ -2060,8 +2060,8 @@ std::list<common::dataStructures::MountPolicy>
         "LAST_UPDATE_TIME AS LAST_UPDATE_TIME "
       "FROM "
         "MOUNT_POLICY";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       common::dataStructures::MountPolicy policy;
 
@@ -2263,7 +2263,7 @@ void RdbmsCatalogue::insertArchiveFile(const ArchiveFileRow &row) {
         ":STORAGE_CLASS_NAME,"
         ":CREATION_TIME,"
         ":RECONCILIATION_TIME)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindUint64(":ARCHIVE_FILE_ID", row.archiveFileId);
     stmt->bindString(":DISK_INSTANCE", row.diskInstance);
@@ -2434,7 +2434,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
     }
     sql += " ORDER BY ARCHIVE_FILE.ARCHIVE_FILE_ID, TAPE_FILE.COPY_NB";
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindUint64(":STARTING_ARCHIVE_FILE_ID", startingArchiveFileId);
     if(searchCriteria.archiveFileId) {
       stmt->bindUint64(":ARCHIVE_FILE_ID", searchCriteria.archiveFileId.value());
@@ -2466,7 +2466,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
     if(searchCriteria.tapePool) {
       stmt->bindString(":TAPE_POOL_NAME", searchCriteria.tapePool.value());
     }
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     std::list<common::dataStructures::ArchiveFile> archiveFiles;
     while (rset->next() && archiveFiles.size() < maxNbArchiveFiles ) {
       const uint64_t archiveFileId = rset->columnUint64("ARCHIVE_FILE_ID");
@@ -2606,9 +2606,9 @@ common::dataStructures::TapeCopyToPoolMap RdbmsCatalogue::
         "ARCHIVE_ROUTE "
       "WHERE "
         "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":STORAGE_CLASS_NAME", storageClass);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       const uint64_t copyNb = rset->columnUint64("COPY_NB");
       const std::string tapePoolName = rset->columnText("TAPE_POOL_NAME");
@@ -2634,9 +2634,9 @@ uint64_t RdbmsCatalogue::getExpectedNbArchiveRoutes(const std::string &storageCl
         "ARCHIVE_ROUTE "
       "WHERE "
         "STORAGE_CLASS_NAME = :STORAGE_CLASS_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":STORAGE_CLASS_NAME", storageClass);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       nbRoutes = rset->columnUint64("NB_ROUTES");
     }
@@ -2667,7 +2667,7 @@ void RdbmsCatalogue::fileWrittenToTape(const TapeFileWritten &event) {
     std::lock_guard<std::mutex> m_lock(m_mutex);
 
     const common::dataStructures::Tape tape = selectTapeForUpdate(event.vid);
-    AutoRollback autoRollback(m_conn.get());
+    rdbms::AutoRollback autoRollback(m_conn.get());
 
     const uint64_t expectedFSeq = tape.lastFSeq + 1;
     if(expectedFSeq != event.fSeq) {
@@ -2731,7 +2731,7 @@ void RdbmsCatalogue::updateTape(const TapeFileWritten &event) {
         "LAST_WRITE_TIME = :LAST_WRITE_TIME "
       "WHERE "
         "VID=:VID";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":VID", event.vid);
     stmt->bindUint64(":LAST_FSEQ", event.fSeq);
     stmt->bindUint64(":DATA_IN_BYTES", event.compressedSize);
@@ -2847,9 +2847,9 @@ std::map<uint64_t, common::dataStructures::TapeFile> RdbmsCatalogue::getTapeFile
         "TAPE_FILE "
       "WHERE "
         "TAPE_FILE.ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     std::unique_ptr<common::dataStructures::ArchiveFile> archiveFile;
     while (rset->next()) {
       common::dataStructures::TapeFile tapeFile;
@@ -2927,10 +2927,10 @@ RequesterAndGroupMountPolicies RdbmsCatalogue::getMountPolicies(const std::strin
       "WHERE "
         "REQUESTER_GROUP_MOUNT_RULE.REQUESTER_GROUP_NAME = :REQUESTER_GROUP_NAME";
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":REQUESTER_NAME", requesterName);
     stmt->bindString(":REQUESTER_GROUP_NAME", requesterGroupName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
 
     RequesterAndGroupMountPolicies policies;
     while(rset->next()) {
@@ -2981,9 +2981,9 @@ bool RdbmsCatalogue::userIsAdmin(const std::string &userName) const {
       "ADMIN_USER "
     "WHERE "
       "ADMIN_USER_NAME = :ADMIN_USER_NAME";
-  std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+  std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
   stmt->bindString(":ADMIN_USER_NAME", userName);
-  std::unique_ptr<DbRset> rset(stmt->executeQuery());
+  std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
   return rset->next();
 }
 
@@ -2998,9 +2998,9 @@ bool RdbmsCatalogue::hostIsAdmin(const std::string &hostName) const {
       "ADMIN_HOST "
     "WHERE "
       "ADMIN_HOST_NAME = :ADMIN_HOST_NAME";
-  std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+  std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
   stmt->bindString(":ADMIN_HOST_NAME", hostName);
-  std::unique_ptr<DbRset> rset(stmt->executeQuery());
+  std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
   return rset->next();
 }
 
@@ -3024,9 +3024,9 @@ std::list<TapeForWriting> RdbmsCatalogue::getTapesForWriting(const std::string &
         "IS_DISABLED = 0 AND "
         "IS_FULL = 0 AND "
         "LOGICAL_LIBRARY_NAME = :LOGICAL_LIBRARY_NAME";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":LOGICAL_LIBRARY_NAME", logicalLibraryName);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     while (rset->next()) {
       TapeForWriting tape;
 
@@ -3069,7 +3069,7 @@ void RdbmsCatalogue::insertTapeFile(const common::dataStructures::TapeFile &tape
         ":COPY_NB,"
         ":CREATION_TIME,"
         ":ARCHIVE_FILE_ID)";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
 
     stmt->bindString(":VID", tapeFile.vid);
     stmt->bindUint64(":FSEQ", tapeFile.fSeq);
@@ -3103,7 +3103,7 @@ void RdbmsCatalogue::setTapeLastFSeq(const std::string &vid, const uint64_t last
       "LAST_FSEQ = :LAST_FSEQ "
     "WHERE "
       "VID=:VID";
-  std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+  std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
   stmt->bindString(":VID", vid);
   stmt->bindUint64(":LAST_FSEQ", lastFSeq);
   stmt->executeNonQuery();
@@ -3120,9 +3120,9 @@ uint64_t RdbmsCatalogue::getTapeLastFSeq(const std::string &vid) const {
       "TAPE "
     "WHERE "
       "VID = :VID";
-  std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+  std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
   stmt->bindString(":VID", vid);
-  std::unique_ptr<DbRset> rset(stmt->executeQuery());
+  std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
   if(rset->next()) {
     return rset->columnUint64("LAST_FSEQ");
   } else {
@@ -3165,9 +3165,9 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF
           "ARCHIVE_FILE.ARCHIVE_FILE_ID = TAPE_FILE.ARCHIVE_FILE_ID "
       "WHERE "
         "ARCHIVE_FILE.ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID";
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     std::unique_ptr<common::dataStructures::ArchiveFile> archiveFile;
     while (rset->next()) {
       if(NULL == archiveFile.get()) {
diff --git a/catalogue/RdbmsCatalogue.hpp b/catalogue/RdbmsCatalogue.hpp
index 3abfd8349d..9fb9fbeff9 100644
--- a/catalogue/RdbmsCatalogue.hpp
+++ b/catalogue/RdbmsCatalogue.hpp
@@ -19,7 +19,7 @@
 #pragma once
 
 #include "catalogue/Catalogue.hpp"
-#include "catalogue/DbConn.hpp"
+#include "rdbms/DbConn.hpp"
 #include "catalogue/RequesterAndGroupMountPolicies.hpp"
 
 #include <memory>
@@ -460,7 +460,7 @@ protected:
    * @param timeColNAme The name of the database column that contains the time
    * stamp.
    */
-  optional<common::dataStructures::TapeLog> getTapeLogFromRset(const DbRset &rset,
+  optional<common::dataStructures::TapeLog> getTapeLogFromRset(const rdbms::DbRset &rset,
     const std::string &driveColName, const std::string &timeColName) const;
 
   /**
@@ -479,7 +479,7 @@ protected:
   /**
    * The connection to the underlying relational database.
    */
-  std::unique_ptr<DbConn> m_conn;
+  std::unique_ptr<rdbms::DbConn> m_conn;
 
   /**
    * Creates the database schema.
diff --git a/catalogue/SqliteCatalogue.cpp b/catalogue/SqliteCatalogue.cpp
index db77b839ce..8dd519fdf6 100644
--- a/catalogue/SqliteCatalogue.cpp
+++ b/catalogue/SqliteCatalogue.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/AutoRollback.hpp"
+#include "rdbms/AutoRollback.hpp"
 #include "catalogue/RdbmsCatalogueSchema.hpp"
 #include "catalogue/SqliteCatalogue.hpp"
-#include "catalogue/SqliteConn.hpp"
+#include "rdbms/SqliteConn.hpp"
 #include "catalogue/UserError.hpp"
 #include "common/exception/Exception.hpp"
 #include "common/utils/utils.hpp"
@@ -31,7 +31,7 @@ namespace catalogue {
 // constructor
 //------------------------------------------------------------------------------
 SqliteCatalogue::SqliteCatalogue(const std::string &filename) {
-  std::unique_ptr<SqliteConn> sqliteConn(new SqliteConn(filename));
+  std::unique_ptr<rdbms::SqliteConn> sqliteConn(new rdbms::SqliteConn(filename));
   m_conn.reset(sqliteConn.release());
 }
 
@@ -82,9 +82,9 @@ common::dataStructures::ArchiveFile SqliteCatalogue::deleteArchiveFile(const uin
         "ARCHIVE_FILE.ARCHIVE_FILE_ID = TAPE_FILE.ARCHIVE_FILE_ID "
       "WHERE "
         "ARCHIVE_FILE.ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID";
-    std::unique_ptr<DbStmt> selectStmt(m_conn->createStmt(selectSql));
+    std::unique_ptr<rdbms::DbStmt> selectStmt(m_conn->createStmt(selectSql));
     selectStmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
-    std::unique_ptr<DbRset> selectRset(selectStmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> selectRset(selectStmt->executeQuery());
     while(selectRset->next()) {
       if(NULL == archiveFile.get()) {
         archiveFile.reset(new common::dataStructures::ArchiveFile);
@@ -126,14 +126,14 @@ common::dataStructures::ArchiveFile SqliteCatalogue::deleteArchiveFile(const uin
 
     {
       const char *const sql = "DELETE FROM TAPE_FILE WHERE ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID;";
-      std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+      std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
       stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
       stmt->executeNonQuery();
     }
 
     {
       const char *const sql = "DELETE FROM ARCHIVE_FILE WHERE ARCHIVE_FILE_ID = :ARCHIVE_FILE_ID;";
-      std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+      std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
       stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
       stmt->executeNonQuery();
     }
@@ -154,7 +154,7 @@ common::dataStructures::ArchiveFile SqliteCatalogue::deleteArchiveFile(const uin
 uint64_t SqliteCatalogue::getNextArchiveFileId() {
   try {
     m_conn->executeNonQuery("BEGIN EXCLUSIVE;");
-    AutoRollback autoRollback(m_conn.get());
+    rdbms::AutoRollback autoRollback(m_conn.get());
 
     m_conn->executeNonQuery("UPDATE ARCHIVE_FILE_ID SET ID = ID + 1;");
     uint64_t archiveFileId = 0;
@@ -164,8 +164,8 @@ uint64_t SqliteCatalogue::getNextArchiveFileId() {
           "ID AS ID "
         "FROM "
           "ARCHIVE_FILE_ID";
-      std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
-      std::unique_ptr<DbRset> rset(stmt->executeQuery());
+      std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
+      std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
       if(!rset->next()) {
         throw exception::Exception("ARCHIVE_FILE_ID table is empty");
       }
@@ -227,9 +227,9 @@ common::dataStructures::Tape SqliteCatalogue::selectTapeForUpdate(const std::str
       "WHERE "
         "VID = :VID;";
 
-    std::unique_ptr<DbStmt> stmt(m_conn->createStmt(sql));
+    std::unique_ptr<rdbms::DbStmt> stmt(m_conn->createStmt(sql));
     stmt->bindString(":VID", vid);
-    std::unique_ptr<DbRset> rset(stmt->executeQuery());
+    std::unique_ptr<rdbms::DbRset> rset(stmt->executeQuery());
     if (!rset->next()) {
       throw exception::Exception(std::string("The tape with VID " + vid + " does not exist"));
     }
diff --git a/cta.spec.in b/cta.spec.in
index 6e1fa9aefd..145d740c95 100644
--- a/cta.spec.in
+++ b/cta.spec.in
@@ -129,6 +129,7 @@ The shared libraries
 %attr(0755,root,root) %{_libdir}/libctamediachangerutils.so
 %attr(0755,root,root) %{_libdir}/libctamessages.so
 %attr(0755,root,root) %{_libdir}/libctamessagesutils.so
+%attr(0755,root,root) %{_libdir}/libctardbms.so
 %attr(0755,root,root) %{_libdir}/libctatapereactorutils.so
 %attr(0755,root,root) %{_libdir}/libctatapeserverdaemonutils.so
 %attr(0644,root,root) %{_sysconfdir}/cta/cta_catalogue_db.conf.example
diff --git a/catalogue/AutoRollback.cpp b/rdbms/AutoRollback.cpp
similarity index 93%
rename from catalogue/AutoRollback.cpp
rename to rdbms/AutoRollback.cpp
index 943c509df6..2f886c9776 100644
--- a/catalogue/AutoRollback.cpp
+++ b/rdbms/AutoRollback.cpp
@@ -16,12 +16,12 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/AutoRollback.hpp"
-#include "catalogue/DbConn.hpp"
+#include "AutoRollback.hpp"
+#include "DbConn.hpp"
 #include "common/exception/Exception.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -49,5 +49,5 @@ void AutoRollback::cancel() {
   m_dbConn = NULL;
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/AutoRollback.hpp b/rdbms/AutoRollback.hpp
similarity index 97%
rename from catalogue/AutoRollback.hpp
rename to rdbms/AutoRollback.hpp
index 42b56a6cde..7c00d2b1c8 100644
--- a/catalogue/AutoRollback.hpp
+++ b/rdbms/AutoRollback.hpp
@@ -19,7 +19,7 @@
 #pragma once
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaration.
@@ -72,5 +72,5 @@ private:
 
 }; // class DbLogin
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/rdbms/CMakeLists.txt b/rdbms/CMakeLists.txt
new file mode 100644
index 0000000000..6df965738d
--- /dev/null
+++ b/rdbms/CMakeLists.txt
@@ -0,0 +1,51 @@
+# The CERN Tape Archive (CTA) project
+# Copyright (C) 2015  CERN
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+cmake_minimum_required (VERSION 2.6)
+
+find_package (oracle-instantclient REQUIRED)
+find_package (sqlite REQUIRED)
+
+include_directories (${ORACLE-INSTANTCLIENT_INCLUDE_DIRS})
+
+set (RDBMS_LIB_SRC_FILES
+  AutoRollback.cpp
+  ColumnNameToIdx.cpp
+  ColumnNameToIdxAndType.cpp
+  DbConn.cpp
+  DbLogin.cpp
+  DbRset.cpp
+  DbStmt.cpp
+  NullDbValue.cpp
+  OcciConn.cpp
+  OcciEnv.cpp
+  OcciEnvSingleton.cpp
+  OcciRset.cpp
+  OcciStmt.cpp
+  ParamNameToIdx.cpp
+  Sqlite.cpp
+  SqliteConn.cpp
+  SqliteRset.cpp
+  SqliteStmt.cpp)
+
+add_library (ctardbms SHARED
+  ${RDBMS_LIB_SRC_FILES})
+
+target_link_libraries (ctardbms
+  ctacommon
+  ${ORACLE-INSTANTCLIENT_LIBRARIES}
+  ${SQLITE_LIBRARIES})
+
+install (TARGETS ctardbms DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/catalogue/ColumnNameToIdx.cpp b/rdbms/ColumnNameToIdx.cpp
similarity index 95%
rename from catalogue/ColumnNameToIdx.cpp
rename to rdbms/ColumnNameToIdx.cpp
index 876cc4dfc0..c0f7fb5c68 100644
--- a/catalogue/ColumnNameToIdx.cpp
+++ b/rdbms/ColumnNameToIdx.cpp
@@ -16,11 +16,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/ColumnNameToIdx.hpp"
+#include "ColumnNameToIdx.hpp"
 #include "common/exception/Exception.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // add
@@ -50,5 +50,5 @@ bool ColumnNameToIdx::empty() const {
   return m_nameToIdx.empty();
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ColumnNameToIdx.hpp b/rdbms/ColumnNameToIdx.hpp
similarity index 97%
rename from catalogue/ColumnNameToIdx.hpp
rename to rdbms/ColumnNameToIdx.hpp
index 5af47645db..511beb6bec 100644
--- a/catalogue/ColumnNameToIdx.hpp
+++ b/rdbms/ColumnNameToIdx.hpp
@@ -22,7 +22,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A map from column name to column index.
@@ -67,5 +67,5 @@ private:
 
 }; // class ColumnNameToIdx
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ColumnNameToIdxAndType.cpp b/rdbms/ColumnNameToIdxAndType.cpp
similarity index 95%
rename from catalogue/ColumnNameToIdxAndType.cpp
rename to rdbms/ColumnNameToIdxAndType.cpp
index 24262476c7..62073b8940 100644
--- a/catalogue/ColumnNameToIdxAndType.cpp
+++ b/rdbms/ColumnNameToIdxAndType.cpp
@@ -16,11 +16,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/ColumnNameToIdxAndType.hpp"
+#include "ColumnNameToIdxAndType.hpp"
 #include "common/exception/Exception.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // add
@@ -50,5 +50,5 @@ bool ColumnNameToIdxAndType::empty() const {
   return m_nameToIdxAndType.empty();
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ColumnNameToIdxAndType.hpp b/rdbms/ColumnNameToIdxAndType.hpp
similarity index 98%
rename from catalogue/ColumnNameToIdxAndType.hpp
rename to rdbms/ColumnNameToIdxAndType.hpp
index a5ab19f4dc..a8e828fe29 100644
--- a/catalogue/ColumnNameToIdxAndType.hpp
+++ b/rdbms/ColumnNameToIdxAndType.hpp
@@ -20,7 +20,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A map from column name to column index and type.
@@ -91,5 +91,5 @@ private:
 
 }; // class ColumnNameToIdxAndType
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbConn.cpp b/rdbms/DbConn.cpp
similarity index 94%
rename from catalogue/DbConn.cpp
rename to rdbms/DbConn.cpp
index 084348c594..92cebc9e8b 100644
--- a/catalogue/DbConn.cpp
+++ b/rdbms/DbConn.cpp
@@ -16,13 +16,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbConn.hpp"
+#include "DbConn.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <memory>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // destructor
@@ -42,5 +42,5 @@ void DbConn::executeNonQuery(const std::string &sql) {
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbConn.hpp b/rdbms/DbConn.hpp
similarity index 95%
rename from catalogue/DbConn.hpp
rename to rdbms/DbConn.hpp
index b886783a37..6076b4d6a0 100644
--- a/catalogue/DbConn.hpp
+++ b/rdbms/DbConn.hpp
@@ -18,10 +18,10 @@
 
 #pragma once
 
-#include "catalogue/DbStmt.hpp"
+#include "DbStmt.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Abstract class that specifies the interface to a database connection.
@@ -67,5 +67,5 @@ public:
 
 }; // class DbConn
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbLogin.cpp b/rdbms/DbLogin.cpp
similarity index 99%
rename from catalogue/DbLogin.cpp
rename to rdbms/DbLogin.cpp
index dcf137f698..3e7d2dda8e 100644
--- a/catalogue/DbLogin.cpp
+++ b/rdbms/DbLogin.cpp
@@ -16,14 +16,14 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbLogin.hpp"
+#include "DbLogin.hpp"
 #include "common/exception/Exception.hpp"
 #include "common/utils/utils.hpp"
 
 #include <fstream>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // s_fileFormat
diff --git a/catalogue/DbLogin.hpp b/rdbms/DbLogin.hpp
similarity index 98%
rename from catalogue/DbLogin.hpp
rename to rdbms/DbLogin.hpp
index 620c3261a3..424d0d0226 100644
--- a/catalogue/DbLogin.hpp
+++ b/rdbms/DbLogin.hpp
@@ -23,7 +23,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A set of database login details.
@@ -142,5 +142,5 @@ struct DbLogin {
 
 }; // class DbLogin
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbLoginFactory.cpp b/rdbms/DbLoginFactory.cpp
similarity index 91%
rename from catalogue/DbLoginFactory.cpp
rename to rdbms/DbLoginFactory.cpp
index 63410a1fbc..4585a937c7 100644
--- a/catalogue/DbLoginFactory.cpp
+++ b/rdbms/DbLoginFactory.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbLoginFactory.hpp"
+#include "DbLoginFactory.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // destructor
@@ -27,5 +27,5 @@ namespace catalogue {
 DbLoginFactory::~DbLoginFactory() {
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbLoginFactory.hpp b/rdbms/DbLoginFactory.hpp
similarity index 93%
rename from catalogue/DbLoginFactory.hpp
rename to rdbms/DbLoginFactory.hpp
index ff2ef3be0a..323505caa4 100644
--- a/catalogue/DbLoginFactory.hpp
+++ b/rdbms/DbLoginFactory.hpp
@@ -18,10 +18,10 @@
 
 #pragma once
 
-#include "catalogue/DbLogin.hpp"
+#include "DbLogin.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Abstract class specifying the interface to a factory of DbLogin objects.
@@ -43,5 +43,5 @@ public:
 
 }; // class DbLogin
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbLoginTest.cpp b/rdbms/DbLoginTest.cpp
similarity index 88%
rename from catalogue/DbLoginTest.cpp
rename to rdbms/DbLoginTest.cpp
index 3489db7659..9a205d7e34 100644
--- a/catalogue/DbLoginTest.cpp
+++ b/rdbms/DbLoginTest.cpp
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbLogin.hpp"
+#include "DbLogin.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <gtest/gtest.h>
@@ -24,7 +24,7 @@
 
 namespace unitTests {
 
-class cta_catalogue_DbLoginTest : public ::testing::Test {
+class cta_rdbms_DbLoginTest : public ::testing::Test {
 protected:
 
   virtual void SetUp() {
@@ -34,8 +34,8 @@ protected:
   }
 };
 
-TEST_F(cta_catalogue_DbLoginTest, constructor) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_DbLoginTest, constructor) {
+  using namespace cta::rdbms;
 
   const DbLogin inMemoryLogin(DbLogin::DBTYPE_IN_MEMORY, "", "", "");
   ASSERT_EQ(DbLogin::DBTYPE_IN_MEMORY, inMemoryLogin.dbType);
@@ -56,8 +56,8 @@ TEST_F(cta_catalogue_DbLoginTest, constructor) {
   ASSERT_EQ(std::string("filename"), sqliteLogin.database);
 }
 
-TEST_F(cta_catalogue_DbLoginTest, parseStream_in_memory) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_DbLoginTest, parseStream_in_memory) {
+  using namespace cta::rdbms;
 
   std::stringstream inputStream;
   inputStream << "# A comment" << std::endl;
@@ -77,8 +77,8 @@ TEST_F(cta_catalogue_DbLoginTest, parseStream_in_memory) {
   ASSERT_TRUE(dbLogin.database.empty());
 }
 
-TEST_F(cta_catalogue_DbLoginTest, parseStream_oracle) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_DbLoginTest, parseStream_oracle) {
+  using namespace cta::rdbms;
 
   std::stringstream inputStream;
   inputStream << "# A comment" << std::endl;
@@ -98,8 +98,8 @@ TEST_F(cta_catalogue_DbLoginTest, parseStream_oracle) {
   ASSERT_EQ(std::string("database"), dbLogin.database);
 }
 
-TEST_F(cta_catalogue_DbLoginTest, parseStream_sqlite) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_DbLoginTest, parseStream_sqlite) {
+  using namespace cta::rdbms;
 
   std::stringstream inputStream;
   inputStream << "# A comment" << std::endl;
@@ -119,9 +119,9 @@ TEST_F(cta_catalogue_DbLoginTest, parseStream_sqlite) {
   ASSERT_EQ(std::string("filename"), dbLogin.database);
 }
 
-TEST_F(cta_catalogue_DbLoginTest, parseStream_invalid) {
+TEST_F(cta_rdbms_DbLoginTest, parseStream_invalid) {
   using namespace cta;
-  using namespace cta::catalogue;
+  using namespace cta::rdbms;
 
   std::stringstream inputStream;
   inputStream << "# A comment" << std::endl;
diff --git a/catalogue/DbRset.cpp b/rdbms/DbRset.cpp
similarity index 94%
rename from catalogue/DbRset.cpp
rename to rdbms/DbRset.cpp
index b7597b15e6..7d4aff8ce0 100644
--- a/catalogue/DbRset.cpp
+++ b/rdbms/DbRset.cpp
@@ -16,11 +16,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbRset.hpp"
-#include "catalogue/NullDbValue.hpp"
+#include "DbRset.hpp"
+#include "NullDbValue.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // destructor
@@ -60,5 +60,5 @@ uint64_t DbRset::columnUint64(const std::string &colName) const {
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbRset.hpp b/rdbms/DbRset.hpp
similarity index 98%
rename from catalogue/DbRset.hpp
rename to rdbms/DbRset.hpp
index 1e59773b7e..61b1a7bc61 100644
--- a/catalogue/DbRset.hpp
+++ b/rdbms/DbRset.hpp
@@ -24,7 +24,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Abstract class specificing the interface to the result set of an sql query.
@@ -104,5 +104,5 @@ public:
 
 }; // class DbRset
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbStmt.cpp b/rdbms/DbStmt.cpp
similarity index 92%
rename from catalogue/DbStmt.cpp
rename to rdbms/DbStmt.cpp
index eeb73bcc7c..dc8c1134e7 100644
--- a/catalogue/DbStmt.cpp
+++ b/rdbms/DbStmt.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbStmt.hpp"
+#include "DbStmt.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // destructor
@@ -27,5 +27,5 @@ namespace catalogue {
 DbStmt::~DbStmt() throw() {
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/DbStmt.hpp b/rdbms/DbStmt.hpp
similarity index 96%
rename from catalogue/DbStmt.hpp
rename to rdbms/DbStmt.hpp
index 039cbe17fe..eb72a4294f 100644
--- a/catalogue/DbStmt.hpp
+++ b/rdbms/DbStmt.hpp
@@ -18,13 +18,13 @@
 
 #pragma once
 
-#include "catalogue/DbRset.hpp"
+#include "DbRset.hpp"
 
 #include <stdint.h>
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Abstract class specifying the interface to a database statement.
@@ -88,5 +88,5 @@ public:
 
 }; // class DbStmt
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/NullDbValue.cpp b/rdbms/NullDbValue.cpp
similarity index 92%
rename from catalogue/NullDbValue.cpp
rename to rdbms/NullDbValue.cpp
index 7b95ff79c1..96df7b7b5b 100644
--- a/catalogue/NullDbValue.cpp
+++ b/rdbms/NullDbValue.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/NullDbValue.hpp"
+#include "NullDbValue.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -28,5 +28,5 @@ NullDbValue::NullDbValue(const std::string &context, const bool embedBacktrace):
   Exception(context, embedBacktrace) {
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/NullDbValue.hpp b/rdbms/NullDbValue.hpp
similarity index 96%
rename from catalogue/NullDbValue.hpp
rename to rdbms/NullDbValue.hpp
index edd5269cd8..2448010e72 100644
--- a/catalogue/NullDbValue.hpp
+++ b/rdbms/NullDbValue.hpp
@@ -21,7 +21,7 @@
 #include "common/exception/Exception.hpp"
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * An exception class representing an unexpected encounter with a NULL database
@@ -42,5 +42,5 @@ public:
 
 }; // class NullDbValue
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciConn.cpp b/rdbms/OcciConn.cpp
similarity index 96%
rename from catalogue/OcciConn.cpp
rename to rdbms/OcciConn.cpp
index 972226504c..152df06fb1 100644
--- a/catalogue/OcciConn.cpp
+++ b/rdbms/OcciConn.cpp
@@ -16,16 +16,16 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/OcciConn.hpp"
-#include "catalogue/OcciEnv.hpp"
-#include "catalogue/OcciStmt.hpp"
+#include "OcciConn.hpp"
+#include "OcciEnv.hpp"
+#include "OcciStmt.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <stdexcept>
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -117,5 +117,5 @@ void OcciConn::rollback() {
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciConn.hpp b/rdbms/OcciConn.hpp
similarity index 96%
rename from catalogue/OcciConn.hpp
rename to rdbms/OcciConn.hpp
index 60cda5f172..ff1c5bf835 100644
--- a/catalogue/OcciConn.hpp
+++ b/rdbms/OcciConn.hpp
@@ -18,13 +18,13 @@
 
 #pragma once
 
-#include "catalogue/DbConn.hpp"
+#include "DbConn.hpp"
 
 #include <occi.h>
 #include <mutex>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaraion to avoid a circular dependency beween OcciConn and
@@ -118,5 +118,5 @@ private:
 
 }; // class OcciConn
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciEnv.cpp b/rdbms/OcciEnv.cpp
similarity index 95%
rename from catalogue/OcciEnv.cpp
rename to rdbms/OcciEnv.cpp
index f5798f8088..38e029df85 100644
--- a/catalogue/OcciEnv.cpp
+++ b/rdbms/OcciEnv.cpp
@@ -16,15 +16,15 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbLogin.hpp"
-#include "catalogue/OcciConn.hpp"
-#include "catalogue/OcciEnv.hpp"
+#include "DbLogin.hpp"
+#include "OcciConn.hpp"
+#include "OcciEnv.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <stdexcept>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -82,5 +82,5 @@ OcciConn *OcciEnv::createConn(
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciEnv.hpp b/rdbms/OcciEnv.hpp
similarity index 97%
rename from catalogue/OcciEnv.hpp
rename to rdbms/OcciEnv.hpp
index 2144f4a2dc..b0066bc4d1 100644
--- a/catalogue/OcciEnv.hpp
+++ b/rdbms/OcciEnv.hpp
@@ -21,7 +21,7 @@
 #include <occi.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 class OcciConn;
 
@@ -84,5 +84,5 @@ private:
 
 }; // class OcciEnv
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciEnvSingleton.cpp b/rdbms/OcciEnvSingleton.cpp
similarity index 91%
rename from catalogue/OcciEnvSingleton.cpp
rename to rdbms/OcciEnvSingleton.cpp
index 90fd90ebd0..27dcb1c05d 100644
--- a/catalogue/OcciEnvSingleton.cpp
+++ b/rdbms/OcciEnvSingleton.cpp
@@ -16,17 +16,17 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/OcciEnvSingleton.hpp"
-#include "catalogue/OcciConn.hpp"
-#include "catalogue/OcciEnv.hpp"
+#include "OcciEnvSingleton.hpp"
+#include "OcciConn.hpp"
+#include "OcciEnv.hpp"
 #include "catalogue/RdbmsCatalogue.hpp"
-#include "catalogue/SqliteConn.hpp"
+#include "SqliteConn.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <memory>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // s_mutex
@@ -62,5 +62,5 @@ OcciEnvSingleton &OcciEnvSingleton::instance() {
 OcciEnvSingleton::OcciEnvSingleton() {
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciEnvSingleton.hpp b/rdbms/OcciEnvSingleton.hpp
similarity index 95%
rename from catalogue/OcciEnvSingleton.hpp
rename to rdbms/OcciEnvSingleton.hpp
index b007c476f6..9f4197bd4b 100644
--- a/catalogue/OcciEnvSingleton.hpp
+++ b/rdbms/OcciEnvSingleton.hpp
@@ -18,13 +18,13 @@
 
 #pragma once
 
-#include "catalogue/OcciEnv.hpp"
+#include "OcciEnv.hpp"
 
 #include <memory>
 #include <mutex>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A singleton version of OcciEnv.
@@ -67,5 +67,5 @@ private:
 
 }; // class OcciEnvSingleton
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciRset.cpp b/rdbms/OcciRset.cpp
similarity index 97%
rename from catalogue/OcciRset.cpp
rename to rdbms/OcciRset.cpp
index a63076d7ae..5ff9268d88 100644
--- a/catalogue/OcciRset.cpp
+++ b/rdbms/OcciRset.cpp
@@ -16,9 +16,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/NullDbValue.hpp"
-#include "catalogue/OcciRset.hpp"
-#include "catalogue/OcciStmt.hpp"
+#include "NullDbValue.hpp"
+#include "OcciRset.hpp"
+#include "OcciStmt.hpp"
 #include "common/exception/Exception.hpp"
 #include "common/utils/utils.hpp"
 
@@ -27,7 +27,7 @@
 #include <stdexcept>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -185,5 +185,5 @@ optional<uint64_t> OcciRset::columnOptionalUint64(const std::string &colName) co
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciRset.hpp b/rdbms/OcciRset.hpp
similarity index 96%
rename from catalogue/OcciRset.hpp
rename to rdbms/OcciRset.hpp
index 208323d8a0..12f8546629 100644
--- a/catalogue/OcciRset.hpp
+++ b/rdbms/OcciRset.hpp
@@ -18,15 +18,15 @@
 
 #pragma once
 
-#include "catalogue/ColumnNameToIdx.hpp"
-#include "catalogue/DbRset.hpp"
+#include "ColumnNameToIdx.hpp"
+#include "DbRset.hpp"
 
 #include <memory>
 #include <mutex>
 #include <occi.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaration to avoid a circular dependency between OcciRset and
@@ -149,5 +149,5 @@ private:
 
 }; // class OcciRset
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciStmt.cpp b/rdbms/OcciStmt.cpp
similarity index 97%
rename from catalogue/OcciStmt.cpp
rename to rdbms/OcciStmt.cpp
index 77c7e2ae43..cfde8c6af8 100644
--- a/catalogue/OcciStmt.cpp
+++ b/rdbms/OcciStmt.cpp
@@ -16,9 +16,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/OcciConn.hpp"
-#include "catalogue/OcciRset.hpp"
-#include "catalogue/OcciStmt.hpp"
+#include "OcciConn.hpp"
+#include "OcciRset.hpp"
+#include "OcciStmt.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <cstring>
@@ -28,7 +28,7 @@
 #include <stdexcept>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -164,5 +164,5 @@ oracle::occi::Statement *OcciStmt::operator->() const {
   return get();
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/OcciStmt.hpp b/rdbms/OcciStmt.hpp
similarity index 96%
rename from catalogue/OcciStmt.hpp
rename to rdbms/OcciStmt.hpp
index fcf76840bd..c8236ad158 100644
--- a/catalogue/OcciStmt.hpp
+++ b/rdbms/OcciStmt.hpp
@@ -18,8 +18,8 @@
 
 #pragma once
 
-#include "catalogue/DbStmt.hpp"
-#include "catalogue/ParamNameToIdx.hpp"
+#include "DbStmt.hpp"
+#include "ParamNameToIdx.hpp"
 
 #include <memory>
 #include <mutex>
@@ -27,7 +27,7 @@
 #include <stdint.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaration to avoid a circular dependency between OcciStmt and
@@ -158,5 +158,5 @@ private:
 
 }; // class OcciStmt
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ParamNameToIdx.cpp b/rdbms/ParamNameToIdx.cpp
similarity index 97%
rename from catalogue/ParamNameToIdx.cpp
rename to rdbms/ParamNameToIdx.cpp
index ab22b4f29e..6531fe111e 100644
--- a/catalogue/ParamNameToIdx.cpp
+++ b/rdbms/ParamNameToIdx.cpp
@@ -16,13 +16,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/ParamNameToIdx.hpp"
+#include "ParamNameToIdx.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <sstream>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -90,5 +90,5 @@ unsigned int ParamNameToIdx::getIdx(const std::string &paramName) const {
   return itor->second;
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ParamNameToIdx.hpp b/rdbms/ParamNameToIdx.hpp
similarity index 97%
rename from catalogue/ParamNameToIdx.hpp
rename to rdbms/ParamNameToIdx.hpp
index e0e7864745..3f9e88529b 100644
--- a/catalogue/ParamNameToIdx.hpp
+++ b/rdbms/ParamNameToIdx.hpp
@@ -20,7 +20,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Map from SQL parameter name to parameter index.
@@ -64,5 +64,5 @@ private:
 
 }; // class ParamNameToIdx
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/ParamNameToIdxTest.cpp b/rdbms/ParamNameToIdxTest.cpp
similarity index 89%
rename from catalogue/ParamNameToIdxTest.cpp
rename to rdbms/ParamNameToIdxTest.cpp
index f36c586017..7ded28ade1 100644
--- a/catalogue/ParamNameToIdxTest.cpp
+++ b/rdbms/ParamNameToIdxTest.cpp
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/ParamNameToIdx.hpp"
+#include "ParamNameToIdx.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <gtest/gtest.h>
@@ -24,7 +24,7 @@
 
 namespace unitTests {
 
-class cta_catalogue_ParamNameToIdxTest : public ::testing::Test {
+class cta_rdbms_ParamNameToIdxTest : public ::testing::Test {
 protected:
 
   virtual void SetUp() {
@@ -34,8 +34,8 @@ protected:
   }
 };
 
-TEST_F(cta_catalogue_ParamNameToIdxTest, getIdx_existing_params) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_ParamNameToIdxTest, getIdx_existing_params) {
+  using namespace cta::rdbms;
 
   const char *const sql =
     "INSERT INTO ADMIN_USER("
@@ -80,9 +80,9 @@ TEST_F(cta_catalogue_ParamNameToIdxTest, getIdx_existing_params) {
   ASSERT_EQ(10, paramNameToIdx.getIdx(":LAST_UPDATE_TIME"));
 }
 
-TEST_F(cta_catalogue_ParamNameToIdxTest, getIdx_non_existing_param) {
+TEST_F(cta_rdbms_ParamNameToIdxTest, getIdx_non_existing_param) {
   using namespace cta;
-  using namespace cta::catalogue;
+  using namespace cta::rdbms;
 
   const char *const sql =
    "String containing no bind parameters";
diff --git a/catalogue/Sqlite.cpp b/rdbms/Sqlite.cpp
similarity index 95%
rename from catalogue/Sqlite.cpp
rename to rdbms/Sqlite.cpp
index c16d1ed868..9c4253b74a 100644
--- a/catalogue/Sqlite.cpp
+++ b/rdbms/Sqlite.cpp
@@ -16,17 +16,17 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/DbStmt.hpp"
+#include "DbStmt.hpp"
 #include "catalogue/RdbmsCatalogueSchema.hpp"
-#include "catalogue/Sqlite.hpp"
-#include "catalogue/SqliteConn.hpp"
+#include "Sqlite.hpp"
+#include "SqliteConn.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <memory>
 #include <sstream>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // rcToStr
@@ -95,5 +95,5 @@ std::string Sqlite::rcToStr(const int rc) {
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/Sqlite.hpp b/rdbms/Sqlite.hpp
similarity index 96%
rename from catalogue/Sqlite.hpp
rename to rdbms/Sqlite.hpp
index 156c518cda..b69abf7991 100644
--- a/catalogue/Sqlite.hpp
+++ b/rdbms/Sqlite.hpp
@@ -22,7 +22,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A helper class for working with SQLite.
@@ -40,5 +40,5 @@ public:
 
 }; // class SqlLiteStmt
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteConn.cpp b/rdbms/SqliteConn.cpp
similarity index 97%
rename from catalogue/SqliteConn.cpp
rename to rdbms/SqliteConn.cpp
index 013dee73f6..3cb9757b19 100644
--- a/catalogue/SqliteConn.cpp
+++ b/rdbms/SqliteConn.cpp
@@ -17,15 +17,15 @@
  */
 
 #include "catalogue/RdbmsCatalogueSchema.hpp"
-#include "catalogue/SqliteConn.hpp"
-#include "catalogue/SqliteStmt.hpp"
+#include "SqliteConn.hpp"
+#include "SqliteStmt.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <stdexcept>
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -148,5 +148,5 @@ void SqliteConn::printSchema(std::ostream &os) {
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteConn.hpp b/rdbms/SqliteConn.hpp
similarity index 96%
rename from catalogue/SqliteConn.hpp
rename to rdbms/SqliteConn.hpp
index 931dfb1287..a5c8ea9ed1 100644
--- a/catalogue/SqliteConn.hpp
+++ b/rdbms/SqliteConn.hpp
@@ -18,13 +18,13 @@
 
 #pragma once
 
-#include "catalogue/DbConn.hpp"
+#include "DbConn.hpp"
 
 #include <mutex>
 #include <sqlite3.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaration to avoid a circular dependency between SqliteConn and
@@ -104,5 +104,5 @@ private:
 
 }; // class SqliteConn
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteRset.cpp b/rdbms/SqliteRset.cpp
similarity index 97%
rename from catalogue/SqliteRset.cpp
rename to rdbms/SqliteRset.cpp
index d9ecd7aff0..ca5a89a066 100644
--- a/catalogue/SqliteRset.cpp
+++ b/rdbms/SqliteRset.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/NullDbValue.hpp"
-#include "catalogue/Sqlite.hpp"
-#include "catalogue/SqliteRset.hpp"
-#include "catalogue/SqliteStmt.hpp"
+#include "NullDbValue.hpp"
+#include "Sqlite.hpp"
+#include "SqliteRset.hpp"
+#include "SqliteStmt.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <cstring>
@@ -28,7 +28,7 @@
 
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * A map from column name to column index and type.
@@ -241,5 +241,5 @@ optional<uint64_t> SqliteRset::columnOptionalUint64(const std::string &colName)
   }
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteRset.hpp b/rdbms/SqliteRset.hpp
similarity index 95%
rename from catalogue/SqliteRset.hpp
rename to rdbms/SqliteRset.hpp
index ab87d803a0..55ed0e3fdb 100644
--- a/catalogue/SqliteRset.hpp
+++ b/rdbms/SqliteRset.hpp
@@ -18,15 +18,15 @@
 
 #pragma once
 
-#include "catalogue/ColumnNameToIdxAndType.hpp"
-#include "catalogue/DbRset.hpp"
+#include "ColumnNameToIdxAndType.hpp"
+#include "DbRset.hpp"
 
 #include <memory>
 #include <stdint.h>
 #include <sqlite3.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 /**
  * Forward declaration.
@@ -118,5 +118,5 @@ private:
 
 }; // class SqlLiteRset
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteStmt.cpp b/rdbms/SqliteStmt.cpp
similarity index 96%
rename from catalogue/SqliteStmt.cpp
rename to rdbms/SqliteStmt.cpp
index e1f466d09a..80e2850edb 100644
--- a/catalogue/SqliteStmt.cpp
+++ b/rdbms/SqliteStmt.cpp
@@ -16,10 +16,10 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/Sqlite.hpp"
-#include "catalogue/SqliteConn.hpp"
-#include "catalogue/SqliteRset.hpp"
-#include "catalogue/SqliteStmt.hpp"
+#include "Sqlite.hpp"
+#include "SqliteConn.hpp"
+#include "SqliteRset.hpp"
+#include "SqliteStmt.hpp"
 #include "common/exception/Exception.hpp"
 
 #include <cstring>
@@ -27,7 +27,7 @@
 #include <string>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 //------------------------------------------------------------------------------
 // constructor
@@ -144,5 +144,5 @@ uint64_t SqliteStmt::getNbAffectedRows() const {
   return m_nbAffectedRows;
 }
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteStmt.hpp b/rdbms/SqliteStmt.hpp
similarity index 96%
rename from catalogue/SqliteStmt.hpp
rename to rdbms/SqliteStmt.hpp
index 2ce22d5149..cb0a26551c 100644
--- a/catalogue/SqliteStmt.hpp
+++ b/rdbms/SqliteStmt.hpp
@@ -18,8 +18,8 @@
 
 #pragma once
 
-#include "catalogue/DbStmt.hpp"
-#include "catalogue/ParamNameToIdx.hpp"
+#include "DbStmt.hpp"
+#include "ParamNameToIdx.hpp"
 
 #include <map>
 #include <memory>
@@ -28,7 +28,7 @@
 #include <sqlite3.h>
 
 namespace cta {
-namespace catalogue {
+namespace rdbms {
 
 class SqliteConn;
 class SqliteRset;
@@ -146,5 +146,5 @@ private:
 
 }; // class SqlLiteStmt
 
-} // namespace catalogue
+} // namespace rdbms
 } // namespace cta
diff --git a/catalogue/SqliteStmtTest.cpp b/rdbms/SqliteStmtTest.cpp
similarity index 91%
rename from catalogue/SqliteStmtTest.cpp
rename to rdbms/SqliteStmtTest.cpp
index 434a6ad3f9..5f80da6586 100644
--- a/catalogue/SqliteStmtTest.cpp
+++ b/rdbms/SqliteStmtTest.cpp
@@ -16,16 +16,16 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "catalogue/SqliteConn.hpp"
-#include "catalogue/SqliteRset.hpp"
-#include "catalogue/SqliteStmt.hpp"
+#include "SqliteConn.hpp"
+#include "SqliteRset.hpp"
+#include "SqliteStmt.hpp"
 
 #include <gtest/gtest.h>
 #include <memory>
 
 namespace unitTests {
 
-class cta_catalogue_SqliteStmtTest : public ::testing::Test {
+class cta_rdbms_SqliteStmtTest : public ::testing::Test {
 protected:
 
   virtual void SetUp() {
@@ -35,8 +35,8 @@ protected:
   }
 };
 
-TEST_F(cta_catalogue_SqliteStmtTest, create_table) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_SqliteStmtTest, create_table) {
+  using namespace cta::rdbms;
   // Create a connection a memory resident database
   SqliteConn conn(":memory:");
 
@@ -86,8 +86,8 @@ TEST_F(cta_catalogue_SqliteStmtTest, create_table) {
   }
 }
 
-TEST_F(cta_catalogue_SqliteStmtTest, select_from_empty_table) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_SqliteStmtTest, select_from_empty_table) {
+  using namespace cta::rdbms;
   // Create a connection a memory resident database
   SqliteConn conn(":memory:");
 
@@ -117,8 +117,8 @@ TEST_F(cta_catalogue_SqliteStmtTest, select_from_empty_table) {
   }
 }
 
-TEST_F(cta_catalogue_SqliteStmtTest, insert_without_bind) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_SqliteStmtTest, insert_without_bind) {
+  using namespace cta::rdbms;
   // Create a connection a memory resident database
   SqliteConn conn(":memory:");
 
@@ -173,8 +173,8 @@ TEST_F(cta_catalogue_SqliteStmtTest, insert_without_bind) {
   }
 }
 
-TEST_F(cta_catalogue_SqliteStmtTest, insert_with_bind) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_SqliteStmtTest, insert_with_bind) {
+  using namespace cta::rdbms;
 
   // Create a connection a memory resident database
   SqliteConn conn(":memory:");
@@ -233,8 +233,8 @@ TEST_F(cta_catalogue_SqliteStmtTest, insert_with_bind) {
   }
 }
 
-TEST_F(cta_catalogue_SqliteStmtTest, isolated_transaction) {
-  using namespace cta::catalogue;
+TEST_F(cta_rdbms_SqliteStmtTest, isolated_transaction) {
+  using namespace cta::rdbms;
 
   const std::string dbFilename = "file::memory:?cache=shared";
 
diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp
index edc7d8d45e..2715dc6fea 100644
--- a/scheduler/SchedulerTest.cpp
+++ b/scheduler/SchedulerTest.cpp
@@ -17,7 +17,7 @@
  */
 
 #include "catalogue/CatalogueFactory.hpp"
-#include "catalogue/DbConn.hpp"
+#include "rdbms/DbConn.hpp"
 #include "catalogue/RdbmsCatalogue.hpp"
 #include "common/admin/AdminUser.hpp"
 #include "common/admin/AdminHost.hpp"
@@ -81,7 +81,7 @@ public:
 
     const SchedulerTestParam &param = GetParam();
     m_db = param.dbFactory.create();
-    catalogue::DbLogin catalogueLogin(catalogue::DbLogin::DBTYPE_IN_MEMORY, "", "", "");
+    rdbms::DbLogin catalogueLogin(rdbms::DbLogin::DBTYPE_IN_MEMORY, "", "", "");
     m_catalogue.reset(catalogue::CatalogueFactory::create(catalogueLogin));
 
     m_scheduler.reset(new cta::Scheduler(*m_catalogue, *m_db, 5, 2*1000*1000));
diff --git a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
index 5543e8d2c1..93396f979b 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
@@ -39,9 +39,10 @@ namespace unitTests {
   protected:
 
     void SetUp() {
+      using namespace cta;
       using namespace cta::catalogue;
 
-      DbLogin catalogueLogin(DbLogin::DBTYPE_IN_MEMORY, "", "", "");
+      rdbms::DbLogin catalogueLogin(rdbms::DbLogin::DBTYPE_IN_MEMORY, "", "", "");
       m_catalogue.reset(CatalogueFactory::create(catalogueLogin));
     }
 
diff --git a/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp b/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
index 4a3f434a1b..154694f4b6 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
@@ -48,8 +48,8 @@
 #include "castor/utils/SmartArrayPtr.hpp"
 #include "castor/utils/utils.hpp"
 #include "catalogue/CatalogueFactory.hpp"
-#include "catalogue/Sqlite.hpp"
-#include "catalogue/SqliteConn.hpp"
+#include "rdbms/Sqlite.hpp"
+#include "rdbms/SqliteConn.hpp"
 #include "objectstore/BackendVFS.hpp"
 #include "objectstore/BackendFactory.hpp"
 #include "objectstore/BackendPopulator.hpp"
@@ -569,7 +569,7 @@ castor::tape::tapeserver::daemon::Session::EndOfSessionAction
   } catch (std::bad_cast &){}
   cta::objectstore::BackendPopulator backendPopulator(*backend);
   cta::OStoreDBWithAgent osdb(*backend, backendPopulator.getAgent());
-  const cta::catalogue::DbLogin catalogueLogin = cta::catalogue::DbLogin::parseFile("/etc/cta/cta_catalogue_db.conf");
+  const cta::rdbms::DbLogin catalogueLogin = cta::rdbms::DbLogin::parseFile("/etc/cta/cta_catalogue_db.conf");
   std::unique_ptr<cta::catalogue::Catalogue> catalogue(cta::catalogue::CatalogueFactory::create(catalogueLogin));
   cta::Scheduler scheduler(*catalogue, osdb, 5, 2*1000*1000); //TODO: we have hardcoded the mount policy parameters here temporarily we will remove them once we know where to put them
 
diff --git a/xroot_plugins/XrdCtaFilesystem.cpp b/xroot_plugins/XrdCtaFilesystem.cpp
index 307c2ea464..1ef043652b 100644
--- a/xroot_plugins/XrdCtaFilesystem.cpp
+++ b/xroot_plugins/XrdCtaFilesystem.cpp
@@ -267,7 +267,7 @@ XrdCtaFilesystem::XrdCtaFilesystem():
     throw cta::exception::Exception(std::string("Failed to instantiate object representing CTA logging system: ")+ex.getMessage().str());
   }
   
-  const catalogue::DbLogin catalogueLogin = catalogue::DbLogin::parseFile("/etc/cta/cta_catalogue_db.conf");
+  const rdbms::DbLogin catalogueLogin = rdbms::DbLogin::parseFile("/etc/cta/cta_catalogue_db.conf");
   m_catalogue.reset(catalogue::CatalogueFactory::create(catalogueLogin));
 
   m_scheduler.reset(new cta::Scheduler(*m_catalogue, m_scheddb, 5, 2*1000*1000));
-- 
GitLab