diff --git a/delete_all.hpp b/delete_all.hpp
deleted file mode 100644
index 9cca2fd..0000000
--- a/delete_all.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#pragma once
-
-#include "interfaces.hpp"
-#include "manager.hpp"
-
-namespace ibm
-{
-namespace logging
-{
-
-/**
- *  @class Delete
- *
- *  Implements the xyz.openbmc_project.Collect.DeleteAll interface
- *  that will delete all ibm-logging entries.
- */
-class DeleteAll : public DeleteAllObject
-{
-  public:
-    DeleteAll() = delete;
-    DeleteAll(const DeleteAll&) = delete;
-    DeleteAll& operator=(const DeleteAll&) = delete;
-    DeleteAll(DeleteAll&&) = default;
-    DeleteAll& operator=(DeleteAll&&) = default;
-    virtual ~DeleteAll() = default;
-
-    /**
-     * Constructor
-     *
-     * @param[in] bus - the D-Bus bus object
-     * @param[in] path - the object path
-     * @param[in] manager - the Manager object
-     */
-    DeleteAll(sdbusplus::bus::bus& bus, const std::string& path,
-              Manager& manager) :
-        DeleteAllObject(bus, path.c_str()),
-        manager(manager)
-    {
-    }
-
-    /**
-     * The Delete D-Bus method
-     */
-    inline void deleteAll() override
-    {
-        manager.eraseAll();
-    }
-
-  private:
-    /**
-     * The Manager object
-     */
-    Manager& manager;
-};
-}
-}
diff --git a/interfaces.hpp b/interfaces.hpp
index e5e8293..b889cbb 100644
--- a/interfaces.hpp
+++ b/interfaces.hpp
@@ -2,7 +2,6 @@
 
 #include <com/ibm/Logging/Policy/server.hpp>
 #include <xyz/openbmc_project/Object/Delete/server.hpp>
-#include <xyz/openbmc_project/Collection/DeleteAll/server.hpp>
 
 namespace ibm
 {
@@ -15,10 +14,6 @@
 using DeleteInterface = sdbusplus::xyz::openbmc_project::Object::server::Delete;
 using DeleteObject = ServerObject<DeleteInterface>;
 
-using DeleteAllInterface =
-    sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll;
-using DeleteAllObject = ServerObject<DeleteAllInterface>;
-
 using PolicyInterface = sdbusplus::com::ibm::Logging::server::Policy;
 using PolicyObject = ServerObject<PolicyInterface>;
 
diff --git a/main.cpp b/main.cpp
index 7a65f09..5a2870d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -15,7 +15,6 @@
  */
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/manager.hpp>
-#include "delete_all.hpp"
 #include "manager.hpp"
 #include "config.h"
 
@@ -26,7 +25,6 @@
     sdbusplus::server::manager::manager objManager(bus, LOGGING_PATH);
 
     ibm::logging::Manager manager{bus};
-    ibm::logging::DeleteAll da{bus, LOGGING_PATH, manager};
 
     bus.request_name(IBM_LOGGING_BUSNAME);
 
diff --git a/manager.cpp b/manager.cpp
index 45982fc..d47b3ad 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -84,11 +84,6 @@
     }
 }
 
-void Manager::eraseAll()
-{
-    entries.clear();
-}
-
 void Manager::addInterface(const std::string& objectPath, InterfaceType type,
                            std::experimental::any& object)
 {
diff --git a/manager.hpp b/manager.hpp
index 0320b0c..69d9479 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -49,11 +49,6 @@
      */
     void erase(const std::string& objectPath);
 
-    /**
-     * Erases all entries
-     */
-    void eraseAll();
-
   private:
     /**
      * The callback for an interfaces added signal
