diff --git a/libpldmresponder/bios.cpp b/libpldmresponder/bios.cpp
index fbe6144..e7d4c5e 100644
--- a/libpldmresponder/bios.cpp
+++ b/libpldmresponder/bios.cpp
@@ -67,9 +67,10 @@
 
 DBusHandler dbusHandler;
 
-Handler::Handler(int fd, uint8_t eid, dbus_api::Requester* requester) :
+Handler::Handler(int fd, uint8_t eid, dbus_api::Requester* requester,
+                 pldm::requester::Handler<pldm::requester::Request>* handler) :
     biosConfig(BIOS_JSONS_DIR, BIOS_TABLES_DIR, &dbusHandler, fd, eid,
-               requester)
+               requester, handler)
 {
     biosConfig.removeTables();
     biosConfig.buildTables();
diff --git a/libpldmresponder/bios.hpp b/libpldmresponder/bios.hpp
index 2fbf8ab..3ec3a57 100644
--- a/libpldmresponder/bios.hpp
+++ b/libpldmresponder/bios.hpp
@@ -9,6 +9,7 @@
 #include "bios_table.hpp"
 #include "pldmd/dbus_impl_requester.hpp"
 #include "pldmd/handler.hpp"
+#include "requester/handler.hpp"
 
 #include <stdint.h>
 
@@ -34,8 +35,10 @@
      *  @param[in] fd - socket descriptor to communicate to host
      *  @param[in] eid - MCTP EID of host firmware
      *  @param[in] requester - pointer to Requester object
+     *  @param[in] handler - PLDM request handler
      */
-    Handler(int fd, uint8_t eid, dbus_api::Requester* requester);
+    Handler(int fd, uint8_t eid, dbus_api::Requester* requester,
+            pldm::requester::Handler<pldm::requester::Request>* handler);
 
     /** @brief Handler for GetDateTime
      *
diff --git a/libpldmresponder/bios_config.cpp b/libpldmresponder/bios_config.cpp
index c7c408e..b538cf1 100644
--- a/libpldmresponder/bios_config.cpp
+++ b/libpldmresponder/bios_config.cpp
@@ -37,12 +37,13 @@
 
 } // namespace
 
-BIOSConfig::BIOSConfig(const char* jsonDir, const char* tableDir,
-                       DBusHandler* const dbusHandler, int fd, uint8_t eid,
-                       dbus_api::Requester* requester) :
+BIOSConfig::BIOSConfig(
+    const char* jsonDir, const char* tableDir, DBusHandler* const dbusHandler,
+    int fd, uint8_t eid, dbus_api::Requester* requester,
+    pldm::requester::Handler<pldm::requester::Request>* handler) :
     jsonDir(jsonDir),
     tableDir(tableDir), dbusHandler(dbusHandler), fd(fd), eid(eid),
-    requester(requester)
+    requester(requester), handler(handler)
 
 {
     fs::create_directories(tableDir);
@@ -924,7 +925,7 @@
     {
 #ifdef OEM_IBM
         auto rc = pldm::responder::platform::sendBiosAttributeUpdateEvent(
-            fd, eid, requester, listOfHandles);
+            eid, requester, listOfHandles, handler);
         if (rc != PLDM_SUCCESS)
         {
             return;
diff --git a/libpldmresponder/bios_config.hpp b/libpldmresponder/bios_config.hpp
index a6ae3e7..8477628 100644
--- a/libpldmresponder/bios_config.hpp
+++ b/libpldmresponder/bios_config.hpp
@@ -5,6 +5,7 @@
 #include "bios_attribute.hpp"
 #include "bios_table.hpp"
 #include "pldmd/dbus_impl_requester.hpp"
+#include "requester/handler.hpp"
 
 #include <nlohmann/json.hpp>
 
@@ -72,10 +73,13 @@
      *  @param[in] fd - socket descriptor to communicate to host
      *  @param[in] eid - MCTP EID of host firmware
      *  @param[in] requester - pointer to Requester object
+     *  @param[in] handler - PLDM request handler
      */
-    explicit BIOSConfig(const char* jsonDir, const char* tableDir,
-                        DBusHandler* const dbusHandler, int fd, uint8_t eid,
-                        dbus_api::Requester* requester);
+    explicit BIOSConfig(
+        const char* jsonDir, const char* tableDir,
+        DBusHandler* const dbusHandler, int fd, uint8_t eid,
+        dbus_api::Requester* requester,
+        pldm::requester::Handler<pldm::requester::Request>* handler);
 
     /** @brief Set attribute value on dbus and attribute value table
      *  @param[in] entry - attribute value entry
@@ -144,6 +148,9 @@
      */
     dbus_api::Requester* requester;
 
+    /** @brief PLDM request handler */
+    pldm::requester::Handler<pldm::requester::Request>* handler;
+
     // vector persists all attributes
     using BIOSAttributes = std::vector<std::unique_ptr<BIOSAttribute>>;
     BIOSAttributes biosAttributes;
diff --git a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
index 25300ca..00ec927 100644
--- a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
@@ -80,7 +80,7 @@
         .WillByDefault(Throw(std::exception()));
 
     BIOSConfig biosConfig("./bios_jsons", tableDir.c_str(), &dbusHandler, 0, 0,
-                          nullptr);
+                          nullptr, nullptr);
     biosConfig.buildTables();
 
     auto stringTable = biosConfig.getBIOSTable(PLDM_BIOS_STRING_TABLE);
@@ -249,7 +249,7 @@
     MockdBusHandler dbusHandler;
 
     BIOSConfig biosConfig("./bios_jsons", tableDir.c_str(), &dbusHandler, 0, 0,
-                          nullptr);
+                          nullptr, nullptr);
     biosConfig.removeTables();
     biosConfig.buildTables();
 
diff --git a/libpldmresponder/test/meson.build b/libpldmresponder/test/meson.build
index 623e28e..49e5a23 100644
--- a/libpldmresponder/test/meson.build
+++ b/libpldmresponder/test/meson.build
@@ -24,7 +24,7 @@
   '../../pldmd/instance_id.cpp',
   '../../pldmd/dbus_impl_requester.cpp'
   ]
-dep_src = declare_dependency(sources: dep_src_files)
+dep_src = declare_dependency(sources: dep_src_files,include_directories: '../../requester')
 
 foreach t : tests
   test(t, executable(t.underscorify(), t + '.cpp',
