diff --git a/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamCnvSvc.h b/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamCnvSvc.h
index f3757af2ed92dc15f6c8338a282dd44506719880..ff91d1b3428342200885e8d7f6246a726bc36b37 100644
--- a/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamCnvSvc.h
+++ b/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamCnvSvc.h
@@ -60,6 +60,11 @@ public:
   /// @brief Access to FullEventAssembler
    template <class T> StatusCode getFullEventAssembler(T*&t, const std::string& nm);
 
+  virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ) override;
+  //@}
+  /// Should rather be in IByteStreamSvc.h if we had one
+  static const InterfaceID& interfaceID();
+
 protected:
    RawEventWrite* setRawEvent (std::unique_ptr<RawEventWrite> rawEventWrite);
 
diff --git a/Event/ByteStreamCnvSvc/src/ByteStreamCnvSvc.cxx b/Event/ByteStreamCnvSvc/src/ByteStreamCnvSvc.cxx
index 545260bc556d0000601196457e64fc6557015b61..59184f2add55b5ab952c9df2ece362cfee42d0de 100644
--- a/Event/ByteStreamCnvSvc/src/ByteStreamCnvSvc.cxx
+++ b/Event/ByteStreamCnvSvc/src/ByteStreamCnvSvc.cxx
@@ -246,6 +246,28 @@ void ByteStreamCnvSvc::writeFEA (SlotData& slot)
    ATH_MSG_DEBUG("after FEAMAP size = " << feaMap.size());
 }
 
+
+StatusCode ByteStreamCnvSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) 
+{
+  if ( interfaceID().versionMatch(riid) )    {
+    *ppvInterface = (StoreGateSvc*)this;
+  }
+  else  {
+    // Interface is not directly available: try out a base class
+    return ByteStreamCnvSvcBase::queryInterface(riid, ppvInterface);
+  }
+  addRef();
+  return StatusCode::SUCCESS;
+}
+
+
+const InterfaceID& 
+ByteStreamCnvSvc::interfaceID() { 
+  static const InterfaceID IDByteStreamCnvSvc("ByteStreamCnvSvc", 1, 0);
+  return IDByteStreamCnvSvc;
+}
+
+
 RawEventWrite*
 ByteStreamCnvSvc::setRawEvent (std::unique_ptr<RawEventWrite> rawEventWrite)
 {