diff --git a/include/dbus/file_notifier.hpp b/include/dbus/file_notifier.hpp
index da37158..1e72a6b 100644
--- a/include/dbus/file_notifier.hpp
+++ b/include/dbus/file_notifier.hpp
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <sdbusplus/server.hpp>
+#include <sdbusplus/asio/object_server.hpp>
 #include <xyz/openbmc_project/Common/FilePath/server.hpp>
 
 #include <format>
@@ -9,36 +9,46 @@
 namespace bios_bmc_smm_error_logger
 {
 
-using FileNotifierInterface = sdbusplus::server::object_t<
-    sdbusplus::xyz::openbmc_project::Common::server::FilePath>;
-
 /**
  * @brief A class for notifying file paths of CPER logs.
  */
-class CperFileNotifier : public FileNotifierInterface
+class CperFileNotifier
 {
   public:
     /**
      * @brief Constructor for the CperFileNotifier class.
      *
-     * @param bus - bus to attach to.
+     * @param server - sdbusplus asio object server.
      * @param filePath - full path of the CPER log JSON file.
      * @param entry - index of the DBus file path object.
      */
-    CperFileNotifier(sdbusplus::bus_t& bus, const std::string& filePath,
-                     uint64_t entry) :
-        FileNotifierInterface(bus, generatePath(entry).c_str(),
-                              action::emit_no_signals)
+    CperFileNotifier(sdbusplus::asio::object_server& server,
+                     const std::string& filePath, uint64_t entry) :
+        server(server)
     {
-        // We only need the interface added signal for the fault monitor. So
-        // stop emitting properties changed signal.
-        path(filePath, /*skipSignal=*/true);
+        pathIface = server.add_interface(generatePath(entry).c_str(),
+                                         "xyz.openbmc_project.Common.FilePath");
+        pathIface->register_property("Path", filePath);
+        pathIface->initialize();
     }
 
+    ~CperFileNotifier()
+    {
+        server.remove_interface(pathIface);
+    }
+
+    CperFileNotifier& operator=(const CperFileNotifier&) = delete;
+    CperFileNotifier& operator=(CperFileNotifier&&) = delete;
+    CperFileNotifier(const CperFileNotifier&) = delete;
+    CperFileNotifier(CperFileNotifier&&) = default;
+
     static constexpr const char* cperBasePath =
         "/xyz/openbmc_project/external_storer/bios_bmc_smm_error_logger/CPER";
 
   private:
+    sdbusplus::asio::object_server& server;
+    std::shared_ptr<sdbusplus::asio::dbus_interface> pathIface;
+
     /**
      * @brief Generate a path for the CperFileNotifier DBus object.
      *
