diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
index 2375d93..7fa09ee 100644
--- a/vpd-manager/manager.cpp
+++ b/vpd-manager/manager.cpp
@@ -39,6 +39,7 @@
     _bus(std::move(bus)), _manager(_bus, objPath)
 {
     _bus.request_name(busName);
+    sd_bus_default(&sdBus);
 }
 
 void Manager::run()
@@ -175,7 +176,34 @@
             [this](sdbusplus::message_t& msg) { hostStateCallBack(msg); });
 }
 
-void Manager::hostStateCallBack(sdbusplus::message_t& msg)
+void Manager::checkEssentialFrus()
+{
+    for (const auto& invPath : essentialFrus)
+    {
+        const auto res = readBusProperty(invPath, invItemIntf, "Present");
+
+        // implies the essential FRU is missing. Log PEL.
+        if (res == "false")
+        {
+            auto rc = sd_bus_call_method_async(
+                sdBus, NULL, loggerService, loggerObjectPath,
+                loggerCreateInterface, "Create", NULL, NULL, "ssa{ss}",
+                errIntfForEssentialFru,
+                "xyz.openbmc_project.Logging.Entry.Level.Warning", 2,
+                "DESCRIPTION", "Essential fru missing from the system.",
+                "CALLOUT_INVENTORY_PATH", (pimPath + invPath).c_str());
+
+            if (rc < 0)
+            {
+                log<level::ERR>("Error calling sd_bus_call_method_async",
+                                entry("RC=%d", rc),
+                                entry("MSG=%s", strerror(-rc)));
+            }
+        }
+    }
+}
+
+void Manager::hostStateCallBack(sdbusplus::message::message& msg)
 {
     if (msg.is_method_error())
     {
@@ -194,6 +222,9 @@
             if (*hostState == "xyz.openbmc_project.State.Host.HostState."
                               "TransitioningToRunning")
             {
+                // detect if essential frus are present in the system.
+                checkEssentialFrus();
+
                 // check and perfrom recollection for FRUs replaceable at
                 // standby.
                 performVPDRecollection();
@@ -302,6 +333,11 @@
             {
                 replaceableFrus.emplace_back(itemFRUS.key());
             }
+
+            if (itemEEPROM.value("essentialFru", false))
+            {
+                essentialFrus.emplace_back(itemEEPROM["inventoryPath"]);
+            }
         }
     }
 }
diff --git a/vpd-manager/manager.hpp b/vpd-manager/manager.hpp
index 6d8314b..4992801 100644
--- a/vpd-manager/manager.hpp
+++ b/vpd-manager/manager.hpp
@@ -49,7 +49,10 @@
     Manager(const Manager&) = delete;
     Manager& operator=(const Manager&) = delete;
     Manager(Manager&&) = delete;
-    ~Manager() = default;
+    ~Manager()
+    {
+        sd_bus_unref(sdBus);
+    }
 
     /** @brief Constructor to put object onto bus at a dbus path.
      *  @param[in] bus - Bus connection.
@@ -159,6 +162,13 @@
      */
     void restoreSystemVpd();
 
+    /**
+     * @brief Check for essential fru in the system.
+     * The api check for the presence of FRUs marked as essential and logs PEL
+     * in case they are missing.
+     */
+    void checkEssentialFrus();
+
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus_t _bus;
 
@@ -177,6 +187,12 @@
 
     // map to hold FRUs which can be replaced at standby
     inventory::ReplaceableFrus replaceableFrus;
+
+    // List of FRUs marked as essential in the system.
+    inventory::EssentialFrus essentialFrus;
+
+    // sd-bus
+    sd_bus* sdBus = nullptr;
 };
 
 } // namespace manager
