diff --git a/occ_errors.hpp b/occ_errors.hpp
index d40d153..5d2db87 100644
--- a/occ_errors.hpp
+++ b/occ_errors.hpp
@@ -18,6 +18,8 @@
 constexpr auto PRESENCE_ERROR_PATH =
     "org.open_power.OCC.Firmware.Error.PresenceMismatch";
 constexpr auto SAFE_ERROR_PATH = "org.open_power.OCC.Device.Error.SafeState";
+constexpr auto MISSING_OCC_SENSORS_PATH =
+    "org.open_power.OCC.Firmware.Error.MissingOCCSensors";
 
 /** @class Error
  *  @brief Monitors for OCC device error condition
diff --git a/occ_manager.cpp b/occ_manager.cpp
index 630d85d..7b12f38 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -4,6 +4,7 @@
 
 #include "i2c_occ.hpp"
 #include "occ_dbus.hpp"
+#include "occ_errors.hpp"
 #include "utils.hpp"
 
 #include <phosphor-logging/elog-errors.hpp>
@@ -1351,6 +1352,56 @@
 {
     // Throttle traces
     pldmHandle->setTraceThrottle(true);
+    // Create PEL
+    createPldmSensorPEL();
+}
+
+void Manager::createPldmSensorPEL()
+{
+    Error::Descriptor d = Error::Descriptor(MISSING_OCC_SENSORS_PATH);
+    std::map<std::string, std::string> additionalData;
+
+    additionalData.emplace("_PID", std::to_string(getpid()));
+
+    log<level::INFO>(
+        std::format(
+            "createPldmSensorPEL(): Unable to find PLDM sensors for the OCCs")
+            .c_str());
+
+    auto& bus = utils::getBus();
+
+    try
+    {
+        FFDCFiles ffdc;
+        // Add occ-control journal traces to PEL FFDC
+        auto occJournalFile =
+            FFDC::addJournalEntries(ffdc, "openpower-occ-control", 40);
+
+        static constexpr auto loggingObjectPath =
+            "/xyz/openbmc_project/logging";
+        static constexpr auto opLoggingInterface = "org.open_power.Logging.PEL";
+        std::string service = utils::getService(loggingObjectPath,
+                                                opLoggingInterface);
+        auto method = bus.new_method_call(service.c_str(), loggingObjectPath,
+                                          opLoggingInterface,
+                                          "CreatePELWithFFDCFiles");
+
+        // Set level to Notice (Informational).
+        auto level =
+            sdbusplus::xyz::openbmc_project::Logging::server::convertForMessage(
+                sdbusplus::xyz::openbmc_project::Logging::server::Entry::Level::
+                    Notice);
+
+        method.append(d.path, level, additionalData, ffdc);
+        bus.call(method);
+    }
+    catch (const sdbusplus::exception_t& e)
+    {
+        log<level::ERR>(
+            std::format("Failed to create MISSING_OCC_SENSORS PEL: {}",
+                        e.what())
+                .c_str());
+    }
 }
 #endif // PLDM
 #endif // POWER10
diff --git a/occ_manager.hpp b/occ_manager.hpp
index 90f148d..b3034f1 100644
--- a/occ_manager.hpp
+++ b/occ_manager.hpp
@@ -356,6 +356,11 @@
      * restart the discoverTimer
      */
     void throttleTraceExpired();
+
+    /** @brief Create a PEL when the code is not able to obtain the OCC PDRs
+     * via PLDM. This is called when the throttleTraceTimer expires.
+     */
+    void createPldmSensorPEL();
 #endif
 
     /** @brief Called when code times out waiting for all OCCs to be running or
