diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-historie.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-historie.cy.ts
index 0507e30112e6638ca225665737c64002a6ec99f0..e6a92b958deb0a0f2947b27bbb14283d2bee379d 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-historie.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-historie.cy.ts
@@ -111,6 +111,8 @@ describe('Bescheid History', () => {
         uploadFile(bescheidWizard.getUploadAttachmentButton(), TEST_FILE_BESCHEID_ANHANG_VALID);
         notExist(bescheidWizard.getAttachmentUploadSpinner());
         bescheidWizard.getWeiterButton().click();
+        waitForSpinnerToDisappear();
+
         bescheidWizard.getSaveButton().click();
         bescheidWizard.getConfirmAndSaveButton().click();
         waitForSpinnerToDisappear();
@@ -144,6 +146,8 @@ describe('Bescheid History', () => {
         uploadFile(bescheidWizard.getUploadBescheidButton(), TEST_FILE_BESCHEID_VALID);
         notExist(bescheidWizard.getBescheidUploadSpinner());
         bescheidWizard.getWeiterButton().click();
+        waitForSpinnerToDisappear();
+
         bescheidWizard.getSaveButton().click();
         bescheidWizard.getConfirmAndSaveButton().click();
         waitForSpinnerToDisappear();
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-info-anzeigen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-info-anzeigen.cy.ts
index 6e602187c7712d336ea0cc1532cab9cab587bd52..a6d7e8cc4795a1794745211f20c99a6f4a7e213e 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-info-anzeigen.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-info-anzeigen.cy.ts
@@ -28,36 +28,15 @@ import { VorgangBescheidWizardE2EComponent } from 'apps/alfa-e2e/src/components/
 import { VorgangBescheideE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-bescheide.e2e.component';
 import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
 import { VorgangSubnavigationE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-subnavigation';
-import {
-  VorgangE2E,
-  VorgangStatusE2E,
-  vorgangStatusLabelE2E,
-} from 'apps/alfa-e2e/src/model/vorgang';
-import {
-  TEST_FILE_BESCHEID_ANHANG_VALID,
-  TEST_FILE_BESCHEID_VALID,
-} from 'apps/alfa-e2e/src/support/data.util';
+import { VorgangE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from 'apps/alfa-e2e/src/model/vorgang';
+import { TEST_FILE_BESCHEID_ANHANG_VALID, TEST_FILE_BESCHEID_VALID } from 'apps/alfa-e2e/src/support/data.util';
 import { getAdjustedDateGerman } from 'apps/alfa-e2e/src/support/tech.util';
 import 'cypress-real-events/support';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
-import {
-  countDownloadFiles,
-  deleteDownloadFolder,
-  dropCollections,
-  readFileFromDownloads,
-} from '../../../support/cypress-helper';
-import {
-  contains,
-  enterWith,
-  exist,
-  haveLength,
-  haveText,
-  notBeVisible,
-  notExist,
-  visible,
-} from '../../../support/cypress.util';
+import { countDownloadFiles, deleteDownloadFolder, dropCollections, readFileFromDownloads, } from '../../../support/cypress-helper';
+import { contains, enterWith, exist, haveLength, haveText, notBeVisible, notExist, visible } from '../../../support/cypress.util';
 import { initUsermanagerUsers, loginAsSabine } from '../../../support/user-util';
 import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
 
@@ -79,11 +58,9 @@ describe('Bescheid Info anzeigen', () => {
     status: VorgangStatusE2E.IN_BEARBEITUNG,
   };
 
-  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent =
-    vorgangPage.getFormularButtons();
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
 
-  const vorgangSubnavigationButtons: VorgangSubnavigationE2EComponent =
-    vorgangPage.getSubnavigation();
+  const vorgangSubnavigationButtons: VorgangSubnavigationE2EComponent = vorgangPage.getSubnavigation();
 
   const bescheide: VorgangBescheideE2EComponent = vorgangPage.getBescheide();
 
@@ -129,10 +106,7 @@ describe('Bescheid Info anzeigen', () => {
     });
 
     it('should show status In Bearbeitung', () => {
-      haveText(
-        vorgangPage.getVorgangDetailHeader().getStatus(),
-        vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG],
-      );
+      haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG]);
     });
 
     it('should show Bescheid as Entwurf with abgelehnt status and date yesterday', () => {
@@ -149,6 +123,8 @@ describe('Bescheid Info anzeigen', () => {
   describe('should show complete info after saving Bescheid', () => {
     it('should set date to two days before and continue to step 2', () => {
       vorgangFormularButtons.getBescheidenButton().click();
+      waitForSpinnerToDisappear();
+
       enterWith(bescheidWizard.getDateInput(), getAdjustedDateGerman(-2));
       bescheidWizard.getWeiterButton().click();
       bescheidWizard.isBescheidDocumentsStep();
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-nur-speichern.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-nur-speichern.cy.ts
index d2e2df9695234a26ff907b7cdde54563df9ca977..e6c7a90ef2a6e1f91f94d7ef31b83235732aca8c 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-nur-speichern.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-nur-speichern.cy.ts
@@ -86,6 +86,8 @@ describe('Bescheid speichern', () => {
       uploadFile(bescheidWizard.getUploadAttachmentButton(), TEST_FILE_BESCHEID_ANHANG_VALID);
       notExist(bescheidWizard.getAttachmentUploadSpinner());
       bescheidWizard.getWeiterButton().click();
+      waitForSpinnerToDisappear();
+
       bescheidWizard.getSaveButton().click();
 
       contains(bescheidWizard.getStatusText(), abgelehntText + ' ' + getAdjustedDateGerman(-1));
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts
index 2125d0b8e171796f264901d4b22e40c269d0cc7d..86c5f0caee0f27416b51343699e465ec2eb4ef47 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts
@@ -415,41 +415,41 @@ describe('BescheidFormService', () => {
   });
 
   describe('patchValues', () => {
+    const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT;
     let bescheidResource: BescheidResource;
     let patch: jest.Mock;
 
     beforeEach(() => {
       bescheidResource = createBescheidResource();
       patch = service.patch = jest.fn();
+      service._evaluateSendBy = jest.fn().mockReturnValue(sendBy);
     });
 
     it('should patch', () => {
+      const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT;
       service.patchValues(bescheidResource);
 
       expect(patch).toHaveBeenCalledWith({
         [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm,
         [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt),
         [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: null,
-        [BescheidFormService.FIELD_SEND_BY]: String(bescheidResource.sendBy),
+        [BescheidFormService.FIELD_SEND_BY]: String(sendBy),
         [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject,
         [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText,
       });
     });
 
-    it('should patch sendBy to default', () => {
-      service.patchValues({
-        ...bescheidResource,
-        sendBy: undefined,
-      });
+    it('should set send by', () => {
+      const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT;
+      service.patchValues(bescheidResource);
 
-      expect(patch).toHaveBeenCalledWith({
-        [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm,
-        [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt),
-        [BescheidFormService.FIELD_SEND_BY]: BescheidSendBy.NACHRICHT,
-        [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: null,
-        [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject,
-        [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText,
-      });
+      expect(bescheidService.setSendBy).toHaveBeenCalledWith(sendBy);
+    });
+
+    it('should evaluate send by', () => {
+      service.patchValues(bescheidResource);
+
+      expect(service._evaluateSendBy).toHaveBeenCalledWith(bescheidResource);
     });
 
     it('should patch bescheid document uri', () => {
@@ -465,7 +465,7 @@ describe('BescheidFormService', () => {
       expect(patch).toHaveBeenCalledWith({
         [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm,
         [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt),
-        [BescheidFormService.FIELD_SEND_BY]: BescheidSendBy.NACHRICHT,
+        [BescheidFormService.FIELD_SEND_BY]: sendBy,
         [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri,
         [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject,
         [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText,
@@ -479,6 +479,44 @@ describe('BescheidFormService', () => {
     });
   });
 
+  describe('_evaluateSendBy', () => {
+    it('should return MANUAL on MANUAL', () => {
+      const sendBy: BescheidSendBy = service._evaluateSendBy({
+        ...createBescheidResource([BescheidLinkRel.BESCHEIDEN]),
+        sendBy: BescheidSendBy.MANUAL,
+      });
+
+      expect(sendBy).toEqual(BescheidSendBy.MANUAL);
+    });
+
+    it('should return MANUAL on NACHRICHT and missing link', () => {
+      const sendBy: BescheidSendBy = service._evaluateSendBy({
+        ...createBescheidResource([BescheidLinkRel.BESCHEIDEN]),
+        sendBy: BescheidSendBy.NACHRICHT,
+      });
+
+      expect(sendBy).toEqual(BescheidSendBy.MANUAL);
+    });
+
+    it('should return NACHRICHT', () => {
+      const sendBy: BescheidSendBy = service._evaluateSendBy({
+        ...createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]),
+        sendBy: BescheidSendBy.NACHRICHT,
+      });
+
+      expect(sendBy).toEqual(BescheidSendBy.NACHRICHT);
+    });
+
+    it('should return MANUAL', () => {
+      const sendBy: BescheidSendBy = service._evaluateSendBy({
+        ...createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]),
+        sendBy: BescheidSendBy.MANUAL,
+      });
+
+      expect(sendBy).toEqual(BescheidSendBy.MANUAL);
+    });
+  });
+
   describe('getBescheidFormValueChanges', () => {
     const bescheid: Bescheid = createBescheid();
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
index 4e650ff9f6660e2e987ee53979858474096cafe2..eb96bb9d90af5f6729a3f251ea01bc2e91c58eb7 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts
@@ -21,21 +21,14 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import {
-  Bescheid,
-  BescheidLinkRel,
-  BescheidResource,
-  BescheidSendBy,
-  BescheidWizardStep,
-  Wizard,
-} from '@alfa-client/bescheid-shared';
+import { Bescheid, BescheidLinkRel, BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard, } from '@alfa-client/bescheid-shared';
 import { CommandResource, switchMapCommandSuccessfullyDone } from '@alfa-client/command-shared';
 import { AbstractFormService, convertToBoolean, formatForDatabase, isNotNil, StateResource } from '@alfa-client/tech-shared';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
 import { FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { getUrl, hasLink, ResourceUri } from '@ngxp/rest';
-import { isNil, isUndefined } from 'lodash-es';
+import { isNil } from 'lodash-es';
 import { first, Observable, startWith, switchMap } from 'rxjs';
 import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service';
 
@@ -118,12 +111,13 @@ export class BescheidFormService extends AbstractFormService<CommandResource> {
   public patchValues(bescheidResource: BescheidResource): void {
     this.bescheidResource = bescheidResource;
     const bescheidDocumentUri: ResourceUri = this.getBescheidDocumentUri(bescheidResource);
+    const sendBy: BescheidSendBy = this._evaluateSendBy(bescheidResource);
+    this.bescheidService.setSendBy(sendBy);
     this.patch({
       [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm,
       [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt),
       [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri,
-      [BescheidFormService.FIELD_SEND_BY]:
-        isUndefined(bescheidResource.sendBy) ? BescheidSendBy.NACHRICHT : bescheidResource.sendBy,
+      [BescheidFormService.FIELD_SEND_BY]: sendBy,
       [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject,
       [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText,
     });
@@ -142,6 +136,16 @@ export class BescheidFormService extends AbstractFormService<CommandResource> {
     return null;
   }
 
+  _evaluateSendBy(bescheidResource: BescheidResource): BescheidSendBy {
+    if (
+      bescheidResource.sendBy === BescheidSendBy.NACHRICHT &&
+      hasLink(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN)
+    ) {
+      return BescheidSendBy.NACHRICHT;
+    }
+    return BescheidSendBy.MANUAL;
+  }
+
   public getBescheidFormValueChanges(): Observable<Bescheid> {
     return this.form.valueChanges.pipe(startWith(this.getBescheidFormValue()));
   }
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
index 87869c5c4e0aa1dff4a3050b95ed26abd476c0d6..5bf83514f4fdbe127b04b8db9caf828408cdfdc1 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts
@@ -82,12 +82,6 @@ describe('ResourceService', () => {
       isInvalidResourceCombinationSpy = jest.spyOn(ResourceUtil, 'isInvalidResourceCombination').mockReturnValue(true);
     });
 
-    it('should have debounce', () => {
-      service.get().subscribe();
-
-      expect(service.handleResourceChanges).not.toHaveBeenCalled();
-    });
-
     it('should handle config resource changed', fakeAsync(() => {
       service.get().subscribe();
       tick(50);
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts
index 1953e85ff4691dec3b95771a73f1bc1c7283efd1..b71624d87bffb0a0169167e60aba0c6be0fce2a1 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts
@@ -24,35 +24,14 @@
 import { HttpErrorResponse } from '@angular/common/http';
 import { getUrl, hasLink, Resource, ResourceUri } from '@ngxp/rest';
 import { isEqual, isNull } from 'lodash-es';
-import {
-  BehaviorSubject,
-  catchError,
-  combineLatest,
-  debounceTime,
-  filter,
-  first,
-  map,
-  Observable,
-  of,
-  startWith,
-  tap,
-  throwError,
-} from 'rxjs';
+import { BehaviorSubject, catchError, combineLatest, filter, first, map, Observable, of, startWith, tap, throwError } from 'rxjs';
 import { isUnprocessableEntity } from '../http.util';
 import { HttpError } from '../tech.model';
 import { isNotNull } from '../tech.util';
 import { ResourceServiceConfig } from './resource.model';
 import { ResourceRepository } from './resource.repository';
 import { mapToFirst, mapToResource } from './resource.rxjs.operator';
-import {
-  createEmptyStateResource,
-  createErrorStateResource,
-  createStateResource,
-  isInvalidResourceCombination,
-  isLoadingRequired,
-  isStateResoureStable,
-  StateResource,
-} from './resource.util';
+import { createEmptyStateResource, createErrorStateResource, createStateResource, isInvalidResourceCombination, isLoadingRequired, isStateResoureStable, StateResource, } from './resource.util';
 
 /**
  * B = Type of baseresource
@@ -70,7 +49,6 @@ export abstract class ResourceService<B extends Resource, T extends Resource> {
 
   public get(): Observable<StateResource<T>> {
     return combineLatest([this.stateResource.asObservable(), this.getConfigResource()]).pipe(
-      debounceTime(50),
       tap(([stateResource, configResource]) => this.handleResourceChanges(stateResource, configResource)),
       filter(([stateResource]) => !isInvalidResourceCombination(stateResource, this.configResource)),
       mapToFirst<T, B>(),