diff --git a/Database/APR/RootStorageSvc/src/RootDomain.cpp b/Database/APR/RootStorageSvc/src/RootDomain.cpp
index 6fe0734c1fc289974efa61a475bda6817709463a..36c4e427d6c2211f6cf4bb381693fa8b975b69dc 100755
--- a/Database/APR/RootStorageSvc/src/RootDomain.cpp
+++ b/Database/APR/RootStorageSvc/src/RootDomain.cpp
@@ -98,10 +98,14 @@ DbStatus RootDomain::setOption(const DbOption& opt)  {
         return sc;
       }
       else if ( !strcasecmp(n, "ENABLE_IMPLICITMT") )  {
-        bool implicitMT = false;
+        int implicitMT = -1;
         DbStatus sc = opt._getValue(implicitMT);
-        if ( sc.isSuccess() && implicitMT )  {
-           ROOT::EnableImplicitMT();
+        if ( sc.isSuccess() )  {
+           if ( implicitMT == 0 )  {
+              ROOT::EnableImplicitMT();
+           } else if ( implicitMT > 0 )  {
+              ROOT::EnableImplicitMT(implicitMT);
+           }
         }
         return sc;
       }
diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
index f2a7ed230244d8fe9d428e705e7eb259f517b62e..1ffbeabd6a609ad92272ed1bd79889ee5ca8bcb7 100644
--- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
+++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
@@ -203,14 +203,6 @@ StatusCode PoolSvc::setupPersistencySvc() {
       ATH_MSG_FATAL("Failed to enable thread safety in ROOT via PersistencySvc.");
       return(StatusCode::FAILURE);
    }
-   // Switiching on ROOT implicit multi threading for AthenaMT
-   if (Gaudi::Concurrency::ConcurrencyFlags::numThreads() > 1) {
-
-      if (!m_persistencySvcVec[IPoolSvc::kInputStream]->session().technologySpecificAttributes(pool::ROOT_StorageType.type()).setAttribute<bool>("ENABLE_IMPLICITMT", true)) {
-         ATH_MSG_FATAL("Failed to enable implicit multithreading in ROOT via PersistencySvc.");
-         return(StatusCode::FAILURE);
-      }
-   }
    m_contextMaxFile.insert(std::pair<unsigned int, int>(IPoolSvc::kInputStream, m_dbAgeLimit));
    if (!connect(pool::ITransaction::READ).isSuccess()) {
       ATH_MSG_FATAL("Failed to connect Input PersistencySvc.");
@@ -228,6 +220,19 @@ StatusCode PoolSvc::setupPersistencySvc() {
    return(StatusCode::SUCCESS);
 }
 //__________________________________________________________________________
+StatusCode PoolSvc::start() {
+   // Switiching on ROOT implicit multi threading for AthenaMT
+   if (Gaudi::Concurrency::ConcurrencyFlags::numThreads() > 1) {
+
+      if (!m_persistencySvcVec[IPoolSvc::kInputStream]->session().technologySpecificAttributes(pool::ROOT_StorageType.type()).setAttribute<int>("ENABLE_IMPLICITMT", Gaudi::Concurrency::ConcurrencyFlags::numThreads() - 1)) {
+         ATH_MSG_FATAL("Failed to enable implicit multithreading in ROOT via PersistencySvc.");
+         return(StatusCode::FAILURE);
+      }
+      ATH_MSG_INFO("Enabled implicit multithreading in ROOT via PersistencySvc to: " << Gaudi::Concurrency::ConcurrencyFlags::numThreads() - 1);
+   }
+   return(StatusCode::SUCCESS);
+}
+//__________________________________________________________________________
 StatusCode PoolSvc::stop() {
    bool retError = false;
    for (unsigned int contextId = 0, imax = m_persistencySvcVec.size(); contextId < imax; contextId++) {
diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
index da58694eb3c3ad112e4118d71fa5e0f9ef71b258..f3e51efd7b6cc9552d27daffc9f9f8d199c1ec79 100644
--- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
+++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
@@ -41,6 +41,7 @@ public: // Non-static members
    StatusCode initialize();
    StatusCode io_reinit();
    /// Required of all Gaudi services:
+   StatusCode start();
    StatusCode stop();
    /// Required of all Gaudi services:
    StatusCode finalize();