diff --git a/AtlasTest/TestTools/share/post.sh b/AtlasTest/TestTools/share/post.sh
index f9dd9f45c3848f378234a930682f368768313803..7d3f9bee13db15a1448314c32de06017360d6f20 100755
--- a/AtlasTest/TestTools/share/post.sh
+++ b/AtlasTest/TestTools/share/post.sh
@@ -118,6 +118,8 @@ PP="$PP"'|ClassIDSvc .* setTypeNameForID: .* already set for'
 PP="$PP"'|ClassIDSvc .* finalize: wrote .*'
 # PoolSvc
 PP="$PP"'|^PoolSvc.*INFO'
+# AlgTool auto-retrieve (Gaudi!1124)
+PP="$PP"'|^.*INFO\s+AlgTool:\s'
 # ignore any finalize output
 PP="$PP"'|^.*INFO [Ff]inali[sz]'
 # ignore rcs version comments
diff --git a/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx b/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx
index 045de175fac6cd4a59cb4877d2bad068ee4867db..416601e27f6463e785d1d3a17f218a2e337aa8f1 100644
--- a/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx
+++ b/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx
@@ -58,6 +58,8 @@ public:
   { std::abort(); }
   virtual void renounce(Gaudi::DataHandle&) override
   { std::abort(); }
+  virtual bool renounceInput(const DataObjID&) override
+  { std::abort(); }
   virtual unsigned long addRef() override
   { std::abort(); }
   virtual unsigned long release() override
diff --git a/Control/AthenaCommon/python/Configurable.py b/Control/AthenaCommon/python/Configurable.py
index 6fe8789e06a05aa023df4fca0ece26845c264cf7..9bc40db54eea96038bb54ea19e8092642d2c03a5 100755
--- a/Control/AthenaCommon/python/Configurable.py
+++ b/Control/AthenaCommon/python/Configurable.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # File: AthenaCommon/python/Configurable.py
 # Author: Wim Lavrijsen (WLavrijsen@lbl.gov)
@@ -11,6 +11,7 @@ from AthenaCommon import ConfigurableMeta
 
 # Note: load iProperty etc. from GaudiPython only as-needed
 import GaudiKernel.GaudiHandles as GaudiHandles
+import GaudiKernel.DataHandle as DataHandle
 
 ### data ---------------------------------------------------------------------
 __version__ = '3.2.0'
@@ -721,7 +722,9 @@ class Configurable(metaclass=ConfigurableMeta.ConfigurableMeta ):
                   vv = v.getGaudiHandle()
                else:
                   vv = v
-               if isinstance(vv,(GaudiHandles.GaudiHandle,GaudiHandles.GaudiHandleArray)):
+               if isinstance(vv,(GaudiHandles.GaudiHandle,
+                                 GaudiHandles.GaudiHandleArray,
+                                 DataHandle.DataHandle)):
                   strVal = repr(vv)
                   strDef = repr(default.toStringProperty())
                   if strDef == repr(vv.toStringProperty()):
diff --git a/Control/AthenaCommon/python/PropertyProxy.py b/Control/AthenaCommon/python/PropertyProxy.py
index 6d2d94bf2add695a5e8d405db2cce7ff03e1d82b..4826d2025903834db64f7059b5892c897bf37719 100755
--- a/Control/AthenaCommon/python/PropertyProxy.py
+++ b/Control/AthenaCommon/python/PropertyProxy.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # File: AthenaCommon/python/PropertyProxy.py
 # Author: Wim Lavrijsen (WLavrijsen@lbl.gov)
@@ -6,6 +6,7 @@
 
 import os, weakref, copy
 from GaudiKernel.GaudiHandles import GaudiHandle, GaudiHandleArray
+from GaudiKernel.DataHandle import DataHandle
 
 # dictionary with configurable class : python module entries
 from AthenaCommon import ConfigurableDb
@@ -398,6 +399,48 @@ class GaudiHandleArrayPropertyProxy(GaudiHandlePropertyProxyBase):
       return newValue
 
 
+class DataHandlePropertyProxy(PropertyProxy):
+    def __init__(self, descr, docString, default):
+        PropertyProxy.__init__(self, descr, docString, default)
+
+    def __get__(self, obj, type=None):
+        try:
+            return self.descr.__get__(obj, type)
+        except AttributeError:
+            # Get default
+            try:
+                default = obj.__class__.getDefaultProperty(self.descr.__name__)
+                default = self.convertValueToBeSet(obj, default)
+                if default:
+                    self.__set__(obj, default)
+            except AttributeError as e:
+                # change type of exception to avoid false error message
+                raise RuntimeError(*e.args)
+
+        return self.descr.__get__(obj, type)
+
+    def __set__(self, obj, value):
+        if not obj._isInSetDefaults() or obj not in self.history:
+            value = self.convertValueToBeSet(obj, value)
+            # assign the value
+            self.descr.__set__(obj, value)
+            log.debug("Setting %s = %r", self.fullPropertyName(obj), value)
+            self.history.setdefault(obj, []).append(value)
+
+    def convertValueToBeSet(self, obj, value):
+        if value is None:
+            value = ''
+
+        mode = obj.__class__.getDefaultProperty(self.descr.__name__).mode()
+        _type = obj.__class__.getDefaultProperty(self.descr.__name__).type()
+        if type(value) == str:
+            return DataHandle(value, mode, _type)
+        elif isinstance(value, DataHandle):
+            return DataHandle(value.__str__(), mode, _type)
+        else:
+            raise ValueError("received an instance of %s, but %s expected" %
+                             (type(value), 'str or DataHandle'))
+
 
 def PropertyProxyFactory( descr, doc, default ):
 #   print "PropertyProxyFactory( %s, %r )" % (descr.__name__,default)
@@ -407,4 +450,7 @@ def PropertyProxyFactory( descr, doc, default ):
    if isinstance(default,GaudiHandle):
       return GaudiHandlePropertyProxy( descr, doc, default )
 
+   if isinstance(default,DataHandle):
+      return DataHandlePropertyProxy( descr, doc, default )
+
    return PropertyProxy( descr, doc, default )
