diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py
index 587fc173326ee1f418e22dfd2522136d0d9bf33e..742b8b517046d54c294850af715649d2a596d41a 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/MdtDataPreparator_test.py
@@ -44,7 +44,7 @@ def testCfg (configFlags):
     from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg
     result.merge (MagneticFieldSvcCfg(configFlags, UseDCS = False))
 
-    TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA__MdtDataPreparator
+    TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA.MdtDataPreparator
     result.addPublicTool (TrigL2MuonSA__MdtDataPreparator ('TrigL2MuonSA::MdtDataPreparator', OutputLevel = 1)) # noqa: ATL900
     
     result.addEventAlgo (TestAlg ('TestAlg'))
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
index e7f1b1d3b212d71def85af74bd6927b5ffdd7247..30d0ade1678b73b7c862eb0063a682405da33edf 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
@@ -29,9 +29,9 @@ def RpcDataPreparatorCfg( flags, roisKey ):
     acc.merge( rpcAcc )
 
     # Set Rpc data preparator for MuFast data preparator
-    TrigL2MuonSA__RpcDataPreparator=CompFactory.TrigL2MuonSA__RpcDataPreparator
-    RpcDataPreparator = TrigL2MuonSA__RpcDataPreparator( RpcPrepDataProvider  = "",
-                                                         RpcRawDataProvider   = "",
+    TrigL2MuonSA__RpcDataPreparator=CompFactory.getComp("TrigL2MuonSA::RpcDataPreparator")
+    RpcDataPreparator = TrigL2MuonSA__RpcDataPreparator( RpcPrepDataProvider  = None,
+                                                         RpcRawDataProvider   = None,
                                                          DecodeBS = False,
                                                          DoDecoding = False )
     acc.addPublicTool( RpcDataPreparator, primary=True ) # Now this is needed, but should be removed
@@ -56,9 +56,9 @@ def TgcDataPreparatorCfg( flags, roisKey ):
     acc.merge( tgcAcc )
 
     # Set Tgc data preparator for MuFast data preparator
-    TrigL2MuonSA__TgcDataPreparator=CompFactory.TrigL2MuonSA__TgcDataPreparator
-    TgcDataPreparator = TrigL2MuonSA__TgcDataPreparator( TgcPrepDataProvider  = "",
-                                                         TgcRawDataProvider   = "",
+    TrigL2MuonSA__TgcDataPreparator=CompFactory.getComp("TrigL2MuonSA::TgcDataPreparator")
+    TgcDataPreparator = TrigL2MuonSA__TgcDataPreparator( TgcPrepDataProvider  = None,
+                                                         TgcRawDataProvider   = None,
                                                          DecodeBS = False,
                                                          DoDecoding = False )
 
@@ -83,9 +83,9 @@ def MdtDataPreparatorCfg( flags, roisKey ):
     acc.merge( mdtAcc )
 
     # Set Mdt data preparator for MuFast data preparator
-    TrigL2MuonSA__MdtDataPreparator=CompFactory.TrigL2MuonSA__MdtDataPreparator
-    MdtDataPreparator = TrigL2MuonSA__MdtDataPreparator( MdtPrepDataProvider  = "",
-                                                         MDT_RawDataProvider   = "",
+    TrigL2MuonSA__MdtDataPreparator=CompFactory.getComp("TrigL2MuonSA::MdtDataPreparator")
+    MdtDataPreparator = TrigL2MuonSA__MdtDataPreparator( MdtPrepDataProvider  = None,
+                                                         MDT_RawDataProvider   = None,
                                                          DecodeBS = False,
                                                          DoDecoding = False )
  
@@ -114,10 +114,10 @@ def CscDataPreparatorCfg( flags, roisKey ):
     acc.merge( cscAcc )
 
     # Set Csc data preparator for MuFast data preparator
-    TrigL2MuonSA__CscDataPreparator=CompFactory.TrigL2MuonSA__CscDataPreparator
-    CscDataPreparator = TrigL2MuonSA__CscDataPreparator( CscPrepDataProvider  = "",
-                                                         CscClusterProvider   = "",
-                                                         CscRawDataProvider   = "",
+    TrigL2MuonSA__CscDataPreparator=CompFactory.getComp("TrigL2MuonSA::CscDataPreparator")
+    CscDataPreparator = TrigL2MuonSA__CscDataPreparator( CscPrepDataProvider  = None,
+                                                         CscClusterProvider   = None,
+                                                         CscRawDataProvider   = None,
                                                          DecodeBS = False,
                                                          DoDecoding = False )
 
@@ -147,14 +147,14 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
     acc.merge( cscAcc )
 
     # Set MuFast data preparator
-    TrigL2MuonSA__MuFastDataPreparator=CompFactory.TrigL2MuonSA__MuFastDataPreparator
+    TrigL2MuonSA__MuFastDataPreparator=CompFactory.getComp("TrigL2MuonSA::MuFastDataPreparator")
     MuFastDataPreparator = TrigL2MuonSA__MuFastDataPreparator( CSCDataPreparator = CscDataPreparator,
                                                                MDTDataPreparator = MdtDataPreparator,
                                                                RPCDataPreparator = RpcDataPreparator,
                                                                TGCDataPreparator = TgcDataPreparator )
 
     # Setup the station fitter
-    TrigL2MuonSA__MuFastStationFitter,TrigL2MuonSA__PtFromAlphaBeta=CompFactory.getComps("TrigL2MuonSA__MuFastStationFitter","TrigL2MuonSA__PtFromAlphaBeta")
+    TrigL2MuonSA__MuFastStationFitter,TrigL2MuonSA__PtFromAlphaBeta=CompFactory.getComps("TrigL2MuonSA::MuFastStationFitter","TrigL2MuonSA::PtFromAlphaBeta")
     PtFromAlphaBeta = TrigL2MuonSA__PtFromAlphaBeta()
     if flags.Trigger.run2Config == '2016':
         PtFromAlphaBeta.useCscPt = False
@@ -165,7 +165,7 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
 
     MuFastStationFitter = TrigL2MuonSA__MuFastStationFitter( PtFromAlphaBeta = PtFromAlphaBeta )
 
-    TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA__MuFastPatternFinder","TrigL2MuonSA__MuFastTrackFitter","TrigL2MuonSA__MuFastTrackExtrapolator","TrigL2MuonSA__MuCalStreamerTool","TrigL2MuonSA__CscSegmentMaker")
+    TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA::MuFastPatternFinder","TrigL2MuonSA::MuFastTrackFitter","TrigL2MuonSA::MuFastTrackExtrapolator","TrigL2MuonSA::MuCalStreamerTool","TrigL2MuonSA::CscSegmentMaker")
     MuFastPatternFinder     = TrigL2MuonSA__MuFastPatternFinder()
     MuFastTrackFitter       = TrigL2MuonSA__MuFastTrackFitter()
     MuFastTrackExtrapolator = TrigL2MuonSA__MuFastTrackExtrapolator()
@@ -173,7 +173,7 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
     CscSegmentMaker         = TrigL2MuonSA__CscSegmentMaker()
 
     # Set Reco alg of muFast step
-    from TrigL2MuonSA.TrigL2MuonSAMonitoring import TrigL2MuonSAMonitoring
+    #from TrigL2MuonSA.TrigL2MuonSAMonitoring import TrigL2MuonSAMonitoring
     MuFastSteering=CompFactory.MuFastSteering
     muFastAlg = MuFastSteering( name                   = "MuFastSteering_Muon"+setup,
                                 DataPreparator         = MuFastDataPreparator,
@@ -189,7 +189,8 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
                                 USE_ROIBASEDACCESS_CSC = True,
                                 RpcErrToDebugStream    = True,
                                 Timing                 = False,
-                                MonTool                = TrigL2MuonSAMonitoring() )
+                                MonTool                = None )
+                                #MonTool                = TrigL2MuonSAMonitoring() )
 
     # Default backextrapolator is for MC Misaligned Detector
     # Based on MuonBackExtrapolatorForMisalignedDet at TrigMuonBackExtrapolator/TrigMuonBackExtrapolatorConfig.py
@@ -229,8 +230,10 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
 def PtBarrelLUTSvcCfg( flags ):
 
     acc = ComponentAccumulator()
-    from TrigL2MuonSA.TrigL2MuonSAConfig import PtBarrelLUTSvc
-    ptBarrelLUTSvc = PtBarrelLUTSvc()
+    ptBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc')
+    ptBarrelLUTSvc.LUTfile = "pt_barrel.lut"
+    ptBarrelLUTSvc.SP_LUTfile = "pt_barrelSP_new.lut"
+    
     acc.addService( ptBarrelLUTSvc )
 
     return acc, ptBarrelLUTSvc
@@ -238,8 +241,8 @@ def PtBarrelLUTSvcCfg( flags ):
 def PtBarrelLUTSvcCfg_MC( flags ):
 
     acc = ComponentAccumulator()
-    from TrigL2MuonSA.TrigL2MuonSAConfig import PtBarrelLUTSvc_MC
-    ptBarrelLUTSvc_MC = PtBarrelLUTSvc_MC() 
+    ptBarrelLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc_MC')
+    ptBarrelLUTSvc_MC.LUTfile = "pt_barrel.mc10.lut"
     acc.addService( ptBarrelLUTSvc_MC )
 
     return acc, ptBarrelLUTSvc_MC
@@ -247,8 +250,10 @@ def PtBarrelLUTSvcCfg_MC( flags ):
 def PtEndcapLUTSvcCfg( flags ):
 
     acc = ComponentAccumulator()
-    from TrigL2MuonSA.TrigL2MuonSAConfig import PtEndcapLUTSvc
-    ptEndcapLUTSvc = PtEndcapLUTSvc()
+    ptEndcapLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc')
+    ptEndcapLUTSvc.FileName = "pt_endcap.lut"
+    ptEndcapLUTSvc.EMeanLUT = "pt_comb_mean.lut"
+    ptEndcapLUTSvc.ESigmaLUT = "pt_comb_sigma.lut"
     acc.addService( ptEndcapLUTSvc )
 
     return acc, ptEndcapLUTSvc
@@ -256,8 +261,10 @@ def PtEndcapLUTSvcCfg( flags ):
 def PtEndcapLUTSvcCfg_MC( flags ):
 
     acc = ComponentAccumulator()
-    from TrigL2MuonSA.TrigL2MuonSAConfig import PtEndcapLUTSvc_MC
-    ptEndcapLUTSvc_MC = PtEndcapLUTSvc_MC() 
+    ptEndcapLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc_MC')
+    ptEndcapLUTSvc_MC.FileName = "pt_endcap.mc10.lut"
+    ptEndcapLUTSvc_MC.EMeanLUT = "pt_comb_mean.lut"
+    ptEndcapLUTSvc_MC.ESigmaLUT = "pt_comb_sigma.lut"
     acc.addService( ptEndcapLUTSvc_MC )
 
     return acc, ptEndcapLUTSvc_MC
@@ -266,8 +273,8 @@ def PtEndcapLUTSvcCfg_MC( flags ):
 def AlignmentBarrelLUTSvcCfg( flags ):
 
     acc = ComponentAccumulator()
-    from TrigL2MuonSA.TrigL2MuonSAConfig import AlignmentBarrelLUTSvc
-    alignmentBarrelLUTSvc = AlignmentBarrelLUTSvc()
+    alignmentBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::AlignmentBarrelLUTSvc")(name = 'AlignmentBarrelLUTSvc')
+    alignmentBarrelLUTSvc.LUTfile = "dZ_barrel.lut"
     acc.addService( alignmentBarrelLUTSvc )
 
     return acc, alignmentBarrelLUTSvc
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
index 147e78c881b1a665106ee6565767c0bc50642bfc..64283dd03dab9bb42d1662821367487dc9e30319 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
@@ -1,6 +1,8 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
 from AthenaCommon.Constants import ERROR
 from AthenaCommon.CFElements import seqAND, parOR
-from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm, ViewCreatorInitialROITool
+from AthenaConfiguration.ComponentFactory import CompFactory
 
 def setMinimalCaloSetup() :
   from AthenaCommon.AppMgr import ServiceMgr as svcMgr
@@ -73,10 +75,10 @@ def fastCaloRecoSequence(InViewRoIs, doRinger=False, ClustersName="HLT_L2CaloEMC
 
 def fastCaloEVCreator():   
     InViewRoIs="EMCaloRoIs"     
-    fastCaloViewsMaker = EventViewCreatorAlgorithm( "IMfastCalo" )
+    fastCaloViewsMaker = CompFactory.EventViewCreatorAlgorithm( "IMfastCalo" )
     fastCaloViewsMaker.ViewFallThrough = True
     fastCaloViewsMaker.RoIsLink = "initialRoI"
-    fastCaloViewsMaker.RoITool = ViewCreatorInitialROITool()
+    fastCaloViewsMaker.RoITool = CompFactory.ViewCreatorInitialROITool()
     fastCaloViewsMaker.InViewRoIs = InViewRoIs
     fastCaloViewsMaker.Views = "EMCaloViews"
     fastCaloViewsMaker.ViewNodeName = "fastCaloInViewSequence"
@@ -102,8 +104,8 @@ def createFastCaloSequence(EMRoIDecisions, doRinger=False, ClustersName="HLT_L2C
 def clusterFSInputMaker( ):
   """Creates the inputMaker for FS in menu"""
   RoIs = 'FSJETRoI'
-  from DecisionHandling.DecisionHandlingConf import InputMakerForRoI
-  InputMakerAlg = InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI")
+  from AthenaConfiguration.ComponentFactory import CompFactory
+  InputMakerAlg = CompFactory.InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI")
   InputMakerAlg.RoIs=RoIs
   return InputMakerAlg
 
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py
index 13f0d0758b4a7c32a77f409494a4a3c3a2bfad6e..89b0204f7c36eadb2f13431f90298bddefd51b11 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/TrigCaloDataAccessConfig.py
@@ -34,8 +34,7 @@ def createLArRoI_Map( flags ):
 def trigCaloDataAccessSvcCfg( flags ):    
 
     acc = ComponentAccumulator()
-    from TrigT2CaloCommon.TrigT2CaloCommonConfig import TrigCaloDataAccessSvc
-    svc = TrigCaloDataAccessSvc()
+    svc = CompFactory.TrigCaloDataAccessSvc()
 
     # since the svc depends on calo geometry configure it here
     from LArGeoAlgsNV.LArGMConfig import LArGMCfg
@@ -87,9 +86,7 @@ def trigCaloDataAccessSvcCfg( flags ):
 
 
 if __name__ == "__main__":
-    from AthenaCommon.Configurable import Configurable
 
-    Configurable.configurableRun3Behavior = True
     from AthenaConfiguration.TestDefaults import defaultTestFiles
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
     ConfigFlags.Input.Files = defaultTestFiles.RAW
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh
index 24e9d9f712850530826255cbb00304c081604dc3..9d689d5380cc0268ddc1d207ba8b4efe01585b86 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_dataaccessNewJO.sh
@@ -11,5 +11,6 @@ fi
 
 echo "configuration stored in the pickle"
 confTool.py --printConf test.pkl
-echo "running athena " 
-athena test.pkl
+echo "Executing the pickle file " 
+CARunner.py test.pkl 10
+
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
index 573d90f48f2354758bf787246e31aa4f775812de..3cd0e702c2e75899fd1ecb59c8317e56d38baed7 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
@@ -12,7 +12,7 @@ from TrigT2CaloEgamma.TrigT2CaloEgammaConf import EgammaReEmEnFex
 from TrigT2CaloEgamma.TrigT2CaloEgammaConf import EgammaReHadEnFex
 from TrigT2CaloEgamma.TrigT2CaloEgammaConf import RingerReFex
 from TrigT2CaloEgamma.TrigT2CaloEgammaConf import T2CaloEgamma
-from TrigT2CaloEgamma.TrigT2CaloEgammaConf import T2CaloEgammaReFastAlgo
+
 
 from TrigT2CaloCalibration.EgammaCalibrationConfig import EgammaHitsCalibrationBarrelConfig, EgammaHitsCalibrationEndcapConfig, EgammaGapCalibrationConfig
 from TrigT2CaloCalibration.EgammaCalibrationConfig import EgammaTransitionRegionsConfig
@@ -398,8 +398,8 @@ class T2CaloEgamma_Ringer (T2CaloEgamma_eGamma):
        self.TimerNtuple="T2CaloEgamma.T2CaEgtTotRinger"
        self.AthenaMonTools += [TrigT2CaloEgammaRingerTimeMonitoring()]
 
-
-class T2CaloEgamma_ReFastAlgo (T2CaloEgammaReFastAlgo):
+from AthenaConfiguration.ComponentFactory import CompFactory
+class T2CaloEgamma_ReFastAlgo (CompFactory.T2CaloEgammaReFastAlgo):
    __slots__ = []
    def __init__ (self, name="T2CaloEgamma_ReFastAlgo", ClustersName="HLT_L2CaloEMClusters", doRinger=False, RingerKey="HLT_L2CaloRinger"):
        super(T2CaloEgamma_ReFastAlgo, self).__init__(name)
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py
index c0a7e7f57a074cd12a27bafc802e96e8b54bb540..f464090ee7e0d430060a9171cf9a8867fa2a1f6d 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaMTConfig.py
@@ -1,9 +1,9 @@
 #
 #  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 #
+
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
-T2CaloEgammaReFastAlgo=CompFactory.T2CaloEgammaReFastAlgo
 
 def fastL2EgammaClusteringAlg( flags, roisKey="EMCaloRoIs", doRinger=False):
 
@@ -37,7 +37,7 @@ def fastL2EgammaClusteringAlg( flags, roisKey="EMCaloRoIs", doRinger=False):
     samph.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'),('TileBadChannels','ConditionStore+TileBadChannels')]
     acc.addPublicTool( samph )
 
-    alg = T2CaloEgammaReFastAlgo("FastEMCaloAlgo")
+    alg = CompFactory.T2CaloEgammaReFastAlgo("FastEMCaloAlgo")
     from TrigEDMConfig.TriggerEDMRun3 import recordable
     alg.ClustersName   = recordable('HLT_L2CaloEMClusters')
     alg.RoIs           = roisKey
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py b/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py
index 2e0660ce64c63fe0225fd7a6e0dd324851773279..7d76ea9843ae0f51a6b27798b6a9b8482615b17c 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcCfg.py
@@ -3,6 +3,8 @@
 from PyUtils.Decorators import memoize
 from AthenaCommon.Logging import logging
 from collections import OrderedDict as odict
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator, conf2toConfigurable
 import json
 
 def getHLTPrescaleFolderName():
@@ -158,12 +160,14 @@ def getL1ConfigSvc( flags = None ):
     log = logging.getLogger('TrigConfigSvcCfg')
     from AthenaCommon.Logging import log
     from TriggerJobOpts.TriggerFlags import TriggerFlags
-    from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc
-    from AthenaCommon.AppMgr import theApp
+    from AthenaCommon.Configurable import Configurable
+    print("HERE importing as {}".format(Configurable.configurableRun3Behavior))
     # generate menu file
     generatedFile = generateL1Menu( flags=flags )
 
     # configure config svc
+
+    TrigConf__LVL1ConfigSvc = CompFactory.getComp("TrigConf::LVL1ConfigSvc")
     l1ConfigSvc = TrigConf__LVL1ConfigSvc( "LVL1ConfigSvc" )
 
     l1ConfigSvc.ConfigSource = "XML"
@@ -186,7 +190,7 @@ def getL1ConfigSvc( flags = None ):
         l1ConfigSvc.JsonFileName = l1JsonFileName
         log.info( "For run 3 style menu access configured LVL1ConfigSvc with InputType='file' and JsonFileName=%s", l1JsonFileName )
 
-    theApp.CreateSvc += [ "TrigConf::LVL1ConfigSvc/LVL1ConfigSvc" ]
+    #theApp.CreateSvc += [ "TrigConf::LVL1ConfigSvc/LVL1ConfigSvc" ]
     return l1ConfigSvc
 
 
@@ -194,17 +198,18 @@ def getL1ConfigSvc( flags = None ):
 @memoize
 def getHLTConfigSvc( flags = None ):
     log = logging.getLogger('TrigConfigSvcCfg')
-    from AthenaCommon.Logging import log
-    from TrigConfigSvc.TrigConfigSvcConf import TrigConf__HLTConfigSvc
-    from AthenaCommon.AppMgr import theApp
-    hltConfigSvc = TrigConf__HLTConfigSvc( "HLTConfigSvc" )
+    HLTConfigSvc = CompFactory.getComp("TrigConf::HLTConfigSvc")
+    hltConfigSvc = HLTConfigSvc("HLTConfigSvc")
+
     hltXMLFile = "None"
     hltConfigSvc.ConfigSource = "None"
     hltConfigSvc.XMLMenuFile = hltXMLFile
     hltConfigSvc.InputType = "file"
     hltJsonFileName = getHLTMenuFileName( flags )
     hltConfigSvc.JsonFileName = hltJsonFileName
-    theApp.CreateSvc += [ "TrigConf::HLTConfigSvc/HLTConfigSvc" ]
+    # TODO revisit if needed    
+    #from AthenaCommon.AppMgr import theApp
+    #theApp.CreateSvc += [ "TrigConf::HLTConfigSvc/HLTConfigSvc" ]
     log.info( "Configured HLTConfigSvc with run 2 style input file : %s", hltXMLFile  )
     log.info( "Configured HLTConfigSvc with InputType='file' and JsonFileName=%s", hltJsonFileName )
     return hltConfigSvc
@@ -214,7 +219,7 @@ def getHLTConfigSvc( flags = None ):
 @memoize
 def setupHLTPrescaleCondAlg( flags = None ):
     log = logging.getLogger('TrigConfigSvcCfg')
-    from TrigConfigSvc.TrigConfigSvcConf import TrigConf__HLTPrescaleCondAlg
+    TrigConf__HLTPrescaleCondAlg = CompFactory.getComp("TrigConf::HLTPrescaleCondAlg")
     hltPrescaleCondAlg = TrigConf__HLTPrescaleCondAlg( "HLTPrescaleCondAlg" )
 
     tc = getTrigConfigFromFlag( flags )
@@ -239,14 +244,13 @@ def setupHLTPrescaleCondAlg( flags = None ):
     if flags is None: # old style config
         from AthenaCommon.AlgSequence import AthSequencer
         condSequence = AthSequencer("AthCondSeq")
-        condSequence += hltPrescaleCondAlg
+        condSequence += conf2toConfigurable( hltPrescaleCondAlg )
         log.info("Adding HLTPrescaleCondAlg to AthCondSeq")
     return hltPrescaleCondAlg
 
 
 # provide L1 config service in new JO
 def L1ConfigSvcCfg( flags ):
-    from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
     acc = ComponentAccumulator()
     acc.addService( getL1ConfigSvc( flags ) )
     return acc
@@ -281,9 +285,6 @@ def HLTPrescaleCondAlgCfg( flags ):
 
 
 if __name__ == "__main__":
-    from AthenaCommon.Configurable import Configurable
-    Configurable.configurableRun3Behavior=True    
-
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
     ConfigFlags.lock()
     acc = TrigConfigSvcCfg( ConfigFlags )
diff --git a/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py b/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py
index 0b73cf1b596f56acf914272a04e5c06afc7c3948..c8e00bb707bc835c6ea62562e923d8fafbc5578c 100755
--- a/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py
+++ b/Trigger/TrigCost/RatesAnalysis/share/RatesAnalysisFullMenu.py
@@ -71,11 +71,11 @@ if __name__=='__main__':
   from AthenaServices.MetaDataSvcConfig import MetaDataSvcCfg
   cfg.merge(MetaDataSvcCfg(ConfigFlags))
 
-  cfgsvc = CompFactory.TrigConf__xAODConfigSvc('xAODConfigSvc')
+  cfgsvc = CompFactory.TrigConf.xAODConfigSvc('xAODConfigSvc')
   cfg.addService(cfgsvc)
 
   from TrigEDMConfig.TriggerEDM import EDMLibraries
-  tdt = CompFactory.Trig__TrigDecisionTool('TrigDecisionTool')
+  tdt = CompFactory.Trig.TrigDecisionTool('TrigDecisionTool')
   tdt.TrigConfigSvc = cfgsvc
   tdt.NavigationFormat = "TrigComposite"
   tdt.Navigation.Dlls = [e for e in  EDMLibraries if 'TPCnv' not in e]
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py
index 14283124db828e9ceadf03212829f270f71081c5..6a995f08a34e9faf401ef33f43a1ecfdde66bc63 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2CaloHypoTool.py
@@ -1,10 +1,11 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon.SystemOfUnits import GeV
+from AthenaCommon.Include import Include 
+# flake8: noqa 
 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 
 from TriggerJobOpts.TriggerFlags import TriggerFlags
-from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoToolInc
 from TrigEgammaHypo.TrigL2CaloHypoCutDefs import L2CaloCutMaps
 
 from AthenaCommon.Logging import logging
@@ -13,8 +14,8 @@ log = logging.getLogger('TrigL2CaloHypoTool')
 def _IncTool(name, threshold, sel):
 
     possibleSel = L2CaloCutMaps( threshold ).MapsHADETthr.keys()
-
-    tool = TrigL2CaloHypoToolInc( name ) 
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    tool = CompFactory.TrigL2CaloHypoToolInc( name )
     tool.AcceptAll = False
 
     if 'Validation' in TriggerFlags.enableMonitoring() or 'Online' in  TriggerFlags.enableMonitoring():
@@ -40,8 +41,8 @@ def _IncTool(name, threshold, sel):
             monTool.defineHistogram('Weta2', type='TH1F', path='EXPERT', title="L2Calo Hypo Weta2; E Width in sampling 2", xbins=96, xmin=-0.1, xmax=0.61)
             monTool.defineHistogram('Wstot', type='TH1F', path='EXPERT', title="L2Calo Hypo Wstot; E Width in sampling 1", xbins=48, xmin=-0.1, xmax=11.)
             monTool.defineHistogram('F3', type='TH1F', path='EXPERT', title="L2Calo Hypo F3; E3/(E0+E1+E2+E3)", xbins=96, xmin=-0.1, xmax=1.1)
-            
-        monTool.HistPath = 'L2CaloHypo/'+tool.name()
+
+        monTool.HistPath = 'L2CaloHypo/'+tool.getName()
         tool.MonTool = monTool
 
 
@@ -55,25 +56,25 @@ def _IncTool(name, threshold, sel):
     tool.F1thr          = same( 0.005 )
     tool.ET2thr         = same( 90.0*GeV )
     tool.HADET2thr      = same( 999.0 )
-    tool.HADETthr       = same( 0.058 ) 
-    tool.WETA2thr       = same( 99999. ) 
+    tool.HADETthr       = same( 0.058 )
+    tool.WETA2thr       = same( 99999. )
     tool.WSTOTthr       = same( 99999. )
     tool.F3thr          = same( 99999. )
-    tool.CARCOREthr     = same( -9999. ) 
+    tool.CARCOREthr     = same( -9999. )
     tool.CAERATIOthr    = same( -9999. )
 
     if sel == 'nocut' or 'idperf' in name:
         tool.AcceptAll = True
-        tool.ETthr          = same( float( threshold )*GeV ) 
+        tool.ETthr          = same( float( threshold )*GeV )
         tool.dETACLUSTERthr = 9999.
         tool.dPHICLUSTERthr = 9999.
         tool.F1thr          = same( 0.0 )
         tool.HADETthr       = same( 9999. )
-        tool.CARCOREthr     = same( -9999. ) 
+        tool.CARCOREthr     = same( -9999. )
         tool.CAERATIOthr    = same( -9999. )
 
     elif "etcut" in sel: # stcut is part of the name, it can as well be etcut1step (test chains)
-        tool.ETthr          = same( ( float( threshold ) -  3 )*GeV ) 
+        tool.ETthr          = same( ( float( threshold ) -  3 )*GeV )
         # No other cuts applied
         tool.dETACLUSTERthr = 9999.
         tool.dPHICLUSTERthr = 9999.
@@ -88,10 +89,10 @@ def _IncTool(name, threshold, sel):
         tool.CARCOREthr  = L2CaloCutMaps( threshold ).MapsCARCOREthr[sel]
         tool.CAERATIOthr = L2CaloCutMaps( threshold ).MapsCAERATIOthr[sel]
 
-    
+
     etaBinsLen = len( tool.EtaBins ) - 1
     for prop in "ETthr HADETthr CARCOREthr CARCOREthr F1thr F3thr WSTOTthr WETA2thr HADETthr HADETthr ET2thr".split():
-        propLen = len( getattr( tool, prop ) ) 
+        propLen = len( getattr( tool, prop ) )
         assert propLen == etaBinsLen , "In " + name + " " + prop + " has length " + str( propLen ) + " which is different from EtaBins which has length " + str( etaBinsLen )
 
         #    assert  _l( EtaBins, tool.ETthr, tool.HADETthr, tool.CARCOREthr, tool.CARCOREthr ) , "All list properties should have equal length ( as EtaBins )"
@@ -100,8 +101,8 @@ def _IncTool(name, threshold, sel):
 
 
 def _MultTool(name):
-    from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoToolMult
-    return TrigL2CaloHypoToolMult( name )
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    return CompFactory.TrigL2CaloHypoToolMult( name )
 
 
 
@@ -114,13 +115,13 @@ def TrigL2CaloHypoToolFromDict( d ):
 
     def __th(cpart):
         return cpart['threshold']
-    
+
     def __sel(cpart):
         return cpart['addInfo'][0] if cpart['addInfo'] else cpart['IDinfo']
-    
+
     name = d['chainName']
 
-    
+
     # do we need to configure high multiplicity selection, either NeX or ex_ey_ez etc...?
     if len(cparts) > 1 or __mult(cparts[0]) > 1:
         tool = _MultTool(name)
@@ -129,9 +130,9 @@ def TrigL2CaloHypoToolFromDict( d ):
                 tool.SubTools += [ _IncTool( cpart['chainPartName']+"_"+str(cutNumber), __th( cpart ), __sel( cpart) ) ]
 
         return tool
-    else:        
+    else:
         return _IncTool( name, __th( cparts[0]),  __sel( cparts[0] ) )
-                    
+
 
 def TrigL2CaloHypoToolFromName( name, conf ):
     """ To be phased out """
@@ -139,11 +140,11 @@ def TrigL2CaloHypoToolFromName( name, conf ):
 
     from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import dictFromChainName
     decodedDict = dictFromChainName(conf)
-        
+
     return TrigL2CaloHypoToolFromDict( decodedDict )
-    
 
-if __name__ == "__main__":    
+
+if __name__ == "__main__":
     TriggerFlags.enableMonitoring=['Validation']
 
     t = TrigL2CaloHypoToolFromName( "HLT_e10_etcut_L1EM3","HLT_e10_etcut_L1EM3" )
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py
index a38f1bafdb4de80d10e3c46ee63c65da64376e85..c2eb94a1b687776c26ceabf946a46fa437bd0e1d 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2ElectronHypoTool.py
@@ -2,9 +2,11 @@
 
 from AthenaCommon.SystemOfUnits import GeV
 from AthenaCommon.Logging import logging
+from AthenaCommon.Include import Include 
+# flake8: noqa 
 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 
-from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2ElectronHypoTool
+
 
 log = logging.getLogger('TrigL2ElectronHypoTool')
 
@@ -15,8 +17,8 @@ def TrigL2ElectronHypoToolFromDict( chainDict ):
     thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], [])
 
     name = chainDict['chainName']
-
-    tool = TrigL2ElectronHypoTool(name)
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    tool = CompFactory.TrigL2ElectronHypoTool(name)
 
     monTool = GenericMonitoringTool("MonTool"+name)
     monTool.defineHistogram('CutCounter', type='TH1I', path='EXPERT', title="L2Electron Hypo Cut Counter;Cut Counter", xbins=8, xmin=-1.5, xmax=7.5, opt="kCumulative")
@@ -28,7 +30,7 @@ def TrigL2ElectronHypoToolFromDict( chainDict ):
     monTool.defineHistogram('CaloEta', type='TH1F', path='EXPERT', title="L2Electron Hypo #eta^{calo} ; #eta^{calo};Nevents", xbins=200, xmin=-2.5, xmax=2.5)
     monTool.defineHistogram('CaloPhi', type='TH1F', path='EXPERT', title="L2Electron Hypo #phi^{calo} ; #phi^{calo};Nevents", xbins=320, xmin=-3.2, xmax=3.2)
 
-    monTool.HistPath = 'L2ElectronHypo/'+tool.name()
+    monTool.HistPath = 'L2ElectronHypo/'+tool.getName()
     tool.MonTool = monTool
 
     nt = len( thresholds )
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py
index 12437d0e5043ef3f3df38bd9a0045d75e3ec8177..25b409716746dcc2367d71daf74f1a124959e3a6 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TrigL2PhotonHypoTool.py
@@ -1,7 +1,9 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
-from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2PhotonHypoTool
+
 from AthenaCommon.SystemOfUnits import GeV
+from AthenaCommon.Include import Include 
+# flake8: noqa 
 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 from AthenaCommon.Logging import logging
 log = logging.getLogger('TrigL2PhotonHypoTool')
@@ -11,8 +13,8 @@ def TrigL2PhotonHypoToolFromDict( chainDict ):
     thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in chainDict['chainParts']], [])
 
     name = chainDict['chainName']
-
-    tool = TrigL2PhotonHypoTool(name)
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    tool = CompFactory.TrigL2PhotonHypoTool(name)
 
     monTool = GenericMonitoringTool("MonTool"+name)
     monTool.defineHistogram('CutCounter', type='TH1I', path='EXPERT', title="L2Photon Hypo Cut Counter;Cut Counter", xbins=8, xmin=-1.5, xmax=7.5, opt="kCumulative")
@@ -20,7 +22,7 @@ def TrigL2PhotonHypoToolFromDict( chainDict ):
     monTool.defineHistogram('CaloEta', type='TH1F', path='EXPERT', title="L2Photon Hypo #eta^{calo} ; #eta^{calo};Nevents", xbins=200, xmin=-2.5, xmax=2.5)
     monTool.defineHistogram('CaloPhi', type='TH1F', path='EXPERT', title="L2Photon Hypo #phi^{calo} ; #phi^{calo};Nevents", xbins=320, xmin=-3.2, xmax=3.2)
 
-    monTool.HistPath = 'L2PhotonHypo/'+tool.name()
+    monTool.HistPath = 'L2PhotonHypo/'+tool.getName()
     tool.MonTool = monTool
 
     nt = len( thresholds )
diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
index 88b6cb96c27bdd3eb109f8cfe4c07470292781ae..a9905fc06929d304b9f41aaaf56ea05a07b2bbb5 100755
--- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
+++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
@@ -1,17 +1,18 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # import Hypo Algs/Tools
+from AthenaConfiguration.ComponentFactory import CompFactory # tools are imported from the factory, (NewJO)
 from TrigMuonHypoMT.TrigMuonHypoMTConf import (  # noqa: F401 (algs not used here)
-    TrigMufastHypoAlg, TrigMufastHypoTool,
-    TrigmuCombHypoAlg, TrigmuCombHypoTool,
-    TrigMuonEFMSonlyHypoAlg, TrigMuonEFMSonlyHypoTool,
-    TrigMuisoHypoAlg, TrigMuisoHypoTool,
-    TrigMuonEFCombinerHypoAlg, TrigMuonEFCombinerHypoTool,
-    TrigMuonEFTrackIsolationHypoAlg, TrigMuonEFTrackIsolationHypoTool,
-    TrigL2MuonOverlapRemoverMufastAlg, TrigL2MuonOverlapRemoverMucombAlg, TrigL2MuonOverlapRemoverTool,
-    TrigMuonEFInvMassHypoAlg, TrigMuonEFInvMassHypoTool,
-    TrigMuonLateMuRoIHypoAlg, TrigMuonLateMuRoIHypoTool
-)
+    TrigMufastHypoAlg,
+    TrigmuCombHypoAlg,
+    TrigMuonEFMSonlyHypoAlg,
+    TrigMuisoHypoAlg,
+    TrigMuonEFCombinerHypoAlg,
+    TrigMuonEFTrackIsolationHypoAlg,
+    TrigL2MuonOverlapRemoverMufastAlg,
+    TrigMuonEFInvMassHypoAlg,
+    TrigMuonLateMuRoIHypoAlg
+    )
 
 # import monitoring
 from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import (
@@ -25,25 +26,27 @@ from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import (
     TrigMuonEFInvMassHypoMonitoring
 )
 
+
 # other imports
 from AthenaCommon.SystemOfUnits import GeV
 
 from AthenaCommon.Logging import logging
 log = logging.getLogger('TrigMuonHypoMTConfig')
+TrigL2MuonOverlapRemoverTool=CompFactory.TrigL2MuonOverlapRemoverTool
 
 trigMuonEFSAThresholds = {
     '0GeV'             : [ [0,9.9],              [ 0.100 ] ],
     '2GeV'             : [ [0,9.9],              [ 2.000 ] ],
     '3GeV'             : [ [0,9.9],              [ 3.000 ] ],
     '4GeV'             : [ [0,1.05,1.5,2.0,9.9], [  3.0,  2.5,  2.5,  2.5] ],
-    '4GeV_barrelOnly'  : [ [0,1.05,1.5,2.0,9.9], [  3.0,1000.0,1000.0,1000.0]], 
+    '4GeV_barrelOnly'  : [ [0,1.05,1.5,2.0,9.9], [  3.0,1000.0,1000.0,1000.0]],
     '5GeV'             : [ [0,1.05,1.5,2.0,9.9], [  4.6,  3.3,  4.0,  4.5] ],
     '6GeV'             : [ [0,1.05,1.5,2.0,9.9], [  5.4,  4.5,  4.9,  5.3] ],
     '7GeV'             : [ [0,1.05,1.5,2.0,9.9], [  6.3,  5.6,  5.6,  6.3] ],
     '8GeV'             : [ [0,1.05,1.5,2.0,9.9], [  7.2,  6.7,  6.4,  7.3] ],
     '10GeV'            : [ [0,1.05,1.5,2.0,9.9], [  8.9,  9.0,  8.4,  9.2] ],
     '11GeV'            : [ [0,1.05,1.5,2.0,9.9], [  9.8, 10.1,  9.3, 10.1] ],
-    '12GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 10.6, 11.0, 10.2, 11.0] ], 
+    '12GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 10.6, 11.0, 10.2, 11.0] ],
     '13GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 11.4, 12.0, 11.1, 12.0] ],
     '14GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 12.2, 13.0, 12.1, 13.0] ],
     '15GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 13.0, 14.0, 13.0, 14.0] ],
@@ -57,14 +60,14 @@ trigMuonEFSAThresholds = {
     '30GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ],
     '35GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ], # not optimized
     '36GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 25.0, 24.5, 23.0, 26.0] ], # not optimized
-    '40GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 32.5] ], 
-    '40GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 31.5,1000.0,1000.0,1000.0]], 
-    '40GeV_uptoEC2'    : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5,  1000.0]], 
-    '50GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 45.0, 45.0, 45.0, 45.0] ], 
-    '50GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 45.0,1000.0,1000.0,1000.0]], 
-    '60GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 54.0, 54.0, 54.0, 54.0] ], 
-    '60GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 54.0,1000.0,1000.0,1000.0]], 
-    '70GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 63.0, 63.0, 63.0, 63.0] ], 
+    '40GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5, 32.5] ],
+    '40GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 31.5,1000.0,1000.0,1000.0]],
+    '40GeV_uptoEC2'    : [ [0,1.05,1.5,2.0,9.9], [ 31.5, 30.0, 28.5,  1000.0]],
+    '50GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 45.0, 45.0, 45.0, 45.0] ],
+    '50GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 45.0,1000.0,1000.0,1000.0]],
+    '60GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 54.0, 54.0, 54.0, 54.0] ],
+    '60GeV_barrelOnly' : [ [0,1.05,1.5,2.0,9.9], [ 54.0,1000.0,1000.0,1000.0]],
+    '70GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 63.0, 63.0, 63.0, 63.0] ],
     '80GeV'            : [ [0,1.05,1.5,2.0,9.9], [ 72.0, 72.0, 72.0, 72.0] ],
     '100GeV'           : [ [0,1.05,1.5,2.0,9.9], [ 90.0, 90.0, 90.0, 90.0] ],
    }
