diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-zu-oe-hinzufuegen.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-zu-oe-hinzufuegen.cy.ts
index 3735e511e5eb33b45987bbf61fb4aa757d02025c..9095c63279a17ffe2cbada1f4de9f956593c0638 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-zu-oe-hinzufuegen.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-zu-oe-hinzufuegen.cy.ts
@@ -13,7 +13,7 @@ describe('Organisationseinheit zu Benutzer hinzufügen', () => {
   const zustaendigeStelleSearchComponent: ZustaendigeStelleDialogE2EComponent = new ZustaendigeStelleDialogE2EComponent();
   const organistationsEinheitOrdnungsamt: string = 'Ordnungsamt';
   const organisationsEinheitDenkmalpflege: string = 'Denkmalpflege';
-  const organisationsEinheitWentorf: string = 'grundschule wentorf';
+  const organisationsEinheitLiegenschaften: string = 'Liegenschaften';
   const organisationsEinheitNone: string = 'keine zuständige Stelle zugewiesen';
   const vorname: string = 'Theo';
   const nachname: string = 'Testuser';
@@ -91,7 +91,7 @@ describe('Organisationseinheit zu Benutzer hinzufügen', () => {
   it('should enable new Organisationseinheit for users after adding it', () => {
     mainPage.clickOrganisationsEinheitenNavigationItem();
     organisationsEinheitenComponent.clickHinzufuegen();
-    zustaendigeStelleSearchComponent.enterSearchTerm(organisationsEinheitWentorf);
+    zustaendigeStelleSearchComponent.enterSearchTerm(organisationsEinheitLiegenschaften);
     zustaendigeStelleSearchComponent.getZustaendigeStelleTitle(0).then((title: string) => {
       zustaendigeStelleSearchComponent.clickFoundItem(0);
     });
@@ -99,12 +99,12 @@ describe('Organisationseinheit zu Benutzer hinzufügen', () => {
     mainPage.clickBenutzerNavigationItem();
     benutzerPage.clickUserEntry(benutzername2);
 
-    exist(benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheitWentorf));
+    exist(benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheitLiegenschaften));
   });
 
   it('should add new Organisationseinheit to existing user', () => {
-    benutzerPage.clickOrganisationsEinheitCheckbox(organistationsEinheitOrdnungsamt);
+    benutzerPage.clickOrganisationsEinheitCheckbox(organisationsEinheitLiegenschaften);
     benutzerPage.saveUser();
-    benutzerPage.stringExistsInUserEntry(organisationsEinheitWentorf, benutzername2);
+    benutzerPage.stringExistsInUserEntry(organisationsEinheitLiegenschaften, benutzername2);
   });
 });
diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/organisationseinheiten/organisationseinheiten-laden.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/organisationseinheiten/organisationseinheiten-laden.cy.ts
index ed230c60ca0575070181bc4c680f2876b231f808..91a1673e96e41b8dbdae4e4338e864a0527f816e 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/organisationseinheiten/organisationseinheiten-laden.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/organisationseinheiten/organisationseinheiten-laden.cy.ts
@@ -48,7 +48,7 @@ describe.skip('TODO: activate after fix for OZG-7391: show Organisationsheiten',
 
   it('should show table of Organisationseinheiten', () => {
     waitForSpinnerToDisappear();
-    mainPage.openOrganisationsEinheiten();
+    mainPage.clickOrganisationsEinheitenNavigationItem();
 
     exist(organisationsEinheitenTab.getOrganisationsEinheitList());
   });
diff --git a/alfa-client/apps/alfa-e2e/src/components/ui/button-with-spinner.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/ui/button-with-spinner.e2e.component.ts
deleted file mode 100644
index 4ac9816e675cd64b552f97c41b05a685dd8307d1..0000000000000000000000000000000000000000
--- a/alfa-client/apps/alfa-e2e/src/components/ui/button-with-spinner.e2e.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-export class ButtonWithSpinnerE2EComponent {
-  private readonly locatorButton: string = 'icon-button';
-
-  public findButton(root) {
-    return root.findTestElementWithClass(this.locatorButton);
-  }
-
-  //TODO Methode aus der MeinPage verwenden
-  public waitToDisappear(root) {
-    root.should('not.have.descendants', '[data-test-class=spinner]');
-  }
-}
diff --git a/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlage-page.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlage-page.e2e.component.ts
index 4be7b6532108923566044183f5591b1a175ee2d8..e17043afdfaa7c7de564ec7b244ff85b1761985a 100644
--- a/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlage-page.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlage-page.e2e.component.ts
@@ -22,7 +22,6 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { AttachmentContainerE2EComponent } from '../attachment/attachment.e2e.component';
-import { ButtonWithSpinnerE2EComponent } from '../ui/button-with-spinner.e2e.component';
 
 export class WiedervorlageE2EComponent {
   private readonly locatorBetreffInput: string = 'Betreff-text-input';
@@ -33,10 +32,7 @@ export class WiedervorlageE2EComponent {
   private readonly locatorStatusDot: string = 'dot';
   private readonly locatorSpeichernButton: string = 'speichern-button';
 
-  private readonly buttonWithSpinnerComponent: ButtonWithSpinnerE2EComponent =
-    new ButtonWithSpinnerE2EComponent();
-  private readonly attachmentContainer: AttachmentContainerE2EComponent =
-    new AttachmentContainerE2EComponent();
+  private readonly attachmentContainer: AttachmentContainerE2EComponent = new AttachmentContainerE2EComponent();
 
   public getBetreff() {
     return cy.getTestElement(this.locatorBetreffInput);
@@ -63,9 +59,7 @@ export class WiedervorlageE2EComponent {
   }
 
   public getSpeichernButton() {
-    return this.buttonWithSpinnerComponent.findButton(
-      cy.getTestElement(this.locatorSpeichernButton),
-    );
+    return cy.getTestElement(this.locatorSpeichernButton);
   }
 
   public getAttachmentContainer(): AttachmentContainerE2EComponent {
diff --git a/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts
index 93801c671d44ca75f7473867689c7941d6efa611..91718623842de6e64bb8c0a863ba2146606d68c4 100644
--- a/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts
@@ -21,15 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ButtonWithSpinnerE2EComponent } from '../ui/button-with-spinner.e2e.component';
 import { WiedervorlageInVorgangE2EComponent } from './wiedervorlage-in-vorgang.e2e.component';
 
 export class WiedervorlagenInVorgangE2EComponent {
   private readonly locatorCreateWiedervorlageButton: string = 'create-wiedervorlage';
-
-  private readonly buttonWithSpinnerComponent: ButtonWithSpinnerE2EComponent =
-    new ButtonWithSpinnerE2EComponent();
-
   private readonly locatorRoot: string = 'wiedervorlagen-in-vorgang';
 
   public getRoot() {
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts
index 893f7d2d803a5ba3b368af963a296f6dc494620c..a7912650d925a0159a8ec3793d6cca2449715311 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts
@@ -39,6 +39,7 @@ import {
   initVorgaenge,
   objectIds,
 } from '../../../support/vorgang-util';
+import { VorgangSubnavigationE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-subnavigation';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
@@ -51,6 +52,7 @@ describe('Vorgang Detailansicht with formData', () => {
     vorgangPage.getFormularDatenContainer();
 
   const vorgangHeader: VorgangDetailHeaderE2EComponent = vorgangPage.getVorgangDetailHeader();
+  const vorgangSubnavigation: VorgangSubnavigationE2EComponent = new VorgangSubnavigationE2EComponent();
 
   const ort: string = 'Ort';
   const sh_strasse: string = 'Strasse';
@@ -135,33 +137,12 @@ describe('Vorgang Detailansicht with formData', () => {
         contains(vorgangDatenFormular.getRoot(), 'sh_strasse');
       });
     });
-
-    // SKIP: Metadaten sind aktuell aus
-    describe('click on "Metadaten" tab', () => {
-      it.skip('should show on click on tab', () => {
-        vorgangDatenFormular.getMetadatenTab().click();
-
-        exist(vorgangDatenFormular.getMetadaten());
-      });
-
-      it.skip('should show "emailadresse"', () => {
-        contains(vorgangDatenFormular.getRoot(), 'emailadresse');
-      });
-
-      it.skip('should show "postleitzahl"', () => {
-        contains(vorgangDatenFormular.getRoot(), 'postleitzahl');
-      });
-
-      it('should navigate back to Vorgang List', () => {
-        vorgangPage.getSubnavigation().getBackButton().click();
-        waitForSpinnerToDisappear();
-      });
-    });
   });
 
   describe('navigate to vorgang detail (with labels)', () => {
     describe('click on vorgang in list', () => {
       it('should show header', () => {
+        vorgangSubnavigation.back();
         vorgangList.getListItem(vorgangWithLabels.name).getRoot().click();
         waitForSpinnerToDisappear();
 
@@ -193,20 +174,5 @@ describe('Vorgang Detailansicht with formData', () => {
       });
     });
 
-    describe.skip('click on "Metadaten" tab', () => {
-      it('should show on click on tab', () => {
-        vorgangDatenFormular.getMetadatenTab().click();
-
-        exist(vorgangDatenFormular.getMetadaten());
-      });
-
-      it('should show "E-Mail Adresse"', () => {
-        contains(vorgangDatenFormular.getRoot(), emailadresse);
-      });
-
-      it('should show "PLZ"', () => {
-        contains(vorgangDatenFormular.getRoot(), postleitzahl);
-      });
-    });
   });
 });
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts
index 7fa1b271ad7f923a8757a96e1e73854837fe101c..435e7106eda6a88a896ac03e25fe1cc75f1132e7 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts
@@ -107,19 +107,6 @@ describe('Vorgang Detailansicht', () => {
       });
     });
 
-    // SKIP: Metada sind aktuell disabled
-    describe.skip('metadaten in tab', () => {
-      it('should show on click on tab', () => {
-        vorgangDatenFormular.getMetadatenTab().click();
-
-        exist(vorgangDatenFormular.getMetadaten());
-      });
-
-      it('should show "empfangendestelle"', () => {
-        contains(vorgangDatenFormular.getRoot(), vorgang.eingangs[0].formData.empfangendestelle.emailadresse);
-      });
-    });
-
     describe('antragdaten in tab', () => {
       it('should show on click on tab', () => {
         vorgangDatenFormular.getAntragdatenTab().click();
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts
index 2b9956e17ae93200b66f44edd95bca083813ea1f..ca02f561b4be2aa40d3a8dc9c65feeff9dfe6269 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-vorpruefen.cy.ts
@@ -115,40 +115,23 @@ describe.skip('Vorgang vorprüfen', () => {
       });
 
       it('should open "more menu"', () => {
-        //nur testweise
-        //kommentarContainer.getHinzufuegenButton().click();
-        //kommentarContainer.getTextInput().clear().type(kommentarText);
-        //kommentarContainer.getFormularSpeichernButton().click();
         waitForSpinnerToDisappear();
-        //
-
         vorgangMoreMenu.getButton().click();
 
         exist(vorgangMoreMenu.getRoot());
       });
 
-      it('should show Prüfung item', () => {
-        //exist(menuItem.getRoot());?
-      });
-
       it('should show "Vorgang vorpüfen" button', () => {
         exist(menuItem.getButton());
       });
 
-      it('should have a positive comment after Prüfung', () => {
+      it.skip('AKTUELL FEHLER: should have a positive comment after Prüfung', () => {
         menuItem.getButton().click();
-        //waitForSpinnerToDisappear();
-
         exist(kommentarContainer.getKommentar(kommentarText).getRoot());
-        //check for positive comment
       });
 
       it('should close menu after Prüfung', () => {
-        //am Ende entfernen
         vorgangMoreMenu.getButton().click();
-
-        //notExist(menuItem.getRoot());
-
         vorgangPage.getSubnavigation().getBackButton().click();
       });
     });
@@ -165,22 +148,10 @@ describe.skip('Vorgang vorprüfen', () => {
         exist(vorgangPage.getVorgangDetailHeader().getRoot());
       });
 
-      it('should have a negative comment after Prüfung', () => {
+      it.skip('AKTUELL FEHLER: should have a negative comment after Prüfung', () => {
         vorgangMoreMenu.getButton().click();
-
         menuItem.getButton().click();
-
-        //nur testweise
-        //kommentarContainer.getHinzufuegenButton().click();
-        //kommentarContainer.getTextInput().clear().type(kommentarText);
-        //kommentarContainer.getFormularSpeichernButton().click();
-        waitForSpinnerToDisappear();
-        //
-
-        waitForSpinnerToDisappear();
-
         exist(kommentarContainer.getKommentar(kommentarText).getRoot());
-        //check for negative comment
       });
 
       it('should close menu after Prüfung', () => {
@@ -190,20 +161,12 @@ describe.skip('Vorgang vorprüfen', () => {
       });
     });
 
-    describe('button not available on other Vorgänge', () => {
-      const menuItem: VorgangMoreMenuVorpruefenItemE2EComponent =
-        vorgangMoreMenu.getVorpruefenItem();
-
-      it('should open Vorgang-Detail-Page', () => {
+    describe('menu not available on other Vorgänge', () => {
+      it('should not show more menu on other Vorgänge', () => {
         vorgangList.getListItem(vorgangOhnePruefung.name).getRoot().click();
         waitForSpinnerToDisappear();
 
-        exist(vorgangPage.getVorgangDetailHeader().getRoot());
-      });
-
-      it('more menu should not contain Vorprüfen button', () => {
-        vorgangMoreMenu.getButton().click();
-        notExist(menuItem.getRoot());
+        notExist(vorgangMoreMenu.getRoot());
       });
     });
   });
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts
index c86efc5d90992c7d5eb14b126554bc3b1872cac1..246013c7b169d348bd6882b3cd20f1d211f1b6fa 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts
@@ -153,8 +153,9 @@ describe('Vorgang wiedereroeffnen', () => {
           contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET);
         });
 
-        it('should close snackbar on revoke', () => {
+        it('should click on snackbar revoke', () => {
           snackbar.getRevokeButton().click();
+          wait(500);
           waitForSpinnerToDisappear();
 
           notExist(snackbar.getMessage());
@@ -258,7 +259,7 @@ describe('Vorgang wiedereroeffnen', () => {
           contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET);
         });
 
-        it('should close snackbar on revoke', () => {
+        it('should click snackbar revoke', () => {
           snackbar.getRevokeButton().click();
           wait(500);
           waitForSpinnerToDisappear();
diff --git a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.spec.ts b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.spec.ts
index de1242c608e560f453c76ee160ddaf89dc3b9b0c..7643fbc6e08d29e0aadf7792f87d1f40348b709b 100644
--- a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.spec.ts
+++ b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.spec.ts
@@ -21,13 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { createCommandErrorStateResource, createCommandResource } from 'libs/command-shared/test/command';
+import { createCommandErrorStateResource } from 'libs/command-shared/test/command';
 import { createApiError } from 'libs/tech-shared/test/error';
+import { createDummyResource } from '../../../../tech-shared/test/resource';
 import { ButtonWithSpinnerComponent } from './button-with-spinner.component';
 
-import * as ResourceUtils from 'libs/tech-shared/src/lib/resource/resource.util';
-
 describe('ButtonWithSpinnerComponent', () => {
   let component: ButtonWithSpinnerComponent;
   let fixture: ComponentFixture<ButtonWithSpinnerComponent>;
@@ -46,39 +46,25 @@ describe('ButtonWithSpinnerComponent', () => {
     expect(component).toBeTruthy();
   });
 
-  describe('onInit', () => {
-    it('should call getStateResource', () => {
-      component.getStateResource = jest.fn();
+  describe('set stateResource', () => {
+    it('should set stateResource', () => {
+      const stateResource: StateResource<unknown> = createStateResource(createDummyResource());
 
-      component.ngOnInit();
+      component.stateResource = stateResource;
 
-      expect(component.getStateResource).toHaveBeenCalled();
+      expect(component._stateResource).toBe(stateResource);
     });
-  });
-
-  describe('getStateResource', () => {
-    it('should return stateResource', () => {
-      component.stateResource = ResourceUtils.createStateResource(createCommandResource());
-
-      component.getStateResource();
 
-      const valid: boolean = ResourceUtils.isValidStateResource(component.stateResource);
-      expect(valid).toBeTruthy();
-    });
-
-    it('should return empty stateResource', () => {
-      const spy = jest.spyOn(ResourceUtils, 'createEmptyStateResource');
+    it('should not set stateResource', () => {
       component.stateResource = null;
 
-      component.getStateResource();
-
-      expect(spy).toHaveBeenCalled();
+      expect(component._stateResource).not.toBe(null);
     });
   });
 
   describe('isLoading', () => {
     it('should return false', () => {
-      component.stateResource.loading = component.stateResource.reload = false;
+      component._stateResource.loading = component._stateResource.reload = false;
 
       const isLoading: boolean = component.isLoading;
 
@@ -86,8 +72,8 @@ describe('ButtonWithSpinnerComponent', () => {
     });
 
     it('should return true if stateResource is loading', () => {
-      component.stateResource.loading = true;
-      component.stateResource.reload = false;
+      component._stateResource.loading = true;
+      component._stateResource.reload = false;
 
       const isLoading: boolean = component.isLoading;
 
@@ -95,8 +81,8 @@ describe('ButtonWithSpinnerComponent', () => {
     });
 
     it('should return true if stateResource is reloading', () => {
-      component.stateResource.loading = false;
-      component.stateResource.reload = true;
+      component._stateResource.loading = false;
+      component._stateResource.reload = true;
 
       const isLoading: boolean = component.isLoading;
 
@@ -106,7 +92,7 @@ describe('ButtonWithSpinnerComponent', () => {
 
   describe('isError', () => {
     it('should return false if error is not set', () => {
-      component.stateResource.error = null;
+      component._stateResource.error = null;
 
       const isError: boolean = component.isError;
 
@@ -114,7 +100,7 @@ describe('ButtonWithSpinnerComponent', () => {
     });
 
     it('should return false if error is set and error is ApiError', () => {
-      component.stateResource.error = createApiError();
+      component._stateResource.error = createApiError();
 
       const isError: boolean = component.isError;
 
@@ -122,7 +108,7 @@ describe('ButtonWithSpinnerComponent', () => {
     });
 
     it('should return true if error is set and error is not ApiError', () => {
-      component.stateResource = createCommandErrorStateResource();
+      component._stateResource = createCommandErrorStateResource();
 
       const isError: boolean = component.isError;
 
diff --git a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts
index f76f1f907cecaa625c3e1c6dc950458e3f4aa640..a12b0a8ad74b49d34ec172ae36682d7d0ce01104 100644
--- a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts
+++ b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts
@@ -24,7 +24,7 @@
 import { CommandResource, hasCommandError } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource, isLoaded } from '@alfa-client/tech-shared';
 import { CommonModule } from '@angular/common';
-import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 import { ButtonComponent, ErrorMessageComponent, buttonVariants } from '@ods/system';
 import { VariantProps } from 'class-variance-authority';
 import { isNil } from 'lodash-es';
@@ -49,28 +49,24 @@ type ButtonVariants = VariantProps<typeof buttonVariants>;
       <ng-content icon select="[icon]" />
     </ods-button>`,
 })
-export class ButtonWithSpinnerComponent implements OnInit {
+export class ButtonWithSpinnerComponent {
+  @Input() set stateResource(value: StateResource<unknown>) {
+    if (!isNil(value)) this._stateResource = value;
+  }
   @Input() text: string = '';
   @Input() dataTestId: string = '';
-  @Input() stateResource: StateResource<unknown>;
   @Input() variant: ButtonVariants['variant'] = 'primary';
   @Input() size: ButtonVariants['size'] = 'medium';
 
   @Output() public clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();
 
-  ngOnInit(): void {
-    this.stateResource = this.getStateResource();
-  }
-
-  getStateResource(): StateResource<unknown> {
-    return isNil(this.stateResource) ? createEmptyStateResource() : this.stateResource;
-  }
+  _stateResource: StateResource<unknown> = createEmptyStateResource();
 
   get isLoading(): boolean {
-    return this.stateResource.loading || this.stateResource.reload;
+    return this._stateResource.loading || this._stateResource.reload;
   }
 
   get isError(): boolean {
-    return isLoaded(this.stateResource) && hasCommandError(<CommandResource>this.stateResource.resource);
+    return isLoaded(this._stateResource) && hasCommandError(<CommandResource>this._stateResource.resource);
   }
 }
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
index 322b8313078161b76335fcbb5936987686522411..df18f4361bbd25449d00c65d6ae30df918cc7617 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
@@ -26,20 +26,21 @@
 @if (showAsIconButton) {
   <ods-button-with-spinner
     [stateResource]="submitInProgress$ | async"
+    (clickEmitter)="submit()"
     tooltip="Wiedervorlage speichern"
     variant="ghost"
     size="fit"
-    (clickEmitter)="submit()"
+    dataTestId="speichern-icon-button"
   >
     <ods-save-icon icon class="fill-text" />
   </ods-button-with-spinner>
 } @else {
   <ods-button-with-spinner
-    data-test-id="speichern-button"
     [stateResource]="submitInProgress$ | async"
+    (clickEmitter)="submit()"
     text="Speichern"
     variant="outline"
-    (clickEmitter)="submit()"
+    dataTestId="speichern-button"
   >
     <ods-save-icon icon />
   </ods-button-with-spinner>