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