diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 1d3ef41..4fe1857 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -1073,16 +1073,18 @@
     const std::optional<std::string>& password,
     const std::optional<bool>& enabled,
     const std::optional<std::string>& roleId, const std::optional<bool>& locked,
-    std::optional<std::vector<std::string>> accountTypes, bool userSelf)
+    std::optional<std::vector<std::string>> accountTypes, bool userSelf,
+    const std::shared_ptr<persistent_data::UserSession>& session)
 {
     sdbusplus::message::object_path tempObjPath(rootUserDbusPath);
     tempObjPath /= username;
     std::string dbusObjectPath(tempObjPath);
 
     dbus::utility::checkDbusPathExists(
-        dbusObjectPath, [dbusObjectPath, username, password, roleId, enabled,
-                         locked, accountTypes(std::move(accountTypes)),
-                         userSelf, asyncResp{std::move(asyncResp)}](int rc) {
+        dbusObjectPath,
+        [dbusObjectPath, username, password, roleId, enabled, locked,
+         accountTypes(std::move(accountTypes)), userSelf, session,
+         asyncResp{std::move(asyncResp)}](int rc) {
         if (rc <= 0)
         {
             messages::resourceNotFound(asyncResp->res, "ManagerAccount",
@@ -1113,6 +1115,9 @@
             }
             else
             {
+                // Remove existing sessions of the user when password changed
+                persistent_data::SessionStore::getInstance()
+                    .removeSessionsByUsernameExceptSession(username, session);
                 messages::success(asyncResp->res);
             }
         }
@@ -2082,13 +2087,13 @@
     if (!newUserName || (newUserName.value() == username))
     {
         updateUserProperties(asyncResp, username, password, enabled, roleId,
-                             locked, accountTypes, userSelf);
+                             locked, accountTypes, userSelf, req.session);
         return;
     }
     crow::connections::systemBus->async_method_call(
         [asyncResp, username, password(std::move(password)),
          roleId(std::move(roleId)), enabled, newUser{std::string(*newUserName)},
-         locked, userSelf, accountTypes(std::move(accountTypes))](
+         locked, userSelf, req, accountTypes(std::move(accountTypes))](
             const boost::system::error_code& ec, sdbusplus::message_t& m) {
         if (ec)
         {
@@ -2098,7 +2103,7 @@
         }
 
         updateUserProperties(asyncResp, newUser, password, enabled, roleId,
-                             locked, accountTypes, userSelf);
+                             locked, accountTypes, userSelf, req.session);
     },
         "xyz.openbmc_project.User.Manager", "/xyz/openbmc_project/user",
         "xyz.openbmc_project.User.Manager", "RenameUser", username,
