diff --git a/control/json/triggers/handlers.hpp b/control/json/triggers/handlers.hpp
index f4e7adb..15bced0 100644
--- a/control/json/triggers/handlers.hpp
+++ b/control/json/triggers/handlers.hpp
@@ -1,6 +1,9 @@
 #pragma once
 
 #include "../manager.hpp"
+#include "../utils/flight_recorder.hpp"
+
+#include <fmt/format.h>
 
 #include <sdbusplus/message.hpp>
 
@@ -127,13 +130,12 @@
 
     /**
      * @brief Processes a name owner changed signal and updates the service's
-     * owner state
+     * owner state for all objects/interfaces associated in the cache
      *
      * @param[in] msg - The sdbusplus signal message
-     * @param[in] obj - Object data associated with the signal
      * @param[in] mgr - Manager that stores the service's owner state
      */
-    static bool nameOwnerChanged(message& msg, const SignalObject& obj,
+    static bool nameOwnerChanged(message& msg, const SignalObject&,
                                  Manager& mgr)
     {
         bool hasOwner = false;
@@ -150,8 +152,10 @@
         {
             hasOwner = true;
         }
-
-        mgr.setOwner(std::get<Path>(obj), serv, std::get<Intf>(obj), hasOwner);
+        FlightRecorder::instance().log(
+            "nameOwnerChanged", fmt::format("Service: {}, Owned: {}", serv,
+                                            hasOwner ? "true" : "false"));
+        mgr.setOwner(serv, hasOwner);
         return true;
     }
 
diff --git a/control/json/triggers/signal.cpp b/control/json/triggers/signal.cpp
index 7a2dce0..9f7caa3 100644
--- a/control/json/triggers/signal.cpp
+++ b/control/json/triggers/signal.cpp
@@ -188,12 +188,8 @@
                 // Setup name owner changed signal handler on the group
                 // member's service
                 const auto match = rules::nameOwnerChanged(serv);
-                SignalPkg signalPkg = {
-                    Handlers::nameOwnerChanged,
-                    SignalObject(std::cref(member),
-                                 std::cref(group.getInterface()),
-                                 std::cref(group.getProperty())),
-                    actions};
+                SignalPkg signalPkg = {Handlers::nameOwnerChanged,
+                                       SignalObject(), actions};
                 // If signal match already exists, then the service will be the
                 // same so add action to be run
                 auto isSameSig = [](SignalPkg& pkg) { return true; };
