diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts
index e2cbf35c6a1488905f98fa26df189a6fe1425ccd..6869eafd381b1d9df0dde4b213466d4c8db8b4db 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts
@@ -1,10 +1,11 @@
+import { faker } from '@faker-js/faker';
 import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
 import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier';
 import { getCypressEnv, interceptWithResponse, waitOfInterceptor } from 'apps/admin-e2e/src/support/cypress-helper';
 import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component';
 import { AdminUserE2E, HttpMethodE2E, SnackbarMessagesE2E } from '../../../model/util';
 import { contains, notExist } from '../../../support/cypress.util';
-import { loginAsAriane } from '../../../support/user-util';
+import { loginAsAriane, loginByUsernameAndPassword } from '../../../support/user-util';
 
 describe('Benutzer anlegen', () => {
   const benutzerHelper: E2EBenutzerHelper = new E2EBenutzerHelper();
@@ -12,7 +13,8 @@ describe('Benutzer anlegen', () => {
 
   const snackBar: SnackBarE2EComponent = new SnackBarE2EComponent();
 
-  const newUser: AdminUserE2E = {
+  const newUserPassword: string = 'TestTestTest';
+  const newAdminUser: AdminUserE2E = {
     vorname: 'Theo',
     nachname: 'Testuser',
     username: 'testtheo',
@@ -22,6 +24,15 @@ describe('Benutzer anlegen', () => {
     organisationseinheiten: [],
   };
 
+  const newRegularUser: AdminUserE2E = {
+    vorname: 'Max',
+    nachname: 'Mustermann',
+    username: 'maxmust',
+    email: 'max.mustermann@ozg-sh.de',
+    isUser: true,
+    organisationseinheiten: [],
+  };
+
   before(() => {
     loginAsAriane();
   });
@@ -34,7 +45,7 @@ describe('Benutzer anlegen', () => {
     interceptWithResponse(HttpMethodE2E.POST, url, { errorCode, errorBody }).as(interceptor);
     benutzerHelper.openNewBenutzerPage();
 
-    benutzerHelper.addBenutzer(newUser);
+    benutzerHelper.addBenutzer(newAdminUser);
     benutzerHelper.saveBenutzer();
 
     waitOfInterceptor(interceptor).then(() => {
@@ -47,7 +58,7 @@ describe('Benutzer anlegen', () => {
   it('should show snackbar after save', () => {
     benutzerHelper.openNewBenutzerPage();
 
-    benutzerHelper.addBenutzer(newUser);
+    benutzerHelper.addBenutzer(newAdminUser);
     benutzerHelper.saveBenutzer();
 
     contains(snackBar.getMessage(), SnackbarMessagesE2E.NUTZER_ANGELEGT);
@@ -55,11 +66,60 @@ describe('Benutzer anlegen', () => {
   });
 
   it('should show created user in list', () => {
-    benutzerVerifier.verifyUserInList(newUser);
+    benutzerVerifier.verifyUserInList(newAdminUser);
   });
 
   it('should remove benutzer', () => {
-    benutzerHelper.deleteBenutzer(newUser.username);
-    benutzerVerifier.verifyUserNotInList(newUser.username);
+    benutzerHelper.deleteBenutzer(newAdminUser.username);
+    benutzerVerifier.verifyUserNotInList(newAdminUser.username);
+  });
+
+  describe('newly created admin user', () => {
+    it('should create new admin user', () => {
+      benutzerHelper.openNewBenutzerPage();
+
+      benutzerHelper.addBenutzer(newAdminUser);
+      benutzerHelper.saveBenutzer();
+
+      benutzerVerifier.verifyUserInList(newAdminUser);
+    });
+
+    it('should create new regular user', () => {
+      benutzerHelper.openNewBenutzerPage();
+
+      benutzerHelper.addBenutzer(newRegularUser);
+      benutzerHelper.saveBenutzer();
+
+      benutzerVerifier.verifyUserInList(newRegularUser);
+    });
+
+    it('should modify user', () => {
+      const userWithChangedFirstName = { ...newRegularUser, vorname: faker.person.firstName() };
+
+      benutzerHelper.activateUser(newAdminUser.username, newUserPassword).then(() => {
+        loginByUsernameAndPassword(newAdminUser.username, newUserPassword);
+        benutzerHelper.openBenutzerPage(newRegularUser.username);
+
+        benutzerHelper.editBenutzer(userWithChangedFirstName);
+        benutzerHelper.saveBenutzer();
+
+        benutzerVerifier.verifyUserInList(userWithChangedFirstName);
+      });
+    });
+
+    it('should have rights to delete user', () => {
+      loginByUsernameAndPassword(newAdminUser.username, newUserPassword);
+      benutzerHelper.openBenutzerListPage();
+
+      benutzerHelper.deleteBenutzer(newRegularUser.username);
+
+      benutzerVerifier.verifyUserNotInList(newRegularUser.username);
+    });
+
+    it('should delete user', () => {
+      loginAsAriane();
+
+      benutzerHelper.deleteBenutzer(newAdminUser.username);
+    });
   });
 });
diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-bearbeiten.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-bearbeiten.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..16d99dd00ad9ae05df7bc35fb531e981f712ceeb
--- /dev/null
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-bearbeiten.cy.ts
@@ -0,0 +1,58 @@
+import { faker } from '@faker-js/faker';
+import { BenutzerE2EComponent } from 'apps/admin-e2e/src/components/benutzer/benutzer.e2e.component';
+import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
+import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier';
+import { AdminUserE2E } from 'apps/admin-e2e/src/model/util';
+import { loginAsAriane } from 'apps/admin-e2e/src/support/user-util';
+
+describe('Benutzer Bearbeiten', () => {
+  const benutzerVerifier: E2EBenutzerVerifier = new E2EBenutzerVerifier();
+  const benutzerHelper: E2EBenutzerHelper = new E2EBenutzerHelper();
+  const benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
+
+  const userName: string = 'testtheo' + faker.string.uuid();
+  const user: AdminUserE2E = {
+    vorname: 'Theo',
+    nachname: 'Testuser',
+    username: userName,
+    email: 'theo' + faker.string.uuid() + '@ozg-sh.de',
+    isUser: true,
+    organisationseinheiten: [],
+  };
+
+  before(() => {
+    loginAsAriane();
+  });
+
+  it('should add new user', () => {
+    benutzerHelper.openNewBenutzerPage();
+    benutzerHelper.addBenutzerAndSave(user);
+  });
+
+  it('should not be able to edit username', () => {
+    benutzerHelper.openBenutzerPage(userName);
+
+    benutzerPage.getBenutzernameInput().should('not.exist');
+  });
+
+  it('should deactivate other alfa roles if "user" role is selected', () => {
+    benutzerVerifier.verifyAlfaRolesCorrectlyChecked(user);
+  });
+
+  it('should edit user', () => {
+    const editedUser: AdminUserE2E = { ...user, vorname: 'Theodor' };
+
+    benutzerHelper.editBenutzerAndSave(editedUser);
+  });
+
+  it('should check for new user name', () => {
+    benutzerHelper.openBenutzerPage(userName);
+
+    benutzerVerifier.verifyUserVorname('Theodor');
+  });
+
+  it('should delete user', () => {
+    benutzerHelper.deleteBenutzer(userName);
+    benutzerVerifier.verifyUserNotInList(userName);
+  });
+});
diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer_rollen.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer_rollen.cy.ts
index 205d661f91365f4bea89867b41ae673a7f1e2c4a..d978a0cea6580068a22a4c15571d078ab56a16dc 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer_rollen.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer_rollen.cy.ts
@@ -21,10 +21,23 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BenutzerE2EComponent, BenutzerListE2EComponent, BenutzerListItemE2EComponent, } from 'apps/admin-e2e/src/components/benutzer/benutzer.e2e.component';
+import {
+  BenutzerE2EComponent,
+  BenutzerListE2EComponent,
+  BenutzerListItemE2EComponent,
+} from 'apps/admin-e2e/src/components/benutzer/benutzer.e2e.component';
 import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
 import { OrganisationsEinheitE2E } from 'apps/admin-e2e/src/model/organisations-einheit';
-import { beChecked, beEnabled, contains, exist, mouseEnter, notBeChecked, notBeEnabled, visible, } from 'apps/admin-e2e/src/support/cypress.util';
+import {
+  beChecked,
+  beEnabled,
+  contains,
+  exist,
+  mouseEnter,
+  notBeChecked,
+  notBeEnabled,
+  visible,
+} from 'apps/admin-e2e/src/support/cypress.util';
 import { AlfaRollen, AlfaUsers, loginAsAriane } from 'apps/admin-e2e/src/support/user-util';
 
 describe('Benutzer und Rollen', () => {
diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts
index f0ed339c63bbb596e72915d346b97c8390bf35c1..ec1bbb05e560d3c45de062711da3da9ed8cf39c1 100644
--- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts
+++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts
@@ -1,3 +1,4 @@
+import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation';
 import {
   BenutzerDeleteDialogE2EComponent,
   BenutzerE2EComponent,
@@ -7,6 +8,7 @@ import { SnackBarE2EComponent } from '../../components/ui/snackbar.e2e.component
 import { OrganisationsEinheitE2E } from '../../model/organisations-einheit';
 import { AdminUserE2E } from '../../model/util';
 import { exist, notExist } from '../../support/cypress.util';
+import Chainable = Cypress.Chainable;
 
 export class E2EBenutzerExecutor {
   private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
@@ -14,24 +16,20 @@ export class E2EBenutzerExecutor {
   private benutzerDeleteDialog: BenutzerDeleteDialogE2EComponent = new BenutzerDeleteDialogE2EComponent();
   private benutzerListPage: BenutzerListE2EComponent = new BenutzerListE2EComponent();
 
-  public modifyBenutzer(user: AdminUserE2E): void {
-    this.benutzerPage.getVornameInput().type(user.vorname);
-    this.benutzerPage.getNachnameInput().type(user.nachname);
+  public createBenutzer(user: AdminUserE2E): void {
     this.benutzerPage.getBenutzernameInput().type(user.username);
-    this.benutzerPage.getMailInput().type(user.email);
-
-    if (user.isAdmin) {
-      this.benutzerPage.getAdminCheckbox().getRoot().click();
-    }
-    if (user.isUser) {
-      this.benutzerPage.getUserCheckbox().getRoot().click();
-    }
-    if (user.isLoeschen) {
-      this.benutzerPage.getLoeschenCheckbox().getRoot().click();
-    }
-    if (user.isPoststelle) {
-      this.benutzerPage.getPostCheckbox().getRoot().click();
-    }
+    this.modifyBenutzer(user);
+  }
+
+  public modifyBenutzer(user: AdminUserE2E): void {
+    this.benutzerPage.getVornameInput().clear().type(user.vorname);
+    this.benutzerPage.getNachnameInput().clear().type(user.nachname);
+    this.benutzerPage.getMailInput().clear().type(user.email);
+
+    this.benutzerPage.getAdminCheckbox().getRoot()[user.isAdmin ? 'check' : 'uncheck']();
+    this.benutzerPage.getUserCheckbox().getRoot()[user.isUser ? 'check' : 'uncheck']();
+    this.benutzerPage.getLoeschenCheckbox().getRoot()[user.isLoeschen ? 'check' : 'uncheck']();
+    this.benutzerPage.getPostCheckbox().getRoot()[user.isPoststelle ? 'check' : 'uncheck']();
 
     this.modifyOrganisationsEinheiten(user.organisationseinheiten);
   }
@@ -58,4 +56,16 @@ export class E2EBenutzerExecutor {
     this.benutzerDeleteDialog.getDeleteButton().click();
     exist(this.benutzerListPage.getList());
   }
+
+  public verifyEmail(userId: string): Chainable<Cypress.Response<void>> {
+    return cy.verifyEmail(userId);
+  }
+
+  public resetPassword(userId: string, newPassword: string): Chainable<Cypress.Response<void>> {
+    return cy.resetPassword(userId, newPassword);
+  }
+
+  public findUser(username: string): Chainable<UserRepresentation> {
+    return cy.findUser(username);
+  }
 }
diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts
index 2b06766322f460cdb12f6ec065e19b9e79e756f0..0c0ad0c26492851788cb31352522ac0244f4217f 100644
--- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts
+++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts
@@ -1,3 +1,4 @@
+import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation';
 import { OrganisationsEinheitE2E } from '../../model/organisations-einheit';
 import { AdminUserE2E } from '../../model/util';
 import { E2EBenutzerExecutor } from './benutzer.executor';
@@ -5,7 +6,7 @@ import { E2EBenutzerNavigator } from './benutzer.navigator';
 
 export class E2EBenutzerHelper {
   private navigator: E2EBenutzerNavigator = new E2EBenutzerNavigator();
-  private executer: E2EBenutzerExecutor = new E2EBenutzerExecutor();
+  private executor: E2EBenutzerExecutor = new E2EBenutzerExecutor();
 
   public openBenutzerListPage(): void {
     this.navigator.openBenutzerListPage();
@@ -21,7 +22,7 @@ export class E2EBenutzerHelper {
   }
 
   public addBenutzer(user: AdminUserE2E): void {
-    this.modifyBenutzer(user);
+    this.createBenutzer(user);
   }
 
   public editBenutzerAndSave(user: AdminUserE2E): void {
@@ -34,28 +35,41 @@ export class E2EBenutzerHelper {
   }
 
   private modifyBenutzer(user: AdminUserE2E): void {
-    this.executer.modifyBenutzer(user);
+    this.executor.modifyBenutzer(user);
+  }
+
+  private createBenutzer(user: AdminUserE2E): void {
+    this.executor.createBenutzer(user);
   }
 
   public editOrganisationsEinheitenAndSave(organisationsEinheiten: OrganisationsEinheitE2E[]): void {
-    this.executer.modifyOrganisationsEinheiten(organisationsEinheiten);
+    this.executor.modifyOrganisationsEinheiten(organisationsEinheiten);
     this.saveAndCloseSnackbar();
   }
 
   private saveAndCloseSnackbar(): void {
-    this.executer.saveAndCloseSnackbar();
+    this.executor.saveAndCloseSnackbar();
   }
 
   public saveBenutzer(): void {
-    this.executer.saveBenutzer();
+    this.executor.saveBenutzer();
   }
 
   public deleteBenutzer(userName: string): void {
     this.openBenutzerPage(userName);
-    this.executer.deleteBenutzer();
+    this.executor.deleteBenutzer();
   }
 
   public openBenutzerPage(userName: string): void {
     this.navigator.openBenutzerPage(userName);
   }
+
+  public activateUser(username: string, newPassword: string): Cypress.Chainable<UserRepresentation> {
+    return cy
+      .findUser(username)
+      .then((userRepresentation: UserRepresentation) => cy.verifyEmail(userRepresentation.id!).then(() => userRepresentation))
+      .then((userRepresentation: UserRepresentation) =>
+        cy.resetPassword(userRepresentation.id!, newPassword).then(() => userRepresentation),
+      );
+  }
 }
diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts
index be750e3dfbfe90c3821451932ecb475bd31cbbe5..277f735a6038200c0c21c6efaa8b06d71d6d9e9c 100644
--- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts
+++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts
@@ -4,7 +4,7 @@ import {
   BenutzerListItemE2EComponent,
 } from '../../components/benutzer/benutzer.e2e.component';
 import { AdminUserE2E } from '../../model/util';
-import { contains, exist, notExist } from '../../support/cypress.util';
+import { contains, exist, notBeEnabled, notExist } from '../../support/cypress.util';
 import { AlfaRollen } from '../../support/user-util';
 
 export class E2EBenutzerVerifier {
@@ -29,6 +29,25 @@ export class E2EBenutzerVerifier {
     });
   }
 
+  public verifyUserVorname(name: string): void {
+    this.benutzerPage.getVornameInput().should('have.value', name);
+  }
+
+  public verifyAlfaRolesCorrectlyChecked(user: AdminUserE2E): void {
+    if (user.isUser) {
+      notBeEnabled(this.benutzerPage.getLoeschenCheckbox().getRoot());
+      notBeEnabled(this.benutzerPage.getPostCheckbox().getRoot());
+    }
+    if (user.isLoeschen) {
+      notBeEnabled(this.benutzerPage.getUserCheckbox().getRoot());
+      notBeEnabled(this.benutzerPage.getPostCheckbox().getRoot());
+    }
+    if (user.isPoststelle) {
+      notBeEnabled(this.benutzerPage.getUserCheckbox().getRoot());
+      notBeEnabled(this.benutzerPage.getLoeschenCheckbox().getRoot());
+    }
+  }
+
   public verifyUserInList(user: AdminUserE2E): void {
     const benutzer: BenutzerListItemE2EComponent = this.getBenutzerItem(user.username);
     contains(benutzer.getUserName(), user.username);
diff --git a/alfa-client/apps/admin-e2e/src/support/commands.ts b/alfa-client/apps/admin-e2e/src/support/commands.ts
index 15e9839f02fc0b236bc23a554de9caa710947cf1..5442317e9972045e9b6be4644c4bbd5621377682 100644
--- a/alfa-client/apps/admin-e2e/src/support/commands.ts
+++ b/alfa-client/apps/admin-e2e/src/support/commands.ts
@@ -24,8 +24,12 @@
 
 /// <reference types="cypress" />
 
+import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation';
+import { getCypressEnv } from './cypress-helper';
+
 enum HttpMethod {
   POST = 'POST',
+  PUT = 'PUT',
   GET = 'GET',
 }
 
@@ -81,12 +85,57 @@ Cypress.Commands.add('getUserInfo', () => {
   return cy.request({
     method: HttpMethod.GET,
     url: `${getKeycloakBaseRealmUrl()}/userinfo`,
-    headers: {
-      [Header.AUTHORIZATION]: `bearer ${window.sessionStorage.getItem(ACCES_TOKEN)}`,
-    },
+    headers: { ...buildBearerTokenAuthorizationHeader() },
   });
 });
 
+Cypress.Commands.add('findUser', (username: string) =>
+  cy
+    .request<UserRepresentation[]>({
+      method: HttpMethod.GET,
+      url: getUsersApiUrl(),
+      headers: { ...buildBearerTokenAuthorizationHeader() },
+    })
+    .then<UserRepresentation>((response: Cypress.Response<UserRepresentation[]>) => {
+      const users: UserRepresentation[] = response.body;
+      const found: UserRepresentation | undefined = users.find((u: UserRepresentation) => u.username === username);
+      if (found) return found;
+      return Promise.reject(`User with username ${username} not found`);
+    }),
+);
+
+Cypress.Commands.add('verifyEmail', (userId: string) =>
+  cy.request<void>({
+    method: HttpMethod.PUT,
+    url: getUsersApiUrl() + '/' + userId,
+    headers: { ...buildBearerTokenAuthorizationHeader() },
+    body: { emailVerified: true },
+  }),
+);
+
+Cypress.Commands.add('resetPassword', (userId: string, newPassword: string) =>
+  cy.request<void>({
+    method: HttpMethod.PUT,
+    url: getUsersApiUrl() + '/' + userId + '/reset-password',
+    headers: { ...buildBearerTokenAuthorizationHeader() },
+    body: { type: 'password', temporary: false, value: newPassword },
+  }),
+);
+
+function buildBearerTokenAuthorizationHeader(): object {
+  return {
+    [Header.AUTHORIZATION]: `Bearer ${getAccessToken()}`,
+  };
+}
+
+function getAccessToken(): string | null {
+  return window.sessionStorage.getItem(ACCES_TOKEN);
+}
+
+function getUsersApiUrl(): string {
+  return getCypressEnv('keycloakUrl') + '/admin/realms/' + getCypressEnv('keycloakRealm') + '/users';
+}
+
 function getKeycloakBaseRealmUrl(): string {
   return `${Cypress.env(CypressEnv.KEYCLOAK_URL)}realms/${Cypress.env(CypressEnv.KEYCLOAK_REALM)}/protocol/openid-connect`;
 }
@@ -115,6 +164,12 @@ declare global {
       findElement(selector: string): Chainable<Element>;
 
       getUserInfo(): Chainable<void>;
+
+      findUser(username: string): Chainable<UserRepresentation>;
+
+      verifyEmail(userId: string): Chainable<Response<void>>;
+
+      resetPassword(userId: string, password: string): Chainable<Response<void>>;
     }
   }
 }
diff --git a/alfa-client/apps/admin-e2e/src/support/user-util.ts b/alfa-client/apps/admin-e2e/src/support/user-util.ts
index 989e061babc526985e62ace05e516bdb2d058516..0b8f311d0e9cbb0e5f453ee3e7c1e72a80548529 100644
--- a/alfa-client/apps/admin-e2e/src/support/user-util.ts
+++ b/alfa-client/apps/admin-e2e/src/support/user-util.ts
@@ -50,15 +50,19 @@ function login(userJson: string): void {
 
 // Hinweis: cacheAcrossSpecs: true lässt Tests umfallen
 export function loginByUi(user: UserE2E): void {
+  loginByUsernameAndPassword(user.name, user.password);
+}
+
+export function loginByUsernameAndPassword(username: string, password: string): void {
   cy.session(
-    user.name,
+    username,
     () => {
       cy.visit('/')
         .get('#kc-login')
         .should('exist')
         .then(() => {
-          cy.get('#username').type(user.name);
-          cy.get('#password').type(user.password);
+          cy.get('#username').type(username);
+          cy.get('#password').type(password);
           cy.get('#kc-login').click();
         });
     },
diff --git a/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts
index 7e1a233687f36196443be78c7d3d56c2601cc51e..5f4b16d3b7c03aaf22996fa476bcc6cde954c363 100644
--- a/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts
@@ -28,19 +28,19 @@ export class NavigationE2EComponent {
 
   private readonly locatorRoot: string = 'navigation';
 
-  public getRoot() {
+  public getRoot(): Cypress.Chainable<Element> {
     return cy.getTestElement(this.locatorRoot);
   }
 
-  public getAlleFilter() {
+  public getAlleFilter(): Cypress.Chainable<Element> {
     return cy.getTestElement(this.alleFilterToggleButton);
   }
 
-  public getMeineVorgaengeFilter() {
+  public getMeineVorgaengeFilter(): Cypress.Chainable<Element> {
     return cy.getTestElement(this.meineVorgaengeToggleButton);
   }
 
-  public getUnassignedFilter() {
+  public getUnassignedFilter(): Cypress.Chainable<Element> {
     return cy.getTestElement(this.unassignedToggleButton);
   }
 }
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward-formular.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward-formular.e2e.component.ts
index a4c4310c17db187a33065e33cb60e21cbff21b47..a550f4adf9a9e0a864640917ce66fcd10a42ed20 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward-formular.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward-formular.e2e.component.ts
@@ -50,13 +50,7 @@ export class ForwardFormularE2EComponent {
     return cy.getTestElement(this.locatorZustaendigeStelleError);
   }
 
-  //TODO Getter draus machen und im Test den click durchführen
-  public forward() {
-    return this.getForwardButton().click();
-  }
-  //
-
-  private getForwardButton() {
+  public getForwardButton() {
     return cy.getTestElement(this.locatorForwardButton);
   }
 }
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward.e2e.component.ts
index b6e8c7ca678c84bc16b90780b606e8858406b042..ee138ef9c37dc0daffcefd25286206011b778f2f 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forward.e2e.component.ts
@@ -23,7 +23,7 @@
  */
 import { ForwardFormularE2EComponent } from './vorgang-forward-formular.e2e.component';
 
-export class VorgangForwardingE2EComponent {
+export class ForwardingByEmailE2EComponent {
   private readonly locatorForwardingSpinner: string = 'forwarding-spinner';
   private readonly locatorForwardingSuccessMessage: string = 'forwarding-success-message';
   private readonly locatorForwardingErrorMessage: string = 'forwarding-error-message';
@@ -32,8 +32,7 @@ export class VorgangForwardingE2EComponent {
   private readonly locatorForwardingMarkAsFailButton: string = 'mark-as-fail-button';
   private readonly locatorFailedMessage: string = 'failed-message';
 
-  private readonly forwardingFormular: ForwardFormularE2EComponent =
-    new ForwardFormularE2EComponent();
+  private readonly forwardingFormular: ForwardFormularE2EComponent = new ForwardFormularE2EComponent();
 
   private readonly locatorRoot: string = 'forwarding';
 
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ace192e02ceaee278e0db6c036e249bd35b75ccb
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts
@@ -0,0 +1,51 @@
+export class ForwardingDialogE2EComponent {
+  private readonly root: string = 'forwarding-dialog';
+  private readonly cancelButton: string = 'cancel-dialog-button';
+  private readonly cancelIconButton: string = 'cancel-dialog-icon-button';
+  private readonly forwardingButton: string = 'forwarding-dialog-button';
+  private readonly searchText: string = 'instant_search-text-input';
+  private readonly searchEntry: string = 'item-button';
+  private readonly searchItemSelected: string = 'search-item-selected';
+  private readonly changeButton: string = 'forwarding-item-change-button';
+  private readonly organisationsEinheitSearch: string = 'organisations-einheit-search';
+
+  public getRoot() {
+    return cy.getTestElement(this.root);
+  }
+
+  public getCancelButton() {
+    return cy.getTestElement(this.cancelButton);
+  }
+
+  public getCancelIconButton() {
+    return cy.getTestElement(this.cancelIconButton);
+  }
+
+  public getForwardingButton() {
+    return cy.getTestElement(this.forwardingButton);
+  }
+
+  public getSearchText() {
+    return cy.getTestElement(this.searchText);
+  }
+
+  public search(text: string) {
+    this.getSearchText().type(text);
+  }
+
+  public clickSearchEntry(index: number): void {
+    cy.getTestElement(this.searchEntry).eq(index).click();
+  }
+
+  public getSearchItemSelected() {
+    return cy.getTestElement(this.searchItemSelected);
+  }
+
+  public getChangeButton() {
+    return cy.getTestElement(this.changeButton);
+  }
+
+  public getOrganisationsEinheitSearch() {
+    return cy.getTestElement(this.organisationsEinheitSearch);
+  }
+}
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts
index 9ada0f2e5a1a3f6a6b52e516037e1040e5948fd0..09585caa4a0cf07a4e271b9c0f071afa5b8052da 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts
@@ -23,33 +23,16 @@
  */
 export class VorgangViewsE2EComponent {
   private readonly neuViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Neu');
-  private readonly angenommenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Angenommen',
-  );
-  private readonly inBearbeitungViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'In_Bearbeitung',
-  );
-  private readonly beschiedenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Beschieden',
-  );
-  private readonly abgeschlossenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Abgeschlossen',
-  );
-  private readonly verworfenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Verworfen',
-  );
-  private readonly zuLoeschenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Zu_Loschen',
-  );
-  private readonly ungelesenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Ungelesen',
-  );
-  private readonly wiedervorlagenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Wiedervorlagen',
-  );
-  private readonly vorgangListViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent(
-    'Vorgangsliste',
-  );
+  private readonly angenommenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Angenommen');
+  private readonly inBearbeitungViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('In_Bearbeitung');
+  private readonly beschiedenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Beschieden');
+  private readonly abgeschlossenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Abgeschlossen');
+  private readonly weitergeleitetViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Weitergeleitet');
+  private readonly verworfenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Verworfen');
+  private readonly zuLoeschenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Zu_Loschen');
+  private readonly ungelesenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Ungelesen');
+  private readonly wiedervorlagenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Wiedervorlagen');
+  private readonly vorgangListViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Vorgangsliste');
   private readonly searchViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Suche');
 
   public getNeu(): VorgangViewE2EComponent {
@@ -72,6 +55,10 @@ export class VorgangViewsE2EComponent {
     return this.abgeschlossenViewItem;
   }
 
+  public getWeitergeleitet(): VorgangViewE2EComponent {
+    return this.weitergeleitetViewItem;
+  }
+
   public getVerworfen(): VorgangViewE2EComponent {
     return this.verworfenViewItem;
   }
@@ -108,15 +95,15 @@ export class VorgangViewE2EComponent {
     this.rootId = rootId;
   }
 
-  public getRoot() {
+  public getRoot(): Cypress.Chainable<Element> {
     return cy.getTestElement(`${this.root}${this.rootId}`);
   }
 
-  public getCount() {
+  public getCount(): Cypress.Chainable<Element> {
     return this.getRoot().getTestElement(`${this.count}${this.rootId}`);
   }
 
-  public getButton() {
+  public getButton(): Cypress.Chainable<Element> {
     return this.getRoot().findTestElementWithClass(this.button);
   }
 }
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.ts
deleted file mode 100644
index 8b346e0d75ba810435adc064d63adf36e2ef0991..0000000000000000000000000000000000000000
--- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { registerLocaleData } from '@angular/common';
-import localeDe from '@angular/common/locales/de';
-import localeDeExtra from '@angular/common/locales/extra/de';
-import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
-import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
-import { VorgangE2E } from '../../../model/vorgang';
-import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
-import { VorgangPage } from '../../../page-objects/vorgang.po';
-import { dropCollections } from '../../../support/cypress-helper';
-import { exist, notExist } from '../../../support/cypress.util';
-import { loginAsEmil } from '../../../support/user-util';
-import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
-
-registerLocaleData(localeDe, 'de', localeDeExtra);
-
-describe('Vorgang weiterleiten innerhalb der OzgCloud', () => {
-  const mainPage: MainPage = new MainPage();
-  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
-
-  const vorgangPage: VorgangPage = new VorgangPage();
-  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
-
-  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
-
-  before(() => {
-    initVorgaenge([vorgangWeiterleiten]);
-
-    loginAsEmil();
-
-    waitForSpinnerToDisappear();
-    exist(vorgangList.getRoot());
-  });
-
-  after(() => {
-    dropCollections();
-  });
-
-  describe('Weiterleiten', () => {
-    it('should display Weiterleiten button in Status Neu', () => {
-      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangFormularButtons.getForwardButton());
-    });
-  });
-});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-fail.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-fail.cy.ts
similarity index 76%
rename from alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-fail.cy.ts
rename to alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-fail.cy.ts
index 717b730610c3be2da7d0f12e9c1f2783c553ae97..e90a6964108c52d02bd0503f615268fc50b0da5b 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-fail.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-fail.cy.ts
@@ -21,7 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { VorgangForwardingE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
+import { ForwardFormularE2EComponent } from '../../../components/vorgang/vorgang-forward-formular.e2e.component';
+import { ForwardingByEmailE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { VorgangE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
@@ -32,12 +33,12 @@ import { FORWARDING_INVALID_EMAIL } from '../../../support/data.util';
 import { loginAsEmil } from '../../../support/user-util';
 import { createVorgang, initVorgang } from '../../../support/vorgang-util';
 
-describe.skip('{TODO: need to fix with a mock} Vorgang forwarding fail', () => {
+describe.skip('{TODO: need to fix with a mock} Vorgang forwarding by email fail', () => {
   const mainPage: MainPage = new MainPage();
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
   const vorgangPage: VorgangPage = new VorgangPage();
-  const forwardingContainer: VorgangForwardingE2EComponent = vorgangPage.getForwardingContainer();
+  const forwardingByEmailContainer: ForwardingByEmailE2EComponent = vorgangPage.getForwardingByEmailContainer();
 
   const vorgang: VorgangE2E = createVorgang();
 
@@ -60,20 +61,20 @@ describe.skip('{TODO: need to fix with a mock} Vorgang forwarding fail', () => {
       exist(vorgangPage.getVorgangDetailHeader().getRoot());
     });
 
-    it('should show forwarding', () => {
-      exist(forwardingContainer.getRoot());
+    it('should show forwarding by email', () => {
+      exist(forwardingByEmailContainer.getRoot());
     });
   });
 
   describe('fill forward formular', () => {
     it('should show spinner with text on valid formular', () => {
-      const forwardForumlar = forwardingContainer.getFormular();
+      const forwardForumlar: ForwardFormularE2EComponent = forwardingByEmailContainer.getFormular();
       forwardForumlar.getZustaendigeStelle().clear().type(FORWARDING_INVALID_EMAIL);
       forwardForumlar.getPasswort().clear().type('validespasswort');
 
-      forwardForumlar.forward();
+      forwardForumlar.getForwardButton().click();
 
-      exist(forwardingContainer.getSpinner());
+      exist(forwardingByEmailContainer.getSpinner());
     });
   });
 
@@ -81,22 +82,19 @@ describe.skip('{TODO: need to fix with a mock} Vorgang forwarding fail', () => {
     it('should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG], () => {
       waitForSpinnerToDisappear();
 
-      haveText(
-        vorgangPage.getVorgangDetailHeader().getStatus(),
-        vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG],
-      );
+      haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG]);
     });
 
     it('should show forward fail text', () => {
-      exist(forwardingContainer.getForwardingErrorMessage());
+      exist(forwardingByEmailContainer.getForwardingErrorMessage());
     });
 
     it('should NOT show "mark as success" button', () => {
-      notExist(forwardingContainer.getMarkAsSuccessButton());
+      notExist(forwardingByEmailContainer.getMarkAsSuccessButton());
     });
 
     it('should show formular', () => {
-      exist(forwardingContainer.getFormular().getRoot());
+      exist(forwardingByEmailContainer.getFormular().getRoot());
     });
   });
 });
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-failed-cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-failed.cy.ts
similarity index 80%
rename from alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-failed-cy.ts
rename to alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-failed.cy.ts
index f9b5af08c1bffc8e87594aa775c383a222255876..8a9bc49f7aa34bf2e1f47da5d31419bf891ea3b9 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-failed-cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email-failed.cy.ts
@@ -21,7 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { VorgangForwardingE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
+import { ForwardFormularE2EComponent } from '../../../components/vorgang/vorgang-forward-formular.e2e.component';
+import { ForwardingByEmailE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { VorgangE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
@@ -32,12 +33,12 @@ import { FORWARDING_TEST_EMAIL } from '../../../support/data.util';
 import { loginAsEmil } from '../../../support/user-util';
 import { createVorgang, initVorgang } from '../../../support/vorgang-util';
 
-describe('Vorgang forwarding failed', () => {
+describe.skip('{TODO: needs fixing} Vorgang forwarding by email failed', () => {
   const mainPage: MainPage = new MainPage();
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
   const vorgangPage: VorgangPage = new VorgangPage();
-  const forwardingContainer: VorgangForwardingE2EComponent = vorgangPage.getForwardingContainer();
+  const forwardingContainer: ForwardingByEmailE2EComponent = vorgangPage.getForwardingByEmailContainer();
 
   const vorgang: VorgangE2E = createVorgang();
 
@@ -69,11 +70,11 @@ describe('Vorgang forwarding failed', () => {
 
   describe('fill forward formular', () => {
     it('should show spinner with text on valid formular', { defaultCommandTimeout: 30000 }, () => {
-      const formular = forwardingContainer.getFormular();
+      const formular: ForwardFormularE2EComponent = forwardingContainer.getFormular();
       formular.getZustaendigeStelle().clear().type(FORWARDING_TEST_EMAIL);
       formular.getPasswort().clear().type('validespasswort');
 
-      formular.forward();
+      formular.getForwardButton().click();
 
       exist(forwardingContainer.getSpinner());
     });
@@ -83,10 +84,7 @@ describe('Vorgang forwarding failed', () => {
     it('should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET], () => {
       waitForSpinnerToDisappear();
 
-      haveText(
-        vorgangPage.getVorgangDetailHeader().getStatus(),
-        vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET],
-      );
+      haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET]);
     });
 
     it('should show forward success text', () => {
@@ -121,17 +119,11 @@ describe('Vorgang forwarding failed', () => {
   });
 
   describe('switch to list view', () => {
-    it(
-      'should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG] + ' in list',
-      () => {
-        vorgangPage.getSubnavigation().getBackButton().click();
-        waitForSpinnerToDisappear();
-
-        haveText(
-          vorgangList.getListItem(vorgang.name).getStatus(),
-          vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG],
-        );
-      },
-    );
+    it('should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG] + ' in list', () => {
+      vorgangPage.getSubnavigation().getBackButton().click();
+      waitForSpinnerToDisappear();
+
+      haveText(vorgangList.getListItem(vorgang.name).getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG]);
+    });
   });
 });
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email.cy.ts
similarity index 77%
rename from alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.cy.ts
rename to alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email.cy.ts
index f090dd3185bf81dffdb06b6f8f3dc48fc7f378a2..279337199a74e46b323388ba33ca09b47d7a80d6 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding-by-email.cy.ts
@@ -21,32 +21,23 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { VorgangForwardingE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
+import { ForwardingByEmailE2EComponent } from '../../../components/vorgang/vorgang-forward.e2e.component';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { VorgangE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
 import { dropCollections } from '../../../support/cypress-helper';
 import { exist, haveText, haveValue, notExist } from '../../../support/cypress.util';
-import {
-  FORWARDING_INVALID_EMAIL,
-  FORWARDING_TEST_EMAIL,
-  VORGANG_ZUSTAENDIGE_STELLE_EMAIL,
-} from '../../../support/data.util';
+import { FORWARDING_INVALID_EMAIL, FORWARDING_TEST_EMAIL, VORGANG_ZUSTAENDIGE_STELLE_EMAIL } from '../../../support/data.util';
 import { loginAsEmil } from '../../../support/user-util';
-import {
-  buildVorgang,
-  createVorgang,
-  initVorgaenge,
-  objectIds,
-} from '../../../support/vorgang-util';
-
-describe.skip('Vorgang forward', () => {
+import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
+
+describe.skip('Vorgang forwarding by email', () => {
   const mainPage: MainPage = new MainPage();
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
   const vorgangPage: VorgangPage = new VorgangPage();
-  const forwardingContainer: VorgangForwardingE2EComponent = vorgangPage.getForwardingContainer();
+  const forwardingContainer: ForwardingByEmailE2EComponent = vorgangPage.getForwardingByEmailContainer();
 
   const vorgang: VorgangE2E = { ...createVorgang(), name: 'TestVorgangRedirectSpinner' };
   const vorgangEmpty: VorgangE2E = buildVorgang(objectIds[0], 'TestVorgangRedirectEmpty');
@@ -77,10 +68,7 @@ describe.skip('Vorgang forward', () => {
     });
 
     it('should be prefilled', () => {
-      haveValue(
-        forwardingContainer.getFormular().getZustaendigeStelle(),
-        VORGANG_ZUSTAENDIGE_STELLE_EMAIL,
-      );
+      haveValue(forwardingContainer.getFormular().getZustaendigeStelle(), VORGANG_ZUSTAENDIGE_STELLE_EMAIL);
     });
   });
 
@@ -91,7 +79,7 @@ describe.skip('Vorgang forward', () => {
         forwardFormular.getZustaendigeStelle().clear().type(FORWARDING_INVALID_EMAIL); //TODO create valid email-address without adding it to landesnetzlist
         forwardFormular.getPasswort().clear().type('zukurz');
 
-        forwardFormular.forward();
+        forwardFormular.getForwardButton().click();
         waitForSpinnerToDisappear();
 
         exist(forwardFormular.getPasswortError());
@@ -101,7 +89,7 @@ describe.skip('Vorgang forward', () => {
         const forwardFormular = forwardingContainer.getFormular();
         forwardFormular.getZustaendigeStelle().clear().type(FORWARDING_INVALID_EMAIL);
 
-        forwardFormular.forward();
+        forwardFormular.getForwardButton().click();
         waitForSpinnerToDisappear();
 
         exist(forwardFormular.getZustaendigeStelleError());
@@ -114,7 +102,7 @@ describe.skip('Vorgang forward', () => {
         forwardFormular.getZustaendigeStelle().clear().type(FORWARDING_TEST_EMAIL);
         forwardFormular.getPasswort().clear();
 
-        forwardFormular.forward();
+        forwardFormular.getForwardButton().click();
 
         exist(forwardingContainer.getSpinner());
       });
@@ -122,18 +110,11 @@ describe.skip('Vorgang forward', () => {
   });
 
   describe('success forwarding', () => {
-    it(
-      'should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET],
-      { defaultCommandTimeout: 30000 },
-      () => {
-        waitForSpinnerToDisappear();
+    it('should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET], { defaultCommandTimeout: 30000 }, () => {
+      waitForSpinnerToDisappear();
 
-        haveText(
-          vorgangPage.getVorgangDetailHeader().getStatus(),
-          vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET],
-        );
-      },
-    );
+      haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET]);
+    });
 
     it('should show forward success text', () => {
       exist(forwardingContainer.getForwardingSuccessMessage());
@@ -156,18 +137,12 @@ describe.skip('Vorgang forward', () => {
   });
 
   describe('switch to list view', () => {
-    it(
-      'should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET] + ' in list',
-      () => {
-        vorgangPage.getSubnavigation().getBackButton().click();
-        waitForSpinnerToDisappear();
+    it('should have status ' + vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET] + ' in list', () => {
+      vorgangPage.getSubnavigation().getBackButton().click();
+      waitForSpinnerToDisappear();
 
-        haveText(
-          vorgangList.getListItem(vorgang.name).getStatus(),
-          vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET],
-        );
-      },
-    );
+      haveText(vorgangList.getListItem(vorgang.name).getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.WEITERGELEITET]);
+    });
   });
 
   describe('change to non forwarding vorgang', () => {
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..82dd57a8ae88f5879ed473712a489e31520d0c0e
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts
@@ -0,0 +1,42 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { E2EVorgangNavigator } from '../../../helper/vorgang/vorgang.navigator';
+import { E2EVorgangVerifier } from '../../../helper/vorgang/vorgang.verifier';
+import { VorgangE2E } from '../../../model/vorgang';
+import { dropCollections } from '../../../support/cypress-helper';
+import { loginAsEmil } from '../../../support/user-util';
+import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang weiterleiten innerhalb der OzgCloud', () => {
+  const vorgangNavigator: E2EVorgangNavigator = new E2EVorgangNavigator();
+  const vorgangVerifier: E2EVorgangVerifier = new E2EVorgangVerifier();
+
+  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
+
+  before(() => {
+    initVorgaenge([vorgangWeiterleiten]);
+  });
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('Weiterleiten', () => {
+    describe('Emil', () => {
+      it('should login as Emil', () => {
+        loginAsEmil();
+      });
+
+      it('should open vorgang', () => {
+        vorgangNavigator.openVorgangDetailByName(vorgangWeiterleiten.name);
+      });
+
+      it('should display Weiterleiten button in Status Neu', () => {
+        vorgangVerifier.verifyForwardingButtonExists();
+      });
+    });
+  });
+});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
index a254ba3a092baa3b88fa2579ecf0399e5a83029c..c92fb955a61b78ce58d2222f12b3ff8785c04670 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
@@ -161,6 +161,12 @@ describe('VorgangList Page', () => {
         isKeyboardFocused(views.getAbgeschlossen().getButton());
       });
 
+      it('should focus Weitergeleitet view', () => {
+        pressTab();
+
+        isKeyboardFocused(views.getWeitergeleitet().getButton());
+      });
+
       it('should focus Verworfen view', () => {
         pressTab();
 
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward.ts
deleted file mode 100644
index d4661c6d5f536cda3e4286f4064b157cd5e56cf0..0000000000000000000000000000000000000000
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { registerLocaleData } from '@angular/common';
-import localeDe from '@angular/common/locales/de';
-import localeDeExtra from '@angular/common/locales/extra/de';
-import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
-import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
-import { VorgangE2E } from '../../../model/vorgang';
-import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
-import { VorgangPage } from '../../../page-objects/vorgang.po';
-import { dropCollections } from '../../../support/cypress-helper';
-import { exist, notExist } from '../../../support/cypress.util';
-import { loginAsPeter, loginAsSabine } from '../../../support/user-util';
-import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
-
-registerLocaleData(localeDe, 'de', localeDeExtra);
-
-describe('Vorgang weiterleiten innerhalb der OzgCloud', () => {
-  const mainPage: MainPage = new MainPage();
-  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
-
-  const vorgangPage: VorgangPage = new VorgangPage();
-  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
-
-  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
-
-  after(() => {
-    dropCollections();
-  });
-
-  describe('For Sabine', () => {
-    before(() => {
-      initVorgaenge([vorgangWeiterleiten]);
-
-      loginAsSabine();
-
-      waitForSpinnerToDisappear();
-      exist(vorgangList.getRoot());
-    });
-
-    it('should display Weiterleiten button in Status Neu', () => {
-      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
-      waitForSpinnerToDisappear();
-
-      exist(vorgangFormularButtons.getForwardButton());
-    });
-
-    it('should not display Weiterleiten button in Status Angenommen', () => {
-      vorgangFormularButtons.getAnnehmenButton().click();
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangFormularButtons.getForwardButton());
-    });
-
-    it('should not display Weiterleiten button in Status In Bearbeitung', () => {
-      vorgangFormularButtons.getBearbeitenButton().click();
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangFormularButtons.getForwardButton());
-    });
-  });
-
-  describe('For Peter', () => {
-    before(() => {
-      initVorgaenge([vorgangWeiterleiten]);
-
-      loginAsPeter();
-
-      waitForSpinnerToDisappear();
-      exist(vorgangList.getRoot());
-    });
-
-    it('should not display Weiterleiten button in Status In Neu', () => {
-      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangFormularButtons.getForwardButton());
-    });
-  });
-});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e0b1b6c25c3da5d05e92a55ae8c01b0cfd33bb63
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts
@@ -0,0 +1,148 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
+import { ForwardingDialogE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component';
+import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
+import { E2EVorgangNavigator } from '../../../helper/vorgang/vorgang.navigator';
+import { E2EVorgangVerifier } from '../../../helper/vorgang/vorgang.verifier';
+import { VorgangE2E } from '../../../model/vorgang';
+import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
+import { VorgangPage } from '../../../page-objects/vorgang.po';
+import { dropCollections } from '../../../support/cypress-helper';
+import { beAriaDisabled, contains, exist, notBeAriaDisabled, notExist } from '../../../support/cypress.util';
+import { loginAsPeter, loginAsSabine } from '../../../support/user-util';
+import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang weiterleiten', () => {
+  const vorgangNavigator: E2EVorgangNavigator = new E2EVorgangNavigator();
+  const vorgangVerifier: E2EVorgangVerifier = new E2EVorgangVerifier();
+
+  const mainPage: MainPage = new MainPage();
+  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
+
+  const organisationsEinheitName = 'Landeshauptstadt Kiel - Pries-Friedrichsort Stadtteilamt';
+  const organisationsEinheitAddress = 'An der Schanze 45, 24159 Kiel';
+
+  const vorgangPage: VorgangPage = new VorgangPage();
+  const forwardingDialog: ForwardingDialogE2EComponent = vorgangPage.getForwardingDialogContainer();
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
+
+  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('For Sabine', () => {
+    before(() => {
+      initVorgaenge([vorgangWeiterleiten]);
+
+      loginAsSabine();
+
+      waitForSpinnerToDisappear();
+      exist(vorgangList.getRoot());
+    });
+
+    it('should display Weiterleiten button in Status Neu', () => {
+      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      vorgangVerifier.verifyForwardingButtonExists();
+    });
+
+    it('should open forwarding dialog on forward button click', () => {
+      vorgangFormularButtons.getForwardButton().click();
+
+      exist(forwardingDialog.getRoot());
+    });
+
+    it('should have organisations einheit search', () => {
+      exist(forwardingDialog.getOrganisationsEinheitSearch());
+    });
+
+    it('should have disabled forwarding button', () => {
+      beAriaDisabled(forwardingDialog.getForwardingButton());
+    });
+
+    it('should close dialog on escape', () => {
+      forwardingDialog.getRoot().type('{esc}');
+
+      notExist(forwardingDialog.getRoot());
+    });
+
+    it('should close dialog on abbrechen button', () => {
+      vorgangFormularButtons.getForwardButton().click();
+      forwardingDialog.getCancelButton().click();
+
+      notExist(forwardingDialog.getRoot());
+    });
+
+    it('should close dialog on x icon', () => {
+      vorgangFormularButtons.getForwardButton().click();
+      forwardingDialog.getCancelIconButton().click();
+
+      notExist(forwardingDialog.getRoot());
+    });
+
+    it('should show selected search item on search select', () => {
+      vorgangFormularButtons.getForwardButton().click();
+      forwardingDialog.search(organisationsEinheitName);
+      forwardingDialog.clickSearchEntry(0);
+
+      exist(forwardingDialog.getSearchItemSelected());
+      contains(forwardingDialog.getSearchItemSelected(), organisationsEinheitName);
+      contains(forwardingDialog.getSearchItemSelected(), organisationsEinheitAddress);
+    });
+
+    it('should not show zufi search on search select', () => {
+      notExist(forwardingDialog.getOrganisationsEinheitSearch());
+    });
+
+    it('should not disable forwarding button on search select', () => {
+      notBeAriaDisabled(forwardingDialog.getForwardingButton());
+    });
+
+    it('should clear selected search item on change button click', () => {
+      forwardingDialog.getChangeButton().click();
+
+      notExist(forwardingDialog.getSearchItemSelected());
+      exist(forwardingDialog.getOrganisationsEinheitSearch());
+      beAriaDisabled(forwardingDialog.getForwardingButton());
+    });
+
+    it('should not display Weiterleiten button in status Angenommen', () => {
+      forwardingDialog.getCancelButton().click();
+      vorgangFormularButtons.getAnnehmenButton().click();
+      waitForSpinnerToDisappear();
+
+      vorgangVerifier.verifyNoForwardingButtonExists();
+    });
+
+    it('should not display Weiterleiten button in status In Bearbeitung', () => {
+      vorgangFormularButtons.getBearbeitenButton().click();
+      waitForSpinnerToDisappear();
+
+      vorgangVerifier.verifyNoForwardingButtonExists();
+    });
+  });
+
+  describe('For Peter', () => {
+    before(() => {
+      initVorgaenge([vorgangWeiterleiten]);
+
+      loginAsPeter();
+
+      waitForSpinnerToDisappear();
+      exist(vorgangList.getRoot());
+    });
+
+    it('should display Weiterleiten button in Status In Neu', () => {
+      vorgangNavigator.openVorgangDetailByName(vorgangWeiterleiten.name);
+
+      vorgangVerifier.verifyForwardingButtonExists();
+    });
+  });
+});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts
index 2a2316dfc645ba0cbb99af05b34b041ce5d7646e..d8374f8aa947247e627e8d5d437f4aca9f61c9a7 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts
@@ -23,13 +23,22 @@
  */
 import { NavigationE2EComponent } from 'apps/alfa-e2e/src/components/navigation/navigation.e2e.component';
 import { VorgangListE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component';
-import { VorgangViewsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component';
+import {
+  VorgangViewE2EComponent,
+  VorgangViewsE2EComponent,
+} from 'apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component';
 import { MainPage, waitForSpinnerToDisappear } from 'apps/alfa-e2e/src/page-objects/main.po';
 import { exist } from 'apps/alfa-e2e/src/support/cypress.util';
 import { Interception } from 'cypress/types/net-stubbing';
 import { HttpMethodE2E } from '../../../model/util';
 import { VorgangE2E, VorgangStatusE2E } from '../../../model/vorgang';
-import { dropCollections, intercept, scrollToWindowBottom, waitOfInterceptor } from '../../../support/cypress-helper';
+import {
+  dropCollections,
+  intercept,
+  scrollToWindowBottom,
+  scrollToWindowTop,
+  waitOfInterceptor,
+} from '../../../support/cypress-helper';
 import { generateIds } from '../../../support/tech.util';
 import { getUserSabineId, initUsermanagerUsers, loginAsSabine } from '../../../support/user-util';
 import { buildVorgang, initVorgaenge } from '../../../support/vorgang-util';
@@ -43,6 +52,7 @@ describe('VorgangList View Pages', () => {
 
   const views: VorgangViewsE2EComponent = mainPage.getViews();
 
+  const VORGANG_NAME_PREFIX: string = 'Vorgang';
   const PAGE_SIZE: number = 100;
   const assignedTo: string = getUserSabineId();
 
@@ -57,6 +67,8 @@ describe('VorgangList View Pages', () => {
       createAssignedVorgaengeWithStatus(VorgangStatusE2E.BESCHIEDEN),
       createVorgaengeWithStatus(VorgangStatusE2E.ABGESCHLOSSEN),
       createAssignedVorgaengeWithStatus(VorgangStatusE2E.ABGESCHLOSSEN),
+      createVorgaengeWithStatus(VorgangStatusE2E.WEITERGELEITET),
+      createAssignedVorgaengeWithStatus(VorgangStatusE2E.WEITERGELEITET),
       createVorgaengeWithStatus(VorgangStatusE2E.VERWORFEN),
       createAssignedVorgaengeWithStatus(VorgangStatusE2E.VERWORFEN),
     );
@@ -73,914 +85,259 @@ describe('VorgangList View Pages', () => {
   });
 
   describe('Neu', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangNEU_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangNEUAssigned_';
+    const STATUS: string = VorgangStatusE2E.NEU;
 
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge NEU', () => {
-          views.getNeu().getRoot().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge NEU and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(3)).as(loadPageInterceptor);
-        });
-
-        it('should show page 3 with 10 vorgaenge NEU ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      function buildVorgangNeuPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=NEU`;
-      }
-    });
-
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangNeuAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge NEU', () => {
-          navigation.getMeineVorgaengeFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangNeuAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge NEU and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangNeuAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=NEU`;
-      }
-    });
-
-    describe('Nicht zugewiesen filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge NEU', () => {
-          navigation.getUnassignedFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=NEU`;
-      }
-    });
+    testAlleFilter(STATUS, views.getNeu());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
   });
 
   describe('Angenommen', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangANGENOMMEN_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangANGENOMMENAssigned_';
-
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          navigation.getAlleFilter().click();
-          waitForSpinnerToDisappear();
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => {
-          views.getAngenommen().getRoot().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge ANGENOMMEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(3)).as(loadPageInterceptor);
-        });
-
-        it('should show page 3 with 10 vorgaenge ANGENOMMEN ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
+    const STATUS: string = VorgangStatusE2E.ANGENOMMEN;
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      function buildVorgangAngenommenPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=ANGENOMMEN`;
-      }
-    });
-
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => {
-          navigation.getMeineVorgaengeFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge ANGENOMMEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangAngenommenAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=ANGENOMMEN`;
-      }
-    });
-
-    describe('Nicht zugewiesen filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => {
-          navigation.getUnassignedFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAngenommenUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangAngenommenUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=ANGENOMMEN`;
-      }
-    });
+    testAlleFilter(STATUS, views.getAngenommen());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
   });
 
   describe('In Bearbeitung', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangIN_BEARBEITUNG_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangIN_BEARBEITUNGAssigned_';
+    const STATUS: string = VorgangStatusE2E.IN_BEARBEITUNG;
 
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          navigation.getAlleFilter().click();
-          waitForSpinnerToDisappear();
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => {
-          views.getInBearbeitung().getRoot().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
+    testAlleFilter(STATUS, views.getInBearbeitung());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
+  });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+  describe('Bescheiden', () => {
+    const STATUS: string = VorgangStatusE2E.BESCHIEDEN;
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(2)).as(loadPageInterceptor);
-        });
+    testAlleFilter(STATUS, views.getBeschieden());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
+  });
 
-        it('should show page 2 with 10 vorgaenge IN_BEARBEITUNG and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
+  describe('Abgeschlossen', () => {
+    const STATUS: string = VorgangStatusE2E.ABGESCHLOSSEN;
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
+    testAlleFilter(STATUS, views.getAbgeschlossen());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
+  });
 
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
+  describe('Weitergeleitet', () => {
+    const STATUS: string = VorgangStatusE2E.WEITERGELEITET;
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(3)).as(loadPageInterceptor);
-        });
+    testAlleFilter(STATUS, views.getWeitergeleitet());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
+  });
 
-        it('should show page 3 with 10 vorgaenge IN_BEARBEITUNG ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
+  describe('Verworfen', () => {
+    const STATUS: string = VorgangStatusE2E.VERWORFEN;
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
+    testAlleFilter(STATUS, views.getVerworfen());
+    testMeineVorgaengeFilter(STATUS);
+    testNichtZugewiesenFilter(STATUS);
+  });
 
-      function buildVorgangInBearbeitungPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=IN_BEARBEITUNG`;
-      }
+  function testAlleFilter(status: string, view: VorgangViewE2EComponent) {
+    describe('Alle filter', () => {
+      testAlleFilterPage1(status, view);
+      testAlleFilterPage2(status);
+      testAlleFilterPage3(status);
     });
+  }
 
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => {
-          navigation.getMeineVorgaengeFilter().click();
+  function testAlleFilterPage1(status: string, view: VorgangViewE2EComponent): void {
+    describe('page 1', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        navigation.getAlleFilter().click();
+        waitForSpinnerToDisappear();
+        intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(1, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+      it(`should show page 1 with 100 vorgaenge ${status}`, () => {
+        view.getRoot().click();
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge IN_BEARBEITUNG and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === PAGE_SIZE);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 1);
+          assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + PAGE_SIZE);
         });
       });
-
-      function buildVorgangInBearbeitungAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=IN_BEARBEITUNG`;
-      }
     });
+  }
 
-    describe('Nicht zugewiesen filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => {
-          navigation.getUnassignedFilter().click();
+  function testAlleFilterPage2(status: string): void {
+    describe('page 2', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(2, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+      it(`should show page 2 with 10 vorgaenge ${status} and 90 vorgaenge ASSIGNED on scrolling to bottom`, () => {
+        scrollToWindowBottom();
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === PAGE_SIZE);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 1);
+          assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE);
         });
       });
-
-      function buildVorgangInBearbeitungUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=IN_BEARBEITUNG`;
-      }
     });
-  });
-
-  describe('Beschieden', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangBESCHIEDEN_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangBESCHIEDENAssigned_';
-
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          navigation.getAlleFilter().click();
-          waitForSpinnerToDisappear();
-          intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(1)).as(loadPageInterceptor);
-        });
+  }
 
-        it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => {
-          views.getBeschieden().getRoot().click();
+  function testAlleFilterPage3(status: string): void {
+    describe('page 3', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(3, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge BESCHIEDEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      after(() => {
+        scrollToWindowTop();
       });
 
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(3)).as(loadPageInterceptor);
-        });
-
-        it('should show page 3 with 10 vorgaenge BESCHIEDEN ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
+      it(`should show page 3 with 10 vorgaenge ${status} ASSIGNED on scrolling to bottom`, () => {
+        scrollToWindowBottom();
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === 20);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 80);
+          assert(getVorgangList(interception)[19].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE);
         });
       });
-
-      function buildVorgangBeschiedenPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=BESCHIEDEN`;
-      }
     });
+  }
 
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBescheidenAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => {
-          navigation.getMeineVorgaengeFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBescheidenAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge BESCHIEDEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
-        });
-      });
+  function buildVorgangStatusPageLink(page: number, status: string): string {
+    return `${buildVorgangPageLink(page)}&status=${status}`;
+  }
 
-      function buildVorgangInBescheidenAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=BESCHIEDEN`;
-      }
+  function testMeineVorgaengeFilter(status: string): void {
+    describe('Meine Vorgänge filter', () => {
+      testMeineVorgaengePage1(status);
+      testMeineVorgaengePage2(status);
     });
+  }
 
-    describe('Nicht zugewiesen filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBescheidenUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => {
-          navigation.getUnassignedFilter().click();
+  function testMeineVorgaengePage1(status: string): void {
+    describe('page 1', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangInStatusAssignedPageLink(1, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+      it(`should show page 1 with 100 vorgaenge ${status}`, () => {
+        navigation.getMeineVorgaengeFilter().click();
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInBescheidenUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === PAGE_SIZE);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + 'Assigned_' + 1);
+          assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + 'Assigned_' + PAGE_SIZE);
         });
       });
-
-      function buildVorgangInBescheidenUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=BESCHIEDEN`;
-      }
     });
-  });
-
-  describe('Abgeschlossen', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangABGESCHLOSSEN_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangABGESCHLOSSENAssigned_';
-
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          navigation.getAlleFilter().click();
-          waitForSpinnerToDisappear();
-          intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(1)).as(loadPageInterceptor);
-        });
+  }
 
-        it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => {
-          views.getAbgeschlossen().getRoot().click();
+  function testMeineVorgaengePage2(status: string): void {
+    describe('page 2', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangInStatusAssignedPageLink(2, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge ABGESCHLOSSEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      after(() => {
+        scrollToWindowTop();
       });
 
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(3)).as(loadPageInterceptor);
-        });
-
-        it('should show page 3 with 10 vorgaenge ABGESCHLOSSEN ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
+      it(`should show page 2 with 10 vorgaenge ${status} and 90 vorgaenge ASSIGNED on scrolling to bottom`, () => {
+        scrollToWindowBottom();
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === 10);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + 'Assigned_' + 101);
+          assert(getVorgangList(interception)[9].name, VORGANG_NAME_PREFIX + 'Assigned_' + 110);
         });
       });
-
-      function buildVorgangAbgeschlossenPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=ABGESCHLOSSEN`;
-      }
     });
+  }
 
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => {
-          navigation.getMeineVorgaengeFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge ABGESCHLOSSEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangInAbgeschlossenAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=ABGESCHLOSSEN`;
-      }
-    });
+  function buildVorgangInStatusAssignedPageLink(page: number, status: string): string {
+    return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=${status}`;
+  }
 
+  function testNichtZugewiesenFilter(status: string): void {
     describe('Nicht zugewiesen filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => {
-          navigation.getUnassignedFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
-        });
-      });
-
-      function buildVorgangInAbgeschlossenUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=ABGESCHLOSSEN`;
-      }
+      testNichtZugewiesenPage1(status);
+      testNichtZugewiesenPage2(status);
     });
-  });
-
-  describe('Verworfen', () => {
-    const ALLE_NAME_PREFIX: string = 'VorgangVERWORFEN_';
-    const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangVERWORFENAssigned_';
-
-    describe('Alle filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          navigation.getAlleFilter().click();
-          waitForSpinnerToDisappear();
-          intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(1)).as(loadPageInterceptor);
-        });
+  }
 
-        it('should show page 1 with 100 vorgaenge VERWORFEN', () => {
-          views.getVerworfen().getRoot().click();
+  function testNichtZugewiesenPage1(status: string): void {
+    describe('page 1', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangInStatusUnassignedPageLink(1, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+      it(`should show page 1 with 100 vorgaeng ${status}`, () => {
+        navigation.getUnassignedFilter().click();
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge VERWORFEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === PAGE_SIZE);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 1);
+          assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE);
         });
       });
-
-      describe('page 3', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(3)).as(loadPageInterceptor);
-        });
-
-        it('should show page 3 with 10 vorgaenge VERWORFEN ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80);
-            assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      function buildVorgangVerworfenPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&status=VERWORFEN`;
-      }
     });
+  }
 
-    describe('Meine Vorgänge filter', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInVerworfenAssignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge VERWORFEN', () => {
-          navigation.getMeineVorgaengeFilter().click();
+  function testNichtZugewiesenPage2(status: string): void {
+    describe('page 2', () => {
+      const loadPageInterceptor: string = 'loadPage';
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
+      beforeEach(() => {
+        intercept(HttpMethodE2E.GET, buildVorgangInStatusUnassignedPageLink(2, status)).as(loadPageInterceptor);
       });
 
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
+      it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
+        scrollToWindowBottom();
 
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInVerworfenAssignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge VERWORFEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => {
-          scrollToWindowBottom();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110);
-          });
+        waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
+          assert(getVorgangList(interception).length === 10);
+          assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 101);
+          assert(getVorgangList(interception)[9].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 110);
         });
+        scrollToWindowTop();
       });
