diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index 3fc0ee5..ba39214 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -14,6 +14,7 @@
 // limitations under the License.
 */
 
+#include <IpmbSDRSensor.hpp>
 #include <IpmbSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
@@ -37,6 +38,8 @@
 constexpr const bool debug = false;
 
 constexpr const char* sensorType = "IpmbSensor";
+constexpr const char* sdrInterface = "IpmbDevice";
+
 static constexpr double ipmbMaxReading = 0xFF;
 static constexpr double ipmbMinReading = 0;
 
@@ -49,6 +52,7 @@
 static constexpr const char* sensorPathPrefix = "/xyz/openbmc_project/sensors/";
 
 boost::container::flat_map<std::string, std::shared_ptr<IpmbSensor>> sensors;
+boost::container::flat_map<uint8_t, std::shared_ptr<IpmbSDRDevice>> sdrsensor;
 
 std::unique_ptr<boost::asio::steady_timer> initCmdTimer;
 
@@ -597,6 +601,27 @@
         "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
 }
 
+void sdrHandler(sdbusplus::message_t& message,
+                std::shared_ptr<sdbusplus::asio::connection>& dbusConnection)
+{
+    std::string objectName;
+    SensorBaseConfigMap values;
+    message.read(objectName, values);
+
+    auto findBus = values.find("Bus");
+    if (findBus == values.end())
+    {
+        return;
+    }
+
+    uint8_t busIndex = loadVariant<uint8_t>(values, "Bus");
+
+    auto& sdrsen = sdrsensor[busIndex];
+    sdrsen = nullptr;
+    sdrsen = std::make_shared<IpmbSDRDevice>(dbusConnection, busIndex);
+    sdrsen->getSDRRepositoryInfo();
+}
+
 void reinitSensors(sdbusplus::message_t& message)
 {
     constexpr const size_t reinitWaitSeconds = 2;
@@ -682,6 +707,15 @@
             std::string(power::interface) + "'",
         reinitSensors);
 
+    auto matchSignal = std::make_shared<sdbusplus::bus::match_t>(
+        static_cast<sdbusplus::bus_t&>(*systemBus),
+        "type='signal',member='PropertiesChanged',path_namespace='" +
+            std::string(inventoryPath) + "',arg0namespace='" +
+            configInterfaceName(sdrInterface) + "'",
+        [&systemBus](sdbusplus::message_t& msg) {
+        sdrHandler(msg, systemBus);
+        });
+
     setupManufacturingModeMatch(*systemBus);
     io.run();
     return 0;
