diff --git a/Control/AthenaServices/python/TheUserDataSvc.py b/Control/AthenaServices/python/TheUserDataSvc.py
deleted file mode 100644
index 232da5e5b593ced22dc890635082f084cf268ff2..0000000000000000000000000000000000000000
--- a/Control/AthenaServices/python/TheUserDataSvc.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__version__ = '1.0.0'
-__author__  = 'Yushu Yao (yyao@lbl.gov)'
- 
-__all__ = [ 'TheUserDataSvc', 'UserDataSvc' ]
-
-from AthenaServicesConf import UserDataSvc as _UserDataSvc
-
-class UserDataSvc(_UserDataSvc):
-    __slots__ = [] 
-    def __init__(self, name = 'UserDataSvc', **kwds):
-        kwds['name'] = name
-        super(UserDataSvc, self).__init__(**kwds)
-          
-    def __setattr__(self, name, value):
-
-        callbase=True;
-        
-        if name=="OutputStream":
-            callbase=False
-            
-        if name=="OutputFileName":
-            print "Obsolete option 'OutputFileName', please use OutputStream=mystream instead!!"
-            raise AttributeError('Obsolete property "OutputFileName"')
-            
-        if callbase:
-            return super( UserDataSvc, self ).__setattr__( name, value )
-
-# bwd compat
-TheUserDataSvc = UserDataSvc
diff --git a/Control/AthenaServices/src/AthenaOutputStream.h b/Control/AthenaServices/src/AthenaOutputStream.h
index e478fe387b7739430f4a87badc22c4fb5d6aefa9..2a7151cc05698eba69af7f8aa2fedd4fffa81f85 100644
--- a/Control/AthenaServices/src/AthenaOutputStream.h
+++ b/Control/AthenaServices/src/AthenaOutputStream.h
@@ -33,7 +33,6 @@ class StoreGateSvc;
 class IAthenaOutputStreamTool;
 class IAthenaOutputTool;
 class IItemListSvc;