diff --git a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx
index 87b1af927d3df8770429f0fc9c0bd8e715bfa283..6e1f6586ebf1255a895e8ffa700acd44d60aaccb 100644
--- a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx
+++ b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
@@ -40,11 +40,11 @@ WriteDataReentrant::WriteDataReentrant(const std::string& name,
 {
   declareProperty ("DObjKey", m_dobjKey = "dobj");
   declareProperty ("DObjKey2", m_dobjKey2 = "dobj2");
-  declareProperty ("DObjKey3", m_dobjKey3 = name);
+  declareProperty ("DObjKey3", m_dobjKey3);
   //declareProperty ("DObjKey4", m_dobjKey4 = "dobj4");
   declareProperty ("CObjKey", m_cobjKey = "cobj");
   declareProperty ("VFloatKey", m_vFloatKey = "vFloat");
-  declareProperty ("PLinkListKey", m_pLinkListKey = name);
+  declareProperty ("PLinkListKey", m_pLinkListKey);
   declareProperty ("MKey", m_mKey = "mkey");
   declareProperty ("LinkVectorKey", m_linkVectorKey = "linkvec");
   declareProperty ("TestObjectKey", m_testObjectKey = "testobj");
@@ -57,6 +57,11 @@ StatusCode WriteDataReentrant::initialize()
 {
   errorcheck::ReportMessage::hideErrorLocus();
 
+  // If user did not set a key, use our own name. This cannot be done in the
+  // constructor as "DefaultName" is used during configurable generation (genconf).
+  if (m_dobjKey3.empty()) m_dobjKey3 = name();
+  if (m_pLinkListKey.empty()) m_pLinkListKey = name();
+
   ATH_MSG_INFO ("in initialize()");
   ATH_CHECK( m_dobjKey.initialize() );
   ATH_CHECK( m_dobjKey2.initialize() );
@@ -233,7 +238,7 @@ StatusCode WriteDataReentrant::execute (const EventContext& ctx) const
   // persistency for it.  we use dobj3, which is an object registered with 
   // a key. 
 
-  DataLink<MyDataObj> dobjLink3(name()); 
+  DataLink<MyDataObj> dobjLink3(name());
   // now access it.  DataLink will do a retrieve to get it from the store. 
   dobjLink3->val(); 
 
diff --git a/Control/AthenaKernel/CMakeLists.txt b/Control/AthenaKernel/CMakeLists.txt
index 7feb5914ff98bad2629084770aa41a72ff7e27be..dd63d3716979140a209046ce77c76f1e7bc8d6fd 100644
--- a/Control/AthenaKernel/CMakeLists.txt
+++ b/Control/AthenaKernel/CMakeLists.txt
@@ -8,6 +8,7 @@ find_package( Boost COMPONENTS program_options regex filesystem thread )
 find_package( UUID )
 find_package( CLHEP )
 find_package( TBB )
+find_package( nlohmann_json )
 # Only link agains the RT library if it's available.
 find_library( RT_LIBRARY rt )
 if( NOT RT_LIBRARY )
@@ -20,7 +21,7 @@ atlas_add_library( AthenaKernel
    PUBLIC_HEADERS AthenaKernel
    INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${UUID_INCLUDE_DIRS} 
    PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
-   LINK_LIBRARIES ${Boost_LIBRARIES} ${UUID_LIBRARIES} ${RT_LIBRARY} CxxUtils DataModelRoot GaudiKernel
+   LINK_LIBRARIES ${Boost_LIBRARIES} ${UUID_LIBRARIES} ${RT_LIBRARY} CxxUtils DataModelRoot GaudiKernel nlohmann_json::nlohmann_json
    PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${CMAKE_DL_LIBS} RootUtils )
 
 atlas_add_dictionary( AthenaKernelDict
diff --git a/Control/AthenaServices/share/AthenaOutputStream_test.ref b/Control/AthenaServices/share/AthenaOutputStream_test.ref
index e244ec7ae167102dda8b4bb8ddb751ba466400b5..3af18da0dcc4fd213bd85ba5ef0dca43904ec8ab 100644
--- a/Control/AthenaServices/share/AthenaOutputStream_test.ref
+++ b/Control/AthenaServices/share/AthenaOutputStream_test.ref
@@ -1,8 +1,8 @@
 *** AthenaOutputStream_test starts ***
 
 
-Initializing Gaudi ApplicationMgr using job opts /home/atlas/athena/build/x86_64-centos7-gcc8-opt/jobOptions/AthenaServices/AthenaOutputStream_test.txt
-JobOptionsSvc        INFO # =======> /home/atlas/athena/build/x86_64-centos7-gcc8-opt/jobOptions/AthenaServices/AthenaOutputStream_test.txt
+Initializing Gaudi ApplicationMgr using job opts /scratch/fwinkl/handle2/x86_64-centos7-gcc8-dbg/jobOptions/AthenaServices/AthenaOutputStream_test.txt
+JobOptionsSvc        INFO # =======> /scratch/fwinkl/handle2/x86_64-centos7-gcc8-dbg/jobOptions/AthenaServices/AthenaOutputStream_test.txt
 JobOptionsSvc        INFO # (5,1): MessageSvc.OutputLevel = 2
 JobOptionsSvc        INFO # (6,1): StoreGateSvc.OutputLevel = 2
 JobOptionsSvc        INFO # (8,1): AthenaOutputStream.OutputLevel = 1
@@ -12,13 +12,13 @@ JobOptionsSvc        INFO # (21,1): AthenaOutputStream.CompressionListHigh = ["B
 JobOptionsSvc        INFO # (22,1): AthenaOutputStream.CompressionBitsLow = 16
 JobOptionsSvc        INFO # (23,1): AthenaOutputStream.CompressionListLow = ["BazAuxContainer#compAux.zzz"]
 JobOptionsSvc        INFO # (25,1): AthenaOutputStream.AcceptAlgs = ["AthenaOutputStream", "aSFQS"]
-JobOptionsSvc        INFO Job options successfully read in from /home/atlas/athena/build/x86_64-centos7-gcc8-opt/jobOptions/AthenaServices/AthenaOutputStream_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /scratch/fwinkl/handle2/x86_64-centos7-gcc8-dbg/jobOptions/AthenaServices/AthenaOutputStream_test.txt
 MessageSvc          DEBUG Service base class initialized successfully
 ApplicationMgr      DEBUG Getting my own properties
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
-                                          running on 93d7764165d7 on Fri Sep 11 10:18:05 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r1)
+                                          running on pc-tbed-pub-32.cern.ch on Tue Oct 27 13:47:26 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
 ServiceManager      DEBUG Initializing service AppMgrRunable
@@ -42,10 +42,10 @@ IncidentSvc         DEBUG Adding [ModuleLoaded] listener 'ClassIDSvc' with prior
 ClassIDSvc           INFO  getRegistryEntries: read 1596 CLIDRegistry entries for module ALL
 ClassIDSvc          FATAL uncheckedSetTypePackageForID: StoreGate-00-00-00 can not set type name <B1> for CLID 8111: Known name for this ID <Baz> It was set by AthenaServices-00-00-00
 ClassIDSvc          FATAL uncheckedSetTypePackageForID: StoreGate-00-00-00 can not set type name <D1> for CLID 8112: Known name for this ID <BazAuxContainer> It was set by AthenaServices-00-00-00
-ClassIDSvc          DEBUG processCLIDDB: read 1757 entries from CLIDDB file: /home/atlas/athena/build/x86_64-centos7-gcc8-opt/share/clid.db
+ClassIDSvc          DEBUG processCLIDDB: read 1765 entries from CLIDDB file: /scratch/fwinkl/handle2/x86_64-centos7-gcc8-dbg/share/clid.db
 ClassIDSvc          FATAL uncheckedSetTypePackageForID: StoreGate-00-00-00 can not set type name <B1> for CLID 8111: Known name for this ID <Baz> It was set by AthenaServices-00-00-00
 ClassIDSvc          FATAL uncheckedSetTypePackageForID: StoreGate-00-00-00 can not set type name <D1> for CLID 8112: Known name for this ID <BazAuxContainer> It was set by AthenaServices-00-00-00
-ClassIDSvc          DEBUG processCLIDDB: read 1757 entries from CLIDDB file: /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2020-09-10T2101/Athena/22.0.18/InstallArea/x86_64-centos7-gcc8-opt/share/clid.db
+ClassIDSvc          DEBUG processCLIDDB: read 1765 entries from CLIDDB file: /cvmfs/atlas-nightlies.cern.ch/repo/sw/master--masterGAUDI_Athena_x86_64-centos7-gcc8-dbg/2020-10-26T2101/Athena/22.0.19/InstallArea/x86_64-centos7-gcc8-dbg/share/clid.db
 StoreGateSvc        DEBUG Service base class initialized successfully
 StoreGateSvc        DEBUG trying to create store SGImplSvc/StoreGateSvc_Impl
 StoreGateSvc_Impl   DEBUG Service base class initialized successfully
@@ -75,7 +75,6 @@ OutputStreamSeq...   INFO Initializing OutputStreamSequencerSvc - package versio
 OutputStreamSeq...  DEBUG Service base class initialized successfully
 AthenaOutputStr...  DEBUG Property update for OutputLevel : new value = 1
 AthenaOutputStr...   INFO Initializing AthenaOutputStream.AthenaOutputStreamTool - package version AthenaServices-00-00-00
-AthenaPoolCnvSvc     INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00
 DataModelCompatSvc  DEBUG Service base class initialized successfully
 DataModelCompatSvc  DEBUG FILE:LINE (StatusCode DataModelCompatSvc::initialize()): running
 IncidentSvc         DEBUG Adding [BeginEvent] listener 'DataModelCompatSvc' with priority 0
@@ -92,14 +91,19 @@ PoolSvc              INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x
 PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
 PoolSvc              INFO Frontier compression level set to 5
 DBReplicaSvc        DEBUG Service base class initialized successfully
-DBReplicaSvc        DEBUG HOSTNAME 93d7764165d7 has no domain - try hostname --fqdn
-DBReplicaSvc        DEBUG HOSTNAME from fqdn: 93d7764165d7
-DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://frontier-atlas.lcg.triumf.ca:3128/ATLAS_frontier)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data
-DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2020-09-10T2101/Athena/22.0.18/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config
-DBReplicaSvc         INFO No specific match for domain found - use default fallback
-DBReplicaSvc        DEBUG Candidate server ATLF (priority -2000)
-DBReplicaSvc        DEBUG Candidate server atlas_dd (priority 5)
-DBReplicaSvc         INFO Total of 2 servers found for host 93d7764165d7 [ATLF atlas_dd ]
+DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://atlasfrontier2-ai.cern.ch:8000/atlr)(serverurl=http://atlasfrontier1-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier01.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier02.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier03.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier05.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master--masterGAUDI_Athena_x86_64-centos7-gcc8-dbg/2020-10-26T2101/Athena/22.0.19/InstallArea/x86_64-centos7-gcc8-dbg/share/dbreplica.config
+DBReplicaSvc        DEBUG Candidate server ATLF (priority -2700)
+DBReplicaSvc        DEBUG Candidate server ATLAS_COOLPROD (priority -695)
+DBReplicaSvc        DEBUG Candidate server atlas_dd (priority -690)
+DBReplicaSvc        DEBUG Candidate server ATLAS_CONFIG (priority -685)
+DBReplicaSvc        DEBUG Candidate server INT8R (priority -680)
+DBReplicaSvc        DEBUG Candidate server INTR (priority -675)
+DBReplicaSvc        DEBUG Candidate server ATONR_COOL (priority -670)
+DBReplicaSvc        DEBUG Candidate server ATONR_CONF (priority -665)
+DBReplicaSvc        DEBUG Candidate server DEVDB11 (priority -660)
+DBReplicaSvc        DEBUG Candidate server ATLF (priority -2200)
+DBReplicaSvc         INFO Total of 10 servers found for host pc-tbed-pub-32.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
 PoolSvc              INFO Successfully setup replica sorting algorithm
 PoolSvc             DEBUG OutputLevel is 2
 PoolSvc              INFO Setting up APR FileCatalog and Streams
@@ -108,6 +112,9 @@ PoolSvc              INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.x
 DbSession            INFO     Open     DbSession    
 Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
 ChronoStatSvc       DEBUG Service base class initialized successfully
+IoComponentMgr      DEBUG --> io_register(AthenaPoolCnvSvc)
+IoComponentMgr      DEBUG     registering IoComponent "AthenaPoolCnvSvc"
+AthenaPoolCnvSvc    DEBUG Registering all Tools in ToolHandleArray OutputStreamingTool
 ServiceManager      FATAL No Service factory for DetectorStore available.
 AthenaOutputStr...  ERROR ServiceLocatorHelper::service: can not locate service DetectorStore
 AthenaOutputStream   INFO Found HelperTools = PrivateToolHandleArray([])
@@ -132,37 +139,37 @@ AthenaOutputStream  DEBUG Data Deps for AthenaOutputStream
   + INPUT IGNORED  ( 'AthenaAttributeList' , '' ) 
   + OUTPUT  ( 'SG::CompressionInfo' , 'StoreGateSvc+CompressionInfo_AthenaOutputStream' ) 
   + OUTPUT  ( 'SG::SelectionVetoes' , 'StoreGateSvc+SelectionVetoes_AthenaOutputStream' ) 
-StoreGateSvc        DEBUG Recorded object @0x5647790 with key uno of type Foo(CLID 8101)
- in DataObject @0x5647980
+StoreGateSvc        DEBUG Recorded object @0x5c890a0 with key uno of type Foo(CLID 8101)
+ in DataObject @0x5c89260
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5647f50 with key due of type Foo(CLID 8101)
- in DataObject @0x5648190
+StoreGateSvc        DEBUG Recorded object @0x5c89800 with key due of type Foo(CLID 8101)
+ in DataObject @0x5c899b0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5647f30 with key uno of type Bar(CLID 8107)
- in DataObject @0x5648460
+StoreGateSvc        DEBUG Recorded object @0x5c89780 with key uno of type Bar(CLID 8107)
+ in DataObject @0x5c89c80
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5647f10 with key due of type Bar(CLID 8107)
- in DataObject @0x5648760
+StoreGateSvc        DEBUG Recorded object @0x5c89760 with key due of type Bar(CLID 8107)
+ in DataObject @0x5c89fb0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5648ac0 with key quattro of type Bar(CLID 8107)
- in DataObject @0x5648a30
+StoreGateSvc        DEBUG Recorded object @0x5c8a340 with key quattro of type Bar(CLID 8107)
+ in DataObject @0x5c8a2b0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5648eb0 with key cinque of type Bar(CLID 8107)
- in DataObject @0x5648e00
+StoreGateSvc        DEBUG Recorded object @0x5c8a730 with key cinque of type Bar(CLID 8107)
+ in DataObject @0x5c8a680
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x56493f0 with key sei of type Baz(CLID 8111)
- in DataObject @0x5647ce0
+StoreGateSvc        DEBUG Recorded object @0x5c8acd0 with key sei of type Baz(CLID 8111)
+ in DataObject @0x5c91590
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5649420 with key seiAux. of type BazAuxContainer(CLID 8112)
- in DataObject @0x564ff30
+StoreGateSvc        DEBUG Recorded object @0x5c8ad00 with key seiAux. of type BazAuxContainer(CLID 8112)
+ in DataObject @0x5c89510
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5650810 with key comp of type Baz(CLID 8111)
- in DataObject @0x5657240
+StoreGateSvc        DEBUG Recorded object @0x5c8a3e0 with key comp of type Baz(CLID 8111)
+ in DataObject @0x5c896f0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x5650840 with key compAux. of type BazAuxContainer(CLID 8112)
- in DataObject @0x56576d0
+StoreGateSvc        DEBUG Recorded object @0x5c92230 with key compAux. of type BazAuxContainer(CLID 8112)
+ in DataObject @0x5c8ab50
  object modifiable when retrieved
-ClassIDSvc           INFO  getRegistryEntries: read 727 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 721 CLIDRegistry entries for module ALL
 AthenaOutputStr...WARNING add: can not find clid 13 in clid db
 AthenaOutputStream  DEBUG addItemObjects(13,"*") called
 AthenaOutputStream  DEBUG            Key:*
@@ -190,6 +197,7 @@ IncidentSvc         DEBUG Adding [BeginInputFile] listener 'MetaDataSvc' with pr
 IncidentSvc         DEBUG Adding [EndInputFile] listener 'MetaDataSvc' with priority 10
 IoComponentMgr      DEBUG --> io_register(MetaDataSvc)
 IoComponentMgr      DEBUG     registering IoComponent "MetaDataSvc"
+MetaDataSvc         DEBUG Registering all Tools in ToolHandleArray MetaDataTools
 MetaDataSvc         DEBUG Not translating metadata item ID #13
 AthenaOutputStream  DEBUG  Failed to receive proxy iterators from StoreGate for 13,"*". Skipping
 AthenaOutputStream  DEBUG addItemObjects(8101,"*") called
diff --git a/Control/AthenaServices/src/AthenaEventLoopMgr.cxx b/Control/AthenaServices/src/AthenaEventLoopMgr.cxx
index f6059f351d5602b581ebf6febdefd60ab99da315..6e0e0d219a328ccb577838a1cbb364443a2d7116 100644
--- a/Control/AthenaServices/src/AthenaEventLoopMgr.cxx
+++ b/Control/AthenaServices/src/AthenaEventLoopMgr.cxx
@@ -124,6 +124,9 @@ StatusCode AthenaEventLoopMgr::initialize()
          << " - package version " << PACKAGE_VERSION << endmsg ;
  
 
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+  
   StatusCode sc = MinimalEventLoopMgr::initialize();
   if ( !sc.isSuccess() ) 
   {
diff --git a/Control/PerformanceMonitoring/PerfMonEvent/CMakeLists.txt b/Control/PerformanceMonitoring/PerfMonEvent/CMakeLists.txt
index b8b87a5a403e069c7fad82484258ca9006814de9..def162b93526d9656b10bf9a6873435ccfc9d024 100644
--- a/Control/PerformanceMonitoring/PerfMonEvent/CMakeLists.txt
+++ b/Control/PerformanceMonitoring/PerfMonEvent/CMakeLists.txt
@@ -6,6 +6,7 @@ atlas_subdir( PerfMonEvent )
 # External dependencies:
 find_package( Python COMPONENTS Development )
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
+find_package( nlohmann_json )
 
 # We don't have a direct dependency on boost from this package, but if we
 # pick up the dependency implicitly rather than explicitly, we include
@@ -24,7 +25,7 @@ atlas_add_library( PerfMonEvent
                    PUBLIC_HEADERS PerfMonEvent
                    INCLUDE_DIRS ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${Python_LIBRARIES} ${Boost_LIBRARIES} GaudiKernel rt
+                   LINK_LIBRARIES ${Python_LIBRARIES} ${Boost_LIBRARIES} GaudiKernel rt nlohmann_json::nlohmann_json
                    PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} )
 
 atlas_add_dictionary( PerfMonEventDict
diff --git a/Control/PerformanceMonitoring/PerfMonKernel/CMakeLists.txt b/Control/PerformanceMonitoring/PerfMonKernel/CMakeLists.txt
index 9e25e2831531903de0e1107f1b7abd23fa18e69f..f1819b438d712d8c5b3ff207b234ae9c3f15dae1 100644
--- a/Control/PerformanceMonitoring/PerfMonKernel/CMakeLists.txt
+++ b/Control/PerformanceMonitoring/PerfMonKernel/CMakeLists.txt
@@ -5,11 +5,12 @@ atlas_subdir( PerfMonKernel )
 
 # External dependencies:
 find_package( Boost )
+find_package( nlohmann_json )
 
 # Component(s) in the package:
 atlas_add_library( PerfMonKernel
                    src/*.cxx
                    PUBLIC_HEADERS PerfMonKernel
                    INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${Boost_LIBRARIES} GaudiKernel )
+                   LINK_LIBRARIES ${Boost_LIBRARIES} GaudiKernel nlohmann_json::nlohmann_json )
 
diff --git a/Control/PileUpTools/src/PileUpMergeSvc.cxx b/Control/PileUpTools/src/PileUpMergeSvc.cxx
index b5af613ade38f6e56266bc0da338728eb39a4a6d..0a765e9be61f3510c7cdda2263158ae93768f764 100755
--- a/Control/PileUpTools/src/PileUpMergeSvc.cxx
+++ b/Control/PileUpTools/src/PileUpMergeSvc.cxx
@@ -91,8 +91,13 @@ void PileUpMergeSvc::decodeIntervals() {
 /// Service initialisation
 StatusCode 
 PileUpMergeSvc::initialize()    {
+
   msg() << MSG::INFO << "Initializing AthService " << name() 
 	<< " - package version " << PACKAGE_VERSION << endmsg ;
+
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+
   // set up the SG service:
   if ( !(p_overStore.retrieve()).isSuccess() ) 
   {
diff --git a/Control/StoreGate/StoreGate/VarHandleKey.h b/Control/StoreGate/StoreGate/VarHandleKey.h
index 3c223ba533b3ae682a6ce782ad722ed4c465abdf..bd8bb9a1f8086e6cd4e40d3cca35fa4930ac9cda 100644
--- a/Control/StoreGate/StoreGate/VarHandleKey.h
+++ b/Control/StoreGate/StoreGate/VarHandleKey.h
@@ -1,7 +1,7 @@
 // This file's extension implies that it's C, but it's really -*- C++ -*-.
 
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
@@ -32,7 +32,7 @@ enum AllowEmptyEnum {
 
 
 class VarHandleBase;
-
+class VarHandleKeyProperty;
 
 /**
  * @brief A property holding a SG store/key/clid from which a VarHandle is made.
@@ -85,6 +85,12 @@ public:
                 bool isCond = false);
 
 
+  /**
+   * @brief Declare corresponding property type
+   */
+  using PropertyType = SG::VarHandleKeyProperty;
+
+
   /**
    * @brief Change the key of the object to which we're referring.
    * @param sgkey The StoreGate key for the object.
@@ -228,6 +234,10 @@ private:
    */
   void updateHandle (const std::string& name);
 
+  /**
+   * @brief Python representation of Handle.
+   */
+  virtual std::string pythonRepr() const override;
 
   /// Handle to the referenced store.
   ServiceHandle<IProxyDict> m_storeHandle;
diff --git a/Control/StoreGate/StoreGate/VarHandleKeyProperty.h b/Control/StoreGate/StoreGate/VarHandleKeyProperty.h
index 1f2cd81d32c33f128802672b77067adc2af6ec56..5d98e4a9215c5a99c93de1df2a68e597166b8a39 100644
--- a/Control/StoreGate/StoreGate/VarHandleKeyProperty.h
+++ b/Control/StoreGate/StoreGate/VarHandleKeyProperty.h
@@ -1,10 +1,9 @@
 // This file's extension implies that it's C, but it's really -*- C++ -*-.
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id$
 /**
  * @file StoreGate/VarHandleKeyProperty.h
  * @author scott snyder <snyder@bnl.gov>
@@ -29,7 +28,7 @@
 #include "StoreGate/UpdateHandleKey.h"
 #include "StoreGate/ReadDecorHandleKey.h"
 #include "StoreGate/WriteDecorHandleKey.h"
-#include "Gaudi/Property.h"
+#include "GaudiKernel/DataHandleProperty.h"
 #include <iostream>
 
 namespace Gaudi { 
@@ -78,7 +77,7 @@ namespace SG {
  * The Property object refers to an instance of @c SG::VarHandleKey
  * (the value object) and provides generic methods for manipulating it.
  */
-  class GAUDI_API VarHandleKeyProperty : public PropertyWithHandlers <>
+class GAUDI_API VarHandleKeyProperty : public DataHandleProperty
 {
 public:
 
diff --git a/Control/StoreGate/src/VarHandleKey.cxx b/Control/StoreGate/src/VarHandleKey.cxx
index 6cc64ce9658f15551592dade1b7ffeecbcb5b74a..0c61a311cb79f52ac8bb26733614e6b2561edd7a 100644
--- a/Control/StoreGate/src/VarHandleKey.cxx
+++ b/Control/StoreGate/src/VarHandleKey.cxx
@@ -11,14 +11,18 @@
  */
 
 
+#include "GaudiKernel/DataHandle.h"
+#include "GaudiKernel/ToStream.h"
+
 #include "StoreGate/VarHandleKey.h"
 #include "StoreGate/exceptions.h"
+#include "StoreGate/StoreGateSvc.h"
 #include "AthenaKernel/getMessageSvc.h"
 #include "AthenaKernel/errorcheck.h"
 #include "AthenaKernel/StoreID.h"
 #include <boost/tokenizer.hpp>
 
-#include "StoreGate/StoreGateSvc.h"
+#include <sstream>
 
 static const char* const storeSeparator = "+";
 
@@ -305,6 +309,33 @@ void VarHandleKey::updateHandle (const std::string& name)
   }
 }
 
+/**
+ * @brief Python representation of Handle.
+ */
+std::string VarHandleKey::pythonRepr() const
+{
+  // FIXME: use Gaudi!1126
+  std::string className = fullKey().fullKey();
+  className = className.substr(0, className.find('/'));
+  if (className.empty()) className = Gaudi::DataHandle::default_type;
+
+  std::ostringstream ost;
+  ost << "DataHandle(";
+  Gaudi::Utils::toStream(m_storeHandle.name() + storeSeparator + m_sgKey, ost);
+  ost << ",";
+  switch (mode()) {
+  case Gaudi::DataHandle::Writer: Gaudi::Utils::toStream("W", ost); break;
+  case Gaudi::DataHandle::Updater: Gaudi::Utils::toStream("U", ost); break;
+  default: Gaudi::Utils::toStream("R", ost); break;
+  }
+  ost << ","; Gaudi::Utils::toStream(className, ost);
+  ost << ","; Gaudi::Utils::toStream(isCondition(), ost);
+  ost << ")";
+
+  return ost.str();
+}
+
+
 } // namespace SG
 
 namespace std {
diff --git a/Control/StoreGate/src/VarHandleKeyProperty.cxx b/Control/StoreGate/src/VarHandleKeyProperty.cxx
index 97f29db2aa857e84b5e680d6e247707438500e53..e408ef8d27adce0def7eaea38c8996dcf21483e6 100644
--- a/Control/StoreGate/src/VarHandleKeyProperty.cxx
+++ b/Control/StoreGate/src/VarHandleKeyProperty.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
@@ -79,7 +79,7 @@ namespace SG {
  */
 VarHandleKeyProperty::VarHandleKeyProperty( const std::string& name, 
                                             SG::VarHandleKey& ref )
-  : PropertyWithHandlers( name, typeid( SG::VarHandleKey ) ), 
+  : DataHandleProperty( name, ref ),
     m_pValue( &ref ) 
 {
 }
diff --git a/Control/StoreGate/test/ReadDecorHandleKeyArray_test.cxx b/Control/StoreGate/test/ReadDecorHandleKeyArray_test.cxx
index ada84e817ba92dce3c305a255c87870aa7c9204c..5414fe843286c92f481fe2df4fbafd3664c27d72 100644
--- a/Control/StoreGate/test/ReadDecorHandleKeyArray_test.cxx
+++ b/Control/StoreGate/test/ReadDecorHandleKeyArray_test.cxx
@@ -46,6 +46,7 @@ public:
 
   virtual void declare(Gaudi::DataHandle&) override { std::abort(); }
   virtual void renounce(Gaudi::DataHandle&) override { std::abort(); }
+  virtual bool renounceInput(const DataObjID&) override { std::abort(); }
 
   std::vector<Gaudi::DataHandle*> m_inputHandles;
   std::vector<Gaudi::DataHandle*> m_outputHandles;
diff --git a/Control/StoreGate/test/ReadDecorHandleKey_test.cxx b/Control/StoreGate/test/ReadDecorHandleKey_test.cxx
index 4acde5b3ec1700431b1754334eb4b663e9aaa428..30c9ee4d3cdc14d80d79efa285f97551613a803e 100644
--- a/Control/StoreGate/test/ReadDecorHandleKey_test.cxx
+++ b/Control/StoreGate/test/ReadDecorHandleKey_test.cxx
@@ -48,7 +48,7 @@ void test1()
   assert (k3.mode() == Gaudi::DataHandle::Reader);
   assert (owner.getProperty ("CCCKey").name() == "CCCKey");
   assert (owner.getProperty ("CCCKey").documentation() == "doc string");
-  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::VarHandleKey));
+  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::ReadHandleKey<MyObj>));
   assert (owner.getProperty ("CCCKey").toString() == "'StoreGateSvc+ccc.dec'");
   assert (owner.getProperty ("CCCKey").ownerTypeName() == "TestOwner");
 }