@@ -85,7 +88,7 @@ efCombinerThresholds = {
     '13GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 12.80, 12.67, 12.43, 12.38] ],
     '14GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 13.75, 13.62, 13.38, 13.36] ],
     '15GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 14.63, 14.49, 14.42, 14.38] ],
-    '16GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 15.65, 15.50, 15.39, 15.37] ], # Lidia - extrapolated not optimized 			
+    '16GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 15.65, 15.50, 15.39, 15.37] ], # Lidia - extrapolated not optimized
     '18GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 17.68, 17.51, 17.34, 17.34] ],
     '20GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 19.65, 19.42, 19.16, 19.19] ],
     '22GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 21.57, 21.32, 21.07, 21.11] ],
@@ -96,7 +99,7 @@ efCombinerThresholds = {
     '30GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 29.17, 29.03, 29.00, 28.92] ],
     '32GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 31.10, 30.96, 30.91, 30.84] ],
     '34GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 33.04, 32.88, 32.81, 32.74] ],
-    '35GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 34.14, 33.82, 33.65, 33.65] ], # Lidia - extrapolated not optimized 			
+    '35GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 34.14, 33.82, 33.65, 33.65] ], # Lidia - extrapolated not optimized
     '36GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 35.23, 34.75, 34.48, 34.55] ],
     '38GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 36.87, 36.67, 36.55, 36.48] ],
     '40GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 38.76, 38.54, 38.38, 38.31] ],
@@ -123,12 +126,12 @@ muCombThresholds = {
     '13GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 12.62, 12.48, 12.24, 11.88] ],
     '14GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 13.57, 13.44, 13.21, 12.77] ],
     '15GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 14.5, 14.0, 14.0, 14.5] ],
-    '16GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 15.47, 15.09, 14.98, 15.08] ], # Lidia - extrapolated not optimized 			
+    '16GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 15.47, 15.09, 14.98, 15.08] ], # Lidia - extrapolated not optimized
     '18GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 17.41, 17.27, 16.95, 16.25] ],
     '20GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 19.31, 19.19, 18.80, 17.95] ],
     '22GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 21.19, 21.07, 20.68, 19.71] ],
     '24GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 23.08, 22.99, 22.56, 21.39] ],
-    '25GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 24.2, 23.2, 23.2, 22.6] ], 
+    '25GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 24.2, 23.2, 23.2, 22.6] ],
     '26GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 24.95, 24.86, 24.39, 23.13] ],
     '27GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 26.2, 25.1, 25.1, 24.4] ],
     '28GeV_v15a'            : [ [0,1.05,1.5,2.0,9.9], [ 27.1, 26.0, 26.0, 25.2] ],
@@ -235,22 +238,22 @@ def addMonitoring(tool, monClass, name, thresholdHLT ):
         log.error('%s Monitoring Tool failed', name)
 
 
-def getThresholdsFromDict( chainDict ):    
+def getThresholdsFromDict( chainDict ):
     cparts = [i for i in chainDict['chainParts'] if i['signature']=='Muon' or i['signature']=='Bphysics']
     return sum( [ [part['threshold']]*int(part['multiplicity']) for part in cparts ], [])
 
 
-def TrigMufastHypoToolFromDict( chainDict ):	
+def TrigMufastHypoToolFromDict( chainDict ):
 
     if 'lateMu' in chainDict['chainParts'][0]['chainPartName']:
        thresholds = ['passthrough']
     else:
         thresholds = getThresholdsFromDict( chainDict )
     config = TrigMufastHypoConfig()
-    tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds )
+    tool = config.ConfigurationHypoTool( chainDict['chainName'], thresholds )
     # Setup MonTool for monitored variables in AthenaMonitoring package
     addMonitoring( tool, TrigMufastHypoMonitoring, 'TrigMufastHypoTool', chainDict['chainName'] )
-    
+
     return tool
 
 
@@ -260,7 +263,7 @@ class TrigMufastHypoConfig(object):
 
     def ConfigurationHypoTool( self, toolName, thresholds ):
 
-        tool = TrigMufastHypoTool( toolName )  
+        tool = CompFactory.TrigMufastHypoTool( toolName )
 
         if "muoncalib" in toolName:
             tool.DoCalib = True
@@ -268,7 +271,7 @@ class TrigMufastHypoConfig(object):
             tool.PtBins = [ [ 0, 2.5 ] ] * nt
             try:
                 tool.AcceptAll = False
-    
+
             except LookupError:
                 raise Exception('MuFast Hypo for muoncalib chain  Misconfigured')
         else:
@@ -278,7 +281,7 @@ class TrigMufastHypoConfig(object):
             tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt
             tool.PtThresholdForECWeakBRegionA = [ 3. * GeV ] * nt
             tool.PtThresholdForECWeakBRegionB = [ 3. * GeV ] * nt
-    
+
             for th, thvalue in enumerate(thresholds):
                 if (thvalue == 'passthrough'):
                     tool.PtBins[th] = [-10000.,10000.]
@@ -291,11 +294,11 @@ class TrigMufastHypoConfig(object):
                         thvaluename = thvalue+ "GeV_barrelOnly_v15a"
                     else:
                         thvaluename = '6GeV_v15a'
-    
-    
-    
+
+
+
                     log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename)
-    
+
                     try:
                         tool.AcceptAll = False
                         values = muFastThresholds[thvaluename]
@@ -316,32 +319,31 @@ class TrigMufastHypoConfig(object):
                             else:
                                 tool.PtThresholdForECWeakBRegionA[th] = spThres[1] * GeV
                                 tool.PtThresholdForECWeakBRegionB[th] = spThres[2] * GeV
-    
+
                             log.debug('Thresholds for A[%d]/B[%d] = %d/%d', th, th, tool.PtThresholdForECWeakBRegionA[th], tool.PtThresholdForECWeakBRegionB[th])
-    
+
                     except LookupError:
                         raise Exception('MuFast Hypo Misconfigured: threshold %r not supported' % thvaluename)
 
         return tool
 
 ### for TrigL2MuonOverlapRemoverMufast
-def TrigL2MuonOverlapRemoverMufastToolFromDict( chainDict ):	
+def TrigL2MuonOverlapRemoverMufastToolFromDict( chainDict ):
 
     thresholds = getThresholdsFromDict( chainDict )
     config = TrigL2MuonOverlapRemoverMufastConfig()
     tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds)
     # # Setup MonTool for monitored variables in AthenaMonitoring package
     addMonitoring( tool, TrigL2MuonOverlapRemoverMonitoringMufast, 'TrigL2MuonOverlapRemoverMufastTool', chainDict['chainName'] )
