diff --git a/configure.ac b/configure.ac
index 2af3e09..230cd1d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -213,6 +213,18 @@
     AC_DEFINE_UNQUOTED([NUM_MONITOR_LOG_ENTRIES], [$NUM_MONITOR_LOG_ENTRIES],
                        [Maximum number of entries in the message log])
 
+    AC_ARG_VAR(THERMAL_ALERT_BUSNAME, [The thermal alert busname to own])
+    AS_IF([test "x$THERMAL_ALERT_BUSNAME" == "x"],
+          [THERMAL_ALERT_BUSNAME="xyz.openbmc_project.Thermal.Alert"])
+    AC_DEFINE_UNQUOTED([THERMAL_ALERT_BUSNAME], ["$THERMAL_ALERT_BUSNAME"],
+                       [The thermal alert busname to own])
+
+    AC_ARG_VAR(THERMAL_ALERT_OBJPATH, [The thermal alert D-Bus object path])
+    AS_IF([test "x$THERMAL_ALERT_OBJPATH" == "x"],
+          [THERMAL_ALERT_OBJPATH="/xyz/openbmc_project/alerts/thermal_fault_alert"])
+    AC_DEFINE_UNQUOTED([THERMAL_ALERT_OBJPATH], ["$THERMAL_ALERT_OBJPATH"],
+                       [The thermal alert D-Bus object path])
+
     AC_CONFIG_FILES([monitor/Makefile])
 ])
 
diff --git a/monitor/main.cpp b/monitor/main.cpp
index 93a5e1d..ae6d034 100644
--- a/monitor/main.cpp
+++ b/monitor/main.cpp
@@ -77,6 +77,8 @@
                                        std::bind(&System::sighupHandler,
                                                  &system, std::placeholders::_1,
                                                  std::placeholders::_2));
+
+    bus.request_name(THERMAL_ALERT_BUSNAME);
 #endif
 
 #ifndef MONITOR_USE_JSON
diff --git a/monitor/system.cpp b/monitor/system.cpp
index 229eca8..dbb9b73 100644
--- a/monitor/system.cpp
+++ b/monitor/system.cpp
@@ -24,6 +24,8 @@
 #include "json_parser.hpp"
 #endif
 
+#include "config.h"
+
 #include <nlohmann/json.hpp>
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
@@ -41,11 +43,12 @@
 System::System(Mode mode, sdbusplus::bus::bus& bus,
                const sdeventplus::Event& event) :
     _mode(mode),
-    _bus(bus), _event(event)
-{
-    _powerState = std::make_unique<PGoodState>(
+    _bus(bus), _event(event),
+    _powerState(std::make_unique<PGoodState>(
         bus, std::bind(std::mem_fn(&System::powerStateChanged), this,
-                       std::placeholders::_1));
+                       std::placeholders::_1))),
+    _thermalAlert(bus, THERMAL_ALERT_OBJPATH)
+{
 
     json jsonObj = json::object();
 #ifdef MONITOR_USE_JSON
@@ -212,6 +215,8 @@
     }
     else
     {
+        _thermalAlert.enabled(false);
+
         // Cancel any in-progress power off actions
         std::for_each(_powerOffRules.begin(), _powerOffRules.end(),
                       [this](auto& rule) { rule->cancel(); });
diff --git a/monitor/system.hpp b/monitor/system.hpp
index 744c775..a0030da 100644
--- a/monitor/system.hpp
+++ b/monitor/system.hpp
@@ -146,6 +146,11 @@
     std::unique_ptr<FanError> _lastError;
 
     /**
+     * @brief The thermal alert D-Bus object
+     */
+    ThermalAlertObject _thermalAlert;
+
+    /**
      * @brief Captures tach sensor data as JSON for use in
      *        fan fault and fan missing event logs.
      *
diff --git a/monitor/types.hpp b/monitor/types.hpp
index 609199a..a7f61d1 100644
--- a/monitor/types.hpp
+++ b/monitor/types.hpp
@@ -5,6 +5,7 @@
 
 #include <nlohmann/json.hpp>
 #include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Object/Enable/server.hpp>
 
 #include <functional>
 #include <optional>
@@ -19,6 +20,14 @@
 namespace monitor
 {
 
+template <typename... T>
+using ServerObject = typename sdbusplus::server::object::object<T...>;
+
+using ObjectEnableInterface =
+    sdbusplus::xyz::openbmc_project::Object::server::Enable;
+
+using ThermalAlertObject = ServerObject<ObjectEnableInterface>;
+
 constexpr auto propObj = 0;
 constexpr auto propIface = 1;
 constexpr auto propName = 2;
