diff --git a/utils.cpp b/utils.cpp
index 04ce3a4..48074ea 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -62,9 +62,9 @@
 std::string getService(sdbusplus::bus_t& bus, std::string path,
                        std::string interface)
 {
-    auto mapper = bus.new_method_call(ObjectMapper::default_service,
-                                      ObjectMapper::instance_path,
-                                      ObjectMapper::interface, "GetObject");
+    auto mapper = bus.new_method_call(
+        ObjectMapper::default_service, ObjectMapper::instance_path,
+        ObjectMapper::interface, ObjectMapper::method_names::get_object);
 
     mapper.append(path, std::vector<std::string>({interface}));
 
@@ -182,9 +182,9 @@
         using LoggingCreate =
             sdbusplus::client::xyz::openbmc_project::logging::Create<>;
 
-        auto method = bus.new_method_call(LoggingCreate::default_service,
-                                          LoggingCreate::instance_path,
-                                          LoggingCreate::interface, "Create");
+        auto method = bus.new_method_call(
+            LoggingCreate::default_service, LoggingCreate::instance_path,
+            LoggingCreate::interface, LoggingCreate::method_names::create);
 
         method.append(errorMsg, errLevel, additionalData);
         auto resp = bus.call(method);
@@ -212,9 +212,9 @@
         sdbusplus::message::object_path(DumpCreate::namespace_path::value) /
         DumpCreate::namespace_path::bmc;
 
-    auto method =
-        bus.new_method_call(DumpCreate::default_service, dumpPath.str.c_str(),
-                            DumpCreate::interface, "CreateDump");
+    auto method = bus.new_method_call(
+        DumpCreate::default_service, dumpPath.str.c_str(),
+        DumpCreate::interface, DumpCreate::method_names::create_dump);
     method.append(
         std::vector<
             std::pair<std::string, std::variant<std::string, uint64_t>>>());
@@ -245,8 +245,8 @@
     auto bmcPath = sdbusplus::message::object_path(BMC::namespace_path::value) /
                    BMC::namespace_path::bmc;
 
-    auto bmcState =
-        getProperty(bus, bmcPath.str, BMC::interface, "CurrentBMCState");
+    auto bmcState = getProperty(bus, bmcPath.str, BMC::interface,
+                                BMC::property_names::current_bmc_state);
 
     if (sdbusplus::message::convert_from_string<BMC::BMCState>(bmcState) !=
         BMC::BMCState::Ready)
@@ -281,7 +281,8 @@
      */
     auto mapper = bus.new_method_call(
         ObjectMapper::default_service, ObjectMapper::instance_path,
-        ObjectMapper::interface, "GetSubTreePaths");
+        ObjectMapper::interface,
+        ObjectMapper::method_names::get_sub_tree_paths);
 
     mapper.append("/", 0, std::vector<std::string>({ActBlockTrans::interface}));
 