diff --git a/Control/StoreGate/test/ReadHandleKey_test.cxx b/Control/StoreGate/test/ReadHandleKey_test.cxx
index 80ac372c1f39e920136403a04da93ba5acb6d6e7..6ef46910d715a1a0e18b5d9601a5c7a8745d12be 100644
--- a/Control/StoreGate/test/ReadHandleKey_test.cxx
+++ b/Control/StoreGate/test/ReadHandleKey_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
@@ -66,7 +66,7 @@ void test1()
   assert (k3.mode() == Gaudi::DataHandle::Reader);
   assert (owner.getProperty ("CCCKey").name() == "CCCKey");
   assert (owner.getProperty ("CCCKey").documentation() == "doc string");
-  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::VarHandleKey));
+  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::ReadHandleKey<MyObj>));
   assert (owner.getProperty ("CCCKey").toString() == "'StoreGateSvc+ccc'");
   assert (owner.getProperty ("CCCKey").ownerTypeName() == "TestOwner");
 }
diff --git a/Control/StoreGate/test/TestOwner.h b/Control/StoreGate/test/TestOwner.h
index 074fedb515dca25d801fec1dbd754aab3949d726..e289c93db20b7a0b65f775f702b0f5d8551bc18e 100644
--- a/Control/StoreGate/test/TestOwner.h
+++ b/Control/StoreGate/test/TestOwner.h
@@ -50,6 +50,7 @@ public:
   } 
   virtual void declare( Gaudi::DataHandle& )  override { std::abort(); }
   virtual void renounce( Gaudi::DataHandle& ) override { std::abort(); }
+  virtual bool renounceInput(const DataObjID&) override { std::abort(); }
 
 
   std::string m_name = "TestOwner";
