diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
index 8e2d20d8e646a25290ed983de769ff19a3ce6e83..36e9a2bee5920dc127b2e2c64f6aba53c6773867 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
@@ -1,6 +1,6 @@
 """Define methods to configure ReadCalibChipDataTool
 
-Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -21,9 +21,21 @@ def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs):
     acc = ComponentAccumulator()
     # folders
     noiseFolder = kwargs.get("noiseFolder", "/SCT/DAQ/Calibration/ChipNoise")
-    acc.merge(addFoldersSplitOnline(flags, "SCT", noiseFolder, noiseFolder, "CondAttrListCollection"))
     gainFolder = kwargs.get("gainFolder", "/SCT/DAQ/Calibration/ChipGain")
-    acc.merge(addFoldersSplitOnline(flags, "SCT", gainFolder, gainFolder, "CondAttrListCollection"))
+    if flags.Overlay.DataOverlay:
+        forceDb="OFLP200"
+        noiseTag="SctDaqCalibrationChipNoise-Apr10-01"
+        gainTag="SctDaqCalibrationChipGain-Apr10-01"
+    else:
+        forceDb=None
+        noiseTag=None
+        gainTag=None
+
+    acc.merge(addFoldersSplitOnline(flags, "SCT", noiseFolder, noiseFolder, "CondAttrListCollection",
+                                    forceDb=forceDb, tag=noiseTag))
+    acc.merge(addFoldersSplitOnline(flags, "SCT", gainFolder, gainFolder, "CondAttrListCollection",
+                                    forceDb=forceDb, tag=gainTag))
+
     # Algorithms
     noiseAlg = SCT_ReadCalibChipNoiseCondAlg(name=name + "NoiseCondAlg", ReadKey=noiseFolder)
     acc.addCondAlgo(noiseAlg)
@@ -32,4 +44,3 @@ def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs):
     tool = kwargs.get("ReadCalibChipDataTool", SCT_ReadCalibChipDataToolCfg(flags))
     acc.setPrivateTools(tool)
     return acc
-
diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
index 3c07578f44e4bf0fe2242b9fd0629ff4747c57d0..9fca89128a01d8b699d669a36c46df925711ee99 100644
--- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
+++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
@@ -92,8 +92,8 @@ def SCT_OverlayDigitizationToolCfg(flags, name="SCT_OverlayDigitizationTool",**k
     """Return ComponentAccumulator with overlay configured SCT digitization tool"""
     acc = ComponentAccumulator()
     kwargs.setdefault("OnlyUseContainerName", False)
-    kwargs.setdefault("OutputObjectName", "StoreGateSvc+" + flags.Overlay.SigPrefix + "SCT_RDOs")
-    kwargs.setdefault("OutputSDOName", "StoreGateSvc+" + flags.Overlay.SigPrefix + "SCT_SDO_Map")
+    kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "SCT_RDOs")
+    kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "SCT_SDO_Map")
     kwargs.setdefault("HardScatterSplittingMode", 0)
     tool = acc.popToolsAndMerge(SCT_DigitizationCommonCfg(flags, name, **kwargs))
     acc.setPrivateTools(tool)
@@ -186,10 +186,10 @@ def SCT_FrontEndCfg(flags, name="SCT_FrontEnd", **kwargs):
     else:
         kwargs.setdefault("NoiseOn", True)
         kwargs.setdefault("AnalogueNoiseOn", True)
-    # In overlay MC, only analogue noise is on. Noise hits are not added.
-    if flags.Detector.Overlay and flags.Input.isMC:
+    # In overlay MC, only analogue noise is on (off for data). Noise hits are not added.
+    if flags.Detector.Overlay:
         kwargs["NoiseOn"] = False
-        kwargs["AnalogueNoiseOn"] = True
+        kwargs["AnalogueNoiseOn"] = flags.Input.isMC
     # Use Calibration data from Conditions DB, still for testing purposes only
     kwargs.setdefault("UseCalibData", True)
     # Setup the ReadCalibChip folders and Svc
@@ -266,7 +266,11 @@ def SCT_OverlayDigitizationBasicCfg(flags, **kwargs):
     if "DigitizationTool" not in kwargs:
         tool = acc.popToolsAndMerge(SCT_OverlayDigitizationToolCfg(flags))
         kwargs["DigitizationTool"] = tool
-    acc.addEventAlgo(SCT_Digitization(**kwargs))
+
+    if flags.Concurrency.NumThreads > 0:
+        kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
+
+    acc.addEventAlgo(SCT_Digitization(name="SCT_OverlayDigitization", **kwargs))
     return acc
 
 
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py
index f0d7df6226a2aab6c73deccd977f1eb9b84bd8b5..abcafb562a09605b77aeb2c218c77fef00f81e31 100644
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py
@@ -1,13 +1,61 @@
 """Define methods to construct configured SCT overlay algorithms
 
-Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 
 
-def SCTOverlayAlgCfg(flags, name = "SCTOverlay", **kwargs):
+def SCTRawDataProviderAlgCfg(flags, name="SCTRawDataProvider", **kwargs):
+    """Return a ComponentAccumulator for SCT raw data provider"""
+    # Temporary until available in the central location
+    acc = ComponentAccumulator()
+
+    kwargs.setdefault("RDOKey", flags.Overlay.BkgPrefix + "SCT_RDOs")
+    kwargs.setdefault("LVL1IDKey", flags.Overlay.BkgPrefix + "SCT_LVL1ID")
+    kwargs.setdefault("BCIDKey", flags.Overlay.BkgPrefix + "SCT_BCID")
+
+    SCTRawDataProvider = CompFactory.SCTRawDataProvider
+    alg = SCTRawDataProvider(name, **kwargs)
+    acc.addEventAlgo(alg)
+
+    # load the SCTEventFlagWriter
+    SCT_ConfigurationConditionsTool = CompFactory.SCT_ConfigurationConditionsTool
+    acc.addPublicTool(SCT_ConfigurationConditionsTool())
+
+    channelFolder = "/SCT/DAQ/Config/Chip"
+    moduleFolder = "/SCT/DAQ/Config/Module"
+    murFolder = "/SCT/DAQ/Config/MUR"
+    SCT_ConfigurationCondAlg = CompFactory.SCT_ConfigurationCondAlg
+    acc.addCondAlgo(SCT_ConfigurationCondAlg(ReadKeyChannel = channelFolder,
+                                             ReadKeyModule = moduleFolder,
+                                             ReadKeyMur = murFolder))
+    from IOVDbSvc.IOVDbSvcConfig import addFolders
+    acc.merge(addFolders(flags, [channelFolder, moduleFolder, murFolder], "SCT", className="CondAttrListVec"))
+
+    SCTEventFlagWriter = CompFactory.SCTEventFlagWriter
+    alg = SCTEventFlagWriter()
+    acc.addEventAlgo(alg)
+
+    return acc
+
+
+def SCTDataOverlayExtraCfg(flags, **kwargs):
+    """Return a ComponentAccumulator with SCT data overlay specifics"""
+    acc = ComponentAccumulator()
+
+    # We need to convert BS to RDO for data overlay
+    acc.merge(SCTRawDataProviderAlgCfg(flags))
+
+    # Add SCT cabling conditions
+    from SCT_Cabling.SCT_CablingConfig import SCT_CablingCondAlgCfg
+    acc.merge(SCT_CablingCondAlgCfg(flags))
+
+    return acc
+
+
+def SCTOverlayAlgCfg(flags, name="SCTOverlay", **kwargs):
     """Return a ComponentAccumulator for SCTOverlay algorithm"""
     acc = ComponentAccumulator()
 
@@ -16,37 +64,38 @@ def SCTOverlayAlgCfg(flags, name = "SCTOverlay", **kwargs):
     kwargs.setdefault("OutputKey", "SCT_RDOs")
 
     # Do SCT overlay
-    SCTOverlay=CompFactory.SCTOverlay
+    SCTOverlay = CompFactory.SCTOverlay
     alg = SCTOverlay(name, **kwargs)
     acc.addEventAlgo(alg)
 
     # Setup output
     from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
-    acc.merge(OutputStreamCfg(flags, "RDO", ItemList = [
+    acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
         "SCT_RDO_Container#SCT_RDOs"
     ]))
 
     return acc
 
 
-def SCTTruthOverlayCfg(flags, name = "SCTSDOOverlay", **kwargs):
+def SCTTruthOverlayCfg(flags, name="SCTSDOOverlay", **kwargs):
     """Return a ComponentAccumulator for the SCT SDO overlay algorithm"""
     acc = ComponentAccumulator()
 
     # We do not need background SCT SDOs
     kwargs.setdefault("BkgInputKey", "")
 
-    kwargs.setdefault("SignalInputKey", flags.Overlay.BkgPrefix + "SCT_SDO_Map")
+    kwargs.setdefault("SignalInputKey",
+                      flags.Overlay.SigPrefix + "SCT_SDO_Map")
     kwargs.setdefault("OutputKey", "SCT_SDO_Map")
 
     # Do SCT truth overlay
