diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/CMakeLists.txt b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/CMakeLists.txt
index f5e44340b7955fdb13c5cf7e84de7ea06a442360..03a58ba3920678d40adf998adb14c85c5fe2c611 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/CMakeLists.txt
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/CMakeLists.txt
@@ -100,12 +100,28 @@ atlas_add_test( TestTdaqEnabled
                 SCRIPT athena.py --threads=5 SCT_ConditionsAlgorithms/testTdaqEnabled.py
                 PROPERTIES TIMEOUT 600
                 ENVIRONMENT THREADS=5 )
+
+atlas_add_test( TestCalibChipReadNewConf
+                SCRIPT python -m SCT_ConditionsAlgorithms.SCT_ReadCalibChipDataTestAlgConfig
+                PROPERTIES TIMEOUT 600 )
+atlas_add_test( TestCalibReadNewConf
+                SCRIPT python -m SCT_ConditionsAlgorithms.SCT_ReadCalibDataTestAlgConfig
+                PROPERTIES TIMEOUT 600 )
+atlas_add_test( TestConfigNewConf
+                SCRIPT python -m SCT_ConditionsAlgorithms.SCT_ConfigurationConditionsTestAlgConfig
+                PROPERTIES TIMEOUT 600 )
 atlas_add_test( TestDCSConditionsNewConf
                 SCRIPT python -m SCT_ConditionsAlgorithms.SCT_DCSConditionsTestAlgConfig
                 PROPERTIES TIMEOUT 600 )
+atlas_add_test( TestMonReadNewConf
+                SCRIPT python -m SCT_ConditionsAlgorithms.SCT_MonitorConditionsTestAlgConfig
+                PROPERTIES TIMEOUT 600 )
 atlas_add_test( TestSummaryNewConf
                 SCRIPT python -m SCT_ConditionsAlgorithms.SCT_ConditionsSummaryTestAlgConfig
                 PROPERTIES TIMEOUT 600 )
