diff --git a/storagehandler.cpp b/storagehandler.cpp
index 8927490..ced34eb 100644
--- a/storagehandler.cpp
+++ b/storagehandler.cpp
@@ -78,12 +78,19 @@
 SELCacheMap selCacheMap __attribute__((init_priority(101)));
 std::unique_ptr<sdbusplus::bus::match::match> selAddedMatch
     __attribute__((init_priority(101)));
+std::unique_ptr<sdbusplus::bus::match::match> selRemovedMatch
+    __attribute__((init_priority(101)));
 
-std::pair<uint16_t, SELEntry> parseLoggingEntry(const std::string& p)
+static inline uint16_t getLoggingId(const std::string& p)
 {
     namespace fs = std::filesystem;
     fs::path entryPath(p);
-    auto id = static_cast<uint16_t>(std::stoul(entryPath.filename().string()));
+    return std::stoul(entryPath.filename().string());
+}
+
+std::pair<uint16_t, SELEntry> parseLoggingEntry(const std::string& p)
+{
+    auto id = getLoggingId(p);
     // TODO: parse the sel data
     return {id, {}};
 }
@@ -104,6 +111,22 @@
     selCacheMap.insert(parseLoggingEntry(p));
 }
 
+static void selRemovedCallback(sdbusplus::message::message& m)
+{
+    sdbusplus::message::object_path objPath;
+    try
+    {
+        m.read(objPath);
+    }
+    catch (const sdbusplus::exception::exception& e)
+    {
+        log<level::ERR>("Failed to read object path");
+        return;
+    }
+    std::string p = objPath;
+    selCacheMap.erase(getLoggingId(p));
+}
+
 void registerSelCallbackHandler()
 {
     using namespace sdbusplus::bus::match::rules;
@@ -114,7 +137,12 @@
             bus, interfacesAdded(logWatchPath),
             std::bind(selAddedCallback, std::placeholders::_1));
     }
-    // TODO: Add other callbacks
+    if (!selRemovedMatch)
+    {
+        selRemovedMatch = std::make_unique<sdbusplus::bus::match::match>(
+            bus, interfacesRemoved(logWatchPath),
+            std::bind(selRemovedCallback, std::placeholders::_1));
+    }
 }
 
 void initSELCache()
