diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
index 71393cb..b3b1961 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
@@ -491,6 +491,57 @@
             }
         });
 }
+
+bool pldm::responder::oem_ibm_platform::Handler::watchDogRunning()
+{
+    static constexpr auto watchDogObjectPath =
+        "/xyz/openbmc_project/watchdog/host0";
+    static constexpr auto watchDogEnablePropName = "Enabled";
+    static constexpr auto watchDogInterface =
+        "xyz.openbmc_project.State.Watchdog";
+    bool isWatchDogRunning = false;
+    try
+    {
+        isWatchDogRunning = pldm::utils::DBusHandler().getDbusProperty<bool>(
+            watchDogObjectPath, watchDogEnablePropName, watchDogInterface);
+    }
+    catch (const std::exception& e)
+    {
+        return false;
+    }
+    return isWatchDogRunning;
+}
+
+void pldm::responder::oem_ibm_platform::Handler::resetWatchDogTimer()
+{
+    static constexpr auto watchDogService = "xyz.openbmc_project.Watchdog";
+    static constexpr auto watchDogObjectPath =
+        "/xyz/openbmc_project/watchdog/host0";
+    static constexpr auto watchDogInterface =
+        "xyz.openbmc_project.State.Watchdog";
+    static constexpr auto watchDogResetPropName = "ResetTimeRemaining";
+
+    bool wdStatus = watchDogRunning();
+    if (wdStatus == false)
+    {
+        return;
+    }
+    try
+    {
+        auto& bus = pldm::utils::DBusHandler::getBus();
+        auto resetMethod =
+            bus.new_method_call(watchDogService, watchDogObjectPath,
+                                watchDogInterface, watchDogResetPropName);
+        resetMethod.append(true);
+        bus.call_noreply(resetMethod);
+    }
+    catch (const std::exception& e)
+    {
+        std::cerr << "Failed To reset watchdog timer"
+                  << "ERROR=" << e.what() << std::endl;
+        return;
+    }
+}
 } // namespace oem_ibm_platform
 } // namespace responder
 } // namespace pldm
diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.hpp b/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
index 4a91dcc..db89acf 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
@@ -146,6 +146,17 @@
      */
     void _processSystemReboot(sdeventplus::source::EventBase& source);
 
+    /** @brief To check if the watchdog app is running
+     *
+     *  @return the running status of watchdog app
+     */
+    bool watchDogRunning();
+
+    /** @brief Method to reset the Watchdog timer on receiving platform Event
+     *  Message for heartbeat elapsed time from Hostboot
+     */
+    void resetWatchDogTimer();
+
     ~Handler() = default;
 
     pldm::responder::CodeUpdate* codeUpdate; //!< pointer to CodeUpdate object
