diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
new file mode 100644
index 0000000000000000000000000000000000000000..4abd2753b694bc80cf2a4f3abf0f69e1c10a1979
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+"""Overlay configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+
+def OverlayMessageSvcCfg(flags):
+    """MessageSvc for overlay"""
+    MessageSvc = CompFactory.MessageSvc
+    acc = ComponentAccumulator()
+    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
+    return acc
+
+
+def setupOverlayDetectorFlags(configFlags, detectors):
+    """Setup Overlay detector flags"""
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayBCM = True
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayDBM = True
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayPixel = True
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlaySCT = True
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayTRT = True
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayLAr = True
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayTile = True
+    if not detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayCSC = True
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMDT = True
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayRPC = True
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayTGC = True
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlaysTGC = True
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMM = True
+
+
+def accFromFragment(acc_string, flags):
+    """Return initialized accumulator from post include fragment."""
+    parts = acc_string.split('.')
+    if len(parts) < 3:
+        raise ValueError('Post include should be of the form Package.Module.Function')
+
+    function = parts[-1]
+    module = '.'.join(parts[:-1])
+
+    from importlib import import_module
+    loaded_module = import_module(module)
+    function_def = getattr(loaded_module, function)
+
+    return function_def(flags)
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
new file mode 100644
index 0000000000000000000000000000000000000000..d49cbdf69cf8160819f4dae74bd8bb67eda82453
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+"""Overlay legacy configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+
+def setupOverlayLegacyDetectorFlags(detectors):
+    """Setup Overlay legacy detector flags"""
+    from AthenaCommon.DetFlags import DetFlags
+    if not detectors:
+        DetFlags.all_setOn()
+        DetFlags.bpipe_setOff()
+        DetFlags.FTK_setOff()
+        return DetFlags
+
+    # Truth is always on
+    DetFlags.Truth_setOn()
+
+    # Other subdetectors
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        DetFlags.BCM_setOn()
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        DetFlags.DBM_setOn()
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        DetFlags.pixel_setOn()
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        DetFlags.SCT_setOn()
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        DetFlags.TRT_setOn()
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.LAr_setOn()
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.Tile_setOn()
+    if not detectors or 'L1Calo' in detectors:
+        DetFlags.LVL1_setOn()
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        DetFlags.CSC_setOn()
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        DetFlags.MDT_setOn()
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        DetFlags.RPC_setOn()
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        DetFlags.TGC_setOn()
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        DetFlags.sTGC_setOn()
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        DetFlags.Micromegas_setOn()
+
+    return DetFlags
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
new file mode 100644
index 0000000000000000000000000000000000000000..6f9ab978101427544a379c302555435ec9d27409
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
@@ -0,0 +1,125 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+import sys
+
+from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags, OverlayMessageSvcCfg
+
+
+def defaultOverlayFlags(configFlags, detectors):
+    """Fill default overlay flags"""
+    # TODO: how to autoconfigure those
+    configFlags.GeoModel.Align.Dynamic = False
+    configFlags.Digitization.DoCaloNoise = False
+    configFlags.Digitization.DoInnerDetectorNoise = False
+    configFlags.Digitization.DoDigiTruth = False
+    configFlags.LAr.OFCShapeFolder = "4samples1phase"
+    configFlags.LAr.ROD.DoOFCPileupOptimization = True
+    configFlags.LAr.ROD.nSamples = 4
+    configFlags.LAr.ROD.NumberOfCollisions = 20
+    configFlags.LAr.ROD.UseHighestGainAutoCorr = True
+    configFlags.Tile.BestPhaseFromCOOL = False
+    configFlags.Tile.correctTime = False
+    configFlags.Tile.zeroAmplitudeWithoutDigits = False
+
+    setupOverlayDetectorFlags(configFlags, detectors)
+
+
+def fromRunArgs(runArgs):
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = True
+
+    from AthenaCommon.Logging import logging
+    logOverlay = logging.getLogger('Overlay')
+    logOverlay.info('****************** STARTING OVERLAY *****************')
+
+    logOverlay.info('**** Transformation run arguments')
+    logOverlay.info(str(runArgs))
+
+    logOverlay.info('**** Setting-up configuration flags')
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    commonRunArgsToFlags(runArgs, ConfigFlags)
+
+    hasRDO_BKGInput = hasattr(runArgs, 'inputRDO_BKGFile')
+    hasBS_SKIMInput = hasattr(runArgs, 'inputBS_SKIMFile')
+
+    if not hasattr(runArgs, 'inputHITSFile'):
+        raise RuntimeError('No input HITS file defined')
+
+    if hasRDO_BKGInput and hasBS_SKIMInput:
+        raise RuntimeError('Both RDO_BKG and BS_SKIM are defined')
+    if not hasRDO_BKGInput and not hasBS_SKIMInput:
+        raise RuntimeError('Define one of RDO_BKG and BS_SKIM file types')
+
+    if hasRDO_BKGInput:
+        logOverlay.info('Running MC+MC overlay')
+        ConfigFlags.Overlay.DataOverlay = False
+        ConfigFlags.Input.isMC = True
+        ConfigFlags.Input.Files = runArgs.inputRDO_BKGFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputHITSFile
+    else:
+        logOverlay.info('Running MC+data overlay')
+        ConfigFlags.Overlay.DataOverlay = True
+        ConfigFlags.Input.isMC = False
+        ConfigFlags.Input.Files = runArgs.inputHITSFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputBS_SKIMFile
+
+    if hasattr(runArgs, 'outputRDOFile'):
+        if runArgs.outputRDOFile == 'None':
+            ConfigFlags.Output.RDOFileName = ''
+        else:
+            ConfigFlags.Output.RDOFileName = runArgs.outputRDOFile
+    else:
+        raise RuntimeError('No output RDO file defined')
+
+    if hasattr(runArgs, 'outputRDO_SGNLFile'):
+        ConfigFlags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
+
+    # Autoconfigure enabled subdetectors
+    if hasattr(runArgs, 'detectors'):
+        detectors = runArgs.detectors
+    else:
+        detectors = None
+
+    # Setup digitization flags
+    from Digitization.DigitizationConfigFlags import digitizationRunArgsToFlags
+    digitizationRunArgsToFlags(runArgs, ConfigFlags)
+
+    # Setup common overlay flags
+    defaultOverlayFlags(ConfigFlags, detectors)
+
+    # Pre-exec
+    if hasattr(runArgs, 'preExec') and runArgs.preExec != 'NONE' and runArgs.preExec:
+        for cmd in runArgs.preExec:
+            exec(cmd)
+
+    # Pre-include
+    if hasattr(runArgs, 'preInclude') and runArgs.preInclude:
+        raise ValueError('preInclude not supported')
+
+    # TODO not parsed yet:
+    # '--fSampltag'
+    # '--triggerConfig'
+
+    # Lock flags
+    ConfigFlags.lock()
+
+    # Main overlay steering
+    from OverlayConfiguration.OverlaySteering import OverlayMainCfg
+    acc = OverlayMainCfg(ConfigFlags)
+    acc.merge(OverlayMessageSvcCfg(ConfigFlags))
+
+    # Post-include
+    if hasattr(runArgs, 'postInclude') and runArgs.postInclude:
+        from OverlayConfiguration.OverlayHelpers import accFromFragment
+        for fragment in runArgs.postInclude:
+            acc.merge(accFromFragment(fragment, ConfigFlags))
+
+    # Post-exec
+    if hasattr(runArgs, 'postExec') and runArgs.postExec != 'NONE' and runArgs.postExec:
+        for cmd in runArgs.postExec:
+            exec(cmd)
+
+    # Run the final accumulator
+    sc = acc.run()
+    sys.exit(not sc.isSuccess())
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
index 73bc0dff6b12920d0d472cc3197a9bdd8038b124..9c7db234860a37a1804c9a7fba374c21c3fdceae 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
@@ -8,6 +8,7 @@ from argparse import ArgumentParser
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags
 
 
 def JobOptsDumperCfg(flags):
@@ -18,14 +19,6 @@ def JobOptsDumperCfg(flags):
     return acc
 
 
-def TestMessageSvcCfg(flags):
-    """MessageSvc for overlay"""
-    MessageSvc = CompFactory.MessageSvc
-    acc = ComponentAccumulator()
-    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
-    return acc
-
-
 def CommonTestArgumentParser(prog):
     """Common overlay test argument parser"""
     parser = ArgumentParser(prog=prog)
@@ -46,38 +39,6 @@ def CommonTestArgumentParser(prog):
     return parser
 
 
-def setupOverlayTestDetectorFlags(configFlags, detectors):
-    """Setup Overlay detector flags"""
-    if not detectors or 'BCM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayBCM = True
-    if not detectors or 'DBM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayDBM = True
-    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayPixel = True
-    if not detectors or 'SCT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlaySCT = True
-    if not detectors or 'TRT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayTRT = True
-    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayLAr = True
-    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayTile = True
-    if not detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
-    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayCSC = True
-    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMDT = True
-    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayRPC = True
-    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayTGC = True
-    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlaysTGC = True
-    if not detectors or 'MM' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMM = True
-
-
 def defaultTestFlags(configFlags, args):
     """Fill default overlay flags for testing"""
     configFlags.GeoModel.Align.Dynamic = False
