diff --git a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
index fbc7ba7..35dc058 100644
--- a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
+++ b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
@@ -6,6 +6,8 @@
 #include "common/utils.hpp"
 #include "libpldmresponder/pdr.hpp"
 
+#include <xyz/openbmc_project/Common/error.hpp>
+
 #include <iostream>
 
 namespace pldm
@@ -41,9 +43,20 @@
             return PLDM_SUCCESS;
         }
     }
+    catch (
+        const sdbusplus::xyz::openbmc_project::Common::Error::ResourceNotFound&
+            e)
+    {
+        /* Exception is expected to happen in the case when state manager is
+         * started after pldm, this is expected to happen in reboot case
+         * where host is considered to be up. As host is up pldm is expected
+         * to send attribute update event to host so this is not an error
+         * case */
+    }
     catch (const sdbusplus::exception_t& e)
     {
-        std::cerr << "Error in getting current host state, continue ... \n";
+        std::cerr << "Error in getting current host state, " << e.name()
+                  << " Continue sending the bios attribute update event ... \n";
     }
 
     auto instanceId = requester->getInstanceId(eid);
@@ -61,8 +74,9 @@
         requestMsg.size() - sizeof(pldm_msg_hdr), request);
     if (rc != PLDM_SUCCESS)
     {
-        std::cerr << "Message encode failure 1. PLDM error code = " << std::hex
-                  << std::showbase << rc << "\n";
+        std::cerr
+            << "BIOS Attribute update event message encode failure. PLDM error code = "
+            << std::hex << std::showbase << rc << "\n";
         requester->markFree(eid, instanceId);
         return rc;
     }
@@ -73,7 +87,7 @@
         if (response == nullptr || !respMsgLen)
         {
             std::cerr
-                << "Failed to receive response for platform event message \n";
+                << "Failed to receive response for BIOS Attribute update platform event message \n";
             return;
         }
         uint8_t completionCode{};
@@ -82,10 +96,11 @@
                                                      &completionCode, &status);
         if (rc || completionCode)
         {
-            std::cerr << "Failed to decode_platform_event_message_resp: "
-                      << "rc=" << rc
-                      << ", cc=" << static_cast<unsigned>(completionCode)
-                      << std::endl;
+            std::cerr
+                << "Failed to decode BIOS Attribute update platform_event_message_resp: "
+                << "rc=" << rc
+                << ", cc=" << static_cast<unsigned>(completionCode)
+                << std::endl;
         }
     };
     rc = handler->registerRequest(
@@ -93,7 +108,8 @@
         std::move(requestMsg), std::move(platformEventMessageResponseHandler));
     if (rc)
     {
-        std::cerr << "Failed to send the platform event message \n";
+        std::cerr
+            << "Failed to send BIOS Attribute update the platform event message \n";
     }
 
     return rc;
