diff --git a/softoff/elog-gen-softoff.hpp b/softoff/elog-gen-softoff.hpp
deleted file mode 100644
index e863633..0000000
--- a/softoff/elog-gen-softoff.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// This file was autogenerated.  Do not edit!
-// See elog-gen.py for more details
-#pragma once
-
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <sdbusplus/exception.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
-
-
-namespace phosphor
-{
-
-namespace logging
-{
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace SoftPowerOff
-{
-namespace Internal
-{
-namespace _SoftOffFailed
-{
-
-}  // namespace _SoftOffFailed
-
-struct SoftOffFailed : public sdbusplus::exception_t
-{
-    static constexpr auto errName = "xyz.openbmc_project.SoftPowerOff.Internal.SoftOffFailed";
-    static constexpr auto errDesc = "The SoftOff command to the host control object returned an error";
-    static constexpr auto L = level::ERR;
-    using metadata_types = std::tuple<>;
-
-    const char* name() const noexcept
-    {
-        return errName;
-    }
-
-    const char* description() const noexcept
-    {
-        return errDesc;
-    }
-
-    const char* what() const noexcept
-    {
-        return errName;
-    }
-};
-
-} // namespace Internal
-} // namespace SoftPowerOff
-} // namespace openbmc_project
-} // namespace xyz
-
-} // namespace logging
-} // namespace phosphor
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index 3511814..767eb90 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -15,11 +15,9 @@
  */
 #include <chrono>
 #include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
 #include <xyz/openbmc_project/Control/Host/server.hpp>
 #include <utils.hpp>
 #include "softoff.hpp"
-#include "elog-gen-softoff.hpp"
 #include "config.h"
 namespace phosphor
 {
@@ -95,7 +93,10 @@
     }
     else
     {
-        elog<xyz::openbmc_project::SoftPowerOff::Internal::SoftOffFailed>();
+        // An error on the initial attention is not considered an error, just
+        // exit normally and allow remaining shutdown targets to run
+        log<level::INFO>("Timeout on host attention, continue with power down");
+        completed = true;
     }
     return;
 }
