diff --git a/alfa-client/apps/admin-e2e/src/components/postfach/postfach.e2e.component.ts b/alfa-client/apps/admin-e2e/src/components/postfach/postfach.e2e.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2d45b8fd9846b8704c67c83f8e54dfc756ee1e34
--- /dev/null
+++ b/alfa-client/apps/admin-e2e/src/components/postfach/postfach.e2e.component.ts
@@ -0,0 +1,26 @@
+import { haveValue, typeText } from '../../support/cypress.util';
+
+export class PostfachE2EComponent {
+  private readonly signaturText: string = 'signatur-text';
+  private readonly saveSignaturButton: string = 'save-button';
+
+  public getSignaturText(): any {
+    return cy.getTestElement(this.signaturText);
+  }
+
+  public setSignatur(signatur: string): void {
+    typeText(this.getSignaturText(), signatur);
+  }
+
+  public getSaveButton(): Cypress.Chainable<Element> {
+    return cy.getTestElement(this.saveSignaturButton);
+  }
+
+  public saveSignatur(): void {
+    this.getSaveButton().click();
+  }
+
+  public signatureContains(compare: string): void {
+    haveValue(this.getSignaturText(), compare);
+  }
+}
diff --git a/alfa-client/apps/admin-e2e/src/e2e/login/login-logout.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/login/login-logout.cy.ts
index fcd0df958f62ff980ee9e4134aee07cd310a29a6..b3a0b2113cef0d09537e23164dd3d5b35108cefe 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/login/login-logout.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/login/login-logout.cy.ts
@@ -15,8 +15,7 @@ describe('Login and Logout', () => {
   const header: HeaderE2EComponent = mainPage.getHeader();
 
   before(() => {
-    // Wozu Logout?
-    // cy.logout();
+    //loginAsAriane();
   });
 
   it('login as test user', () => {
diff --git a/alfa-client/apps/admin-e2e/src/e2e/navigation/navigation.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/navigation/navigation.cy.ts
deleted file mode 100644
index 9268aee2937b2ccedf333a527abf8674f495de79..0000000000000000000000000000000000000000
--- a/alfa-client/apps/admin-e2e/src/e2e/navigation/navigation.cy.ts
+++ /dev/null
@@ -1,169 +0,0 @@
-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 { VorgangSearchE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-search.e2e.component';
-import { VorgangViewsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component';
-import { UsermanagerUserE2E } from 'apps/alfa-e2e/src/model/usermanager';
-import { VorgangE2E } from 'apps/alfa-e2e/src/model/vorgang';
-import { HeaderE2EComponent } from 'apps/alfa-e2e/src/page-objects/header.po';
-import { MainPage, waitForSpinnerToDisappear } from 'apps/alfa-e2e/src/page-objects/main.po';
-import { dropCollections, dropSearchIndex } from 'apps/alfa-e2e/src/support/cypress-helper';
-import { enterWith, exist, haveText, notExist } from 'apps/alfa-e2e/src/support/cypress.util';
-import {
-  getUserManagerUserSabine,
-  getUserSabineId,
-  initUsermanagerUsers,
-  loginAsSabine,
-} from 'apps/alfa-e2e/src/support/user-util';
-import {
-  buildVorgang,
-  createVorgang,
-  initSearchIndex,
-  initVorgaenge,
-  objectIds,
-} from 'apps/alfa-e2e/src/support/vorgang-util';
-
-describe('Navigation', () => {
-  const mainPage: MainPage = new MainPage();
-
-  const header: HeaderE2EComponent = mainPage.getHeader();
-  const vorgangSearch: VorgangSearchE2EComponent = header.getVorgangSearch();
-
-  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
-
-  const navigation: NavigationE2EComponent = mainPage.getNavigation();
-
-  const views: VorgangViewsE2EComponent = mainPage.getViews();
-
-  const usermanagerUserSabine: UsermanagerUserE2E = getUserManagerUserSabine();
-
-  const vorgang: VorgangE2E = createVorgang();
-  const vorgangNotBeFiltered: VorgangE2E = {
-    ...buildVorgang(objectIds[0], 'vorgangNotBeFiltered'),
-  };
-  const vorgangAssigned: VorgangE2E = {
-    ...buildVorgang(objectIds[1], 'vorgangAssigned'),
-    assignedTo: getUserSabineId(),
-  };
-  const vorgangAssignedNotBeFiltered: VorgangE2E = {
-    ...buildVorgang(objectIds[2], 'vorgangAssignedNotBeFiltered'),
-    assignedTo: getUserSabineId(),
-  };
-
-  const searchString: string = 'NotBeFiltered';
-
-  before(() => {
-    initVorgaenge([vorgang, vorgangNotBeFiltered, vorgangAssigned, vorgangAssignedNotBeFiltered]);
-    initSearchIndex([vorgang, vorgangNotBeFiltered, vorgangAssigned, vorgangAssignedNotBeFiltered]);
-    initUsermanagerUsers();
-
-    loginAsSabine();
-
-    waitForSpinnerToDisappear();
-    exist(vorgangList.getRoot());
-    navigation.getAlleFilter().click();
-    waitForSpinnerToDisappear();
-    exist(vorgangList.getRoot());
-  });
-
-  after(() => {
-    dropCollections();
-    dropSearchIndex();
-  });
-
-  describe('navigation item myVorgaenge', () => {
-    it('should exists', () => {
-      exist(navigation.getMeineVorgaengeFilter());
-    });
-  });
-
-  describe('navigation item allVorgaenge', () => {
-    it('should exists', () => {
-      exist(navigation.getAlleFilter());
-    });
-  });
-
-  describe('click on my vorgaenge', () => {
-    it('should hide not to user assigned vorgaenge', () => {
-      navigation.getMeineVorgaengeFilter().click();
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangList.getListItem(vorgang.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-    });
-
-    it('should hide not matching vorgaenge after do search', () => {
-      doSearch(searchString);
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangList.getListItem(vorgang.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-    });
-  });
-
-  describe('click on all vorgaenge', () => {
-    it('should show all vorgaenge', () => {
-      navigation.getAlleFilter().click();
-      waitForSpinnerToDisappear();
-      views.getVorgangList().getRoot().click();
-
-      waitForSpinnerToDisappear();
-
-      exist(vorgangList.getListItem(vorgang.name).getRoot());
-      exist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-    });
-
-    it('should hide not matching vorgaenge after do search', () => {
-      doSearch(searchString);
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangList.getListItem(vorgang.name).getRoot());
-      exist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      exist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-    });
-  });
-
-  describe('click on Suche view', () => {
-    it('and alle filter should show empty list', () => {
-      vorgangSearch.getClearButton().click();
-
-      waitForSpinnerToDisappear();
-
-      views.getSuche().getRoot().click();
-
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangList.getListItem(vorgang.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-
-      //TODO sauber implementieren
-      haveText(cy.getTestElement('empty-list-text'), 'Bitte geben Sie einen Suchbegriff ein.');
-    });
-
-    it('and meine filter should show empty list', () => {
-      navigation.getMeineVorgaengeFilter().click();
-
-      waitForSpinnerToDisappear();
-
-      notExist(vorgangList.getListItem(vorgang.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangNotBeFiltered.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssigned.name).getRoot());
-      notExist(vorgangList.getListItem(vorgangAssignedNotBeFiltered.name).getRoot());
-
-      //TODO sauber implementieren
-      haveText(cy.getTestElement('empty-list-text'), 'Bitte geben Sie einen Suchbegriff ein.');
-    });
-  });
-
-  function doSearch(searchString: string): void {
-    enterWith(vorgangSearch.getInput(), searchString);
-  }
-});
diff --git a/alfa-client/apps/admin-e2e/src/e2e/postfach/signatur.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/postfach/signatur.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3c18311da5cdc478ea2a70eb772111868708078e
--- /dev/null
+++ b/alfa-client/apps/admin-e2e/src/e2e/postfach/signatur.cy.ts
@@ -0,0 +1,48 @@
+import { getUserAriane } from 'apps/admin-e2e/src/support/user-util';
+import { PostfachE2EComponent } from '../../components/postfach/postfach.e2e.component';
+import { UserE2E } from '../../model/user';
+import { HeaderE2EComponent } from '../../page-objects/header.po';
+import { MainPage, waitForSpinnerToDisappear } from '../../page-objects/main.po';
+import { exist } from '../../support/cypress.util';
+
+describe('Signatur', () => {
+  //const app: App = getApp();
+  const user: UserE2E = getUserAriane();
+
+  const mainPage: MainPage = new MainPage();
+  const header: HeaderE2EComponent = mainPage.getHeader();
+  const postfachTab: PostfachE2EComponent = new PostfachE2EComponent();
+
+  const signaturText: string = 'Signatur';
+
+  before(() => {
+    //loginAsAriane();
+  });
+
+  it('login as Ariane', () => {
+    cy.visit('')
+      .get('#kc-login')
+      .should('exist')
+      .get('#username')
+      .type(user.name)
+      .get('#password')
+      .type(user.password)
+      .get('#kc-login')
+      .click();
+  });
+
+  it('should show Signatur input', () => {
+    waitForSpinnerToDisappear();
+
+    postfachTab.setSignatur(signaturText);
+    postfachTab.saveSignatur();
+
+    postfachTab.signatureContains(signaturText);
+  });
+
+  it('should logout', () => {
+    header.getCurrentUserProfile().logout();
+
+    exist(cy.get('#kc-login'));
+  });
+});
diff --git a/alfa-client/apps/admin-e2e/src/support/cypress.util.ts b/alfa-client/apps/admin-e2e/src/support/cypress.util.ts
index 081f34e8cb5b61c51a12c6861b133d671439177e..e6292d5ae941564deeb05ca3bd459c61761fa947 100644
--- a/alfa-client/apps/admin-e2e/src/support/cypress.util.ts
+++ b/alfa-client/apps/admin-e2e/src/support/cypress.util.ts
@@ -105,6 +105,10 @@ export function enterWith(
   element.type(CypressKeyboardActions.ENTER);
 }
 
+export function typeText(element: Cypress.Chainable<JQuery<HTMLElement>>, value: string): void {
+  element.clear().type(value);
+}
+
 export function backspaceOn(element: any): void {
   element.type(CypressKeyboardActions.BACKSPACE);
 }
diff --git a/alfa-client/package-lock.json b/alfa-client/package-lock.json
index 178722703f8963a3057633fb386ca9cd4e900f3e..a4407ce0e00d3e9f7a76516af245b149079cbbfe 100644
--- a/alfa-client/package-lock.json
+++ b/alfa-client/package-lock.json
@@ -53,7 +53,6 @@
         "@angular-eslint/eslint-plugin-template": "17.3.0",
         "@angular-eslint/template-parser": "17.3.0",
         "@angular/cli": "~17.3.8",
-        "@angular/compiler": "^17.3.10",
         "@angular/compiler-cli": "17.3.10",
         "@angular/language-service": "17.3.10",
         "@bahmutov/cypress-extends": "1.1.0",
@@ -89,6 +88,7 @@
         "autoprefixer": "^10.4.19",
         "cypress": "13.6.2",
         "cypress-file-upload": "5.0.8",
+        "cypress-keycloak": "^2.0.2",
         "cypress-mochawesome-reporter": "3.8",
         "cypress-real-events": "^1.12.0",
         "cypress-timestamps": "^1.2.3",
@@ -1398,6 +1398,7 @@
       "version": "17.3.10",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular/compiler/-/compiler-17.3.10.tgz",
       "integrity": "sha512-6Ce4siHyF0fCZBDm/cz+blJByGDu1/hbPkQVGmk5HGZTmCUeKkgyjoM6bZr7ssAsyGDRwxBh2SGHO4Ce31vuPA==",
+      "peer": true,
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -20197,6 +20198,26 @@
         "cypress": ">3.0.0"
       }
     },
+    "node_modules/cypress-keycloak": {
+      "version": "2.0.2",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cypress-keycloak/-/cypress-keycloak-2.0.2.tgz",
+      "integrity": "sha512-pHCjn68pai6y3MPuaM7c6UEidIfaXfl2+4WKhQ/8wgprQb7YlPcuBI1txBC477O2OFLx9ii1XlSXXq7fUP8ZAg==",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.5.1",
+        "js-sha256": "^0.9.0"
+      },
+      "peerDependencies": {
+        "cypress": "^6.5.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0"
+      }
+    },
+    "node_modules/cypress-keycloak/node_modules/js-sha256": {
+      "version": "0.9.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-sha256/-/js-sha256-0.9.0.tgz",
+      "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/cypress-mochawesome-reporter": {
       "version": "3.8.2",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cypress-mochawesome-reporter/-/cypress-mochawesome-reporter-3.8.2.tgz",
diff --git a/alfa-client/package.json b/alfa-client/package.json
index 83d3c5b04d4de6dee47a54b4d83d3ef45e871490..bb4bb197dcfae32595b70c19ee11b3221a5f85d5 100644
--- a/alfa-client/package.json
+++ b/alfa-client/package.json
@@ -130,6 +130,7 @@
     "autoprefixer": "^10.4.19",
     "cypress": "13.6.2",
     "cypress-file-upload": "5.0.8",
+    "cypress-keycloak": "^2.0.2",
     "cypress-mochawesome-reporter": "3.8",
     "cypress-real-events": "^1.12.0",
     "cypress-timestamps": "^1.2.3",
@@ -163,4 +164,4 @@
     "ts-node": "10.9.1",
     "typescript": "5.4.5"
   }
-}
\ No newline at end of file
+}