diff --git a/service/src/pfr_mgr.cpp b/service/src/pfr_mgr.cpp
index fc69fea..c729bba 100644
--- a/service/src/pfr_mgr.cpp
+++ b/service/src/pfr_mgr.cpp
@@ -16,6 +16,8 @@
 
 #include "pfr_mgr.hpp"
 
+#include "file.hpp"
+
 namespace pfr
 {
 
@@ -29,6 +31,10 @@
 std::shared_ptr<sdbusplus::asio::dbus_interface> associationIface;
 std::set<std::tuple<std::string, std::string, std::string>> associations;
 
+using GetSubTreeType = std::vector<
+    std::pair<std::string,
+              std::vector<std::pair<std::string, std::vector<std::string>>>>>;
+
 PfrVersion::PfrVersion(sdbusplus::asio::object_server& srv_,
                        std::shared_ptr<sdbusplus::asio::connection>& conn_,
                        const std::string& path_, const ImageType& imgType_,
@@ -189,6 +195,32 @@
 
     pfrCfgIface->initialize();
 
+    /*BMCBusy period MailBox handling */
+    pfrMBIface = server.add_interface("/xyz/openbmc_project/pfr",
+                                      "xyz.openbmc_project.PFR.Mailbox");
+
+    pfrMBIface->register_method("InitiateBMCBusyPeriod", [](bool setReset) {
+        if (setBMCBusy(setReset) < 0)
+        {
+            return false;
+        }
+        return true;
+    });
+
+    pfrMBIface->register_method("ReadMBRegister", [](uint32_t regAddr) {
+        uint8_t mailBoxReply = 0;
+        try
+        {
+            getMBRegister(regAddr, mailBoxReply);
+        }
+        catch (const std::exception& e)
+        {
+            throw;
+        }
+        return mailBoxReply;
+    });
+    pfrMBIface->initialize();
+
     associationIface =
         server.add_interface("/xyz/openbmc_project/software",
                              "xyz.openbmc_project.Association.Definitions");