-    InDetSDOOverlay=CompFactory.InDetSDOOverlay
+    InDetSDOOverlay = CompFactory.InDetSDOOverlay
     alg = InDetSDOOverlay(name, **kwargs)
     acc.addEventAlgo(alg)
 
     # Setup output
     from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
-    acc.merge(OutputStreamCfg(flags, "RDO", ItemList = [
+    acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
         "InDetSimDataCollection#SCT_SDO_Map"
     ]))
 
@@ -57,9 +106,13 @@ def SCTOverlayCfg(flags):
     """Configure and return a ComponentAccumulator for SCT overlay"""
     acc = ComponentAccumulator()
 
+    # Add data overlay specifics
+    if flags.Overlay.DataOverlay:
+        acc.merge(SCTDataOverlayExtraCfg(flags))
+
     # Add SCT overlay digitization algorithm
-    from SCT_Digitization.SCT_DigitizationConfigNew import SCT_OverlayDigitizationCfg
-    acc.merge(SCT_OverlayDigitizationCfg(flags))
+    from SCT_Digitization.SCT_DigitizationConfigNew import SCT_OverlayDigitizationBasicCfg
+    acc.merge(SCT_OverlayDigitizationBasicCfg(flags))
     # Add SCT overlay algorithm
     acc.merge(SCTOverlayAlgCfg(flags))
     # Add SCT truth overlay
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlayConfig_test.py b/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlayConfig_test.py
index f176a02dc17d6c3f486caea43225f3d60e60c6bc..7d00aa2871d344b4b4efbebe98212ce5e1fb9b2e 100755
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlayConfig_test.py
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlayConfig_test.py
@@ -8,12 +8,12 @@ import sys
 from AthenaCommon.Configurable import Configurable
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 from AthenaConfiguration.MainServicesConfig import MainServicesThreadedCfg
-from AthenaConfiguration.TestDefaults import defaultTestFiles
 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
 from InDetOverlay.SCTOverlayConfig import SCTOverlayCfg
 from OverlayConfiguration.OverlayTestHelpers import \
-    CommonTestArgumentParser, postprocessAndLockFlags, printAndRun
+    CommonTestArgumentParser, defaultTestFlags, postprocessAndLockFlags, printAndRun
 from OverlayCopyAlgs.OverlayCopyAlgsConfig import CopyMcEventCollectionCfg
+from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoOverlayCfg
 
 # Configure
 Configurable.configurableRun3Behavior = True
@@ -23,20 +23,15 @@ parser = CommonTestArgumentParser("SCTOverlayConfig_test.py")
 args = parser.parse_args()
 
 # Configure
-ConfigFlags.Input.Files = defaultTestFiles.RDO_BKG
-ConfigFlags.Input.SecondaryFiles = defaultTestFiles.HITS
-ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
-ConfigFlags.Overlay.DataOverlay = False
-ConfigFlags.Output.RDOFileName = "myRDO.pool.root"
-ConfigFlags.Output.RDO_SGNLFileName = "myRDO_SGNL.pool.root"
-
+defaultTestFlags(ConfigFlags, args)
 postprocessAndLockFlags(ConfigFlags, args)
 
 # Construct our accumulator to run
 acc = MainServicesThreadedCfg(ConfigFlags)
 acc.merge(PoolReadCfg(ConfigFlags))
 
-# Add truth overlay (needed downstream)
+# Add event and truth overlay (needed downstream)
+acc.merge(EventInfoOverlayCfg(ConfigFlags))
 acc.merge(CopyMcEventCollectionCfg(ConfigFlags))
 
 # Add SCT overlay
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py
index e015bc0ae68dbd1195aedf88712e3ac22bcaeac7..2fc9e28852cca5f612248543211e753a1292105c 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py
@@ -9,6 +9,7 @@ from AthenaConfiguration.MainServicesConfig import MainServicesThreadedCfg
 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
 from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
 
+from InDetOverlay.SCTOverlayConfig import SCTOverlayCfg
 from OverlayCopyAlgs.OverlayCopyAlgsConfig import \
     CopyCaloCalibrationHitContainersCfg, CopyJetTruthInfoCfg, CopyMcEventCollectionCfg, \
     CopyTimingsCfg, CopyTrackRecordCollectionsCfg
@@ -48,4 +49,8 @@ def OverlayMainCfg(configFlags):
     acc.merge(CopyCaloCalibrationHitContainersCfg(configFlags))
     acc.merge(CopyTrackRecordCollectionsCfg(configFlags))
 
+    # Inner detector
+    if configFlags.Detector.OverlaySCT:
+        acc.merge(SCTOverlayCfg(configFlags))
+
     return acc