diff --git a/Control/StoreGate/test/ThinningHandleKey_test.cxx b/Control/StoreGate/test/ThinningHandleKey_test.cxx
index bcc0d467df94bfab753bbfbd866ee730271f0cd7..09b621f89f194166d4666a35e825e4e91a8d151b 100644
--- a/Control/StoreGate/test/ThinningHandleKey_test.cxx
+++ b/Control/StoreGate/test/ThinningHandleKey_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 /**
  * @file StoreGate/test/ThinningHandleKey_test.cxx
@@ -51,7 +51,7 @@ void test1()
     assert (!k2.storeHandle().isSet());
     assert (owner.getProperty ("AAB").name() == "AAB");
     assert (owner.getProperty ("AAB").documentation() == "doc string");
-    assert (owner.getProperty ("AAB").type_info() == &typeid(SG::VarHandleKey));
+    assert (owner.getProperty ("AAB").type_info() == &typeid(SG::ReadHandleKey<MyObj>));
     assert (owner.getProperty ("AAB").toString() == "'StoreGateSvc+aab'");
     assert (owner.getProperty ("AAB").ownerTypeName() == "TestOwner");
     assert (k2.initialize("stream").isSuccess());
diff --git a/Control/StoreGate/test/WriteDecorHandleKeyArray_test.cxx b/Control/StoreGate/test/WriteDecorHandleKeyArray_test.cxx
index 252c235aa1aa4843651109a0ff6a01179c1bbaa2..53ae3daad2c11307aba41b2e06735fa12724dfb9 100644
--- a/Control/StoreGate/test/WriteDecorHandleKeyArray_test.cxx
+++ b/Control/StoreGate/test/WriteDecorHandleKeyArray_test.cxx
@@ -50,6 +50,7 @@ public:
 
   virtual void declare(Gaudi::DataHandle&) override { std::abort(); }
   virtual void renounce(Gaudi::DataHandle&) override { std::abort(); }
+  virtual bool renounceInput(const DataObjID&) override { std::abort(); }
 
   std::vector<Gaudi::DataHandle*> m_inputHandles;
   std::vector<Gaudi::DataHandle*> m_outputHandles;
diff --git a/Control/StoreGate/test/WriteDecorHandleKey_test.cxx b/Control/StoreGate/test/WriteDecorHandleKey_test.cxx
index 7fc7170853781ebfa36ca0a7ab3c2bfd760a2b13..7ea323e896358f843cc81e2b7742ca97ae2697fb 100644
--- a/Control/StoreGate/test/WriteDecorHandleKey_test.cxx
+++ b/Control/StoreGate/test/WriteDecorHandleKey_test.cxx
@@ -45,6 +45,7 @@ public:
 
   virtual void declare(Gaudi::DataHandle&) override { std::abort(); }
   virtual void renounce(Gaudi::DataHandle&) override { std::abort(); }
+  virtual bool renounceInput(const DataObjID&) override { std::abort(); }
 
   std::vector<Gaudi::DataHandle*> m_inputHandles;
   std::vector<Gaudi::DataHandle*> m_outputHandles;
@@ -108,7 +109,7 @@ void test1()
   assert (k3.contHandleKey().mode() == Gaudi::DataHandle::Reader);
   assert (owner.getProperty ("CCCKey").name() == "CCCKey");
   assert (owner.getProperty ("CCCKey").documentation() == "doc string");
-  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::VarHandleKey));
+  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::WriteHandleKey<MyObj>));
   assert (owner.getProperty ("CCCKey").toString() == "'StoreGateSvc+ccc.dec'");
   assert (owner.getProperty ("CCCKey").ownerTypeName() == "TestOwner");
 }
diff --git a/Control/StoreGate/test/WriteHandleKey_test.cxx b/Control/StoreGate/test/WriteHandleKey_test.cxx
index 62e05b8a79a9a22be0351e3913229ef42e96b543..ccce6b9f5f2218858c2c6d41cb35b8520ad12158 100644
--- a/Control/StoreGate/test/WriteHandleKey_test.cxx
+++ b/Control/StoreGate/test/WriteHandleKey_test.cxx
@@ -66,7 +66,7 @@ void test1()
   assert (k3.mode() == Gaudi::DataHandle::Writer);
   assert (owner.getProperty ("CCCKey").name() == "CCCKey");
   assert (owner.getProperty ("CCCKey").documentation() == "doc string");
-  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::VarHandleKey));
+  assert (owner.getProperty ("CCCKey").type_info() == &typeid(SG::WriteHandleKey<MyObj>));
   assert (owner.getProperty ("CCCKey").toString() == "'StoreGateSvc+ccc'");
   assert (owner.getProperty ("CCCKey").ownerTypeName() == "TestOwner");
 }
diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx
index 028536cd2663ae7175561a896c9312962a4ce147..03ea3fae542cdd26813e12df03dcc72a331d2e6d 100644
--- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx
+++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx
@@ -82,6 +82,10 @@ StoreGateSvc* EventSelectorAthenaPool::eventStore() const {
 }
 //________________________________________________________________________________
 StatusCode EventSelectorAthenaPool::initialize() {
+
+   m_autoRetrieveTools = false;
+   m_checkToolDeps = false;
+  
    if (m_isSecondary.value()) {
       ATH_MSG_DEBUG("Initializing secondary event selector " << name());
    } else {
diff --git a/DetectorDescription/RegionSelector/src/RegSelSvc.cxx b/DetectorDescription/RegionSelector/src/RegSelSvc.cxx
index 3e5ec0f646c418827a754854b745fc9bd95f9119..d27ac022908155fb64f970d092d14c916e4fed1e 100755
--- a/DetectorDescription/RegionSelector/src/RegSelSvc.cxx
+++ b/DetectorDescription/RegionSelector/src/RegSelSvc.cxx
@@ -142,6 +142,9 @@ RegSelSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) {
 
 StatusCode RegSelSvc::initialize() {
 
+  m_checkToolDeps = false;
+  m_autoRetrieveTools = false;
+  
   m_errorFlag=false;
   ATH_CHECK( AthService::initialize() );
   ATH_CHECK (m_detStore.retrieve() );
diff --git a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
index 180523f964ba92fac034ce33dc9b6261aad02128..bc20c5f82e7b6cef0af03b8103317d444d044ff0 100644
--- a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
+++ b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
@@ -81,6 +81,10 @@ EventSelectorByteStream::eventStore() const {
 
 //________________________________________________________________________________
 StatusCode EventSelectorByteStream::initialize() {
+
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+  
    if (m_isSecondary.value()) {
       ATH_MSG_DEBUG("Initializing secondary event selector " << name());
    } else {
diff --git a/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx b/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx
index 79f872a18c446dae0b92ee1246aec7217d7de54d..915a5173ba7f6dac21b79813c66edc1c36851ba7 100644
--- a/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx
+++ b/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx
@@ -105,6 +105,10 @@ HltEventLoopMgr::~HltEventLoopMgr()
 // =============================================================================
 StatusCode HltEventLoopMgr::initialize()
 {
+  // Do not auto-retrieve tools (see Gaudi!1124)
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+
   ATH_MSG_VERBOSE("start of " << __FUNCTION__);
 
   ATH_MSG_INFO(" ---> HltEventLoopMgr = " << name() << " initialize - package version " << PACKAGE_VERSION);
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
index 845c1e93ebbc3a834ea7d9c564cc3be90cbe0cde..738553396c400e807b91fedea40c632b943ac930 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
@@ -1469,9 +1469,10 @@ def searchProb(prob_val) :
                if isinstance(prop,ConfigurableAlgTool) and not prop.isInToolSvc() :
                    yield prop
 
+    from GaudiKernel.DataHandle import DataHandle
     for a_comp in iterateComp() :
         for name,prop in a_comp.getProperties().items() :
-            if isinstance(prop ,str) and prop == prob_val :
+            if isinstance(prop,(str,DataHandle)) and str(prop) == prob_val :
                 return True
     return False
 
@@ -1594,6 +1595,7 @@ def combinedClusterSplitProbName() :
           pass # CombinedInDetClusterSplitProbContainer = ClusterSplitProbContainer # @TODO handle cluster splitting probability ?
       if InDetFlags.doDBMstandalone():
           CombinedInDetClusterSplitProbContainer=''
+
   return CombinedInDetClusterSplitProbContainer if hasSplitProb(CombinedInDetClusterSplitProbContainer) else ''
 
 def pixelClusterSplitProbName() :
diff --git a/LArCalorimeter/LArCnv/LArByteStream/python/LArByteStreamConfig.py b/LArCalorimeter/LArCnv/LArByteStream/python/LArByteStreamConfig.py
index 56c50a80186466bb5a1b2e2069906dfa82ce8134..6ea1636676428559381632c704708362ecac09d5 100644
--- a/LArCalorimeter/LArCnv/LArByteStream/python/LArByteStreamConfig.py
+++ b/LArCalorimeter/LArCnv/LArByteStream/python/LArByteStreamConfig.py
@@ -14,7 +14,7 @@ def LArRawDataContByteStreamToolConfig (name="LArRawDataContByteStreamTool",
          from CaloTools.CaloNoiseCondAlg import CaloNoiseCondAlg
          noisealg = CaloNoiseCondAlg ('totalNoise')
          if stream:
-            key = noisealg.OutputKey
+            key = str(noisealg.OutputKey)
             if key.find ('+') < 0:
                key = 'ConditionStore+' + key
             stream.ExtraInputs += [('CaloNoise', key)]
diff --git a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/python/AnalysisTriggerAlgsCAConfig.py b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/python/AnalysisTriggerAlgsCAConfig.py
index 44761dd60720c99280fa105d604bba4716130129..ea8f1362d0b74818755c844bce8a1e18393ccfba 100644
--- a/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/python/AnalysisTriggerAlgsCAConfig.py
+++ b/PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerAlgs/python/AnalysisTriggerAlgsCAConfig.py
@@ -25,14 +25,14 @@ def RoIBResultToxAODCfg(flags, seqName=''):
     outputList = []
     if alg.DoMuon:
         outputList += [
-            ("xAOD::MuonRoIContainer",  alg.xAODKeyMuon)
+            ("xAOD::MuonRoIContainer",  str(alg.xAODKeyMuon))
         ]
     if alg.DoCalo:
         outputList += [
-            ("xAOD::EmTauRoIContainer", alg.xAODKeyEmTau),
-            ("xAOD::EnergySumRoI",      alg.xAODKeyEsum),
-            ("xAOD::JetEtRoI",          alg.xAODKeyJetEt),
-            ("xAOD::JetRoIContainer",   alg.xAODKeyJet)
+            ("xAOD::EmTauRoIContainer", str(alg.xAODKeyEmTau)),
+            ("xAOD::EnergySumRoI",      str(alg.xAODKeyEsum)),
+            ("xAOD::JetEtRoI",          str(alg.xAODKeyJetEt)),
+            ("xAOD::JetRoIContainer",   str(alg.xAODKeyJet))
         ]
 
     return acc, outputList
diff --git a/Projects/AthGeneration/externals.txt b/Projects/AthGeneration/externals.txt
index 8ea0e812eee807c0b2b1dd881ebe4bdf369e48c6..216ce0a2c3254481b87e35b290405ab534b88831 100644
--- a/Projects/AthGeneration/externals.txt
+++ b/Projects/AthGeneration/externals.txt
@@ -9,4 +9,4 @@
 AthGenerationExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
-GaudiVersion = v34r0.005
+GaudiVersion = v34r1.001
diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt
index b72e0bd225f5f236b41b6253d6401581b259075f..c5d54221cff50cbced770496eb6c3c1bc8699d5f 100644
--- a/Projects/AthSimulation/externals.txt
+++ b/Projects/AthSimulation/externals.txt
@@ -9,4 +9,4 @@
 AthSimulationExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
-GaudiVersion = v34r0.005
+GaudiVersion = v34r1.001
diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt
index 596814391928a2985134bba03759313886b77008..ab28108eae5db442305995641d10712f81450f23 100644
--- a/Projects/Athena/externals.txt
+++ b/Projects/Athena/externals.txt
@@ -9,4 +9,4 @@
 AthenaExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
-GaudiVersion = v34r0.005
+GaudiVersion = v34r1.001
diff --git a/Reconstruction/Jet/JetRec/python/JetAlgorithm.py b/Reconstruction/Jet/JetRec/python/JetAlgorithm.py
index e65b1effc910a12f409f68eab31d4eb0848866ff..24aaf13dddf0b2a13ef2d1ddf59ffb223ca4211f 100644
--- a/Reconstruction/Jet/JetRec/python/JetAlgorithm.py
+++ b/Reconstruction/Jet/JetRec/python/JetAlgorithm.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # JetAlgorithm.py
 #
@@ -184,7 +184,8 @@ def addJetRecoToAlgSequence(job =None, useTruth =None, eventShapeTools =None,
   # Then, add all event shape tools in separate algs
   for evstool in jtm.allEDTools:
     from EventShapeTools.EventShapeToolsConf import EventDensityAthAlg
-    job += EventDensityAthAlg("edalg_"+evstool.OutputContainer,EventDensityTool=evstool)
+    job += EventDensityAthAlg("edalg_%s" % evstool.OutputContainer,
+                              EventDensityTool=evstool)
 
   if separateJetAlgs:
 
diff --git a/Reconstruction/Jet/JetRec/python/JetToolSupport.py b/Reconstruction/Jet/JetRec/python/JetToolSupport.py
index 16864e40eedd70ac80e9d87c981e39de31e63482..40c03ce0e71c2b1fdb1211875e1995acb7ffeede 100644
--- a/Reconstruction/Jet/JetRec/python/JetToolSupport.py
+++ b/Reconstruction/Jet/JetRec/python/JetToolSupport.py
@@ -417,7 +417,7 @@ class JetToolManager:
     lofinder,hifinder = self.addJetFinderTool(output+"Finder", alg, radius, ivtx, ghostArea, ptmin, rndseed, 
                                               variableRMinRadius, variableRMassScale, constmods=constmods)
     jetrec = JetRecTool(output)
-    jetrec.InputPseudoJets = [getter.OutputContainer for getter in getters]
+    jetrec.InputPseudoJets = [str(getter.OutputContainer) for getter in getters]
     jetrec.JetFinder = hifinder
     jetrec.OutputContainer = output
     ptminSave = self.ptminFilter
diff --git a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
index 4cf0cfa8e8a601e33d0907363b044afeabeebec4..da98e932f9006671900c902935d586d982da6f76 100644
--- a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
+++ b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
@@ -109,7 +109,7 @@ addJetRecoToAlgSequence()
 # save event shapes set with the JetAlgorithm
 #--------------------------------------------------------------
 for esTool in jtm.allEDTools:
-    jetFlags.jetAODList += [ "xAOD::EventShape#"+esTool.OutputContainer,
-                             "xAOD::EventShapeAuxInfo#"+esTool.OutputContainer+'Aux.' ]
+    jetFlags.jetAODList += [ "xAOD::EventShape#%s" % esTool.OutputContainer,
+                             "xAOD::EventShapeAuxInfo#%sAux." % esTool.OutputContainer ]
 
 jetlog.info( myname + "End." )
diff --git a/Reconstruction/Jet/JetRec/share/simpleJetRecJobO.py b/Reconstruction/Jet/JetRec/share/simpleJetRecJobO.py
index 3c8675d7cfa1d3ebc0ac1d6175293e5754d88963..63341a5aa33b160c305536a5bcfa08994b967c6b 100644
--- a/Reconstruction/Jet/JetRec/share/simpleJetRecJobO.py
+++ b/Reconstruction/Jet/JetRec/share/simpleJetRecJobO.py
@@ -48,7 +48,7 @@ JetFinder_AntiKt4.JetBuilder = JetBuilder_AntiKt4
 JetRecTool = CfgMgr.JetRecTool("MTAntiKt4EMTopoJets",
                                OutputLevel=VERBOSE)
 JetRecTool.JetFinder = JetFinder_AntiKt4
-JetRecTool.InputPseudoJets = [emget.OutputContainer]
+JetRecTool.InputPseudoJets = [str(emget.OutputContainer)]
 JetRecTool.OutputContainer = "MTAntiKt4EMTopoJets"
 
 topSequence += CfgMgr.JetAlgorithm("MTJetAlg",Tools = [JetRecTool])
diff --git a/Reconstruction/Jet/JetRec/share/simpleJtmJobO.py b/Reconstruction/Jet/JetRec/share/simpleJtmJobO.py
index f875aeb213ef0df77df23ea0ba8005702e28674a..b00e1f79d638db25d767f0d8df1776c4498a5abe 100644
--- a/Reconstruction/Jet/JetRec/share/simpleJtmJobO.py
+++ b/Reconstruction/Jet/JetRec/share/simpleJtmJobO.py
@@ -73,8 +73,8 @@ addJetRecoToAlgSequence()
 #--------------------------------------------------------------
 for esTool in jtm.allEDTools:
     t = getattr(ToolSvc, esTool.getName() )
-    jetFlags.jetAODList += [ "xAOD::EventShape#"+t.OutputContainer,
-                             "xAOD::EventShapeAuxInfo#"+t.OutputContainer+'Aux.' ]
+    jetFlags.jetAODList += [ "xAOD::EventShape#%s" % t.OutputContainer,
+                             "xAOD::EventShapeAuxInfo#%sAux." % t.OutputContainer ]
 
 from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
 xaodStream = MSMgr.NewPoolRootStream( "StreamAOD", "xAOD.pool.root" )
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedAlgs.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedAlgs.py
index 69a7ea3a6bd3566745d355b76ac18c29fafd8bf9..49515f05765bffe74ebc4909c47fde6a68c8bd6c 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedAlgs.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedAlgs.py
@@ -161,7 +161,7 @@ def recordMuonCreatorAlgObjs (kw):
         d = kw.get (prop)
         if d == None:
             d = Alg.__dict__[prop].default
-        return d
+        return str(d)
     objs = {'xAOD::MuonContainer': val('MuonContainerLocation'),
             'xAOD::TrackParticleContainer': (val('CombinedLocation')+'TrackParticles',
                                              val('ExtrapolatedLocation')+'TrackParticles',
diff --git a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py b/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py
index a512fb2cb5af851e4d22d032c894c950047a9fd0..eb5083169933275700f41a61b3d040359026d1f4 100644
--- a/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py
+++ b/Reconstruction/RecoAlgs/CaloRingerAlgs/share/CaloRingerOutputItemList_jobOptions.py
@@ -34,8 +34,7 @@ def addOutputToList(streamList, localCType, localCKey, auxOption):
   streamList.append('%s#%s' % (localCType, localCKey ) )
   if 'xAOD::' in localCType:
     auxType = localCType.replace('Container', 'AuxContainer')
-    auxKey =  localCKey + 'Aux.'
-    streamList.append( '%s#%s%s' % (auxType, auxKey, auxOption) )
+    streamList.append( '%s#%sAux.%s' % (auxType, localCKey, auxOption) )
 
 def addRingerInputMetaToList(streamList, containerType):
   # NOTE: Keys defined at: http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Reconstruction/RecExample/RecExConfig/python/InputFilePeeker.py
diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaTopoClusterCopier.h b/Reconstruction/egamma/egammaAlgs/src/egammaTopoClusterCopier.h
index 6508d069edc78e594fbcdd211c3738c3276f88f4..853db2e8fc58120927554f9fcafd1dc45d429d9b 100644
--- a/Reconstruction/egamma/egammaAlgs/src/egammaTopoClusterCopier.h
+++ b/Reconstruction/egamma/egammaAlgs/src/egammaTopoClusterCopier.h
@@ -13,6 +13,8 @@
 #include "StoreGate/WriteHandleKey.h"
 #include "AthContainers/ConstDataVector.h"
 
+#include <Gaudi/Accumulators.h>
+
 class egammaTopoClusterCopier : public AthReentrantAlgorithm {
 
  public:
diff --git a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py
index ff27a0834e4d27b90612a91bde27fcaf9b08cc57..da4148cc5a4a708b654dc44da709005dd5985837 100755
--- a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py
+++ b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py
@@ -240,7 +240,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___PixelDigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.PixelDigitizationTool'
-        expected_property_list = ['ChargeTools', 'DetStore', 'EnergyDepositionTool', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FrontEndSimTools', 'HardScatterSplittingMode', 'InputObjectName', 'LastXing', 'PileUpMergeSvc', 'RDOCollName', 'RndmSvc', 'SDOCollName']
+        expected_property_list = ['ChargeTools', 'DetStore', 'EnergyDepositionTool', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FrontEndSimTools', 'HardScatterSplittingMode', 'InputObjectName', 'LastXing', 'PileUpMergeSvc', 'PixelDetEleCollKey', 'RDOCollName', 'RndmSvc', 'SDOCollName']
         expected_nonstring_properties = {'LastXing': '25', 'FirstXing': '-25'}
         expected_string_properties = {'InputObjectName': 'PixelHits'}
         self._detailed_ConfigurablePropertiesCheck(
@@ -252,7 +252,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___SCT_DigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.SCT_DigitizationTool'
-        expected_property_list = ['BarrelOnly', 'DetStore', 'EnableHits', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FrontEnd', 'HardScatterSplittingMode', 'InputObjectName', 'LastXing', 'MergeSvc', 'OutputObjectName', 'OutputSDOName', 'RandomDisabledCellGenerator', 'RndmSvc', 'SurfaceChargesGenerator']
+        expected_property_list = ['BarrelOnly', 'DetStore', 'EnableHits', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FrontEnd', 'HardScatterSplittingMode', 'InputObjectName', 'LastXing', 'MergeSvc', 'OutputObjectName', 'OutputSDOName', 'RandomDisabledCellGenerator', 'RndmSvc', 'SCTDetEleCollKey', 'SurfaceChargesGenerator']
         expected_nonstring_properties = {'LastXing': '25', 'FirstXing': '-50'}
         expected_string_properties = {'InputObjectName': 'SCT_Hits', 'OutputObjectName': 'SCT_RDOs', 'OutputSDOName': 'SCT_SDO_Map'}
         self._detailed_ConfigurablePropertiesCheck(
@@ -264,7 +264,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___TRTDigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.TRTDigitizationTool'
-        expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'HardScatterSplittingMode', 'InDetTRTCalDbTool', 'InDetTRTStrawStatusSummaryTool', 'LastXing', 'MergeSvc', 'OutputObjectName', 'OutputSDOName', 'Override_TrtRangeCutProperty', 'PAI_Tool_Ar', 'PAI_Tool_Kr', 'PAI_Tool_Xe', 'RandomSeedOffset', 'RndmSvc', 'SimDriftTimeTool', 'TRT_StrawNeighbourSvc']
+        expected_property_list = ['AtlasFieldCacheCondObj', 'DataObjectName', 'DetStore', 'DigVersContainerKey', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'HardScatterSplittingMode', 'InDetTRTCalDbTool', 'InDetTRTStrawStatusSummaryTool', 'LastXing', 'MergeSvc', 'OutputObjectName', 'OutputSDOName', 'Override_TrtRangeCutProperty', 'PAI_Tool_Ar', 'PAI_Tool_Kr', 'PAI_Tool_Xe', 'RandomSeedOffset', 'RndmSvc', 'SimDriftTimeTool', 'TRT_StrawNeighbourSvc']
         expected_nonstring_properties = {'LastXing': '50', 'FirstXing': '-50'}
         expected_string_properties = {'OutputObjectName': 'TRT_RDOs', 'OutputSDOName': 'TRT_SDO_Map'} # No Input name property
         self._detailed_ConfigurablePropertiesCheck(
@@ -276,7 +276,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___LArPileUpTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.LArPileUpTool'
-        expected_property_list = ['DetStore', 'DigitContainer', 'DoDigiTruthReconstruction', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'HighGainThreshFCAL', 'LArHitContainers', 'LArHitFloatContainers', 'LastXing', 'MaskingTool', 'NoiseOnOff', 'Nsamples', 'PileUpMergeSvc', 'RndmEvtOverlay', 'RndmSvc', 'TriggerTimeToolName', 'firstSample', 'useLArFloat']
+        expected_property_list = ['ADC2MeVKey', 'AutoCorrNoiseKey', 'BadFebKey', 'CablingKey', 'DetStore', 'DigitContainer', 'DigitContainer_DigiHSTruth', 'DoDigiTruthReconstruction', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'HighGainThreshFCAL', 'InputDigitContainer', 'LArHitContainers', 'LArHitEMapKey', 'LArHitEMap_DigiHSTruthKey', 'LArHitFloatContainers', 'LastXing', 'MaskingTool', 'NoiseKey', 'NoiseOnOff', 'Nsamples', 'OFCKey', 'PedestalKey', 'PileUpMergeSvc', 'RndmEvtOverlay', 'RndmSvc', 'ShapeKey', 'TriggerTimeToolName', 'fSamplKey', 'firstSample', 'useLArFloat']
 
         expected_nonstring_properties = {'LastXing': '101', 'FirstXing': '-751', 'Nsamples': '4',
                                          'LArHitContainers': '["StoreGateSvc+LArHitEMB","StoreGateSvc+LArHitEMEC","StoreGateSvc+LArHitHEC","StoreGateSvc+LArHitFCAL"]', 'LArHitFloatContainers':'[]'}
@@ -314,7 +314,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___MdtDigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.MdtDigitizationTool'
-        expected_property_list = ['CalibrationDbTool', 'DetStore', 'DigitizationTool', 'DiscardEarlyHits', 'DoQballCharge', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing', 'MaskedStations', 'MuonIdHelperSvc', 'OutputObjectName', 'OutputSDOName', 'PileUpMergeSvc', 'RndmSvc', 'UseDeadChamberSvc', 'UseTof']
+        expected_property_list = ['CalibrationDbTool', 'DetStore', 'DigitizationTool', 'DiscardEarlyHits', 'DoQballCharge', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'InputObjectName', 'LastXing', 'MaskedStations', 'MuonIdHelperSvc', 'OutputObjectName', 'OutputSDOName', 'PileUpMergeSvc', 'ReadKey', 'RndmSvc', 'UseDeadChamberSvc', 'UseTof']
         expected_nonstring_properties = {'LastXing': '150', 'FirstXing': '-800'}
         expected_string_properties = {} # Not checking any specific property values
         self._detailed_ConfigurablePropertiesCheck(
@@ -326,7 +326,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___RpcDigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.RpcDigitizationTool'
-        expected_property_list = ['ClusterSize1_2uncorr', 'ClusterSize_fromCOOL', 'CutProjectedTracks', 'DeadTime', 'DetStore', 'DumpFromDbFirst', 'EfficiencyPatchForBMShighEta', 'Efficiency_fromCOOL', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FracClusterSize1_A', 'FracClusterSize1_C', 'FracClusterSize2_A', 'FracClusterSize2_C', 'FracClusterSizeTail_A', 'FracClusterSizeTail_C', 'IgnoreRunDependentConfig', 'LastXing', 'MeanClusterSizeTail_A', 'MeanClusterSizeTail_C', 'OnlyEtaEff_A', 'OnlyEtaEff_C', 'OnlyPhiEff_A', 'OnlyPhiEff_C', 'OutputObjectName', 'OutputSDOName', 'PanelId_OFF_fromlist', 'PanelId_OK_fromlist', 'PatchForRpcTime', 'PatchForRpcTimeShift', 'PhiAndEtaEff_A', 'PhiAndEtaEff_C', 'PileUpMergeSvc', 'PrintCalibrationVector', 'RPCInfoFromDb', 'RndmSvc', 'testbeam_clustersize', 'turnON_clustersize', 'turnON_efficiency']
+        expected_property_list = ['ClusterSize1_2uncorr', 'ClusterSize_fromCOOL', 'CutProjectedTracks', 'DeadTime', 'DetStore', 'DumpFromDbFirst', 'EfficiencyPatchForBMShighEta', 'Efficiency_fromCOOL', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'FracClusterSize1_A', 'FracClusterSize1_C', 'FracClusterSize2_A', 'FracClusterSize2_C', 'FracClusterSizeTail_A', 'FracClusterSizeTail_C', 'IgnoreRunDependentConfig', 'InputObjectName', 'LastXing', 'MeanClusterSizeTail_A', 'MeanClusterSizeTail_C', 'OnlyEtaEff_A', 'OnlyEtaEff_C', 'OnlyPhiEff_A', 'OnlyPhiEff_C', 'OutputObjectName', 'OutputSDOName', 'PanelId_OFF_fromlist', 'PanelId_OK_fromlist', 'PatchForRpcTime', 'PatchForRpcTimeShift', 'PhiAndEtaEff_A', 'PhiAndEtaEff_C', 'PileUpMergeSvc', 'PrintCalibrationVector', 'RPCInfoFromDb', 'ReadKey', 'RndmSvc', 'testbeam_clustersize', 'turnON_clustersize', 'turnON_efficiency']
         expected_nonstring_properties = {'LastXing': '125', 'FirstXing': '-150'}
         expected_string_properties = {} # Not checking any specific property values
         self._detailed_ConfigurablePropertiesCheck(
@@ -338,7 +338,7 @@ class TestDigitizationMC16a(unittest.TestCase):
 
     def test___TgcDigitizationTool_properties(self):
         tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.TgcDigitizationTool'
-        expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing', 'OutputObjectName', 'OutputSDOName', 'PileUpMergeSvc', 'RndmSvc']
+        expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'InputObjectName', 'LastXing', 'OutputObjectName', 'OutputSDOName', 'PileUpMergeSvc', 'RndmSvc']
         expected_nonstring_properties = {'LastXing': '75', 'FirstXing': '-50'}
         expected_string_properties = {} # Not checking any specific property values
         self._detailed_ConfigurablePropertiesCheck(
diff --git a/Simulation/ISF/ISF_Config/test/test_FullG4_Sim_tf_configuration.py b/Simulation/ISF/ISF_Config/test/test_FullG4_Sim_tf_configuration.py
index 4199046a38f998bec0a84a23cf6a2e416cc6b79b..0f4375647977f0faeb98519564873513ae096073 100755
--- a/Simulation/ISF/ISF_Config/test/test_FullG4_Sim_tf_configuration.py
+++ b/Simulation/ISF/ISF_Config/test/test_FullG4_Sim_tf_configuration.py
@@ -152,7 +152,7 @@ class TestFullG4(unittest.TestCase):
 
 
     def test___SimKernel_ListOfSetProperties(self):
-        expected_list = ['BeamPipeSimulationSelectors', 'CaloSimulationSelectors', 'CavernSimulationSelectors', 'DetStore', 'DoCPUMonitoring', 'DoMemoryMonitoring', 'EventFilterTools', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'IDSimulationSelectors', 'InputConverter', 'InputHardScatterCollection', 'MSSimulationSelectors', 'MaximumParticleVectorSize', 'MemoryMonitoringTool', 'NeededResources', 'OutputHardScatterTruthCollection', 'ParticleBroker', 'QuasiStablePatcher', 'TruthRecordService']
+        expected_list = ['BeamPipeSimulationSelectors', 'CaloSimulationSelectors', 'CavernSimulationSelectors', 'DetStore', 'DoCPUMonitoring', 'DoMemoryMonitoring', 'EventFilterTools', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'IDSimulationSelectors', 'InputConverter', 'InputHardScatterCollection', 'InputPileupCollection', 'MSSimulationSelectors', 'MaximumParticleVectorSize', 'MemoryMonitoringTool', 'NeededResources', 'OutputHardScatterTruthCollection', 'OutputPileupTruthCollection', 'ParticleBroker', 'QuasiStablePatcher', 'TruthRecordService']
         simkernel = self._job_config_dict['ISF_Kernel_FullG4']
         actual_list = simkernel.keys()
         expected_property_value_sorted = sorted(expected_list)
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/LegacySimSvc.cxx b/Simulation/ISF/ISF_Core/ISF_Services/src/LegacySimSvc.cxx
index 34b0179788242925e45ac537e1b2832325f8218e..15059f5f89b010c72a1d9ad210115aeafa1ee2bb 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/src/LegacySimSvc.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Services/src/LegacySimSvc.cxx
@@ -15,6 +15,7 @@ ISF::LegacySimSvc::LegacySimSvc(const std::string& name,ISvcLocator* svc) :
 /** framework methods */
 StatusCode ISF::LegacySimSvc::initialize()
 {
+  m_checkToolDeps = false;
   ATH_CHECK ( m_simulatorTool.retrieve() );
   return StatusCode::SUCCESS;
 }
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/DNNCaloSimSvc.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/DNNCaloSimSvc.cxx
index 0bf6de09490cf6888ae7e0baf5e438bca3649c2d..526564af3090a98adee1019bc0389dd9fc30c529 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/DNNCaloSimSvc.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/DNNCaloSimSvc.cxx
@@ -67,6 +67,7 @@ ISF::DNNCaloSimSvc::DNNCaloSimSvc(const std::string& name, ISvcLocator* svc) :
   declareProperty("RandomSvc"                      ,       m_rndGenSvc                );
   declareProperty("RandomStream"                   ,       m_randomEngineName         );
   declareProperty("FastCaloSimCaloExtrapolation"   ,       m_FastCaloSimCaloExtrapolation );
