diff --git a/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py b/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py
index df758b81ca21c07a17fcfece931949079348c4e2..24d0eb08a4e7eeedc4b428f186d169d6222fc304 100644
--- a/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py
+++ b/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py
@@ -22,6 +22,11 @@ def AthenaMonitoringCfg(flags):
         info('Set up TRT monitoring')
         from TRTMonitoringRun3.TRTMonitoringRun3Config import TRTMonitoringRun3Cfg
         result.merge(TRTMonitoringRun3Cfg(flags))
+    
+    if flags.DQ.Steering.doInDetMon:
+        info('Set up InDet Global monitoring')
+        from InDetGlobalMonitoringRun3Test.InDetGlobalMonitoringRun3TestConfig import InDetGlobalMonitoringRun3TestConfig
+        result.merge(InDetGlobalMonitoringRun3TestConfig(flags))
 
     if flags.DQ.Steering.doLArMon:
         info('Set up LAr monitoring')
diff --git a/Control/AthenaMonitoring/share/DataQualitySteering_jobOptions.py b/Control/AthenaMonitoring/share/DataQualitySteering_jobOptions.py
index fababdb80e0ae6fe17a8818461bce12acbb8cc90..3b4e4aab33a483faa1acdc9ed6dbf499f7fc997e 100644
--- a/Control/AthenaMonitoring/share/DataQualitySteering_jobOptions.py
+++ b/Control/AthenaMonitoring/share/DataQualitySteering_jobOptions.py
@@ -357,6 +357,7 @@ if DQMonFlags.doMonitoring():
       Steering.doPixelMon=DQMonFlags.doPixelMon()
       Steering.doSCTMon=DQMonFlags.doSCTMon()
       Steering.doTRTMon=DQMonFlags.doTRTMon()
+      Steering.doInDetGlobalMon=DQMonFlags.doInDetGlobalMon()
       Steering.doLArMon=DQMonFlags.doLArMon()
       Steering.doTileMon=DQMonFlags.doTileMon()
       Steering.doCaloGlobalMon=DQMonFlags.doCaloMon()
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalBeamSpotMonAlgCfg.py b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalBeamSpotMonAlgCfg.py
index 89b5e2e1f360320a206757d4c35272e1f25f338a..f0f1b0604ed188ee25bfe9c3f05ccc4d418ffee7 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalBeamSpotMonAlgCfg.py
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalBeamSpotMonAlgCfg.py
@@ -22,7 +22,7 @@ def InDetGlobalBeamSpotMonAlgCfg(helper, alg, **kwargs):
     pathbs = '/InDetGlobal/BeamSpot'
     
     # Histograms for track-based beam spot monitoring:
-    varName = 'm_trkD0,m_trkD0Phi;trkDPhi'
+    varName = 'm_trkD0Phi,m_trkD0;trkDPhi'
     bsGroup.defineHistogram(varName,type="TH2F",title="DCA vs Phi; #varphi (rad);d_{0} (#mum)", path=pathbs, xbins=100, xmin=-3.5, xmax=3.5, ybins=100, ymin=-1000, ymax=1000)
 
     if (expert):
@@ -33,7 +33,7 @@ def InDetGlobalBeamSpotMonAlgCfg(helper, alg, **kwargs):
     
     #Histograms of assumed beam spot position
     if (m_useBeamspot):
-        varName = 'm_trkD0Corr,m_trkD0PhiCorr;trkDPhiCorr'
+        varName = 'm_trkD0PhiCorr,m_trkD0Corr;trkDPhiCorr'
         bsGroup.defineHistogram(varName,type="TH2F",title="DCA vs Phi wrt Beamspot;#varphi (rad);d_{0} (#mum)",path=pathbs,xbins=100, xmin=-3.5,xmax=3.5, ybins=100, ymin=-500,ymax=500)
         varName = 'm_bsX;bsX'
         bsGroup.defineHistogram(varName, type="TH1F", title="Beam spot position: x;x (mm)",path=pathbs,xbins=100,xmin=-10,xmax=10)
@@ -66,11 +66,11 @@ def InDetGlobalBeamSpotMonAlgCfg(helper, alg, **kwargs):
     
     
     #Histograms that are independent of the useBeamSpot parameters
-    varName = 'm_pvX,m_pvZ;pvXZ'
+    varName = 'm_pvZ,m_pvX;pvXZ'
     bsGroup.defineHistogram(varName, type="TH2F", title="Primary vertex: x vs z;z (mm);x (mm)", path=pathbs, xbins=100, xmin=-500, xmax=500, ybins=100, ymin=-10, ymax=10)
-    varName = 'm_pvY,m_pvZ;pvYZ'
+    varName = 'm_pvZ,m_pvY;pvYZ'
     bsGroup.defineHistogram(varName, type="TH2F", title="Primary vertex: y vs z;z (mm);y (mm)", path=pathbs, xbins=100, xmin=-500, xmax=500, ybins=100, ymin=-10,ymax=10)
