diff --git a/AtlasTest/DatabaseTest/AthenaPoolMultiTest/share/SplittableData_jo.py b/AtlasTest/DatabaseTest/AthenaPoolMultiTest/share/SplittableData_jo.py
index 70519af75a924fbe3a0b3933fb3ed25e77c34783..5ad67fee0b0ec8d1aacc72f656bbc8acacdf8471 100755
--- a/AtlasTest/DatabaseTest/AthenaPoolMultiTest/share/SplittableData_jo.py
+++ b/AtlasTest/DatabaseTest/AthenaPoolMultiTest/share/SplittableData_jo.py
@@ -83,7 +83,6 @@ svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:SplittableData.xml"
 
 from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
 svcMgr += AthenaPoolCnvSvc()
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
 
 include( "AthenaPoolMultiTest/ExampleStreamConfig.py" )
 
diff --git a/Control/AthenaExamples/AthExThinning/share/AthExThinning_makeData.py b/Control/AthenaExamples/AthExThinning/share/AthExThinning_makeData.py
index 451d45f5859377dfee0264b6adf4725e3bfe3fff..b7399af225b8a5147676d4b20c593ce2a15d1d75 100644
--- a/Control/AthenaExamples/AthExThinning/share/AthExThinning_makeData.py
+++ b/Control/AthenaExamples/AthExThinning/share/AthExThinning_makeData.py
@@ -61,7 +61,6 @@ if not 'OUTPUT' in dir():
   OUTPUT = "my.data.pool"
   pass
 outStream.OutputFile = OUTPUT
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 if not hasattr (svcMgr, 'AthenaSealSvc'):
     svcMgr += CfgMgr.AthenaSealSvc()
diff --git a/Control/AthenaExamples/AthExThinning/share/ReadNonSlimmedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/ReadNonSlimmedData_jobOptions.py
index b550cda56b76e4cf5427ff1a81ced8dc9c4139f0..5f00a9472302600579a781574ee22b5b7dd9c0b9 100644
--- a/Control/AthenaExamples/AthExThinning/share/ReadNonSlimmedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/ReadNonSlimmedData_jobOptions.py
@@ -65,7 +65,6 @@ outStream.ItemList  = [
     "AthExElephantino#*",
     "AthExFatObject#*",
     ]
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 ##############################################################
 #
diff --git a/Control/AthenaExamples/AthExThinning/share/ReadNonThinnedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/ReadNonThinnedData_jobOptions.py
index 610ab6c4309bf2c0259aaa1d04f0be04825e1723..a1e07dc97587bc9534fe850d52ca3cbf4163fa37 100644
--- a/Control/AthenaExamples/AthExThinning/share/ReadNonThinnedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/ReadNonThinnedData_jobOptions.py
@@ -71,7 +71,6 @@ outStream.ItemList  = [
     "AthExDecay#*",
     "AthExElephantino#*"
     ]
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 ##############################################################
 #
diff --git a/Control/AthenaExamples/AthExThinning/share/ReadSlimmedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/ReadSlimmedData_jobOptions.py
index bc36716b5b38ba6f812cb23ec08299f8c73e8be2..14f6cef6188939ba2888ff7624d2824d19ca2b32 100644
--- a/Control/AthenaExamples/AthExThinning/share/ReadSlimmedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/ReadSlimmedData_jobOptions.py
@@ -65,7 +65,6 @@ outStream.ItemList  = [
    "AthExElephantino#*",
    "AthExFatObject#*",
    ]
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 ##############################################################
 #
diff --git a/Control/AthenaExamples/AthExThinning/share/ReadThinnedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/ReadThinnedData_jobOptions.py
index d7f2c7c419b60248a0608238dad10b3360243d26..fccf2f77cbc2eca23336eb979580ea66a51de268 100644
--- a/Control/AthenaExamples/AthExThinning/share/ReadThinnedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/ReadThinnedData_jobOptions.py
@@ -75,7 +75,6 @@ outStream.ItemList  = [ "EventInfo#*" ]
 outStream.ItemList += [ "AthExParticles#*" ]
 outStream.ItemList += [ "AthExDecay#*" ]
 outStream.ItemList += [ "AthExElephantino#*" ]
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 ##############################################################
 #
diff --git a/Control/AthenaExamples/AthExThinning/share/WriteSlimmedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/WriteSlimmedData_jobOptions.py
index b9c846e8a0dd0f7ebd3cd8d400493ada1ebb25c8..7ba4af06c6eaaddba96aaf3cc999a26187cf584e 100644
--- a/Control/AthenaExamples/AthExThinning/share/WriteSlimmedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/WriteSlimmedData_jobOptions.py
@@ -87,7 +87,6 @@ outStreams[1].OutputFile = os.path.join(
    os.path.dirname(OUTPUT),
    'non.%s' % os.path.basename(OUTPUT)
    )
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 ###############################
 # Load thinning service
diff --git a/Control/AthenaExamples/AthExThinning/share/WriteThinnedData_jobOptions.py b/Control/AthenaExamples/AthExThinning/share/WriteThinnedData_jobOptions.py
index 107388cb83cabfde3d4a3a1ce57724f5f756878b..34c73f0c5129578ae92d4aaafa639ecb5bf24805 100644
--- a/Control/AthenaExamples/AthExThinning/share/WriteThinnedData_jobOptions.py
+++ b/Control/AthenaExamples/AthExThinning/share/WriteThinnedData_jobOptions.py
@@ -89,7 +89,6 @@ for i in xrange(2):
 
 if 'OUTPUT' not in dir():
    OUTPUT = "thinned.%s" % INPUT[0]
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 # Stream's output file
 outStreams[0].OutputFile = OUTPUT
diff --git a/Control/AthenaPython/python/ConfigLib.py b/Control/AthenaPython/python/ConfigLib.py
index bab093d8c39f8d576176a9ab9741705d2c754f49..8cbff5ce6b0e553fd675f2a64cbbc1960a9c60d5 100644
--- a/Control/AthenaPython/python/ConfigLib.py
+++ b/Control/AthenaPython/python/ConfigLib.py
@@ -118,10 +118,6 @@ def _copy_file_impl(cfg, hints):
             outstream.ForceRead=True
             outstream.TakeItemsFromInput=True
 