+
 }
 
 ISF::DNNCaloSimSvc::~DNNCaloSimSvc()
@@ -75,6 +76,7 @@ ISF::DNNCaloSimSvc::~DNNCaloSimSvc()
 /** framework methods */
 StatusCode ISF::DNNCaloSimSvc::initialize()
 {
+
   ATH_MSG_INFO(m_screenOutputPrefix << "Initializing ...");
 
   ATH_CHECK(m_rndGenSvc.retrieve());
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvcPU.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvcPU.cxx
index 0b74cb04c5a9b171caa7f91466f1f1252ceeff12..191ee44ae3a510b02a65410aac5189d8f398d43c 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvcPU.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvcPU.cxx
@@ -91,7 +91,7 @@ ISF::FastCaloSimSvcPU::~FastCaloSimSvcPU()
 StatusCode ISF::FastCaloSimSvcPU::initialize()
 {
    ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing FastCaloSimSvcPU ...");
-   
+
    detID=new AtlasDetectorID();
    std::unique_ptr<IdDictParser> parser(new IdDictParser());
    IdDictMgr& idd = parser->parse ("IdDictParser/ATLAS_IDS.xml");
diff --git a/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py b/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
index 5698c66ef42b0acdce86915302d56bccf10f0fbb..8f140f56c32b95febef0dabb90adecd20c0dbfe4 100644
--- a/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
+++ b/TileCalorimeter/TileMonitoring/python/TileJetMonitorAlgorithm.py
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
 '''
@@ -54,7 +54,7 @@ def TileJetMonitoringConfig(flags, **kwargs):
 
         jvtTool = CompFactory.JetVertexTaggerTool()
         jetContainer = kwargs.get('JetContainer', tileJetMonAlg._descriptors['JetContainer'].default)
-        jvtTool.JetContainer = jetContainer
+        jvtTool.JetContainer = str(jetContainer)
         tileJetMonAlg.JVT = jvtTool
 
         jetCleaningTool = CompFactory.JetCleaningTool()
diff --git a/TileCalorimeter/TileRecAlgs/python/TileDigitsFilterConfig.py b/TileCalorimeter/TileRecAlgs/python/TileDigitsFilterConfig.py
index 0542192fb2201ded04a335a29596a8ab4db7a511..514b90b6aba6c88d5a3dfe699c02b647587703a2 100644
--- a/TileCalorimeter/TileRecAlgs/python/TileDigitsFilterConfig.py
+++ b/TileCalorimeter/TileRecAlgs/python/TileDigitsFilterConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """Define method to construct configured Tile digits filter algorithm"""
 
@@ -35,17 +35,17 @@ def TileDigitsFilterOutputCfg(flags, streamName = 'ESD', **kwargs):
     outputItemList = []
 
     if 'OutputDigitsContainer' in tileDigitsFilter._properties:
-        digitsContainer = tileDigitsFilter._properties['OutputDigitsContainer']
+        digitsContainer = str(tileDigitsFilter._properties['OutputDigitsContainer'])
     else:
-        digitsContainer = tileDigitsFilter._descriptors['OutputDigitsContainer'].default
+        digitsContainer = str(tileDigitsFilter._descriptors['OutputDigitsContainer'].default)
 
     if digitsContainer != '':
         outputItemList += ['TileDigitsContainer#' + digitsContainer]
 
     if 'OutputRawChannelContainer' in tileDigitsFilter._properties:
-        rawChannelContainer = tileDigitsFilter._properties['OutputRawChannelContainer']
+        rawChannelContainer = str(tileDigitsFilter._properties['OutputRawChannelContainer'])
     else:
-        rawChannelContainer = tileDigitsFilter._descriptors['OutputRawChannelContainer'].default
+        rawChannelContainer = str(tileDigitsFilter._descriptors['OutputRawChannelContainer'].default)
 
     if rawChannelContainer != '':
         outputItemList += ['TileRawChannelContainer#' + rawChannelContainer]
diff --git a/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py b/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py
index 3a6f6a9b470058cdfc193866e77d05f2beec3faf..50a53093161e18078e6f3f881b5d1b438bbb0ab1 100644
--- a/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py
+++ b/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """Define method to construct configured Tile digits maker algorithm"""
 
@@ -147,7 +147,7 @@ def TileDigitsMakerOutputCfg(flags, **kwargs):
         else:
             tileDigitsContainer = tileDigitsMaker.getDefaultProperty('TileFilteredContainer')
 
-    tileDigitsContainer = tileDigitsContainer.split('+').pop()
+    tileDigitsContainer = str(tileDigitsContainer).split('+').pop()
     if flags.Digitization.AddCaloDigi:
         outputItemList = ['TileDigitsContainer#*']
     else:
diff --git a/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py b/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py
index dc00afd89dc3eda8cd9c6b09a7168930867a3ee3..524bf19f316dde89418495dfe573c3508cfdc690 100644
--- a/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py
+++ b/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """Define method to construct configured Tile hits to TTL1 algorithm"""
 
@@ -75,14 +75,14 @@ def TileTTL1OutputCfg(flags, TileHitToTTL1):
         tileTTL1Container = TileHitToTTL1.TileTTL1Container
     else:
         tileTTL1Container = TileHitToTTL1.getDefaultProperty('TileTTL1Container')
-    tileTTL1Container = tileTTL1Container.split('+').pop()
+    tileTTL1Container = str(tileTTL1Container).split('+').pop()
     outputItemList = ['TileTTL1Container#' + tileTTL1Container]
 
     if hasattr(TileHitToTTL1, 'TileMBTSTTL1Container'):
         mbtsTTL1Container = TileHitToTTL1.TileMBTSTTL1Container
     else:
         mbtsTTL1Container = TileHitToTTL1.getDefaultProperty('TileMBTSTTL1Container')
-    mbtsTTL1Container = mbtsTTL1Container.split('+').pop()
+    mbtsTTL1Container = str(mbtsTTL1Container).split('+').pop()
     outputItemList += ['TileTTL1Container#' + mbtsTTL1Container]
 
     acc = ComponentAccumulator()
diff --git a/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverConfig.py b/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverConfig.py
index 3be0ac4272fca4bcf964eb53566ef6419bba536f..7ea7375ebb13f4bb01d3a6cde2361fc46edae798 100644
--- a/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverConfig.py
+++ b/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """Define method to construct configured Tile pulse for muon receiver algorithm"""
 
@@ -104,7 +104,7 @@ def TilePulseForTileMuonReceiverOutputCfg(flags, **kwargs):
         muRcvDigitsCnt = tilePulseForMuRcv.MuonReceiverDigitsContainer
     else:
         muRcvDigitsCnt = tilePulseForMuRcv.getDefaultProperty('MuonReceiverDigitsContainer')
-    muRcvDigitsCnt = muRcvDigitsCnt.split('+').pop()
+    muRcvDigitsCnt = str(muRcvDigitsCnt).split('+').pop()
     outputItemList = ['TileDigitsContainer#' + muRcvDigitsCnt]
 
     if not flags.Digitization.PileUpPremixing:
@@ -112,7 +112,7 @@ def TilePulseForTileMuonReceiverOutputCfg(flags, **kwargs):
             muRcvRawChCnt = tilePulseForMuRcv.MuonReceiverRawChannelContainer
         else:
             muRcvRawChCnt = tilePulseForMuRcv.getDefaultProperty('MuonReceiverRawChannelContainer')
-        muRcvRawChCnt = muRcvRawChCnt.split('+').pop()
+        muRcvRawChCnt = str(muRcvRawChCnt).split('+').pop()
         outputItemList += ['TileRawChannelContainer#' + muRcvRawChCnt]
 
     if flags.Output.doWriteRDO:
diff --git a/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverDecisionConfig.py b/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverDecisionConfig.py
index c9ec9886cf0c31cfe6b57ed36c5e427d0b19f8c3..d3a707929b26907feb6ee49f4ef32c38dbbe8613 100644
--- a/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverDecisionConfig.py
+++ b/TileCalorimeter/TileSimAlgs/python/TileMuonReceiverDecisionConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """Define method to construct configured Tile muon receiver decision algorithm"""
 
@@ -58,7 +58,7 @@ def TileMuonReceiverDecisionOutputCfg(flags, **kwargs):
         muRcvContainer = muRcvDecisionAlg.TileMuonReceiverContainer
     else:
         muRcvContainer = muRcvDecisionAlg.getDefaultProperty('TileMuonReceiverContainer')
-    muRcvContainer = muRcvContainer.split('+').pop()
+    muRcvContainer = str(muRcvContainer).split('+').pop()
     outputItemList = ['TileMuonReceiverContainer#' + muRcvContainer]
 
     if flags.Output.doWriteRDO:
diff --git a/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx b/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx
index d58de4d0e1b2981b4db9ff42feabe2146abb8ad8..2d06ed00de0d391142917f1b505d59041c50b061 100644
--- a/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx
+++ b/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "ActsGeometry/ActsTrackingGeometrySvc.h"
@@ -49,6 +49,12 @@ StatusCode
 ActsTrackingGeometrySvc::initialize()
 {
   ATH_MSG_INFO(name() << " is initializing");
+
+  // FIXME: ActsCaloTrackingVolumeBuilder holds ReadHandle to CaloDetDescrManager.
+  // Hopefully this service is never called before that object is available.
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+
   ATH_MSG_INFO("Acts version is: v" << Acts::VersionMajor << "."
                                     << Acts::VersionMinor << "."
                                     << Acts::VersionPatch
diff --git a/Tracking/TrkDetDescr/TrkDetDescrSvc/src/TrackingGeometrySvc.cxx b/Tracking/TrkDetDescr/TrkDetDescrSvc/src/TrackingGeometrySvc.cxx
index a58cb229e50ba086eab1d88fc6626517be4fdeeb..51d552db99908270c207b57163a865db41f71b7a 100755
--- a/Tracking/TrkDetDescr/TrkDetDescrSvc/src/TrackingGeometrySvc.cxx
+++ b/Tracking/TrkDetDescr/TrkDetDescrSvc/src/TrackingGeometrySvc.cxx
@@ -45,6 +45,9 @@ Trk::TrackingGeometrySvc::~TrackingGeometrySvc()
 /** Initialize Service */
 StatusCode Trk::TrackingGeometrySvc::initialize()
 {
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+  
   // get the DetectorStore
   ATH_CHECK( service("DetectorStore", m_pDetStore ) );
 
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
index 04a18e92d6a0086694c3f3380d2d1313b6739815..114c13b95d074bf87cabeb6c45f3ae95d9397056 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
@@ -17,6 +17,11 @@ TrigCaloDataAccessSvc::TrigCaloDataAccessSvc( const std::string& name, ISvcLocat
 TrigCaloDataAccessSvc::~TrigCaloDataAccessSvc() {}
 
 StatusCode TrigCaloDataAccessSvc::initialize() {
+
+  /// Temporary fix
+  m_autoRetrieveTools = false;
+  m_checkToolDeps = false;
+          
   CHECK( m_roiMapTool.retrieve() );
   CHECK( m_larDecoder.retrieve() );
   CHECK( m_tileDecoder.retrieve() );
diff --git a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx
index 30686645d28472bf2816cd78632d6a1f2748d7c9..cb77a09e530e7989029de5744c5f8899767c67dd 100644
--- a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx
+++ b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx
@@ -69,6 +69,8 @@ StatusCode TrigNavigationThinningSvc::initialize() {
 
   ATH_MSG_DEBUG( "TrigNavigationThinningSvc::initialize()" << name() );
 
+  m_checkToolDeps = false;
+
   // load the required tools
   if( not m_trigDecisionTool.empty() ) {
     if ( m_trigDecisionTool.retrieve().isFailure() ) {
diff --git a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
index fe55b17b79d69986da8bb5e64ecbd09e41418d63..c03f42391f682fe8e39edfa393f6a180e70663c5 100644
--- a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
+++ b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 # 
 
 def setupFilterMonitoring( filterAlg ):    
@@ -8,7 +8,7 @@ def setupFilterMonitoring( filterAlg ):
     from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
     monTool = GenericMonitoringTool('MonTool')
     
-    inputKeys = filterAlg.Input
+    inputKeys = [str(i) for i in filterAlg.Input]
 
     monTool.HistPath="HLTFramework/Filters"
     monTool.defineHistogram( 'name,stat;'+filterAlg.getName(),  path='EXPERT', type='TH2I',
diff --git a/Trigger/TrigTools/TrigMuonRoITools/python/TrigMuonRoIToolsConfig.py b/Trigger/TrigTools/TrigMuonRoITools/python/TrigMuonRoIToolsConfig.py
index aa05049b86f16cb7f065c7a82b567c3013f83263..3b724ff69e686d40e0fb18c2264b713b85b6a67c 100644
--- a/Trigger/TrigTools/TrigMuonRoITools/python/TrigMuonRoIToolsConfig.py
+++ b/Trigger/TrigTools/TrigMuonRoITools/python/TrigMuonRoIToolsConfig.py
@@ -19,7 +19,7 @@ def TrigMuonRoIToolCfg():
         topSequence = AlgSequence()
         if not hasattr(topSequence,'SGInputLoader'):
             raise RuntimeError('Cannot configure TrigMuonRoITool because SGInputLoader is missing from topSequence')
-        topSequence.SGInputLoader.Load += [( rdoType, 'StoreGateSvc+'+tool.MUCTPILocation )]
+        topSequence.SGInputLoader.Load += [( rdoType, 'StoreGateSvc+%s' % tool.MUCTPILocation )]
 
         # Enable using the Converter to load MUCTPI_RDO from ByteStream
         from AthenaCommon.GlobalFlags import globalflags
@@ -27,6 +27,6 @@ def TrigMuonRoIToolCfg():
             from AthenaCommon.AppMgr import ServiceMgr as svcMgr
             if not hasattr(svcMgr, 'ByteStreamAddressProviderSvc'):
                 raise RuntimeError('Cannot configure TrigMuonRoITool because ByteStreamAddressProviderSvc is missing from svcMgr')
-            svcMgr.ByteStreamAddressProviderSvc.TypeNames += [ rdoType+'/'+tool.MUCTPILocation ]
+            svcMgr.ByteStreamAddressProviderSvc.TypeNames += [ '%s/%s' % (rdoType, tool.MUCTPILocation) ]
 
     return tool
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
index 037ee32e853c5cc4428e8d4524258b4d96da4535..bf2d596108eb2d507ac2c8fd7831803da7c9a151 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
@@ -51,9 +51,9 @@ def __decisionsFromHypo( hypo ):
     from TrigCompositeUtils.TrigCompositeUtils import isLegId
     __log.debug("Hypo type %s is combo %r", hypo.getName(), __isCombo(hypo))
     if __isCombo( hypo ):
-        return [key for key in list(hypo.MultiplicitiesMap.keys()) if not isLegId(key)], hypo.HypoOutputDecisions[0]
+        return [key for key in list(hypo.MultiplicitiesMap.keys()) if not isLegId(key)], str(hypo.HypoOutputDecisions[0])
     else: # regular hypos
-        return [ t.getName() for t in hypo.HypoTools if not isLegId(t.getName())], hypo.HypoOutputDecisions
+        return [ t.getName() for t in hypo.HypoTools if not isLegId(t.getName())], str(hypo.HypoOutputDecisions)
 
 def __getSequenceChildrenIfIsSequence( s ):
     if isSequence( s ):
@@ -99,7 +99,7 @@ def collectFilters( steps ):
 
 def collectL1DecoderDecisionObjects(l1decoder):
     decisionObjects = set()
-    decisionObjects.update([ d.Decisions for d in l1decoder.roiUnpackers ])
+    decisionObjects.update([ str(d.Decisions) for d in l1decoder.roiUnpackers ])
     from L1Decoder.L1DecoderConfig import mapThresholdToL1DecisionCollection
     decisionObjects.add( mapThresholdToL1DecisionCollection("FSNOSEED") ) # Include also Full Scan
     __log.info("Collecting %i decision objects from L1 decoder instance", len(decisionObjects))
@@ -113,14 +113,14 @@ def collectHypoDecisionObjects(hypos, inputs = True, outputs = True):
                          hypoAlg.getName(), hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions )
             if isinstance( hypoAlg.HypoInputDecisions, list):
                 if inputs:
-                    [ decisionObjects.add( d ) for d in hypoAlg.HypoInputDecisions ]
+                    [ decisionObjects.add( str(d) ) for d in hypoAlg.HypoInputDecisions ]
                 if outputs:
-                    [ decisionObjects.add( d ) for d in hypoAlg.HypoOutputDecisions ]
+                    [ decisionObjects.add( str(d) ) for d in hypoAlg.HypoOutputDecisions ]
             else:
                 if inputs:
-                    decisionObjects.add( hypoAlg.HypoInputDecisions )
+                    decisionObjects.add( str(hypoAlg.HypoInputDecisions) )
                 if outputs:
-                    decisionObjects.add( hypoAlg.HypoOutputDecisions )
+                    decisionObjects.add( str(hypoAlg.HypoOutputDecisions) )
     __log.info("Collecting %i decision objects from hypos", len(decisionObjects))
     return sorted(decisionObjects)
 
@@ -129,15 +129,15 @@ def collectFilterDecisionObjects(filters, inputs = True, outputs = True):
     for step, stepFilters in filters.items():
         for filt in stepFilters:
             if inputs and hasattr( filt, "Input" ):
-                decisionObjects.update( filt.Input )
+                decisionObjects.update( str(i) for i in filt.Input )
             if outputs and hasattr( filt, "Output" ):
-                decisionObjects.update( filt.Output )
+                decisionObjects.update( str(o) for o in filt.Output )
     __log.info("Collecting %i decision objects from filters", len(decisionObjects))
     return decisionObjects
 
 def collectHLTSummaryDecisionObjects(hltSummary):
     decisionObjects = set()
-    decisionObjects.add( hltSummary.DecisionsSummaryKey )
+    decisionObjects.add( str(hltSummary.DecisionsSummaryKey) )
     __log.info("Collecting %i decision objects from hltSummary", len(decisionObjects))
     return decisionObjects
 
@@ -445,8 +445,8 @@ def triggerPOOLOutputCfg(flags, edmSet):
 
     # Ensure OutputStream runs after TrigDecisionMakerMT and xAODMenuWriterMT
     streamAlg.ExtraInputs += [
-        ("xAOD::TrigDecision", decmaker.TrigDecisionKey),
-        ("xAOD::TrigConfKeys", menuwriter.KeyWriterTool.ConfKeys)]
+        ("xAOD::TrigDecision", str(decmaker.TrigDecisionKey)),
+        ("xAOD::TrigConfKeys", str(menuwriter.KeyWriterTool.ConfKeys))]
 
     # Produce xAOD L1 RoIs from RoIBResult
     from AnalysisTriggerAlgs.AnalysisTriggerAlgsCAConfig import RoIBResultToxAODCfg
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
index 9d34dd8a56ded7fe9547aec2b2d4a04a42c62719..e530ebad4636f0e7c888029d5c3b157b8b6cf458 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
@@ -51,9 +51,9 @@ def bJetStep2Sequence():
 
 
     # Prepare data objects for view verifier
-    viewDataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+' + InputMakerAlg.InViewRoIs ),
-                       ( 'xAOD::VertexContainer' , 'StoreGateSvc+' + prmVtxKey ),
-                       ( 'xAOD::JetContainer' , 'StoreGateSvc+' + InputMakerAlg.InViewJets )]
+    viewDataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % InputMakerAlg.InViewRoIs ),
+                       ( 'xAOD::VertexContainer' , 'StoreGateSvc+%s' % prmVtxKey ),
+                       ( 'xAOD::JetContainer' , 'StoreGateSvc+%s' % InputMakerAlg.InViewJets )]
 
     # Second stage of Fast Tracking and Precision Tracking
     from TriggerMenuMT.HLTMenuConfig.Bjet.BjetTrackingConfiguration import getSecondStageBjetTracking
@@ -64,7 +64,7 @@ def bJetStep2Sequence():
 
     # Flavour Tagging
     from TriggerMenuMT.HLTMenuConfig.Bjet.BjetFlavourTaggingConfiguration import getFlavourTagging
-    acc_flavourTaggingAlgs,bTaggingContainerName = getFlavourTagging( inputJets=InputMakerAlg.InViewJets, inputVertex=prmVtxKey, inputTracks=PTTrackParticles[0] )
+    acc_flavourTaggingAlgs,bTaggingContainerName = getFlavourTagging( inputJets=str(InputMakerAlg.InViewJets), inputVertex=prmVtxKey, inputTracks=PTTrackParticles[0] )
     
     Configurable.configurableRun3Behavior=0
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
index e1d37d311f7fe293e090c0cf7117f6010605aec9..46850e373768cee318638322341494072f8ef89d 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
@@ -62,7 +62,7 @@ def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs=caloFSRoI, outputNam
     alg.RoIs=RoIs
     alg.TrigDataAccessMT=svcMgr.TrigCaloDataAccessSvc
     alg.CellsName=outputName
-    return parOR(name+"RecoSequence", [alg]), alg.CellsName
+    return parOR(name+"RecoSequence", [alg]), str(alg.CellsName)
 
 def caloClusterRecoSequence(
         flags, name="HLTCaloClusterMakerFS", RoIs=caloFSRoI,
@@ -76,7 +76,7 @@ def caloClusterRecoSequence(
             doLC=False,
             cells=cells_name)
     alg.CaloClusters = recordable(outputName)
-    return parOR(name+"RecoSequence", [cell_sequence, alg]), alg.CaloClusters
+    return parOR(name+"RecoSequence", [cell_sequence, alg]), str(alg.CaloClusters)
 
 def LCCaloClusterRecoSequence(
         flags, name="HLTCaloClusterCalibratorLCFS", RoIs=caloFSRoI,
@@ -92,4 +92,4 @@ def LCCaloClusterRecoSequence(
             InputClusters = em_clusters,
             OutputClusters = outputName,
             OutputCellLinks = outputName+"_cellLinks")
-    return parOR(name+"RecoSequence", [em_sequence, alg]), alg.OutputClusters
+    return parOR(name+"RecoSequence", [em_sequence, alg]), str(alg.OutputClusters)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronSequenceSetup.py
index ad6fda1dcb1d103626551ec27c3e23680f1b9413..346bb70f65c328f13e9f9d276c0ca5284076542b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronSequenceSetup.py
@@ -24,8 +24,8 @@ def fastElectronSequence(ConfigFlags):
     # A simple algorithm to confirm that data has been inherited from parent view
     # Required to satisfy data dependencies
     from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import CaloMenuDefs  
-    viewVerify.DataObjects += [( 'xAOD::TrigEMClusterContainer' , 'StoreGateSvc+' + CaloMenuDefs.L2CaloClusters ),
-                               ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs )]
+    viewVerify.DataObjects += [( 'xAOD::TrigEMClusterContainer' , 'StoreGateSvc+%s' % CaloMenuDefs.L2CaloClusters ),
+                               ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
 
     TrackParticlesName = ""
     for viewAlg in viewAlgs:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonSequenceSetup.py
index 906e8cf658bd4dbd49f0621e47316f818f033315..610cf8739e9d80d961d6696e78e3f4ec698ce5bc 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonSequenceSetup.py
@@ -18,7 +18,7 @@ def fastPhotonMenuSequence():
     
     from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import CaloMenuDefs
     ViewVerify = CfgMgr.AthViews__ViewDataVerifier("FastPhotonViewDataVerifier")
-    ViewVerify.DataObjects = [( 'xAOD::TrigEMClusterContainer' , 'StoreGateSvc+' + CaloMenuDefs.L2CaloClusters ),
+    ViewVerify.DataObjects = [( 'xAOD::TrigEMClusterContainer' , 'StoreGateSvc+%s' % CaloMenuDefs.L2CaloClusters ),
                               ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+EMIDRoIs' )]
 
     from TrigEgammaHypo.TrigEgammaFastPhotonFexMTConfig import EgammaFastPhotonFex_1
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py
index 6e00d7005126471f74f3131687316086aef9f54b..ee2ecf9dd890577eab7b80b5064766d198092272 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionCaloRec.py
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
 from egammaAlgs import egammaAlgsConf
@@ -19,7 +19,7 @@ def precisionCaloRecoSequence(DummyFlag, RoIs):
     log.debug('RoIs = %s',RoIs)
 
     egammaTopoClusterCopier = AlgFactory( egammaAlgsConf.egammaTopoClusterCopier,
-                                          name = 'TrigEgammaTopoClusterCopier'+RoIs ,
+                                          name = 'TrigEgammaTopoClusterCopier%s' % RoIs ,
                                           InputTopoCollection= "caloclusters",
                                           OutputTopoCollection=precisionCaloMenuDefs.precisionCaloClusters,
                                           OutputTopoCollectionShallow="tmp_"+precisionCaloMenuDefs.precisionCaloClusters,
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
index d5d7844d53e338bed1d3fad8367a79ecd2594192..d3afae969162959274015fe9cd4c0a5efcea1a76 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
@@ -32,8 +32,8 @@ def precisionElectronRecoSequence(RoIs):
     ViewVerifyTrk   = CfgMgr.AthViews__ViewDataVerifier("PrecisionTrackViewDataVerifier")
 
     ViewVerifyTrk.DataObjects = [( 'CaloCellContainer' , 'StoreGateSvc+CaloCells' ),
-                                 ( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+' + precisionCaloMenuDefs.precisionCaloClusters ),
-                                 ( 'xAOD::TrackParticleContainer','StoreGateSvc+' + TrigEgammaKeys.TrigElectronTracksCollectionName)] 
+                                 ( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+%s' % precisionCaloMenuDefs.precisionCaloClusters ),
+                                 ( 'xAOD::TrackParticleContainer','StoreGateSvc+%s' % TrigEgammaKeys.TrigElectronTracksCollectionName)]
 
 
     """ Retrieve the factories now """
@@ -41,7 +41,7 @@ def precisionElectronRecoSequence(RoIs):
     from TriggerMenuMT.HLTMenuConfig.Egamma.TrigEgammaFactories import  TrigEMTrackMatchBuilder
    
     #The sequence of these algorithms
-    thesequence = parOR( "precisionElectron_"+RoIs)
+    thesequence = parOR( "precisionElectron_%s" % RoIs)
    
     thesequence += ViewVerifyTrk
     # Create the sequence of three steps:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
index e3754153984ee8a2ebe427dd36352a9af3341949..41b77d34c2f90bfde544ce78ae02ed1bfc89b802 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
@@ -97,7 +97,7 @@ class JetChainConfiguration(ChainConfigurationBase):
         from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloHypoMenuSequence
         jetSeq = RecoFragmentsPool.retrieve( jetCaloHypoMenuSequence, 
                                              ConfigFlags, **self.recoDict )
-        jetCollectionName = jetSeq.hypo.Alg.Jets 
+        jetCollectionName = str(jetSeq.hypo.Alg.Jets)
 
         return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
@@ -109,7 +109,7 @@ class JetChainConfiguration(ChainConfigurationBase):
         from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetTrackingHypoMenuSequence
         jetSeq = RecoFragmentsPool.retrieve( jetTrackingHypoMenuSequence,
                                              ConfigFlags, clustersKey=clustersKey, **self.recoDict )
-        jetCollectionName = jetSeq.hypo.Alg.Jets 
+        jetCollectionName = str(jetSeq.hypo.Alg.Jets)
 
         return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
@@ -120,7 +120,7 @@ class JetChainConfiguration(ChainConfigurationBase):
         jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloRecoMenuSequence,
                                                           ConfigFlags, clusterCalib=self.recoDict["calib"] )
 
-        return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
+        return str(clustersKey), ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
     def getJetCaloPreselChainStep(self):
         # Define a fixed preselection dictionary for prototyping -- we may expand the options
@@ -168,7 +168,7 @@ class JetChainConfiguration(ChainConfigurationBase):
         jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloPreselMenuSequence,
                                                           ConfigFlags, **preselRecoDict )
 
-        return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[preselChainDict])
+        return str(clustersKey), ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[preselChainDict])
 
     def getJetTLAChainStep(self, jetCollectionName):
         from TriggerMenuMT.HLTMenuConfig.Jet.JetTLASequences import jetTLAMenuSequence
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
index 9f8e18736c812458a36a66dac278b66e69c6a5b0..10c99e949b1d27acdd11a21c22c4c830574eb0f7 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
@@ -109,7 +109,7 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
 
     # Add the PseudoJetGetter alg to the sequence
     constitPJAlg = getConstitPJGAlg( jetDef.inputdef )
-    constitPJKey = constitPJAlg.OutputContainer
+    constitPJKey = str(constitPJAlg.OutputContainer)
     recoSeq += conf2toConfigurable( constitPJAlg )
     # Basic list of PseudoJets is just the constituents
     # Append ghosts (tracks) if desired
@@ -130,7 +130,7 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
         # Not currently written because impossible to merge
         # across event views, which is maybe a concern in
         # the case of regional PFlow
-        rhoKey = eventShapeAlg.EventDensityTool.OutputContainer
+        rhoKey = str(eventShapeAlg.EventDensityTool.OutputContainer)
 
     # Import the standard jet modifiers as defined for offline
     # We can add/configure these differently if desired. 
@@ -226,7 +226,7 @@ def reclusteredJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoD
     rcJetDef.modifiers = rcModList
 
     rcConstitPJAlg = getConstitPJGAlg( rcJetDef.inputdef )
-    rcConstitPJKey = rcConstitPJAlg.OutputContainer
+    rcConstitPJKey = str(rcConstitPJAlg.OutputContainer)
     recoSeq += conf2toConfigurable( rcConstitPJAlg )
 
     # Get online monitoring tool
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
index f9ae03260da488e59fd9449a993d5a21675af90f..2d43cee82dd58c29a823e3ede367750d057da7c0 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """
     ------ Documentation on HLT Tree creation -----
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index 6b5e09bfbdb25d874dfb86b75adb941af67f43b1..22a8e9fe8ee5d5e86e0b71fa828b8ed124a010cc 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -1,5 +1,6 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
+from GaudiKernel.DataHandle import DataHandle
 from AthenaCommon.Logging import logging
 log = logging.getLogger( __name__ )
 from collections import MutableSequence
@@ -19,10 +20,10 @@ class Node(object):
         self.outputs=[]
 
     def addOutput(self, name):
-        self.outputs.append(name)
+        self.outputs.append(str(name) if isinstance(name, DataHandle) else name)
 
     def addInput(self, name):
-        self.inputs.append(name)
+        self.inputs.append(str(name) if isinstance(name, DataHandle) else name)
 
     def getOutputList(self):
         return self.outputs
@@ -77,7 +78,7 @@ class AlgNode(Node):
             log.debug("Output DH not added in %s: %s already set!", self.Alg.getName(), name)
         else:
             if self.outputProp != '':
-                self.setPar(self.outputProp,name)
+                self.setPar(self.outputProp, name)
             else:
                 log.debug("no outputProp set for output of %s", self.Alg.getName())
         Node.addOutput(self, name)
@@ -91,7 +92,7 @@ class AlgNode(Node):
         if isinstance(cval, MutableSequence):
             outputs.extend(cval)
         else:
-            outputs.append(cval)
+            outputs.append(str(cval))
         return outputs
 
     def addInput(self, name):
@@ -100,7 +101,7 @@ class AlgNode(Node):
             log.debug("Input DH not added in %s: %s already set!", self.Alg.getName(), name)
         else:
             if self.inputProp != '':
-                self.setPar(self.inputProp,name)
+                self.setPar(self.inputProp, name)
             else:
                 log.debug("no InputProp set for input of %s", self.Alg.getName())
         Node.addInput(self, name)
@@ -115,7 +116,7 @@ class AlgNode(Node):
         if isinstance(cval, MutableSequence):
             inputs.extend(cval)
         else:
-            inputs.append(cval)
+            inputs.append(str(cval))
         return inputs
 
     def __repr__(self):
@@ -967,7 +968,8 @@ class RecoFragmentsPool(object):
                allargs.update(kwargs)
         
         sortedkeys = sorted(allargs.keys())
-        sortedvals = [allargs[key] for key in sortedkeys]
+        sortedvals = [str(allargs[key]) if isinstance(allargs[key], DataHandle)
+                      else allargs[key] for key in sortedkeys]
 
         requestHash = hash( ( creator, tuple(sortedkeys), tuple(sortedvals) ) )
         if requestHash not in cls.fragments:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py
index 125532d328340ff32086b37537e09e17e6040498..5c3ad88f939ff2c136785aec54a02f34ac585017 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py
@@ -136,7 +136,7 @@ def muCombAlgSequence(ConfigFlags):
     extraLoads = []
 
     for decision in muonChainFilter.InputDecisions:
-      extraLoads += [( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+'+decision )]
+      extraLoads += [( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+%s' % decision )]
 
     muFastIDRecoSequence = muonIDFastTrackingSequence( l2muCombViewsMaker.InViewRoIs , "", extraLoads )
     # muCombIDSequence = parOR("l2muCombIDSequence", [muFastIDRecoSequence, muCombFilterSequence])
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
index 62e15e4f3d5d7f17556b753246303401856f3d76..77f2dcdd754acf7994680dacf62ff0e0f86d0cdd 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
@@ -60,10 +60,9 @@ muNamesFS = muonNames().getNames('FS')
 def makeMuonPrepDataAlgs(RoIs="MURoIs", forFullScan=False):
 
   from AthenaCommon.CFElements import parOR
-  
-  muDecodeRecoSequence = parOR("decodeMuViewNode_"+RoIs)
 
-  postFix = "_"+RoIs
+  postFix = "_%s" % RoIs
+  muDecodeRecoSequence = parOR("decodeMuViewNode"+postFix)
 
   viewAlgs_MuonPRD = []  # These algs should be executed to prepare muon PRDs for muFast and muEF steps.
 
@@ -365,7 +364,7 @@ def muFastRecoSequence( RoIs, doFullScanID = False, InsideOutMode=False ):
       ViewVerify.DataObjects += [('Muon::MMPrepDataContainer','StoreGateSvc+MM_Measurements')]
     #muFastRecoSequence+=ViewVerify
   else:
-    ViewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs )]
+    ViewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
   ViewVerify.DataObjects += [( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
                              ( 'DataVector< LVL1::RecMuonRoI >' , 'StoreGateSvc+HLT_RecMURoIs' )]
 
@@ -503,7 +502,7 @@ def muonIDFastTrackingSequence( RoIs, name, extraLoads=None ):
 
   from TrigInDetConfig.InDetSetup import makeInDetAlgs
   viewAlgs, viewVerify = makeInDetAlgs( config = IDTrigConfig, rois = RoIs )
-  viewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs )]
+  viewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
   if extraLoads:
     viewVerify.DataObjects += extraLoads
 
@@ -520,7 +519,7 @@ def muCombRecoSequence( RoIs, name ):
   ### Required to satisfy data dependencies                                       ###
   import AthenaCommon.CfgMgr as CfgMgr
   ViewVerify = CfgMgr.AthViews__ViewDataVerifier("muFastViewDataVerifier")
-  ViewVerify.DataObjects = [('xAOD::L2StandAloneMuonContainer','StoreGateSvc+'+muNames.L2SAName)]
+  ViewVerify.DataObjects = [('xAOD::L2StandAloneMuonContainer','StoreGateSvc+%s' % muNames.L2SAName)]
 
   muCombRecoSequence+=ViewVerify
 
@@ -583,7 +582,8 @@ def muEFSARecoSequence( RoIs, name ):
 
   EFMuonViewDataVerifier = CfgMgr.AthViews__ViewDataVerifier( "EFMuonViewDataVerifier_" + name )
   EFMuonViewDataVerifier.DataObjects = [( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
-                                        ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs )]
+                                        ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
+
   efAlgs.append( EFMuonViewDataVerifier )
 
   #need MdtCondDbAlg for the MuonStationIntersectSvc (required by segment and track finding)
@@ -678,7 +678,7 @@ def muEFCBRecoSequence( RoIs, name ):
   ViewVerifyMS.DataObjects = [( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ),  
                               ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ),
                               ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ),
-                              ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs ),
+                              ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs ),
                               ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' )]
   if "FS" in name:
     ViewVerifyMS.DataObjects +=[( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates_FS' )]
@@ -973,8 +973,8 @@ def efmuisoRecoSequence( RoIs, Muons ):
   trackParticles = PTTrackParticles[-1]
   trigEFmuIso.IdTrackParticles = trackParticles
   trigEFmuIso.MuonContName = muNames.EFIsoMuonName
-  trigEFmuIso.ptcone02Name = Muons+".ptcone02"
-  trigEFmuIso.ptcone03Name = Muons+".ptcone03"
+  trigEFmuIso.ptcone02Name = "%s.ptcone02" % Muons
+  trigEFmuIso.ptcone03Name = "%s.ptcone03" % Muons
 
   efmuisoRecoSequence += trigEFmuIso
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
index 3f3e7a41da2baa18baaab20bf3f27e4119da5b4e..00ead372a12d39b3cb1dbea21407d7aefc99d866 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
@@ -1,4 +1,4 @@
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from TrigEDMConfig.TriggerEDMRun3 import recordable
@@ -27,7 +27,7 @@ def precisionPhotonRecoSequence(RoIs):
     from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloSequenceSetup import precisionCaloMenuDefs
     import AthenaCommon.CfgMgr as CfgMgr
     ViewVerify = CfgMgr.AthViews__ViewDataVerifier("PrecisionPhotonPhotonViewDataVerifier")
-    ViewVerify.DataObjects = [( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+' + precisionCaloMenuDefs.precisionCaloClusters ),
+    ViewVerify.DataObjects = [( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+%s' % precisionCaloMenuDefs.precisionCaloClusters ),
                               ( 'CaloCellContainer' , 'StoreGateSvc+CaloCells' )]
 
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
index 784c131bdf93e19ad3e65f09f281f85102c17c7b..9fdeff5037dba97ec50db24fe565ead3a9a1ae23 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
@@ -255,7 +255,7 @@ def tauIdSequence( RoIs, name):
 
     ViewVerifyId = CfgMgr.AthViews__ViewDataVerifier("tauIdViewDataVerifier_"+signatureName)
     ViewVerifyId.DataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+TAUCaloRoIs'    ),
-                                ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs          ),
+                                ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs      ),
                                 ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+RoiForTauCore'  ),
                                 ( 'xAOD::TauTrackContainer' , 'StoreGateSvc+HLT_tautrack_Presel'),  
                                 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.AveIntPerXDecor'   ),
@@ -294,21 +294,20 @@ def precTrackSequence( RoIs , name):
 
 
     ViewVerifyTrk = CfgMgr.AthViews__ViewDataVerifier("tauViewDataVerifier_"+signatureName)
-    ViewVerifyTrk.DataObjects = [( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+'+IDTrigConfig.FT.tracksFTF() ),
+    ViewVerifyTrk.DataObjects = [( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+%s' % IDTrigConfig.FT.tracksFTF() ),
                                  ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.AveIntPerXDecor' ),
-                                 ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs ),
+                                 ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs ),
                                  ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+TAUCaloRoIs' ),
                                  ( 'xAOD::TauTrackContainer' , 'StoreGateSvc+HLT_tautrack_dummy' ),
                                  ( 'xAOD::TauJetContainer' , 'StoreGateSvc+HLT_TrigTauRecMerged_CaloOnly' ),    
                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_FlaggedCondData_TRIG' ),
-                                 ( 'xAOD::IParticleContainer' , 'StoreGateSvc+'+IDTrigConfig.FT.tracksFTF() ),
+                                 ( 'xAOD::IParticleContainer' , 'StoreGateSvc+%s' % IDTrigConfig.FT.tracksFTF() ),
                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
                                  ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' )]
 
     if "TrackInView" not in name:
        ViewVerifyTrk.DataObjects += [ ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+RoiForTauCore' ) ]
 
-
     # Make sure the required objects are still available at whole-event level
     from AthenaCommon.AlgSequence import AlgSequence
     topSequence = AlgSequence()
@@ -351,7 +350,7 @@ def tauFTFSequence( RoIs, name ):
        if "InDetTrigTrackParticleCreatorAlg" in viewAlg.name():
          TrackCollection = viewAlg.TrackName
 
-    viewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+' + RoIs ),
+    viewVerify.DataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs ),
                                ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
                                ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' ),#For some reason not picked up properly
                                ( 'xAOD::TauJetContainer' , 'StoreGateSvc+HLT_TrigTauRecMerged_CaloOnly')]