-    varName = 'm_pvY,m_pvX;pvYX'
+    varName = 'm_pvX,m_pvY;pvYX'
     bsGroup.defineHistogram(varName, type="TH2F", title="Primary vertex: y vs x;x (mm);y (mm)", path=pathbs, xbins=100, xmin=-10, xmax=10, ybins=100, ymin=-10, ymax=10)
     varName = 'm_pvChiSqDof;pvChiSqDof'
     bsGroup.defineHistogram(varName, type="TH1F", title="",path=pathbs,xbins=100,xmin=0,xmax=20)
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
index 58807dec5e6aa53aee2fb781192e8396f6f4ae58..79e20f002b58319c6ac2eab608ed5e333dd1ef10 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
@@ -14,6 +14,11 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
     from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
     acc = ComponentAccumulator()
     
+    from AthenaMonitoring import AthMonitorCfgHelper
+    helper = AthMonitorCfgHelper(flags, "InDetGlobalMonitoringRun3Test")
+        
+    from AthenaConfiguration.ComponentFactory import CompFactory
+
     # run on RAW only
     if flags.DQ.Environment in ('online', 'tier0', 'tier0Raw'):
         ##        from InDetRecExample.InDetKeys import InDetKeys    ## not sure it works now
@@ -27,17 +32,13 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
         }
         
         
-        from AthenaMonitoring import AthMonitorCfgHelper
-        helper = AthMonitorCfgHelper(flags, "InDetGlobalMonitoringRun3Test")
-        
-        from AthenaConfiguration.ComponentFactory import CompFactory
-        #        from InDetGlobalMonitoringRun3Test.InDetGlobalMonitoringRun3TestConf import InDetGlobalTrackMonAlg
         from InDetGlobalMonitoringRun3Test.InDetGlobalTrackMonAlgCfg import InDetGlobalTrackMonAlgCfg 
 
         inDetGlobalTrackMonAlg = helper.addAlgorithm(CompFactory.InDetGlobalTrackMonAlg, 'InDetGlobalTrackMonAlg')
         for k, v in kwargsInDetGlobalTrackMonAlg.items():
             setattr(inDetGlobalTrackMonAlg, k, v)
 
+        inDetGlobalTrackMonAlg.TrackSelectionTool = CompFactory.InDet.InDetTrackSelectionTool()
         inDetGlobalTrackMonAlg.TrackSelectionTool.UseTrkTrackTools = True
         inDetGlobalTrackMonAlg.TrackSelectionTool.CutLevel         = "TightPrimary"
         inDetGlobalTrackMonAlg.TrackSelectionTool.maxNPixelHoles   = 1
@@ -45,6 +46,7 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
         #        InDetGlobalTrackMonAlg.Baseline_TrackSelectionTool.TrackSummaryTool = InDetTrackSummaryTool
         #        InDetGlobalTrackMonAlg.Baseline_TrackSelectionTool.Extrapolator     = InDetExtrapolator
         #
+        inDetGlobalTrackMonAlg.Tight_TrackSelectionTool = CompFactory.InDet.InDetTrackSelectionTool()
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.UseTrkTrackTools = True
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.CutLevel         = "TightPrimary"
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.minPt            = 5000
@@ -54,20 +56,23 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
 
         # Run 3 configs - stolen from SCT
         from SCT_Monitoring.TrackSummaryToolWorkaround import TrackSummaryToolWorkaround
-        inDetGlobalTrackMonAlg.TrackSelectionTool.TrackSummaryTool = acc.popToolsAndMerge(TrackSummaryToolWorkaround(flags))
+        InDetTrackSummaryTool = acc.popToolsAndMerge(TrackSummaryToolWorkaround(flags))
+        inDetGlobalTrackMonAlg.TrackSummaryTool = InDetTrackSummaryTool
+        inDetGlobalTrackMonAlg.TrackSelectionTool.TrackSummaryTool = InDetTrackSummaryTool
         inDetGlobalTrackMonAlg.TrackSelectionTool.Extrapolator     = acc.getPublicTool("InDetExtrapolator")
-        inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.TrackSummaryTool = acc.popToolsAndMerge(TrackSummaryToolWorkaround(flags))
+        inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.TrackSummaryTool = InDetTrackSummaryTool
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.Extrapolator     = acc.getPublicTool("InDetExtrapolator")
         
         InDetGlobalTrackMonAlgCfg(helper, inDetGlobalTrackMonAlg, **kwargsInDetGlobalTrackMonAlg)
         ########### here ends InDetGlobalTrackMonAlg ###########
         
-        
+    # run on ESD
+    if flags.DQ.Environment != 'tier0Raw':
         ########### here begins InDetGlobalPrimaryVertexMonAlg ###########
-        from InDetGlobalMonitoringRun3Test.InDetGlobalMonitoringRun3TestConf import InDetGlobalPrimaryVertexMonAlg
         from InDetGlobalMonitoringRun3Test.InDetGlobalPrimaryVertexMonAlgCfg import InDetGlobalPrimaryVertexMonAlgCfg 
         
