diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.spec.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.spec.ts
index fb90c453036dd5404513561d6035e0e36d409b24..ae9c56bedd57177e3bac765ec968d7d00660794d 100644
--- a/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.spec.ts
+++ b/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.spec.ts
@@ -31,7 +31,9 @@ import KcAdminClient from '@keycloak/keycloak-admin-client';
 import GroupRepresentation from '@keycloak/keycloak-admin-client/lib/defs/groupRepresentation';
 import MappingsRepresentation from '@keycloak/keycloak-admin-client/lib/defs/mappingsRepresentation';
 import RoleRepresentation, { RoleMappingPayload } from '@keycloak/keycloak-admin-client/lib/defs/roleRepresentation';
+import { Users } from '@keycloak/keycloak-admin-client/lib/resources/users';
 import { cold } from 'jest-marbles';
+import { omit } from 'lodash-es';
 import { throwError } from 'rxjs';
 import { createUser } from '../../../user-shared/test/user';
 import { UserFormService } from '../../../user/src/lib/user-form/user.formservice';
@@ -42,9 +44,16 @@ describe('UserRepository', () => {
   let kcAdminClient: Mock<KcAdminClient>;
 
   const user: User = createUser();
+  let kcAdminClientUsers: Mock<Users>;
 
   beforeEach(() => {
-    kcAdminClient = mock(KcAdminClient);
+    kcAdminClientUsers = {
+      ...mock(Users),
+      executeActionsEmail: jest.fn().mockImplementation(),
+      create: jest.fn().mockReturnValue(Promise.resolve({ id: user.id })),
+    };
+    kcAdminClient = { ...mock(KcAdminClient), users: <any>kcAdminClientUsers };
+
     TestBed.configureTestingModule({
       providers: [{ provide: KcAdminClient, useValue: kcAdminClient }],
     });
@@ -56,16 +65,10 @@ describe('UserRepository', () => {
   });
 
   describe('createInKeycloak', () => {
-    beforeEach(() => {
-      kcAdminClient.users = <any>{
-        create: jest.fn().mockReturnValue(Promise.resolve({ id: user.id })),
-      };
-    });
-
     it('should call kcAdminClient users create', () => {
       repository.createInKeycloak(user);
 
-      expect(kcAdminClient.users['create']).toHaveBeenCalledWith(user);
+      expect(kcAdminClient.users['create']).toHaveBeenCalledWith(omit(user, 'groupIds'));
     });
 
     it('should call addUserRoles', fakeAsync(() => {
@@ -111,7 +114,7 @@ describe('UserRepository', () => {
     it('should call kcAdminClient users update', () => {
       repository.saveInKeycloak(user);
 
-      expect(kcAdminClient.users['update']).toHaveBeenCalledWith({ id: user.id }, user);
+      expect(kcAdminClient.users['update']).toHaveBeenCalledWith({ id: user.id }, omit(user, 'groupIds'));
     });
 
     it('should call addUserRoles', fakeAsync(() => {
@@ -151,7 +154,7 @@ describe('UserRepository', () => {
     it('should call getOldUserGroups', async () => {
       await repository._updateUserGroups(user.id, user.groups);
 
-      expect(repository._getOldUserGroupIds).toBeCalled();
+      expect(repository._getOldUserGroupIds).toHaveBeenCalled();
     });
 
     it('should call deleteUserGroups', async () => {
@@ -209,7 +212,7 @@ describe('UserRepository', () => {
     it('should call kcAdminClient users listGroups for every group to delete', async () => {
       await repository._deleteUserGroups(user.id, [], oldUserGroupIds);
 
-      expect(kcAdminClient.users['delFromGroup']).toBeCalledTimes(oldUserGroupIds.length);
+      expect(kcAdminClient.users['delFromGroup']).toHaveBeenCalledTimes(oldUserGroupIds.length);
     });
   });
 
@@ -234,7 +237,7 @@ describe('UserRepository', () => {
       user.groups = groups;
       repository._addUserGroups(user.id, newUserGroupIds, []);
 
-      expect(kcAdminClient.users['addToGroup']).toBeCalledTimes(newUserGroupIds.length);
+      expect(kcAdminClient.users['addToGroup']).toHaveBeenCalledTimes(newUserGroupIds.length);
     });
   });
 
@@ -289,7 +292,7 @@ describe('UserRepository', () => {
     it('should call getClientId', async () => {
       await repository._addUserRolesForClient(user.id, [UserFormService.ADMIN], UserRepository.ADMIN_CLIENT_NAME);
 
-      expect(repository._getClientId).toBeCalled();
+      expect(repository._getClientId).toHaveBeenCalled();
     });
 
     it('should call getAlfaClientId', async () => {
@@ -381,18 +384,12 @@ describe('UserRepository', () => {
   });
 
   describe('sendActivationMail', () => {
-    beforeEach(() => {
-      kcAdminClient.users = <any>{
-        executeActionsEmail: jest.fn().mockReturnValue(Promise.resolve()),
-      };
-    });
-
     it('should call kcAdminClient users executeActionsEmail', () => {
       const userId: string = faker.string.uuid();
 
       repository._sendActivationMail(userId);
 
-      expect(kcAdminClient.users['executeActionsEmail']).toHaveBeenCalledWith({
+      expect(kcAdminClientUsers.executeActionsEmail).toHaveBeenCalledWith({
         id: userId,
         actions: ['VERIFY_EMAIL'],
         lifespan: 3600 * 24 * 7,
@@ -414,7 +411,7 @@ describe('UserRepository', () => {
       const error: Error = new Error('error');
       const result = repository._handleSaveError(error);
 
-      expect(result).toBeObservable(cold('#', null, new Error('An error occurred while patching the user.')));
+      expect(result).toBeObservable(cold('#', null, new Error('An error occurred while saving the user.')));
     });
   });
 
@@ -453,21 +450,21 @@ describe('UserRepository', () => {
       repository.getUsers().subscribe();
       tick();
 
-      expect(repository._mapToUser).toBeCalledTimes(userArray.length);
+      expect(repository._mapToUser).toHaveBeenCalledTimes(userArray.length);
     }));
 
     it('should call kcadminClient listGroups for every user', fakeAsync(() => {
       repository.getUsers().subscribe();
       tick();
 
-      expect(kcAdminClient.users['listGroups']).toBeCalledTimes(userArray.length);
+      expect(kcAdminClient.users['listGroups']).toHaveBeenCalledTimes(userArray.length);
     }));
 
     it('should call kcadminClient listRoleMappings for every user', fakeAsync(() => {
       repository.getUsers().subscribe();
       tick();
 
-      expect(kcAdminClient.users['listRoleMappings']).toBeCalledTimes(userArray.length);
+      expect(kcAdminClient.users['listRoleMappings']).toHaveBeenCalledTimes(userArray.length);
     }));
 
     it('should return users with groups and roles', (done) => {
diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.ts
index f299f51d720fb8438c22f0fb114434fecd37009d..130176623c25c1cf1f848643b0a5687906fbae34 100644
--- a/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.ts
+++ b/alfa-client/libs/admin/keycloak-shared/src/lib/user.repository.ts
@@ -148,7 +148,7 @@ export class UserRepository {
 
   _handleSaveError(err: any): Observable<never> {
     console.error('Error on patch user in Keycloak:', err);
-    return throwError(() => new Error('An error occurred while patching the user.'));
+    return throwError(() => new Error('An error occurred while saving the user.'));
   }
 
   public getUsers(): Observable<User[]> {