diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts
index 7cd0b9ff96f257d7e06ccdd68846796a083b056a..41240e84f576532b296a61e24e9375f400e6d471 100644
--- a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts
+++ b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts
@@ -201,6 +201,26 @@ describe('KeycloakFormService', () => {
     });
   });
 
+  describe('delete', () => {
+    const dummyStateResource: StateResource<Dummy> = createStateResource(createDummy());
+
+    beforeEach(() => {
+      service._doDelete = jest.fn().mockReturnValue(singleHot(dummyStateResource));
+    });
+
+    it('should call do delete', () => {
+      service.delete();
+
+      expect(service._doDelete).toHaveBeenCalled();
+    });
+
+    it('should return delete response', () => {
+      const deleteResponse: Observable<StateResource<Dummy>> = service.delete();
+
+      expect(deleteResponse).toBeObservable(singleCold(dummyStateResource));
+    });
+  });
+
   describe('patch', () => {
     const valueToPatch: Dummy = { name: 'newName' };
     let patchFormSpy: jest.SpyInstance;
@@ -282,6 +302,7 @@ export class TestKeycloakFormService extends KeycloakFormService<Dummy> {
   public static readonly FIELD: string = 'attribute';
 
   public static SUBMIT_OBSERVABLE = () => of(createEmptyStateResource());
+  public static DELETE_OBSERVABLE = () => of(createEmptyStateResource());
   public static LOAD_OBSERVABLE = () => of(createEmptyStateResource());
 
   _initForm(): FormGroup {
@@ -301,4 +322,8 @@ export class TestKeycloakFormService extends KeycloakFormService<Dummy> {
   _doSubmit(): Observable<StateResource<Dummy>> {
     return TestKeycloakFormService.SUBMIT_OBSERVABLE();
   }
+
+  _doDelete(): Observable<StateResource<Dummy>> {
+    return TestKeycloakFormService.DELETE_OBSERVABLE();
+  }
 }
diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts
index 49a2e6c84e3fdbf69b22ca324ee0100a34ae6763..bc8b2ea2455f7cd0d3f77e0b02e72cc3998d1f4d 100644
--- a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts
+++ b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts
@@ -75,6 +75,12 @@ export abstract class KeycloakFormService<T> {
 
   abstract _doSubmit(): Observable<StateResource<T>>;
 
+  public delete(): Observable<StateResource<unknown>> {
+    return this._doDelete();
+  }
+
+  abstract _doDelete(): Observable<StateResource<unknown>>;
+
   _patch(valueToPatch: T): void {
     this.form.reset();
 
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 ae9c56bedd57177e3bac765ec968d7d00660794d..d0806e198efa5090d375832bbd313ca99482149b 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
@@ -415,6 +415,29 @@ describe('UserRepository', () => {
     });
   });
 
+  describe('deleteUser', () => {
+    const userId: string = faker.string.uuid();
+
+    beforeEach(() => {
+      kcAdminClient.users = <any>{
+        del: jest.fn().mockReturnValue(Promise.resolve(undefined)),
+      };
+    });
+
+    it('should call kcAdminClient users del', () => {
+      repository.deleteUser(userId);
+
+      expect(kcAdminClient.users['del']).toHaveBeenCalledWith({ id: userId });
+    });
+
+    it('should return void', (done) => {
+      repository.deleteUser(userId).subscribe((result: void) => {
+        expect(result).toBeUndefined();
+        done();
+      });
+    });
+  });
+
   describe('getUsers', () => {
     const user: User = createUser();
     const userArray: User[] = [user, user, user];
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 130176623c25c1cf1f848643b0a5687906fbae34..a5df128a7de4ceb8bd71c4d2edc337078b57bcca 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
@@ -151,6 +151,10 @@ export class UserRepository {
     return throwError(() => new Error('An error occurred while saving the user.'));
   }
 
+  public deleteUser(userId: string): Observable<void> {
+    return from(this.kcAdminClient.users.del({ id: userId }));
+  }
+
   public getUsers(): Observable<User[]> {
     return from(this.kcAdminClient.users.find()).pipe(
       map((userReps: UserRepresentation[]): User[] =>
diff --git a/alfa-client/libs/admin/user-shared/src/lib/user.service.spec.ts b/alfa-client/libs/admin/user-shared/src/lib/user.service.spec.ts
index 28e7e8cce9ce062979c43175587834aa818724ea..fce4d7d2cc427160ab70357168b5fbc347e7df8e 100644
--- a/alfa-client/libs/admin/user-shared/src/lib/user.service.spec.ts
+++ b/alfa-client/libs/admin/user-shared/src/lib/user.service.spec.ts
@@ -101,4 +101,21 @@ describe('UserService', () => {
       expect(user).toBeObservable(cold('ab', { a: createEmptyStateResource(true), b: userStateResource }));
     });
   });
+
+  describe('deleteInKeycloak', () => {
+    it('should call userRepository delete', () => {
+      service._deleteInKeycloak(user.id);
+
+      expect(repository.deleteUser).toHaveBeenCalledWith(user.id);
+    });
+
+    it('should return void', (done) => {
+      repository.deleteUser.mockReturnValue(of(undefined));
+
+      service._deleteInKeycloak(user.id).subscribe((result: void) => {
+        expect(result).toBeUndefined();
+        done();
+      });
+    });
+  });
 });
diff --git a/alfa-client/libs/admin/user-shared/src/lib/user.service.ts b/alfa-client/libs/admin/user-shared/src/lib/user.service.ts
index e927702221df953f2c5882fa6e8791ca98e0929e..d65103108f19ee160c78a8897f447ce7621b2bb0 100644
--- a/alfa-client/libs/admin/user-shared/src/lib/user.service.ts
+++ b/alfa-client/libs/admin/user-shared/src/lib/user.service.ts
@@ -47,7 +47,7 @@ export class UserService extends KeycloakResourceService<User> {
   }
 
   _deleteInKeycloak(id: string): Observable<void> {
-    throw new Error('Method not implemented.');
+    return this.userRepository.deleteUser(id);
   }
 
   public getUserById(userId: string): Observable<StateResource<User>> {
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.html
similarity index 84%
rename from alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.html
rename to alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.html
index 0bc050817641fda6d8b2bb0b253e073136590b61..367d0a4abbbd1f76c76468fe03e27403935a7577 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.html
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.html
@@ -1,4 +1,4 @@
-<admin-user-form-delete-dialog
+<admin-user-delete-dialog
   [username]="formService.getUserName()"
   [deleteUserStateResource]="deleteUserStateResource$ | async"
   (delete)="deleteUser()"
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7d31c2336f640739f3ff3c63d5d295405d9c9af8
--- /dev/null
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.spec.ts
@@ -0,0 +1,115 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ROUTES } from '@admin-client/shared';
+import { NavigationService } from '@alfa-client/navigation-shared';
+import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
+import { dispatchEventFromFixture, getMockComponent, Mock, mock } from '@alfa-client/test-utils';
+import { faker } from '@faker-js/faker/locale/de';
+import { Observable, of } from 'rxjs';
+import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
+import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
+import { createUserFormGroup } from '../../../../test/form';
+import { UserFormService } from '../user.formservice';
+import { UserDeleteDialogContainerComponent } from './user-delete-dialog-container.component';
+import { UserDeleteDialogComponent } from './user-delete-dialog/user-delete-dialog.component';
+
+describe('UserFormDeleteDialogComponent', () => {
+  let component: UserDeleteDialogContainerComponent;
+  let fixture: ComponentFixture<UserDeleteDialogContainerComponent>;
+
+  const deletDialogLocator: string = getDataTestIdOf('delete-dialog');
+
+  let formService: Mock<UserFormService>;
+  let navigationService: Mock<NavigationService>;
+
+  beforeEach(async () => {
+    formService = mock(UserFormService);
+    navigationService = mock(NavigationService);
+    formService = {
+      ...mock(UserFormService),
+      form: createUserFormGroup(),
+      delete: jest.fn(),
+    } as any;
+
+    await TestBed.configureTestingModule({
+      imports: [UserDeleteDialogContainerComponent, UserDeleteDialogComponent],
+      providers: [
+        { provide: UserFormService, useValue: formService },
+        { provide: NavigationService, useValue: navigationService },
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(UserDeleteDialogContainerComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('user form delete dialog', () => {
+    it('should be called', () => {
+      const username: string = faker.word.sample();
+      const stateResource: StateResource<unknown> = createEmptyStateResource();
+      formService.getUserName = jest.fn().mockReturnValue(username);
+      component.deleteUserStateResource$ = of(stateResource);
+
+      fixture.detectChanges();
+
+      const deleteDialog: UserDeleteDialogComponent = getMockComponent(fixture, UserDeleteDialogComponent);
+      expect(deleteDialog.username).toBe(username);
+      expect(deleteDialog.deleteUserStateResource).toBe(stateResource);
+    });
+
+    it('should call deleteUser on emit delete', () => {
+      component.deleteUser = jest.fn();
+
+      dispatchEventFromFixture(fixture, deletDialogLocator, 'delete');
+
+      expect(component.deleteUser).toHaveBeenCalled();
+    });
+  });
+
+  describe('component', () => {
+    describe('deleteUser', () => {
+      const loadingStateResource: StateResource<unknown> = createEmptyStateResource(true);
+      const loadingStateResource$: Observable<StateResource<unknown>> = of(loadingStateResource);
+      const loadingDoneStateResource$: Observable<StateResource<unknown>> = of(createEmptyStateResource());
+
+      it('should call formService.delete', () => {
+        formService.delete.mockReturnValue(loadingStateResource$);
+
+        component.deleteUser();
+
+        expect(formService.delete).toHaveBeenCalled();
+      });
+
+      it('should set deleteUserStateResource$', () => {
+        formService.delete.mockReturnValue(loadingStateResource$);
+
+        component.deleteUser();
+
+        expect(component.deleteUserStateResource$).toBeObservable(singleColdCompleted(loadingStateResource));
+      });
+
+      it('should not navigate on loading', () => {
+        formService.delete.mockReturnValue(loadingStateResource$);
+
+        component.deleteUser();
+        component.deleteUserStateResource$.subscribe();
+
+        expect(navigationService.navigate).not.toHaveBeenCalled();
+      });
+
+      it('should navigate on delete success', () => {
+        formService.delete.mockReturnValue(loadingDoneStateResource$);
+
+        component.deleteUser();
+        component.deleteUserStateResource$.subscribe();
+
+        expect(navigationService.navigate).toHaveBeenCalledWith(ROUTES.BENUTZER);
+      });
+    });
+  });
+});
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a582fc6598784096a6bedfb4b78966980cd0e9e9
--- /dev/null
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog-container.component.ts
@@ -0,0 +1,33 @@
+import { ROUTES } from '@admin-client/shared';
+import { NavigationService } from '@alfa-client/navigation-shared';
+import { createEmptyStateResource, isNotLoading, StateResource } from '@alfa-client/tech-shared';
+import { AsyncPipe } from '@angular/common';
+import { Component, inject } from '@angular/core';
+import { Observable, of, tap } from 'rxjs';
+import { UserFormService } from '../user.formservice';
+import { UserDeleteDialogComponent } from './user-delete-dialog/user-delete-dialog.component';
+
+@Component({
+  selector: 'admin-delete-dialog-container',
+  standalone: true,
+  imports: [UserDeleteDialogComponent, AsyncPipe],
+  templateUrl: './user-delete-dialog-container.component.html',
+})
+export class UserDeleteDialogContainerComponent {
+  public readonly formService = inject(UserFormService);
+  public readonly navigationService = inject(NavigationService);
+
+  public deleteUserStateResource$: Observable<StateResource<unknown>> = of(createEmptyStateResource());
+
+  public deleteUser(): void {
+    this.deleteUserStateResource$ = this.formService
+      .delete()
+      .pipe(tap((state: StateResource<unknown>) => this.navigateOnDeleteSuccess(state)));
+  }
+
+  private navigateOnDeleteSuccess(state: StateResource<any>): void {
+    if (isNotLoading(state)) {
+      this.navigationService.navigate(ROUTES.BENUTZER);
+    }
+  }
+}
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.html
similarity index 100%
rename from alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.html
rename to alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.html
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.spec.ts
similarity index 85%
rename from alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.spec.ts
rename to alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.spec.ts
index 0d9ab4a5d968a014fdbe8dfa0d9b0f0b3678b5c6..e2cfff1676a8048f0c8cc896450e25437533e39d 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.spec.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.spec.ts
@@ -4,22 +4,22 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent, CancelDialogButtonComponent } from '@ods/component';
 import { MockComponent } from 'ng-mocks';
 import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test';
-import { UserFormDeleteDialogComponent } from './user-form-delete-dialog.component';
+import { UserDeleteDialogComponent } from './user-delete-dialog.component';
 
 describe('UserFormDeleteDialogComponent', () => {
-  let component: UserFormDeleteDialogComponent;
-  let fixture: ComponentFixture<UserFormDeleteDialogComponent>;
+  let component: UserDeleteDialogComponent;
+  let fixture: ComponentFixture<UserDeleteDialogComponent>;
 
   const deleteButton: string = getDataTestIdOf('dialog-delete-button-host');
   const cancelButton: string = getDataTestIdOf('dialog-cancel-button-host');
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [UserFormDeleteDialogComponent],
+      imports: [UserDeleteDialogComponent],
       declarations: [MockComponent(CancelDialogButtonComponent), MockComponent(ButtonWithSpinnerComponent)],
     }).compileComponents();
 
-    fixture = TestBed.createComponent(UserFormDeleteDialogComponent);
+    fixture = TestBed.createComponent(UserDeleteDialogComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.ts
similarity index 76%
rename from alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.ts
rename to alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.ts
index a5ca4d3f99253778536011b590ff06c3abeffe99..9ced40bf330256dd8bd455248717390d1fdc4b62 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog/user-form-delete-dialog.component.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-delete-dialog/user-delete-dialog.component.ts
@@ -3,12 +3,12 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
 import { ButtonWithSpinnerComponent, CancelDialogButtonComponent } from '@ods/component';
 
 @Component({
-  selector: 'admin-user-form-delete-dialog',
+  selector: 'admin-user-delete-dialog',
   standalone: true,
   imports: [ButtonWithSpinnerComponent, CancelDialogButtonComponent],
-  templateUrl: './user-form-delete-dialog.component.html',
+  templateUrl: './user-delete-dialog.component.html',
 })
-export class UserFormDeleteDialogComponent {
+export class UserDeleteDialogComponent {
   @Input() username: string;
   @Input() deleteUserStateResource: StateResource<unknown>;
 
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.spec.ts
deleted file mode 100644
index 085218ad36f025930942f38789eaf8f7383a46a2..0000000000000000000000000000000000000000
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.spec.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
-import { dispatchEventFromFixture, getMockComponent, Mock, mock } from '@alfa-client/test-utils';
-import { faker } from '@faker-js/faker/locale/de';
-import { of } from 'rxjs';
-import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
-import { createUserFormGroup } from '../../../../test/form';
-import { UserFormService } from '../user.formservice';
-import { UserFormDeleteDialogContainerComponent } from './user-form-delete-dialog-container.component';
-import { UserFormDeleteDialogComponent } from './user-form-delete-dialog/user-form-delete-dialog.component';
-
-describe('UserFormDeleteDialogComponent', () => {
-  let component: UserFormDeleteDialogContainerComponent;
-  let fixture: ComponentFixture<UserFormDeleteDialogContainerComponent>;
-
-  const deletDialogLocator: string = getDataTestIdOf('delete-dialog');
-
-  let formService: Mock<UserFormService>;
-
-  beforeEach(async () => {
-    formService = mock(UserFormService);
-    formService = {
-      ...mock(UserFormService),
-      form: createUserFormGroup(),
-    } as any;
-
-    await TestBed.configureTestingModule({
-      imports: [UserFormDeleteDialogContainerComponent, UserFormDeleteDialogComponent],
-      providers: [{ provide: UserFormService, useValue: formService }],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(UserFormDeleteDialogContainerComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-
-  describe('user form delete dialog', () => {
-    it('should be called', () => {
-      const username: string = faker.word.sample();
-      const stateResource: StateResource<unknown> = createEmptyStateResource();
-      formService.getUserName = jest.fn().mockReturnValue(username);
-      component.deleteUserStateResource$ = of(stateResource);
-
-      fixture.detectChanges();
-
-      const deleteDialog: UserFormDeleteDialogComponent = getMockComponent(fixture, UserFormDeleteDialogComponent);
-      expect(deleteDialog.username).toBe(username);
-      expect(deleteDialog.deleteUserStateResource).toBe(stateResource);
-    });
-
-    it('should call deleteUser on emit delete', () => {
-      component.deleteUser = jest.fn();
-
-      dispatchEventFromFixture(fixture, deletDialogLocator, 'delete');
-
-      expect(component.deleteUser).toHaveBeenCalled();
-    });
-  });
-});
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.ts
deleted file mode 100644
index 3837d6fb96449fd7daa01b2123daed6896d789c3..0000000000000000000000000000000000000000
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-dialog-container/user-form-delete-dialog-container.component.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
-import { AsyncPipe } from '@angular/common';
-import { Component, inject } from '@angular/core';
-import { Observable, of } from 'rxjs';
-import { UserFormService } from '../user.formservice';
-import { UserFormDeleteDialogComponent } from './user-form-delete-dialog/user-form-delete-dialog.component';
-
-@Component({
-  selector: 'admin-user-form-delete-dialog-container',
-  standalone: true,
-  imports: [UserFormDeleteDialogComponent, AsyncPipe],
-  templateUrl: './user-form-delete-dialog-container.component.html',
-})
-//TODO Rename -> DeleteUserDialogContainerComponent
-export class UserFormDeleteDialogContainerComponent {
-  public readonly formService = inject(UserFormService);
-
-  public deleteUserStateResource$: Observable<StateResource<unknown>> = of(createEmptyStateResource());
-
-  public deleteUser(): void {
-    //Implement me
-  }
-}
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts
index 9fc048a1ff3e96fff626248ddbf0f0d03ac4b8ed..84b983e7b75ab270354c320373c71422d44611ad 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts
@@ -30,7 +30,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import { OpenDialogButtonComponent, SpinnerComponent } from '@ods/component';
 import { Observable } from 'rxjs';
 import { UserFormDataComponent } from './user-form-data/user-form-data.component';
-import { UserFormDeleteDialogContainerComponent } from './user-form-delete-dialog-container/user-form-delete-dialog-container.component';
+import { UserDeleteDialogContainerComponent } from './user-form-delete-dialog-container/user-delete-dialog-container.component';
 import { UserFormHeadlineComponent } from './user-form-headline/user-form-headline.component';
 import { UserFormOrganisationsEinheitListComponent } from './user-form-organisations-einheit-list/user-form-organisations-einheit-list.component';
 import { UserFormRolesComponent } from './user-form-roles/user-form-roles.component';
@@ -39,7 +39,7 @@ import { UserFormService } from './user.formservice';
 
 @Component({
   selector: 'admin-user-form',
-  providers: [UserFormService, { provide: DIALOG_COMPONENT, useValue: UserFormDeleteDialogContainerComponent }],
+  providers: [UserFormService, { provide: DIALOG_COMPONENT, useValue: UserDeleteDialogContainerComponent }],
   templateUrl: './user-form.component.html',
   standalone: true,
   imports: [
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts
index a7d60371fbecc62f86d23f23171f47bc323dc4ca..7b340b7fff3d0a41d0060c94835ce82fde99b9a0 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts
@@ -63,7 +63,14 @@ describe('UserFormService', () => {
   ]);
 
   beforeEach(() => {
-    service = { ...mock(UserService), refresh: jest.fn(), create: jest.fn(), save: jest.fn(), getUserById: jest.fn() };
+    service = {
+      ...mock(UserService),
+      refresh: jest.fn(),
+      create: jest.fn(),
+      save: jest.fn(),
+      delete: jest.fn(),
+      getUserById: jest.fn(),
+    };
     adminOrganisationsEinheitService = {
       ...mock(AdminOrganisationsEinheitService),
       getAll: jest.fn().mockReturnValue(of(adminOrganisationsEinheitList)),
@@ -351,6 +358,28 @@ describe('UserFormService', () => {
     }));
   });
 
+  describe('doDelete', () => {
+    const id: string = faker.string.uuid();
+    const stateResource: StateResource<unknown> = createEmptyStateResource();
+
+    beforeEach(() => {
+      formService._patchConfig = { id, doPatch: true };
+      service.delete.mockReturnValue(of(stateResource));
+    });
+
+    it('should call service delete', () => {
+      formService._doDelete();
+
+      expect(service.delete).toHaveBeenCalledWith(id);
+    });
+
+    it('should return empty stateResource', () => {
+      const result: Observable<StateResource<unknown>> = formService._doDelete();
+
+      expect(result).toBeObservable(singleColdCompleted(stateResource));
+    });
+  });
+
   describe('createOrSave', () => {
     const user: User = createUser();
 
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts
index a456872659a6b1ebd15a0bb570080b5834069fdd..da268c079ed0afa0607f1ce1c5667a4c1cb0d116 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts
@@ -206,6 +206,10 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
     );
   }
 
+  _doDelete(): Observable<StateResource<unknown>> {
+    return this.userService.delete(this._patchConfig.id);
+  }
+
   _createOrSave(user: User): Observable<StateResource<User>> {
     if (this.isPatch()) {
       return this.userService.save({