diff --git a/Database/AthenaPOOL/AthenaPoolTools/CMakeLists.txt b/Database/AthenaPOOL/AthenaPoolTools/CMakeLists.txt
index 1281d1a56081c9a6951942ba8fed218d079ce409..1a7ac3f5f2fae99fd64068e0a693a68fc90f7e7d 100644
--- a/Database/AthenaPOOL/AthenaPoolTools/CMakeLists.txt
+++ b/Database/AthenaPOOL/AthenaPoolTools/CMakeLists.txt
@@ -21,6 +21,7 @@ atlas_depends_on_subdirs( PRIVATE
 atlas_add_component( AthenaPoolTools
                      src/EventCount.cxx
                      src/MetadataTest.cxx
+                     src/BookkeeperDumper.cxx
                      src/RequireUniqueEvent.cxx
                      src/components/*.cxx
                      LINK_LIBRARIES AthenaBaseComps AthenaKernel StoreGateLib SGtests PersistentDataModel EventInfo xAODEventInfo GaudiKernel xAODCutFlow)
diff --git a/Database/AthenaPOOL/AthenaPoolTools/share/EventCount_jobOptions.py b/Database/AthenaPOOL/AthenaPoolTools/share/EventCount_jobOptions.py
index 691abe8892977b991b60559bf2d1b9dce84eff15..f9dd47ccb01ca24045deaff1f937edc686355763 100755
--- a/Database/AthenaPOOL/AthenaPoolTools/share/EventCount_jobOptions.py
+++ b/Database/AthenaPOOL/AthenaPoolTools/share/EventCount_jobOptions.py
@@ -21,6 +21,9 @@ alg = xAODMaker__EventInfoCnvAlg()
 alg.xAODKey = ""
 topSequence += alg
 
+#from AthenaPoolTools.AthenaPoolToolsConf import BookkeeperDumper
+#topSequence += BookkeeperDumper( OutputLevel = INFO)
+
 from AthenaPoolTools.AthenaPoolToolsConf import EventCount
 topSequence += EventCount( OutputLevel = INFO,
                            Dump        = True )
diff --git a/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.cxx b/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..adc4c7d20e731f2e47d0afee9c4debd86d94b2e4
--- /dev/null
+++ b/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.cxx
@@ -0,0 +1,109 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**
+ * @file BookkeeperDumper.cxx
+ * @brief Implementation of class BookkeeperDumper
+ */
+ 
+#include "BookkeeperDumper.h"
+
+#include "GaudiKernel/MsgStream.h"
+#include "GaudiKernel/AlgFactory.h"
+
+#include "PersistentDataModel/Token.h"
+#include "PersistentDataModel/DataHeader.h"
+#include "GaudiKernel/IIncidentSvc.h"
+#include "GaudiKernel/FileIncident.h"
+
+#include "StoreGate/StoreGateSvc.h"
+#include "AthenaKernel/IClassIDSvc.h"
+
+#include "xAODCutFlow/CutBookkeeperContainer.h"
+
+
+//___________________________________________________________________________
+BookkeeperDumper::BookkeeperDumper(const std::string& name, ISvcLocator* pSvcLocator) : 
+   AthAlgorithm(name, pSvcLocator) 
+{
+}
+
+BookkeeperDumper::~BookkeeperDumper()
+{}
+
+StatusCode BookkeeperDumper::initialize() 
+{
+   // clear containers
+   ATH_MSG_INFO ( "in initialize()" );
+
+   ServiceHandle<IIncidentSvc> incSvc("IncidentSvc", this->name());
+   ATH_CHECK( incSvc.retrieve() );
+   incSvc->addListener(this, "BeginInputFile", 100); 
+
+   return StatusCode::SUCCESS;
+}
+
+void BookkeeperDumper::handle(const Incident& inc)
+{
+  
+  ATH_MSG_INFO("handle() " << inc.type());
+
+  // Need to get input file name for event comparison
+  if (inc.type()=="BeginInputFile") {
+    //const FileIncident* fileInc  = dynamic_cast<const FileIncident*>(&inc);
+    ServiceHandle<StoreGateSvc> mdstore("StoreGateSvc/InputMetaDataStore", name());
+    if (mdstore.retrieve().isSuccess()) {
+      const DataHandle<xAOD::CutBookkeeperContainer> compBook(NULL);
+      if (mdstore->retrieve(compBook, "CutBookkeepers").isSuccess()) {
+        ATH_MSG_INFO("CBK size = " << compBook->size());
+        for (auto it = compBook->begin(); it != compBook->end(); ++it) {
+          ATH_MSG_INFO("CBK name= " << (*it)->name() << " stream=" << (*it)->inputStream() << " N=" << (*it)->nAcceptedEvents() << " W=" << (*it)->sumOfEventWeights());
+        }
+      } else {
+        ATH_MSG_INFO("CBK No CutBookkeepers " << mdstore->dump());
+      }
+      const DataHandle<xAOD::CutBookkeeperContainer> fileBook(NULL);
+      if (mdstore->retrieve(fileBook, "FileBookkeepers").isSuccess()) {
+        ATH_MSG_INFO("FBK size = " << fileBook->size());
+        for (auto it = fileBook->begin(); it != fileBook->end(); ++it) {
+          ATH_MSG_INFO("FBK name= " << (*it)->name() << " stream=" << (*it)->inputStream() << " N=" << (*it)->nAcceptedEvents() << " W=" << (*it)->sumOfEventWeights());
+        }
+      } else {
+        ATH_MSG_INFO("FBK No FileBookkeepers " << mdstore->dump());
+      }
+      const DataHandle<xAOD::CutBookkeeperContainer> incompBook(NULL);
+      if (mdstore->retrieve(incompBook, "IncompleteCutBookkeepers").isSuccess()) {
+        ATH_MSG_INFO("ICBK size = " << incompBook->size());
+        for (auto it = incompBook->begin(); it != incompBook->end(); ++it) {
+          ATH_MSG_INFO("ICBK name= " << (*it)->name() << " stream=" << (*it)->inputStream() << " N=" << (*it)->nAcceptedEvents() << " W=" << (*it)->sumOfEventWeights());
+        }
+      } else {
+        ATH_MSG_INFO("ICBK No CutBookkeepers " << mdstore->dump());
+      }
+      const DataHandle<xAOD::CutBookkeeperContainer> infileBook(NULL);
+      if (mdstore->retrieve(infileBook, "IncompleteFileBookkeepers").isSuccess()) {
+        ATH_MSG_INFO("IFBK size = " << infileBook->size());
+        for (auto it = infileBook->begin(); it != infileBook->end(); ++it) {
+          ATH_MSG_INFO("IFBK name= " << (*it)->name() << " stream=" << (*it)->inputStream() << " N=" << (*it)->nAcceptedEvents() << " W=" << (*it)->sumOfEventWeights());
+        }
+      } else {
+        ATH_MSG_INFO("IFBK No FileBookkeepers " << mdstore->dump());
+      }
+    }
+  }
+}
+
+StatusCode BookkeeperDumper::execute() 
+{
+   ATH_MSG_DEBUG ( "in execute()" );
+
+   return(StatusCode::SUCCESS);
+}
+
+StatusCode BookkeeperDumper::finalize() 
+{
+   ATH_MSG_DEBUG ( "in m_finalize()" );
+   
+   return(StatusCode::SUCCESS);
+}
diff --git a/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.h b/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.h
new file mode 100755
index 0000000000000000000000000000000000000000..bb17cdeac222984adb8bee80f40193e443c5c3ab
--- /dev/null
+++ b/Database/AthenaPOOL/AthenaPoolTools/src/BookkeeperDumper.h
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// BookkeeperDumper.h
+
+#ifndef ATHENAPOOLTOOLS_BOOKKEEPERDUMPER_H
+#define ATHENAPOOLTOOLS_BOOKKEEPERDUMPER_H
+/**
+ * @file BookkeeperDumper.h
+ * @brief class definition for BookkeeperDumper
+ */
+ 
+/**
+ * @class BookkeeperDumper
+ * @author Jack Cranshaw (Jack.Cranshaw@cern.ch)
+ * Created October 2017
+ */
+             
+                                                                                
+#include <string>
+#include <vector>
+#include "AthenaBaseComps/AthAlgorithm.h"
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/IIncidentListener.h"
+
+class IClassIDSvc;
+
+class BookkeeperDumper : public AthAlgorithm, virtual public IIncidentListener {
+public:
+	  
+  BookkeeperDumper(const std::string& name, ISvcLocator* pSvcLocator);
+  virtual ~BookkeeperDumper();
+  
+  StatusCode initialize(); /// Algorithm interface. Cannot re-initialize with this
+  StatusCode execute();    /// Algorithm interface.
+  StatusCode finalize();   /// Algorithm interface.
+
+  void handle(const Incident& inc);
+  
+private:
+};
+#endif
diff --git a/Database/AthenaPOOL/AthenaPoolTools/src/components/AthenaPoolTools_entries.cxx b/Database/AthenaPOOL/AthenaPoolTools/src/components/AthenaPoolTools_entries.cxx
index 7d52ed1c536829f2f9cbf295381343a47ae8e391..e2f9bc79794048de6cd30205ddb82349db00b38d 100644
--- a/Database/AthenaPOOL/AthenaPoolTools/src/components/AthenaPoolTools_entries.cxx
+++ b/Database/AthenaPOOL/AthenaPoolTools/src/components/AthenaPoolTools_entries.cxx
@@ -1,8 +1,10 @@
 #include "../EventCount.h"
 #include "../MetadataTest.h"
+#include "../BookkeeperDumper.h"
 #include "../RequireUniqueEvent.h"
 
 DECLARE_COMPONENT( EventCount )
 DECLARE_COMPONENT( MetadataTest )
+DECLARE_COMPONENT( BookkeeperDumper )
 DECLARE_COMPONENT( RequireUniqueEvent )