diff --git a/test/user_mgr_test.cpp b/test/user_mgr_test.cpp
index 818a18b..74ae930 100644
--- a/test/user_mgr_test.cpp
+++ b/test/user_mgr_test.cpp
@@ -33,7 +33,9 @@
                          std::vector<std::string> groupNames,
                          const std::string& priv, bool enabled)
     {
-        std::string userObj = std::string(usersObjPath) + "/" + userName;
+        sdbusplus::message::object_path tempObjPath(usersObjPath);
+        tempObjPath /= userName;
+        std::string userObj(tempObjPath);
         mockManager.usersList.emplace(
             userName, std::move(std::make_unique<phosphor::user::Users>(
                           mockManager.bus, userObj.c_str(), groupNames, priv,
diff --git a/user_mgr.cpp b/user_mgr.cpp
index 307c810..8fc899f 100644
--- a/user_mgr.cpp
+++ b/user_mgr.cpp
@@ -334,7 +334,9 @@
     }
 
     // Add the users object before sending out the signal
-    std::string userObj = std::string(usersObjPath) + "/" + userName;
+    sdbusplus::message::object_path tempObjPath(usersObjPath);
+    tempObjPath /= userName;
+    std::string userObj(tempObjPath);
     std::sort(groupNames.begin(), groupNames.end());
     usersList.emplace(
         userName, std::move(std::make_unique<phosphor::user::Users>(
@@ -392,7 +394,9 @@
     std::string priv = user.get()->userPrivilege();
     std::vector<std::string> groupNames = user.get()->userGroups();
     bool enabled = user.get()->userEnabled();
-    std::string newUserObj = std::string(usersObjPath) + "/" + newUserName;
+    sdbusplus::message::object_path tempObjPath(usersObjPath);
+    tempObjPath /= newUserName;
+    std::string newUserObj(tempObjPath);
     // Special group 'ipmi' needs a way to identify user renamed, in order to
     // update encrypted password. It can't rely only on InterfacesRemoved &
     // InterfacesAdded. So first send out userRenamed signal.
@@ -1159,7 +1163,9 @@
                 }
             }
             // Add user objects to the Users path.
-            auto objPath = std::string(usersObjPath) + "/" + user;
+            sdbusplus::message::object_path tempObjPath(usersObjPath);
+            tempObjPath /= user;
+            std::string objPath(tempObjPath);
             std::sort(userGroups.begin(), userGroups.end());
             usersList.emplace(user,
                               std::move(std::make_unique<phosphor::user::Users>(
diff --git a/users.cpp b/users.cpp
index 18b552a..4efc2b2 100644
--- a/users.cpp
+++ b/users.cpp
@@ -62,7 +62,7 @@
              std::vector<std::string> groups, std::string priv, bool enabled,
              UserMgr& parent) :
     Interfaces(bus, path, true),
-    userName(std::filesystem::path(path).filename()), manager(parent)
+    userName(sdbusplus::message::object_path(path).filename()), manager(parent)
 {
     UsersIface::userPrivilege(priv, true);
     UsersIface::userGroups(groups, true);