-            ## tweak the default commit interval
-            from AthenaCommon.AppMgr import ServiceMgr as svcMgr
-            svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
             pass
         
         if do_write is not None:
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_baseline_bench.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_baseline_bench.py
index 0f356c97b6296b9a8b9d722cc33164d855b14b98..40df29e5c38a8cc82bb0bc8d2af86b8353daa0bc 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_baseline_bench.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_baseline_bench.py
@@ -75,7 +75,6 @@ outStream.OutputFile = OUTPUT
 
 ## somehow better configure the AthenaPoolCnvSvc for our small
 ## persistency output job
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 1000
 
 svcMgr += CfgMgr.AthenaSealSvc( OutputLevel = ERROR )
 
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_digitization_calo_noLVL1.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_digitization_calo_noLVL1.py
index 6eb5ead4adc3782414f73801f10d7d0617d0750b..a30a116f1e45b8fa30e514dd4db33ae634307ee5 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_digitization_calo_noLVL1.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_digitization_calo_noLVL1.py
@@ -97,7 +97,6 @@ outStreams.Stream1.ItemList = [
 ## repeat 10 times the same event
 ## jobproperties.PerfMonFlags.installEvtSelector = True
 ## svcMgr.PerfMonEventSelector.NbrReplays = 10-1
-## svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 #==============================================================
 #
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_multiple_noopalgs_write_evtinfo.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_multiple_noopalgs_write_evtinfo.py
index 035082feaf105294af014bdab1d334bab9aaab77..e1ab040fc492e7a226427864b8fc5c687d2e6111 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_multiple_noopalgs_write_evtinfo.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_multiple_noopalgs_write_evtinfo.py
@@ -67,7 +67,6 @@ outStream.OutputFile = OUTPUT
 
 ## somehow better configure the AthenaPoolCnvSvc for our small
 ## persistency output job
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 1000
 
 svcMgr.MessageSvc.OutputLevel = ERROR
 #==============================================================
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_datahdr.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_datahdr.py
index 6b279d453d7b523ef647a9e61830b42e879b1d1a..da6978b0f280a0a215361fc207dbc49b36516f1c 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_datahdr.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_datahdr.py
@@ -60,7 +60,6 @@ outStream.OutputFile = OUTPUT
 
 ## somehow better configure the AthenaPoolCnvSvc for our small
 ## persistency output job
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 1000
 
 svcMgr.MessageSvc.OutputLevel = ERROR
 #==============================================================
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_evtinfo.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_evtinfo.py
index ce315e3984c88b0c796ec60cb4ea5184cb234a15..3869afa8fe49411ab225399c63dcd2466828b404 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_evtinfo.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_noopalg_write_evtinfo.py
@@ -63,7 +63,6 @@ outStream.OutputFile = OUTPUT
 
 ## somehow better configure the AthenaPoolCnvSvc for our small
 ## persistency output job
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 1000
 
 svcMgr.MessageSvc.OutputLevel = ERROR
 #==============================================================
diff --git a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_truthjets.py b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_truthjets.py
index 14b09486a025ecdb95c3dbc018b85e3bcba8e259..4a6730f2877cea5e2a8b816e7c19dd9c29b18c55 100755
--- a/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_truthjets.py
+++ b/Control/PerformanceMonitoring/PerfMonTests/share/test_perfMonSvc_truthjets.py
@@ -101,7 +101,6 @@ outStream.OutputFile = OUTPUT
 
 from AthenaSealSvc.AthenaSealSvcConf import AthenaSealSvc
 svcMgr += AthenaSealSvc( OutputLevel = ERROR )
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
 
 from GaudiSvc.GaudiSvcConf import MessageSvc
 svcMgr += MessageSvc( defaultLimit = 4000000 )
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/AthenaPoolCnvSvc/IAthenaPoolCnvSvc.h b/Database/AthenaPOOL/AthenaPoolCnvSvc/AthenaPoolCnvSvc/IAthenaPoolCnvSvc.h
index 849819fc75eedf3e79395288284afc15c868c92a..56249c82a4fcc83009d77d30a1ac5131521bccb5 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/AthenaPoolCnvSvc/IAthenaPoolCnvSvc.h
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/AthenaPoolCnvSvc/IAthenaPoolCnvSvc.h
@@ -60,7 +60,7 @@ public:
    /// @param placement [IN] pointer to the placement hint
    /// @param obj [IN] pointer to the Data Object to be written to Pool
    /// @param classDesc [IN] pointer to the Seal class description for the Data Object.
-   virtual const Token* registerForWrite(const Placement* placement,
+   virtual const Token* registerForWrite(Placement* placement,
 	   const void* obj,
 	   const RootType& classDesc) const = 0;
 
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
index 012694429ff25357cf23d4a3b3bdfc958c9315d7..f9fe7223de93e05a138245922a3a64d6cef058fc 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
@@ -31,6 +31,8 @@
 
 #include "AuxDiscoverySvc.h"
 
+#include <algorithm>
+
 //______________________________________________________________________________
 // Initialize the service.
 StatusCode AthenaPoolCnvSvc::initialize() {
@@ -103,13 +105,6 @@ StatusCode AthenaPoolCnvSvc::initialize() {
          }
       }
    }
-   // Setting default 'TREE_MAX_SIZE' for ROOT to 1024 GB to avoid file chains.
-   std::vector<std::string> maxFileSize;
-   maxFileSize.push_back("TREE_MAX_SIZE");
-   maxFileSize.push_back("1099511627776L");
-   m_domainAttr.push_back(maxFileSize);
-   // Extracting OUTPUT POOL ItechnologySpecificAttributes for Domain, Database and Container.
-   extractPoolAttributes(m_poolAttr, &m_containerAttr, &m_databaseAttr, &m_domainAttr);
    // Extracting INPUT POOL ItechnologySpecificAttributes for Domain, Database and Container.
    extractPoolAttributes(m_inputPoolAttr, &m_inputAttr, &m_inputAttr, &m_inputAttr);
    // Extracting the INPUT POOL ItechnologySpecificAttributes which are to be printed for each event
@@ -329,8 +324,10 @@ StatusCode AthenaPoolCnvSvc::connectOutput(const std::string& outputConnectionSp
    if (streamClient == m_streamClientFiles.size()) {
       m_streamClientFiles.push_back(outputConnectionSpec);
    }
+   unsigned int contextId = IPoolSvc::kOutputStream;
+   if (m_persSvcPerOutput) contextId = m_poolSvc->getOutputContext(m_outputConnectionSpec);
    try {
-      if (!m_poolSvc->connect(pool::ITransaction::UPDATE).isSuccess()) {
+      if (!m_poolSvc->connect(pool::ITransaction::UPDATE, contextId).isSuccess()) {
          ATH_MSG_ERROR("connectOutput FAILED to open an UPDATE transaction.");
          return(StatusCode::FAILURE);
       }
@@ -338,10 +335,20 @@ StatusCode AthenaPoolCnvSvc::connectOutput(const std::string& outputConnectionSp
       ATH_MSG_ERROR("connectOutput - caught exception: " << e.what());
       return(StatusCode::FAILURE);
    }
-   if (!processPoolAttributes(m_domainAttr, m_outputConnectionSpec, IPoolSvc::kOutputStream).isSuccess()) {
+   if (std::find(m_contextAttr.begin(), m_contextAttr.end(), contextId) == m_contextAttr.end()) {
+      m_contextAttr.push_back(contextId);
+      // Setting default 'TREE_MAX_SIZE' for ROOT to 1024 GB to avoid file chains.
+      std::vector<std::string> maxFileSize;
+      maxFileSize.push_back("TREE_MAX_SIZE");
+      maxFileSize.push_back("1099511627776L");
+      m_domainAttr.push_back(maxFileSize);
+      // Extracting OUTPUT POOL ItechnologySpecificAttributes for Domain, Database and Container.
+      extractPoolAttributes(m_poolAttr, &m_containerAttr, &m_databaseAttr, &m_domainAttr);
+   }
+   if (!processPoolAttributes(m_domainAttr, m_outputConnectionSpec, contextId).isSuccess()) {
       ATH_MSG_DEBUG("connectOutput failed process POOL domain attributes.");
    }
-   if (!processPoolAttributes(m_databaseAttr, m_outputConnectionSpec, IPoolSvc::kOutputStream).isSuccess()) {
+   if (!processPoolAttributes(m_databaseAttr, m_outputConnectionSpec, contextId).isSuccess()) {
       ATH_MSG_DEBUG("connectOutput failed process POOL database attributes.");
    }
    return(StatusCode::SUCCESS);
@@ -511,23 +518,25 @@ StatusCode AthenaPoolCnvSvc::commitOutput(const std::string& outputConnectionSpe
    if (m_doChronoStat) {
       m_chronoStatSvc->chronoStart("commitOutput");
    }
-   if (!processPoolAttributes(m_domainAttr, m_outputConnectionSpec, IPoolSvc::kOutputStream).isSuccess()) {
+   unsigned int contextId = IPoolSvc::kOutputStream;
+   if (m_persSvcPerOutput) contextId = m_poolSvc->getOutputContext(m_outputConnectionSpec);
+   if (!processPoolAttributes(m_domainAttr, m_outputConnectionSpec, contextId).isSuccess()) {
       ATH_MSG_DEBUG("commitOutput failed process POOL domain attributes.");
    }
-   if (!processPoolAttributes(m_databaseAttr, m_outputConnectionSpec, IPoolSvc::kOutputStream).isSuccess()) {
+   if (!processPoolAttributes(m_databaseAttr, m_outputConnectionSpec, contextId).isSuccess()) {
       ATH_MSG_DEBUG("commitOutput failed process POOL database attributes.");
    }
-   if (!processPoolAttributes(m_containerAttr, m_outputConnectionSpec, IPoolSvc::kOutputStream).isSuccess()) {
+   if (!processPoolAttributes(m_containerAttr, m_outputConnectionSpec, contextId).isSuccess()) {
       ATH_MSG_DEBUG("commitOutput failed process POOL container attributes.");
    }
    try {
       if (doCommit) {
-         if (!m_poolSvc->commit(IPoolSvc::kOutputStream).isSuccess()) {
+         if (!m_poolSvc->commit(contextId).isSuccess()) {
             ATH_MSG_ERROR("commitOutput FAILED to commit OutputStream.");
             return(StatusCode::FAILURE);
          }
       } else {
-         if (!m_poolSvc->commitAndHold(IPoolSvc::kOutputStream).isSuccess()) {
+         if (!m_poolSvc->commitAndHold(contextId).isSuccess()) {
             ATH_MSG_ERROR("commitOutput FAILED to commitAndHold OutputStream.");
             return(StatusCode::FAILURE);
          }
@@ -544,7 +553,7 @@ StatusCode AthenaPoolCnvSvc::commitOutput(const std::string& outputConnectionSpe
       iter->second.Destruct(iter->first);
    }
    // Check FileSize
-   long long int currentFileSize = m_poolSvc->getFileSize(m_outputConnectionSpec, m_dbType.type(), IPoolSvc::kOutputStream);
+   long long int currentFileSize = m_poolSvc->getFileSize(m_outputConnectionSpec, m_dbType.type(), contextId);
    if (m_databaseMaxFileSize.find(m_outputConnectionSpec) != m_databaseMaxFileSize.end()) {
       if (currentFileSize > m_databaseMaxFileSize[m_outputConnectionSpec]) {
          ATH_MSG_WARNING("FileSize > MaxFileSize for " << m_outputConnectionSpec);
@@ -589,7 +598,9 @@ StatusCode AthenaPoolCnvSvc::disconnectOutput() {
    m_domainAttr.push_back(maxFileSize);
    // Extracting OUTPUT POOL ItechnologySpecificAttributes for Domain, Database and Container.
    extractPoolAttributes(m_poolAttr, &m_containerAttr, &m_databaseAttr, &m_domainAttr);
-   return(m_poolSvc->disconnect(IPoolSvc::kOutputStream));
+   unsigned int contextId = IPoolSvc::kOutputStream;
+   if (m_persSvcPerOutput) contextId = m_poolSvc->getOutputContext(m_outputConnectionSpec);
+   return(m_poolSvc->disconnect(contextId));
 }
 //______________________________________________________________________________
 const std::string& AthenaPoolCnvSvc::getOutputConnectionSpec() const {
@@ -641,7 +652,7 @@ IPoolSvc* AthenaPoolCnvSvc::getPoolSvc() {
    return(&*m_poolSvc);
 }
 //______________________________________________________________________________
-const Token* AthenaPoolCnvSvc::registerForWrite(const Placement* placement,
+const Token* AthenaPoolCnvSvc::registerForWrite(Placement* placement,
 		const void* obj,
 		const RootType& classDesc) const {
    if (m_doChronoStat) {
@@ -763,6 +774,11 @@ const Token* AthenaPoolCnvSvc::registerForWrite(const Placement* placement,
             token = m_poolSvc->registerForWrite(placement, obj, classDesc);
          }
       } else {
+         if (m_persSvcPerOutput) {
+            char text[32];
+            ::sprintf(text, "[CTXT=%08X]", m_poolSvc->getOutputContext(placement->fileName()));
+            placement->setAuxString(text);
+         }
          token = m_poolSvc->registerForWrite(placement, obj, classDesc);
       }
    }
@@ -1115,6 +1131,7 @@ AthenaPoolCnvSvc::AthenaPoolCnvSvc(const std::string& name, ISvcLocator* pSvcLoc
    declareProperty("PrintInputAttrPerEvt", m_inputPoolAttrPerEvent);
    declareProperty("MaxFileSizes", m_maxFileSizes);
    declareProperty("CommitInterval", m_commitInterval = 0);
+   declareProperty("PersSvcPerOutput", m_persSvcPerOutput = false);
    declareProperty("SkipFirstChronoCommit", m_skipFirstChronoCommit = false);
    declareProperty("InputStreamingTool", m_inputStreamingTool);
    declareProperty("OutputStreamingTool", m_outputStreamingTool);
@@ -1248,7 +1265,7 @@ StatusCode AthenaPoolCnvSvc::processPoolAttributes(std::vector<std::vector<std::
                if (m_poolSvc->setAttribute(opt, data, m_dbType.type(), fileName, cont, contextId).isSuccess()) {
                   ATH_MSG_DEBUG("setAttribute " << opt << " to " << data << " for db: " << fileName << " and cont: " << cont);
                   if (doClear) {
-                     if (file.substr(0, 1) == "*") {
+                     if (file.substr(0, 1) == "*" && !m_persSvcPerOutput) {
                         (*iter)[2] += "," + fileName + ",";
                      } else {
                         iter->clear();
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.h b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.h
index cf7bf62e3e06221228c26363a2d4c60732388826..11bdea8b082a99641fa09a47d8e70c9227d8638c 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.h
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.h
@@ -97,7 +97,7 @@ public:
    /// @param placement [IN] pointer to the placement hint
    /// @param obj [IN] pointer to the Data Object to be written to Pool
    /// @param classDesc [IN] pointer to the Seal class description for the Data Object.
-   const Token* registerForWrite(const Placement* placement,
+   const Token* registerForWrite(Placement* placement,
 	   const void* obj,
 	   const RootType& classDesc) const;
 
@@ -215,6 +215,7 @@ private: // properties
    std::vector<std::vector<std::string> > m_domainAttr;
    std::vector<std::vector<std::string> > m_databaseAttr;
    std::vector<std::vector<std::string> > m_containerAttr;
+   std::vector<unsigned int> m_contextAttr;
    /// Input PoolAttributes, vector with names and values of technology specific attributes for POOL
    StringArrayProperty m_inputPoolAttr;
    std::vector<std::vector<std::string> > m_inputAttr;
@@ -235,6 +236,10 @@ private: // properties
    /// default = 0.
    IntegerProperty m_commitInterval;
 
+   /// PersSvcPerOutput,boolean property to use multiple persistency services, one per output stream.
+   /// default = false.
+   BooleanProperty m_persSvcPerOutput;
+
    /// SkipFirstChronoCommit, boolean property to skip the first commit in the chrono stats so the first
    /// container being committed to disk is not 'tainted' with the POOL overhead
    BooleanProperty m_skipFirstChronoCommit;
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/test/TestCnvSvcBase.icc b/Database/AthenaPOOL/AthenaPoolCnvSvc/test/TestCnvSvcBase.icc
index a245f02b89af2ba0675e2adb82a968ae8904044b..054ea5cc3f3320d8137bd9d16fe4f0f8766399d9 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/test/TestCnvSvcBase.icc
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/test/TestCnvSvcBase.icc
@@ -36,7 +36,7 @@ public:
   { std::abort(); }
   virtual IPoolSvc* getPoolSvc() override
   { std::abort(); }
-  virtual const Token* registerForWrite(const Placement* /*placement*/,
+  virtual const Token* registerForWrite(Placement* /*placement*/,
                                         const void* /*obj*/,
                                         const RootType& /*classDesc*/) const override
   { std::abort(); }
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ConcatJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ConcatJobOptions.py
index 440bf286a945013a596a151247855e3de63d1813..497e919558409cc32633afc00b89e8e455ad413d 100755
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ConcatJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ConcatJobOptions.py
@@ -37,8 +37,6 @@ import AthenaPoolCnvSvc.AthenaPool
 #Explicitly specify the output file catalog
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalog1.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #--------------------------------------------------------------
 # Private Application Configuration options
 #--------------------------------------------------------------
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_CopyJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_CopyJobOptions.py
index 5c3595e1abd1b8dab79f0cc57d0ee24f067dc876..92f0f4cf06f89a9484d7d2c4d8b2d3ddaf67e257 100644
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_CopyJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_CopyJobOptions.py
@@ -63,10 +63,6 @@ from PoolSvc.PoolSvcConf import PoolSvc
 svcMgr += PoolSvc()
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalog1.xml"
 
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-svcMgr += AthenaPoolCnvSvc()
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #--------------------------------------------------------------
 # Private Application Configuration options
 #--------------------------------------------------------------
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_FilterJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_FilterJobOptions.py
index 2697ef2a3b94aa8faf9e959c12dba30dca9a4e75..6faea9708dc3b7f589056f3072ac261482f93dc5 100755
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_FilterJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_FilterJobOptions.py
@@ -66,8 +66,6 @@ svcMgr.EventSelector.Query = "EventNumber > 5"
 svcMgr.PoolSvc.ReadCatalog = [ "file:Catalog.xml" ]
 svcMgr.PoolSvc.WriteCatalog = "file:Catalog1.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 from AthenaPoolExampleAlgorithms.AthenaPoolExampleAlgorithmsConf import AthPoolEx__QueryTag
 QueryTag = AthPoolEx__QueryTag("QueryTag")
 svcMgr.EventSelector.HelperTools = [ QueryTag ]
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RFilterJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RFilterJobOptions.py
index c991462c281dab3f0917710bf8a040e3adf61efc..cf2c6a6adb91148d35380dbeef4a7b58bd08a199 100755
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RFilterJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RFilterJobOptions.py
@@ -68,8 +68,6 @@ svcMgr.PoolSvc.ReadCatalog = [ "file:Catalog.xml" ]
 svcMgr.PoolSvc.ReadCatalog += [ "file:Catalog1.xml" ]
 svcMgr.PoolSvc.WriteCatalog = "file:Catalog2.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #from EventSelectorAthenaPool.EventSelectorAthenaPoolConf import TagRemappingTool
 #TagRemappingTool = TagRemappingTool("TagRemappingTool")
 #TagRemappingTool.JoinListKey = "Stream1_ref"
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RWJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RWJobOptions.py
index daef84be46304348b19702a60a656fd30dd9d8d8..a08a5d9af2a0b599a66355b8efef7397f168e7eb 100755
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RWJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RWJobOptions.py
@@ -62,8 +62,6 @@ svcMgr.EventSelector.InputCollections = [ "SimplePoolFile1.root" ]; # ** mandato
 svcMgr.PoolSvc.ReadCatalog = [ "file:Catalog.xml" ]
 svcMgr.PoolSvc.WriteCatalog = "file:Catalog1.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #--------------------------------------------------------------
 # Private Application Configuration options
 #--------------------------------------------------------------
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteAgainJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteAgainJobOptions.py
index 620ae1e040bac7c210cf51d5d77960f5be12112c..445d033046697c8d492a1de4973e61f8a1ed4e54 100644
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteAgainJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteAgainJobOptions.py
@@ -62,8 +62,6 @@ svcMgr.EventSelector.InputCollections = [ "SimplePoolReplica1.root" ]; # ** mand
 svcMgr.PoolSvc.ReadCatalog = [ "file:Catalog.xml" ]
 svcMgr.PoolSvc.WriteCatalog = "file:Catalog1.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #--------------------------------------------------------------
 # Private Application Configuration options
 #--------------------------------------------------------------
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteNextJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteNextJobOptions.py
index b4bb295563dadbd218501422a6ff75eb1a86caa0..f4510a1c54fc23e467a4e15cf7dd3f1042f2bdeb 100644
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteNextJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_ReWriteNextJobOptions.py
@@ -62,8 +62,6 @@ svcMgr.EventSelector.InputCollections = [ "SimplePoolFile3.root" ]; # ** mandato
 svcMgr.PoolSvc.ReadCatalog = [ "file:Catalog.xml" ]
 svcMgr.PoolSvc.WriteCatalog = "file:Catalog1.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 #--------------------------------------------------------------
 # Private Application Configuration options
 #--------------------------------------------------------------
diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_WMetaJobOptions.py b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_WMetaJobOptions.py
index 0f9b53d4f9a42698eeefc5e154f09e7118c93fcc..f674bbe0246621dab6100fa551fede3b134b2789 100755
--- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_WMetaJobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_WMetaJobOptions.py
@@ -36,8 +36,6 @@ import AthenaPoolCnvSvc.WriteAthenaPool
 #Explicitly specify the output file catalog
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalog2.xml"
 
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 Stream1 = AthenaPoolOutputStream( "Stream1", "ROOTTREE:SimplePoolFile5.root", noTag=True )
 Stream1.ItemList += [ "ExampleHitContainer#MyHits" ]
diff --git a/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h b/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h
index 3629f8e167c29337cf109a725fa4e20828747654..4db033b2555a32d6ac29f17c8a1d272a15190f1d 100644
--- a/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h
+++ b/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h
@@ -56,6 +56,10 @@ public: // Non-static members
    /// @param token [IN] token of the Data Object for which a Pool Ref is filled.
    virtual void setObjPtr(void*& obj, const Token* token) const = 0;
 
+   /// @return an Id for an output context (POOL persistency service) and create it if needed.
+   /// @param label [IN] string label to name new context and allow sharing (returns existing contextId)
+   virtual unsigned int getOutputContext(const std::string& label) = 0;
+
    /// @return an Id for an input context (POOL persistency service) and create it if needed.
    /// @param label [IN] string label to name new context and allow sharing (returns existing contextId)
    /// @param maxFile [IN] maximum number of open input files.
diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
index 1ffbeabd6a609ad92272ed1bd79889ee5ca8bcb7..0b02cf28d7d6ec1284cddf201d45988a3e1a9403 100644
--- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
+++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx
@@ -263,8 +263,11 @@ StatusCode PoolSvc::finalize() {
 //__________________________________________________________________________
 StatusCode PoolSvc::io_finalize() {
    ATH_MSG_INFO("I/O finalization...");
-   if (!disconnect(IPoolSvc::kOutputStream).isSuccess()) {
-      ATH_MSG_WARNING("Cannot disconnect output Stream");
+   for (size_t i = 0; i < m_persistencySvcVec.size(); i++) {
+      if (m_persistencySvcVec[i]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR &&
+	      !disconnect(i).isSuccess()) {
+         ATH_MSG_WARNING("Cannot disconnect output Stream " << i);
+      }
    }
    for (const auto& persistencySvc : m_persistencySvcVec) {
       delete persistencySvc;
@@ -295,8 +298,21 @@ StatusCode PoolSvc::queryInterface(const InterfaceID& riid, void** ppvInterface)
 const Token* PoolSvc::registerForWrite(const Placement* placement,
                                        const void* obj,
                                        const RootType& classDesc) const {
-   std::lock_guard<CallMutex> lock(*m_pers_mut[IPoolSvc::kOutputStream]);
-   Token* token = m_persistencySvcVec[IPoolSvc::kOutputStream]->registerForWrite(*placement, obj, classDesc);
+   unsigned int contextId = IPoolSvc::kOutputStream;
+   const std::string& auxString = placement->auxString();
+   if (!auxString.empty()) {
+      if (auxString.substr(0, 6) == "[CTXT=") {
+         ::sscanf(auxString.c_str(), "[CTXT=%08X]", &contextId);
+      } else if (auxString.substr(0, 8) == "[CLABEL=") {
+         contextId = const_cast<PoolSvc*>(this)->getOutputContext(auxString);//FIXME?
+      }
+      if (contextId >= m_persistencySvcVec.size()) {
+         ATH_MSG_WARNING("registerForWrite: Using default output Stream instead of id = " << contextId);
+         contextId = IPoolSvc::kOutputStream;
+      }
+   }
+   std::lock_guard<CallMutex> lock(*m_pers_mut[contextId]);
+   Token* token = m_persistencySvcVec[contextId]->registerForWrite(*placement, obj, classDesc);
    if (token == nullptr) {
       ATH_MSG_WARNING("Cannot write object: " << placement->containerName());
    }
@@ -329,6 +345,33 @@ void PoolSvc::setObjPtr(void*& obj, const Token* token) const {
    }
 }
 //__________________________________________________________________________
+unsigned int PoolSvc::getOutputContext(const std::string& label) {
+   std::lock_guard<CallMutex> lock(m_pool_mut);
+   if (m_mainOutputLabel.empty()) {
+      m_mainOutputLabel = label;
+      m_contextLabel.insert(std::pair<std::string, unsigned int>(label, IPoolSvc::kOutputStream));
+   }
+   if (label == m_mainOutputLabel || label.empty()) {
+      return(IPoolSvc::kOutputStream);
+   }
+   std::map<std::string, unsigned int>::const_iterator contextIter = m_contextLabel.find(label);
+   if (contextIter != m_contextLabel.end()) {
+      return(contextIter->second);
+   }
+   const unsigned int id = m_persistencySvcVec.size();
+   m_persistencySvcVec.push_back(pool::IPersistencySvc::create(*m_catalog).release());
+   m_pers_mut.push_back(new CallMutex);
+   pool::DatabaseConnectionPolicy policy;
+   policy.setWriteModeForNonExisting(pool::DatabaseConnectionPolicy::CREATE);
+   policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::OVERWRITE);
+   if (m_fileOpen.value() == "update") {
+      policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::UPDATE);
+   }
+   m_persistencySvcVec[id]->session().setDefaultConnectionPolicy(policy);
+   m_contextLabel.insert(std::pair<std::string, unsigned int>(label, id));
+   return(id);
+}
+//__________________________________________________________________________
 unsigned int PoolSvc::getInputContext(const std::string& label, unsigned int maxFile) {
    std::lock_guard<CallMutex> lock(m_pool_mut);
    if (!label.empty()) {
@@ -344,7 +387,7 @@ unsigned int PoolSvc::getInputContext(const std::string& label, unsigned int max
    m_persistencySvcVec.push_back( pool::IPersistencySvc::create(*m_catalog).release() );
    m_pers_mut.push_back(new CallMutex);
    if (!connect(pool::ITransaction::READ).isSuccess()) {
-      ATH_MSG_ERROR("Failed to connect Input PersistencySvc.");
+      ATH_MSG_WARNIND("Failed to connect Input PersistencySvc: " << id);
       return(IPoolSvc::kInputStream);
    }
    if (!label.empty()) {
@@ -413,9 +456,7 @@ pool::ICollection* PoolSvc::createCollection(const std::string& collectionType,
       }
    }
    std::lock_guard<CallMutex> lock(m_pool_mut);
-   if (openMode != pool::ICollection::READ) {
-      contextId = IPoolSvc::kOutputStream;
-   } else {
+   if (openMode == pool::ICollection::READ) {
       if (contextId > m_persistencySvcVec.size()) {
          contextId = IPoolSvc::kInputStream;
       } else if (contextId == m_persistencySvcVec.size()) {
@@ -473,7 +514,8 @@ pool::ICollection* PoolSvc::createCollection(const std::string& collectionType,
    pool::CollectionFactory* collFac = pool::CollectionFactory::get();
    pool::CollectionDescription collDes(collection, collectionType, collectionType == "ImplicitCollection" ? connection : "");
    pool::ICollection* collPtr = nullptr;
-   if (collectionType == "RootCollection" && contextId == IPoolSvc::kOutputStream) {
+   if (collectionType == "RootCollection" &&
+	   m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) {
       ATH_MSG_INFO("Writing ExplicitROOT Collection - do not pass session pointer");
       collPtr = collFac->create(collDes, openMode);
    } else {
@@ -542,11 +584,16 @@ Token* PoolSvc::getToken(const std::string& connection,
 StatusCode PoolSvc::connect(pool::ITransaction::Type type, unsigned int contextId) const {
    std::lock_guard<CallMutex> lock(m_pool_mut);
    if (type != pool::ITransaction::READ) {
-      contextId = IPoolSvc::kOutputStream;
+      if (contextId >= m_persistencySvcVec.size()) {
+         ATH_MSG_WARNING("connect: Using default output Stream instead of id = " << contextId);
+         contextId = IPoolSvc::kOutputStream;
+      }
    } else {
       if (contextId > m_persistencySvcVec.size()) {
+         ATH_MSG_WARNING("connect: Using default input Stream instead of id = " << contextId);
          contextId = IPoolSvc::kInputStream;
       } else if (contextId == m_persistencySvcVec.size()) {
+         ATH_MSG_INFO("Connecting to InputStream for: " << contextId);
          contextId = const_cast<PoolSvc*>(this)->getInputContext("");
       }
    }
@@ -642,7 +689,7 @@ long long int PoolSvc::getFileSize(const std::string& dbName, long tech, unsigne
       return 0; // failure
    }
    if (dbH->openMode() == pool::IDatabase::CLOSED) {
-      if (contextId == IPoolSvc::kOutputStream) {
+      if (m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) {
          dbH->setTechnology(tech);
          dbH->connectForWrite();
       } else {
@@ -687,7 +734,7 @@ StatusCode PoolSvc::getAttribute(const std::string& optName,
       return(StatusCode::FAILURE);
    }
    if (dbH->openMode() == pool::IDatabase::CLOSED) {
-      if (contextId == IPoolSvc::kOutputStream) {
+      if (m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) {
          dbH->setTechnology(tech);
          dbH->connectForWrite();
       } else {
@@ -764,7 +811,7 @@ StatusCode PoolSvc::setAttribute(const std::string& optName,
       return(StatusCode::FAILURE);
    }
    if (dbH->openMode() == pool::IDatabase::CLOSED) {
-      if (contextId == IPoolSvc::kOutputStream) {
+      if (m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) {
          dbH->setTechnology(tech);
          dbH->connectForWrite();
       } else {
@@ -774,7 +821,7 @@ StatusCode PoolSvc::setAttribute(const std::string& optName,
    bool retError = false;
    std::string objName;
    bool hasTTreeName = (contName.length() > 6 && contName.substr(0, 6) == "TTree=");
-   if (contName.empty() || hasTTreeName || contextId != IPoolSvc::kOutputStream) {
+   if (contName.empty() || hasTTreeName || m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() == pool::DatabaseConnectionPolicy::RAISE_ERROR) {
       objName = hasTTreeName ? contName.substr(6) : contName;
       if (data[data.size() - 1] == 'L') {
          retError = dbH->technologySpecificAttributes().setAttribute<long long int>(optName, atoll(data.c_str()), objName);
@@ -924,6 +971,7 @@ PoolSvc::PoolSvc(const std::string& name, ISvcLocator* pSvcLocator) :
 	m_persistencySvcVec(),
 	m_pers_mut(),
 	m_contextLabel(),
+	m_mainOutputLabel(),
 	m_contextMaxFile(),
 	m_guidLists() {
    declareProperty("WriteCatalog", m_writeCatalog = "xmlcatalog_file:PoolFileCatalog.xml");
@@ -951,11 +999,12 @@ std::unique_ptr<pool::IDatabase> PoolSvc::getDbHandle(unsigned int contextId, co
    pool::ISession& sesH = m_persistencySvcVec[contextId]->session();
    if (!sesH.transaction().isActive()) {
       pool::ITransaction::Type transMode = pool::ITransaction::READ;
-      if (contextId == IPoolSvc::kOutputStream) {
+      if (m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) {
          transMode = pool::ITransaction::UPDATE;
       }
+      ATH_MSG_DEBUG("Start transaction, type = " << transMode);
       if (!sesH.transaction().start(transMode)) {
-         ATH_MSG_DEBUG("Failed to start transaction, type = " << transMode);
+         ATH_MSG_WARNING("Failed to start transaction, type = " << transMode);
          return(nullptr);
       }
    }
diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
index f3e51efd7b6cc9552d27daffc9f9f8d199c1ec79..b71bbe6f32d3bd5be3772dd1fc582ecd6d13b103 100644
--- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
+++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h
@@ -62,6 +62,10 @@ public: // Non-static members
    /// @param token [IN] token of the Data Object for which a Pool Ref is filled.
    void setObjPtr(void*& obj, const Token* token) const;
 
+   /// @return an Id for an output context (POOL persistency service) and create it if needed.
+   /// @param label [IN] string label to name new context and allow sharing (returns existing contextId)
+   unsigned int getOutputContext(const std::string& label);
+
    /// @return an Id for an input context (POOL persistency service) and create it if needed.
    /// @param label [IN] string label to name new context and allow sharing (returns existing contextId)
    /// @param maxFile [IN] maximum number of open input files.
@@ -183,6 +187,7 @@ private: // data
    std::vector<pool::IPersistencySvc*>               m_persistencySvcVec;
    mutable std::vector<CallMutex*>                   m_pers_mut;
    std::map<std::string, unsigned int>               m_contextLabel;
+   std::string                                       m_mainOutputLabel;
    std::map<unsigned int, unsigned int>              m_contextMaxFile;
    // Cache for open file guids for each m_persistencySvcVec member, protected by m_pers_mut
    mutable std::map<unsigned int, std::list<Guid> >  m_guidLists;
diff --git a/Database/RegistrationServices/src/RegistrationStreamLCGTool.cxx b/Database/RegistrationServices/src/RegistrationStreamLCGTool.cxx
index e16c07c3ca0ff2ee00a6fd8d5e9a331cce8dd795..b0b6e0c2edbfa2ea252195a8c8dee04aa1ff3222 100755
--- a/Database/RegistrationServices/src/RegistrationStreamLCGTool.cxx
+++ b/Database/RegistrationServices/src/RegistrationStreamLCGTool.cxx
@@ -260,7 +260,8 @@ RegistrationStreamLCGTool::initCollection()
            m_collection = m_poolSvc->createCollection(collectionType,
                                                       connection,
                                                       m_outputCollection.value(),
-                                                      openMode);
+                                                      openMode,
+                                                      IPoolSvc::kOutputStream);
        }
        catch (std::exception& e) {
            msg(MSG::ERROR) << "::initCollection: Caught exception from Pool collection creation. Message: " 
diff --git a/Generators/EvgenJobTransforms/share/skeleton.ABtoEVGEN.py b/Generators/EvgenJobTransforms/share/skeleton.ABtoEVGEN.py
index 558642bb23744dc2bfd8a26c338d3677ab04f3ee..21e6e3fc2d4ce9101d7f772fde167fcd6d21e880 100644
--- a/Generators/EvgenJobTransforms/share/skeleton.ABtoEVGEN.py
+++ b/Generators/EvgenJobTransforms/share/skeleton.ABtoEVGEN.py
@@ -321,9 +321,6 @@ if evgenConfig.findJets:
 
 ## Configure POOL streaming to the output EVNT format file
 from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-#from PoolSvc.PoolSvcConf import PoolSvc
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10 #< tweak for MC needs
 if hasattr(runArgs, "outputEVNTFile"):
   poolFile = runArgs.outputEVNTFile
 elif hasattr(runArgs, "outputEVNT_PreFile"):
diff --git a/Generators/EvgenJobTransforms/share/skeleton.GENtoEVGEN.py b/Generators/EvgenJobTransforms/share/skeleton.GENtoEVGEN.py
index 52dab345c7f76180ac15ddcf86a7313486d7dc9d..f9d0e418bb38e3bb0416acf93b7c715ac87e0109 100644
--- a/Generators/EvgenJobTransforms/share/skeleton.GENtoEVGEN.py
+++ b/Generators/EvgenJobTransforms/share/skeleton.GENtoEVGEN.py
@@ -339,9 +339,6 @@ if evgenConfig.findJets:
 
 ## Configure POOL streaming to the output EVNT format file
 from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-#from PoolSvc.PoolSvcConf import PoolSvc
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10 #< tweak for MC needs
 if hasattr(runArgs, "outputEVNTFile"):
   poolFile = runArgs.outputEVNTFile
 elif hasattr(runArgs, "outputEVNT_PreFile"):
diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/share/Pixel_main.py b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/share/Pixel_main.py
index fab979ced159243be102c2d526295eefd4ea3cae..0d8ee8434c38d50b862672c1c63a1ad1406af9ee 100644
--- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/share/Pixel_main.py
+++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/share/Pixel_main.py
@@ -162,8 +162,6 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO):
   from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
   # --- check dictionary
   ServiceMgr.AthenaSealSvc.CheckDictionary = True
-  # --- commit interval (test)
-  ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
   
   if doWriteESD:
     # --- create stream
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
index 80e3e20bafea5695f1acaf157e0b347ddcad8d1c..43fa4afd36414a6ae03adbb6d42d88393b2772dc 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
@@ -211,8 +211,6 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO):
   from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
   # --- check dictionary
   ServiceMgr.AthenaSealSvc.CheckDictionary = True
-  # --- commit interval (test)
-  ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 # MC truth information
   if doWriteESD or doWriteAOD:
diff --git a/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_ITk_jobOptions.py b/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_ITk_jobOptions.py
index 08ad02eaf963398e266c7b6121e3889dd97cac3d..80391aa092453d52f555d194092ce4820f7e213a 100644
--- a/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_ITk_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_ITk_jobOptions.py
@@ -113,7 +113,6 @@ from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 # --- commit interval (test)
 ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 MaterialStream              = AthenaPoolOutputStream ( 'MaterialStream' )
 MaterialStream.OutputFile   =   "MaterialStepCollection.root"
 MaterialStream.ItemList    += [ 'Trk::MaterialStepCollection#*']
diff --git a/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_jobOptionsOverride.py b/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_jobOptionsOverride.py
index 7975b16c92e5bb577e2f96e97882b6e7e8609e19..a0c5fa39401a81f3cc5a810a239899c8643c86f9 100755
--- a/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_jobOptionsOverride.py
+++ b/InnerDetector/InDetExample/InDetSLHC_Example/share/GeantinoMapping_jobOptionsOverride.py
@@ -109,7 +109,6 @@ from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 # --- commit interval (test)
 ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 MaterialStream              = AthenaPoolOutputStream ( 'MaterialStream' )
 MaterialStream.OutputFile   = outPath + "MaterStepFile.root" 
 MaterialStream.ItemList    += [ 'MaterialStepVector#*']
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonMonLoadPoolSupport.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonMonLoadPoolSupport.py
index 6915eac28bd6940f4bedd3dbe7010ad8d7e8d41f..9930f0679c716a4bb038cb98ea9368faf51ce259 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonMonLoadPoolSupport.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonMonLoadPoolSupport.py
@@ -10,7 +10,3 @@ from AthenaCommon.AppMgr import ServiceMgr as svcMgr
 from PoolSvc.PoolSvcConf import PoolSvc
 svcMgr += PoolSvc()
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalog1.xml"
- 
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-svcMgr += AthenaPoolCnvSvc()
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadGenEvent_jobOptions.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadGenEvent_jobOptions.py
index a4d9a69201530039648adacc5de13f67a644ec15..69c113a7b035bba4ceca3acaa84ef60d74732c8a 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadGenEvent_jobOptions.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadGenEvent_jobOptions.py
@@ -101,9 +101,6 @@ import os
 outStream.OutputFile = OUTPUT
 outStream.ForceRead = True  #force read of output data objs
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 #--------------------------------------------------------------
 # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
 #--------------------------------------------------------------
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadTruthParticles_jobOptions.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadTruthParticles_jobOptions.py
index 70f0314679aeba1b6c2a8dce7a94dad62b0fda72..de89fd1809fd9c29d89f55ee3bd6770aa2ece9e8 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadTruthParticles_jobOptions.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_ReadTruthParticles_jobOptions.py
@@ -99,9 +99,6 @@ outStream.ItemList += [ "TruthParticleContainer#SpclMC" ]
 outStream.ItemList += [ "TruthEtIsolationsContainer#TruthEtIsol_GEN_EVENT" ]
 outStream.ItemList += [ "TruthEtIsolationsContainer#TruthEtIsol_GEN_AOD" ]
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 svcMgr.MessageSvc.defaultLimit = 4000000
 svcMgr.MessageSvc.OutputLevel  = ERROR
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteGenEvent_jobOptions.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteGenEvent_jobOptions.py
index 85e3ca809f10ceb5c9a0e0a08cc6c4f833936109..e883dca275fbdda23719331f669cfecbb17738fc 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteGenEvent_jobOptions.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteGenEvent_jobOptions.py
@@ -105,9 +105,6 @@ if not 'OUTPUT' in dir():
   pass
 outStream.OutputFile = OUTPUT
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 svcMgr.MessageSvc.defaultLimit = 4000000
 svcMgr.MessageSvc.OutputLevel  = INFO
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteTruthParticles_jobOptions.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteTruthParticles_jobOptions.py
index 97bda78591a427dda3f8883ac4e8cf110e59bee7..4f06a81a8a62d5926b02ec9b09dd8dcfc12dca00 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteTruthParticles_jobOptions.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/iotest_WriteTruthParticles_jobOptions.py
@@ -137,9 +137,6 @@ if 'OUTPUT' not in dir():
 outStream.OutputFile = OUTPUT
 outStream.ForceRead        = True  #force read of output data objs
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 svcMgr.MessageSvc.defaultLimit = 4000000
 svcMgr.MessageSvc.OutputLevel  = ERROR
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter.py
index 9fe5d0826810f744f3c169a3727abc9a6aa58410..9bbb1a98c092dcf7a5e781c20ad219e3d016b799 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter.py
@@ -80,9 +80,6 @@ import os
 outStream.OutputFile = OUTPUT
 outStream.ForceRead = True  #force read of output data objs
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 #--------------------------------------------------------------
 # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
 #--------------------------------------------------------------
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter_solution.py b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter_solution.py
index 6fd4926c4318e29064ffa9167da7122e76e3e2a2..ff36dcf07bfc4021239ded5e7c1bb9951ace2788 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter_solution.py
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTests/share/test_mcaodfilter_solution.py
@@ -88,9 +88,6 @@ import os
 outStream.OutputFile = OUTPUT
 outStream.ForceRead = True  #force read of output data objs
 
-## tweak the default commit interval
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 100
-
 #--------------------------------------------------------------
 # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
 #--------------------------------------------------------------
diff --git a/Reconstruction/RecExample/RecExCommon/share/RecoUtils.py b/Reconstruction/RecExample/RecExCommon/share/RecoUtils.py
index e84a97dffce08a39e3ffad2a48c5d5e5bbb29996..f431f191563902358f15c2c5fc436a3c9f8ed31f 100644
--- a/Reconstruction/RecExample/RecExCommon/share/RecoUtils.py
+++ b/Reconstruction/RecExample/RecExCommon/share/RecoUtils.py
@@ -151,7 +151,6 @@ if rec.doTimeLimit():
 # rather use default athenapool value
 if rec.doPersistencyOptimization() and hasattr(svcMgr, 'AthenaPoolCnvSvc'):
     svcMgr.AthenaPoolCnvSvc.MaxFileSizes = [ "12000000000" ]
-    svcMgr.AthenaPoolCnvSvc.CommitInterval = 1000000000
 
     svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "TREE_BRANCH_OFFSETTAB_LEN ='100'" ]
     
diff --git a/Tools/ValgrindRTTJobs/share/McGenerationPythia.py b/Tools/ValgrindRTTJobs/share/McGenerationPythia.py
index bd2f94f140edf124e623e9587e19f07b130c24bf..6ed2f1b776124c09315101a580abb11f0e1f538d 100644
--- a/Tools/ValgrindRTTJobs/share/McGenerationPythia.py
+++ b/Tools/ValgrindRTTJobs/share/McGenerationPythia.py
@@ -63,14 +63,6 @@ topAlg+=ValgrindHelperAlg()
 # Pool Persistency
 #---------------------------------------------------------------
 from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
-
-## tweak the default commit interval for montecarlo needs
-from AthenaCommon.AppMgr import ServiceMgr as svcMgr
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10
-
-from PoolSvc.PoolSvcConf import PoolSvc
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-
 Stream1 = AthenaPoolOutputStream("Stream1")
 Stream1.ItemList += ["EventInfo#*", "McEventCollection#*" ]
 # Stream1.ForceRead=True
diff --git a/Tracking/TrkDetDescr/TrkDetDescrUnitTests/share/TrkDetDescrTPCnvTest_jobOptions.py b/Tracking/TrkDetDescr/TrkDetDescrUnitTests/share/TrkDetDescrTPCnvTest_jobOptions.py
index 9836ff1c8530296d6a08425f166e6fec3b4920a2..7b0111eac328f06ed6e8395440545bf8b90840b3 100644
--- a/Tracking/TrkDetDescr/TrkDetDescrUnitTests/share/TrkDetDescrTPCnvTest_jobOptions.py
+++ b/Tracking/TrkDetDescr/TrkDetDescrUnitTests/share/TrkDetDescrTPCnvTest_jobOptions.py
@@ -88,7 +88,6 @@ if WriteFile :
     ServiceMgr.AthenaSealSvc.CheckDictionary   = True
     # --- commit interval (test)
     ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-    ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 1
     MaterialStream              = AthenaPoolOutputStream ( 'TrkDetDescrTPCnv' )
     MaterialStream.OutputFile   =   'TrkDetDescrTPCnvTest.root' 
     MaterialStream.ItemList    += [ 'Trk::MaterialStepCollection#'+MaterialStepCollectionName ]
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/EnergyLossSimulation_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/EnergyLossSimulation_jobOptions.py
index 8b8d73a064a06ad0dbc05e9011635afa0b02b92e..024257cdc813e608d2947c97cc99db64be04029a 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/EnergyLossSimulation_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/EnergyLossSimulation_jobOptions.py
@@ -103,7 +103,6 @@ ServiceMgr.THistSvc.Output += [ "val DATAFILE='/tmp/salzburg/EnergyLossRecorder.
 #ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 ## --- commit interval (test)
 #ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-#ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 #MaterialStream              = AthenaPoolOutputStream ( 'MaterialStream' )
 #MaterialStream.OutputFile   =   "MaterialStepFile.root"
 #MaterialStream.ItemList    += [ 'MaterialStepVector#*']
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
index 768921e05d60a78d27ee660f4057096ab6570b4c..21e3b8cddf5917a79a4bbcf6279c0e5c47789ac0 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
@@ -338,7 +338,6 @@ from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 ## --- commit interval (test)
 #ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 from AthenaCommon.AppMgr import ServiceMgr
 if not hasattr(ServiceMgr, 'THistSvc'):
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
index fe4884761c2a062fd09b8659e99ed8827f55efbe..cf553386d17ed52471b7050fe7c0357b88427dfc 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
@@ -334,7 +334,6 @@ from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 ## --- commit interval (test)
 #ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 
 from AthenaCommon.AppMgr import ServiceMgr
 if not hasattr(ServiceMgr, 'THistSvc'):
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
index a9c83882a4fd58fa91f750cd09f7659c8923b943..8347d6fd84fbc3862e1a2bc97f2094988d64d406 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
@@ -105,7 +105,6 @@ from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 ServiceMgr.AthenaSealSvc.CheckDictionary   = True
 # --- commit interval (test)
 ServiceMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
 MaterialStream              = AthenaPoolOutputStream ( 'MaterialStream' )
 MaterialStream.OutputFile   =   "MaterialStepFile.root"
 MaterialStream.ItemList    += [ 'Trk::MaterialStepCollection#*']
diff --git a/Trigger/TrigAnalysis/TrigDecisionMaker/python/TrigDecisionMakerConfig.py b/Trigger/TrigAnalysis/TrigDecisionMaker/python/TrigDecisionMakerConfig.py
index 758e3f6ce249d41ce1e744524bba6c7175747f58..8be4b3024fe29df37179c078bd46823b64118bbb 100644
--- a/Trigger/TrigAnalysis/TrigDecisionMaker/python/TrigDecisionMakerConfig.py
+++ b/Trigger/TrigAnalysis/TrigDecisionMaker/python/TrigDecisionMakerConfig.py
@@ -41,10 +41,6 @@ class TrigDecisionStream ( object) :
         from AthenaCommon.AppMgr import ServiceMgr as svcMgr
         svcMgr.PoolSvc.WriteCatalog = catalog
 
-        from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-        svcMgr += AthenaPoolCnvSvc()
-        svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
         # revert later from OutputStreamAthenaPool.OutputStreamAthenaPool import createOutputStream
         # revert later self.stream = createOutputStream( streamName )
 
@@ -79,10 +75,6 @@ class TrigConditionStream ( object) :
         svcMgr += PoolSvc()
         svcMgr.PoolSvc.WriteCatalog = catalog
 
-        from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-        svcMgr += AthenaPoolCnvSvc()
-        svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
         from OutputStreamAthenaPool.OutputStreamAthenaPool import AthenaPoolOutputConditionStream
         self.stream = AthenaPoolOutputConditionStream( streamName )
 
diff --git a/Trigger/TrigAnalysis/TrigDecisionMaker/share/trigDec_pureSteeringL2_WritePOOL.py b/Trigger/TrigAnalysis/TrigDecisionMaker/share/trigDec_pureSteeringL2_WritePOOL.py
index fcc650b7880ebc9492e9b4f5c7519340126a1ac0..664c23efbd9f993a4f2741cc9a2497c14380153c 100644
--- a/Trigger/TrigAnalysis/TrigDecisionMaker/share/trigDec_pureSteeringL2_WritePOOL.py
+++ b/Trigger/TrigAnalysis/TrigDecisionMaker/share/trigDec_pureSteeringL2_WritePOOL.py
@@ -60,10 +60,6 @@ from PoolSvc.PoolSvcConf import PoolSvc
 svcMgr += PoolSvc()
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalog1.xml"
 
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-svcMgr += AthenaPoolCnvSvc()
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
 
 Stream1 = AthenaPoolOutputStream( "Stream1" )
diff --git a/Trigger/TrigSteer/TrigSteering/share/pureSteering_jobOptionsWithPoolOutput.py b/Trigger/TrigSteer/TrigSteering/share/pureSteering_jobOptionsWithPoolOutput.py
index 80247cd16e01ac3e42a7295f9320d97719ed458d..19e74cda12e137fc198196d9fbdf8f2ca68c5dc9 100755
--- a/Trigger/TrigSteer/TrigSteering/share/pureSteering_jobOptionsWithPoolOutput.py
+++ b/Trigger/TrigSteer/TrigSteering/share/pureSteering_jobOptionsWithPoolOutput.py
@@ -111,11 +111,6 @@ import AthenaPoolCnvSvc.WriteAthenaPool
 from AthenaCommon.AppMgr import ServiceMgr as svcMgr
 svcMgr.PoolSvc.WriteCatalog = "xmlcatalog_file:Catalogue1.xml"
 
-from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc
-svcMgr += AthenaPoolCnvSvc()
-#svcMgr.AthenaPoolCnvSvc.OutputLevel = DEBUG
-svcMgr.AthenaPoolCnvSvc.CommitInterval = 10;
-
 from OutputStreamAthenaPool.OutputStreamAthenaPool import createOutputStream
 stream = createOutputStream( "Stream1" )