diff --git a/redfish-core/lib/network_protocol.hpp b/redfish-core/lib/network_protocol.hpp
index 89f0334..1d63bc9 100644
--- a/redfish-core/lib/network_protocol.hpp
+++ b/redfish-core/lib/network_protocol.hpp
@@ -36,8 +36,13 @@
 void getNTPProtocolEnabled(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp);
 std::string getHostName();
 
-const static std::array<std::pair<std::string, std::string>, 3> protocolToDBus{
-    {{"SSH", "dropbear"}, {"HTTPS", "bmcweb"}, {"IPMI", "phosphor-ipmi-net"}}};
+static constexpr const char* sshServiceName = "dropbear";
+static constexpr const char* httpsServiceName = "bmcweb";
+static constexpr const char* ipmiServiceName = "phosphor-ipmi-net";
+static constexpr std::array<std::pair<const char*, const char*>, 3>
+    protocolToService = {{{"SSH", sshServiceName},
+                          {"HTTPS", httpsServiceName},
+                          {"IPMI", ipmiServiceName}}};
 
 inline void extractNTPServersAndDomainNamesData(
     const dbus::utility::ManagedObjectType& dbusData,
@@ -168,7 +173,7 @@
             "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates";
     }
 
-    for (const auto& protocol : protocolToDBus)
+    for (const auto& protocol : protocolToService)
     {
         const std::string& protocolName = protocol.first;
         const std::string& serviceName = protocol.second;
@@ -297,7 +302,7 @@
 inline void
     handleProtocolEnabled(const bool protocolEnabled,
                           const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-                          const std::string_view netBasePath)
+                          const std::string& netBasePath)
 {
     crow::connections::systemBus->async_method_call(
         [protocolEnabled, asyncResp,
@@ -388,6 +393,14 @@
         });
 }
 
+inline std::string encodeServiceObjectPath(const std::string& serviceName)
+{
+    sdbusplus::message::object_path objPath(
+        "/xyz/openbmc_project/control/service");
+    objPath /= serviceName;
+    return objPath.str;
+}
+
 inline void requestRoutesNetworkProtocol(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/NetworkProtocol/")
@@ -439,14 +452,13 @@
         {
             handleProtocolEnabled(
                 *ipmiEnabled, asyncResp,
-                "/xyz/openbmc_project/control/service/phosphor_2dipmi_2dnet_40");
+                encodeServiceObjectPath(std::string(ipmiServiceName) + '@'));
         }
 
         if (sshEnabled)
         {
-            handleProtocolEnabled(
-                *sshEnabled, asyncResp,
-                "/xyz/openbmc_project/control/service/dropbear");
+            handleProtocolEnabled(*sshEnabled, asyncResp,
+                                  encodeServiceObjectPath(sshServiceName));
         }
         });
 