-
-      function buildVorgangInVerworfenAssignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=VERWORFEN`;
-      }
     });
+  }
 
-    describe('Nicht zugewiesen', () => {
-      describe('page 1', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInVerworfenUnassignedPageLink(1)).as(loadPageInterceptor);
-        });
-
-        it('should show page 1 with 100 vorgaenge VERWORFEN', () => {
-          navigation.getUnassignedFilter().click();
-
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1);
-            assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE);
-          });
-        });
-      });
-
-      describe('page 2', () => {
-        const loadPageInterceptor: string = 'loadPage';
-
-        beforeEach(() => {
-          intercept(HttpMethodE2E.GET, buildVorgangInVerworfenUnassignedPageLink(2)).as(loadPageInterceptor);
-        });
-
-        it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => {
-          scrollToWindowBottom();
+  function buildVorgangInStatusUnassignedPageLink(page: number, status: string): string {
+    return `${buildVorgangPageLink(page)}&assignedTo=&status=${status}`;
+  }
 
-          waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
-            assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
-            assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101);
-            assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110);
-          });
-        });
-      });
+  function buildVorgangPageLink(page: number): string {
+    return `vorgangs?page=${page - 1}&limit=100`;
+  }
 
-      function buildVorgangInVerworfenUnassignedPageLink(page: number): string {
-        return `${buildVorgangPageLink(page)}&assignedTo=&status=VERWORFEN`;
-      }
-    });
-  });
+  function getVorgangList(interception: Interception): VorgangE2E[] {
+    return interception.response.body._embedded.vorgangHeaderList;
+  }
 
   function createVorgaengeWithStatus(status: VorgangStatusE2E): VorgangE2E[] {
     let count = 1;
     return generateIds(110).map((randomId) => {
       const vorgang: VorgangE2E = {
-        ...buildVorgang(randomId, 'Vorgang' + status + '_' + count),
+        ...buildVorgang(randomId, VORGANG_NAME_PREFIX + status + '_' + count),
         status,
       };
       count++;
@@ -992,7 +349,7 @@ describe('VorgangList View Pages', () => {
     let count = 1;
     return generateIds(110).map((randomId) => {
       const vorgang: VorgangE2E = {
-        ...buildVorgang(randomId, 'Vorgang' + status + 'Assigned_' + count),
+        ...buildVorgang(randomId, VORGANG_NAME_PREFIX + status + 'Assigned_' + count),
         status,
         assignedTo,
       };
@@ -1000,8 +357,4 @@ describe('VorgangList View Pages', () => {
       return vorgang;
     });
   }
-
-  function buildVorgangPageLink(page: number): string {
-    return `vorgangs?page=${page - 1}&limit=100`;
-  }
 });
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts
index 2547f4523c44b68ebd98dacc223c38f8db94abf0..d2b2f5c137420c986239141c7b60c4dff57868f0 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts
@@ -66,12 +66,29 @@ describe('Vorgang views and filter', () => {
   const inBearbeitungView: VorgangViewE2EComponent = views.getInBearbeitung();
   const beschiedenView: VorgangViewE2EComponent = views.getBeschieden();
   const abgeschlossenView: VorgangViewE2EComponent = views.getAbgeschlossen();
+  const weitergeleitetView: VorgangViewE2EComponent = views.getWeitergeleitet();
   const verworfenView: VorgangViewE2EComponent = views.getVerworfen();
   const zuLoeschenView: VorgangViewE2EComponent = views.getZuLoeschen();
+  const ungelesenView: VorgangViewE2EComponent = views.getUngelesen();
   const wiedervorlagenView: VorgangViewE2EComponent = views.getWiedervorlagen();
   const vorgangListView: VorgangViewE2EComponent = views.getVorgangList();
   const sucheView: VorgangViewE2EComponent = views.getSuche();
 
+  const ALL_VIEW_COMPONENTS: VorgangViewE2EComponent[] = [
+    neuView,
+    angenommenView,
+    inBearbeitungView,
+    beschiedenView,
+    abgeschlossenView,
+    weitergeleitetView,
+    verworfenView,
+    zuLoeschenView,
+    ungelesenView,
+    wiedervorlagenView,
+    vorgangListView,
+    sucheView,
+  ];
+
   const navigation: NavigationE2EComponent = mainPage.getNavigation();
 
   const vorgangNeuAssigned: VorgangE2E = {
@@ -134,6 +151,16 @@ describe('Vorgang views and filter', () => {
     status: VorgangStatusE2E.ABGESCHLOSSEN,
   };
 
+  const vorgangWeitergeleitetAssigned: VorgangE2E = {
+    ...buildVorgang(objectIds[13], 'VorgangWeitergeleitetAssigned'),
+    status: VorgangStatusE2E.WEITERGELEITET,
+    assignedTo: getUserSabineId(),
+  };
+  const vorgangWeitergeleitetUnassigned: VorgangE2E = {
+    ...buildVorgang(objectIds[14], 'VorgangWeitergeleitetUnassigned'),
+    status: VorgangStatusE2E.WEITERGELEITET,
+  };
+
   const vorgangVerworfenAssigned: VorgangE2E = {
     ...buildVorgang(objectIds[9], 'VorgangVerworfenAssigned'),
     status: VorgangStatusE2E.VERWORFEN,
@@ -181,6 +208,13 @@ describe('Vorgang views and filter', () => {
     vorgangAbgeschlossenUnassigned.name,
   );
 
+  const vorgangWeitergeleitetAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(
+    vorgangWeitergeleitetAssigned.name,
+  );
+  const vorgangWeitergeleitetUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(
+    vorgangWeitergeleitetUnassigned.name,
+  );
+
   const vorgangVerworfenAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenAssigned.name);
   const vorgangVerworfenUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenUnassigned.name);
 
@@ -189,7 +223,7 @@ describe('Vorgang views and filter', () => {
     vorgangZuLoeschenUnassigned.name,
   );
 
-  const LIST_SIZE: number = 14;
+  const LIST_SIZE: number = 16;
 
   before(() => {
     const vorgaenge: VorgangE2E[] = [
@@ -203,6 +237,8 @@ describe('Vorgang views and filter', () => {
       vorgangBeschiedenUnassigned,
       vorgangAbgeschlossenAssigned,
       vorgangAbgeschlossenUnassigned,
+      vorgangWeitergeleitetAssigned,
+      vorgangWeitergeleitetUnassigned,
       vorgangVerworfenAssigned,
       vorgangVerworfenUnassigned,
       vorgangZuLoeschenAssigned,
@@ -214,8 +250,6 @@ describe('Vorgang views and filter', () => {
     initUsermanagerUsers();
 
     loginAsSabine();
-
-    waitForSpinnerToDisappear();
   });
 
   after(() => {
@@ -257,6 +291,7 @@ describe('Vorgang views and filter', () => {
         isNotSelected(inBearbeitungView.getRoot());
         isNotSelected(beschiedenView.getRoot());
         isNotSelected(abgeschlossenView.getRoot());
+        isNotSelected(weitergeleitetView.getRoot());
         isNotSelected(verworfenView.getRoot());
         isNotSelected(zuLoeschenView.getRoot());
         isNotSelected(sucheView.getRoot());
@@ -283,6 +318,10 @@ describe('Vorgang views and filter', () => {
           contains(abgeschlossenView.getCount(), '2');
         });
 
+        it('weitergeleitet', () => {
+          contains(abgeschlossenView.getCount(), '2');
+        });
+
         it('verworfen', () => {
           contains(verworfenView.getCount(), '2');
         });
@@ -300,262 +339,82 @@ describe('Vorgang views and filter', () => {
 
   describe('Select view', () => {
     describe('Neu', () => {
-      it('should set selected after click', () => {
-        neuView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(neuView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), 2);
-        exist(vorgangNeuAssignedInList.getRoot());
-        exist(vorgangNeuUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(neuView, [vorgangNeuAssignedInList, vorgangNeuUnassignedInList]);
     });
 
     describe('Angenommen', () => {
-      it('should set selected after click', () => {
-        angenommenView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(angenommenView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), 2);
-        exist(vorgangAngenommenAssignedInList.getRoot());
-        exist(vorgangAngenommenUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(angenommenView, [vorgangAngenommenAssignedInList, vorgangAngenommenUnassignedInList]);
     });
 
     describe('In Bearbeitung', () => {
-      it('should set selected after click', () => {
-        inBearbeitungView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(inBearbeitungView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), LIST_SIZE - 12);
-        exist(vorgangInBearbeitungAssignedInList.getRoot());
-        exist(vorgangInBearbeitungUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(inBearbeitungView, [vorgangInBearbeitungAssignedInList, vorgangInBearbeitungUnassignedInList]);
     });
 
     describe('Beschieden', () => {
-      it('should set selected after click', () => {
-        beschiedenView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(beschiedenView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), LIST_SIZE - 12);
-        exist(vorgangBeschiedenAssignedInList.getRoot());
-        exist(vorgangBeschiedenUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(beschiedenView, [vorgangBeschiedenAssignedInList, vorgangBeschiedenUnassignedInList]);
     });
 
     describe('Abgeschlossen', () => {
-      it('should set selected after click', () => {
-        abgeschlossenView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(abgeschlossenView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
+      testAlleFilterViewSelection(abgeschlossenView, [vorgangAbgeschlossenAssignedInList, vorgangAbgeschlossenUnassignedInList]);
+    });
 
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), LIST_SIZE - 12);
-        exist(vorgangAbgeschlossenAssignedInList.getRoot());
-        exist(vorgangAbgeschlossenUnassignedInList.getRoot());
-      });
+    describe('Weitergeleitet', () => {
+      testAlleFilterViewSelection(weitergeleitetView, [
+        vorgangWeitergeleitetAssignedInList,
+        vorgangWeitergeleitetUnassignedInList,
+      ]);
     });
 
     describe('Verworfen', () => {
-      it('should set selected after click', () => {
-        verworfenView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(verworfenView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), LIST_SIZE - 12);
-        exist(vorgangVerworfenAssignedInList.getRoot());
-        exist(vorgangVerworfenUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(verworfenView, [vorgangVerworfenAssignedInList, vorgangVerworfenUnassignedInList]);
     });
 
     describe('Zu Löschen', () => {
-      it('should set selected after click', () => {
-        zuLoeschenView.getRoot().click();
-        waitForSpinnerToDisappear();
-
-        isSelected(zuLoeschenView.getRoot());
-      });
-
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
-
-      it('should filter List', () => {
-        haveLength(vorgangList.getItems(), LIST_SIZE - 12);
-        exist(vorgangZuLoeschenAssignedInList.getRoot());
-        exist(vorgangZuLoeschenUnassignedInList.getRoot());
-      });
+      testAlleFilterViewSelection(zuLoeschenView, [vorgangZuLoeschenAssignedInList, vorgangZuLoeschenUnassignedInList]);
     });
 
     describe('Wiedervorlagen', () => {
+      testAlleFilterViewSelection(wiedervorlagenView, [vorgangAngenommenUnassignedInList, vorgangAbgeschlossenAssignedInList]);
+    });
+
+    function testAlleFilterViewSelection(view: VorgangViewE2EComponent, listItems: VorgangListItemE2EComponent[]): void {
+      testViewSelection(view);
+      testOtherViewsAreUnselected(view);
+      testAlleFilterIsSelected();
+      testVorgangListItem(listItems);
+    }
+
+    function testViewSelection(view: VorgangViewE2EComponent): void {
       it('should set selected after click', () => {
-        wiedervorlagenView.getRoot().click();
+        view.getRoot().click();
         waitForSpinnerToDisappear();
 
-        isSelected(wiedervorlagenView.getRoot());
+        isSelected(view.getRoot());
       });
+    }
 
+    function testOtherViewsAreUnselected(selectedView: VorgangViewE2EComponent): void {
       it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-        isNotSelected(sucheView.getRoot());
+        ALL_VIEW_COMPONENTS.filter((view: VorgangViewE2EComponent) => view != selectedView).forEach(
+          (view: VorgangViewE2EComponent) => isNotSelected(view.getRoot()),
+        );
       });
+    }
 
+    function testAlleFilterIsSelected(): void {
       it('should keep filter selection', () => {
         isOdsButtonToggleChecked(navigation.getAlleFilter());
         isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
         isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
       });
+    }
 
+    function testVorgangListItem(listItems: VorgangListItemE2EComponent[]): void {
       it('should filter List', () => {
-        haveLength(vorgangList.getItems(), 2);
-
-        exist(vorgangAngenommenUnassignedInList.getRoot());
-        exist(vorgangAbgeschlossenAssignedInList.getRoot());
+        haveLength(vorgangList.getItems(), LIST_SIZE - 14);
+        listItems.forEach((item: VorgangListItemE2EComponent) => exist(item.getRoot()));
       });
-    });
+    }
 
     describe('VorgangList', () => {
       it('should set selected after click', () => {
@@ -571,6 +430,7 @@ describe('Vorgang views and filter', () => {
         isNotSelected(inBearbeitungView.getRoot());
         isNotSelected(beschiedenView.getRoot());
         isNotSelected(abgeschlossenView.getRoot());
+        isNotSelected(weitergeleitetView.getRoot());
         isNotSelected(zuLoeschenView.getRoot());
         isNotSelected(verworfenView.getRoot());
         isNotSelected(sucheView.getRoot());
@@ -595,22 +455,8 @@ describe('Vorgang views and filter', () => {
         isSelected(sucheView.getRoot());
       });
 
-      it('should unselect other views', () => {
-        isNotSelected(neuView.getRoot());
-        isNotSelected(angenommenView.getRoot());
-        isNotSelected(inBearbeitungView.getRoot());
-        isNotSelected(beschiedenView.getRoot());
-        isNotSelected(abgeschlossenView.getRoot());
-        isNotSelected(zuLoeschenView.getRoot());
-        isNotSelected(verworfenView.getRoot());
-        isNotSelected(vorgangListView.getRoot());
-      });
-
-      it('should keep filter selection', () => {
-        isOdsButtonToggleChecked(navigation.getAlleFilter());
-        isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
-        isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
-      });
+      testOtherViewsAreUnselected(sucheView);
+      testAlleFilterIsSelected();
 
       it('should show message', () => {
         haveText(vorgangList.getEmptySucheMessage(), 'Bitte geben Sie einen Suchbegriff ein.');
@@ -643,6 +489,7 @@ describe('Vorgang views and filter', () => {
         isNotSelected(inBearbeitungView.getRoot());
         isNotSelected(beschiedenView.getRoot());
         isNotSelected(abgeschlossenView.getRoot());
+        isNotSelected(weitergeleitetView.getRoot());
         isNotSelected(verworfenView.getRoot());
         isNotSelected(zuLoeschenView.getRoot());
         isNotSelected(vorgangListView.getRoot());
@@ -892,11 +739,11 @@ describe('Vorgang views and filter', () => {
     vorgangSearch.doSearch(searchString);
   }
 
-  function isNotSelected(element) {
+  function isNotSelected(element: Cypress.Chainable<Element>): void {
     notContainClass(element, 'selected');
   }
 
-  function isSelected(element) {
+  function isSelected(element: Cypress.Chainable<Element>): void {
     containClass(element, 'selected');
   }
 });
diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts
new file mode 100644
index 0000000000000000000000000000000000000000..14855ec9447435b69b037074d1e17fb695c54ab4
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts
@@ -0,0 +1,7 @@
+import { E2EVorgangNavigator } from './vorgang.navigator';
+import { E2EVorgangVerifier } from './vorgang.verifier';
+
+export class E2EVorgangHelper {
+  private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier();
+  private readonly navigator: E2EVorgangNavigator = new E2EVorgangNavigator();
+}
diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7b4fc54b196ff4dc2c83ffbf029a8b063c6b1054
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts
@@ -0,0 +1,15 @@
+import { VorgangListE2EComponent } from '../../components/vorgang/vorgang-list.e2e.component';
+import { waitForSpinnerToDisappear } from '../../page-objects/main.po';
+import { E2EVorgangVerifier } from './vorgang.verifier';
+
+export class E2EVorgangNavigator {
+  private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier();
+
+  private readonly vorgangListPage = new VorgangListE2EComponent();
+
+  public openVorgangDetailByName(vorgangName: string): void {
+    this.vorgangListPage.getListItem(vorgangName).getRoot().click();
+    waitForSpinnerToDisappear();
+    this.verifier.verifyVorgangDetailOpen(vorgangName);
+  }
+}
diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c42945065f7c18f03c4f74fbcbf2809c9b2a8021
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts
@@ -0,0 +1,19 @@
+import { VorgangPage } from '../../page-objects/vorgang.po';
+import { contains, exist, notExist } from '../../support/cypress.util';
+
+export class E2EVorgangVerifier {
+  private readonly vorgangPage: VorgangPage = new VorgangPage();
+
+  public verifyVorgangDetailOpen(vorgangName: string): void {
+    exist(this.vorgangPage.getVorgangDetailHeader().getRoot());
+    contains(this.vorgangPage.getVorgangDetailHeader().getName(), vorgangName);
+  }
+
+  public verifyForwardingButtonExists(): void {
+    exist(this.vorgangPage.getFormularButtons().getForwardButton());
+  }
+
+  public verifyNoForwardingButtonExists(): void {
+    notExist(this.vorgangPage.getFormularButtons().getForwardButton());
+  }
+}
diff --git a/alfa-client/apps/alfa-e2e/src/page-objects/vorgang.po.ts b/alfa-client/apps/alfa-e2e/src/page-objects/vorgang.po.ts
index 6a1d1b397b3e0a9eb91362cd0220230b67a5db14..8a2647fd1d0a8b47aaf41cd8e007177991b1fe1f 100644
--- a/alfa-client/apps/alfa-e2e/src/page-objects/vorgang.po.ts
+++ b/alfa-client/apps/alfa-e2e/src/page-objects/vorgang.po.ts
@@ -33,7 +33,8 @@ import { VorgangBescheideE2EComponent } from '../components/vorgang/vorgang-besc
 import { VorgangDetailHeaderE2EComponent } from '../components/vorgang/vorgang-detail-header.e2e.component';
 import { VorgangFormularButtonsE2EComponent } from '../components/vorgang/vorgang-formular-buttons.e2e.components';
 import { VorgangFormularDatenE2EComponent } from '../components/vorgang/vorgang-formular.e2e.component';
-import { VorgangForwardingE2EComponent } from '../components/vorgang/vorgang-forward.e2e.component';
+import { ForwardingByEmailE2EComponent } from '../components/vorgang/vorgang-forward.e2e.component';
+import { ForwardingDialogE2EComponent } from '../components/vorgang/vorgang-forwarding-dialog.e2e.component';
 import { VorgangMoreMenuE2EComponent } from '../components/vorgang/vorgang-more-menu.e2e.components';
 import { VorgangSubnavigationE2EComponent } from '../components/vorgang/vorgang-subnavigation';
 import { VorgangZusammenarbeitE2EComponent } from '../components/vorgang/vorgang-zusammenarbeit.e2e.component';
@@ -49,7 +50,8 @@ export class VorgangPage {
   private readonly bescheidWizard: VorgangBescheidWizardE2EComponent = new VorgangBescheidWizardE2EComponent();
   private readonly bescheide: VorgangBescheideE2EComponent = new VorgangBescheideE2EComponent();
   private readonly wiedervorlagen: WiedervorlagenInVorgangE2EComponent = new WiedervorlagenInVorgangE2EComponent();
-  private readonly forwardingContainer: VorgangForwardingE2EComponent = new VorgangForwardingE2EComponent();
+  private readonly forwardingDialogContainer: ForwardingDialogE2EComponent = new ForwardingDialogE2EComponent();
+  private readonly forwardingByEmailContainer: ForwardingByEmailE2EComponent = new ForwardingByEmailE2EComponent();
   private readonly attachmentContainer: AttachmentContainerE2EComponent = new AttachmentContainerE2EComponent();
   private readonly kommentarContainer: KommentarListInVorgangE2EComponent = new KommentarListInVorgangE2EComponent();
   private readonly postfachMailContainer: PostfachMailE2EComponent = new PostfachMailE2EComponent();
@@ -66,8 +68,12 @@ export class VorgangPage {
     return this.kommentarContainer;
   }
 
-  public getForwardingContainer(): VorgangForwardingE2EComponent {
-    return this.forwardingContainer;
+  public getForwardingDialogContainer(): ForwardingDialogE2EComponent {
+    return this.forwardingDialogContainer;
+  }
+
+  public getForwardingByEmailContainer(): ForwardingByEmailE2EComponent {
+    return this.forwardingByEmailContainer;
   }
 
   public getSubnavigation(): VorgangSubnavigationE2EComponent {
diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
index b4f477e2422f3bd0ea391d7d3259c29bd4b2a8a6..9e520f34e3c7641fc9dd0c0b2d6d4ff25ac39ab0 100644
--- a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
@@ -28,6 +28,7 @@ import { SmockerMocks } from '../model/smocker';
 import { UsermanagerUserE2E } from '../model/usermanager';
 import { VorgangE2E } from '../model/vorgang';
 import { VorgangAttachedItemE2E } from '../model/vorgang-attached-item';
+import { waitForSpinnerToDisappear } from '../page-objects/main.po';
 
 enum CypressTasks {
   DROP_COLLECTIONS = 'dropCollections',
@@ -62,6 +63,7 @@ export function login(userJsonPath: string): void {
   cy.fixture(userJsonPath).then((user) => {
     cy.login(user.name, user.password);
   });
+  waitForSpinnerToDisappear();
 }
 
 export function visitUrl(url: string): void {
@@ -170,6 +172,10 @@ export function scrollToWindowBottom(): void {
   cy.window().scrollTo('bottom');
 }
 
+export function scrollToWindowTop(): void {
+  cy.window().scrollTo('top');
+}
+
 export function intercept(method: string, url: string): Cypress.Chainable<null> {
   return cy.intercept(method, url);
 }
diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts
index 3dbd6155939b778a411f9b2fd18822286feaf958..768db5ed90ce7662d1e2358b58aff85d86655f6b 100644
--- a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts
@@ -97,6 +97,14 @@ export function notBeChecked(element: any): void {
   element.should('not.be.checked');
 }
 
+export function beAriaDisabled(element: any): void {
+  element.should('have.attr', 'aria-disabled', 'true');
+}
+
+export function notBeAriaDisabled(element: any): void {
+  element.should('have.attr', 'aria-disabled', 'false');
+}
+
 //TODO: "first()" rausnehmen -> im html eine entprechende data-test-id ansprechen?! | trennen in "get" und "verify"
 export function shouldFirstContains(element: any, containing: string) {
   element.first().should('exist').contains(containing);
diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak.model.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4a2a5d7eabcfd524c1846a53c47f4d31d54f75a1
--- /dev/null
+++ b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak.model.ts
@@ -0,0 +1,12 @@
+export const KeycloakDefaults = {
+  clients: {
+    realmManagement: {
+      clientName: 'realm-management',
+      roles: {
+        managerUsers: { roleName: 'manage-users' },
+        queryGroups: { roleName: 'query-groups' },
+        viewClients: { roleName: 'view-clients' },
+      },
+    },
+  },
+};
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 afbb09bee049b4e79cda30ee0d97f3e4810799f9..c0ef6b387b57946efc4336573809b55582b7912e 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
@@ -21,15 +21,17 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { RoleMappings, User } from '@admin-client/user-shared';
+import { AdminRoles, RoleMappings, User } from '@admin-client/user-shared';
 import { UserRepository } from '@admin/keycloak-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import { Mock, mock } from '@alfa-client/test-utils';
-import { TestBed, fakeAsync, tick } from '@angular/core/testing';
+import { fakeAsync, TestBed, tick } from '@angular/core/testing';
 import { faker } from '@faker-js/faker';
+import { expect } from '@jest/globals';
 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 { RequiredActionAlias } from '@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation';
 import { RoleMappingPayload } from '@keycloak/keycloak-admin-client/lib/defs/roleRepresentation';
 import { Users } from '@keycloak/keycloak-admin-client/lib/resources/users';
 import { cold } from 'jest-marbles';
@@ -37,6 +39,7 @@ import { omit, times } from 'lodash-es';
 import { throwError } from 'rxjs';
 import { createUser } from '../../../user-shared/test/user';
 import { UserFormService } from '../../../user/src/lib/user-form/user.formservice';
+import { KeycloakDefaults } from './keycloak.model';
 
 describe('UserRepository', () => {
   let repository: UserRepository;
@@ -530,6 +533,50 @@ describe('UserRepository', () => {
     });
   });
 
+  describe('update user roles for admin', () => {
+    const clientId: string = faker.string.uuid();
+
+    beforeEach(() => {
+      repository._updateUserRolesForClient = jest.fn();
+      repository._getClientId = jest.fn().mockReturnValue(new Promise((resolve) => resolve(clientId)));
+    });
+
+    it('should get client id', async () => {
+      await repository._updateUserRolesForAdmin(user.id, {
+        admin: [AdminRoles.ADMIN],
+        alfa: [],
+      });
+
+      expect(repository._getClientId).toHaveBeenCalledWith(KeycloakDefaults.clients.realmManagement.clientName);
+    });
+
+    it('should update user roles', async () => {
+      await repository._updateUserRolesForAdmin(user.id, {
+        admin: [AdminRoles.ADMIN],
+        alfa: [],
+      });
+
+      expect(repository._updateUserRolesForClient).toHaveBeenCalledWith(
+        user.id,
+        [
+          KeycloakDefaults.clients.realmManagement.roles.managerUsers.roleName,
+          KeycloakDefaults.clients.realmManagement.roles.queryGroups.roleName,
+          KeycloakDefaults.clients.realmManagement.roles.viewClients.roleName,
+        ],
+        clientId,
+      );
+    });
+
+    it('should NOT update user roles for no ADMIN_ADMIN role', async () => {
+      await repository._updateUserRolesForAdmin(user.id, {
+        admin: [faker.word.noun()],
+        alfa: [],
+      });
+
+      expect(repository._updateUserRolesForClient).not.toHaveBeenCalled();
+    });
+  });
+
   describe('sendActivationMail', () => {
     it('should call kcAdminClient users executeActionsEmail', () => {
       const userId: string = faker.string.uuid();
@@ -538,7 +585,7 @@ describe('UserRepository', () => {
 
       expect(kcAdminClientUsers.executeActionsEmail).toHaveBeenCalledWith({
         id: userId,
-        actions: ['VERIFY_EMAIL'],
+        actions: [RequiredActionAlias.VERIFY_EMAIL, RequiredActionAlias.UPDATE_PASSWORD],
         lifespan: 3600 * 24 * 7,
       });
     });
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 e5eca5be54120f7fdf51b66d130053a330ced543..c510b595f5b6157f20093328d23fa31bcc11e242 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
@@ -21,19 +21,20 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ClientMapping, ClientRoles, RoleMappings, User } from '@admin-client/user-shared';
+import { AdminRoles, ClientMapping, ClientRoles, RoleMappings, User } from '@admin-client/user-shared';
 import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 import { inject, Injectable } from '@angular/core';
 import KcAdminClient from '@keycloak/keycloak-admin-client';
 import ClientRepresentation from '@keycloak/keycloak-admin-client/lib/defs/clientRepresentation';
 import GroupRepresentation from '@keycloak/keycloak-admin-client/lib/defs/groupRepresentation';
 import MappingsRepresentation from '@keycloak/keycloak-admin-client/lib/defs/mappingsRepresentation';
+import { RequiredActionAlias } from '@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation';
 import { RoleMappingPayload } from '@keycloak/keycloak-admin-client/lib/defs/roleRepresentation';
 import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation';
+import * as _ from 'lodash-es';
 import { isNil, omit } from 'lodash-es';
 import { catchError, concatMap, forkJoin, from, map, mergeMap, Observable, tap, throwError } from 'rxjs';
-
-import * as _ from 'lodash-es';
+import { KeycloakDefaults } from './keycloak.model';
 
 @Injectable({
   providedIn: 'root',
@@ -104,6 +105,7 @@ export class UserRepository {
   async _updateUserRoles(userId: string, clientRoles: ClientRoles): Promise<void> {
     await this._updateUserRolesForClient(userId, clientRoles.admin, await this._getClientId(UserRepository.ADMIN_CLIENT_NAME));
     await this._updateUserRolesForClient(userId, clientRoles.alfa, await this._getClientId(UserRepository.ALFA_CLIENT_NAME));
+    await this._updateUserRolesForAdmin(userId, clientRoles);
   }
 
   async _updateUserRolesForClient(userId: string, clientRoles: string[], clientId: string): Promise<void> {
@@ -177,10 +179,24 @@ export class UserRepository {
     });
   }
 
+  async _updateUserRolesForAdmin(userId: string, clientRoles: ClientRoles): Promise<void> {
+    if (clientRoles.admin.includes(AdminRoles.ADMIN)) {
+      await this._updateUserRolesForClient(
+        userId,
+        [
+          KeycloakDefaults.clients.realmManagement.roles.managerUsers.roleName,
+          KeycloakDefaults.clients.realmManagement.roles.queryGroups.roleName,
+          KeycloakDefaults.clients.realmManagement.roles.viewClients.roleName,
+        ],
+        await this._getClientId(KeycloakDefaults.clients.realmManagement.clientName),
+      );
+    }
+  }
+
   _sendActivationMail(userId: string): void {
     this.kcAdminClient.users.executeActionsEmail({
       id: userId,
-      actions: ['VERIFY_EMAIL'],
+      actions: [RequiredActionAlias.VERIFY_EMAIL, RequiredActionAlias.UPDATE_PASSWORD],
       lifespan: 3600 * 24 * 7,
     });
   }
diff --git a/alfa-client/libs/admin/user-shared/src/lib/user.model.ts b/alfa-client/libs/admin/user-shared/src/lib/user.model.ts
index f496e42b8734907ab060fe4872fc91cb29b14c42..45d8e171c2c2b1cde1e96e25d76cac23bcf6e5e2 100644
--- a/alfa-client/libs/admin/user-shared/src/lib/user.model.ts
+++ b/alfa-client/libs/admin/user-shared/src/lib/user.model.ts
@@ -48,3 +48,7 @@ export interface RoleMappings {
   newClientRoleMappings: RoleMappingPayload[];
   oldClientRoleMappings: RoleMappingPayload[];
 }
+
+export enum AdminRoles {
+  ADMIN = 'ADMIN_ADMIN',
+}
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef80c0f57a92cc1f284caa5b6b0afe83e6973f1d
--- /dev/null
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html
@@ -0,0 +1,4 @@
+<p class="flex flex-col gap-0.5 text-text">
+  <span class="font-medium">Benutzername</span>
+  <span>{{ userName }}</span>
+</p>
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f515c9412747b65e91386a3a5db676f2a6888271
--- /dev/null
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UserFormDataNameComponent } from './user-form-data-name.component';
+
+describe('UserFormDataNameComponent', () => {
+  let component: UserFormDataNameComponent;
+  let fixture: ComponentFixture<UserFormDataNameComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [UserFormDataNameComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(UserFormDataNameComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..931174e68ce1fc96a8e8301d79c93e8dbb8a80a6
--- /dev/null
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.ts
@@ -0,0 +1,10 @@
+import { Component, Input } from '@angular/core';
+
+@Component({
+  selector: 'admin-user-form-data-name',
+  standalone: true,
+  templateUrl: './user-form-data-name.component.html',
+})
+export class UserFormDataNameComponent {
+  @Input() userName: string;
+}
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.html
index 430a3fde777062e005bab85507e57ef17883b311..830c7960ac97bb94267cdb6737d3a83001e44951 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.html
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.html
@@ -2,7 +2,16 @@
   <div class="mb-4 grid gap-4 xl:grid-cols-2">
     <ods-text-editor [formControlName]="UserFormService.FIRST_NAME" [isRequired]="true" label="Vorname" />
     <ods-text-editor [formControlName]="UserFormService.LAST_NAME" [isRequired]="true" label="Nachname" />
-    <ods-text-editor [formControlName]="UserFormService.USERNAME" [isRequired]="true" label="Benutzername" />
+    @if (isPatch) {
+      <admin-user-form-data-name [userName]="userName" data-test-id="user-name-info" />
+    } @else {
+      <ods-text-editor
+        [formControlName]="UserFormService.USERNAME"
+        [isRequired]="true"
+        label="Benutzername"
+        data-test-id="user-name-editor"
+      />
+    }
     <ods-text-editor [formControlName]="UserFormService.EMAIL" [isRequired]="true" label="E-Mail" />
   </div>
 </div>
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.spec.ts
index 40a8f3782988d250b27e9b7867c52eda96072b58..e8c6ef7d13ae82ecc182da1b50a0dac60d96c00f 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.spec.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.spec.ts
@@ -1,5 +1,7 @@
+import { existsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
+import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createUserFormGroup } from '../../../../test/form';
 import { UserFormDataComponent } from './user-form-data.component';
 
@@ -7,6 +9,9 @@ describe('UserFormDataComponent', () => {
   let component: UserFormDataComponent;
   let fixture: ComponentFixture<UserFormDataComponent>;
 
+  const userNameInfoSelector: string = getDataTestIdOf('user-name-info');
+  const userNameEditorSelector: string = getDataTestIdOf('user-name-editor');
+
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [UserFormDataComponent, ReactiveFormsModule],
@@ -21,4 +26,25 @@ describe('UserFormDataComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('template', () => {
+    describe('user name', () => {
+      it('should show info', () => {
+        component.isPatch = true;
+        component.userName = 'ariane';
+
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, userNameInfoSelector);
+      });
+
+      it('should show editor', () => {
+        component.isPatch = false;
+
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, userNameEditorSelector);
+      });
+    });
+  });
 });
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.ts
index d40bee2ba526b9e7bb52d4f638bcb3f95f28095c..9bf2f6b95124810d75ee7676dadb60826cc55fc5 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data.component.ts
@@ -1,16 +1,19 @@
 import { Component, Input } from '@angular/core';
 import { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
-import { CheckboxEditorComponent, TextEditorComponent } from '@ods/component';
+import { TextEditorComponent } from '@ods/component';
 import { UserFormService } from '../user.formservice';
+import { UserFormDataNameComponent } from './user-form-data-name/user-form-data-name.component';
 
 @Component({
   selector: 'admin-user-form-data',
   standalone: true,
-  imports: [CheckboxEditorComponent, ReactiveFormsModule, TextEditorComponent],
+  imports: [ReactiveFormsModule, TextEditorComponent, UserFormDataNameComponent],
   templateUrl: './user-form-data.component.html',
 })
 export class UserFormDataComponent {
   @Input() formGroupParent: UntypedFormGroup;
+  @Input() userName: string;
+  @Input() isPatch: boolean;
 
   public readonly UserFormService = UserFormService;
 }
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
index a8931fbcb6be03bbd9b0a5c97b7194e2e9605453..1dda4319a297a47b72c1d1c8bc6e1401a796a7ee 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
@@ -1,7 +1,7 @@
 <h2 class="heading-2 mt-4">Rollen für OZG-Cloud</h2>
 <div [formGroup]="formGroupParent">
-  <div [formGroupName]="UserFormService.CLIENT_ROLES" class="mb-8 flex gap-56">
-    <div [formGroupName]="UserFormService.ADMINISTRATION_GROUP" class="flex flex-col gap-2">
+  <div [formGroupName]="UserFormService.CLIENT_ROLES" class="mb-8 flex flex-col gap-4 md:flex-row">
+    <div [formGroupName]="UserFormService.ADMINISTRATION_GROUP" class="flex flex-1 flex-col gap-2">
       <h3 class="text-md block font-medium text-text">Administration</h3>
       <div class="flex items-center gap-2">
         <ods-checkbox-editor [formControlName]="UserFormService.ADMIN" label="Admin" inputId="admin" />
@@ -26,7 +26,7 @@
         </button>
       </div>
     </div>
-    <div [formGroupName]="UserFormService.ALFA_GROUP" class="flex flex-col gap-2">
+    <div [formGroupName]="UserFormService.ALFA_GROUP" class="flex flex-1 flex-col gap-2">
       <h3 class="text-md block font-medium text-text">Alfa</h3>
       <div class="flex items-center gap-2">
         <ods-checkbox-editor [formControlName]="UserFormService.LOESCHEN" label="Löschen" inputId="delete" />
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html
index 101227318be65fd7a14324f401d3fadfb7ceca49..132dc6ba2c8eb40cfc12c0f163ba94092afca6a2 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html
@@ -25,17 +25,17 @@
 -->
 <ods-spinner [stateResource]="userStateResource$ | async">
   <div class="max-w-[960px]" data-test-id="user-content">
-    <admin-user-form-headline [isPatch]="formService.isPatch()" />
-    <admin-user-form-data [formGroupParent]="formService.form" />
+    <admin-user-form-headline [isPatch]="isPatch" />
+    <admin-user-form-data [formGroupParent]="formService.form" [isPatch]="isPatch" [userName]="userName" />
     <admin-user-form-roles [formGroupParent]="formService.form" />
     <admin-user-form-organisations-einheit-list
       [formGroupParent]="formService.form"
       [formGroupOrganisationsEinheiten]="formService.getOrganisationsEinheitenGroup()"
     />
-    <div class="flex justify-between">
+    <div class="mb-6 flex justify-between">
       <admin-user-form-save-button />
-      @if (formService.isPatch()) {
-        <admin-delete-open-dialog-button data-test-id="delete-button-container"/>
+      @if (isPatch) {
+        <admin-delete-open-dialog-button data-test-id="delete-button-container" />
       }
     </div>
   </div>
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts
index fdfb961a94c43f26d9fbbcaf7bba52bf8e8e066d..bbaa75605aa2bc1071ceba8302892ee5088be620 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts
@@ -51,10 +51,12 @@ describe('UserFormComponent', () => {
   const userContent: string = getDataTestIdOf('user-content');
   const deleteButtonContainer: string = getDataTestIdOf('delete-button-container');
 
+  const userStateResource: StateResource<User> = createStateResource(createUser());
+
   beforeEach(async () => {
     formService = <any>{
       ...mock(UserFormService),
-      get: jest.fn(),
+      get: jest.fn().mockReturnValue(of(userStateResource)),
       isInvalid: jest.fn(),
       form: new FormGroup({}),
       isPatch: jest.fn(),
@@ -96,10 +98,11 @@ describe('UserFormComponent', () => {
 
   describe('component', () => {
     describe('on init', () => {
-      const userStateResource: StateResource<User> = createStateResource(createUser());
+      const userName: string = 'ariane';
 
       beforeEach(() => {
-        formService.get.mockReturnValue(of(userStateResource));
+        formService.isPatch.mockReturnValue(true);
+        formService.getUserName.mockReturnValue(userName);
       });
 
       it('should call formservice to get user', () => {
@@ -115,13 +118,39 @@ describe('UserFormComponent', () => {
 
         expect(component.userStateResource$).toBeObservable(cold('(a|)', { a: userStateResource }));
       });
+
+      it('should call formservice to get is patch', () => {
+        component.ngOnInit();
+
+        expect(formService.isPatch).toHaveBeenCalled();
+      });
+
+      it('should set is patch', () => {
+        component.ngOnInit();
+        fixture.detectChanges();
+
+        expect(component.isPatch).toBe(true);
+      });
+
+      it('should call formservice to get user name', () => {
+        component.ngOnInit();
+
+        expect(formService.getUserName).toHaveBeenCalled();
+      });
+
+      it('should set user name', () => {
+        component.ngOnInit();
+        fixture.detectChanges();
+
+        expect(component.userName).toBe(userName);
+      });
     });
   });
 
   describe('template', () => {
     describe('admin headline', () => {
       it('should exist with input', () => {
-        formService.isPatch.mockReturnValue(true);
+        component.isPatch = true;
 
         fixture.detectChanges();
 
@@ -133,8 +162,15 @@ describe('UserFormComponent', () => {
     describe('admin data', () => {
       it('should exist with input', () => {
         const formDataComponent: UserFormDataComponent = getMockComponent(fixture, UserFormDataComponent);
+        const userName: string = 'testUser';
+        component.isPatch = true;
+        component.userName = userName;
+
+        fixture.detectChanges();
 
         expect(formDataComponent.formGroupParent).toBe(component.formService.form);
+        expect(formDataComponent.isPatch).toBeTruthy();
+        expect(formDataComponent.userName).toBe(userName);
       });
     });
 
@@ -172,7 +208,7 @@ describe('UserFormComponent', () => {
 
   describe('admin delete button container', () => {
     it('should exist', () => {
-      formService.isPatch.mockReturnValue(true);
+      component.isPatch = true;
 
       fixture.detectChanges();
 
@@ -180,7 +216,7 @@ describe('UserFormComponent', () => {
     });
 
     it('should not exist', () => {
-      formService.isPatch.mockReturnValue(false);
+      component.isPatch = false;
 
       fixture.detectChanges();
 
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 0bcae1640c4ee01122bf83091f51d4eccc1e9d3f..f60e03692eed409a960bdeb3b27caa64b12d1ef9 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
@@ -29,7 +29,7 @@ import { AsyncPipe } from '@angular/common';
 import { Component, inject, OnInit } from '@angular/core';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import { SpinnerComponent } from '@ods/component';
-import { Observable } from 'rxjs';
+import { Observable, tap } from 'rxjs';
 import { UserFormDataComponent } from './user-form-data/user-form-data.component';
 import { UserDeleteDialogContainerComponent } from './user-form-delete-dialog-container/user-delete-dialog-container.component';
 import { UserFormHeadlineComponent } from './user-form-headline/user-form-headline.component';
@@ -60,8 +60,15 @@ export class UserFormComponent implements OnInit {
   public readonly formService = inject(UserFormService);
 
   public userStateResource$: Observable<StateResource<User>>;
+  public isPatch: boolean;
+  public userName: string;
 
   ngOnInit(): void {
-    this.userStateResource$ = this.formService.get();
+    this.userStateResource$ = this.formService.get().pipe(
+      tap(() => {
+        this.isPatch = this.formService.isPatch();
+        this.userName = this.formService.getUserName();
+      }),
+    );
   }
 }
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 724564f208c9f26cb6265da1bbad81b52ad92b13..99e28aabc946516a2076a89eb850c1df7b5594cd 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
@@ -26,18 +26,14 @@ import { ROUTES } from '@admin-client/shared';
 import { User, UserService } from '@admin-client/user-shared';
 import { PatchConfig } from '@admin/keycloak-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
-import {
-  createEmptyStateResource,
-  createLoadingStateResource,
-  createStateResource,
-  StateResource,
-} from '@alfa-client/tech-shared';
+import { createEmptyStateResource, createLoadingStateResource, createStateResource, StateResource, } from '@alfa-client/tech-shared';
 import { Mock, mock, mockWindowError } from '@alfa-client/test-utils';
 import { SnackBarService } from '@alfa-client/ui';
 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
 import { AbstractControl, FormControl, FormGroup, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 import { ActivatedRoute, UrlSegment } from '@angular/router';
 import { faker } from '@faker-js/faker/locale/de';
+import { expect } from '@jest/globals';
 import { cold } from 'jest-marbles';
 import { createUser } from 'libs/admin/user-shared/test/user';
 import { Observable, of, throwError } from 'rxjs';
@@ -45,7 +41,6 @@ import { createUrlSegment } from '../../../../../navigation-shared/test/navigati
 import { singleCold, singleColdCompleted, singleHot } from '../../../../../tech-shared/test/marbles';
 import { createAdminOrganisationsEinheit } from '../../../../organisations-einheit-shared/src/test/organisations-einheit';
 import { UserFormService } from './user.formservice';
-
 import SpyInstance = jest.SpyInstance;
 
 describe('UserFormService', () => {
@@ -152,6 +147,14 @@ describe('UserFormService', () => {
   });
 
   describe('listenToAlfaGroupChanges', () => {
+    it('should call handleAlfaGroupChange on initial change', () => {
+      formService._handleAlfaGroupChange = jest.fn();
+
+      formService.listenToAlfaGroupChanges();
+
+      expect(formService._handleAlfaGroupChange).toHaveBeenCalled();
+    });
+
     it('should call handleAlfaGroupChange when value of form element changes', fakeAsync(() => {
       formService._handleAlfaGroupChange = jest.fn();
 
@@ -481,6 +484,14 @@ describe('UserFormService', () => {
 
       expect(formService._initOrganisationsEinheiten$.unsubscribe).toHaveBeenCalled();
     });
+
+    it('should unsubscribe from initOrganisationsEinheiten$', () => {
+      formService._alfaGroupChanges.unsubscribe = jest.fn();
+
+      formService.ngOnDestroy();
+
+      expect(formService._alfaGroupChanges.unsubscribe).toHaveBeenCalled();
+    });
   });
 
   describe('get userName', () => {
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 494673b77cf049e6219418f7a726173af20e3fd0..666d4d192605be0c6e14cca6008225b86570e1d5 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
@@ -23,21 +23,13 @@
  */
 import { AdminOrganisationsEinheit, AdminOrganisationsEinheitService } from '@admin-client/organisations-einheit-shared';
 import { ROUTES } from '@admin-client/shared';
-import { User, UserService } from '@admin-client/user-shared';
+import { AdminRoles, User, UserService } from '@admin-client/user-shared';
 import { KeycloakFormService, PatchConfig } from '@admin/keycloak-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import { createEmptyStateResource, EMPTY_STRING, isLoaded, mapToResource, StateResource } from '@alfa-client/tech-shared';
 import { SnackBarService } from '@alfa-client/ui';
 import { Injectable, OnDestroy } from '@angular/core';
-import {
-  AbstractControl,
-  FormControl,
-  UntypedFormBuilder,
-  UntypedFormGroup,
-  ValidationErrors,
-  ValidatorFn,
-  Validators,
-} from '@angular/forms';
+import { AbstractControl, FormControl, UntypedFormBuilder, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators, } from '@angular/forms';
 import { UrlSegment } from '@angular/router';
 import { catchError, filter, Observable, of, Subscription, tap } from 'rxjs';
 
@@ -51,7 +43,7 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
   public static readonly CLIENT_ROLES: string = 'clientRoles';
   public static readonly GROUPS: string = 'groups';
   public static readonly ADMINISTRATION_GROUP: string = 'admin';
-  public static readonly ADMIN: string = 'ADMIN_ADMIN';
+  public static readonly ADMIN: string = AdminRoles.ADMIN;
   public static readonly DATENBEAUFTRAGUNG: string = 'DATENBEAUFTRAGUNG';
   public static readonly ALFA_GROUP: string = 'alfa';
   public static readonly LOESCHEN: string = 'VERWALTUNG_LOESCHEN';
@@ -59,6 +51,7 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
   public static readonly POSTSTELLE: string = 'VERWALTUNG_POSTSTELLE';
 
   _initOrganisationsEinheiten$: Subscription;
+  _alfaGroupChanges: Subscription;
 
   _organisationsEinheitToGroupIdMap: Map<string, string> = new Map<string, string>();
 
@@ -163,9 +156,10 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
     });
   }
 
-  protected listenToAlfaGroupChanges(): void {
+  listenToAlfaGroupChanges(): void {
     const alfaGroup: UntypedFormGroup = this.getRoleGroup(UserFormService.ALFA_GROUP);
-    alfaGroup.valueChanges.subscribe(() => {
+    this._handleAlfaGroupChange(alfaGroup);
+    this._alfaGroupChanges = alfaGroup.valueChanges.subscribe(() => {
       this._handleAlfaGroupChange(alfaGroup);
     });
   }
@@ -185,7 +179,7 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
 
   _disableUncheckedCheckboxes(alfaGroup: UntypedFormGroup): void {
     for (const control of Object.values<AbstractControl>(alfaGroup.controls)) {
-      if (control.value === false) control.disable({ emitEvent: false });
+      if (!control.value) control.disable({ emitEvent: false });
     }
   }
 
@@ -265,6 +259,7 @@ export class UserFormService extends KeycloakFormService<User> implements OnDest
 
   ngOnDestroy(): void {
     this._initOrganisationsEinheiten$.unsubscribe();
+    this._alfaGroupChanges.unsubscribe();
   }
 
   public getUserName(): string {
diff --git a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
index 1ea618d47d18ed73a95030929bf0d581d41d3c6c..9d89989e6f5eb294ee5d7215b881a2584f3490db 100644
--- a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
+++ b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
@@ -46,6 +46,9 @@ export enum ApiRootLinkRel {
   ALLE_VORGAENGE_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_all',
   MEINE_VORGAENGE_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_my',
   UNASSIGNED_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_unassigned',
+  ALLE_VORGAENGE_WEITERGELEITET = 'vorgaenge_weitergeleitet_all',
+  MEINE_VORGAENGE_WEITERGELEITET = 'vorgaenge_weitergeleitet_my',
+  UNASSIGNED_WEITERGELEITET = 'vorgaenge_weitergeleitet_unassigned',
   ALLE_VORGAENGE_VERWORFEN = 'vorgaenge_verworfen_all',
   MEINE_VORGAENGE_VERWORFEN = 'vorgaenge_verworfen_my',
   UNASSIGNED_VERWORFEN = 'vorgaenge_verworfen_unassigned',
diff --git a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts
index 6adabee9688a1af7ac880621d85af1a90e04c326..8a67d24b410454a80ae2d62f7bbbd6a86a08fd9e 100644
--- a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts
+++ b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts
@@ -12,8 +12,8 @@ describe('CancelDialogButtonComponent', () => {
 
   let dialogService: Mock<OzgcloudDialogService>;
 
-  const cancelDialogButton: string = getDataTestIdOf('cancel-dialog-button');
-  const cancelDialogIconButton: string = getDataTestIdOf('cancel-dialog-icon-button');
+  const cancelDialogButton: string = getDataTestIdOf('cancel-dialog-button-container');
+  const cancelDialogIconButton: string = getDataTestIdOf('cancel-dialog-icon-button-container');
 
   beforeEach(async () => {
     dialogService = mock(OzgcloudDialogService);
diff --git a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts
index 7211cb480d8d88a6eefa984f42146d6da197a63b..03ac3acbe39b7907df7af242da47d4d3f70a5fa3 100644
--- a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts
+++ b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts
@@ -14,7 +14,7 @@ import { ButtonComponent, CloseIconComponent, TooltipDirective } from '@ods/syst
         variant="ghost"
         size="fit"
         dataTestId="cancel-dialog-icon-button"
-        data-test-id="cancel-dialog-icon-button"
+        data-test-id="cancel-dialog-icon-button-container"
       >
         <ng-container icon>
           <ods-close-icon class="fill-primary" />
@@ -26,7 +26,7 @@ import { ButtonComponent, CloseIconComponent, TooltipDirective } from '@ods/syst
         variant="outline"
         text="Abbrechen"
         dataTestId="cancel-dialog-button"
-        data-test-id="cancel-dialog-button"
+        data-test-id="cancel-dialog-button-container"
       >
         <ng-container icon>
           <ods-close-icon class="fill-primary" />
diff --git a/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts b/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts
index 0e77b51c101f31ac094b7c59f6fbae9834f76b9a..89c0cd5fb117bc5c11c2aa254dfd810ec7616b32 100644
--- a/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts
+++ b/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts
@@ -64,12 +64,15 @@ export abstract class FormControlEditorAbstractComponent implements ControlValue
     this.fieldControl.setValue(text);
     this.setErrors();
   }
+
   registerOnChange(fn: (text: string | Date) => {}): void {
     this.onChange = fn;
   }
+
   registerOnTouched(fn: () => {}): void {
     this.onTouched = fn;
   }
+
   setDisabledState?(isDisabled: boolean): void {
     this.disabled = isDisabled;
   }
@@ -83,9 +86,9 @@ export abstract class FormControlEditorAbstractComponent implements ControlValue
     if (this.control) {
       this.fieldControl.setErrors(this.control.errors);
       if (this.control.invalid) {
-        this._updateInvalidParams();
         this.fieldControl.markAsTouched();
       }
+      this._updateInvalidParams();
     }
   }
 
diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index a820f6d4ce30953ae4b1de7a42341cdc51d9c822..c17fdb29f53e0948d6f7b3a61d0d3725c18e2ffc 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -28,6 +28,7 @@ export * from './lib/bescheid-status-text/bescheid-status-text.component';
 export * from './lib/bescheid-wrapper/bescheid-wrapper.component';
 export * from './lib/button-card/button-card.component';
 export * from './lib/button/button.component';
+export * from './lib/dialog-container/dialog-container.component';
 export * from './lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component';
 export * from './lib/dropdown-menu/dropdown-menu-item/dropdown-menu-item.component';
 export * from './lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component';
diff --git a/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.spec.ts b/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d1f894406fa1f6c9468c1d7ba356a56947a05c25
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DialogContainerComponent } from './dialog-container.component';
+
+describe('DialogContainerComponent', () => {
+  let component: DialogContainerComponent;
+  let fixture: ComponentFixture<DialogContainerComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [DialogContainerComponent]
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(DialogContainerComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.ts b/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0ae05ed9e15b295a9fd542223bb9b6b9458d7ce8
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/dialog-container/dialog-container.component.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'ods-dialog-container',
+  standalone: true,
+  imports: [],
+  template: `
+    <div class="max-h-full w-[860px] max-w-full rounded-lg bg-background-50 p-6 shadow-md">
+      <ng-content />
+    </div>
+  `,
+})
+export class DialogContainerComponent {}
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html
index ad9a5561e64c8b1a8c4f31b72a6dfdff0d0c3905..bdf8537e74921852fa7d6d5c614dacc7179b1cf4 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html
@@ -1,4 +1,4 @@
-<!--@if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) {-->
+@if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) {
   @if (showAsIconButton) {
     <ods-open-dialog-button
       [tooltip]="'Vorgang weiterleiten'"
@@ -14,4 +14,4 @@
       <ods-forward-vorgang-icon icon class="fill-primary" />
     </ods-open-dialog-button>
   }
-<!--}-->
+}
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
index 4196535914833b542fdf6b2f9323ac8af647414e..dd8cb9767e87101c94ae31822fc4f29b21f74d10 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
@@ -3,7 +3,7 @@
   text="Weiterleiten"
   [tooltip]="tooltip"
   tooltipPosition="above"
-  dataTestId="forwarding-button"
+  dataTestId="forwarding-dialog-button"
 >
   <ods-forward-vorgang-icon icon class="fill-whitetext" />
 </ods-button-with-spinner>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
index b61988d33c478ecfbcfd727f83440f8d236232af..48919266d401fb3597c370c65920230b7c8d9d51 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
@@ -1,19 +1,20 @@
-<div class="flex max-h-full w-[860px] max-w-full flex-col rounded-lg bg-background-50 p-6 shadow-md">
-  <div class="mb-4 flex items-center justify-between">
-    <h1 class="text-lg font-medium text-primary">Vorgang weiterleiten</h1>
-    <ods-cancel-dialog-button showAsIconButton="true" />
-  </div>
-
-  <div class="mb-6" style="height: calc(50vh + 4.5rem)">
-    @if (!selectedSearchResult) {
-      <alfa-forwarding-search-organisations-einheit data-test-id="zufi-search" />
-    } @else {
-      <alfa-search-selected [organisationsEinheitResource]="selectedSearchResult" data-test-id="forwarding-item" />
-    }
-  </div>
+<ods-dialog-container>
+  <div class="flex flex-col">
+    <div class="mb-4 flex items-center justify-between">
+      <h1 class="text-lg font-medium text-primary">Vorgang weiterleiten</h1>
+      <ods-cancel-dialog-button showAsIconButton="true" />
+    </div>
+    <div class="mb-6" style="height: calc(50vh + 4.5rem)">
+      @if (!selectedSearchResult) {
+        <alfa-forwarding-search-organisations-einheit cdkFocusInitial data-test-id="organisations-einheit-search" />
+      } @else {
+        <alfa-search-item-selected [organisationsEinheitResource]="selectedSearchResult" data-test-id="search-item-selected" />
+      }
+    </div>
 
-  <div class="flex gap-4">
-    <alfa-forwarding-button [disabled]="!selectedSearchResult" />
-    <ods-cancel-dialog-button />
+    <div class="flex gap-4">
+      <alfa-forwarding-button [disabled]="!selectedSearchResult" />
+      <ods-cancel-dialog-button />
+    </div>
   </div>
-</div>
+</ods-dialog-container>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
index 6d4454c8e37a0bde91a410aeacf6df07087973f6..42aa015eeeab4f68a8eee06636128ecbc05a5674 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
@@ -1,31 +1,32 @@
 import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
 import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { CancelDialogButtonComponent } from '@ods/component';
-import { MockComponent, MockModule } from 'ng-mocks';
+import { MockComponent } from 'ng-mocks';
 import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
 import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
-import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component';
 import { ForwardingDialogComponent } from './forwarding-dialog.component';
+import { SearchItemSelectedComponent } from './search-item-selected/search-item-selected.component';
+import { ForwardingSearchOrganisationsEinheitComponent } from './search-organisations-einheit/search-organisations-einheit.component';
 
 describe('ForwardingDialogComponent', () => {
   let component: ForwardingDialogComponent;
   let fixture: ComponentFixture<ForwardingDialogComponent>;
 
-  const zufiSearch: string = getDataTestIdOf('zufi-search');
-  const forwardingItem: string = getDataTestIdOf('forwarding-item');
+  const organisationsEinheitSearch: string = getDataTestIdOf('organisations-einheit-search');
+  const searchItemSelected: string = getDataTestIdOf('search-item-selected');
 
   const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource();
+
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardingDialogComponent],
       declarations: [
         MockComponent(CancelDialogButtonComponent),
         MockComponent(ForwardingButtonComponent),
-        MockComponent(ForwardingItemInDialogComponent),
-        MockModule(ZustaendigeStelleModule),
+        MockComponent(SearchItemSelectedComponent),
+        MockComponent(ForwardingSearchOrganisationsEinheitComponent),
       ],
     }).compileComponents();
 
@@ -45,7 +46,7 @@ describe('ForwardingDialogComponent', () => {
 
         fixture.detectChanges();
 
-        existsAsHtmlElement(fixture, zufiSearch);
+        existsAsHtmlElement(fixture, organisationsEinheitSearch);
       });
 
       it('should NOT render if selectedSearchResult is NOT null', () => {
@@ -53,7 +54,7 @@ describe('ForwardingDialogComponent', () => {
 
         fixture.detectChanges();
 
-        notExistsAsHtmlElement(fixture, zufiSearch);
+        notExistsAsHtmlElement(fixture, organisationsEinheitSearch);
       });
     });
   });
@@ -71,7 +72,7 @@ describe('ForwardingDialogComponent', () => {
 
         fixture.detectChanges();
 
-        existsAsHtmlElement(fixture, forwardingItem);
+        existsAsHtmlElement(fixture, searchItemSelected);
       });
 
       it('should NOT render if selectedSearchResult is null', () => {
@@ -79,7 +80,7 @@ describe('ForwardingDialogComponent', () => {
 
         fixture.detectChanges();
 
-        notExistsAsHtmlElement(fixture, forwardingItem);
+        notExistsAsHtmlElement(fixture, searchItemSelected);
       });
     });
   });
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
index 343171d3d5c90b39a7b575d42663989cc037c75f..2350186c3531b19ee69e6f5ec8f341dc4758d9d8 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
@@ -4,9 +4,10 @@ import { A11yModule } from '@angular/cdk/a11y';
 import { Component, Input } from '@angular/core';
 import { ReactiveFormsModule } from '@angular/forms';
 import { CancelDialogButtonComponent } from '@ods/component';
+import { DialogContainerComponent } from '@ods/system';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
+import { SearchItemSelectedComponent } from './search-item-selected/search-item-selected.component';
 import { ForwardingSearchOrganisationsEinheitComponent } from './search-organisations-einheit/search-organisations-einheit.component';
-import { SearchSelectedComponent } from './search-selected/search-selected.component';
 
 @Component({
   selector: 'alfa-forwarding-dialog',
@@ -18,7 +19,8 @@ import { SearchSelectedComponent } from './search-selected/search-selected.compo
     ZustaendigeStelleModule,
     ForwardingButtonComponent,
     ForwardingSearchOrganisationsEinheitComponent,
-    SearchSelectedComponent,
+    SearchItemSelectedComponent,
+    DialogContainerComponent,
   ],
   templateUrl: './forwarding-dialog.component.html',
 })
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.html
similarity index 100%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.html
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.html
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.spec.ts
similarity index 100%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.spec.ts
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.spec.ts
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.ts
similarity index 100%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/change-button-container/change-button-container.component.ts
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/change-button-container/change-button-container.component.ts
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.html
similarity index 100%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.html
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.html
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.spec.ts
similarity index 81%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.spec.ts
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.spec.ts
index c4c5b403d6d56de2de0bbab10e06fea920712e18..ff1f2e2a77ad69b5d17d7871cf0e7167af3a4132 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.spec.ts
@@ -6,18 +6,18 @@ import { ForwardingItemComponent, ForwardingItemInfoComponent } from '@ods/syste
 import { MockComponent } from 'ng-mocks';
 import { createOrganisationsEinheitResource } from '../../../../../../zustaendige-stelle-shared/test/organisations-einheit';
 import { ChangeButtonContainerComponent } from './change-button-container/change-button-container.component';
-import { ForwardingItemInDialogComponent } from './forwarding-item.component';
+import { SearchItemSelectedComponent } from './search-item-selected.component';
 
-describe('ForwardingDialogForwardingItemComponent', () => {
-  let component: ForwardingItemInDialogComponent;
-  let fixture: ComponentFixture<ForwardingItemInDialogComponent>;
+describe('ForwardingSearchOrganisationsEinheitComponent', () => {
+  let component: SearchItemSelectedComponent;
+  let fixture: ComponentFixture<SearchItemSelectedComponent>;
 
   const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource();
   const anschrift: Anschrift = organisationsEinheitResource.anschrift;
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [ForwardingItemInDialogComponent],
+      imports: [SearchItemSelectedComponent],
       declarations: [
         MockComponent(ChangeButtonContainerComponent),
         MockComponent(ForwardingItemComponent),
@@ -25,7 +25,7 @@ describe('ForwardingDialogForwardingItemComponent', () => {
       ],
     }).compileComponents();
 
-    fixture = TestBed.createComponent(ForwardingItemInDialogComponent);
+    fixture = TestBed.createComponent(SearchItemSelectedComponent);
     component = fixture.componentInstance;
     component.organisationsEinheitResource = organisationsEinheitResource;
     fixture.detectChanges();
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.ts
similarity index 80%
rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.ts
rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.ts
index eaf514653f6655f9305932a363cfa327af054ded..640f93dfb6e8cad5685492fd536e55c403190fce 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-selected/search-selected.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-item-selected/search-item-selected.component.ts
@@ -4,11 +4,11 @@ import { ForwardingItemComponent, ForwardingItemInfoComponent } from '@ods/syste
 import { ChangeButtonContainerComponent } from './change-button-container/change-button-container.component';
 
 @Component({
-  selector: 'alfa-search-selected',
+  selector: 'alfa-search-item-selected',
   standalone: true,
   imports: [ChangeButtonContainerComponent, AnschriftToStringPipe, ForwardingItemComponent, ForwardingItemInfoComponent],
-  templateUrl: './search-selected.component.html',
+  templateUrl: './search-item-selected.component.html',
 })
-export class SearchSelectedComponent {
+export class SearchItemSelectedComponent {
   @Input() organisationsEinheitResource: OrganisationsEinheitResource;
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.html
index 80f2ebb74899acc03959dfc5db1202e12b85e2e5..410a1ed8605cd28872a594b69559885e6e707d5d 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.html
@@ -1,3 +1,3 @@
 <ods-forwarding-item>
-  <alfa-search-zustaendige-stelle-form-container cdkFocusInitial focusOnSearchField="true"/>
+  <alfa-search-zustaendige-stelle-form-container focusOnSearchField="true"/>
 </ods-forwarding-item>
\ No newline at end of file
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.spec.ts
index bbaa57292a19ef5dae23f7ed4febcd449961bc67..84b088454368fd60b3f91e74363ce1aadae01ee0 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/search-organisations-einheit/search-organisations-einheit.component.spec.ts
@@ -1,5 +1,8 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
+import { ForwardingItemComponent } from '@ods/system';
+import { MockComponent, MockModule } from 'ng-mocks';
 import { ForwardingSearchOrganisationsEinheitComponent } from './search-organisations-einheit.component';
 
 describe('ForwardingSearchOrganisationsEinheitComponent', () => {
@@ -9,6 +12,7 @@ describe('ForwardingSearchOrganisationsEinheitComponent', () => {
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardingSearchOrganisationsEinheitComponent],
+      declarations: [MockComponent(ForwardingItemComponent), MockModule(ZustaendigeStelleModule)],
     }).compileComponents();
 
     fixture = TestBed.createComponent(ForwardingSearchOrganisationsEinheitComponent);
diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts
index c3358acb510534afa4df0bca712d8b2ff8161bb5..c2e342d93cc22a74bd18be0d1c135b5e51606c50 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts
@@ -1054,6 +1054,12 @@ describe('Vorgang Reducer', () => {
           expect(vorgangStatistic.resource.byStatus.verworfen).toBeNull();
         });
 
+        it('should have null as weitergeleitet', () => {
+          const vorgangStatistic: StateResource<VorgangStatistic> = Reducer.initialState.vorgangStatistic;
+
+          expect(vorgangStatistic.resource.byStatus.weitergeleitet).toBeNull();
+        });
+
         it('should have null as zuLoeschen', () => {
           const vorgangStatistic: StateResource<VorgangStatistic> = Reducer.initialState.vorgangStatistic;
 
diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
index 0f200a551da43386ab80c67938d561a277bed11d..2601e8b7044b3d484d2556d1e418d1642dffa17f 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
@@ -126,6 +126,7 @@ function createEmptyVorgangStatistic(): VorgangStatistic {
       inBearbeitung: null,
       beschieden: null,
       verworfen: null,
+      weitergeleitet: null,
       zuLoeschen: null,
     },
     wiedervorlagen: null,
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts
index 76c2de5b4f697f184580a6ec74c0ebaaaf1705be..c522a0f4fcc3a6dfb8ee4d11c373ad4030d1717a 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts
@@ -21,11 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { UrlSegment } from '@angular/router';
-import { faker } from '@faker-js/faker';
 import { ApiRootLinkRel } from '@alfa-client/api-root-shared';
 import { RouteData } from '@alfa-client/navigation-shared';
 import { EMPTY_STRING } from '@alfa-client/tech-shared';
+import { UrlSegment } from '@angular/router';
+import { faker } from '@faker-js/faker';
 import { createRouteData } from 'libs/navigation-shared/test/navigation-test-factory';
 import { initialState, VorgangState } from './+state/vorgang.reducer';
 import {
@@ -130,9 +130,7 @@ describe('Vorgang Navigation Util', () => {
     it('should return value on uebersichtsSeite', () => {
       jest.spyOn(VorgangNavigationUtil, 'isUebersichtsSeite').mockReturnValue(true);
 
-      const vorgangFilter: VorgangFilter = getVorgangFilter(
-        buildWithRouteParam(VorgangFilter.ALLE),
-      );
+      const vorgangFilter: VorgangFilter = getVorgangFilter(buildWithRouteParam(VorgangFilter.ALLE));
 
       expect(vorgangFilter).toBe(VorgangFilter.ALLE);
     });
@@ -152,10 +150,7 @@ describe('Vorgang Navigation Util', () => {
       const vorgangView: VorgangView = VorgangView.ANGENOMMEN;
       jest.spyOn(VorgangNavigationUtil, 'getVorgangView').mockReturnValue(vorgangView);
 
-      const isSelected: boolean = VorgangNavigationUtil.isViewSelected(
-        createRouteData(),
-        vorgangView,
-      );
+      const isSelected: boolean = VorgangNavigationUtil.isViewSelected(createRouteData(), vorgangView);
 
       expect(isSelected).toBeTruthy();
     });
@@ -164,10 +159,7 @@ describe('Vorgang Navigation Util', () => {
       const vorgangView: VorgangView = VorgangView.ANGENOMMEN;
       jest.spyOn(VorgangNavigationUtil, 'getVorgangView').mockReturnValue(VorgangView.NEU);
 
-      const isSelected: boolean = VorgangNavigationUtil.isViewSelected(
-        createRouteData(),
-        vorgangView,
-      );
+      const isSelected: boolean = VorgangNavigationUtil.isViewSelected(createRouteData(), vorgangView);
 
       expect(isSelected).toBeFalsy();
     });
@@ -198,7 +190,7 @@ describe('Vorgang Navigation Util', () => {
 
       const vorgangView: VorgangView = VorgangNavigationUtil.getVorgangView(routeData);
 
-      expect(vorgangView).toBe(6);
+      expect(vorgangView).toBe(VorgangView.VORGANG_LIST);
     });
 
     it('should return VorgangView.NEU if routeData contains this view', () => {
@@ -261,9 +253,7 @@ describe('Vorgang Navigation Util', () => {
       });
 
       it('should build by given filter and view', () => {
-        jest
-          .spyOn(Storage, 'getViewFromLocalStorage')
-          .mockReturnValue(ROUTE_PARAM_BY_VORGANG_VIEW[VorgangView.ANGENOMMEN]);
+        jest.spyOn(Storage, 'getViewFromLocalStorage').mockReturnValue(ROUTE_PARAM_BY_VORGANG_VIEW[VorgangView.ANGENOMMEN]);
         jest
           .spyOn(Storage, 'getFilterFromLocalStorage')
           .mockReturnValue(ROUTE_PARAM_BY_VORGANG_FILTER[VorgangFilter.MEINE_VORGAENGE]);
@@ -340,10 +330,7 @@ describe('Vorgang Navigation Util', () => {
 
     it('should build by meine vorgänge filter and view', () => {
       const state: VorgangState = { ...initialState, vorgangView: VorgangView.NEU };
-      const routePath: string = buildVorgangListRouteWithVorgangFilter(
-        state,
-        VorgangFilter.MEINE_VORGAENGE,
-      );
+      const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE);
 
       expect(routePath).toEqual('/meine/neu');
     });
@@ -354,10 +341,7 @@ describe('Vorgang Navigation Util', () => {
         vorgangView: VorgangView.SEARCH,
         searchString: 'testSearchString',
       };
-      const routePath: string = buildVorgangListRouteWithVorgangFilter(
-        state,
-        VorgangFilter.MEINE_VORGAENGE,
-      );
+      const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE);
 
       expect(routePath).toEqual('/meine/search/testSearchString');
     });
@@ -368,10 +352,7 @@ describe('Vorgang Navigation Util', () => {
         vorgangView: VorgangView.ANGENOMMEN,
         searchString: 'testSearchString',
       };
-      const routePath: string = buildVorgangListRouteWithVorgangFilter(
-        state,
-        VorgangFilter.MEINE_VORGAENGE,
-      );
+      const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE);
 
       expect(routePath).toEqual('/meine/angenommen');
     });
@@ -406,19 +387,13 @@ describe('Vorgang Navigation Util', () => {
       });
 
       it('return linkRel for Meine Vorgänge Filter', () => {
-        const linkRel: string = buildLinkRel(
-          VorgangFilter.MEINE_VORGAENGE,
-          VorgangView.VORGANG_LIST,
-        );
+        const linkRel: string = buildLinkRel(VorgangFilter.MEINE_VORGAENGE, VorgangView.VORGANG_LIST);
 
         expect(linkRel).toBe('vorgaenge_my');
       });
 
       it('return linkRel for Nicht Zugewiesen Filter', () => {
-        const linkRel: string = buildLinkRel(
-          VorgangFilter.NICHT_ZUGEWIESEN,
-          VorgangView.VORGANG_LIST,
-        );
+        const linkRel: string = buildLinkRel(VorgangFilter.NICHT_ZUGEWIESEN, VorgangView.VORGANG_LIST);
 
         expect(linkRel).toBe('vorgaenge_unassigned');
       });
@@ -456,21 +431,13 @@ describe('Vorgang Navigation Util', () => {
     const vorgangView: VorgangView = VorgangView.NEU;
 
     it('should return routePath of view and filter', () => {
-      const routePath: string = buildVorgangFilterViewRoutePath(
-        vorgangFilter,
-        vorgangView,
-        EMPTY_STRING,
-      );
+      const routePath: string = buildVorgangFilterViewRoutePath(vorgangFilter, vorgangView, EMPTY_STRING);
 
       expect(routePath).toBe('/alle/neu');
     });
 
     it('should return routePath of view and filter and searchString', () => {
-      const routePath: string = buildVorgangFilterViewRoutePath(
-        vorgangFilter,
-        vorgangView,
-        'searchString',
-      );
+      const routePath: string = buildVorgangFilterViewRoutePath(vorgangFilter, vorgangView, 'searchString');
 
       expect(routePath).toBe('/alle/neu/searchString');
     });
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts
index d525cd4e9a1614ee19f2db106387e0ed2937fe5b..053d9eb1c84a2b396d86b45fbf8908b4790f76a9 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts
@@ -40,6 +40,7 @@ export const ANGENOMMEN_ROUTE_PARAM: string = 'angenommen';
 export const IN_BEARBEITUNG_ROUTE_PARAM: string = 'in_bearbeitung';
 export const BESCHIEDEN_ROUTE_PARAM: string = 'beschieden';
 export const ABGESCHLOSSEN_ROUTE_PARAM: string = 'abgeschlossen';
+export const WEITERGELEITET_ROUTE_PARAM: string = 'weitergeleitet';
 export const VERWORFEN_ROUTE_PARAM: string = 'verworfen';
 export const WIEDERVORLAGEN_ROUTE_PARAM: string = 'wiedervorlagen';
 export const UNGELESENE_NACHRICHTEN_ROUTE_PARAM: string = 'ungelesene_nachrichten';
@@ -54,6 +55,7 @@ export const ROUTE_PARAM_BY_VORGANG_VIEW: { [view: string]: string } = {
   [VorgangView.IN_BEARBEITUNG]: IN_BEARBEITUNG_ROUTE_PARAM,
   [VorgangView.BESCHIEDEN]: BESCHIEDEN_ROUTE_PARAM,
   [VorgangView.ABGESCHLOSSEN]: ABGESCHLOSSEN_ROUTE_PARAM,
+  [VorgangView.WEITERGELEITET]: WEITERGELEITET_ROUTE_PARAM,
   [VorgangView.VERWORFEN]: VERWORFEN_ROUTE_PARAM,
   [VorgangView.VORGANG_LIST]: EMPTY_STRING,
   [VorgangView.WIEDERVORLAGEN]: WIEDERVORLAGEN_ROUTE_PARAM,
@@ -68,6 +70,7 @@ export const VORGANG_VIEW_BY_ROUTE_PARAM: { [routeParam: string]: VorgangView }
   [IN_BEARBEITUNG_ROUTE_PARAM]: VorgangView.IN_BEARBEITUNG,
   [BESCHIEDEN_ROUTE_PARAM]: VorgangView.BESCHIEDEN,
   [ABGESCHLOSSEN_ROUTE_PARAM]: VorgangView.ABGESCHLOSSEN,
+  [WEITERGELEITET_ROUTE_PARAM]: VorgangView.WEITERGELEITET,
   [VERWORFEN_ROUTE_PARAM]: VorgangView.VERWORFEN,
   [WIEDERVORLAGEN_ROUTE_PARAM]: VorgangView.WIEDERVORLAGEN,
   [UNGELESENE_NACHRICHTEN_ROUTE_PARAM]: VorgangView.UNGELESENE_NACHRICHTEN,
@@ -115,9 +118,7 @@ export function isViewSelected(routeData: RouteData, vorgangView: VorgangView):
 export function getVorgangView(routeData: RouteData): VorgangView {
   const vorgangViewValue: string = VorgangNavigationUtil.getRouteUrlSegment(routeData, 1);
   if (VorgangNavigationUtil.isUebersichtsSeite(routeData)) {
-    return isNotUndefined(vorgangViewValue) ?
-        VORGANG_VIEW_BY_ROUTE_PARAM[vorgangViewValue]
-      : VorgangView.VORGANG_LIST;
+    return isNotUndefined(vorgangViewValue) ? VORGANG_VIEW_BY_ROUTE_PARAM[vorgangViewValue] : VorgangView.VORGANG_LIST;
   }
   return undefined;
 }
@@ -133,9 +134,7 @@ export function isUebersichtsSeite(routeData: RouteData): boolean {
 }
 
 export function getRouteUrlSegment(routeData: RouteData, num: number): string {
-  return routeData.urlSegments.length > num ?
-      routeData.urlSegments[num].path.toString()
-    : undefined;
+  return routeData.urlSegments.length > num ? routeData.urlSegments[num].path.toString() : undefined;
 }
 
 export function buildBackButtonUrl(state: VorgangState): string {
@@ -153,17 +152,11 @@ export function isStateEqualLocalStorage(state: VorgangState): boolean {
   );
 }
 
-export function buildVorgangListRoutePathWithFilter(
-  state: VorgangState,
-  filter: VorgangFilter,
-): string {
+export function buildVorgangListRoutePathWithFilter(state: VorgangState, filter: VorgangFilter): string {
   return VorgangNavigationUtil.buildVorgangListRouteWithVorgangFilter(state, filter);
 }
 
-export function buildVorgangListRouteWithVorgangFilter(
-  state: VorgangState,
-  filter: VorgangFilter,
-): string {
+export function buildVorgangListRouteWithVorgangFilter(state: VorgangState, filter: VorgangFilter): string {
   let route = '/' + ROUTE_PARAM_BY_VORGANG_FILTER[filter];
 
   if (state.vorgangView !== VorgangView.VORGANG_LIST) {
@@ -198,9 +191,7 @@ export function buildLinkRelFromPathSegments(pathSegments: string[]): string {
   }
 
   const vorgangView: VorgangView =
-    isEmpty(pathSegments[1]) ?
-      VorgangView.VORGANG_LIST
-    : VORGANG_VIEW_BY_ROUTE_PARAM[pathSegments[1]];
+    isEmpty(pathSegments[1]) ? VorgangView.VORGANG_LIST : VORGANG_VIEW_BY_ROUTE_PARAM[pathSegments[1]];
 
   return buildLinkRel(vorgangFilter, vorgangView);
 }
@@ -210,11 +201,7 @@ export function buildVorgangFilterViewRoutePath(
   vorgangView: VorgangView,
   searchString: string,
 ): string {
-  let baseRoutePath: string =
-    '/' +
-    ROUTE_PARAM_BY_VORGANG_FILTER[vorgangFilter] +
-    '/' +
-    ROUTE_PARAM_BY_VORGANG_VIEW[vorgangView];
+  let baseRoutePath: string = '/' + ROUTE_PARAM_BY_VORGANG_FILTER[vorgangFilter] + '/' + ROUTE_PARAM_BY_VORGANG_VIEW[vorgangView];
   if (isNotEmpty(searchString)) {
     return baseRoutePath + '/' + searchString;
   }
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts
index 8417137108330ec18fd817f11a55d134e9e47f24..956adad470e23174c4cd6360ab7853420a9e5cc9 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts
@@ -118,6 +118,7 @@ export interface ByStatus {
   beschieden: number;
   abgeschlossen: number;
   verworfen: number;
+  weitergeleitet: number;
   zuLoeschen: number;
 }
 
@@ -160,6 +161,7 @@ export enum VorgangView {
   ABGESCHLOSSEN,
   VERWORFEN,
   VORGANG_LIST,
+  WEITERGELEITET,
   WIEDERVORLAGEN,
   SEARCH,
   ZU_LOESCHEN,
diff --git a/alfa-client/libs/vorgang-shared/test/vorgang.ts b/alfa-client/libs/vorgang-shared/test/vorgang.ts
index 9eadf4c36b6fbb1e06bab1d81880a2d386db0246..0a98811ad59a31a8c735fa90e1efe5a296f6aceb 100644
--- a/alfa-client/libs/vorgang-shared/test/vorgang.ts
+++ b/alfa-client/libs/vorgang-shared/test/vorgang.ts
@@ -160,6 +160,7 @@ function createByStatus(): ByStatus {
     beschieden: faker.number.int(),
     abgeschlossen: faker.number.int(),
     verworfen: faker.number.int(),
+    weitergeleitet: faker.number.int(),
     zuLoeschen: faker.number.int(),
   };
 }
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss
index 01889d5e0d21fe759a533c2415fe3ccfac84c804..b29f62b51b0da42f61a47a11583e6e11445e272e 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss
@@ -90,22 +90,15 @@ alfa-vorgang-view-item {
         border-color: #155ab4;
       }
 
-      &.angenommen {
-        background-color: #f6ebce;
-        border-color: #f1c14e;
-      }
-
+      &.angenommen,
       &.in_bearbeitung {
         background-color: #f6ebce;
         border-color: #f1c14e;
       }
 
-      &.beschieden {
-        background-color: #d9eec5;
-        border-color: #7ccb2b;
-      }
-
-      &.abgeschlossen {
+      &.beschieden,
+      &.abgeschlossen,
+      &.weitergeleitet {
         background-color: #d9eec5;
         border-color: #7ccb2b;
       }
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
index 21f2c7272fe3695da90ec1ffd5685265b2a0e4be..fde89f0449a26cb2ab766ff0c4eef29de14fd154 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
@@ -28,10 +28,7 @@
     <alfa-vorgang-view-item-container
       *ngIf="
         apiRootResource
-          | hasAnyLink
-            : apiRootLinkRel.ALLE_VORGAENGE_NEU
-            : apiRootLinkRel.MEINE_VORGAENGE_NEU
-            : apiRootLinkRel.UNASSIGNED_NEU
+          | hasAnyLink: apiRootLinkRel.ALLE_VORGAENGE_NEU : apiRootLinkRel.MEINE_VORGAENGE_NEU : apiRootLinkRel.UNASSIGNED_NEU
       "
       data-test-id="vorgang-neu-view"
       label="Neu"
@@ -100,6 +97,22 @@
     >
       <div class="dot abgeschlossen"></div>
     </alfa-vorgang-view-item-container>
+    @if (
+      apiRootResource
+        | hasAnyLink
+          : apiRootLinkRel.ALLE_VORGAENGE_WEITERGELEITET
+          : apiRootLinkRel.MEINE_VORGAENGE_WEITERGELEITET
+          : apiRootLinkRel.UNASSIGNED_WEITERGELEITET
+    ) {
+      <alfa-vorgang-view-item-container
+        data-test-id="vorgang-weitergeleitet-view"
+        label="Weitergeleitet"
+        [view]="vorgangView.WEITERGELEITET"
+        [count]="statistic.byStatus.weitergeleitet"
+      >
+        <div class="dot weitergeleitet"></div>
+      </alfa-vorgang-view-item-container>
+    }
     <alfa-vorgang-view-item-container
       *ngIf="
         apiRootResource
@@ -159,17 +172,11 @@
       [view]="vorgangView.WIEDERVORLAGEN"
       [count]="statistic.wiedervorlagen"
     >
-      <alfa-wiedervorlage-icon
-        [isOverdue]="statistic.existsWiedervorlageOverdue"
-      ></alfa-wiedervorlage-icon>
+      <alfa-wiedervorlage-icon [isOverdue]="statistic.existsWiedervorlageOverdue"></alfa-wiedervorlage-icon>
     </alfa-vorgang-view-item-container>
     <alfa-vorgang-view-item-container
       *ngIf="
-        apiRootResource
-          | hasAnyLink
-            : apiRootLinkRel.ALLE_VORGAENGE
-            : apiRootLinkRel.MEINE_VORGAENGE
-            : apiRootLinkRel.UNASSIGNED
+        apiRootResource | hasAnyLink: apiRootLinkRel.ALLE_VORGAENGE : apiRootLinkRel.MEINE_VORGAENGE : apiRootLinkRel.UNASSIGNED
       "
       data-test-id="vorgang-vorgang-list-view"
       label="Vorgangsliste"
@@ -180,11 +187,7 @@
     </alfa-vorgang-view-item-container>
     <alfa-vorgang-search-view-item-container
       *ngIf="
-        apiRootResource
-          | hasAnyLink
-            : apiRootLinkRel.SEARCH_ALLE
-            : apiRootLinkRel.SEARCH_MEINE
-            : apiRootLinkRel.SEARCH_UNASSIGNED
+        apiRootResource | hasAnyLink: apiRootLinkRel.SEARCH_ALLE : apiRootLinkRel.SEARCH_MEINE : apiRootLinkRel.SEARCH_UNASSIGNED
       "
       data-test-id="vorgang-search-view"
       class="top-border"
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
index 002788d2e9ecf9fc8c9f0e23f9797b125c7edc8d..d7cd88c0faf1e5ca2ec114a6908733f27df88fe8 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
@@ -24,11 +24,7 @@
 import { ApiRootLinkRel } from '@alfa-client/api-root-shared';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import {
-  OzgcloudIconComponent,
-  OzgcloudSvgIconComponent,
-  PostfachIconComponent,
-} from '@alfa-client/ui';
+import { OzgcloudIconComponent, OzgcloudSvgIconComponent, PostfachIconComponent } from '@alfa-client/ui';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
 import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe';
@@ -50,6 +46,7 @@ describe('VorgangViewsMenuComponent', () => {
   const inBearbeitungView: string = getDataTestIdOf('vorgang-in-bearbeitung-view');
   const beschiedenView: string = getDataTestIdOf('vorgang-beschieden-view');
   const abgeschlossenView: string = getDataTestIdOf('vorgang-abgeschlossen-view');
+  const weitergeleitetView: string = getDataTestIdOf('vorgang-weitergeleitet-view');
   const verworfenView: string = getDataTestIdOf('vorgang-verworfen-view');
   const wiedervorlagenView: string = getDataTestIdOf('vorgang-wiedervorlagen-view');
   const ungeleseneNachrichtenView: string = getDataTestIdOf('vorgang-ungelesene-nachrichten-view');
@@ -83,16 +80,15 @@ describe('VorgangViewsMenuComponent', () => {
   });
 
   describe('neu view', () => {
-    it.each([
-      ApiRootLinkRel.ALLE_VORGAENGE_NEU,
-      ApiRootLinkRel.MEINE_VORGAENGE_NEU,
-      ApiRootLinkRel.UNASSIGNED_NEU,
-    ])('should show if %s link exists', (linkRel: string) => {
-      component.apiRootResource = createApiRootResource([linkRel]);
-      fixture.detectChanges();
+    it.each([ApiRootLinkRel.ALLE_VORGAENGE_NEU, ApiRootLinkRel.MEINE_VORGAENGE_NEU, ApiRootLinkRel.UNASSIGNED_NEU])(
+      'should show if %s link exists',
+      (linkRel: string) => {
+        component.apiRootResource = createApiRootResource([linkRel]);
+        fixture.detectChanges();
 
-      existsAsHtmlElement(fixture, neuView);
-    });
+        existsAsHtmlElement(fixture, neuView);
+      },
+    );
 
     it('should hide if both links not exists', () => {
       component.apiRootResource = createApiRootResource();
@@ -182,6 +178,26 @@ describe('VorgangViewsMenuComponent', () => {
     });
   });
 
+  describe('weitergeleitet view', () => {
+    it.each([
+      ApiRootLinkRel.ALLE_VORGAENGE_WEITERGELEITET,
+      ApiRootLinkRel.MEINE_VORGAENGE_WEITERGELEITET,
+      ApiRootLinkRel.UNASSIGNED_WEITERGELEITET,
+    ])('should show if %s link exists', (linkRel: string) => {
+      component.apiRootResource = createApiRootResource([linkRel]);
+      fixture.detectChanges();
+
+      existsAsHtmlElement(fixture, weitergeleitetView);
+    });
+
+    it('should hide if both links not exists', () => {
+      component.apiRootResource = createApiRootResource();
+      fixture.detectChanges();
+
+      notExistsAsHtmlElement(fixture, beschiedenView);
+    });
+  });
+
   describe('verworfen view', () => {
     it.each([
       ApiRootLinkRel.ALLE_VORGAENGE_VERWORFEN,
@@ -203,16 +219,15 @@ describe('VorgangViewsMenuComponent', () => {
   });
 
   describe('wiedervorlagen view', () => {
-    it.each([
-      ApiRootLinkRel.ALL_WIEDERVORLAGEN,
-      ApiRootLinkRel.MY_WIEDERVORLAGEN,
-      ApiRootLinkRel.UNASSIGNED_WIEDERVORLAGEN,
-    ])('should show if %s link exists', (linkRel: string) => {
-      component.apiRootResource = createApiRootResource([linkRel]);
-      fixture.detectChanges();
+    it.each([ApiRootLinkRel.ALL_WIEDERVORLAGEN, ApiRootLinkRel.MY_WIEDERVORLAGEN, ApiRootLinkRel.UNASSIGNED_WIEDERVORLAGEN])(
+      'should show if %s link exists',
+      (linkRel: string) => {
+        component.apiRootResource = createApiRootResource([linkRel]);
+        fixture.detectChanges();
 
-      existsAsHtmlElement(fixture, wiedervorlagenView);
-    });
+        existsAsHtmlElement(fixture, wiedervorlagenView);
+      },
+    );
 
     it('should hide if link not exists', () => {
       component.apiRootResource = createApiRootResource();
@@ -243,16 +258,15 @@ describe('VorgangViewsMenuComponent', () => {
   });
 
   describe('vorgangList view', () => {
-    it.each([
-      ApiRootLinkRel.ALLE_VORGAENGE,
-      ApiRootLinkRel.MEINE_VORGAENGE,
-      ApiRootLinkRel.UNASSIGNED,
-    ])('should show if %s link exists', (linkRel: string) => {
-      component.apiRootResource = createApiRootResource([linkRel]);
-      fixture.detectChanges();
+    it.each([ApiRootLinkRel.ALLE_VORGAENGE, ApiRootLinkRel.MEINE_VORGAENGE, ApiRootLinkRel.UNASSIGNED])(
+      'should show if %s link exists',
+      (linkRel: string) => {
+        component.apiRootResource = createApiRootResource([linkRel]);
+        fixture.detectChanges();
 
-      existsAsHtmlElement(fixture, vorgangListView);
-    });
+        existsAsHtmlElement(fixture, vorgangListView);
+      },
+    );
 
     it('should hide if link not exists', () => {
       component.apiRootResource = createApiRootResource();
@@ -263,16 +277,15 @@ describe('VorgangViewsMenuComponent', () => {
   });
 
   describe('search view', () => {
-    it.each([
-      ApiRootLinkRel.SEARCH_ALLE,
-      ApiRootLinkRel.SEARCH_MEINE,
-      ApiRootLinkRel.SEARCH_UNASSIGNED,
-    ])('should show if %s link exists', (linkRel: string) => {
-      component.apiRootResource = createApiRootResource([linkRel]);
-      fixture.detectChanges();
-
-      existsAsHtmlElement(fixture, searchView);
-    });
+    it.each([ApiRootLinkRel.SEARCH_ALLE, ApiRootLinkRel.SEARCH_MEINE, ApiRootLinkRel.SEARCH_UNASSIGNED])(
+      'should show if %s link exists',
+      (linkRel: string) => {
+        component.apiRootResource = createApiRootResource([linkRel]);
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, searchView);
+      },
+    );
 
     it('should hide if no link not exists', () => {
       component.apiRootResource = createApiRootResource();