+atlas_add_test( TestTdaqEnabledNewConf
+                SCRIPT python -m SCT_ConditionsAlgorithms.SCT_TdaqEnabledTestAlgConfig
+                PROPERTIES TIMEOUT 600 )
 
 # Install files from the package:
 atlas_install_joboptions( share/*.py )
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConditionsSummaryTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConditionsSummaryTestAlgConfig.py
index 26a559c668a85e7ecd2a943d2d89502d0128b972..43759f21f9e81810d5d2da555fe249aaaea85594 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConditionsSummaryTestAlgConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConditionsSummaryTestAlgConfig.py
@@ -28,16 +28,13 @@ if __name__=="__main__":
     ConfigFlags.Input.RunNumber = [310809]
     ConfigFlags.addFlag("Input.InitialTimeStamp", 1476741326) # LB 18 of run 310809, 10/17/2016 @ 9:55pm (UTC)
     ConfigFlags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2017-06"
-    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2015-03-01-00"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01"
     ConfigFlags.Detector.GeometrySCT = True
     ConfigFlags.lock()
 
     from AthenaConfiguration.MainServicesConfig import MainServicesCfg
     cfg = MainServicesCfg(ConfigFlags)
 
-    from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
-    cfg.merge(SCT_GeometryCfg(ConfigFlags))
-    
     from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
     cfg.merge(McEventSelectorCfg(ConfigFlags))
 
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConfigurationConditionsTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConfigurationConditionsTestAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..c30082d708d4bb3af9e595b9440938367d3851fa
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ConfigurationConditionsTestAlgConfig.py
@@ -0,0 +1,44 @@
+"""Define method to configure and test SCT_ConfigurationConditionsTestAlg
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_ConfigurationConditionsTestAlgCfg(flags, name="SCT_ConfigurationConditionsTestAlg", **kwargs):
+    """Return a configured SCT_ConfigurationConditionsTestAlg"""
+    acc = ComponentAccumulator()
+    from InDetConfig.InDetRecToolConfig import SCT_ConfigurationConditionsToolCfg
+    kwargs.setdefault("SCT_ConfigurationConditionsTool", acc.popToolsAndMerge(SCT_ConfigurationConditionsToolCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_ConfigurationConditionsTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = True
+    ConfigFlags.Input.ProjectName = "mc16_13TeV"
+    ConfigFlags.Input.RunNumber = 310000 # MC16e 2018 run number
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1550000000) # MC16e 2018 time stamp
+    ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-RUN2-01"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    algkwargs = {}
+    algkwargs["OutputLevel"] = INFO
+    cfg.merge(SCT_ConfigurationConditionsTestAlgCfg(ConfigFlags, **algkwargs))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_MonitorConditionsTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_MonitorConditionsTestAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..34f58e30f9bf3df63934677c2afe61e3efdb3796
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_MonitorConditionsTestAlgConfig.py
@@ -0,0 +1,44 @@
+"""Define method to configure and test SCT_MonitorConditionsTestAlg
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_MonitorConditionsTestAlgCfg(flags, name="SCT_MonitorConditionsTestAlg", **kwargs):
+    """Return a configured SCT_MonitorConditionsTestAlg"""
+    acc = ComponentAccumulator()
+    from InDetConfig.InDetRecToolConfig import SCT_MonitorConditionsToolCfg
+    kwargs.setdefault("SCT_MonitorConditionsTool", acc.popToolsAndMerge(SCT_MonitorConditionsToolCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_MonitorConditionsTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = True
+    ConfigFlags.Input.ProjectName = "mc16_13TeV"
+    ConfigFlags.Input.RunNumber = 310000 # MC16e 2018 run number
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1550000000) # MC16e 2018 time stamp
+    ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-RUN2-01"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    algkwargs = {}
+    algkwargs["OutputLevel"] = INFO
+    cfg.merge(SCT_MonitorConditionsTestAlgCfg(ConfigFlags, **algkwargs))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibChipDataTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibChipDataTestAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..bfbf482eee3849a13c9b947db0610dbd097d2c53
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibChipDataTestAlgConfig.py
@@ -0,0 +1,48 @@
+"""Define method to configure and test SCT_ReadCalibChipDataTestAlg
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_ReadCalibChipDataTestAlgCfg(flags, name="SCT_ReadCalibChipDataTestAlg", **kwargs):
+    """Return a configured SCT_ReadCalibChipDataTestAlg"""
+    acc = ComponentAccumulator()
+    from SCT_ConditionsTools.SCT_ReadCalibChipDataConfig import SCT_ReadCalibChipDataCfg
+    kwargs.setdefault("SCT_ReadCalibChipDataTool", acc.popToolsAndMerge(SCT_ReadCalibChipDataCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_ReadCalibChipDataTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = True
+    ConfigFlags.Input.ProjectName = "mc16_13TeV"
+    ConfigFlags.Input.RunNumber = 300000 # MC16c 2017 run number
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1500000000) # MC16c 2017 time stamp
+    ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-18"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2015-03-01-00"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    algkwargs = {}
+    ## Modules to test:
+    algkwargs["ModuleOfflinePosition"] = [-2, 0, 1, 11, 0, 706] #(EC/B, Disk/Layer, eta, phi, side, strip)
+    algkwargs["DoTestmyConditionsSummary"] = True
+    algkwargs["DoTestmyDataSummary"] = True
+    algkwargs["OutputLevel"] = INFO
+    cfg.merge(SCT_ReadCalibChipDataTestAlgCfg(ConfigFlags, **algkwargs))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibDataTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibDataTestAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..34499dcda73c4817a0df9795ceaba677d6f5c8d7
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_ReadCalibDataTestAlgConfig.py
@@ -0,0 +1,48 @@
+"""Define method to configure and test SCT_ReadCalibDataTestAlg
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_ReadCalibDataTestAlgCfg(flags, name="SCT_ReadCalibDataTestAlg", **kwargs):
+    """Return a configured SCT_ReadCalibDataTestAlg"""
+    acc = ComponentAccumulator()
+    from InDetConfig.InDetRecToolConfig import SCT_ReadCalibDataToolCfg
+    kwargs.setdefault("SCT_ReadCalibDataTool", acc.popToolsAndMerge(SCT_ReadCalibDataToolCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_ReadCalibDataTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = True
+    ConfigFlags.Input.ProjectName = "mc16_13TeV"
+    ConfigFlags.Input.RunNumber = 300000 # MC16c 2017 run number
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1500000000) # MC16c 2017 time stamp
+    ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-18"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2015-03-01-00"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    algkwargs = {}
+    ## Modules to test:
+    algkwargs["ModuleOfflinePosition"] = [2, 1, 2, 12, 1, 464] #(EC/B, Disk/Layer, eta, phi, side, strip)
+    algkwargs["DoTestmyConditionsSummary"] = True
+    algkwargs["DoTestmyDefectIsGood"] = True
+    algkwargs["OutputLevel"] = INFO
+    cfg.merge(SCT_ReadCalibDataTestAlgCfg(ConfigFlags, **algkwargs))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_TdaqEnabledTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_TdaqEnabledTestAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..138b92e5e6c466f44e11db36a7cde2d757ec7cd7
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_TdaqEnabledTestAlgConfig.py
@@ -0,0 +1,44 @@
+"""Define method to configure and test SCT_TdaqEnabledTestAlg
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_TdaqEnabledTestAlgCfg(flags, name="SCT_TdaqEnabledTestAlg", **kwargs):
+    """Return a configured SCT_TdaqEnabledTestAlg"""
+    acc = ComponentAccumulator()
+    from InDetConfig.InDetRecToolConfig import SCT_TdaqEnabledToolCfg
+    kwargs.setdefault("SCT_TdaqEnabledTool", acc.popToolsAndMerge(SCT_TdaqEnabledToolCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_TdaqEnabledTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = False
+    ConfigFlags.Input.ProjectName = "data16_13TeV"
+    ConfigFlags.Input.RunNumber = 310809
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1476741326) # LB 18 of run 310809, 10/17/2016 @ 9:55pm (UTC)
+    ConfigFlags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2017-06"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    algkwargs = {}
+    algkwargs["OutputLevel"] = INFO
+    cfg.merge(SCT_TdaqEnabledTestAlgCfg(ConfigFlags, **algkwargs))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
index 36e9a2bee5920dc127b2e2c64f6aba53c6773867..31870a0c2523457a3c8c78567d16cddf5dff989d 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py
@@ -4,22 +4,20 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
+from AtlasGeoModel.GeoModelConfig import GeoModelCfg
 from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
 SCT_ReadCalibChipDataTool=CompFactory.SCT_ReadCalibChipDataTool
 SCT_ReadCalibChipNoiseCondAlg=CompFactory.SCT_ReadCalibChipNoiseCondAlg
 SCT_ReadCalibChipGainCondAlg=CompFactory.SCT_ReadCalibChipGainCondAlg
 
-def SCT_ReadCalibChipDataToolCfg(flags, name="InDetSCT_ReadCalibChipDataTool", **kwargs):
-    """Return a ReadCalibChipDataTool configured for SCT"""
-    return SCT_ReadCalibChipDataTool(name, **kwargs)
-
 def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs):
     """Return configured ComponentAccumulator with SCT_ReadCalibChipDataCfg tool
 
     Accepts optional noiseFolder and gainFolder keyword arguments
     """
     acc = ComponentAccumulator()
-    # folders
+
+    # Folders
     noiseFolder = kwargs.get("noiseFolder", "/SCT/DAQ/Calibration/ChipNoise")
     gainFolder = kwargs.get("gainFolder", "/SCT/DAQ/Calibration/ChipGain")
     if flags.Overlay.DataOverlay:
@@ -37,10 +35,13 @@ def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs):
                                     forceDb=forceDb, tag=gainTag))
 
     # Algorithms
+    acc.merge(GeoModelCfg(flags)) # For SCT_ID used in SCT_ReadCalibChipNoiseCondAlg, SCT_ReadCalibChipGainCondAlg, SCT_ReadCalibChipDataTool
     noiseAlg = SCT_ReadCalibChipNoiseCondAlg(name=name + "NoiseCondAlg", ReadKey=noiseFolder)
     acc.addCondAlgo(noiseAlg)
     gainAlg = SCT_ReadCalibChipGainCondAlg(name=name + "GainCondAlg", ReadKey=gainFolder)
     acc.addCondAlgo(gainAlg)
-    tool = kwargs.get("ReadCalibChipDataTool", SCT_ReadCalibChipDataToolCfg(flags))
-    acc.setPrivateTools(tool)
+
+    # Tool
+    acc.setPrivateTools(SCT_ReadCalibChipDataTool(name="InDetSCT_ReadCalibChipDataTool"))
+
     return acc
diff --git a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
index d8a4dcdec1f2060190f6f661a2a5331991ce1acd..1b5a16baff7ff8f5f4a6e340838e3fdf0c0848a4 100644
--- a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
+++ b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
@@ -136,26 +136,7 @@ def PixelConditionsSummaryToolCfg(flags, name = "InDetPixelConditionsSummaryTool
 def InDetSCT_ConditionsSummaryToolCfg(flags, name = "InDetSCT_ConditionsSummaryTool", **kwargs) :
   result = ComponentAccumulator()
   
-  # Load conditions configuration service and load folders and algorithm for it
-  # Load folders that have to exist for both MC and Data
-  SCTConfigurationFolderPath='/SCT/DAQ/Config/'
-  #if its COMP200, use old folders...
-  if (flags.IOVDb.DatabaseInstance == "COMP200"):
-      SCTConfigurationFolderPath='/SCT/DAQ/Configuration/'
-  #...but now check if we want to override that decision with explicit flag (if there is one)
-  if flags.InDet.ForceCoraCool:
-      SCTConfigurationFolderPath='/SCT/DAQ/Configuration/'
-  if flags.InDet.ForceCoolVectorPayload:
-      SCTConfigurationFolderPath='/SCT/DAQ/Config/'
-  
-  if (flags.InDet.ForceCoolVectorPayload and flags.InDet.ForceCoraCool):
-      print ('*** SCT DB CONFIGURATION FLAG CONFLICT: Both CVP and CoraCool selected****')
-      SCTConfigurationFolderPath=''
-
-  cond_kwargs={"ChannelFolder" : SCTConfigurationFolderPath+("ChipSlim" if flags.Input.isMC else "Chip"),
-               "ModuleFolder"  : SCTConfigurationFolderPath+"Module",
-               "MurFolder"     : SCTConfigurationFolderPath+"MUR"}
-  cfgCondToolAcc = SCT_ConfigurationConditionsToolCfg(flags,name, cond_kwargs=cond_kwargs)
+  cfgCondToolAcc = SCT_ConfigurationConditionsToolCfg(flags, name)
   SCT_ConfigurationConditionsTool = cfgCondToolAcc.popPrivateTools()
   result.merge(cfgCondToolAcc)
   if (flags.InDet.doPrintConfigurables):
@@ -242,39 +223,61 @@ def InDetSCT_ConditionsSummaryToolCfg(flags, name = "InDetSCT_ConditionsSummaryT
   result.setPrivateTools(InDetSCT_ConditionsSummaryTool)
   return result
 
-def SCT_ConfigurationConditionsToolCfg(flags, name="SCT_ConfigurationConditionsTool", cond_kwargs={}, **kwargs):
-  cond_kwargs.setdefault("ChannelFolder", "/SCT/DAQ/Config/ChipSlim" if flags.Input.isMC else "/SCT/DAQ/Config/Chip")
-  cond_kwargs.setdefault("ModuleFolder","/SCT/DAQ/Config/Module")
-  cond_kwargs.setdefault("MurFolder","/SCT/DAQ/Config/MUR")
-  cond_kwargs.setdefault("dbInstance","SCT")
-  cond_kwargs.setdefault("SCT_ConfigurationCondAlgName","SCT_ConfigurationCondAlg")
+def SCT_ConfigurationConditionsToolCfg(flags, name="SCT_ConfigurationConditionsTool", **kwargs):
+  # Load conditions configuration service and load folders and algorithm for it
+  # Load folders that have to exist for both MC and Data
+  SCTConfigurationFolderPath='/SCT/DAQ/Config/'
+  #if its COMP200, use old folders...
+  if (flags.IOVDb.DatabaseInstance == "COMP200"):
+      SCTConfigurationFolderPath='/SCT/DAQ/Configuration/'
+  #...but now check if we want to override that decision with explicit flag (if there is one)
+  if flags.InDet.ForceCoraCool:
+      SCTConfigurationFolderPath='/SCT/DAQ/Configuration/'
+  if flags.InDet.ForceCoolVectorPayload:
+      SCTConfigurationFolderPath='/SCT/DAQ/Config/'
+  
+  if (flags.InDet.ForceCoolVectorPayload and flags.InDet.ForceCoraCool):
+    print ('*** SCT DB CONFIGURATION FLAG CONFLICT: Both CVP and CoraCool selected****')
+    SCTConfigurationFolderPath=''
+
+  cond_kwargs = {}
+  cond_kwargs["ChannelFolder"] = SCTConfigurationFolderPath+("ChipSlim" if flags.Input.isMC else "Chip")
+  cond_kwargs["ModuleFolder"] = SCTConfigurationFolderPath+"Module"
+  cond_kwargs["MurFolder"] = SCTConfigurationFolderPath+"MUR"
+  cond_kwargs["dbInstance"] = "SCT"
+  cond_kwargs["SCT_ConfigurationCondAlgName"] = "SCT_ConfigurationCondAlg"
 
   result = ComponentAccumulator()
+
+  # For SCT_ID and SCT_DetectorElementCollection used in SCT_ConfigurationCondAlg and SCT_ConfigurationConditionsTool
+  from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
+  result.merge(SCT_GeometryCfg(flags))
+
   if 'ChannelFolderDB' not in cond_kwargs:
     result.merge(addFoldersSplitOnline(flags,
-                                             detDb=cond_kwargs['dbInstance'],
-                                             online_folders=cond_kwargs["ChannelFolder"],
-                                             offline_folders=cond_kwargs["ChannelFolder"],
-                                             className='CondAttrListVec',
-                                             splitMC=True))
+                                       detDb=cond_kwargs['dbInstance'],
+                                       online_folders=cond_kwargs["ChannelFolder"],
+                                       offline_folders=cond_kwargs["ChannelFolder"],
+                                       className='CondAttrListVec',
+                                       splitMC=True))
   else:
     result.merge(addFolders(flags, [cond_kwargs["ChannelFolderDB"]], detDb = cond_kwargs['dbInstance'], className='CondAttrListVec'))
   if 'ModuleFolderDB' not in cond_kwargs:
     result.merge(addFoldersSplitOnline(flags,
-                                             detDb=cond_kwargs['dbInstance'],
-                                             online_folders=cond_kwargs["ModuleFolder"],
-                                             offline_folders=cond_kwargs["ModuleFolder"],
-                                             className='CondAttrListVec',
-                                             splitMC=True))
+                                       detDb=cond_kwargs['dbInstance'],
+                                       online_folders=cond_kwargs["ModuleFolder"],
+                                       offline_folders=cond_kwargs["ModuleFolder"],
+                                       className='CondAttrListVec',
+                                       splitMC=True))
   else:
     result.merge(addFolders(flags, [cond_kwargs["ModuleFolderDB"]], detDb = cond_kwargs['dbInstance'], className='CondAttrListVec'))
   if 'MurFolderDB' not in cond_kwargs:
     result.merge(addFoldersSplitOnline(flags,
-                                             detDb=cond_kwargs['dbInstance'],
-                                             online_folders=cond_kwargs["MurFolder"],
-                                             offline_folders=cond_kwargs["MurFolder"],
-                                             className='CondAttrListVec',
-                                             splitMC=True))
+                                       detDb=cond_kwargs['dbInstance'],
+                                       online_folders=cond_kwargs["MurFolder"],
+                                       offline_folders=cond_kwargs["MurFolder"],
+                                       className='CondAttrListVec',
+                                       splitMC=True))
   else:
     result.merge(addFolders(flags, [cond_kwargs["MurFolderDB"]], detDb = cond_kwargs['dbInstance'],  className='CondAttrListVec'))
 
@@ -333,27 +336,30 @@ def SCT_ConfigurationCondAlgCfg(flags, name="SCT_ConfigurationCondAlg", **kwargs
 def SCT_ReadCalibDataToolCfg(flags, name="SCT_ReadCalibDataTool", cond_kwargs={}, **kwargs):
   result = ComponentAccumulator()
 
+  # For SCT_ID and SCT_DetectorElementCollection used in SCT_ReadCalibDataCondAlg and SCT_ReadCalibDataTool
+  from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
+  result.merge(SCT_GeometryCfg(flags))
+
   cond_kwargs.setdefault("NoiseFolder","/SCT/DAQ/Calibration/NoiseOccupancyDefects")
   cond_kwargs.setdefault("GainFolder","/SCT/DAQ/Calibration/NPtGainDefects")
   cond_kwargs.setdefault("ReadCalibDataCondAlgName","SCT_ReadCalibDataCondAlg")
 
   result.merge(addFoldersSplitOnline(flags,
-                                           detDb="SCT",
-                                           online_folders=cond_kwargs["NoiseFolder"],
-                                           offline_folders=cond_kwargs["NoiseFolder"],
-                                           className='CondAttrListCollection',
-                                           splitMC=True))
+                                     detDb="SCT",
+                                     online_folders=cond_kwargs["NoiseFolder"],
+                                     offline_folders=cond_kwargs["NoiseFolder"],
+                                     className='CondAttrListCollection',
+                                     splitMC=True))
   result.merge(addFoldersSplitOnline(flags,
-                                           detDb="SCT",
-                                           online_folders=cond_kwargs["GainFolder"],
-                                           offline_folders=cond_kwargs["GainFolder"],
-                                           className='CondAttrListCollection',
-                                           splitMC=True))
-
-  result.addCondAlgo(CompFactory.SCT_ReadCalibDataCondAlg(
-                                        name = cond_kwargs["ReadCalibDataCondAlgName"],
-                                        ReadKeyGain = cond_kwargs["GainFolder"],
-                                        ReadKeyNoise = cond_kwargs["NoiseFolder"]))
+                                     detDb="SCT",
+                                     online_folders=cond_kwargs["GainFolder"],
+                                     offline_folders=cond_kwargs["GainFolder"],
+                                     className='CondAttrListCollection',
+                                     splitMC=True))
+
+  result.addCondAlgo(CompFactory.SCT_ReadCalibDataCondAlg(name = cond_kwargs["ReadCalibDataCondAlgName"],
+                                                          ReadKeyGain = cond_kwargs["GainFolder"],
+                                                          ReadKeyNoise = cond_kwargs["NoiseFolder"]))
   acc = SCT_CablingToolCfg(flags)
   kwargs.setdefault("SCT_CablingTool", acc.popPrivateTools())
   result.merge(acc)
@@ -376,6 +382,10 @@ def SCT_MonitorConditionsToolCfg(flags, name="InDetSCT_MonitorConditionsTool", c
 
   result = ComponentAccumulator()
 
+  # For SCT_ID used in SCT_MonitorConditionsTool
+  from AtlasGeoModel.GeoModelConfig import GeoModelCfg
+  result.merge(GeoModelCfg(flags))
+
   if  "FolderDb" not in cond_kwargs:
     cond_kwargs["FolderDb"] = cond_kwargs["Folder"]
   result.merge(addFolders(flags, cond_kwargs["FolderDb"], cond_kwargs["dbInstance"], className="CondAttrListCollection"))
@@ -404,29 +414,29 @@ def SCT_CablingToolCfg(flags):
     result.setPrivateTools(tool)
     return result
 
-def SCT_TdaqEnabledToolCfg(flags):
-  # Copied from https://gitlab.cern.ch/atlas/athena/blob/master/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_TdaqEnabledToolSetup.py
-  result = SCT_TdaqEnabledCondAlgCfg(flags)
-  tool = CompFactory.SCT_TdaqEnabledTool()
-  result.setPrivateTools(tool)
-  return result
-
-def SCT_TdaqEnabledCondAlgCfg(flags, name="SCT_TdaqEnabledCondAlg", **kwargs):
+def SCT_TdaqEnabledToolCfg(flags, name="InDetSCT_TdaqEnabledTool", **kwargs):
   if flags.Input.isMC:
     print("Warning: should not setup SCT_TdaqEnabledCond for MC")
     return
+
   result = ComponentAccumulator()
 
+  # For SCT_ID used in SCT_TdaqEnabledTool
+  from AtlasGeoModel.GeoModelConfig import GeoModelCfg
+  result.merge(GeoModelCfg(flags))
+
+  # Folder
   #FIXME - is there a better way to do this? What about run3?
   folder = '/TDAQ/Resources/ATLAS/SCT/Robins' if (flags.IOVDb.DatabaseInstance == "CONDBR2") else '/TDAQ/EnabledResources/ATLAS/SCT/Robins'
-
   result.merge( addFolders(flags, [folder], detDb="TDAQ", className="CondAttrListCollection") )
-  
-  acc = SCT_CablingToolCfg(flags)
-  kwargs.setdefault( "SCT_CablingTool", acc.popPrivateTools() )
-  result.merge(acc)
 
-  result.addCondAlgo( CompFactory.SCT_TdaqEnabledCondAlg(name=name, **kwargs) )
+  # Algorithm
+  kwargs.setdefault( "SCT_CablingTool", result.popToolsAndMerge(SCT_CablingToolCfg(flags)) )
+  result.addCondAlgo( CompFactory.SCT_TdaqEnabledCondAlg(**kwargs) )
+
+  # Tool
+  result.setPrivateTools(CompFactory.SCT_TdaqEnabledTool(name=name))
+
   return result
 
 def InDetTestPixelLayerToolCfg(flags, name = "InDetTestPixelLayerTool", **kwargs):