@@ -118,7 +79,7 @@ def defaultTestFlags(configFlags, args):
     if args.outputSig:
         configFlags.Output.RDO_SGNLFileName = args.outputSig
 
-    setupOverlayTestDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
+    setupOverlayDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
 
 
 def postprocessAndLockFlags(configFlags, args):
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
index a0cbaa1dd8b956ac2641c07a5409d3106f326141..f2634eaeb230eba93270599cdbf8260e6431ab2b 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
@@ -3,13 +3,17 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 
-from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argSubstep
+from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argString, argSubstep
 from PyJobTransforms.trfExe import athenaExecutor
 
 
 def addOverlayTrfArgs(parser):
     """Add common overlay command-line parser arguments."""
     parser.defineArgGroup('Overlay', 'Common Overlay Options')
+    parser.add_argument('--detectors',
+                        type=argFactory(argString),
+                        help='Detectors autoconfiguration string',
+                        group='Overlay')
     parser.add_argument('--outputRDO_SGNLFile', nargs='+',
                         type=argFactory(argRDOFile, io='output'),
                         help='The output RDO file of the MC signal alone',
@@ -52,6 +56,7 @@ def addOverlayArguments(parser):
 def addOverlaySubstep(executor_set, in_reco_chain=False):
     executor = athenaExecutor(name='Overlay',
                               skeletonFile='OverlayConfiguration/skeleton_LegacyOverlay.py',
+                              skeletonCA='OverlayConfiguration.OverlaySkeleton',
                               substep='overlay',
                               tryDropAndReload=False,
                               perfMonFile='ntuple.pmon.gz',
diff --git a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
index 6723fc838a045fdde52d251f15698767296ffb01..73db14e41a8541511e7ddd935866425f9fd17d98 100755
--- a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
+++ b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
@@ -19,7 +19,7 @@ msg.info('logging set in %s', sys.argv[0])
 
 
 # Prodsys hack...
-ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
+ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--detectors', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
                                '--ignorePatterns', '--imf', '--inputBS_SKIMFile', '--inputFileValidation', '--inputHITSFile', '--inputRDO_BKGFile', '--jobid', '--maxEvents', '--multiprocess', '--multithreaded', '--outputFileValidation', '--outputRDOFile', '--outputRDO_FILTFile', '--outputRDO_SGNLFile', '--parallelFileValidation', '--postExec', '--postInclude', '--preExec', '--preInclude', '--reportName', '--reportType', '--runNumber', '--samplingFractionDbTag', '--sharedWriter', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--steering', '--taskid', '--tcmalloc', '--triggerConfig', '--valgrind', '--valgrindDefaultOpts', '--valgrindExtraOpts']
 
 
diff --git a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
index 39a6f8798a1053050875b7c53efd0f3c54a354d9..63e701386fde33fdd259143f59aef15558d26407 100644
--- a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
+++ b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
@@ -46,8 +46,11 @@ if not hasRDO_BKGInput and not hasBS_SKIMInput:
 
 # Set overlay specifics
 globalflags.isOverlay.set_Value_and_Lock(True)
+# Force MT mode
+overlayFlags.isOverlayMT.set_Value_and_Lock(True)
 if hasRDO_BKGInput:
     logOverlay.info('Running MC+MC overlay')
+    overlayFlags.isDataOverlay.set_Value_and_Lock(False)
     globalflags.DataSource.set_Value_and_Lock('geant4')
 else:
     logOverlay.info('Running MC+data overlay')
@@ -59,10 +62,6 @@ else:
     from AthenaCommon.BeamFlags import jobproperties
     jobproperties.Beam.beamType.set_Value_and_Lock('collisions')
 
-overlayFlags.isDataOverlay.set_Value_and_Lock(False)
-# TODO: temporarily force MT
-overlayFlags.isOverlayMT.set_Value_and_Lock(True)
-
 # Common athena flags
 if hasattr(overlayArgs, 'skipEvents'):
     athenaCommonFlags.SkipEvents.set_Value_and_Lock(overlayArgs.skipEvents)
@@ -95,6 +94,10 @@ if hasattr(overlayArgs, 'geometryVersion'):
     globalflags.DetDescrVersion.set_Value_and_Lock(overlayArgs.geometryVersion)
 if hasattr(overlayArgs, 'conditionsTag'):
     globalflags.ConditionsTag.set_Value_and_Lock(overlayArgs.conditionsTag)
+if hasattr(overlayArgs, 'detectors'):
+    overlayDetectors = overlayArgs.detectors
+else:
+    overlayDetectors = None
 
 # Digitization flags
 if hasattr(overlayArgs, 'digiSeedOffset1'):
@@ -132,17 +135,13 @@ if 'DetFlags' in dir():
     logOverlay.warning(
         'DetFlags already defined! This means DetFlags should have been fully configured already..')
 else:
-    from AthenaCommon.DetFlags import DetFlags
-    DetFlags.all_setOn()
-    DetFlags.bpipe_setOff()
-    DetFlags.FTK_setOff()
+    from OverlayConfiguration.OverlayHelpersLegacy import setupOverlayLegacyDetectorFlags
+    DetFlags = setupOverlayLegacyDetectorFlags(overlayDetectors)
 
-    if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
-        DetFlags.LVL1_setOff()
-    else:
-        DetFlags.LVL1_setOn()
+if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
+    DetFlags.LVL1_setOff()
 
-    DetFlags.digitize.LVL1_setOff()
+DetFlags.digitize.LVL1_setOff()
 
 from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags
 if not MuonGeometryFlags.hasCSC():
diff --git a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
index a238ed6196ae245853029745a33043f45a1329ac..e166ed0bed144ea0d06ab78fd9407b98fd3a42fc 100755
--- a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
+++ b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
@@ -10,9 +10,10 @@ import sys
 from AthenaCommon.Configurable import Configurable
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
+from OverlayConfiguration.OverlayHelpers import OverlayMessageSvcCfg
 from OverlayConfiguration.OverlaySteering import OverlayMainCfg
 from OverlayConfiguration.OverlayTestHelpers import \
-    CommonTestArgumentParser, JobOptsDumperCfg, TestMessageSvcCfg, \
+    CommonTestArgumentParser, JobOptsDumperCfg, \
     defaultTestFlags, postprocessAndLockFlags, printAndRun
 
 # Set up logging and new style config
@@ -49,7 +50,7 @@ if args.profile:
     from PerfMonVTune.PerfMonVTuneConfig import VTuneProfilerServiceCfg
     acc.merge(VTuneProfilerServiceCfg(ConfigFlags))
 acc.merge(JobOptsDumperCfg(ConfigFlags))
-acc.merge(TestMessageSvcCfg(ConfigFlags))
+acc.merge(OverlayMessageSvcCfg(ConfigFlags))
 
 # dump pickle
 with open("ConfigOverlay.pkl", "wb") as f:
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
index c1d908125d5f34263a55f9b14360069f2ed7ee6c..b1480bdc49eb5da6da9eacc10dd5995992313b17 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -40,14 +40,26 @@ Overlay_tf.py \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
index 53e048a0258154c4ecd585e0366f51002232a570..8fa0c0abbb7086cfcd5405be1c5f0fcf5b91e27b 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors BCM \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.BCMOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors BCM \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.BCMOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py BCM -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors BCM \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
index 4523f071ca8b7c4a6a2779be7b4c8c226e63e139..6772d7efc6a58cce88bd6864003b981457ac7f5e 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors L1Calo \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:EventOverlayJobTransforms/preInclude.L1CaloOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors L1Calo \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:EventOverlayJobTransforms/preInclude.L1CaloOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py L1Calo -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors L1Calo \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
index 78047794dd903a1cee9ecaaefb17f6b35bff0950..b238fddc3d554ddb28de9abd8afbd99c6a49f497 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors LAr \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.LArOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors LAr \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.LArOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py LAr -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors LAr \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
index 7690e142d31afd85f9193f968cf91d82a2affa04..5f5ee538b521f78e7a64841e49940fd9e23b27bd 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Muon \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.MuonOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Muon \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.MuonOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Muon -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Muon \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
index 1a02f0bb8e5393c2e33a72c1ec406284d52f663d..50fa523c851510d1f14c6292b6f8815cbf367732 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Pixel \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.PixelOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Pixel \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.PixelOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Pixel -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Pixel \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
index 2bd7e73d2fee296bbde3677a6c1576538aef5f20..0f9faa41e4167e45e33ce96de171208b18dfe6b0 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors SCT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.SCTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors SCT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.SCTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py SCT -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors SCT \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
index 1d06f36adcde9a386e4f29477927628adb74a58c..22aeb9c17279d98dc3660ce36e9039bfd40db4a8 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors TRT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TRTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors TRT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TRTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py TRT -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors TRT \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
index e65aa301c9c236b63a6b7a4254442f13d93abeb9..67a83e5458d0decac72300207aee46f557291508 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Tile \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TileOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Tile \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TileOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Tile -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Tile \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
index 220f7eccf2490a7bc539570a493daf7439ab32c0..ca0198b67ee7cd38959f6f46131f36b1f8dcf3ce 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Truth \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Truth \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Truth -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Truth \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
index 771c1e3c28e769939aa61c30b53bc51f79a97489..0a4ea5eb980baced36e86e182178d36a43579180 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
@@ -12,9 +12,17 @@
 # art-output: *.pkl
 # art-output: *Config.txt
 
-set -o pipefail
-
-OverlayTest.py -n 10 -t 0 2>&1 | tee log.OverlayTest
+Overlay_tf.py \
+--CA \
+--inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+--inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+--outputRDOFile mcOverlayRDO.pool.root \
+--maxEvents 10 \
+--conditionsTag OFLCOND-MC16-SDR-20 \
+--geometryVersion ATLAS-R2-2016-01-00-01 \
+--postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+--postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+--imf False
 
 rc=$?
 echo "art-result: $rc overlay"
diff --git a/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh b/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
index bdfc98b342b9c9aa1343a8f0cd5ebec4e7ad7581..4f690fbb616d971e5896bdb42ad7892ee7169b9c 100755
--- a/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
+++ b/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
@@ -13,9 +13,20 @@
 # art-output: *.pkl
 # art-output: *Config.txt
 
-set -o pipefail
+export ATHENA_CORE_NUMBER=8
 
-OverlayTest.py -n 100 -t 8 2>&1 | tee log.OverlayTest
+Overlay_tf.py \
+--CA \
+--multithreaded \
+--inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+--inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+--outputRDOFile MC_plus_MC.RDO.pool.root \
+--maxEvents 50 --skipEvents 10 --digiSeedOffset1 511 --digiSeedOffset2 727 \
+--conditionsTag OFLCOND-MC16-SDR-20 \
+--geometryVersion ATLAS-R2-2016-01-00-01 \
+--postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+--postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+--imf False
 
 rc=$?
 echo "art-result: $rc overlay"