diff --git a/extensions/openpower-pels/host_notifier.cpp b/extensions/openpower-pels/host_notifier.cpp
index 175a644..b268c9c 100644
--- a/extensions/openpower-pels/host_notifier.cpp
+++ b/extensions/openpower-pels/host_notifier.cpp
@@ -40,6 +40,12 @@
                           std::bind(std::mem_fn(&HostNotifier::newLogCallback),
                                     this, std::placeholders::_1));
 
+    // Subscribe to be told about deleted PELs.
+    _repo.subscribeToDeletes(
+        subscriptionName,
+        std::bind(std::mem_fn(&HostNotifier::deleteLogCallback), this,
+                  std::placeholders::_1));
+
     // Add any existing PELs to the queue to send them if necessary.
     _repo.for_each(std::bind(std::mem_fn(&HostNotifier::addPELToQueue), this,
                              std::placeholders::_1));
@@ -188,6 +194,31 @@
     }
 }
 
+void HostNotifier::deleteLogCallback(uint32_t id)
+{
+    auto queueIt = std::find(_pelQueue.begin(), _pelQueue.end(), id);
+    if (queueIt != _pelQueue.end())
+    {
+        log<level::DEBUG>("Host notifier removing deleted log from queue");
+        _pelQueue.erase(queueIt);
+    }
+
+    auto sentIt = std::find(_sentPELs.begin(), _sentPELs.end(), id);
+    if (sentIt != _sentPELs.end())
+    {
+        log<level::DEBUG>("Host notifier removing deleted log from sent list");
+        _sentPELs.erase(sentIt);
+    }
+
+    // Nothing we can do about this...
+    if (id == _inProgressPEL)
+    {
+        log<level::WARNING>(
+            "A PEL was deleted while its host notification was in progress",
+            entry("PEL_ID=0x%X", id));
+    }
+}
+
 void HostNotifier::scheduleDispatch()
 {
     _dispatcher = std::make_unique<sdeventplus::source::Defer>(
