diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index 5a4af4b..6fa824a 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -177,6 +177,14 @@
         auto psu = std::make_unique<PowerSupply>(bus, invpath, *i2cbus,
                                                  *i2caddr, presline);
         psus.emplace_back(std::move(psu));
+
+        // Subscribe to power supply presence changes
+        auto presenceMatch = std::make_unique<sdbusplus::bus::match_t>(
+            bus,
+            sdbusplus::bus::match::rules::propertiesChanged(invpath,
+                                                            INVENTORY_IFACE),
+            [this](auto& msg) { this->presenceChanged(msg); });
+        presenceMatches.emplace_back(std::move(presenceMatch));
     }
 
     if (psus.empty())
@@ -349,6 +357,25 @@
     }
 }
 
+void PSUManager::presenceChanged(sdbusplus::message::message& msg)
+{
+    std::string msgSensor;
+    std::map<std::string, std::variant<uint32_t, bool>> msgData;
+    msg.read(msgSensor, msgData);
+
+    // Check if it was the Present property that changed.
+    auto valPropMap = msgData.find(PRESENT_PROP);
+    if (valPropMap != msgData.end())
+    {
+        if (std::get<bool>(valPropMap->second))
+        {
+            // A PSU became present, force the PSU validation to run.
+            runValidateConfig = true;
+            validationTimer->restartOnce(validationTimeout);
+        }
+    }
+}
+
 void PSUManager::createError(const std::string& faultName,
                              std::map<std::string, std::string>& additionalData)
 {
diff --git a/phosphor-power-supply/psu_manager.hpp b/phosphor-power-supply/psu_manager.hpp
index ca4fb45..6c5775e 100644
--- a/phosphor-power-supply/psu_manager.hpp
+++ b/phosphor-power-supply/psu_manager.hpp
@@ -192,6 +192,9 @@
     /** @brief Used to subscribe to D-Bus power on state changes */
     std::unique_ptr<sdbusplus::bus::match_t> powerOnMatch;
 
+    /** @brief Used to subscribe to D-Bus power supply presence changes */
+    std::vector<std::unique_ptr<sdbusplus::bus::match_t>> presenceMatches;
+
     /** @brief Used to subscribe to Entity Manager interfaces added */
     std::unique_ptr<sdbusplus::bus::match_t> entityManagerIfacesAddedMatch;
 
@@ -205,6 +208,15 @@
     void powerStateChanged(sdbusplus::message::message& msg);
 
     /**
+     * @brief Callback for inventory property changes
+     *
+     * Process change of the Present property for power supply.
+     *
+     * @param[in]  msg - Data associated with the Present change signal
+     **/
+    void presenceChanged(sdbusplus::message::message& msg);
+
+    /**
      * @brief Callback for entity-manager interface added
      *
      * Process the information from the supported configuration and or IBM CFFPS
