diff --git a/phalerror/create_pel.cpp b/phalerror/create_pel.cpp
index 4ca8bb0..b6e9c74 100644
--- a/phalerror/create_pel.cpp
+++ b/phalerror/create_pel.cpp
@@ -27,11 +27,12 @@
 
 namespace pel
 {
+
+constexpr auto loggingObjectPath = "/xyz/openbmc_project/logging";
+constexpr auto loggingInterface = "xyz.openbmc_project.Logging.Create";
+
 void createBootErrorPEL(const FFDCData& ffdcData, const json& calloutData)
 {
-    constexpr auto loggingObjectPath = "/xyz/openbmc_project/logging";
-    constexpr auto loggingInterface = "xyz.openbmc_project.Logging.Create";
-
     std::map<std::string, std::string> additionalData;
     auto bus = sdbusplus::bus::new_default();
     additionalData.emplace("_PID", std::to_string(getpid()));
@@ -85,6 +86,45 @@
     }
 }
 
+void createHostRunningPEL()
+{
+    std::map<std::string, std::string> additionalData;
+    auto bus = sdbusplus::bus::new_default();
+    additionalData.emplace("_PID", std::to_string(getpid()));
+
+    try
+    {
+        static constexpr auto bootErrorMessage =
+            "org.open_power.PHAL.Error.HostRunning";
+        std::string service =
+            util::getService(bus, loggingObjectPath, loggingInterface);
+        auto method = bus.new_method_call(service.c_str(), loggingObjectPath,
+                                          loggingInterface, "Create");
+        auto level =
+            sdbusplus::xyz::openbmc_project::Logging::server::convertForMessage(
+                sdbusplus::xyz::openbmc_project::Logging::server::Entry::Level::
+                    Error);
+        method.append(bootErrorMessage, level, additionalData);
+        auto resp = bus.call(method);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        log<level::ERR>("sdbusplus D-Bus call exception",
+                        entry("OBJPATH=%s", loggingObjectPath),
+                        entry("INTERFACE=%s", loggingInterface),
+                        entry("EXCEPTION=%s", e.what()));
+
+        throw std::runtime_error(
+            "Error in invoking D-Bus logging create interface");
+    }
+    catch (std::exception& e)
+    {
+        log<level::ERR>("D-bus call exception",
+                        entry("EXCEPTION=%s", e.what()));
+        throw e;
+    }
+}
+
 FFDCFile::FFDCFile(const json& pHALCalloutData) :
     calloutData(pHALCalloutData.dump()),
     calloutFile("/tmp/phalPELCalloutsJson.XXXXXX"), fileFD(-1)
diff --git a/phalerror/create_pel.hpp b/phalerror/create_pel.hpp
index bf005c1..98d6ded 100644
--- a/phalerror/create_pel.hpp
+++ b/phalerror/create_pel.hpp
@@ -21,6 +21,14 @@
 void createBootErrorPEL(const FFDCData& ffdcData, const json& calloutData);
 
 /**
+ * Create host running error PEL
+ *
+ * The host should not be running so create an error to report this if it
+ * is found the host is up.
+ */
+void createHostRunningPEL();
+
+/**
  * @class FFDCFile
  * @brief This class is used to create ffdc data file and to get fd
  */
