diff --git a/nvme_manager.cpp b/nvme_manager.cpp
index 02bc819..9ceed7c 100644
--- a/nvme_manager.cpp
+++ b/nvme_manager.cpp
@@ -214,10 +214,12 @@
     nvmeData.present = true;
     nvmeData.vendor = "";
     nvmeData.serialNumber = "";
+    nvmeData.modelNumber = "";
     nvmeData.smartWarnings = "";
     nvmeData.statusFlags = "";
     nvmeData.driveLifeUsed = "";
     nvmeData.sensorValue = (int8_t)TEMPERATURE_SENSOR_FAILURE;
+    nvmeData.wcTemp = 0;
 
     phosphor::smbus::Smbus smbus;
 
@@ -503,7 +505,7 @@
     std::string inventoryPath;
     std::map<sdbusplus::message::object_path, Interfaces> obj;
 
-    for (const auto config : configs)
+    for (const auto& config : configs)
     {
         inventoryPath = "/system/chassis/motherboard/nvme" + config.index;
 
@@ -547,8 +549,8 @@
             config.criticalHigh = nvmeData.wcTemp;
             config.warningHigh = nvmeData.wcTemp;
         }
+        nvmeSSD->setSensorMaxMin(config.maxValue, config.minValue);
         nvmeSSD->setSensorThreshold(config.criticalHigh, config.criticalLow,
-                                    config.maxValue, config.minValue,
                                     config.warningHigh, config.warningLow);
 
         nvmeSSD->checkSensorThreshold();
@@ -558,6 +560,12 @@
     {
         setNvmeInventoryProperties(true, nvmeData, inventoryPath);
         iter->second->setSensorValueToDbus(nvmeData.sensorValue);
+        if (nvmeData.wcTemp != 0)
+        {
+            iter->second->setSensorThreshold(
+                config.criticalHigh, config.criticalLow, config.warningHigh,
+                config.warningLow);
+        }
         iter->second->checkSensorThreshold();
         setLEDsStatus(config, success, nvmeData);
     }
diff --git a/nvmes.cpp b/nvmes.cpp
index 01222d0..972d406 100644
--- a/nvmes.cpp
+++ b/nvmes.cpp
@@ -23,16 +23,17 @@
 }
 
 void NvmeSSD::setSensorThreshold(int8_t criticalHigh, int8_t criticalLow,
-                                 int8_t maxValue, int8_t minValue,
                                  int8_t warningHigh, int8_t warningLow)
 {
-
     CriticalInterface::criticalHigh(criticalHigh);
     CriticalInterface::criticalLow(criticalLow);
 
     WarningInterface::warningHigh(warningHigh);
     WarningInterface::warningLow(warningLow);
+}
 
+void NvmeSSD::setSensorMaxMin(int8_t maxValue, int8_t minValue)
+{
     ValueIface::maxValue(maxValue);
     ValueIface::minValue(minValue);
 }
@@ -43,4 +44,4 @@
 }
 
 } // namespace nvme
-} // namespace phosphor
\ No newline at end of file
+} // namespace phosphor
diff --git a/nvmes.hpp b/nvmes.hpp
index c9a133e..64d279e 100644
--- a/nvmes.hpp
+++ b/nvmes.hpp
@@ -54,8 +54,9 @@
     void checkSensorThreshold();
     /** @brief Set Sensor Threshold to D-bus at beginning */
     void setSensorThreshold(int8_t criticalHigh, int8_t criticalLow,
-                            int8_t maxValue, int8_t minValue,
                             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);
 
   private:
     sdbusplus::bus::bus& bus;
