diff --git a/nvme_manager.cpp b/nvme_manager.cpp
index cdb76b1..51b0f7d 100644
--- a/nvme_manager.cpp
+++ b/nvme_manager.cpp
@@ -617,6 +617,7 @@
                                     : IS_PRESENT;
         auto pwrGoodPinValStr =
             (config.pwrGoodPin) ? getGPIOValueOfNvme(devPwrGoodPath) : POWERGD;
+        const bool isPwrGood = (pwrGoodPinValStr == POWERGD);
 
         if (presentPinValStr != IS_PRESENT)
         {
@@ -636,7 +637,7 @@
             continue;
         }
 
-        if (pwrGoodPinValStr != POWERGD)
+        if (!isPwrGood)
         {
             // IFDET should be used to provide the final say
             // in SSD's presence - IFDET showing SSD is present
@@ -672,6 +673,7 @@
         // (To make thermal loop know that the sensor reading
         //  is invalid).
         readNvmeData(config);
+        nvmes.find(config.index)->second->setSensorAvailability(isPwrGood);
     }
 }
 } // namespace nvme
diff --git a/nvmes.cpp b/nvmes.cpp
index 7bd8c6c..2310610 100644
--- a/nvmes.cpp
+++ b/nvmes.cpp
@@ -100,5 +100,10 @@
     ValueIface::value(value);
 }
 
+void NvmeSSD::setSensorAvailability(bool avail)
+{
+    AvailabilityInterface::available(avail);
+}
+
 } // namespace nvme
 } // namespace phosphor
diff --git a/nvmes.hpp b/nvmes.hpp
index e11c891..92dfc6f 100644
--- a/nvmes.hpp
+++ b/nvmes.hpp
@@ -4,6 +4,7 @@
 #include <xyz/openbmc_project/Sensor/Threshold/Critical/server.hpp>
 #include <xyz/openbmc_project/Sensor/Threshold/Warning/server.hpp>
 #include <xyz/openbmc_project/Sensor/Value/server.hpp>
+#include <xyz/openbmc_project/State/Decorator/Availability/server.hpp>
 
 namespace phosphor
 {
@@ -18,8 +19,12 @@
 using WarningInterface =
     sdbusplus::xyz::openbmc_project::Sensor::Threshold::server::Warning;
 
-using NvmeIfaces = sdbusplus::server::object_t<ValueIface, CriticalInterface,
-                                               WarningInterface>;
+using AvailabilityInterface =
+    sdbusplus::xyz::openbmc_project::State::Decorator::server::Availability;
+
+using NvmeIfaces =
+    sdbusplus::server::object_t<ValueIface, CriticalInterface, WarningInterface,
+                                AvailabilityInterface>;
 
 class NvmeSSD : public NvmeIfaces
 {
@@ -51,6 +56,8 @@
                             int8_t warningHigh, int8_t warningLow);
     /** @brief Set Sensor Max/Min value to D-bus at beginning */
     void setSensorMaxMin(int8_t maxValue, int8_t minValue);
+    /** @brief Set Sensor Availability to D-bus */
+    void setSensorAvailability(bool avail);
 
   private:
     sdbusplus::bus_t& bus;
