diff --git a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx
index 9d9164e4952c894a963fbf38480fda36f0063321..6a017fd2adf5c9a39fddbf25b740edf37f399ec7 100644
--- a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx
+++ b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.cxx
@@ -62,7 +62,8 @@ namespace xAODMaker {
         m_lumiTool( "LuminosityTool" ),
 #endif
         m_beamCondSvcAvailable( false ),
-        m_lumiToolAvailable( false ) {
+        m_lumiToolAvailable( false ),
+        m_disableBeamSpot( false ) {
 
       // Declare the interface(s) provided by the tool:
       declareInterface< IEventInfoCnvTool >( this );
@@ -70,6 +71,7 @@ namespace xAODMaker {
       // Declare the tool's properties:
       declareProperty( "BeamCondSvc", m_beamCondSvc );
       declareProperty( "LuminosityTool", m_lumiTool );
+      declareProperty( "DisableBeamSpot", m_disableBeamSpot );
 #endif
    }
 
@@ -88,7 +90,10 @@ namespace xAODMaker {
                           "xAOD::EventInfo" );
          m_beamCondSvcAvailable = false;
       }
-
+      if(m_disableBeamSpot){
+         ATH_MSG_WARNING( "Beam conditions service manually disabled on EventInfo object" );
+         m_beamCondSvcAvailable = false;
+      }
       // Try to access the beam conditions service:
       if( m_beamCondSvcAvailable ) {
          CHECK( m_beamCondSvc.retrieve() );
diff --git a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.h b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.h
index 201eabe7e62c459fd625f039d6ce1b0002002c97..4130bea4d3f6d3c1379f2b2ad9bc47aaa0530980 100644
--- a/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.h
+++ b/Event/xAOD/xAODEventInfoCnv/src/EventInfoCnvTool.h
@@ -69,6 +69,9 @@ namespace xAODMaker {
       /// Internal flag for the availability of the luminosity tool
       bool m_lumiToolAvailable;
 
+      /// Flag to disable beamspot service for AthenaMT migration purposes
+      bool m_disableBeamSpot;
+
    }; // class EventInfoCnvTool
 
 } // namespace xAODMaker
diff --git a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/CMakeLists.txt b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/CMakeLists.txt
index 1d9329a8db38322a66ae61abdb08e1e59cde23e9..4534b4962a0e8cddefa63574f7d7313e40c048e5 100644
--- a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/CMakeLists.txt
+++ b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/CMakeLists.txt
@@ -9,12 +9,12 @@ atlas_subdir( InDetPriVxFinder )
 atlas_depends_on_subdirs( PUBLIC
                           Control/AthenaBaseComps
                           GaudiKernel
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           PRIVATE
                           Control/CxxUtils
                           Event/EventPrimitives
                           Event/xAOD/xAODCore
                           Event/xAOD/xAODTracking
-                          InnerDetector/InDetConditions/InDetBeamSpotService
                           InnerDetector/InDetRecTools/InDetRecToolInterfaces
                           Reconstruction/RecoTools/ITrackToVertex
                           Tracking/TrkDetDescr/TrkSurfaces
diff --git a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetPriVxFinder/InDetPriVxDummyFinder.h b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetPriVxFinder/InDetPriVxDummyFinder.h
index b7ffdf14ee968ff41c89312f8f677fc8be0c19a2..9d4d3bc825804016be118c8c2feb30595df67f8c 100755
--- a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetPriVxFinder/InDetPriVxDummyFinder.h
+++ b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetPriVxFinder/InDetPriVxDummyFinder.h
@@ -11,6 +11,7 @@
 #define INDETPRIVXFINDER_INDETPRIVXDUMMYFINDER_H
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ServiceHandle.h"
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 /** DUMMY Primary Vertex Finder.
   InDetPriVxDummyFinder just fills one dummy vertex into the vertex container. The position and error of this
@@ -19,7 +20,6 @@
  */
 
 /* Forward declarations */
-class IBeamCondSvc;
 
 namespace InDet
 {
@@ -32,8 +32,8 @@ namespace InDet
     StatusCode execute();
     StatusCode finalize();
   private:
-    ServiceHandle<IBeamCondSvc> m_iBeamCondSvc;
     std::string m_vxCandidatesOutputName; //!< Name of output container to store results
+    SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
   };
 }
 #endif
diff --git a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/src/InDetPriVxDummyFinder.cxx b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/src/InDetPriVxDummyFinder.cxx
index a579f1965e3d51b05e600e399a5bd18de3800f0f..0f071dee0a3a2b0db25e09ee0403df4c948950a6 100755
--- a/InnerDetector/InDetRecAlgs/InDetPriVxFinder/src/InDetPriVxDummyFinder.cxx
+++ b/InnerDetector/InDetRecAlgs/InDetPriVxFinder/src/InDetPriVxDummyFinder.cxx
@@ -7,7 +7,6 @@
                              -------------------
  ***************************************************************************/
 #include "InDetPriVxFinder/InDetPriVxDummyFinder.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "VxVertex/VxTrackAtVertex.h"
 #include "xAODTracking/Vertex.h"
 #include "xAODTracking/TrackParticle.h"
@@ -22,10 +21,8 @@ namespace InDet
 
   InDetPriVxDummyFinder::InDetPriVxDummyFinder ( const std::string &n, ISvcLocator *pSvcLoc )
       : AthAlgorithm ( n, pSvcLoc ),
-      m_iBeamCondSvc("BeamCondSvc",n),
       m_vxCandidatesOutputName ( "VxPrimaryCandidate" )
   {
-    declareProperty ( "BeamPositionSvc", m_iBeamCondSvc);
     declareProperty ( "VxCandidatesOutputName",m_vxCandidatesOutputName );
   }
 
@@ -33,11 +30,7 @@ namespace InDet
 
   StatusCode InDetPriVxDummyFinder::initialize()
   {
-    if ( m_iBeamCondSvc.retrieve().isFailure() )
-    {
-      msg(MSG::ERROR) << "Could not find BeamCondSvc." << endmsg;
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(m_beamSpotKey.initialize());
     return StatusCode::SUCCESS;
   }
 
@@ -46,11 +39,11 @@ namespace InDet
     xAOD::VertexContainer* theVxContainer = new xAOD::VertexContainer();
     xAOD::VertexAuxContainer* aux = new xAOD::VertexAuxContainer();
     theVxContainer->setStore( aux );
-
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
     xAOD::Vertex* dummyVertex = new xAOD::Vertex();
     theVxContainer->push_back ( dummyVertex ); // have to add vertex to container here first so it can use its aux store - David S.
-    dummyVertex->setPosition(m_iBeamCondSvc->beamVtx().position());
-    dummyVertex->setCovariancePosition(m_iBeamCondSvc->beamVtx().covariancePosition());
+    dummyVertex->setPosition(beamSpotHandle->beamVtx().position());
+    dummyVertex->setCovariancePosition(beamSpotHandle->beamVtx().covariancePosition());
     dummyVertex->setVertexType(xAOD::VxType::NoVtx);
 
     //---- Recording section: write the results to StoreGate ---//