diff --git a/libpldmresponder/platform_state_sensor.hpp b/libpldmresponder/platform_state_sensor.hpp
index 3fd55cd..48a750a 100644
--- a/libpldmresponder/platform_state_sensor.hpp
+++ b/libpldmresponder/platform_state_sensor.hpp
@@ -56,7 +56,7 @@
         std::cerr << e.what() << '\n';
     }
 
-    return PLDM_SENSOR_DISABLED;
+    return PLDM_SENSOR_UNKNOWN;
 }
 
 /** @brief Function to get the state sensor readings requested by pldm requester
@@ -117,6 +117,13 @@
                       << "SENSOR_REARM_COUNT=" << sensorRearmCnt << "\n";
             return PLDM_PLATFORM_REARM_UNAVAILABLE_IN_PRESENT_STATE;
         }
+
+        if (sensorRearmCnt == 0)
+        {
+            sensorRearmCnt = compSensorCnt;
+            stateField.resize(sensorRearmCnt);
+        }
+
         break;
     }
 
@@ -132,14 +139,21 @@
             handler.getDbusObjMaps(sensorId, TypeId::PLDM_SENSOR_ID);
 
         stateField.clear();
-        for (size_t i = 0; i < compSensorCnt; i++)
+        for (size_t i = 0; i < sensorRearmCnt; i++)
         {
             auto& dbusMapping = dbusMappings[i];
 
-            uint8_t sensorOpState = getStateSensorEventState<DBusInterface>(
+            uint8_t sensorEvent = getStateSensorEventState<DBusInterface>(
                 dBusIntf, dbusValMaps[i], dbusMapping);
-            stateField.push_back({PLDM_SENSOR_ENABLED, PLDM_SENSOR_UNKNOWN,
-                                  PLDM_SENSOR_UNKNOWN, sensorOpState});
+
+            uint8_t opState = PLDM_SENSOR_ENABLED;
+            if (sensorEvent == PLDM_SENSOR_UNKNOWN)
+            {
+                opState = PLDM_SENSOR_UNAVAILABLE;
+            }
+
+            stateField.push_back({opState, PLDM_SENSOR_NORMAL,
+                                  PLDM_SENSOR_UNKNOWN, sensorEvent});
         }
     }
     catch (const std::out_of_range& e)
diff --git a/test/libpldmresponder_platform_test.cpp b/test/libpldmresponder_platform_test.cpp
index 0e6164b..23241db 100644
--- a/test/libpldmresponder_platform_test.cpp
+++ b/test/libpldmresponder_platform_test.cpp
@@ -606,10 +606,10 @@
                                   compSensorCnt, stateField);
     ASSERT_EQ(rc, 0);
     ASSERT_EQ(compSensorCnt, 1);
-    ASSERT_EQ(stateField[0].sensor_op_state, PLDM_SENSOR_ENABLED);
-    ASSERT_EQ(stateField[0].present_state, PLDM_SENSOR_UNKNOWN);
+    ASSERT_EQ(stateField[0].sensor_op_state, PLDM_SENSOR_UNAVAILABLE);
+    ASSERT_EQ(stateField[0].present_state, PLDM_SENSOR_NORMAL);
     ASSERT_EQ(stateField[0].previous_state, PLDM_SENSOR_UNKNOWN);
-    ASSERT_EQ(stateField[0].event_state, PLDM_SENSOR_ENABLED);
+    ASSERT_EQ(stateField[0].event_state, PLDM_SENSOR_UNKNOWN);
 
     pldm_pdr_destroy(inPDRRepo);
     pldm_pdr_destroy(outPDRRepo);
