diff --git a/api/src/auth/auth.resolver.ts b/api/src/auth/auth.resolver.ts
index 27c2694fc1d1a07873d3e18a5927ce2bc5359f0e..bca4f7f9921f5cb30241f8ee5c2042fcd043ad7d 100644
--- a/api/src/auth/auth.resolver.ts
+++ b/api/src/auth/auth.resolver.ts
@@ -92,9 +92,9 @@ export class AuthResolver {
     if (user) {
       this.logger.verbose(`${user.username} logged out`);
       try {
-        if (this.engineService.has('logout')) {
+        if (this.engineService.has('logout'))
           await this.engineService.logout(req);
-        }
+
         this.authService.logout(user);
       } catch (e) {
         this.logger.warn(
diff --git a/api/src/auth/auth.service.ts b/api/src/auth/auth.service.ts
index fd2110714baf44e5f64f12dfd059039b2f6dfa15..343f0efb7a59f007303db5ae8a00856422d7ab61 100644
--- a/api/src/auth/auth.service.ts
+++ b/api/src/auth/auth.service.ts
@@ -55,7 +55,7 @@ export class AuthService {
 
     const hashRefresh = await this.getHash(refreshToken);
 
-    this.usersService.update(user.id, {
+    this.usersService.save(user.id, {
       refreshToken: hashRefresh,
     });
 
@@ -71,8 +71,8 @@ export class AuthService {
    */
   async logout(user: User): Promise<void> {
     try {
-      if (user.id)
-        await this.usersService.update(user.id, { refreshToken: null });
+      if (!user || !user.id) return;
+      await this.usersService.update(user.id, { refreshToken: null });
     } catch (err) {
       //user not found or others errors
       AuthService.logger.debug('Error while logging out user', err);
diff --git a/api/src/users/users.service.spec.ts b/api/src/users/users.service.spec.ts
index 47fa24b93094f81116aa6d5657b322dc16b15db2..b4227b2ee91f346552b29bbf08d130f8fc54f283 100644
--- a/api/src/users/users.service.spec.ts
+++ b/api/src/users/users.service.spec.ts
@@ -65,12 +65,12 @@ describe('UsersService', () => {
     });
   });
 
-  describe('updateUser', () => {
-    it('should return an updated user', async () => {
+  describe('saveUser', () => {
+    it('should return an  user', async () => {
       const expectedUser = { ...user, ...updateData };
       usersRepository.save.mockResolvedValue(expectedUser);
 
-      const result = await service.update('idThatExist', updateData);
+      const result = await service.save('idThatExist', updateData);
 
       expect(result).toStrictEqual(expectedUser);
     });
diff --git a/api/src/users/users.service.ts b/api/src/users/users.service.ts
index 773a77019e755044f1de87f4daba20d6939d4b22..271725157aa9ada6aae49d318d3100954d0e1d16 100644
--- a/api/src/users/users.service.ts
+++ b/api/src/users/users.service.ts
@@ -1,6 +1,6 @@
 import { Injectable, Logger, NotFoundException } from '@nestjs/common';
 import { InjectRepository } from '@nestjs/typeorm';
-import { Repository } from 'typeorm';
+import { Repository, UpdateResult } from 'typeorm';
 import { UpdateUserInput } from './inputs/update-user.input';
 import { User } from './models/user.model';
 
@@ -37,7 +37,18 @@ export class UsersService {
    * @param {UserDataUpdate} data - update params
    * @returns The updated user.
    */
-  async update(id: string, data: UserDataUpdate): Promise<InternalUser> {
+  async update(id: string, data: UserDataUpdate): Promise<UpdateResult> {
+    return this.userRepository.update({ id }, data);
+  }
+
+  /**
+   * Saves user in the database.
+   * If user does not exist in the database then inserts, otherwise updates.
+   * @param {string} id - The id of the user to update.
+   * @param {UserDataUpdate} data - update params
+   * @returns The updated user.
+   */
+  async save(id: string, data: UserDataUpdate): Promise<InternalUser> {
     const updateData = {
       id,
       ...data,