diff --git a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py
index e097435ce35128a542f9ae4094d91925ed7f3c76..8ad93126c1be83c19afea106bb22f428af9baffa 100644
--- a/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py
+++ b/Database/AthenaPOOL/OutputStreamAthenaPool/python/OutputStreamConfig.py
@@ -105,5 +105,4 @@ def OutputStreamCfg(configFlags, streamName, ItemList=[], MetadataItemList=[],
       poolcnvsvc.PoolAttributes += [ "DatabaseName = '" + fileName + "'; ContainerName = 'TTree=Aux.'; CONTAINER_SPLITLEVEL = '1'"]
 
    result.addEventAlgo(outputStream)
-   return result
-
+   return result
\ No newline at end of file
diff --git a/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx b/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx
index a8ba371fea76f6d7f06f72f3141b5e6ffe00ed47..2abe876d6f5a943587328ba5e927962d32e71788 100644
--- a/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx
+++ b/Event/xAOD/xAODTrackingCnv/src/TrackParticleCnvAlg.cxx
@@ -89,50 +89,52 @@ namespace xAODMaker {
 
   StatusCode TrackParticleCnvAlg::execute(const EventContext& ctx) const {
 
-    const Rec::TrackParticleContainer *aod=nullptr;
-    const TrackCollection *tracks = nullptr;
-    const xAODTruthParticleLinkVector *truthLinks = nullptr;
-    const TrackParticleTruthCollection *aodTruth = nullptr;
-    const TrackTruthCollection *trackTruth = nullptr;
+    const Rec::TrackParticleContainer* aod = nullptr;
+    const TrackCollection* tracks = nullptr;
+    const xAODTruthParticleLinkVector* truthLinks = nullptr;
+    const TrackParticleTruthCollection* aodTruth = nullptr;
+    const TrackTruthCollection* trackTruth = nullptr;
 
     // Retrieve the AOD particles:
-    if (m_convertAODTrackParticles){
+    if (m_convertAODTrackParticles) {
       SG::ReadHandle<Rec::TrackParticleContainer> rh_aod(m_aod, ctx);
       if (!rh_aod.isValid()) {
-        ATH_MSG_DEBUG("Error finding " << m_aod.key() << " found. Do nothing.");
-        return StatusCode::SUCCESS;
-      } else {
-	aod = rh_aod.cptr();
+        ATH_MSG_ERROR( m_aod.key() << " not found");
+        return StatusCode::FAILURE;
+      }
+      else {
+        aod = rh_aod.cptr();
         ATH_MSG_VERBOSE("Got TrackParticleContainer with key " << m_aod.key() << " found.");
       }
     }
     // Retrieve the Tracks:
-    if (m_convertTracks){
+    if (m_convertTracks) {
       SG::ReadHandle<TrackCollection> rh_tracks(m_tracks, ctx);
       if (!rh_tracks.isValid()) {
-        ATH_MSG_DEBUG("Error finding " << m_tracks.key() << " found. Do nothing.");
+        ATH_MSG_ERROR( m_tracks.key() << " not found");
         return StatusCode::SUCCESS;
-      }  else {
-	tracks = rh_tracks.cptr();
+      }
+      else {
+        tracks = rh_tracks.cptr();
         ATH_MSG_VERBOSE("Got TrackCollection with key " << m_tracks.key() << " found.");
       }
     }
-    if( m_addTruthLink ){
-      if (m_convertAODTrackParticles){
-	SG::ReadHandle<TrackParticleTruthCollection> rh_aodTruth(m_aodTruth, ctx);
+    if (m_addTruthLink) {
+      if (m_convertAODTrackParticles) {
+        SG::ReadHandle<TrackParticleTruthCollection> rh_aodTruth(m_aodTruth, ctx);
         if (!rh_aodTruth.isValid()) {
           ATH_MSG_WARNING("No TrackParticleTruthCollection with key " << m_aodTruth.key() << " found. Do nothing.");
           return StatusCode::SUCCESS;
         }
-	else aodTruth = rh_aodTruth.cptr();
+        else aodTruth = rh_aodTruth.cptr();
       }
-      if (m_convertTracks){
-	SG::ReadHandle<TrackTruthCollection> rh_trackTruth(m_trackTruth, ctx);
+      if (m_convertTracks) {
+        SG::ReadHandle<TrackTruthCollection> rh_trackTruth(m_trackTruth, ctx);
         if (!rh_trackTruth.isValid()) {
           ATH_MSG_WARNING("No DetailedTrackTruthCollection with key " << m_trackTruth.key() << " found. Do nothing.");
           return StatusCode::SUCCESS;
         }
-	else trackTruth = rh_trackTruth.cptr();
+        else trackTruth = rh_trackTruth.cptr();
       }
 
       SG::ReadHandle<xAODTruthParticleLinkVector> rh_truthParticleLinkVec(m_truthParticleLinkVec, ctx);
@@ -145,13 +147,13 @@ namespace xAODMaker {
     if (m_convertTracks) {
       SG::WriteHandle<xAOD::TrackParticleContainer> wh_xaodout(m_xaodout, ctx);
       ATH_CHECK(wh_xaodout.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
-      convert((*tracks), trackTruth, m_TrackCollectionCnvTool,  wh_xaodout, truthLinks);
+      convert((*tracks), trackTruth, m_TrackCollectionCnvTool, wh_xaodout, truthLinks);
 
       //Monitor track parameters
-      if( m_doMonitoring) m_trackMonitoringTool->monitor_tracks( "Track", "Pass", *wh_xaodout );
+      if (m_doMonitoring) m_trackMonitoringTool->monitor_tracks("Track", "Pass", *wh_xaodout);
 
     }
-    if (m_convertAODTrackParticles){
+    if (m_convertAODTrackParticles) {
       SG::WriteHandle<xAOD::TrackParticleContainer> wh_xaodTrackParticlesout(m_xaodTrackParticlesout, ctx);
       ATH_CHECK(wh_xaodTrackParticlesout.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
       convert((*aod), aodTruth, m_RecTrackParticleContainerCnvTool, wh_xaodTrackParticlesout, truthLinks);
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 3fe4ecd42cc69a58285f873a51a7bf0a772fbe70..fca7b6ca9863d7aa8c9768245b9dbb1e75a3e8de 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -269,6 +269,15 @@ def TrackRecoCfg(flags):
     result.merge(TrackingSiPatternCfg(flags, [], "ResolvedTracks", "SiSPSeededTracks"))
     result.merge(TrackParticleCnvAlgCfg(flags, TrackContainerName="ResolvedTracks"))
 
+    from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
+    toAOD = ["xAOD::TrackParticleContainer#InDetTrackParticles", "xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux."]
+    toESD = []
+    if flags.Output.doWriteESD:
+        result.merge(OutputStreamCfg(flags, "ESD", ItemList=toAOD+toESD))
+
+    if flags.Output.doWriteAOD:
+        result.merge(OutputStreamCfg(flags, "AOD", ItemList=toAOD ))
+    
     return result
 
 if __name__ == "__main__":
diff --git a/Reconstruction/RecJobTransforms/python/RecoSteering.py b/Reconstruction/RecJobTransforms/python/RecoSteering.py
index f911cfeed1fef0d7d8fa6c10d85c6f158b09bdf2..42a46413a6537e55a93239b001dc58535e9e1a30 100644
--- a/Reconstruction/RecJobTransforms/python/RecoSteering.py
+++ b/Reconstruction/RecJobTransforms/python/RecoSteering.py
@@ -44,15 +44,12 @@ def RecoSteering(flags):
     # pflow
 
     #setup output
-    # TODO - decide how we collect objects that need recording (the old way was a global & external list)
-    itemsToRecord = ["xAOD::EventInfo#EventInfo"]
-    from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
     if flags.Output.doWriteESD:
-        acc.merge(OutputStreamCfg(flags, "ESD", ItemList=itemsToRecord, disableEventTag=True))
+        log.info("ESD ItemList: %s", acc.getEventAlgo("OutputStreamESD").ItemList)
         log.info("---------- Configured ESD writing")
 
     if flags.Output.doWriteAOD:
-        acc.merge(OutputStreamCfg(flags, "AOD", ItemList=itemsToRecord, disableEventTag=True))
+        log.info("ESD ItemList: %s", acc.getEventAlgo("OutputStreamAOD").ItemList)
         log.info("---------- Configured AOD writing")
 
     return acc
@@ -74,6 +71,8 @@ def _run(input):
     flags.Detector.RecoSCT=True
     flags.Detector.RecoTRT=True
     flags.Calo.TopoCluster.doTopoClusterLocalCalib=False
+    flags.Output.ESDFileName="ESD.pool.root"
+    flags.Output.AODFileName="AOD.pool.root"
     parser = flags.getArgumentParser()
     args = flags.fillFromArgs(parser=parser)
 
@@ -91,7 +90,8 @@ def _run(input):
     acc.merge(RecoSteering(flags), sequenceName="AthAlgSeq")
     confStamp = datetime.datetime.now()
     log.info("configured in %d seconds", (confStamp-startStamp).seconds )
-
+    acc.getService("StoreGateSvc").Dump=True
+    acc.getEventAlgo("TrackParticleCnvAlg").OutputLevel=1
     acc.printConfig(withDetails=True)
     if args.configOnly:
         with open(args.configOnly, "wb") as confFile: