diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
index e953a9f..eac3099 100644
--- a/include/dbus_utility.hpp
+++ b/include/dbus_utility.hpp
@@ -18,6 +18,7 @@
 #include "dbus_singleton.hpp"
 
 #include <boost/system/error_code.hpp> // IWYU pragma: keep
+#include <sdbusplus/asio/property.hpp>
 #include <sdbusplus/message/native_types.hpp>
 
 #include <array>
@@ -94,6 +95,7 @@
               std::vector<std::pair<std::string, std::vector<std::string>>>>>;
 
 using MapperGetSubTreePathsResponse = std::vector<std::string>;
+using MapperEndPoints = std::vector<sdbusplus::message::object_path>;
 
 inline void escapePathForDbus(std::string& path)
 {
@@ -193,5 +195,15 @@
         "xyz.openbmc_project.ObjectMapper", "GetObject", path, interfaces);
 }
 
+inline void getAssociationEndPoints(
+    const std::string& path,
+    std::function<void(const boost::system::error_code&,
+                       const MapperEndPoints&)>&& callback)
+{
+    sdbusplus::asio::getProperty<MapperEndPoints>(
+        *crow::connections::systemBus, "xyz.openbmc_project.ObjectMapper", path,
+        "xyz.openbmc_project.Association", "endpoints", std::move(callback));
+}
+
 } // namespace utility
 } // namespace dbus
diff --git a/redfish-core/include/utils/sw_utils.hpp b/redfish-core/include/utils/sw_utils.hpp
index 31c3ea3..ef21ff6 100644
--- a/redfish-core/include/utils/sw_utils.hpp
+++ b/redfish-core/include/utils/sw_utils.hpp
@@ -47,13 +47,11 @@
                                 const bool populateLinkToImages)
 {
     // Used later to determine running (known on Redfish as active) Sw images
-    sdbusplus::asio::getProperty<std::vector<std::string>>(
-        *crow::connections::systemBus, "xyz.openbmc_project.ObjectMapper",
+    dbus::utility::getAssociationEndPoints(
         "/xyz/openbmc_project/software/functional",
-        "xyz.openbmc_project.Association", "endpoints",
-        [aResp, swVersionPurpose, activeVersionPropName,
-         populateLinkToImages](const boost::system::error_code ec,
-                               const std::vector<std::string>& functionalSw) {
+        [aResp, swVersionPurpose, activeVersionPropName, populateLinkToImages](
+            const boost::system::error_code& ec,
+            const dbus::utility::MapperEndPoints& functionalSw) {
         BMCWEB_LOG_DEBUG << "populateSoftwareInformation enter";
         if (ec)
         {
@@ -76,9 +74,8 @@
         // example functionalSw:
         // v as 2 "/xyz/openbmc_project/software/ace821ef"
         //        "/xyz/openbmc_project/software/230fb078"
-        for (const auto& sw : functionalSw)
+        for (const auto& path : functionalSw)
         {
-            sdbusplus::message::object_path path(sw);
             std::string leaf = path.filename();
             if (leaf.empty())
             {
