diff --git a/extensions/openpower-pels/manager.cpp b/extensions/openpower-pels/manager.cpp
index 4c90d1e..6bbdf11 100644
--- a/extensions/openpower-pels/manager.cpp
+++ b/extensions/openpower-pels/manager.cpp
@@ -156,6 +156,9 @@
                         .c_str());
 
                 _repo.archivePEL(*pel);
+
+                // No need to keep around the openBMC event log entry
+                scheduleObmcLogDelete(obmcLogID);
                 return;
             }
         }
@@ -225,6 +228,9 @@
         std::ofstream pelFile{getPELRepoPath() / "badPEL"};
         pelFile.write(reinterpret_cast<const char*>(pelData.data()),
                       pelData.size());
+
+        // No need to keep around the openBMC event log entry
+        scheduleObmcLogDelete(obmcLogID);
     }
 }
 
@@ -902,5 +908,20 @@
     }
 }
 
+void Manager::scheduleObmcLogDelete(uint32_t obmcLogID)
+{
+    _obmcLogDeleteEventSource = std::make_unique<sdeventplus::source::Defer>(
+        _event, std::bind(std::mem_fn(&Manager::deleteObmcLog), this,
+                          std::placeholders::_1, obmcLogID));
+}
+
+void Manager::deleteObmcLog(sdeventplus::source::EventBase&, uint32_t obmcLogID)
+{
+    log<level::INFO>(
+        fmt::format("Removing event log with no PEL: {}", obmcLogID).c_str());
+    _logManager.erase(obmcLogID);
+    _obmcLogDeleteEventSource.reset();
+}
+
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/manager.hpp b/extensions/openpower-pels/manager.hpp
index 42ce0c4..8d0079d 100644
--- a/extensions/openpower-pels/manager.hpp
+++ b/extensions/openpower-pels/manager.hpp
@@ -425,6 +425,21 @@
     void createPELEntry(uint32_t obmcLogID, bool skipIaSignal = false);
 
     /**
+     * @brief Schedules the delete of the OpenBMC event log for when
+     *        execution gets back to the event loop (uses sd_event_add_defer).
+     *
+     * @param[in] obmcLogID - The OpenBMC entry log ID
+     */
+    void scheduleObmcLogDelete(uint32_t obmcLogID);
+
+    /**
+     * @brief SD event callback to delete an OpenBMC event log
+     *
+     * @param[in] obmcLogID - The OpenBMC entry log ID
+     */
+    void deleteObmcLog(sdeventplus::source::EventBase&, uint32_t obmcLogID);
+
+    /**
      * @brief Reference to phosphor-logging's Manager class
      */
     phosphor::logging::internal::Manager& _logManager;
@@ -483,6 +498,12 @@
     std::unique_ptr<sdeventplus::source::Defer> _repoPrunerEventSource;
 
     /**
+     * @brief The event source for deleting an OpenBMC event log.
+     *        Used when its corresponding PEL is invalid.
+     */
+    std::unique_ptr<sdeventplus::source::Defer> _obmcLogDeleteEventSource;
+
+    /**
      * @brief The even source for watching for deleted PEL files.
      */
     std::unique_ptr<sdeventplus::source::IO> _pelFileDeleteEventSource;