-    
+
     return tool
 
 
 class TrigL2MuonOverlapRemoverMufastConfig(object):
-    
-    def ConfigurationHypoTool( self, toolName, thresholds): 
-        
-        tool = TrigL2MuonOverlapRemoverTool( toolName )  
-        tool.Multiplicity = len(thresholds) 
+
+    def ConfigurationHypoTool( self, toolName, thresholds):
+        tool = CompFactory.TrigL2MuonOverlapRemoverTool( toolName )
+        tool.Multiplicity = len(thresholds)
         tool.DoMufastBasedRemoval = True
 
         # cut defintion
@@ -363,23 +365,22 @@ class TrigL2MuonOverlapRemoverMufastConfig(object):
 
 
 ### for TrigL2MuonOverlapRemoverMucomb
-def TrigL2MuonOverlapRemoverMucombToolFromDict( chainDict ):	
+def TrigL2MuonOverlapRemoverMucombToolFromDict( chainDict ):
 
     thresholds = getThresholdsFromDict( chainDict )
     config = TrigL2MuonOverlapRemoverMucombConfig()
     tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds)
     # # Setup MonTool for monitored variables in AthenaMonitoring package
     addMonitoring( tool, TrigL2MuonOverlapRemoverMonitoringMucomb, 'TrigL2MuonOverlapRemoverMucombTool', chainDict['chainName'] )
-    
+
     return tool
 
 
 class TrigL2MuonOverlapRemoverMucombConfig(object):
-    
-    def ConfigurationHypoTool( self, toolName, thresholds): 
-        
-        tool = TrigL2MuonOverlapRemoverTool( toolName )  
-        tool.Multiplicity = len(thresholds) 
+
+    def ConfigurationHypoTool( self, toolName, thresholds):
+        tool = CompFactory.TrigL2MuonOverlapRemoverTool( toolName )
+        tool.Multiplicity = len(thresholds)
         tool.DoMucombBasedRemoval = True
         # cut defintion
         tool.MucombRequireDR       = True
@@ -402,7 +403,7 @@ def TrigmuCombHypoToolFromDict( chainDict ):
        thresholds = getThresholdsFromDict( chainDict )
 
     config = TrigmuCombHypoConfig()
-    
+
     tight = False # can be probably decoded from some of the proprties of the chain, expert work
     tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds, tight )
 
@@ -416,7 +417,7 @@ class TrigmuCombHypoConfig(object):
 
     def ConfigurationHypoTool( self, thresholdHLT, thresholds, tight ):
 
-        tool = TrigmuCombHypoTool( thresholdHLT )
+        tool = CompFactory.TrigmuCombHypoTool( thresholdHLT )
 
         nt = len(thresholds)
         log.debug('Set %d thresholds', nt)
@@ -446,7 +447,7 @@ class TrigmuCombHypoConfig(object):
                 except LookupError:
                     raise Exception('MuComb Hypo Misconfigured: threshold %r not supported' % thvaluename)
 
-        return tool 
+        return tool
 
 
 
@@ -457,19 +458,19 @@ def TrigMuisoHypoToolFromDict( chainDict ):
     tool = config.ConfigurationHypoTool( chainDict['chainName'] )
     addMonitoring( tool, TrigMuisoHypoMonitoring,  "TrigMuisoHypoTool", chainDict['chainName'])
     return tool
-    
+
 
 class TrigMuisoHypoConfig(object):
 
     log = logging.getLogger('TrigMuisoHypoConfig')
 
-    def ConfigurationHypoTool( self, toolName ):	
+    def ConfigurationHypoTool( self, toolName ):
+
+        tool = CompFactory.TrigMuisoHypoTool( toolName )
 
-        tool = TrigMuisoHypoTool( toolName )  
-        
         # If configured with passthrough, set AcceptAll flag on, not quite there in the menu
         tool.AcceptAll = False
-        if 'passthrough' in toolName:                    
+        if 'passthrough' in toolName:
             tool.AcceptAll = True
             log.debug('MuisoHypoConfig configured in pasthrough mode')
 
@@ -477,7 +478,7 @@ class TrigMuisoHypoConfig(object):
             tool.IDConeSize   = 2
             tool.MaxIDIso_1   = 0.12
             tool.MaxIDIso_2   = 0.12
-            tool.MaxIDIso_3   = 0.12  
+            tool.MaxIDIso_3   = 0.12
         else:
             tool.IDConeSize   = 2
             tool.MaxIDIso_1   = 0.1
@@ -488,7 +489,7 @@ class TrigMuisoHypoConfig(object):
 
 
 def TrigMuonEFMSonlyHypoToolFromDict( chainDict ) :
-    thresholds = getThresholdsFromDict( chainDict ) 
+    thresholds = getThresholdsFromDict( chainDict )
     config = TrigMuonEFMSonlyHypoConfig()
     tool = config.ConfigurationHypoTool( chainDict['chainName'], thresholds )
     addMonitoring( tool, TrigMuonEFMSonlyHypoMonitoring, "TrigMuonEFMSonlyHypoTool", chainDict['chainName'] )
@@ -496,7 +497,7 @@ def TrigMuonEFMSonlyHypoToolFromDict( chainDict ) :
 
 def TrigMuonEFMSonlyHypoToolFromName(chainDict):
     #For full scan chains, we need to configure the thresholds based on all muons
-    #in the chain to get the counting correct. Currently a bit convoluted as 
+    #in the chain to get the counting correct. Currently a bit convoluted as
     #the chain dict is (improperly) overwritten when merging for FS chains.
     #Can probably improve this once serial merging is officially implemented
     thresholds=[]
@@ -515,7 +516,7 @@ def TrigMuonEFMSonlyHypoToolFromName(chainDict):
     tool = config.ConfigurationHypoTool(chainDict['chainName'], thresholds)
     addMonitoring( tool, TrigMuonEFMSonlyHypoMonitoring, "TrigMuonEFMSonlyHypoTool", chainDict['chainName'] )
     return tool
-    
+
 class TrigMuonEFMSonlyHypoConfig(object):
 
     log = logging.getLogger('TrigMuonEFMSonlyHypoConfig')
@@ -523,7 +524,7 @@ class TrigMuonEFMSonlyHypoConfig(object):
     def ConfigurationHypoTool( self, toolName, thresholds ):
 
         log = logging.getLogger(self.__class__.__name__)
-        tool = TrigMuonEFMSonlyHypoTool( toolName )  
+        tool = CompFactory.TrigMuonEFMSonlyHypoTool( toolName )
 
         nt = len(thresholds)
         log.debug('Set %d thresholds', nt)
@@ -555,7 +556,7 @@ class TrigMuonEFMSonlyHypoConfig(object):
 
         return tool
 
-    
+
 def TrigMuonEFCombinerHypoToolFromDict( chainDict ) :
     if 'idperf' in chainDict['chainParts'][0]['chainPartName']:
        thresholds = ['passthrough']
@@ -574,7 +575,7 @@ def TrigMuonEFCombinerHypoToolFromDict( chainDict ) :
 
 def TrigMuonEFCombinerHypoToolFromName(chainDict):
     #For full scan chains, we need to configure the thresholds based on all muons
-    #in the chain to get the counting correct. Currently a bit convoluted as 
+    #in the chain to get the counting correct. Currently a bit convoluted as
     #the chain dict is (improperly) overwritten when merging for FS chains.
     #Can probably improve this once serial merging is officially implemented
     thresholds=[]
@@ -593,28 +594,28 @@ def TrigMuonEFCombinerHypoToolFromName(chainDict):
        muonquality = True
     else:
        muonquality = False
-    
+
     config = TrigMuonEFCombinerHypoConfig()
 
     tool = config.ConfigurationHypoTool(chainDict['chainName'], thresholds, muonquality)
     addMonitoring( tool, TrigMuonEFCombinerHypoMonitoring, "TrigMuonEFCombinerHypoTool", chainDict['chainName'] )
     return tool
-    
+
 class TrigMuonEFCombinerHypoConfig(object):
-        
+
     log = logging.getLogger('TrigMuonEFCombinerHypoConfig')
 
     def ConfigurationHypoTool( self, thresholdHLT, thresholds, muonquality ):
 
-        tool = TrigMuonEFCombinerHypoTool( thresholdHLT )  
+        tool = CompFactory.TrigMuonEFCombinerHypoTool( thresholdHLT )
 
         nt = len(thresholds)
         log.debug('Set %d thresholds', nt)
         tool.PtBins = [ [ 0, 2.5 ] ] * nt
         tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt
- 
+
         tool.MuonQualityCut = muonquality
- 
+
         for th, thvalue in enumerate(thresholds):
             thvaluename = thvalue + 'GeV_v15a'
             log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename)
@@ -650,7 +651,7 @@ class TrigMuonEFTrackIsolationHypoConfig(object) :
 
     def ConfigurationHypoTool(self, toolName, isoCut):
 
-        tool=TrigMuonEFTrackIsolationHypoTool(toolName)
+        tool = CompFactory.TrigMuonEFTrackIsolationHypoTool(toolName)
 
         try:
             ptcone03 = trigMuonEFTrkIsoThresholds[ isoCut ]
@@ -668,7 +669,7 @@ class TrigMuonEFTrackIsolationHypoConfig(object) :
             if 'var' in isoCut :
                 tool.useVarIso = True
             else :
-                tool.useVarIso = False                                
+                tool.useVarIso = False
         except LookupError:
             if(isoCut=='passthrough') :
                 log.debug('Setting passthrough')
@@ -692,10 +693,10 @@ class TrigMuonEFInvMassHypoConfig(object) :
 
     def ConfigurationHypoTool(self, toolName, thresholds):
 
-        tool=TrigMuonEFInvMassHypoTool(toolName)
+        tool = CompFactory.TrigMuonEFInvMassHypoTool(toolName)
 
         try:
-            massWindow = trigMuonEFInvMassThresholds[thresholds] 
+            massWindow = trigMuonEFInvMassThresholds[thresholds]
 
             tool.InvMassLow = massWindow[0]
             tool.InvMassHigh = massWindow[1]
@@ -721,7 +722,7 @@ class TrigMuonLateMuRoIHypoConfig(object) :
 
     def ConfigurationHypoTool(self, toolName):
 
-        tool=TrigMuonLateMuRoIHypoTool(toolName)
+        tool = CompFactory.TrigMuonLateMuRoIHypoTool(toolName)
 
         try:
             tool.AcceptAll = False
@@ -736,17 +737,17 @@ if __name__ == '__main__':
     # normaly this tools are private and have no clash in naming, for the test we create them and never assign so they are like public,
     # in Run3 config this is checked in a different way so having Run 3 JO behaviour solves test issue
     from AthenaCommon.Configurable import Configurable
-    Configurable.configurableRun3Behavior=1 
+    Configurable.configurableRun3Behavior=1
 
     configToTest = [ 'HLT_mu6fast_L1MU6',
                      'HLT_mu6Comb_L1MU6',
-                     'HLT_mu6_L1MU6',                    
+                     'HLT_mu6_L1MU6',
                      'HLT_mu20_ivar_L1MU20',
                      'HLT_2mu6Comb_L12MU6',
                      'HLT_2mu6_L12MU6']
 
     from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import dictFromChainName
-                    
+
     for c in configToTest:
         log.info("testing config %s", c)
         chainDict = dictFromChainName(c)
@@ -760,5 +761,5 @@ if __name__ == '__main__':
         assert toolEFMSonly
         toolEFCombiner = TrigMuonEFCombinerHypoToolFromDict(chainDict)
         assert toolEFCombiner
-        
+
     log.info("All OK")
diff --git a/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py b/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py
index 3916e8fd1bf02b950368c0f6217c193d6f101df0..1c4f9792135d42c587c2f0523edc25a989595a19 100644
--- a/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py
+++ b/Trigger/TrigMonitoring/TrigCostMonitorMT/python/TrigCostMonitorMTConfig.py
@@ -7,21 +7,21 @@ def TrigCostMonitorMTCfg(flags):
     """
     Component Accumulator based configuration of Trigger Cost MT Service and associated Auditor
     """
-
-    from TrigCostMonitorMT.TrigCostMonitorMTConf import TrigCostMTAuditor, TrigCostMTSvc
-    from GaudiSvc.GaudiSvcConf import AuditorSvc
+    from AthenaConfiguration.ComponentFactory import CompFactory
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
     acc = ComponentAccumulator()
 
     if flags.Trigger.CostMonitoring.doCostMonitoring:
-      trigCostService = TrigCostMTSvc()
+      trigCostService = CompFactory.TrigCostMTSvc()
       trigCostService.MonitorAllEvents = flags.Trigger.CostMonitoring.monitorAllEvents
       trigCostService.SaveHashes = True # This option will go away once the TrigConfigSvc is fully up & running
       acc.addService(trigCostService)
 
-      auditorService = AuditorSvc()
-      auditorService += TrigCostMTAuditor()
+      auditorService = CompFactory.AuditorSvc()
+      tca=CompFactory.TrigCostMTAuditor()
+      #acc.addService(tca)
+      auditorService.Auditors=[tca.getFullJobOptName(),]
       acc.addService(auditorService)
       acc.setAppProperty("AuditAlgorithms", True)
 
diff --git a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py
index b95c3a1a71e62740bc722b5a52bd57502dc2e048..3abb85ac066e074f215046944d449b314da7d7c1 100644
--- a/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py
+++ b/Trigger/TrigMonitoring/TrigMinBiasMonitoring/python/TrigMinBiasMonitoringMT.py
@@ -21,10 +21,10 @@ def TrigMinBias(configFlags):
     alg.triggerList = [ "HLT_mb_sptrk_L1RD0_FILLED"]
     length = len(alg.triggerList)
     mbEffAllGroup.defineHistogram( "PurityAll,whichTrigger",type = 'TEfficiency',title="PurityAll;whichTrigger" ,xbins=length, xmin=0, xmax=length)
-    mbEffAllGroup.defineHistogram( "PurityPassed,whichTrigger",type = 'TEfficiency',title="PurityPassed;whichTrigger",xbins=length, xmin=0, xmax=length,labels = alg.triggerList)
+    mbEffAllGroup.defineHistogram( "PurityPassed,whichTrigger",type = 'TEfficiency',title="PurityPassed;whichTrigger",xbins=length, xmin=0, xmax=length,labels = list(alg.triggerList))
     mbEffAllGroup.defineHistogram( "EfficiencyAll,whichTrigger",type = 'TEfficiency', title="EfficiencyAll;whichTrigger",xbins=length, xmin=0, xmax=length)
     mbEffAllGroup.defineHistogram( "EfficiencyPassed,whichTrigger",type = 'TEfficiency', title="EfficiencyPassed;whichTrigger", xbins=length, xmin=0, xmax=length)
-    mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigNo",type = 'TEfficiency', title="EfficiencyPassed;trig No.", xbins=length, xmin=0, xmax=length,labels = alg.triggerList)
+    mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigNo",type = 'TEfficiency', title="EfficiencyPassed;trig No.", xbins=length, xmin=0, xmax=length,labels = list(alg.triggerList))
     mbEffAllGroup.defineHistogram( "whichTrigger",title="count of triggers", xbins=length, xmin=0, xmax=length)
     mbEffAllGroup.defineHistogram( "EfficiencyPassed,trigCount",type = 'TProfile',title="EfficiencyPassed;Trigger;EfficiencyPassed", xbins=length, xmin=0, xmax=length)
 
diff --git a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
index d80985cfec43541b0c05f7f3c2f3e51af9fba58b..f1890347b73e97bd5649176ea619f6e10c330c77 100644
--- a/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
+++ b/Trigger/TrigSteer/DecisionHandling/python/DecisionHandlingConfig.py
@@ -9,7 +9,7 @@ def setupFilterMonitoring( filterAlg ):
     inputKeys = filterAlg.Input
 
     monTool.HistPath="HLTFramework/Filters"