-        myInDetGlobalPrimaryVertexMonAlg = helper.addAlgorithm(InDetGlobalPrimaryVertexMonAlg, 'InDetGlobalPrimaryVertexMonAlg')
+        myInDetGlobalPrimaryVertexMonAlg = helper.addAlgorithm(CompFactory.InDetGlobalPrimaryVertexMonAlg,
+                                                               'InDetGlobalPrimaryVertexMonAlg')
         
         kwargsInDetGlobalPrimaryVertexMonAlg = { 
             'vxContainerName'                      : 'PrimaryVertices', #InDetKeys.xAODVertexContainer(),
@@ -77,18 +82,20 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
         }
         
         for k, v in kwargsInDetGlobalPrimaryVertexMonAlg.items():
-            setattr(kwargsInDetGlobalPrimaryVertexMonAlg, k, v)
+            setattr(myInDetGlobalPrimaryVertexMonAlg, k, v)
             
         InDetGlobalPrimaryVertexMonAlgCfg(helper, myInDetGlobalPrimaryVertexMonAlg, **kwargsInDetGlobalPrimaryVertexMonAlg)
 
         ########### here ends InDetGlobalPrimaryVertexMonAlg ###########
 
         ########### here begins InDetGlobalBeamSpotMonAlg ###########
-        
-        from InDetGlobalMonitoringRun3Test.InDetGlobalMonitoringRun3TestConf import InDetGlobalBeamSpotMonAlg
+        from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
+        acc.merge(BeamSpotCondAlgCfg(flags))
+       
         from InDetGlobalMonitoringRun3Test.InDetGlobalBeamSpotMonAlgCfg import InDetGlobalBeamSpotMonAlgCfg 
         
-        myInDetGlobalBeamSpotMonAlg = helper.addAlgorithm(InDetGlobalBeamSpotMonAlg, 'InDetGlobalBeamSpotMonAlg')
+        myInDetGlobalBeamSpotMonAlg = helper.addAlgorithm(CompFactory.InDetGlobalBeamSpotMonAlg,
+                                                          'InDetGlobalBeamSpotMonAlg')
         
         kwargsInDetGlobalBeamSpotMonAlg = { 
             'BeamSpotKey'                      : 'BeamSpotData', #InDetKeys.BeamSpotData(),
@@ -99,10 +106,10 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
         }
         
         for k, v in kwargsInDetGlobalBeamSpotMonAlg.items():
-            setattr(kwargsInDetGlobalBeamSpotMonAlg, k, v)
+            setattr(myInDetGlobalBeamSpotMonAlg, k, v)
 
         InDetGlobalBeamSpotMonAlgCfg(helper, myInDetGlobalBeamSpotMonAlg, **kwargsInDetGlobalBeamSpotMonAlg)
 
         ########### here ends InDetGlobalBeamSpotMonAlg ###########
-        
+        acc.merge(helper.result())
     return acc
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/src/InDetGlobalBeamSpotMonAlg.cxx b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/src/InDetGlobalBeamSpotMonAlg.cxx
index e4764edc45714a05f35b1f9eff19ea98a6788932..be7e6913a5dc37f6e059088b0b35c762c21d2aa9 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/src/InDetGlobalBeamSpotMonAlg.cxx
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/src/InDetGlobalBeamSpotMonAlg.cxx
@@ -90,11 +90,16 @@ StatusCode InDetGlobalBeamSpotMonAlg::fillHistograms( const EventContext& ctx )
     
     const Amg::Vector3D &bpos = beamSpotHandle->beamPos();
     
-    auto beamSpotX_m = Monitored::Scalar<float>("m_bsX", bpos.x() );
-    auto beamSpotY_m = Monitored::Scalar<float>("m_bsY", bpos.y() );
-    auto beamSpotZ_m = Monitored::Scalar<float>("m_bsZ", bpos.z() );
-    auto beamTiltX_m = Monitored::Scalar<float>("m_bsTiltX", 1e6*beamSpotHandle->beamTilt(0) );
-    auto beamTiltY_m = Monitored::Scalar<float>("m_bsTiltY", 1e6*beamSpotHandle->beamTilt(1) );
+    beamSpotX = bpos.x();
+    beamSpotY = bpos.y();
+    beamSpotZ = bpos.z();
+    auto beamSpotX_m = Monitored::Scalar<float>("m_bsX", beamSpotX );
+    auto beamSpotY_m = Monitored::Scalar<float>("m_bsY", beamSpotY );
+    auto beamSpotZ_m = Monitored::Scalar<float>("m_bsZ", beamSpotZ );
+    beamTiltX = beamSpotHandle->beamTilt(0);
+    beamTiltY = beamSpotHandle->beamTilt(1);
+    auto beamTiltX_m = Monitored::Scalar<float>("m_bsTiltX", 1e6*beamTiltX );
+    auto beamTiltY_m = Monitored::Scalar<float>("m_bsTiltY", 1e6*beamTiltY );
     scaleFactor = 1000.;   // Use microns for some histograms when showing distance relative to beamspot PJ not used here?!
     
     fill(bsGroup,beamSpotX_m);