diff --git a/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
index c2bc2359c00869ca8c150306351ad3e47a401547..34b2f85297a411cf9d1bb95b12a9d3a0bce5c7cb 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
@@ -74,7 +74,7 @@ add_library(castorTapeServerDaemon
   TpconfigLine.cpp
   TpconfigLines.cpp)
 
-target_link_libraries(castorTapeServerDaemon castormessages castortapereactor  ctacommon ctanameserver ctaremotens ctaOStoreSchedulerDB protobuf CTAObjectStore ctascheduler)
+target_link_libraries(castorTapeServerDaemon castormessages castortapereactor  ctacommon ctanameserver ctaremotens ctaOStoreSchedulerDB protobuf CTAObjectStore ctascheduler XrdCtaOfs)
 add_dependencies(castorTapeServerDaemon castormessagesprotobuf)
 
 add_executable(tapeserverd TapeDaemon.cpp)
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
index 503f01127f1abf4f6a731581e5057ae4ea2a9777..8eae2613161f03708ba751910a6c5b5fb91cb8e5 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
@@ -97,8 +97,10 @@ castor::tape::tapeserver::daemon::Session::EndOfSessionAction
     return MARK_DRIVE_AS_DOWN;
   }
   // No mount to be done found, that was fast...
-  if (!tapeMount.get())
+  if (!tapeMount.get()) {
+    lc.log(LOG_INFO, "No new mount found!");
     return MARK_DRIVE_AS_UP;
+  }
   m_volInfo.vid=tapeMount->getVid();
   m_volInfo.mountType=tapeMount->getMountType();
   m_volInfo.nbFiles=tapeMount->getNbFiles();
diff --git a/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp b/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
index 8b2d797eea03b341ca3974cbe1646549952e3ac1..cb496b302ac5ab633121ddff30a80263d3835afb 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/ProcessForker.cpp
@@ -54,8 +54,9 @@
 #include "scheduler/OStoreDB/OStoreDB.hpp"
 #include "scheduler/Scheduler.hpp"
 #include "serrno.h"
-
-
+#include "nameserver/mockNS/MockNameServer.hpp"
+#include "xroot_plugins/BackendPopulator.hpp"
+#include "xroot_plugins/OStoreDBWithAgent.hpp"
 
 #include <errno.h>
 #include <memory>
@@ -555,60 +556,13 @@ castor::tape::tapeserver::daemon::Session::EndOfSessionAction
   messages::TapeserverProxyZmq tapeserver(m_log, m_config.internalPort,
     zmqContext.get());
   
-  /************BEGIN: boilerplate code to prepare the objectstoreDB object**************/
-  cta::objectstore::BackendVFS g_backend(m_config.objectStoreBackendPath);
-      // Make sure we will not delete the contents of objectstore when deleting the object
-      g_backend.noDeleteOnExit();
-
-  class BackendPopulator {
-  public:
-      BackendPopulator(cta::objectstore::Backend & be): m_backend(be),
-        m_agent(m_backend) {
-      // We need to populate the root entry before using.
-      cta::objectstore::RootEntry re(m_backend);
-      cta::objectstore::ScopedExclusiveLock rel(re);
-      re.fetch();
-      m_agent.generateName("OStoreDBFactory");
-      m_agent.initialize();
-      cta::objectstore::CreationLog cl(cta::UserIdentity(1111, 1111), "systemhost", 
-        time(NULL), "Initial creation of the  object store structures");
-      re.addOrGetAgentRegisterPointerAndCommit(m_agent,cl);
-      rel.release();
-      m_agent.insertAndRegisterSelf();
-      rel.lock(re);
-      re.addOrGetDriveRegisterPointerAndCommit(m_agent, cl);
-      rel.release();
-    }
-
-    virtual ~BackendPopulator() throw() {
-      cta::objectstore::ScopedExclusiveLock agl(m_agent);
-      m_agent.fetch();
-      m_agent.removeAndUnregisterSelf();
-    }
-
-    cta::objectstore::Agent & getAgent() { return m_agent;  }
-  private:
-    cta::objectstore::Backend & m_backend;
-    cta::objectstore::Agent m_agent;
-  } g_backendPopulator(g_backend);
-
-  class OStoreDBWithAgent: public cta::OStoreDB {
-  public:
-    OStoreDBWithAgent(cta::objectstore::Backend & be, cta::objectstore::Agent & ag):
-    cta::OStoreDB(be) {
-      cta::OStoreDB::setAgent(ag);
-    }
-    virtual ~OStoreDBWithAgent() throw () {
-      cta::OStoreDB::setAgent(*((cta::objectstore::Agent *)NULL));
-    }
-
-  } g_OStoreDB(g_backend, g_backendPopulator.getAgent());
-  /************END: boilerplate code to prepare the objectstoreDB object**************/
-  
   cta::EosNS eosNs("localhost:1094");
-  cta::CastorNameServer castorNs;
+  cta::MockNameServer mockNs(castor::common::CastorConfiguration::getConfig().getConfEntString("TapeServer", "MockNameServerPath"));
+  cta::objectstore::BackendVFS backend(castor::common::CastorConfiguration::getConfig().getConfEntString("TapeServer", "ObjectStoreBackendPath"));
+  BackendPopulator backendPopulator(backend);
+  OStoreDBWithAgent osdb(backend, backendPopulator.getAgent());
   
-  cta::Scheduler scheduler(castorNs, g_OStoreDB, eosNs);
+  cta::Scheduler scheduler(mockNs, osdb, eosNs);
 
   castor::tape::System::realWrapper sysWrapper;