-    monTool.defineHistogram( 'name,stat;'+filterAlg.name(),  path='EXPERT', type='TH2I',
+    monTool.defineHistogram( 'name,stat;'+filterAlg.getName(),  path='EXPERT', type='TH2I',
                              title='Input activity fraction;;presence',
                              xbins=len(inputKeys), xmin=0, xmax=len(inputKeys)+2, xlabels=['exec', 'anyvalid']+inputKeys,
                              ybins=2, ymin=-0.5, ymax=1.5, ylabels=['no', 'yes'] )
@@ -17,8 +17,8 @@ def setupFilterMonitoring( filterAlg ):
     filterAlg.MonTool = monTool
 
 def TriggerSummaryAlg( name ):
-    from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg as Alg
-    alg = Alg( name )
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    alg = CompFactory.TriggerSummaryAlg( name )
     from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
     monTool = GenericMonitoringTool('MonTool', HistPath='HLTFramework/'+name)
     monTool.defineHistogram('TIME_SinceEventStart', path='EXPERT', type='TH1F',
diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py
index bcf84590999f0a96c1412654775bcde6d0748100..fe1de5879571beb0d82cd409767698b5cad121ff 100644
--- a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py
+++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py
@@ -5,6 +5,7 @@
 from six import iteritems
 from AthenaCommon.Logging import logging
 log = logging.getLogger('L1DecoderConfig')
+from AthenaConfiguration.ComponentFactory import CompFactory
 
 def mapThresholdToL1DecisionCollection(threshold):
     """
@@ -50,85 +51,84 @@ def mapThresholdToL1RoICollection(threshold):
 
 
 def createCaloRoIUnpackers():
-    from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, RerunRoIsUnpackingTool, TAURoIsUnpackingTool
+    #from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, RerunRoIsUnpackingTool, TAURoIsUnpackingTool
     from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring
     from TrigEDMConfig.TriggerEDMRun3 import recordable
-    emUnpacker = EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"),
-                                     OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("EM")),
-                                     MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 ))
+    emUnpacker = CompFactory.EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"),
+                                                 OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("EM")),
+                                                 MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 ))
 
     #            emUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 )
 
-    emRerunUnpacker = RerunRoIsUnpackingTool("EMRerunRoIsUnpackingTool",
-                                             SourceDecisions=mapThresholdToL1DecisionCollection("EM"),
-                                             Decisions="HLTNav_RerunL1EM" )
+    emRerunUnpacker = CompFactory.RerunRoIsUnpackingTool("EMRerunRoIsUnpackingTool",
+                                                         SourceDecisions=mapThresholdToL1DecisionCollection("EM"),
+                                                         Decisions="HLTNav_RerunL1EM" )
 
-    metUnpacker = METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE"))
+    metUnpacker = CompFactory.METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE"))
 
 
-    tauUnpacker = TAURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("TAU"),
-                                       OutputTrigRoIs = recordable("HLT_TAURoI"))
+    tauUnpacker = CompFactory.TAURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("TAU"),
+                                                   OutputTrigRoIs = recordable("HLT_TAURoI"))
 
     tauUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="TAU", maxCount=30 )
 
-    jUnpacker = JRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("J"),
-                                   OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("J")) )
+    jUnpacker = CompFactory.JRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("J"),
+                                               OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("J")) )
 
     jUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="J", maxCount=30 )
 
-
     return [emUnpacker, metUnpacker, tauUnpacker, jUnpacker ],[emRerunUnpacker]
 
 def createMuonRoIUnpackers():
-    from L1Decoder.L1DecoderConf import MURoIsUnpackingTool, RerunRoIsUnpackingTool
+    #from L1Decoder.L1DecoderConf import MURoIsUnpackingTool, RerunRoIsUnpackingTool
     from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring
 
     from TrigEDMConfig.TriggerEDMRun3 import recordable
-    muUnpacker = MURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("MU"),
+    muUnpacker = CompFactory.MURoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("MU"),
                                      OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("MU")))
 
     muUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="MU", maxCount=20 )
 
-    muRerunUnpacker =  RerunRoIsUnpackingTool("MURerunRoIsUnpackingTool",
-                                              SourceDecisions=mapThresholdToL1DecisionCollection("MU"),
-                                              Decisions="HLTNav_RerunL1MU" )
+    muRerunUnpacker =  CompFactory.RerunRoIsUnpackingTool("MURerunRoIsUnpackingTool",
+                                                          SourceDecisions=mapThresholdToL1DecisionCollection("MU"),
+                                                          Decisions="HLTNav_RerunL1MU" )
     return [muUnpacker],[muRerunUnpacker]
 
 
-from L1Decoder.L1DecoderConf import L1TriggerResultMaker
-class L1TriggerResultMaker(L1TriggerResultMaker):
-    def __init__(self, name='L1TriggerResultMaker', *args, **kwargs):
-        super(L1TriggerResultMaker, self).__init__(name, *args, **kwargs)
+#from L1Decoder.L1DecoderConf import L1TriggerResultMaker
+
 
-        # Muon RoIs
-        self.MuRoIKey = "LVL1MuonRoIs"
-        self.MuRoILinkName = "mu_roi"
+def setupL1TriggerResultMaker( alg ):
+    alg.MuRoIKey = "LVL1MuonRoIs"
+    alg.MuRoILinkName = "mu_roi"
+#         # Placeholder for other L1 xAOD outputs:
+#         # - CTP result
+#         # - L1Topo result
+#         # - L1Calo (Run3) RoIs
 
-        # Placeholder for other L1 xAOD outputs:
-        # - CTP result
-        # - L1Topo result
-        # - L1Calo (Run3) RoIs
+# from L1Decoder.L1DecoderConf import L1TriggerResultMaker
+# class L1TriggerResultMaker(L1TriggerResultMaker):
+#     def __init__(self, name='L1TriggerResultMaker', *args, **kwargs):
+#         super(L1TriggerResultMaker, self).__init__(name, *args, **kwargs)
+#         setupL1TriggerResultMaker( self )
 
 
-from L1Decoder.L1DecoderConf import L1Decoder
-class L1Decoder(L1Decoder) :
+#from L1Decoder.L1DecoderConf import L1Decoder
+class L1Decoder(CompFactory.L1Decoder) :
     def __init__(self, name='L1Decoder', *args, **kwargs):
         super(L1Decoder, self).__init__(name, *args, **kwargs)
 
         from TriggerJobOpts.TriggerFlags import TriggerFlags
-        from L1Decoder.L1DecoderConf import CTPUnpackingTool
 
         # CTP unpacker
-
-        ctpUnpacker = CTPUnpackingTool(OutputLevel = self.getDefaultProperty("OutputLevel"),)
+        ctpUnpacker = CompFactory.CTPUnpackingTool()
 
         self.ctpUnpacker = ctpUnpacker
-        from L1Decoder.L1DecoderConf import FSRoIsUnpackingTool
-        self.roiUnpackers += [ FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ]
+        self.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ]
 
         # EM unpacker
         if TriggerFlags.doID() or TriggerFlags.doCalo():
-            unpackers, rerunUnpackers = createCaloRoIUnpackers()            
+            unpackers, rerunUnpackers = createCaloRoIUnpackers()
             self.roiUnpackers += unpackers
             self.rerunRoiUnpackers += rerunUnpackers
 
@@ -146,21 +146,24 @@ class L1Decoder(L1Decoder) :
 
 
 def L1DecoderCfg(flags):
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior += 1
 
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
-    from L1Decoder.L1DecoderConf import L1Decoder, CTPUnpackingTool
+    #from L1Decoder.L1DecoderConf import L1Decoder, CTPUnpackingTool
     from L1Decoder.L1DecoderMonitoring import CTPUnpackingMonitoring
 
     acc = ComponentAccumulator()
-    decoderAlg = L1Decoder()
+
+    decoderAlg = CompFactory.L1Decoder()
     decoderAlg.L1DecoderSummaryKey = "L1DecoderSummary" # Transient, consumed by DecisionSummaryMakerAlg
-    decoderAlg.ctpUnpacker = CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.L1Decoder.forceEnableAllChains,
+    decoderAlg.ctpUnpacker = CompFactory.CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.L1Decoder.forceEnableAllChains,
                                                MonTool = CTPUnpackingMonitoring(512, 200) )
 
 
-    from L1Decoder.L1DecoderConf import FSRoIsUnpackingTool
-    decoderAlg.roiUnpackers += [ FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ]
+
+    decoderAlg.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED") ) ]
 
     unpackers, rerunUnpackers = createCaloRoIUnpackers()
     decoderAlg.roiUnpackers += unpackers
@@ -185,7 +188,11 @@ def L1DecoderCfg(flags):
     # TODO: implement flags to allow disabling either RoIBResult or L1TriggerResult
     acc.merge( RoIBResultDecoderCfg(flags) )
     acc.merge( L1TriggerByteStreamDecoderCfg(flags) )
-    acc.addEventAlgo( L1TriggerResultMaker() )
+
+    resultMaker = CompFactory.L1TriggerResultMaker()
+    setupL1TriggerResultMaker( resultMaker )
+    acc.addEventAlgo( resultMaker )
+    Configurable.configurableRun3Behavior -= 1
 
     return acc,decoderAlg
 
diff --git a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
index 7742c6084fb3471a3fc60354d05d9421aca16d0d..5fabbc5c6ffae828e1f79d9f236c240706fa8b97 100644
--- a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
+++ b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
@@ -40,7 +40,7 @@ def OverlayTTL1Cfg(flags, name="OverlayTTL1", **kwargs):
                       flags.Overlay.SigPrefix + "TileTTL1MBTS")
     kwargs.setdefault("OutputTileMBTSTTL1Key", "TileTTL1MBTS")
 
-    OverlayTTL1 = CompFactory.LVL1__OverlayTTL1
+    OverlayTTL1 = CompFactory.LVL1.OverlayTTL1
     acc.addEventAlgo(OverlayTTL1(name, **kwargs))
 
     if flags.Output.doWriteRDO:
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
index 80ca34dac0d15dabf481046c90f996d880059daf..5cfa5b97241bd8d2f54f27bc57386754ca6b1584 100644
--- a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
@@ -1,21 +1,19 @@
 #
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
-
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 def RoIBResultDecoderCfg(flags):
-  from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import RoIBResultByteStreamTool,RoIBResultByteStreamDecoderAlg
-  decoderTool = RoIBResultByteStreamTool()
-  decoderAlg = RoIBResultByteStreamDecoderAlg(name="RoIBResultByteStreamDecoderAlg",
-                                              RoIBResultWHKey="RoIBResult",
-                                              DecoderTool=decoderTool)
-
-  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+  decoderTool = CompFactory.RoIBResultByteStreamTool()
+  decoderAlg = CompFactory.RoIBResultByteStreamDecoderAlg(name="RoIBResultByteStreamDecoderAlg",
+                                                          RoIBResultWHKey="RoIBResult",
+                                                          DecoderTool=decoderTool)
   acc = ComponentAccumulator()
   acc.addEventAlgo(decoderAlg)
   return acc
 
-from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import ExampleL1TriggerByteStreamTool as _ExampleL1TriggerByteStreamTool
-class ExampleL1TriggerByteStreamTool(_ExampleL1TriggerByteStreamTool):
+
+class ExampleL1TriggerByteStreamTool(CompFactory.ExampleL1TriggerByteStreamTool):
   def __init__(self, name, writeBS=False, *args, **kwargs):
     super(ExampleL1TriggerByteStreamTool, self).__init__(name, *args, **kwargs)
     from libpyeformat_helper import SourceIdentifier,SubDetector
@@ -33,17 +31,14 @@ class ExampleL1TriggerByteStreamTool(_ExampleL1TriggerByteStreamTool):
       self.MuonRoIContainerWriteKey="LVL1MuonRoIs"
 
 def L1TriggerByteStreamDecoderCfg(flags):
-  from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import L1TriggerByteStreamDecoderAlg
-  from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import ExampleL1TriggerByteStreamTool
 
   # Placeholder for real decoder tools - now it's just an example
-  exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSDecoderTool", writeBS=False)
-  decoderTools = [exampleTool]
+  exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSDecoderTool")
 
-  decoderAlg = L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder",
-                                             DecoderTools=decoderTools)
+  decoderTools = [exampleTool]
+  decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder",
+                                                         DecoderTools=decoderTools)
 
-  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
   acc = ComponentAccumulator()
   acc.addEventAlgo(decoderAlg)
   return acc
@@ -52,7 +47,6 @@ def L1TriggerByteStreamEncoderCfg(flags):
   from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import ExampleL1TriggerByteStreamTool
   exampleTool = ExampleL1TriggerByteStreamTool(name="L1MuonBSEncoderTool", writeBS=True)
 
-  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
   acc = ComponentAccumulator()
   acc.addPublicTool(exampleTool)
   return acc
@@ -71,3 +65,4 @@ def L1ByteStreamEncodersRecExSetup():
   from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper
   from AthenaConfiguration.AllConfigFlags import ConfigFlags
   CAtoGlobalWrapper(L1TriggerByteStreamEncoderCfg,ConfigFlags)
+
diff --git a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
index 1369d4f2a8d8bf5cdeffe16503b635f5658b9d1a..b81ee4711bcdb7d5748426fc44a4234d7bff0f4d 100644
--- a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
+++ b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
@@ -8,4 +8,4 @@ atlas_subdir( TrigInDetConfig )
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
 
-atlas_add_test( TrigInDetCfg    SCRIPT python -m TrigInDetConfig.InDetConfig    POST_EXEC_SCRIPT nopost.sh )
+atlas_add_test( TrigInDetCfg    SCRIPT python -m TrigInDetConfig.TrigInDetConfig    POST_EXEC_SCRIPT nopost.sh )
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
index 20cdcf7f98ade1f26ff45b9d40687a591bfb4333..652ada20d8102ba9310b92e9ca8ac8473342a6d2 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
@@ -1,11 +1,11 @@
 #
-#  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 AthenaCommon.Include import include
 include.block("InDetTrigRecExample/EFInDetConfig.py")
 
-from AthenaCommon.Logging import logging 
+from AthenaCommon.Logging import logging
 log = logging.getLogger("InDetSetup")
 
 if not 'InDetTrigFlags' in dir():
@@ -19,7 +19,8 @@ if not 'InDetTrigFlags' in dir():
    InDetTrigFlags.doPrintConfigurables = False
 
 
-from TrigInDetConfig.InDetConfig import InDetCacheNames
+
+
 
 def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'EMViewRoIs' ):
   #If signature specified add suffix to the algorithms
@@ -33,8 +34,9 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
 
   from AthenaCommon.AppMgr import ToolSvc
   from AthenaCommon.AppMgr import ServiceMgr
-
+  from TrigInDetConfig import InDetCacheNames
   from AthenaCommon.GlobalFlags import globalflags
+
   #Only add raw data decoders if we're running over raw data
   if globalflags.InputFormat.is_bytestream():
     #Pixel
@@ -51,7 +53,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
 
     if (InDetTrigFlags.doPrintConfigurables()):
       print(InDetPixelRawDataProviderTool) # noqa: ATL901
-    
+
     # load the PixelRawDataProvider
     from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRawDataProvider
     InDetPixelRawDataProvider = PixelRawDataProvider(name         = "InDetPixelRawDataProvider"+ signature,
@@ -60,13 +62,13 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
     InDetPixelRawDataProvider.isRoI_Seeded = True
     InDetPixelRawDataProvider.RoIs = rois
     InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey
-    
+
     viewAlgs.append(InDetPixelRawDataProvider)
 
 
     if (InDetTrigFlags.doPrintConfigurables()):
       print(InDetPixelRawDataProvider) # noqa: ATL901
-    
+
 
     #SCT
     from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCT_RodDecoder
@@ -79,7 +81,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
     ToolSvc += InDetSCTRawDataProviderTool
     if (InDetTrigFlags.doPrintConfigurables()):
       print(InDetSCTRawDataProviderTool) # noqa: ATL901
-    
+
 
     # load the SCTRawDataProvider
     from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCTRawDataProvider
@@ -139,7 +141,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
 
   InDetPixelClusterization.isRoI_Seeded = True
   InDetPixelClusterization.RoIs = rois
-  InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey 
+  InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey
 
 
   viewAlgs.append(InDetPixelClusterization)
@@ -193,8 +195,8 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
                                                       conditionsTool          = InDetSCT_ConditionsSummaryToolWithoutFlagged)
   InDetSCT_Clusterization.isRoI_Seeded = True
   InDetSCT_Clusterization.RoIs = rois
-  InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey 
-  
+  InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey
+
 
   viewAlgs.append(InDetSCT_Clusterization)
 
@@ -236,7 +238,7 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
   theFTF = TrigFastTrackFinderBase("TrigFastTrackFinder_" + whichSignature, whichSignature)
   theFTF.RoIs = rois
   theFTF.TracksName = "TrigFastTrackFinder_Tracks" + separateTrackParticleCreator
-  
+
   #the following doCloneRemoval modification should be set up in the InDetTrigSliceSettings once legacy trigger not needed
   if whichSignature=="Electron":
      theFTF.doCloneRemoval = True
@@ -262,5 +264,5 @@ def makeInDetAlgs( whichSignature='', separateTrackParticleCreator='', rois = 'E
 
 
 
-  
+
   return viewAlgs
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
similarity index 89%
rename from Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py
rename to Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index acbbb038d6d054465dc062478180c86c9b27551c..40ed099c7bccbb35a7bd2154ee7a5674f1a4d580 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/InDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -18,7 +18,7 @@ class InDetCacheNames(object):
 def InDetIDCCacheCreatorCfg():
   #Create IdentifiableCaches
   acc = ComponentAccumulator()
-  InDet__CacheCreator=CompFactory.InDet__CacheCreator
+  InDet__CacheCreator=CompFactory.getComp("InDet::CacheCreator")
   InDetCacheCreatorTrig = InDet__CacheCreator(name = "InDetCacheCreatorTrig",
                                               Pixel_ClusterKey   = InDetCacheNames.Pixel_ClusterKey,
                                               SCT_ClusterKey     = InDetCacheNames.SCT_ClusterKey,
@@ -50,15 +50,10 @@ def TrigInDetCondConfig( flags ):
   SCT_DCSConditionsTool=CompFactory.SCT_DCSConditionsTool
   dcsTool = SCT_DCSConditionsTool(ReadAllDBFolders = True, ReturnHVTemp = True)
 
-  from SCT_ConditionsTools.SCT_SiliconConditionsToolSetup import SCT_SiliconConditionsToolSetup
-  sct_SiliconConditionsToolSetup = SCT_SiliconConditionsToolSetup()
-  sct_SiliconConditionsToolSetup.setDcsTool(dcsTool)
-  sct_SiliconConditionsToolSetup.setToolName("InDetSCT_SiliconConditionsTool")
-  sct_SiliconConditionsToolSetup.setup()
-
-  sctSiliconConditionsTool = sct_SiliconConditionsToolSetup.getTool()
-  sctSiliconConditionsTool.CheckGeoModel = False
-  sctSiliconConditionsTool.ForceUseGeoModel = False
+  from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsToolCfg, SCT_SiliconConditionsCfg
+  #sctSiliconConditionsTool= SCT_SiliconConditionsCfg(flags, toolName="InDetSCT_SiliconConditionsTool", dcsTool=dcsTool )
+  sctSiliconConditionsTool = SCT_SiliconConditionsToolCfg(flags)
+  acc.merge(SCT_SiliconConditionsCfg(flags, DCSConditionsTool=dcsTool))
 
   SCT_AlignCondAlg=CompFactory.SCT_AlignCondAlg
   acc.addCondAlgo(SCT_AlignCondAlg(UseDynamicAlignFolders = True))
@@ -283,13 +278,13 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
 
 
   #Pixel clusterisation
-  InDet__ClusterMakerTool=CompFactory.InDet__ClusterMakerTool
+  InDet__ClusterMakerTool=CompFactory.InDet.ClusterMakerTool
   InDetClusterMakerTool = InDet__ClusterMakerTool(name                 = "InDetClusterMakerTool"+ signature)
 
   acc.addPublicTool(InDetClusterMakerTool)
 
 
-  InDet__MergedPixelsTool=CompFactory.InDet__MergedPixelsTool
+  InDet__MergedPixelsTool=CompFactory.InDet.MergedPixelsTool
   InDetMergedPixelsTool = InDet__MergedPixelsTool(name                    = "InDetMergedPixelsTool"+ signature,
                                                   globalPosAlg            = InDetClusterMakerTool,
                                                   MinimalSplitSize        = 0,
@@ -299,11 +294,11 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
                                                   )
   acc.addPublicTool(InDetMergedPixelsTool)
 
-  InDet__PixelGangedAmbiguitiesFinder=CompFactory.InDet__PixelGangedAmbiguitiesFinder
+  InDet__PixelGangedAmbiguitiesFinder=CompFactory.InDet.PixelGangedAmbiguitiesFinder
   InDetPixelGangedAmbiguitiesFinder = InDet__PixelGangedAmbiguitiesFinder(name = "InDetPixelGangedAmbiguitiesFinder"+ signature)
   acc.addPublicTool(InDetPixelGangedAmbiguitiesFinder)
 
-  InDet__PixelClusterization=CompFactory.InDet__PixelClusterization
+  InDet__PixelClusterization=CompFactory.InDet.PixelClusterization
   InDetPixelClusterization = InDet__PixelClusterization(name                    = "InDetPixelClusterization"+ signature,
                                                         clusteringTool          = InDetMergedPixelsTool,
                                                         gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder,
@@ -313,34 +308,16 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
   InDetPixelClusterization.isRoI_Seeded = True
   InDetPixelClusterization.RoIs = roisKey
   InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey
-
   acc.addEventAlgo(InDetPixelClusterization)
 
-  from SCT_ConditionsTools.SCT_FlaggedConditionToolSetup import SCT_FlaggedConditionToolSetup
-  sct_FlaggedConditionToolSetup = SCT_FlaggedConditionToolSetup()
-  sct_FlaggedConditionToolSetup.setup()
-  InDetSCT_FlaggedConditionTool = sct_FlaggedConditionToolSetup.getTool()
-
-  from SCT_ConditionsTools.SCT_ConditionsSummaryToolSetup import SCT_ConditionsSummaryToolSetup
-  sct_ConditionsSummaryToolSetup = SCT_ConditionsSummaryToolSetup()
-  sct_ConditionsSummaryToolSetup = SCT_ConditionsSummaryToolSetup("InDetSCT_ConditionsSummaryTool"+ signature)
-  sct_ConditionsSummaryToolSetup.setup()
-  InDetSCT_ConditionsSummaryTool = sct_ConditionsSummaryToolSetup.getTool()
-  condTools = []
-  for condToolHandle in InDetSCT_ConditionsSummaryTool.ConditionsTools:
-    condTool = condToolHandle.typeAndName
-    if condTool not in condTools:
-      if condTool != InDetSCT_FlaggedConditionTool.getFullName():
-        condTools.append(condTool)
-  sct_ConditionsSummaryToolSetupWithoutFlagged = SCT_ConditionsSummaryToolSetup("InDetSCT_ConditionsSummaryToolWithoutFlagged"+ signature)
-  sct_ConditionsSummaryToolSetupWithoutFlagged.setup()
-  InDetSCT_ConditionsSummaryToolWithoutFlagged = sct_ConditionsSummaryToolSetupWithoutFlagged.getTool()
-  InDetSCT_ConditionsSummaryToolWithoutFlagged.ConditionsTools = condTools
+  from InDetConfig.InDetRecToolConfig import InDetSCT_ConditionsSummaryToolCfg
+  InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(InDetSCT_ConditionsSummaryToolCfg(flags,withFlaggedCondTool=False))
+
 
   #
   # --- SCT_ClusteringTool (public)
   #
-  InDet__SCT_ClusteringTool=CompFactory.InDet__SCT_ClusteringTool
+  InDet__SCT_ClusteringTool=CompFactory.InDet.SCT_ClusteringTool
   InDetSCT_ClusteringTool = InDet__SCT_ClusteringTool(name              = "InDetSCT_ClusteringTool"+ signature,
                                                       globalPosAlg      = InDetClusterMakerTool,
                                                       conditionsTool    = InDetSCT_ConditionsSummaryToolWithoutFlagged)
@@ -348,7 +325,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
   # --- SCT_Clusterization algorithm
   #
 
-  InDet__SCT_Clusterization=CompFactory.InDet__SCT_Clusterization
+  InDet__SCT_Clusterization=CompFactory.InDet.SCT_Clusterization
   InDetSCT_Clusterization = InDet__SCT_Clusterization(name                    = "InDetSCT_Clusterization"+ signature,
                                                       clusteringTool          = InDetSCT_ClusteringTool,
                                                       # ChannelStatus         = InDetSCT_ChannelStatusAlg,
@@ -364,12 +341,12 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
 
   #Space points and FTF
 
-  InDet__SiSpacePointMakerTool=CompFactory.InDet__SiSpacePointMakerTool
+  InDet__SiSpacePointMakerTool=CompFactory.InDet.SiSpacePointMakerTool
   InDetSiSpacePointMakerTool = InDet__SiSpacePointMakerTool(name = "InDetSiSpacePointMakerTool"+ signature)
   acc.addPublicTool(InDetSiSpacePointMakerTool)
 
   from AthenaCommon.DetFlags import DetFlags
-  InDet__SiTrackerSpacePointFinder=CompFactory.InDet__SiTrackerSpacePointFinder
+  InDet__SiTrackerSpacePointFinder=CompFactory.InDet.SiTrackerSpacePointFinder
   InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name                   = "InDetSiTrackerSpacePointFinder"+ signature,
                                                                     SiSpacePointMakerTool  = InDetSiSpacePointMakerTool,
                                                                     PixelsClustersName     = "PixelTrigClusters",
@@ -393,7 +370,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
   #from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool
   #from TrigInDetConf.TrigInDetPostTools import  InDetTrigParticleCreatorToolFTF
 
-  #InDet__TrigTrackingxAODCnvMT=CompFactory.InDet__TrigTrackingxAODCnvMT
+  #InDet__TrigTrackingxAODCnvMT=CompFactory.InDet.TrigTrackingxAODCnvMT
   #theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg",
   #                                                         doIBLresidual = False,
   #                                                         TrackName = "TrigFastTrackFinder_Tracks",
@@ -432,7 +409,7 @@ if __name__ == "__main__":
 
     nThreads=1
 
-    SG__HiveMgrSvc=CompFactory.SG__HiveMgrSvc
+    SG__HiveMgrSvc=CompFactory.SG.HiveMgrSvc
     eventDataSvc = SG__HiveMgrSvc("EventDataSvc")
     eventDataSvc.NSlots = nThreads
     acc.addService( eventDataSvc )
diff --git a/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py b/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py
index db40fd98ed8cb14dbd726237ab432997595719bf..ce285ce687b82d8e713a9c970093a52ca930fcaa 100644
--- a/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py
+++ b/Trigger/TrigTools/TrigT2CaloCalibration/python/EgammaCalibrationConfig.py
@@ -3,10 +3,10 @@
 #############################
 # EgammaLWCalibration
 #############################
-from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaLWCalibration
+from AthenaConfiguration.ComponentFactory import CompFactory
 from CaloClusterCorrection.CaloSwLongWeights_v5 import *
 
-class EgammaLWCalibrationBarrelConfig(EgammaLWCalibration):
+class EgammaLWCalibrationBarrelConfig(CompFactory.EgammaLWCalibration):
     __slots__=[]
     def __init__(self,name="EgammaLWCalibrationBarrel"):
       super(EgammaLWCalibrationBarrelConfig,self).__init__(name)
@@ -20,7 +20,7 @@ class EgammaLWCalibrationBarrelConfig(EgammaLWCalibration):
       self.degree=3
       #self.region = CALOCORR_COMBINED2
 
-class EgammaLWCalibrationEndcapConfig(EgammaLWCalibration):
+class EgammaLWCalibrationEndcapConfig(CompFactory.EgammaLWCalibration):
     __slots__=[]
     def __init__(self,name="EgammaLWCalibrationEndcap"):
       super(EgammaLWCalibrationEndcapConfig,self).__init__(name)
@@ -36,11 +36,10 @@ class EgammaLWCalibrationEndcapConfig(EgammaLWCalibration):
 #############################
 # EgammaHitsCalibration
 #############################
-from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaHitsCalibration
 from CaloClusterCorrection.CaloSwCalibHitsCalibration_v9 import *
 from CaloClusterCorrection.CaloSwCalibHitsCalibration_v9leakdata import *
 
-class EgammaHitsCalibrationBarrelConfig(EgammaHitsCalibration):
+class EgammaHitsCalibrationBarrelConfig(CompFactory.EgammaHitsCalibration):
     __slots__=[]
     def __init__(self,name="EgammaHitsCalibrationBarrel"):
       super(EgammaHitsCalibrationBarrelConfig,self).__init__(name)
@@ -54,7 +53,7 @@ class EgammaHitsCalibrationBarrelConfig(EgammaHitsCalibration):
       self.preserve_offset=False
       self.OutputLevel=0
 
-class EgammaHitsCalibrationEndcapConfig(EgammaHitsCalibration):
+class EgammaHitsCalibrationEndcapConfig(CompFactory.EgammaHitsCalibration):
     __slots__=[]
     def __init__(self,name="EgammaHitsCalibrationEndcap"):
       super(EgammaHitsCalibrationEndcapConfig,self).__init__(name)
@@ -72,10 +71,9 @@ class EgammaHitsCalibrationEndcapConfig(EgammaHitsCalibration):
 #############################
 # EgammaGapCalibration
 #############################
-from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaGapCalibration
 from CaloClusterCorrection.CaloSwGap_v4 import *
 
-class EgammaGapCalibrationConfig(EgammaGapCalibration):
+class EgammaGapCalibrationConfig(CompFactory.EgammaGapCalibration):
     __slots__=[]
     def __init__(self,name="EgammaGapCalibration"):
       super(EgammaGapCalibrationConfig,self).__init__(name)
@@ -89,10 +87,9 @@ class EgammaGapCalibrationConfig(EgammaGapCalibration):
 #############################
 # EgammaSshapeCalibration
 #############################
-from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaSshapeCalibration
 from CaloClusterCorrection.CaloSwEtaoff_v4_1 import *
 
-class EgammaSshapeCalibrationBarrelConfig(EgammaSshapeCalibration):
+class EgammaSshapeCalibrationBarrelConfig(CompFactory.EgammaSshapeCalibration):
     __slots__=[]
     def __init__(self,name="EgammaSshapeCalibrationBarrel"):
         super(EgammaSshapeCalibrationBarrelConfig,self).__init__(name)
@@ -102,7 +99,7 @@ class EgammaSshapeCalibrationBarrelConfig(EgammaSshapeCalibration):
         self.energy_degree=3
         self.rangeBarrel=True
     
-class EgammaSshapeCalibrationEndcapConfig(EgammaSshapeCalibration):
+class EgammaSshapeCalibrationEndcapConfig(CompFactory.EgammaSshapeCalibration):
     __slots__=[]
     def __init__(self,name="EgammaSshapeCalibrationEndcap"):
         super(EgammaSshapeCalibrationEndcapConfig,self).__init__(name)
@@ -116,10 +113,9 @@ class EgammaSshapeCalibrationEndcapConfig(EgammaSshapeCalibration):
 #############################
 # EgammaTransitionRegions
 #############################
-from TrigT2CaloCalibration.TrigT2CaloCalibrationConf import EgammaTransitionRegions
 from CaloClusterCorrection.CaloSwTransitionRegionsCorr_v5_1 import *
 
-class EgammaTransitionRegionsConfig(EgammaTransitionRegions):
+class EgammaTransitionRegionsConfig(CompFactory.EgammaTransitionRegions):
     __slots__=[]
     def __init__(self,name="EgammaTransitionRegionsConfig"):
       super(EgammaTransitionRegionsConfig,self).__init__(name)
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py
index eb705d0050f8e8bbffd497220eeb1120e858438c..241870da2825dd466a195b2c7b431b1f287cf822 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureConfig.py
@@ -9,13 +9,16 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
 import sys
 
-HLTTest__TestRecoAlg, HLTTest__TestHypoAlg=CompFactory.getComps("HLTTest__TestRecoAlg","HLTTest__TestHypoAlg",)
+HLTTest__TestHypoAlg=CompFactory.getComps.HLTTest.TestHypoAlg
+HLTTest__TestRecoAlg=CompFactory.getComps.HLTTest.TestRecoAlg
+
+
 
 UseThisLinkName="initialRoI"
 #UseThisLinkName="feature"
 
 
-HLTTest__TestInputMaker=CompFactory.HLTTest__TestInputMaker
+HLTTest__TestInputMaker=CompFactory.HLTTest.TestInputMaker
 def InputMakerForInitialRoIAlg(name):
     return HLTTest__TestInputMaker(name, RoIsLink="initialRoI", LinkName="initialRoI")
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py
index 8e2e9daadd33672001521c5b63b00c4cd4e97e9d..aa0acf5095b7c141f8d7ed4ed805a1015a964772 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py
@@ -4,9 +4,9 @@
 
 def TriggerHistSvcConfig(flags):
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+    from AthenaConfiguration.ComponentFactory import CompFactory
     acc = ComponentAccumulator()
-    from GaudiSvc.GaudiSvcConf import THistSvc
-    histSvc = THistSvc()
+    histSvc = CompFactory.THistSvc()
     histSvc.Output = ["SHIFT DATAFILE='shift-monitoring.root' OPT='RECREATE'", 
                       "EXPERT DATAFILE='expert-monitoring.root' OPT='RECREATE'", 
                       "run_1 DATAFILE='lbn-monitoring.root' OPT='RECREATE'", 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py
index 9aea0a3f528689c8f11a9751c0b110996f7fb99e..84c4201a66e02c81c993d2e06299a45d2eae29f3 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJOTest.py
@@ -17,7 +17,7 @@ from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig_newJO import generateDecisionT
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, createStepView
 from AthenaCommon.CFElements import seqOR
 from RegionSelector.RegSelConfig import regSelCfg
-from TrigInDetConfig.InDetConfig import TrigInDetCondConfig
+from TrigInDetConfig.TrigInDetConfig import TrigInDetCondConfig
 from TrigUpgradeTest.EmuStepProcessingConfig import generateL1DecoderAndChains
 
 log = logging.getLogger('EmuNewJOTest')
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py
index 243636ae5a343d0138db832da7c7b2cb72d2db2f..0f9c036c5f8b89f13e2ecf700def7d30b5c09c68 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py
@@ -334,10 +334,11 @@ else:
 
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 from AthenaCommon.Configurable import Configurable
-Configurable.configurableRun3Behavior+=1
+Configurable.configurableRun3Behavior=1
 acc, edmSet = triggerOutputCfg(ConfigFlags, decObj, decObjHypoOut, summaryMakerAlg)
-Configurable.configurableRun3Behavior-=1
-acc.appendToGlobals()
+Configurable.configurableRun3Behavior=0
+from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena
+appendCAtoAthena(acc)
 
 ##########################################
 # Print top sequence for debugging
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
index 66f117dbd6ae04e49ce0cf5e3bccaf18ee6660ec..53d03d4efc3e7ce0b9780aa84230bf1d97c886c4 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
@@ -64,7 +64,7 @@ from RegionSelector.RegSelConfig import regSelCfg
 acc.merge( regSelCfg( flags ) )
 
 
-from TrigInDetConfig.InDetConfig import TrigInDetCondConfig
+from TrigInDetConfig.TrigInDetConfig import TrigInDetCondConfig
 acc.merge( TrigInDetCondConfig( flags ) )
 
 acc.getEventAlgo( "TrigSignatureMoniMT" ).OutputLevel=DEBUG
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py
index b8379861eadef87801700cbaec016b78222078e6..b3105fd101d2c04a4db5df8e35342f9c8aa02e7e 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py
@@ -16,7 +16,7 @@ def Lvl1SimulationSequence( flags = None ):
     #
     from AthenaCommon.Logging import logging
     log = logging.getLogger('TriggerJobOpts.Lvl1Simulation')
-
+    from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
     from AthenaCommon.CFElements import seqAND
     from AthenaCommon.AppMgr import ServiceMgr as svcMgr
     from AthenaCommon.AlgSequence import AthSequencer
@@ -27,7 +27,7 @@ def Lvl1SimulationSequence( flags = None ):
     TriggerFlags.outputLVL1configFile = None
     log.info("setting up LVL1ConfigSvc, including the menu generation")
     from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc
-    svcMgr += getL1ConfigSvc()
+    svcMgr += conf2toConfigurable(getL1ConfigSvc())
     
     from TrigT1CaloSim.TrigT1CaloSimRun2Config import Run2TriggerTowerMaker
     caloTowerMaker              = Run2TriggerTowerMaker("Run2TriggerTowerMaker25ns")
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
index 82cae47f428f86123792d9ea1904f3ad480cad6b..63b30ea32b2584eaf0c9c07c4e1b25291bf57ee0 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
@@ -5,11 +5,14 @@ from collections import OrderedDict
 from builtins import str
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
-from AthenaCommon.CFElements import seqAND, seqOR, flatAlgorithmSequences
+from AthenaCommon.CFElements import seqAND, seqOR, flatAlgorithmSequences, getSequenceChildren, isSequence, hasProp, getProp
 from AthenaCommon.Logging import logging
 __log = logging.getLogger('TriggerConfig')
-
+from AthenaCommon.Constants import DEBUG
+__log.setLevel(DEBUG)
 import six
+def __isCombo(alg):
+    return hasProp( alg, "MultiplicitiesMap" )  # alg.getType() == 'ComboHypo':
 
 def collectHypos( steps ):
     """
@@ -18,52 +21,57 @@ def collectHypos( steps ):
     Returned is a map with the step name and list of all instances of hypos in that step.
     Input is top HLT sequencer.
     """
-    __log.info("Collecting hypos")
+    __log.info("Collecting hypos from steps")
     from collections import defaultdict
     hypos = defaultdict( list )
 
-    for stepSeq in steps.getChildren():
-        if "filter" in stepSeq.name():
-            __log.info("Skipping filtering steps " +stepSeq.name() )
+    for stepSeq in getSequenceChildren( steps ):
+        if not isSequence( stepSeq ):
+            continue
+        
+        if "filter" in stepSeq.getName():
+            __log.info("Skipping filtering steps " +stepSeq.getName() )
             continue
 
-        __log.info( "collecting hypos from step " + stepSeq.name() )
+        __log.info( "collecting hypos from step " + stepSeq.getName() )
 #        start = {}
         for seq,algs in six.iteritems (flatAlgorithmSequences( stepSeq )):
-
             for alg in algs:
+                if isSequence( alg ):
+                    continue
                 # will replace by function once dependencies are sorted
-                if 'HypoInputDecisions'  in alg.getProperties():
-                    __log.info( "found hypo " + alg.name() + " in " +stepSeq.name() )
-                    if alg.getType() == 'ComboHypo':
-                        __log.info( "    with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.name() for  tool in alg.ComboHypoTools])))
-                    hypos[stepSeq.name()].append( alg )
+                if hasProp( alg, 'HypoInputDecisions'):
+                    __log.info( "found hypo " + alg.getName() + " in " +stepSeq.getName() )
+                    if __isCombo( alg ):
+                        __log.info( "    with %d comboHypoTools: %s", len(alg.ComboHypoTools), ' '.join(map(str, [tool.getName() for  tool in alg.ComboHypoTools])))
+                    hypos[stepSeq.getName()].append( alg )
                 else:
-                    __log.verbose("Not a hypo" + alg.name())
+                    __log.verbose("Not a hypo" + alg.getName())
 
     return hypos
 
 def __decisionsFromHypo( hypo ):
     """ return all chains served by this hypo and the key of produced decision object """
     from TrigCompositeUtils.TrigCompositeUtils import isLegId
-    if hypo.getType() == 'ComboHypo':
+    __log.info("Hypo type is combo {}".format( __isCombo( hypo ) ) )
+    if __isCombo( hypo ):
         return [key for key in list(hypo.MultiplicitiesMap.keys()) if not isLegId(key)], hypo.HypoOutputDecisions[0]
     else: # regular hypos
-        return [ t.name() for t in hypo.HypoTools if not isLegId(t.name())], hypo.HypoOutputDecisions
+        return [ t.getName() for t in hypo.HypoTools if not isLegId(t.getName())], hypo.HypoOutputDecisions
 
 
 def collectViewMakers( steps ):
     """ collect all view maker algorithms in the configuration """
     makers = [] # map with name, instance and encompasing recoSequence
-    for stepSeq in steps.getChildren():
-        for recoSeq in stepSeq.getChildren():
+    for stepSeq in getSequenceChildren( steps ):
+        for recoSeq in getSequenceChildren( stepSeq ):
             algsInSeq = flatAlgorithmSequences( recoSeq )
             for seq,algs in six.iteritems (algsInSeq):
                 for alg in algs:
-                    if "EventViewCreator" in alg.getFullName(): # TODO base it on checking types of write handles once available
+                    if "EventViewCreator" in alg.getFullJobOptName(): # TODO base it on checking types of write handles once available
                         if alg not in makers:
                             makers.append(alg)
-    __log.debug("Found ViewMakers: {}".format( ' '.join([ maker.name() for maker in makers ]) ))
+    __log.debug("Found ViewMakers: {}".format( ' '.join([ maker.getName() for maker in makers ]) ))
     return makers
 
 
@@ -79,10 +87,10 @@ def collectFilters( steps ):
     from collections import defaultdict
     filters = defaultdict( list )
 
-    for stepSeq in steps.getChildren():
-        if "filter" in stepSeq.name():
-            filters[stepSeq.name()] = stepSeq.getChildren()
-            __log.info("Found Filters in Step {} : {}".format(stepSeq.name(), stepSeq.getChildren()))
+    for stepSeq in getSequenceChildren( steps ):
+        if "filter" in stepSeq.getName():
+            filters[stepSeq.getName()] = getSequenceChildren( stepSeq )
+            __log.info("Found Filters in Step {} : {}".format(stepSeq.getName(), getSequenceChildren( stepSeq )))
 
     return filters
 
@@ -101,7 +109,7 @@ def collectHypoDecisionObjects(hypos, inputs = True, outputs = True):
     for step, stepHypos in six.iteritems (hypos):
         for hypoAlg in stepHypos:
             __log.debug( "Hypo %s with input %s and output %s ",
-                         hypoAlg.getName(), hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions )
+                         hypoAlg.name, hypoAlg.HypoInputDecisions, hypoAlg.HypoOutputDecisions )
             if isinstance( hypoAlg.HypoInputDecisions, list):
                 if inputs:
                     [ decisionObjects.add( d ) for d in hypoAlg.HypoInputDecisions ]
@@ -182,7 +190,8 @@ def triggerSummaryCfg(flags, hypos):
     for c, cont in six.iteritems (allChains):
         __log.debug("Final decision of chain  " + c + " will be read from " + cont )
     decisionSummaryAlg.FinalDecisionKeys = list(OrderedDict.fromkeys(allChains.values()))
-    decisionSummaryAlg.FinalStepDecisions = dict(allChains)
+    if len(allChains) > 0:
+        decisionSummaryAlg.FinalStepDecisions = dict(allChains)
     decisionSummaryAlg.DecisionsSummaryKey = "HLTNav_Summary" # Output
     decisionSummaryAlg.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring
     decisionSummaryAlg.CostWriteHandleKey = recordable(flags.Trigger.CostMonitoring.outputCollection)
@@ -211,12 +220,12 @@ def triggerMonitoringCfg(flags, hypos, filters, l1Decoder):
             allChains.update( hypoChains )
 
         dcTool = DecisionCollectorTool( "DecisionCollector" + stepName, Decisions=list(OrderedDict.fromkeys(stepDecisionKeys)))
-        __log.debug( "The step monitoring decisions in " + dcTool.name() + " " +str( dcTool.Decisions ) )
+        __log.debug( "The step monitoring decisions in " + dcTool.getName() + " " +str( dcTool.Decisions ) )
         mon.CollectorTools += [ dcTool ]
 
 
     #mon.FinalChainStep = allChains
-    mon.L1Decisions  = l1Decoder.getProperties()['L1DecoderSummaryKey'] if l1Decoder.getProperties()['L1DecoderSummaryKey'] != '<no value>' else l1Decoder.getDefaultProperty('L1DecoderSummary')
+    mon.L1Decisions  = getProp( l1Decoder, 'L1DecoderSummaryKey' )
 
     from DecisionHandling.DecisionHandlingConfig import setupFilterMonitoring
     [ [ setupFilterMonitoring( alg ) for alg in algs ]  for algs in list(filters.values()) ]
@@ -402,18 +411,15 @@ def triggerPOOLOutputCfg(flags, decObj, decObjHypoOut, edmSet):
       ("xAOD::TrigConfKeys", "TrigConfKeys")]
 
     # Produce the trigger bits
-    from TrigOutputHandling.TrigOutputHandlingConfig import TriggerBitsMakerToolCfg
-    from TrigDecisionMaker.TrigDecisionMakerConfig import TrigDecisionMakerMT
+    #from TrigOutputHandling.TrigOutputHandlingConfig import TriggerBitsMakerToolCfg
+    #from TrigDecisionMaker.TrigDecisionMakerConfig import TrigDecisionMakerMT
+    bitsmaker = CompFactory.TriggerBitsMakerTool()
+    decmaker = CompFactory.getComp("TrigDec::TrigDecisionMakerMT")("TrigDecMakerMT", BitsMakerTool = bitsmaker)
 
-    bitsmaker = TriggerBitsMakerToolCfg()
-    decmaker = TrigDecisionMakerMT('TrigDecMakerMT')
-
-    decmaker.BitsMakerTool = bitsmaker
     acc.addEventAlgo( decmaker )
 
     # Produce trigger metadata
-    TrigConf__xAODMenuWriterMT=CompFactory.TrigConf__xAODMenuWriterMT
-    menuwriter = TrigConf__xAODMenuWriterMT()
+    menuwriter = CompFactory.getComp("TrigConf::xAODMenuWriterMT")()
     menuwriter.IsHLTJSONConfig = True
     menuwriter.IsL1JSONConfig = True
     acc.addEventAlgo( menuwriter )
@@ -462,7 +468,7 @@ def triggerMergeViewsAndAddMissingEDMCfg( edmSet, hypos, viewMakers, decObj, dec
             if len(producer) > 1:
                 for pr in producer[1:]:
                     if pr != producer[0]:
-                        __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.name() for p in producer ]) ) )
+                        __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.getName() for p in producer ]) ) )
                         continue
         alg.OutputTools += [ tool ]
 
@@ -509,6 +515,7 @@ def triggerRunCfg( flags, menu=None ):
 
     # L1ConfigSvc needed for L1Decoder
     from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg
+
     acc.merge( L1ConfigSvcCfg(flags) )
 
     acc.merge( triggerIDCCacheCreatorsCfg( flags ) )
@@ -522,7 +529,7 @@ def triggerRunCfg( flags, menu=None ):
     if menu:
         menuAcc = menu( flags )
         HLTSteps = menuAcc.getSequence( "HLTAllSteps" )
-        __log.info( "Configured menu with "+ str( len(HLTSteps.getChildren()) ) +" steps" )
+        __log.info( "Configured menu with "+ str( len(HLTSteps.Members) ) +" steps" )
 
 
     # collect hypothesis algorithms from all sequence
@@ -575,7 +582,7 @@ def triggerIDCCacheCreatorsCfg(flags):
     from MuonConfig.MuonRdoDecodeConfig import MuonPrdCacheCfg
     acc.merge( MuonPrdCacheCfg() )
 
-    from TrigInDetConfig.InDetConfig import InDetIDCCacheCreatorCfg
+    from TrigInDetConfig.TrigInDetConfig import InDetIDCCacheCreatorCfg
     acc.merge( InDetIDCCacheCreatorCfg() )
 
     return acc
@@ -605,8 +612,13 @@ if __name__ == "__main__":
         menuCA.addSequence( seqAND("HLTAllSteps") )
         return menuCA
 
+        
     acc = triggerRunCfg( ConfigFlags, testMenu )
+    Configurable.configurableRun3Behavior=0
+    from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena
+    appendCAtoAthena( acc )
 
+    
     f=open("TriggerRunConf.pkl","wb")
     acc.store(f)
     f.close()
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
index 9da25d053027813ab81ac8e90d24adce8fdb8768..fcb0ed49a5ae771c903440ccbdc185d8b34e8312 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
@@ -416,8 +416,10 @@ from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu, createL1PrescalesFile
 generateL1Menu()
 createL1PrescalesFileFromMenu()
 
-from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc
-svcMgr += getL1ConfigSvc()
+from TrigConfigSvc.TrigConfigSvcCfg import getL1ConfigSvc,L1ConfigSvcCfg
+from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper, conf2toConfigurable
+CAtoGlobalWrapper(L1ConfigSvcCfg,None)
+#svcMgr += getL1ConfigSvc()
 
 
 # ---------------------------------------------------------------
@@ -454,7 +456,7 @@ if opt.doL1Unpacking:
             transTypeKey = ("TransientBSOutType","StoreGateSvc+TransientBSOutKey")
             l1decoder.ExtraInputs += [transTypeKey]
 
-        topSequence += l1decoder
+        topSequence += conf2toConfigurable(l1decoder)
     else:
         from TrigUpgradeTest.TestUtils import L1EmulationTest
         topSequence += L1EmulationTest()
@@ -488,7 +490,7 @@ if not opt.createHLTMenuExternally:
 
 
 from TrigConfigSvc.TrigConfigSvcCfg import getHLTConfigSvc, setupHLTPrescaleCondAlg
-svcMgr += getHLTConfigSvc()
+svcMgr += conf2toConfigurable( getHLTConfigSvc() )
 setupHLTPrescaleCondAlg()
 
 if not opt.createHLTMenuExternally:
@@ -533,7 +535,6 @@ if svcMgr.MessageSvc.OutputLevel<INFO:
 # Use parts of NewJO
 #-------------------------------------------------------------
 from AthenaCommon.Configurable import Configurable
-Configurable.configurableRun3Behavior+=1
 from TriggerJobOpts.TriggerConfig import triggerIDCCacheCreatorsCfg
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
@@ -554,8 +555,8 @@ if opt.doWriteBS:
 
 # ID Cache Creators
 ConfigFlags.lock()
-triggerIDCCacheCreatorsCfg(ConfigFlags).appendToGlobals()
-Configurable.configurableRun3Behavior-=1
+CAtoGlobalWrapper(triggerIDCCacheCreatorsCfg,ConfigFlags)
+
 
 # Trigger output
 if opt.doWriteBS or opt.doWriteRDOTrigger:
@@ -577,11 +578,7 @@ if opt.doWriteBS or opt.doWriteRDOTrigger:
         log.warning("Failed to find L1Decoder or DecisionSummaryMakerAlg, cannot determine Decision names for output configuration")
         decObj = []
         decObjHypoOut = []
-
-    Configurable.configurableRun3Behavior+=1
-    acc, edmSet = triggerOutputCfg(ConfigFlags, decObj, decObjHypoOut, summaryMakerAlg)
-    Configurable.configurableRun3Behavior-=1
-    acc.appendToGlobals()
+    CAtoGlobalWrapper( triggerOutputCfg, ConfigFlags, destinationSeq=AlgSequence("AthMasterSeq"), decObj=decObj, decObjHypoOut=decObjHypoOut, summaryAlg=summaryMakerAlg)
 
 #-------------------------------------------------------------
 # Non-ComponentAccumulator Cost Monitoring
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py
index dbc17f551815b93782ed35746d1a805397eb6eec..c7e2f37c3f319a6c14c9a09981b2ce889fba8321 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/ElectronRecoSequences.py
@@ -13,8 +13,8 @@ def l2CaloRecoCfg( flags ):
     return reco
 
 def l2CaloHypoCfg( flags, name="UNSPECIFIED", CaloClusters="UNSPECIFIED" ):
-    from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoAlgMT
-    l2CaloHypo                     = TrigL2CaloHypoAlgMT( name )
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    l2CaloHypo                     = CompFactory.TrigL2CaloHypoAlgMT( name )
     l2CaloHypo.CaloClusters        = CaloClusters
     return l2CaloHypo
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
index e01ad60c871b607795d9a435739600a83a2eb65d..3e4c2bab38d82c3e8f674974fd0f399a283bc137 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py
@@ -7,11 +7,11 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, \
 from TrigEgammaHypo.TrigL2CaloHypoTool import TrigL2CaloHypoToolFromDict
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from TrigEDMConfig.TriggerEDMRun3 import recordable
+from AthenaConfiguration.ComponentFactory import CompFactory
 
 # TODO remove once full tracking is in place
-def fakeHypoAlgCfg(flags, name="FakeHypoForElectron"):
-    from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoAlg
-    return HLTTest__TestHypoAlg( name, Input="" )
+def fakeHypoAlgCfg(flags, name="FakeHypoForElectron"):    
+    return CompFactory.getComp("HLTTest::TestHypoAlg")( name, Input="" )
 
 
 def generateChains( flags,  chainDict ):
@@ -52,19 +52,18 @@ def generateChains( flags,  chainDict ):
     accTrk.addSequence(stepView)
 
     # # # fast ID
-    from TrigInDetConfig.InDetConfig import indetInViewRecoCfg
+    from TrigInDetConfig.TrigInDetConfig import indetInViewRecoCfg
     fastInDetReco = indetInViewRecoCfg(flags, viewMakerName='ElectronInDet', signature='Electron')
     accTrk.merge( fastInDetReco, sequenceName=stepReco.getName() )
     # TODO once tracking fully works remove fake hypos
 
-    from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoTool
 
     # TODO remove once full tracking is in place
     fakeHypoAlg = fakeHypoAlgCfg(flags, name='FakeHypoForElectron')
 
 
     def makeFakeHypoTool(chainDict, cfg = None):
-        return HLTTest__TestHypoTool(chainDict['chainName'])
+        return CompFactory.getComp("HLTTest::TestHypoTool")(chainDict['chainName'])
 
     accTrk.addEventAlgo(fakeHypoAlg, sequenceName=stepView.getName())
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
index a91bbcd72fa855d9b7a6c157a45b9e8b1f953fd2..869ab4174bc16381db13fd0a25639f040e08c721 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
@@ -4,9 +4,10 @@
 
 from AthenaCommon.CFElements import parOR, seqAND
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import RecoFragmentsPool
-
+from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
 from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration
 
+
 # Translate the reco dict to a string for suffixing etc
 def jetRecoDictToString(jetRecoDict):
     strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}"
@@ -18,7 +19,7 @@ def jetRecoDictToString(jetRecoDict):
 # Start from a FullScan inputs maker
 def jetAthSequence(dummyFlags, **jetRecoDict):
     from TrigT2CaloCommon.CaloDef import clusterFSInputMaker
-    InputMakerAlg= clusterFSInputMaker()
+    InputMakerAlg= conf2toConfigurable(clusterFSInputMaker())
 
     # Does nothing now, but may need to use this to toggle Insitu calib step
     # in which case it should be deduced from input flags
@@ -44,6 +45,8 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
     jetNamePrefix = "HLT_"
 
     from TrigEDMConfig.TriggerEDMRun3 import recordable
+    from JetRecConfig import ConfigurableCompatibility
+    ConfigurableCompatibility.Convert2Configurable = True
     from JetRecConfig.JetRecConfig import getConstitPJGAlg, getJetAlgorithm
     if doRecluster:
         # Reclustering -- recursively call the basic jet reco and add this to the sequence,
@@ -69,12 +72,12 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
 
         rcConstitPJAlg = getConstitPJGAlg( rcJetDef.inputdef )
         rcConstitPJKey = rcConstitPJAlg.PJGetter.OutputContainer
-        recoSeq += rcConstitPJAlg
+        recoSeq += conf2toConfigurable( rcConstitPJAlg )
 
         rcPJs = [rcConstitPJKey]
         rcJetRecAlg = getJetAlgorithm(rcJetsFullName, rcJetDef, rcPJs, rcModList)
 
-        recoSeq += rcJetRecAlg
+        recoSeq += conf2toConfigurable( rcJetRecAlg )
 
         sequenceOut = recordable(rcJetsFullName)
 
@@ -85,7 +88,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
         ungroomedJetRecoDict["recoAlg"] = ungroomedJetRecoDict["recoAlg"].rstrip("t") # Drop grooming spec
         ungroomedJetRecoDict["jetCalib"] = "nojcalib" # No need to calibrate
         (ungroomedJetRecoSequence,ungroomedJetsName) = RecoFragmentsPool.retrieve(jetRecoSequence,None,dataSource=dataSource, **ungroomedJetRecoDict)
-        recoSeq += ungroomedJetRecoSequence
+        recoSeq += conf2toConfigurable( ungroomedJetRecoSequence )
 
         ungroomedDef = JetRecoConfiguration.defineJets(ungroomedJetRecoDict)
         # Cluster large-R jets only down to 50 GeV
@@ -100,7 +103,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
 
         from JetRecConfig.JetGroomConfig import getJetGroomAlg
         groomalg = getJetGroomAlg(groomedJetsFullName,groomDef,groomedModList)
-        recoSeq += groomalg
+        recoSeq += conf2toConfigurable( groomalg )
 
         sequenceOut = recordable(groomedJetsFullName)
     else:
@@ -143,7 +146,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
         # Add the PseudoJetGetter alg to the sequence
         constitPJAlg = getConstitPJGAlg( jetDef.inputdef )
         constitPJKey = constitPJAlg.PJGetter.OutputContainer
-        recoSeq += constitPJAlg
+        recoSeq += conf2toConfigurable( constitPJAlg )
         # Basic list of PseudoJets is just the constituents
         # Append ghosts (tracks) if desired
         pjs = [constitPJKey]
@@ -166,7 +169,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
         if "sub" in jetRecoDict["jetCalib"]:
             # Add the event shape alg if needed for area subtraction
             eventShapeAlg = JetRecConfig.getEventShapeAlg( jetDef.inputdef, constitPJKey, "HLT_" )
-            recoSeq += eventShapeAlg
+            recoSeq += conf2toConfigurable(eventShapeAlg)
             # Not currently written because impossible to merge
             # across event views, which is maybe a concern in
             # the case of regional PFlow
@@ -182,7 +185,7 @@ def jetRecoSequence( dummyFlags, dataSource, RoIs = 'FSJETRoI', **jetRecoDict):
         # Generate a JetAlgorithm to run the jet finding and modifiers
         # (via a JetRecTool instance).
         jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, jetDef, pjs, jetModList)
-        recoSeq += jetRecAlg
+        recoSeq += conf2toConfigurable( jetRecAlg )
         # End of basic jet reco
         pass
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
index eaad75e3b641ad0cfba1252203c96ae0b26e128a..1ddb3e812883f70f12eae13aa08660891cdb4914 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
@@ -6,6 +6,8 @@ from AthenaCommon.CFElements import parOR
 from TrigEDMConfig.TriggerEDMRun3 import recordable
 
 from JetRecTools.JetRecToolsConfig import getTrackSelTool, getTrackVertexAssocTool
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
 
 def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     jetTrkSeq = parOR( "JetTrackingSeq_"+trkopt, [])
@@ -44,15 +46,18 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     trackcollectionmap[trkopt]["JetTracks"] = jettracksname
     trackcollectionmap[trkopt]["TVA"] = tvaname
 
-    from JetRec import JetRecConf
-    jettrkprepalg = JetRecConf.JetAlgorithm("jetalg_TrackPrep")
+    #from JetRec import JetRecConf
+    #jettrkprepalg = JetRecConf.JetAlgorithm("jetalg_TrackPrep")
+
+
+    jettrkprepalg = CompFactory.JetAlgorithm("jetalg_TrackPrep")
     jettrkprepalg.Tools = [ jettrackselloose, jettvassoc ]
-    jetTrkSeq += jettrkprepalg
+    jetTrkSeq += conf2toConfigurable( jettrkprepalg )
 
     label = "GhostTrack_{}".format(trkopt)
     ghosttracksname = "PseudoJet{}".format(label)
-    pjg = JetRecConf.PseudoJetGetter("pjg_{}".format(label),
-                                     InputContainer=tracksname,                                     
+    pjg = CompFactory.PseudoJetGetter("pjg_{}".format(label),
+                                     InputContainer=tracksname,
                                      OutputContainer=ghosttracksname,
                                      Label=label,
                                      SkipNegativeEnergy=True,
@@ -61,10 +66,10 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     trackcollectionmap[trkopt]["GhostTracks"] = ghosttracksname
     trackcollectionmap[trkopt]["GhostTracksLabel"] = label
 
-    pjgalg = JetRecConf.PseudoJetAlgorithm(
+    pjgalg = CompFactory.PseudoJetAlgorithm(
         "pjgalg_"+label,
         PJGetter=pjg
         )
-    jetTrkSeq += pjgalg
+    jetTrkSeq += conf2toConfigurable( pjgalg )
 
     return jetTrkSeq, trkcolls
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py
index 15d86d8f0b33a728351399c165139f0ab9643e45..408f56fc5fb4618d86e963b2bf7a6da04febd095 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/TriggerJetMods.py
@@ -1,3 +1,4 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from JetRecConfig.JetDefinition import JetModifier
 
 ########################################################################
@@ -6,13 +7,13 @@ from JetRecConfig.JetDefinition import JetModifier
 # No need for the special momentum scales, just copy the basic four-vec
 # to "DetectorEtaPhi", because we're not doing origin correction
 # and certainly not with the offline collection names
-from JetMomentTools import JetMomentToolsConf
+from AthenaConfiguration.ComponentFactory import CompFactory
 def getConstitFourMomTool_copy():
-    cfourmom = JetMomentToolsConf.JetConstitFourMomTool("constitfourmom_copy",
-                                                        JetScaleNames = ["DetectorEtaPhi"],
-                                                        AltConstitColls = [""],
-                                                        AltConstitScales = [0],
-                                                        AltJetScales = ["JetConstitScaleMomentum"])
+    cfourmom = CompFactory.JetConstitFourMomTool("constitfourmom_copy",
+                                                 JetScaleNames = ["DetectorEtaPhi"],
+                                                 AltConstitColls = [""],
+                                                 AltConstitScales = [0],
+                                                 AltJetScales = ["JetConstitScaleMomentum"])
     return cfourmom
 
 ConstitFourMom_copy = JetModifier("JetConstitFourMomTool", "constitfourmom_copy",
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
index 88a417bfeebf4279355abeb72ee41fdd818fda0f..b70f9f7230d60237fa4a50e439acd359da55fd83 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
@@ -25,16 +25,20 @@ def generateChains( flags, chainDict ):
     cellsname = "CaloCellsFS"
     clustersname = "HLT_CaloTopoClustersFS"
 
-    from TrigCaloRec.TrigCaloRecConfig import HLTCaloCellMaker
-    cellmaker=HLTCaloCellMaker("HLTCaloCellMaker_FS")
-    cellmaker.RoIs="FSJETRoI"
-    cellmaker.TrigDataAccessMT=cdaSvc
-    cellmaker.CellsName=cellsname
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS")
+    cellmaker.RoIs = "FSJETRoI"
+    cellmaker.TrigDataAccessMT = cdaSvc
+    cellmaker.CellsName = cellsname
 
     inEventReco.addRecoAlg(cellmaker)
 
     from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
-    inEventReco.mergeReco( CaloTopoClusterCfg(flags,cellsname=cellsname,clustersname=clustersname,doLCCalib=False,sequenceName=inEventReco.recoSeq.name()) )
+    inEventReco.mergeReco( CaloTopoClusterCfg( flags,
+                                    cellsname = cellsname,
+                                    clustersname = clustersname,
+                                    doLCCalib = False,
+                                    sequenceName = inEventReco.recoSeq.name) )
 
     #sequencing of actual jet reconstruction
     from JetRecConfig import JetRecConfig
@@ -58,9 +62,8 @@ def generateChains( flags, chainDict ):
     acc.merge(inEventReco,stepReco.getName())
 
     #hypo
-    from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT
     from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict
-    hypo = TrigJetHypoAlgMT("TrigJetHypoAlgMT_a4tcem_subjesIS")
+    hypo = CompFactory.TrigJetHypoAlgMT("TrigJetHypoAlgMT_a4tcem_subjesIS")
     jetsfullname = jetprefix+TrigAntiKt4EMTopoSubJES.basename+jetsuffix+"Jets"
     hypo.Jets = jetsfullname
     acc.addEventAlgo(hypo)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
index 533f10f729b8d6d0ff7dfcd88140043ab47d5305..c7f9600463bd48c315575e8aa88ddc6bf3a31e30 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
@@ -35,6 +35,7 @@ from AthenaCommon.CFElements import parOR, seqAND, seqOR
 from AthenaCommon.AlgSequence import dumpSequence
 from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import  stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot, create_dot
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
+from AthenaCommon.Configurable import Configurable
 
 
 from AthenaCommon.Logging import logging
@@ -160,28 +161,29 @@ def makeHLTTree(newJO=False, triggerConfigHLT = None):
     from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectViewMakers, collectDecisionObjects,\
         triggerMonitoringCfg, triggerSummaryCfg, triggerMergeViewsAndAddMissingEDMCfg, collectHypoDecisionObjects
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
-    from AthenaCommon.Configurable import Configurable
-    Configurable.configurableRun3Behavior+=1
+
+    from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable, appendCAtoAthena
 
     hypos = collectHypos(steps)
     filters = collectFilters(steps)
     viewMakers = collectViewMakers(steps)
+    Configurable.configurableRun3Behavior=1
     summaryAcc, summaryAlg = triggerSummaryCfg( ConfigFlags, hypos )
-    hltTop += summaryAlg
-    summaryAcc.appendToGlobals()
+    Configurable.configurableRun3Behavior=0
+    hltTop += conf2toConfigurable( summaryAlg )
+    appendCAtoAthena( summaryAcc )
     decObj = collectDecisionObjects( hypos, filters, l1decoder[0], summaryAlg )
     decObjHypoOut = collectHypoDecisionObjects(hypos, inputs=False, outputs=True)
-
+    Configurable.configurableRun3Behavior=1
     monAcc, monAlg = triggerMonitoringCfg( ConfigFlags, hypos, filters, l1decoder[0] )
-    monAcc.appendToGlobals()
-    hltTop += monAlg
-
-    # this is a shotcut for now, we always assume we may be writing ESD & AOD outputs, so all gaps will be filled
     edmAlg = triggerMergeViewsAndAddMissingEDMCfg(['AOD', 'ESD'], hypos, viewMakers, decObj, decObjHypoOut)
-    hltTop += edmAlg
+    Configurable.configurableRun3Behavior=0
+    hltTop += conf2toConfigurable( monAlg )
+    appendCAtoAthena( monAcc )
 
-    Configurable.configurableRun3Behavior-=1
+    # this is a shotcut for now, we always assume we may be writing ESD & AOD outputs, so all gaps will be filled
 
+    hltTop += conf2toConfigurable(edmAlg)
     topSequence += hltTop
 
     # Test the configuration
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
index 447afb87b97177b977f8c091ae04a703248e7e6b..8dff3a97d213fbbe8e327d741037415ff7bb23d2 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
@@ -2,12 +2,13 @@
 
 from collections import defaultdict
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
-from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import buildFilter, makeSummary
+from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import makeSummary
 from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, \
     stepCF_ControlFlow_to_dot, all_DataFlow_to_dot
-from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CFSequence, createStepView
-from AthenaCommon.CFElements import parOR, seqAND
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CFSequence, createStepView, SequenceFilterNode
+from AthenaCommon.CFElements import parOR, seqAND, findAlgorithm
 from AthenaCommon.Logging import logging
 log = logging.getLogger( __name__ )
 
@@ -77,12 +78,20 @@ def generateDecisionTree(chains):
 
             # One aggregated filter per chain (one per column in matrix)
             filterName = CFNaming.filterName(chainStep.name)
-            sfilter = buildFilter(filterName, filter_input)
-            filterAcc.addEventAlgo(sfilter.Alg, sequenceName = stepFilterNodeName)
+            #filter = buildFilter(filterName, filter_input)
+
+            # append input to filter if it exists
+            filterAlg = findAlgorithm( filterAcc.getSequence(), filterName )
+            if filterAlg:
+                filterAlg.Input += filter_input
+            else:
+                filterAlg = CompFactory.RoRSeqFilter(filterName, Input=filter_input )
+                filterAcc.addEventAlgo(filterAlg, sequenceName = stepFilterNodeName)
 
             stepReco, stepView = createStepView(chainStep.name)
-            viewWithFilter = seqAND(chainStep.name, [sfilter.Alg, stepView])
+            viewWithFilter = seqAND(chainStep.name, [filterAlg, stepView])
 
+            sfilter = SequenceFilterNode(filterAlg, 'Input', 'Output')
             recoAcc.addSequence(viewWithFilter, parentName = stepRecoNodeName)
 
             stepsAcc = ComponentAccumulator()
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
index 00f0f3a3de23d3ce95e52d65741ec08025b335bc..58d11c34e41071de2e60fd12d592077ccf89b191 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
@@ -6,7 +6,7 @@
 from AthenaCommon.AlgSequence import AthSequencer
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import algColor
 import itertools
-
+from AthenaCommon.CFElements import getSequenceChildren, isSequence
 
 def create_dot():
     from TriggerJobOpts.TriggerFlags import TriggerFlags
@@ -21,18 +21,18 @@ def drawHypoTools(file, all_hypos):
     for hp in all_hypos:
         for hypotool in hp.tools:
             file.write("    %s[fillcolor=yellow,style=filled,shape= Mdiamond]\n"%(hypotool))
-            file.write("    %s -> %s [style=dashed, color=grey]\n"%(hp.Alg.name(), hypotool))
+            file.write("    %s -> %s [style=dashed, color=grey]\n"%(hp.Alg.getName(), hypotool))
 
 
 def stepCF_ControlFlow_to_dot(stepCF):
     def _dump (seq, indent):
         o = list()
-        for c in seq.getChildren():            
-            if isinstance(c, AthSequencer):
-                o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(c.name(),_seqColor(c)), indent) )
+        if isSequence(seq):
+            for c in getSequenceChildren( seq ):            
+                o.append( ("%s[color=%s, shape=circle, width=.5, fixedsize=true ,style=filled]\n"%(c.getName(),_seqColor(c)), indent) )
             else:
-                o.append( ("%s[fillcolor=%s,style=filled]\n"%(c.name(),algColor(c)), indent) )
-            o.append( ("%s -> %s\n"%(seq.name(), c.name()), indent))
+                o.append( ("%s[fillcolor=%s,style=filled]\n"%(c.getName(),algColor(c)), indent) )
+            o.append( ("%s -> %s\n"%(seq.getName(), c.getName()), indent))
             o.extend( _dump (c, indent+1) )
         return o
 
@@ -66,17 +66,17 @@ def stepCF_ControlFlow_to_dot(stepCF):
 
    
 
-    with open('%s.CF.dot'%stepCF.name(), mode="wt") as file:
+    with open('%s.CF.dot'%stepCF.getName(), mode="wt") as file:
     #strict
         file.write( 'digraph step  {  \n'\
                     +' concentrate=true;\n'\
                     +' rankdir="LR";\n'
                     +'  node [ shape=polygon, fontname=Helvetica ]\n'\
                     +'  edge [ fontname=Helvetica ]\n'
-                    +'  %s   [shape=Mdiamond]\n'%stepCF.name())
+                    +'  %s   [shape=Mdiamond]\n'%stepCF.getName())
 
         indent=0
-    #    out = [("%s[color=%s shape=circle]\n"%(stepCF.name(),_seqColor(stepCF)), indent)]
+    #    out = [("%s[color=%s shape=circle]\n"%(stepCF.getName(),_seqColor(stepCF)), indent)]
         out = [("",indent)]
         out.extend( _dump( stepCF, indent=indent+1 ) )
         for n,i in out:
@@ -106,7 +106,7 @@ def all_DataFlow_to_dot(name, step_list):
             # reset the last step
             last_step_hypoNodes =[]
             for cfseq in cfseq_list:
-                file.write("  %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg)))
+                file.write("  %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.getName(),algColor(cfseq.filter.Alg)))
                 step_connections.append(cfseq.filter)                      
                 file.write(  '\n  subgraph cluster_%s {\n'%(cfseq.step.name)\
                             +'     concentrate=true;\n'
@@ -133,7 +133,7 @@ def all_DataFlow_to_dot(name, step_list):
                 #combo
                 if cfseq.step.isCombo:
                     if cfseq.step.combo is not None:
-                        file.write("    %s[color=%s]\n"%(cfseq.step.combo.Alg.name(), algColor(cfseq.step.combo.Alg)))
+                        file.write("    %s[color=%s]\n"%(cfseq.step.combo.Alg.getName(), algColor(cfseq.step.combo.Alg)))
                         cfseq_algs.append(cfseq.step.combo)
                         last_step_hypoNodes.append(cfseq.step.combo)
                 file.write('  }\n')              
@@ -160,9 +160,9 @@ def stepCF_DataFlow_to_dot(name, cfseq_list):
 
         all_hypos = []
         for cfseq in cfseq_list:
-            file.write("  %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg)))
+            file.write("  %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.getName(),algColor(cfseq.filter.Alg)))
             for inp in cfseq.filter.getInputList():
-                file.write(addConnection(name, cfseq.filter.Alg.name(), inp))
+                file.write(addConnection(name, cfseq.filter.Alg.getName(), inp))
 
             file.write(  '\n  subgraph cluster_%s {\n'%(cfseq.step.name)\
                         +'     concentrate=true;\n'
@@ -184,7 +184,7 @@ def stepCF_DataFlow_to_dot(name, cfseq_list):
             #combo
             if cfseq.step.isCombo:
                 if cfseq.step.combo is not None:
-                    file.write("    %s[color=%s]\n"%(cfseq.step.combo.Alg.name(), algColor(cfseq.step.combo.Alg)))
+                    file.write("    %s[color=%s]\n"%(cfseq.step.combo.Alg.getName(), algColor(cfseq.step.combo.Alg)))
                     cfseq_algs.append(cfseq.step.combo)
             file.write('  }\n')              
 
@@ -208,8 +208,8 @@ def findConnections(alg_list):
         dataIntersection = list(set(outs) & set(ins))
         if len(dataIntersection) > 0:
             for line in dataIntersection:
-                lineconnect+=addConnection(nodeA.Alg.name(),nodeB.Alg.name(), line)
-#                print "Data connections between %s and %s: %s"%(nodeA.Alg.name(), nodeB.Alg.name(), line)
+                lineconnect+=addConnection(nodeA.Alg.getName(),nodeB.Alg.getName(), line)
+#                print "Data connections between %s and %s: %s"%(nodeA.Alg.getName(), nodeB.Alg.getName(), line)
 
     return lineconnect
 
@@ -229,8 +229,8 @@ def findDHconnections(nodeA, nodeB):
     dataIntersection = list(set(outs) & set(ins))
     if len(dataIntersection) > 0:
         for line in dataIntersection:
-            lineconnect+=addConnection(nodeA.Alg.name(),nodeB.Alg.name(), line)
-            #print 'Data DH connections between %s and %s: %s'%(nodeA.Alg.name(), nodeB.Alg.name(), line)
+            lineconnect+=addConnection(nodeA.Alg.getName(),nodeB.Alg.getName(), line)
+            #print 'Data DH connections between %s and %s: %s'%(nodeA.Alg.getName(), nodeB.Alg.getName(), line)
     return lineconnect
     
 
@@ -241,7 +241,7 @@ def getValuesProperties(node):
     algs = []
     if isinstance(node.Alg, AthSequencer):
          seq=node.Alg
-         algs = seq.getChildren()
+         algs = getSequenceChildren( seq )
          algs.pop(0) # remove InputMaker
     else:
         algs.append(node.Alg)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py
index c9ae9790827cc0cc2ccbfd2fb4a85c3193ddd386..2b42306e92f30bbe059d3f905d58d0f0cb3c2b03 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTMenuJSON.py
@@ -3,27 +3,30 @@
 import json
 from collections import OrderedDict as odict
 from TrigConfigSvc.TrigConfigSvcCfg import getHLTMenuFileName
-
+from AthenaCommon.CFElements import getSequenceChildren, isSequence
 from AthenaCommon.Logging import logging
 __log = logging.getLogger( __name__ )
 
+def getChildrenIfSequence( s ):
+    return  getSequenceChildren( s ) if isSequence( s ) else []
+
 def __getStepsDataFromAlgSequence(HLTAllSteps):
     """ Generates a list where the index corresponds to a Step number and the stored object is a list of Sequencers making up the Step 
     """
     stepsData = []
     if HLTAllSteps is not None:
-        for HLTStep in HLTAllSteps.getChildren():
-            if "_reco" not in HLTStep.name(): # Avoid the pre-step Filter execution
+        for HLTStep in getSequenceChildren( HLTAllSteps ):
+            if "_reco" not in HLTStep.getName(): # Avoid the pre-step Filter execution
                 # Look for newJO reco
-                for Step in HLTStep.getChildren():
-                    for View in Step.getChildren():
-                        for Reco in View.getChildren():
-                            if "_reco" in Reco.name() and HLTStep.name() not in stepsData:
-                                stepsData.append( HLTStep.getChildren() )
+                for Step in getChildrenIfSequence( HLTStep ):
+                    for View in getChildrenIfSequence( Step ):
+                        for Reco in getChildrenIfSequence( View ):
+                            if "_reco" in Reco.getName() and HLTStep.getName() not in stepsData:
+                                stepsData.append( getSequenceChildren( HLTStep ) )
                                 break
                 continue
 
-            stepsData.append( HLTStep.getChildren() )
+            stepsData.append( getSequenceChildren( HLTStep ) )
     else:
         __log.warn( "No HLTAllSteps sequencer, will not export per-Step data for chains.")
     return stepsData
@@ -40,11 +43,11 @@ def __getChainSequencers(stepsData, chainName):
         mySequencer = None
         endOfChain = False
         for sequencer in step:
-            sequencerFilter = sequencer.getChildren()[0] # Always the first child in the step
+            sequencerFilter = getSequenceChildren( sequencer )[0] # Always the first child in the step
             if any(chainName in chainNameFromLegName(fChain) for fChain in sequencerFilter.Chains):
                 if mySequencer is not None:
                     __log.error( "Multiple Filters found (corresponding Sequencers %s, %s) for %s in Step %i!",
-                        mySequencer.name(), sequencer.name(), chainName, counter)
+                        mySequencer.getName(), sequencer.getName(), chainName, counter)
                 mySequencer = sequencer
         if mySequencer is None:
             endOfChain = True
@@ -55,7 +58,7 @@ def __getChainSequencers(stepsData, chainName):
                 __log.error( "Found another Step, (Step %i) for chain %s "
                     "which looked like it had already finished after %i Steps!", 
                     counter, chainName, sequencers.len())
-            sequencers.append(mySequencer.name())
+            sequencers.append(mySequencer.getName())
     return sequencers
 
 def __getSequencerAlgs(stepsData):
@@ -65,7 +68,7 @@ def __getSequencerAlgs(stepsData):
     sequencerAlgs = odict()
     for step in stepsData:
         for sequencer in step:
-            sequencerAlgs[ sequencer.name() ] = list(map(lambda x: x.getFullName(), findAllAlgorithms(sequencer)))
+            sequencerAlgs[ sequencer.getName() ] = list(map(lambda x: x.getFullJobOptName(), findAllAlgorithms(sequencer)))
     return sorted(sequencerAlgs.items(), key=lambda t: t[0])
 
 def __generateJSON( chainDicts, chainConfigs, HLTAllSteps, menuName, fileName ):
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
index 1c66197a11badca3eef94384021f389d5d78ac2b..2eee6d649370783551dd1abfddf41ab8081b17eb 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
@@ -98,8 +98,8 @@ if __name__ == "__main__":
     fs = flatAlgorithmSequences( menu.getSequence('HLTAllSteps') )
     for seq, algs in six.iteritems (fs):
         for alg in algs:
-            if 'HypoTools' in alg.getProperties():
-                log.verbose("%s %s", alg.getName(), [ t.getFullName() for t in alg.HypoTools ])
+            if 'HypoTools' in alg._properties:
+                log.verbose("%s %s", alg.name, [ t.getFullJobOptName() for t in alg.HypoTools ])
 
     f = open('newJOMenu.pkl', 'wb')
     acc.store(f)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
index ade757ddfef7de1a6ee95abed975643f08a4295d..88748d06b00b453054adcff10fbfe3de7f37b8b0 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py
@@ -3,15 +3,15 @@
 from AthenaCommon.Logging import logging
 log = logging.getLogger( __name__ )
 
-from DecisionHandling.DecisionHandlingConf import RoRSeqFilter
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
-from AthenaCommon.CFElements import parOR, seqAND
-
+from AthenaCommon.CFElements import parOR, seqAND, compName, getProp
+from AthenaConfiguration.ComponentFactory import CompFactory
+RoRSeqFilter=CompFactory.RoRSeqFilter
 
 class Node(object):
     """base class representing one Alg + inputs + outputs, to be used to Draw dot diagrams and connect objects"""
     def __init__(self, Alg):
-        self.name = ("%sNode")%( Alg.name())
+        self.name = ("%sNode")%( Alg.name )
         self.Alg=Alg
         self.inputs=[]
         self.outputs=[]
@@ -29,7 +29,7 @@ class Node(object):
         return self.inputs
 
     def __repr__(self):
-        return "Node::%s  [%s] -> [%s]"%(self.Alg.name(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())))
+        return "Node::%s  [%s] -> [%s]"%(self.Alg.name, ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())))
 
 
 
@@ -42,10 +42,10 @@ class AlgNode(Node):
 
     def addDefaultOutput(self):
         if self.outputProp != '':
-            self.addOutput(("%s_%s"%(self.Alg.name(),self.outputProp)))
+            self.addOutput(("%s_%s"%(self.Alg.getName(),self.outputProp)))
 
     def setPar(self, prop, name):
-        cval = self.Alg.getProperties()[prop]
+        cval = getProp( self.Alg, prop)
         if type(cval) is list:
             cval.append(name)
             return setattr(self.Alg, prop, cval)
@@ -53,17 +53,14 @@ class AlgNode(Node):
             return setattr(self.Alg, prop, name)
 
     def resetPar(self, prop):
-        cval = self.Alg.getProperties()[prop]
+        cval = getProp(self.Alg, prop)
         if type(cval) is list:
             return setattr(self.Alg, prop, [])
         else:
             return setattr(self.Alg, prop, "")
 
     def getPar(self, prop):
-        if hasattr(self.Alg, prop):
-            return getattr(self.Alg, prop)
-        else:
-            return self.Alg.getDefaultProperty(prop)
+        return getProp(self.Alg, prop)
 
 
     def resetOutput(self):
@@ -119,7 +116,7 @@ class AlgNode(Node):
         return inputs
 
     def __repr__(self):
-        return "Alg::%s  [%s] -> [%s]"%(self.Alg.name(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())))
+        return "Alg::%s  [%s] -> [%s]"%(self.Alg.getName(), ' '.join(map(str, self.getInputList())), ' '.join(map(str, self.getOutputList())))
 
 
 def algColor(alg):
@@ -165,7 +162,7 @@ class HypoAlgNode(AlgNode):
     """Node for HypoAlgs"""
     initialOutput= 'StoreGateSvc+UNSPECIFIED_OUTPUT'
     def __init__(self, Alg):
-        assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg "  + Alg.name()
+        assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg "  + compName(Alg)
         AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions')
         self.tools = []
         self.previous=[]
@@ -183,7 +180,7 @@ class HypoAlgNode(AlgNode):
 
 
     def addHypoTool (self, hypoToolConf):
-        log.debug("   Adding HypoTool %s to %s", hypoToolConf.chainDict['chainName'], self.Alg.name())
+        log.debug("   Adding HypoTool %s to %s", hypoToolConf.chainDict['chainName'], compName(self.Alg))
         if hypoToolConf.chainDict['chainName'] not in self.tools:
             ## HypoTools are private, so need to be created when added to the Alg
             ## this incantation may seem strange, however it is the only one which works
@@ -205,7 +202,7 @@ class HypoAlgNode(AlgNode):
         self.resetInput()
 
     def __repr__(self):
-        return "HypoAlg::%s  [%s] -> [%s], previous = [%s], HypoTools=[%s]"%(self.Alg.name(),' '.join(map(str, self.getInputList())),
+        return "HypoAlg::%s  [%s] -> [%s], previous = [%s], HypoTools=[%s]"%(compName(self.Alg),' '.join(map(str, self.getInputList())),
                                                                                  ' '.join(map(str, self.getOutputList())),
                                                                                  ' '.join(map(str, self.previous)),
                                                                                  ' '.join(map(str, self.tools)))
@@ -223,7 +220,7 @@ class SequenceFilterNode(AlgNode):
         return self.getPar("Chains")
 
     def __repr__(self):
-        return "SequenceFilter::%s  [%s] -> [%s], chains=%s"%(self.Alg.name(),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains())
+        return "SequenceFilter::%s  [%s] -> [%s], chains=%s"%(compName(self.Alg),' '.join(map(str, self.getInputList())),' '.join(map(str, self.getOutputList())), self.getChains())
 
 
 class RoRSequenceFilterNode(SequenceFilterNode):
@@ -235,9 +232,9 @@ class RoRSequenceFilterNode(SequenceFilterNode):
 
 class InputMakerNode(AlgNode):
     def __init__(self, Alg):
-        assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg "  + Alg.name()
+        assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg "  + compName(Alg)
         AlgNode.__init__(self,  Alg, 'InputMakerInputDecisions', 'InputMakerOutputDecisions')
-        input_maker_output = CFNaming.inputMakerOutName(self.Alg.name(),"out")
+        input_maker_output = CFNaming.inputMakerOutName(compName(self.Alg),"out")
         self.addOutput(input_maker_output)
 
 
@@ -256,14 +253,14 @@ class ComboMaker(AlgNode):
 
     def addChain(self, chainDict):
         chainName = chainDict['chainName']
-        log.debug("ComboMaker %s adding chain %s", self.Alg.name(),chainName)
+        log.debug("ComboMaker %s adding chain %s", compName(self.Alg), chainName)
         allMultis = self.mult
         newdict = {chainName : allMultis}
 
         cval = self.Alg.getProperties()[self.prop]  # check necessary to see if chain was added already?
         if type(cval) is dict:
             if chainName in cval.keys():
-                log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.Alg.name(), chainName)
+                log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", compName(self.Alg), chainName)
             else:
                 cval[chainName]=allMultis
         else:
@@ -282,7 +279,7 @@ class ComboMaker(AlgNode):
         if not len(comboToolConfs):
             return
         confs = [ HypoToolConf( tool ) for tool in comboToolConfs ]
-        log.debug("ComboMaker.createComboHypoTools for chain %s, Alg %s with %d tools", chainDict["chainName"],self.Alg.name(), len(comboToolConfs))        
+        log.debug("ComboMaker.createComboHypoTools for chain %s, Alg %s with %d tools", chainDict["chainName"],self.Alg.getName(), len(comboToolConfs))        
         self.Alg.ComboHypoTools = [conf.confAndCreate( chainDict ) for conf in confs]
         
 
@@ -320,14 +317,13 @@ def isComboHypoAlg(alg):
 ##########################################################
 # Now sequences and chains
 ##########################################################
-from DecisionHandling.DecisionHandlingConf import InputMakerForRoI
 
 class EmptyMenuSequence(object):
     """ Class to emulate reco sequences with no Hypo"""
     """ By construction it has no Hypo;"""
     
     def __init__(self, name):
-        Maker = InputMakerForRoI("IM"+name)
+        Maker = CompFactory.InputMakerForRoI("IM"+name)
         self._name = name
         self._maker       = InputMakerNode( Alg = Maker )
         self._seed=''
@@ -363,7 +359,7 @@ class EmptyMenuSequence(object):
         # menu sequence empty do not add to athena sequencer
         log.debug("This sequence is empty. Adding Maker node only to athena sequencer")
         ath_sequence = self.sequence.Alg
-        name = ath_sequence.name()
+        name = ath_sequence.getName()
         if name in already_connected:
             log.debug("AthSequencer %s already in the Tree, not added again",name)
             return stepReco, seqAndView, already_connected
@@ -394,7 +390,7 @@ class MenuSequence(object):
     """ By construction it has one Hypo Only; behaviour changed to support muFastOvlpRmSequence() which has two, but this will change"""
 
     def __init__(self, Sequence, Maker,  Hypo, HypoToolGen):
-        assert Maker.name().startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name())
+        assert compName(Maker).startswith("IM"), "The input maker {} name needs to start with letter: IM".format(compName(Maker))
         self._sequence     = Node( Alg=Sequence)
         self._maker       = InputMakerNode( Alg = Maker )
         self._seed=''
@@ -409,26 +405,26 @@ class MenuSequence(object):
         if isinstance(Hypo, list):
             self._hypo         = [ HypoAlgNode( Alg = alg ) for alg in Hypo ]
             self._hypoToolConf = [ HypoToolConf( tool ) for tool in HypoToolGen ]
-            self._name         = [ CFNaming.menuSequenceName(alg.name()) for alg in self._hypo ]
+            self._name         = [ CFNaming.menuSequenceName(compName(alg)) for alg in self._hypo ]
 
             hypo_input = input_maker_output
             for hypo_alg_node in self._hypo:
-                hypo_output = CFNaming.hypoAlgOutName(hypo_alg_node.Alg.name())
+                hypo_output = CFNaming.hypoAlgOutName(compName(hypo_alg_node.Alg))
                 hypo_alg_node.addOutput(  hypo_output )
                 hypo_alg_node.setPreviousDecision( hypo_input )
                 hypo_input = hypo_output
 
         else:
-            self._name = CFNaming.menuSequenceName(Hypo.name())
+            self._name = CFNaming.menuSequenceName(compName(Hypo))
             self._hypoToolConf = HypoToolConf( HypoToolGen )
             self._hypo = HypoAlgNode( Alg = Hypo )
-            hypo_output = CFNaming.hypoAlgOutName(Hypo.name())
+            hypo_output = CFNaming.hypoAlgOutName(compName(Hypo))
             self._hypo.addOutput(hypo_output)
             self._hypo.setPreviousDecision( input_maker_output)
 
         log.debug("MenuSequence.connect: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\
         InputMaker::%s.output=%s",\
-                        self.maker.Alg.name(), input_maker_output)
+                        compName(self.maker.Alg), input_maker_output)
 
         if type(self._hypo) is list:
             hypo_input_total = []
@@ -439,11 +435,11 @@ class MenuSequence(object):
             for hp, hp_in, hp_out in zip( self._hypo, hypo_input_total, hypo_output_total):
                 log.debug("HypoAlg::%s.previousDecision=%s, \n\
                 HypoAlg::%s.output=%s",\
-                          hp.Alg.name(), hp_in, hp.Alg.name(), hp_out)
+                          compName(hp.Alg), hp_in, compName(hp.Alg), hp_out)
         else:
            log.debug("HypoAlg::%s.previousDecision=%s, \n \
            HypoAlg::%s.output=%s",\
-                           self.hypo.Alg.name(), input_maker_output, self.hypo.Alg.name(), self.hypo.readOutputList()[0])
+                           compName(self.hypo.Alg), input_maker_output, compName(self.hypo.Alg), self.hypo.readOutputList()[0])
 
 
     @property
@@ -498,11 +494,11 @@ class MenuSequence(object):
             hypo_output_total=[]
             hypo_input = input_maker_output
             for hypo_alg, hptool in zip(Hypo, HypoToolGen):
-              self.name.append( CFNaming.menuSequenceName(hypo_alg.name()) )
+              self.name.append( CFNaming.menuSequenceName(compName(hypo_alg)) )
               self.hypoToolConf.append( HypoToolConf( hptool ) )
 
               hypo_input_total.append(hypo_input)
-              hypo_output = CFNaming.hypoAlgOutName(hypo_alg.name())
+              hypo_output = CFNaming.hypoAlgOutName(compName(hypo_alg))
               hypo_output_total.append(hypo_output)
 
               hypo_node = HypoAlgNode( Alg = hypo_alg )
@@ -513,26 +509,26 @@ class MenuSequence(object):
               hypo_input = hypo_output
             log.warning("Sequence %s has more than one Hypo; correct your sequence for next develpments", self.name)
         else:
-           self.name = CFNaming.menuSequenceName(Hypo.name())
+           self.name = CFNaming.menuSequenceName(compName(Hypo))
            self.hypoToolConf = HypoToolConf( HypoToolGen )
            self._hypo = HypoAlgNode( Alg = Hypo )
-           hypo_output = CFNaming.hypoAlgOutName(Hypo.name())
+           hypo_output = CFNaming.hypoAlgOutName(compName(Hypo))
            self._hypo.addOutput(hypo_output)
            self._hypo.setPreviousDecision( input_maker_output)
 
 
         log.debug("MenuSequence.connect: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\
         InputMaker::%s.output=%s",\
-                        self._maker.Alg.name(), input_maker_output)
+                        compName(self._maker.Alg), input_maker_output)
         if type(self._hypo) is list:
            for hp, hp_in, hp_out in zip( self._hypo, hypo_input_total, hypo_output_total):
               log.debug("HypoAlg::%s.previousDecision=%s, \n\
                          HypoAlg::%s.output=%s",\
-                              hp.Alg.name(), hp_in, hp.Alg.name(), hp_out)
+                              compName(hp.Alg), hp_in, compName(hp.Alg), hp_out)
         else:
            log.debug("HypoAlg::%s.previousDecision=%s, \n\
                       HypoAlg::%s.output=%s",\
-                           self._hypo.Alg.name(), input_maker_output, self._hypo.Alg.name(), self._hypo.readOutputList()[0])
+                           compName(self._hypo.Alg), input_maker_output, compName(self._hypo.Alg), self._hypo.readOutputList()[0])
 
 
     def createHypoTools(self, chainDict):
@@ -548,7 +544,7 @@ class MenuSequence(object):
 
     def addToSequencer(self, stepReco, seqAndView, already_connected):
         ath_sequence = self.sequence.Alg
-        name = ath_sequence.name()
+        name = ath_sequence.getName()
         if name in already_connected:
             log.debug("AthSequencer %s already in the Tree, not added again",name)
             return stepReco, seqAndView, already_connected        
@@ -567,17 +563,17 @@ class MenuSequence(object):
         cfseq_algs.append(self._maker)
         cfseq_algs.append(self.sequence )
 
-        file.write("    %s[fillcolor=%s]\n"%(self._maker.Alg.name(), algColor(self._maker.Alg)))
-        file.write("    %s[fillcolor=%s]\n"%(self.sequence.Alg.name(), algColor(self.sequence.Alg)))
+        file.write("    %s[fillcolor=%s]\n"%(self._maker.Alg.getName(), algColor(self._maker.Alg)))
+        file.write("    %s[fillcolor=%s]\n"%(self.sequence.Alg.getName(), algColor(self.sequence.Alg)))
         
         if type(self._hypo) is list:
             for hp in self._hypo:
                 cfseq_algs.append(hp)
-                file.write("    %s[color=%s]\n"%(hp.Alg.name(), algColor(hp.Alg)))
+                file.write("    %s[color=%s]\n"%(hp.Alg.getName(), algColor(hp.Alg)))
                 all_hypos.append(hp)
         else:
             cfseq_algs.append(self._hypo)
-            file.write("    %s[color=%s]\n"%(self._hypo.Alg.name(), algColor(self._hypo.Alg)))
+            file.write("    %s[color=%s]\n"%(self._hypo.Alg.getName(), algColor(self._hypo.Alg)))
             all_hypos.append(self._hypo)
             if not isCombo:
                 if type(self._hypo) is list:
@@ -602,15 +598,15 @@ class MenuSequence(object):
            hyponame=[]
            hypotool=[]
            for hp, hptool in zip(self._hypo, self._hypoToolConf):
-              hyponame.append( hp.Alg.name() )
+              hyponame.append( hp.Alg.getName() )
               hypotool.append( hptool.name )
            return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s"\
-           %(self.name, hyponame, self._maker.Alg.name(), self.sequence.Alg.name(), hypotool)
+           %(self.name, hyponame, self._maker.Alg.getName(), self.sequence.Alg.getName(), hypotool)
         else:
-           hyponame = self._hypo.Alg.name()
+           hyponame = self._hypo.Alg.getName()
            hypotool = self._hypoToolConf.name
            return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s\n"\
-           %(self.name, hyponame, self._maker.Alg.name(), self.sequence.Alg.name(), hypotool)
+           %(self.name, hyponame, self._maker.Alg.getName(), self.sequence.Alg.getName(), hypotool)
 
 
 class CAMenuSequence(MenuSequence):
@@ -622,19 +618,19 @@ class CAMenuSequence(MenuSequence):
 
     @property
     def sequence(self):
-        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
+        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name)
         self._maker.Alg = makerAlg
         return self._sequence
 
     @property
     def maker(self):
-        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name())
+        makerAlg = self.ca.getEventAlgo(self._maker.Alg.name)
         self._maker.Alg = makerAlg
         return self._maker
 
     @property
     def hypo(self):
-        hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name())
+        hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name)
         self._hypo.Alg = hypoAlg
         return self._hypo
 
@@ -791,7 +787,8 @@ class CFSequence(object):
         if a ChainStep contains the same sequence multiple times (for multi-object chains),
         the filter is connected only once (to avoid multiple DH links)
         """
-        log.debug("CFSequence: connect Filter %s with %d menuSequences of step %s, using %d connections", self.filter.Alg.name(), len(self.step.sequences), self.step.name, len(connections))
+        #log.info("CFSequence: sequences %s", " ".join([ str(type(s)) for s in self.step.sequences ]))
+        log.debug("CFSequence: connect Filter %s with %d menuSequences of step %s, using %d connections", compName(self.filter.Alg), len(self.step.sequences), self.step.name, len(connections))
         if len(connections) == 0:
             log.error("ERROR, no filter outputs are set!")
             #raise("CFSequence: Invalid Filter Configuration")
@@ -804,7 +801,7 @@ class CFSequence(object):
             nseq=0
             for seq in self.step.sequences:
                 filter_out = connections[nseq]
-                log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s (from seed %s)", filter_out, seq.name, self.filter.Alg.name(), seq.seed)
+                log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s (from seed %s)", filter_out, seq.name, compName(self.filter.Alg), seq.seed)
                 seq.connectToFilter( filter_out )
                 nseq+=1
         else:
@@ -819,16 +816,16 @@ class CFSequence(object):
             else:
                combo_input=seq.getOutputList()[0]
             self.step.combo.addInput(combo_input)
-            log.debug("CFSequence.connectCombo: adding input to  %s: %s",  self.step.combo.Alg.name(), combo_input)
+            log.debug("CFSequence.connectCombo: adding input to  %s: %s",  self.step.combo.Alg.getName(), combo_input)
             # inputs are the output decisions of the hypos of the sequences
-            combo_output=CFNaming.comboHypoOutputName (self.step.combo.Alg.name(), combo_input)
+            combo_output=CFNaming.comboHypoOutputName (self.step.combo.Alg.getName(), combo_input)
             self.step.combo.addOutput(combo_output)
-            log.debug("CFSequence.connectCombo: adding output to  %s: %s",  self.step.combo.Alg.name(), combo_output)
+            log.debug("CFSequence.connectCombo: adding output to  %s: %s",  self.step.combo.Alg.getName(), combo_output)
 
 
     def __repr__(self):
         return "--- CFSequence ---\n + Filter: %s \n + decisions: %s\n +  %s \n"%(\
-                    self.filter.Alg.name(), self.decisions, self.step)
+                    self.filter.Alg.getName(), self.decisions, self.step)
 
 
 
@@ -892,7 +889,6 @@ class InEventReco( ComponentAccumulator ):
     def __init__(self, name, inputMaker=None):
         super( InEventReco, self ).__init__()
         self.name = name
-        from AthenaCommon.CFElements import parOR, seqAND
         self.mainSeq = seqAND( name )
         self.addSequence( self.mainSeq )
 
@@ -900,9 +896,9 @@ class InEventReco( ComponentAccumulator ):
         self.inputMakerAlg = inputMaker
 
         # Avoid registering a duplicate
-        self.addEventAlgo( self.inputMakerAlg, self.mainSeq.name() )
-        self.recoSeq = parOR( "InputSeq_"+self.inputMakerAlg.name())
-        self.addSequence( self.recoSeq, self.mainSeq.name() )
+        self.addEventAlgo( self.inputMakerAlg, self.mainSeq.name )
+        self.recoSeq = parOR( "InputSeq_"+self.inputMakerAlg.name )
+        self.addSequence( self.recoSeq, self.mainSeq.name )
     pass
 
     def mergeReco( self, ca ):
@@ -912,10 +908,10 @@ class InEventReco( ComponentAccumulator ):
     def addRecoAlg( self, alg ):
         """Reconstruction alg to be run per event"""
         log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" )
-        self.addEventAlgo( alg, self.recoSeq.name() )
+        self.addEventAlgo( alg, self.recoSeq.name )
 
     def addHypoAlg(self, alg):
-        self.addEventAlgo( alg, self.mainSeq.name() )
+        self.addEventAlgo( alg, self.mainSeq.name )
 
     def sequence( self ):
         return self.mainSeq
@@ -930,15 +926,15 @@ class InViewReco( ComponentAccumulator ):
     def __init__(self, name, viewMaker=None):
         super( InViewReco, self ).__init__()
         self.name = name
-        from AthenaCommon.CFElements import parOR, seqAND
         self.mainSeq = seqAND( name )
         self.addSequence( self.mainSeq )
 
-        from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm, ViewCreatorInitialROITool
+        ViewCreatorInitialROITool=CompFactory.ViewCreatorInitialROITool
+
         if viewMaker:
             self.viewMakerAlg = viewMaker
         else:
-            self.viewMakerAlg = EventViewCreatorAlgorithm("IM"+name,
+            self.viewMakerAlg = CompFactory.EventViewCreatorAlgorithm("IM"+name,
                                                           ViewFallThrough = True,
                                                           RoIsLink        = 'initialRoI',
                                                           RoITool         = ViewCreatorInitialROITool(),
@@ -946,9 +942,9 @@ class InViewReco( ComponentAccumulator ):
                                                           Views           = name+'Views',
                                                           ViewNodeName    = name+"InView")
 
-        self.addEventAlgo( self.viewMakerAlg, self.mainSeq.name() )
+        self.addEventAlgo( self.viewMakerAlg, self.mainSeq.name )
         self.viewsSeq = parOR( self.viewMakerAlg.ViewNodeName )
-        self.addSequence( self.viewsSeq, self.mainSeq.name() )
+        self.addSequence( self.viewsSeq, self.mainSeq.name )
 
     def addInputFromFilter(self, filterAlg ):
         assert len(filterAlg.Output) == 1, "Can only oprate on filter algs with one configured output, use addInput to setup specific inputs"
@@ -966,10 +962,10 @@ class InViewReco( ComponentAccumulator ):
     def addRecoAlg( self, alg ):
         """Reconstruction alg to be run per view"""
         log.warning( "InViewReco.addRecoAlgo: consider using mergeReco that takes care of the CA accumulation and moving algorithms" )
-        self.addEventAlgo( alg, self.viewsSeq.name() )
+        self.addEventAlgo( alg, self.viewsSeq.name )
 
     def addHypoAlg(self, alg):
-        self.addEventAlgo( alg, self.mainSeq.name() )
+        self.addEventAlgo( alg, self.mainSeq.name )
 
     def sequence( self ):
         return self.mainSeq
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
index 5435538f229a264370c16c726adf7906e0b47418..877fe48a781efd87a78a432895b69744b8630236 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py
@@ -8,8 +8,10 @@ from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict
 
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainDict
 
+from AthenaConfiguration.ComponentFactory import CompFactory
+
 def fakeHypoAlgCfg(flags, name="FakeHypoForMuon"):
-    from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoAlg
+    HLTTest__TestHypoAlg=CompFactory.HLTTest.TestHypoAlg
     return HLTTest__TestHypoAlg( name, Input="" )
 
 def generateChains( flags, chainDict ):
@@ -71,7 +73,7 @@ def generateChains( flags, chainDict ):
     accMS.merge(recoMS, sequenceName=stepEFMSReco.getName())
 
     # TODO remove once full step is in place
-    from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestHypoTool
+    HLTTest__TestHypoTool=CompFactory.HLTTest.TestHypoTool
     fakeHypoAlg = fakeHypoAlgCfg(muonflags, name='FakeHypoForMuon')
     def makeFakeHypoTool(chainDict, cfg=None):
         return HLTTest__TestHypoTool(chainDict['chainName'])
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
index 47e76e5db178c196771295cb1a32a7e3ed44de9e..29bd316dfd05fbbb6c8ff679ca253a151d9e4efd 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Photon/PhotonRecoSequences.py
@@ -76,9 +76,11 @@ def precisionPhotonRecoSequence(RoIs):
 
 def l2PhotonAlgCfg( flags ):
     acc = ComponentAccumulator()
-    from TrigEgammaHypo.TrigL2PhotonFexMTConfig import L2PhotonFex_1
+    #from TrigEgammaHypo.TrigL2PhotonFexMTConfig import L2PhotonFex_1
+    from AthenaConfiguration.ComponentFactory import CompFactory
 
-    photonFex= L2PhotonFex_1()
+    photonFex= CompFactory.TrigL2PhotonFexMT("L2PhotonFex_1")
+    #photonFex= L2PhotonFex_1()
     photonFex.TrigEMClusterName = recordable("HLT_L2CaloEMClusters")
     photonFex.PhotonsName = recordable("HLT_L2Photons")
     photonFex.RoIs = "L2PhotonRecoRoIs"
@@ -91,10 +93,11 @@ def l2PhotonRecoCfg( flags ):
     reco = InViewReco("L2PhotonReco")
     reco.inputMaker().RequireParentView = True
     reco.inputMaker().RoIsLink="initialRoI"
-    import AthenaCommon.CfgMgr as CfgMgr
 
-    moveClusters = CfgMgr.AthViews__ViewDataVerifier("photonViewDataVerifier")
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    moveClusters = CompFactory.getComp("AthViews::ViewDataVerifier")("photonViewDataVerifier")
     moveClusters.DataObjects = [ ('xAOD::TrigEMClusterContainer','StoreGateSvc+HLT_L2CaloEMClusters') ]
+
     reco.addRecoAlg( moveClusters )
 
     algAcc, alg = l2PhotonAlgCfg( flags )
@@ -104,9 +107,9 @@ def l2PhotonRecoCfg( flags ):
     return reco
 
 def l2PhotonHypoCfg( flags, Photons='Unspecified', RunInView=True):
-    from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2PhotonHypoAlgMT
+    from AthenaConfiguration.ComponentFactory import CompFactory
 
-    l2PhotonHypo = TrigL2PhotonHypoAlgMT()
+    l2PhotonHypo = CompFactory.TrigL2PhotonHypoAlgMT()
     l2PhotonHypo.Photons = Photons
     l2PhotonHypo.RunInView = RunInView