diff --git a/utility.cpp b/utility.cpp
index cec9d8b..ee65cff 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -63,6 +63,31 @@
     return response.begin()->first;
 }
 
+DbusPropertyMap getAllProperties(sdbusplus::bus::bus& bus,
+                                 const std::string& path,
+                                 const std::string& interface,
+                                 const std::string& service)
+{
+    DbusPropertyMap properties;
+
+    auto serviceStr = service;
+    if (serviceStr.empty())
+    {
+        serviceStr = getService(path, interface, bus);
+        if (serviceStr.empty())
+        {
+            return properties;
+        }
+    }
+
+    auto method = bus.new_method_call(serviceStr.c_str(), path.c_str(),
+                                      PROPERTY_INTF, "GetAll");
+    method.append(interface);
+    auto reply = bus.call(method);
+    reply.read(properties);
+    return properties;
+}
+
 DbusSubtree getSubTree(sdbusplus::bus::bus& bus, const std::string& path,
                        const std::string& interface, int32_t depth)
 {
diff --git a/utility.hpp b/utility.hpp
index 019173b..51fe31d 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -23,11 +23,15 @@
 constexpr auto PROPERTY_INTF = "org.freedesktop.DBus.Properties";
 
 using DbusPath = std::string;
+using DbusProperty = std::string;
 using DbusService = std::string;
 using DbusInterface = std::string;
 using DbusInterfaceList = std::vector<DbusInterface>;
 using DbusSubtree =
     std::map<DbusPath, std::map<DbusService, DbusInterfaceList>>;
+using DbusVariant =
+    std::variant<uint64_t, std::string, std::vector<std::string>>;
+using DbusPropertyMap = std::map<DbusProperty, DbusVariant>;
 /**
  * @brief Get the service name from the mapper for the
  *        interface and path passed in.
@@ -95,6 +99,21 @@
     auto reply = bus.call(method);
 }
 
+/**
+ * @brief Get all D-Bus properties
+ *
+ * @param[in] bus - the D-Bus object
+ * @param[in] path - the D-Bus object path
+ * @param[in] interface - the D-Bus interface name
+ * @param[in] service - the D-Bus service name (optional)
+ *
+ * @return DbusPropertyMap - Map of property names and values
+ */
+DbusPropertyMap getAllProperties(sdbusplus::bus::bus& bus,
+                                 const std::string& path,
+                                 const std::string& interface,
+                                 const std::string& service = std::string());
+
 /** @brief Get subtree from the object mapper.
  *
  * Helper function to find objects, services, and interfaces.