-class UserDataSvc;
 
 namespace SG {
    class DataProxy;
@@ -50,7 +49,6 @@ namespace SG {
 class AthenaOutputStream : public FilteredAlgorithm,
                            virtual public IIncidentListener,
                            virtual public IIoComponent {
-   friend class UserDataSvc;
 
 public:
    typedef std::vector<SG::DataProxy*>     Items;
diff --git a/Control/AthenaServices/src/UserDataSvc.cxx b/Control/AthenaServices/src/UserDataSvc.cxx
deleted file mode 100644
index ee536dd5b2b3824944ecf46c45fd3c2d07221c23..0000000000000000000000000000000000000000
--- a/Control/AthenaServices/src/UserDataSvc.cxx
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "UserDataSvc.h" 
-#include "AthContainers/UserDataStore.h"
-#include "AthenaKernel/errorcheck.h"
-#include "Navigation/AthenaBarCodeBase.h"
-#include "GaudiKernel/IIncidentSvc.h"
-#include "StoreGate/StoreGateSvc.h" 
-
-UserDataSvc::UserDataSvc(const std::string& name, ISvcLocator* pSvcLocator ) : 
-  AthService(name,pSvcLocator),
-  m_storeGateSvc("StoreGateSvc",name),
-  m_userData(nullptr),
-  m_eventABC(IAthenaBarCode::UNDEFINEDBARCODE){
-
-  declareProperty("StoreGateSvc",m_storeGateSvc);
-  declareProperty("Key",m_key="UserDataStore","StoreGate key of UserDataStore object");
-}
-
-UserDataSvc::~UserDataSvc() {}
-
-StatusCode UserDataSvc::initialize() {
-
-  if (m_storeGateSvc.retrieve().isFailure()) {
-    msg(MSG::ERROR) << "Failed to retrieve StoreGateSvc" << endmsg;
-    return StatusCode::FAILURE;
-  }
-
-
-  IIncidentSvc* incSvc = nullptr;
-  if (service("IncidentSvc",incSvc).isFailure()) {
-    msg(MSG::ERROR) << "Unable to get the IncidentSvc" << endmsg;
-    return StatusCode::FAILURE;
-  }
-  incSvc->addListener( this, IncidentType::BeginEvent  );
-  ATH_MSG_DEBUG("Added incidentLister for BeginEvent" );
-
-  return StatusCode::SUCCESS;
-}
-
-
-StatusCode UserDataSvc::finalize() {
-  return StatusCode::SUCCESS;
-}
-
-
-void UserDataSvc::handle( const Incident& inc ) {
-  ATH_MSG_DEBUG ("Incident handle. Incident type " << inc.type() << " from " << inc.source());
-  m_userData=nullptr;
-  getUserDataStore();
-  return;
-}
-
-
-void UserDataSvc::getUserDataStore() {
-  if (!m_storeGateSvc->contains<UserDataStore>(m_key)) {
-    ATH_MSG_DEBUG("Create and record UserDataStore object with key " << m_key);
-    m_userData=new UserDataStore;
-    StatusCode sc=m_storeGateSvc->record(m_userData,m_key);
-    if (sc.isFailure()) {
-      msg(MSG::ERROR) << "Failed to record UserDataStore with key " << m_key << endmsg;
-      delete m_userData;
-      m_userData=nullptr;
-      return;
-    }
-    ATH_MSG_DEBUG("Successfully created UserDataStore Object with key " << m_key);
-    AthenaBarCodeBase newEventABC; //Generate new AthenaBarCode
-    m_userData->setEventABC(newEventABC.getAthenaBarCode());
-    m_eventABC.setAthenaBarCode(newEventABC.getAthenaBarCode());
-    ATH_MSG_DEBUG("Event BarCode: " << newEventABC.getAthenaBarCode()); 
-  }//end if UserDataStore exists
-  else {
-     ATH_MSG_DEBUG("Loading existing UserDataStore Object with key " << m_key);
-     const UserDataStore* cUDS;
-     StatusCode sc=m_storeGateSvc->retrieve(cUDS,m_key);
-     if (sc.isFailure()) {
-       msg(MSG::ERROR) << "Failed to retrieve UserDataStore with key " << m_key << endmsg;
-       m_userData=nullptr;
-       return;
-     }
-     //Now cast away const'ness. This is necessary b/c data objects read from an input file 
-     //are always const in Athena. For user data this policy does not make sense.
-     m_userData=const_cast<UserDataStore*>(cUDS);
-     m_eventABC.setAthenaBarCode(m_userData->getEventABC());
-  }
-  return;
-}
-
-
-StatusCode UserDataSvc::recordAny(const IAthenaBarCode& abc,const std::string& label, const boost::any& value) {
-  ATH_MSG_DEBUG("Trying to record UserData with label " << label);
-  if (!m_userData) return StatusCode::FAILURE;
-  return m_userData->recordAny(abc,label,value);
-}
-
-
-  
-StatusCode UserDataSvc::retrieveAny(const IAthenaBarCode& abc,const std::string& label, const boost::any*& value)  {
-  ATH_MSG_DEBUG("Trying to retrieve UserData with label " << label);
-  if (!m_userData) return StatusCode::FAILURE;
-  return m_userData->retrieveAny(abc,label,value);
-}
-
-
-bool UserDataSvc::contains(const IAthenaBarCode& abc,const std::string& label) {
-  ATH_MSG_DEBUG("Check existance of UserData with label " << label);
-  if (!m_userData) return false;
-  return m_userData->contains(abc,label);
-}
- 
- 
-
-StatusCode UserDataSvc::recordAny(const std::string& label, const boost::any& value) {
-  ATH_MSG_DEBUG("Trying to record Event UserData with label " << label);
-  return recordAny(m_eventABC,label,value);
-}
-
-  
-StatusCode UserDataSvc::retrieveAny(const std::string& label, const boost::any*& value) {
-  ATH_MSG_DEBUG("Trying to retrieve Event UserData with label " << label);
-  return retrieveAny(m_eventABC,label,value);
-}
-
-
-bool UserDataSvc::contains(const std::string& label) {
-  ATH_MSG_DEBUG("Check existance of Event UserData with label " << label);
-  return contains(m_eventABC,label);
-}
-
-StatusCode UserDataSvc::typeIDtoAny(const std::type_info &decoinfo, void* & deco, boost::any& out) {
-
-  if (this->AnyFromType<uint32_t>(decoinfo,deco,out)) 
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<int32_t>(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<float>(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<double>(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<std::vector<uint32_t> >(decoinfo,deco,out)) 
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<std::vector<int32_t> >(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<std::vector<float> >(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else if (this->AnyFromType<std::vector<double> >(decoinfo,deco,out))
-    return StatusCode::SUCCESS;
-  else {
-    msg(MSG::ERROR) << "Unsupported type " << decoinfo.name() << endmsg;
-    return StatusCode::FAILURE;
-  }
-}
-  
-
-int UserDataSvc::vdecorateElement(const IAthenaBarCode &abc, const std::string& label,
-					 const std::type_info &decoinfo, void* & deco) {
-  boost::any value;
-  CHECK(this->typeIDtoAny(decoinfo,deco,value), -1);
-  if (this->recordAny(abc,label,value).isSuccess()) 
-    return 0;
-  else
-    return -1;
-}
-
-
-int UserDataSvc::vgetElementDecoration(const IAthenaBarCode &abc, const std::string& label,
-					      const std::type_info &decoinfo, void *&deco) {
-  
-  const boost::any* value=nullptr;
-  if (this->retrieveAny(abc,label,value).isFailure()) {
-    return -1;
-  }
-  if (value->type()!=decoinfo) {
-    msg(MSG::ERROR) << "Typeid mismatch! " <<  value->type().name() << " vs " << decoinfo.name() << endmsg;
-    return -1;
-  }
- 
-  if (decoinfo==typeid(uint32_t)) {
-    deco=(void*)boost::any_cast<uint32_t>(value);
-  }
-  else if (decoinfo==typeid(int32_t)) {
-    deco=(void*)boost::any_cast<int32_t>(value);
-  }
-  else if (decoinfo==typeid(float)) {
-    deco=(void*)boost::any_cast<float>(value);
-  }
-  else if (decoinfo==typeid(double)) {
-    deco=(void*)boost::any_cast<double>(value);
-  }
-  else if (decoinfo==typeid(std::vector<uint32_t>)) {
-    deco=(void*)boost::any_cast<std::vector<uint32_t> >(value);
-  }
-  else if (decoinfo==typeid(std::vector<int32_t>)) {
-    deco=(void*)boost::any_cast<std::vector<int32_t> >(value);
-  }
-  else if (decoinfo==typeid(std::vector<float>)) {
-    deco=(void*)boost::any_cast<std::vector<float> >(value);
-  }
-  else if (decoinfo==typeid(std::vector<double>)) {
-    deco=(void*)boost::any_cast<std::vector<double> >(value);
-  }
-  else if (decoinfo==typeid(bool)) {
-    deco=(void*)boost::any_cast<bool>(value);
-  }
-  else {
-    msg(MSG::ERROR) << "Unsupported/unknown type " << decoinfo.name() << ", label=" << label << endmsg;
-    return -1;
-  }
-
-  return 0;
-}
-
-
-std::vector<const std::string*> UserDataSvc::getLabels(const IAthenaBarCode& obj) {
-  if (!m_userData) return std::vector<const std::string*>();
-  return m_userData->getLabels(obj.getAthenaBarCode());
-}
-
-
-std::vector<const std::string*> UserDataSvc::getLabels() {
-  if (!m_userData) return std::vector<const std::string*>();
-  return m_userData->getLabels(m_eventABC.getAthenaBarCode());
-}
-  
-
-StatusCode
-UserDataSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) {
-  if (IUserDataSvc::interfaceID().versionMatch(riid)) {
-    *ppvInterface = (IUserDataSvc*) this;
-  }
-  else {
-    // Interface is not directly available: try out a base class
-    return AthService::queryInterface(riid, ppvInterface);
-  }
-  addRef();
-  return StatusCode::SUCCESS;
-}
diff --git a/Control/AthenaServices/src/UserDataSvc.h b/Control/AthenaServices/src/UserDataSvc.h
deleted file mode 100644
index 9dffd5b1af07f2d4aac6443c20c60236a400ccae..0000000000000000000000000000000000000000
--- a/Control/AthenaServices/src/UserDataSvc.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-//Dear emacs, this is -*-c++-*-
-
-#ifndef USERDATASTORESERVICE
-#define USERDATASTORESERVICE
-
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/IIncidentListener.h"
-#include "AthenaBaseComps/AthService.h"
-
-#include "AthenaKernel/IUserDataSvc.h"
-#include "boost/any.hpp"
-
-//Forward declarations
-class UserDataStore;
-class StoreGateSvc;
-class IAthenaBarCode;
-
-template <class TYPE> class SvcFactory;
-
-
-class UserDataSvc: virtual public IUserDataSvc,
-		   public AthService,
-		   public IIncidentListener 
- {
-
- protected:
-   friend class SvcFactory<UserDataSvc>;
-
- public:
-
-   UserDataSvc(const std::string& name, ISvcLocator* pSvcLocator );
-  
-  ~UserDataSvc();
-
-   virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface );
-
-   StatusCode initialize();
-   StatusCode finalize();
-
-
-   //For Element decoration:
-   virtual StatusCode recordAny(const IAthenaBarCode& abc, const std::string& label, const boost::any& value);  
-   virtual StatusCode retrieveAny(const IAthenaBarCode& abc, const std::string& label, const boost::any*& value);
-   virtual bool contains(const IAthenaBarCode& obj, const std::string& label);
-   virtual std::vector<const std::string*> getLabels(const IAthenaBarCode& obj);
-
-   //For Event decoration:
-   virtual StatusCode recordAny(const std::string& label, const boost::any& value);  
-   virtual StatusCode retrieveAny(const std::string& label, const boost::any*& value);
-   virtual bool contains(const std::string& label);
-   virtual std::vector<const std::string*> getLabels();
-
-
-
-   //Legacy interface
-   virtual int vdecorateElement(const IAthenaBarCode &abc, const std::string& label,
-				const std::type_info &decoinfo, void* & deco);
-
-   virtual int vgetElementDecoration(const IAthenaBarCode &abc, const std::string& label,
-				     const std::type_info &decoinfo, void *&deco);
-
-
- private:
-
-   class DummyABC : virtual public IAthenaBarCode {
-   public:
-     DummyABC(const AthenaBarCode_t in) : m_abc(in) {}; 
-     AthenaBarCode_t getAthenaBarCode() const { return m_abc; }
-     void setAthenaBarCode(const AthenaBarCode_t in) { m_abc=in;}
-   private:
-     AthenaBarCode_t m_abc;
-
-   };
-
-   
-   void getUserDataStore();
-
-
-   template<typename T> 
-   bool AnyFromType(const std::type_info &decoinfo, void* & deco, boost::any& out);
-
-   StatusCode typeIDtoAny(const std::type_info &decoinfo, void* & deco, boost::any& out);
-
-   ServiceHandle<StoreGateSvc> m_storeGateSvc;
-  
-   /** incident service handle for {Begin,End}Event
-    */
-   void handle( const Incident& incident );
-   
-   std::string m_key;
-   UserDataStore* m_userData;
-   DummyABC m_eventABC;
-
-};
-
-
-template<typename T> 
-bool UserDataSvc::AnyFromType(const std::type_info &decoinfo, void* & deco, boost::any& out) {
-  if (decoinfo==typeid(T)) {
-    const T* v=static_cast<const T*>(deco);
-    out=(*v);
-    return true;
-  }
-  else
-    return false;
-}
-
-#endif
diff --git a/Control/AthenaServices/src/components/AthenaServices_entries.cxx b/Control/AthenaServices/src/components/AthenaServices_entries.cxx
index 03c5daf6eca95915ec2126a1555fe6859c884d8b..2badf0c8121e56cedec17c84b14bffb8b32e3bb8 100644
--- a/Control/AthenaServices/src/components/AthenaServices_entries.cxx
+++ b/Control/AthenaServices/src/components/AthenaServices_entries.cxx
@@ -12,7 +12,6 @@
 #include "../MemoryRescueSvc.h"
 #include "../FPEControlSvc.h"
 #include "../JobIDSvc.h"
-#include "../UserDataSvc.h"
 #include "../CoreDumpSvc.h"
 #include "../AthDictLoaderSvc.h"
 #include "../AthenaSealSvc.h"
@@ -46,7 +45,6 @@ DECLARE_COMPONENT( ThinningSvc )
 DECLARE_COMPONENT( MemoryRescueSvc )
 DECLARE_COMPONENT( FPEControlSvc )
 DECLARE_COMPONENT( JobIDSvc )
-DECLARE_COMPONENT( UserDataSvc )
 DECLARE_COMPONENT( CoreDumpSvc )
 DECLARE_COMPONENT( PageAccessControlSvc )
 DECLARE_COMPONENT( AthDictLoaderSvc )
@@ -65,4 +63,3 @@ DECLARE_COMPONENT( AthenaOutputStreamTool )
 DECLARE_COMPONENT( ThinningOutputTool )
 DECLARE_COMPONENT( AthenaStopperAlg )
 DECLARE_COMPONENT( AthIncFirerAlg )
-