diff --git a/Redfish.md b/Redfish.md
index 9c94424..1f7d79e 100644
--- a/Redfish.md
+++ b/Redfish.md
@@ -1137,6 +1137,7 @@
 #### SoftwareInventory
 
 - Description
+- LowestSupportedVersion
 - `RelatedItem@odata.count`
 - RelatedItem
 - Status
diff --git a/redfish-core/include/utils/sw_utils.hpp b/redfish-core/include/utils/sw_utils.hpp
index 6695ef0..8f0cba8 100644
--- a/redfish-core/include/utils/sw_utils.hpp
+++ b/redfish-core/include/utils/sw_utils.hpp
@@ -371,6 +371,46 @@
 }
 
 /**
+ * @brief Put LowestSupportedVersion of input swId into json response
+ *
+ * This function will put the MinimumVersion from D-Bus of the input
+ * software id to ["LowestSupportedVersion"].
+ *
+ * @param[i,o] asyncResp    Async response object
+ * @param[i] swId The software ID to get Minimum Version for
+ * @param[i]   dbusSvc  The dbus service implementing the software object
+ *
+ * @return void
+ */
+inline void getSwMinimumVersion(
+    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+    const std::shared_ptr<std::string>& swId, const std::string& dbusSvc)
+{
+    BMCWEB_LOG_DEBUG("getSwMinimumVersion: svc {}, swId {}", dbusSvc, *swId);
+
+    sdbusplus::message::object_path path("/xyz/openbmc_project/software");
+    path /= *swId;
+
+    dbus::utility::getProperty<std::string>(
+        dbusSvc, path, "xyz.openbmc_project.Software.MinimumVersion",
+        "MinimumVersion",
+        [asyncResp](const boost::system::error_code& ec,
+                    const std::string& swMinimumVersion) {
+            if (ec)
+            {
+                // not all software has this interface and it is not critical
+                return;
+            }
+
+            BMCWEB_LOG_DEBUG("getSwMinimumVersion: MinimumVersion {}",
+                             swMinimumVersion);
+
+            asyncResp->res.jsonValue["LowestSupportedVersion"] =
+                swMinimumVersion;
+        });
+}
+
+/**
  * @brief Put status of input swId into json response
  *
  * This function will put the appropriate Redfish state of the input
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 3699264..33875fc 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -1323,6 +1323,8 @@
 
                 found = true;
                 sw_util::getSwStatus(asyncResp, swId, obj.second[0].first);
+                sw_util::getSwMinimumVersion(asyncResp, swId,
+                                             obj.second[0].first);
                 getSoftwareVersion(asyncResp, obj.second[0].first, obj.first,
                                    *swId);
             }
