diff --git a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts
index 2f207e5573f8398234d5d01e201430a4c4e34303..18827db0127eebb847a3082817bc397fdc6394e0 100644
--- a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts
+++ b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts
@@ -23,16 +23,18 @@
  */
 import { OrganisationsEinheitContainerComponent } from '@admin-client/organisations-einheit';
 import { AdminOrganisationsEinheit, AdminOrganisationsEinheitService } from '@admin-client/organisations-einheit-shared';
-import { createStateResource, StateResource, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared';
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 import { existsAsHtmlElement, getMockComponent, Mock, mock } from '@alfa-client/test-utils';
-import { OzgcloudDialogService } from '@alfa-client/ui';
-import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
+import { OzgcloudDialogService, SpinnerComponent } from '@alfa-client/ui';
+import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
+import { OrganisationsEinheitResource, ZustaendigeStelleSharedModule } from '@alfa-client/zustaendige-stelle-shared';
 import { CommonModule } from '@angular/common';
 import { ViewContainerRef } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonComponent } from '@ods/system';
 import { createAdminOrganisationsEinheit } from 'libs/admin/organisations-einheit-shared/src/test/organisations-einheit';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
-import { MockComponent } from 'ng-mocks';
+import { MockComponent, MockModule } from 'ng-mocks';
 import { of } from 'rxjs';
 import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit';
 import { OrganisationsEinheitListComponent } from './organisations-einheit-list/organisations-einheit-list.component';
@@ -43,7 +45,8 @@ describe('OrganisationsEinheitContainerComponent', () => {
 
   let organisationsEinheitService: Mock<AdminOrganisationsEinheitService>;
   let dialogService: Mock<OzgcloudDialogService>;
-  let vieContainerRef: Mock<ViewContainerRef>;
+
+  const viewContainerRef = <any>{};
 
   const organisationsEinheit: AdminOrganisationsEinheit = createAdminOrganisationsEinheit();
   const organisationsEinheitListStateResource: StateResource<AdminOrganisationsEinheit[]> = createStateResource([
@@ -60,17 +63,24 @@ describe('OrganisationsEinheitContainerComponent', () => {
       refresh: jest.fn(),
     };
     dialogService = mock(OzgcloudDialogService);
-    vieContainerRef = mock(ViewContainerRef as any);
   });
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      declarations: [ToEmbeddedResourcesPipe],
-      imports: [CommonModule, OrganisationsEinheitContainerComponent, MockComponent(OrganisationsEinheitListComponent)],
+      declarations: [],
+      imports: [
+        OrganisationsEinheitContainerComponent,
+        MockModule(CommonModule),
+        MockModule(ZustaendigeStelleModule),
+        MockModule(ZustaendigeStelleSharedModule),
+        MockComponent(OrganisationsEinheitListComponent),
+        MockComponent(ButtonComponent),
+        MockComponent(SpinnerComponent),
+      ],
       providers: [
         { provide: AdminOrganisationsEinheitService, useValue: organisationsEinheitService },
         { provide: OzgcloudDialogService, useValue: dialogService },
-        { provide: ViewContainerRef, useValue: vieContainerRef },
+        { provide: ViewContainerRef, useValue: viewContainerRef },
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/bescheid-shared/src/index.ts b/alfa-client/libs/bescheid-shared/src/index.ts
index 51f69102aff5c73708f9145fed53b74a98f91ce2..70cd997a2a0210ff021641976bce17f01de5e25c 100644
--- a/alfa-client/libs/bescheid-shared/src/index.ts
+++ b/alfa-client/libs/bescheid-shared/src/index.ts
@@ -24,6 +24,5 @@
 export * from './lib/bescheid-shared.module';
 export * from './lib/bescheid.linkrel';
 export * from './lib/bescheid.model';
-export * from './lib/bescheid.service';
 export * from './lib/bescheid.util';
 export * from './lib/document.model';
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..43b427dd4e8975e8ac0d3d6211a2957c14b99671
--- /dev/null
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts
@@ -0,0 +1,25 @@
+import { ListResourceServiceConfig, ResourceListService, ResourceRepository } from '@alfa-client/tech-shared';
+import { VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { BescheidListLinkRel } from './bescheid.linkrel';
+import { BescheidListResource, BescheidResource } from './bescheid.model';
+
+export class BescheidListResourceService extends ResourceListService<
+  VorgangWithEingangResource,
+  BescheidListResource,
+  BescheidResource
+> {}
+
+export function createBescheidListResourceService(
+  repository: ResourceRepository<BescheidResource>,
+  vorgangService: VorgangService,
+): ResourceListService<VorgangWithEingangResource, BescheidListResource, BescheidResource> {
+  return new BescheidListResourceService(buildBescheidListServiceConfig(vorgangService), repository);
+}
+
+function buildBescheidListServiceConfig(vorgangService: VorgangService): ListResourceServiceConfig<VorgangWithEingangResource> {
+  return {
+    baseResource: vorgangService.getVorgangWithEingang(),
+    listLinkRel: VorgangWithEingangLinkRel.BESCHEIDE,
+    listResourceListLinkRel: BescheidListLinkRel.BESCHEID_LIST,
+  };
+}
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts
index ab266d7734797b1e6fdf8b845ba8793696893a8e..6e340eacbd02353e238af59665d9aecbd23f4a27 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts
@@ -11,7 +11,6 @@ export function createBescheidResourceService(
   commandService: CommandService,
   vorgangService: VorgangService,
 ): CommandResourceService<VorgangWithEingangResource, BescheidResource> {
-  console.info('Create Bescheid Resource Service');
   return new CommandResourceService(buildConfig(vorgangService), repository, commandService);
 }
 
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts
index ddb4bc98ad09c5415e2e3ca6c4853002c17c32d7..65d8056b020669b817bb8d714fdf6e42f52f06e7 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts
@@ -21,66 +21,38 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BinaryFileListResource, BinaryFileResource, BinaryFileService } from '@alfa-client/binary-file-shared';
-import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@alfa-client/command-shared';
+import { BinaryFileListLinkRel, BinaryFileListResource, BinaryFileResource, BinaryFileService, } from '@alfa-client/binary-file-shared';
+import { CommandOrder, CommandResource, CommandResourceService, CommandService, CreateCommandProps, getEffectedResourceUrl, } from '@alfa-client/command-shared';
 import { PostfachService } from '@alfa-client/postfach-shared';
-import {
-  ApiError,
-  EMPTY_STRING,
-  HttpError,
-  StateResource,
-  createEmptyStateResource,
-  createErrorStateResource,
-  createStateResource,
-} from '@alfa-client/tech-shared';
-import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
-import {
-  VorgangCommandService,
-  VorgangService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
-import { fakeAsync, tick } from '@angular/core/testing';
+import { createEmptyStateResource, createErrorStateResource, createStateResource, EMPTY_STRING, getEmbeddedResources, ResourceListService, StateResource, } from '@alfa-client/tech-shared';
+import { Mock, mock } from '@alfa-client/test-utils';
+import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { TestBed } from '@angular/core/testing';
 import { faker } from '@faker-js/faker';
-import { ResourceUri, getUrl } from '@ngxp/rest';
-import { cold } from 'jest-marbles';
+import { getUrl, LinkRel, ResourceUri } from '@ngxp/rest';
 import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
-import { createApiError } from 'libs/tech-shared/test/error';
+import { createProblemDetail } from 'libs/tech-shared/test/error';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
-import { Observable, of } from 'rxjs';
+import { EMPTY, Observable, of } from 'rxjs';
 import { createBinaryFileListResource, createBinaryFileResource } from '../../../binary-file-shared/test/binary-file';
-import {
-  createCommandErrorResource,
-  createCommandResource,
-  createCommandStateResource,
-  createCreateCommandProps,
-} from '../../../command-shared/test/command';
+import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command';
 import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository';
 import { createFile } from '../../../tech-shared/test/file';
 import { singleCold, singleColdCompleted } from '../../../tech-shared/test/marbles';
-import {
-  createBescheid,
-  createBescheidListResource,
-  createBescheidResource,
-  createBescheidStateResource,
-  createUploadFileInProgress,
-} from '../test/bescheid';
+import { createBescheid, createBescheidDocument, createBescheidListResource, createBescheidResource } from '../test/bescheid';
 import { createDocumentResource } from '../test/document';
 import { BescheidFacade } from './+state/bescheid.facade';
+import { BescheidResourceService } from './bescheid-resource-service';
 import { BescheidLinkRel } from './bescheid.linkrel';
-import {
-  Bescheid,
-  BescheidListResource,
-  BescheidResource,
-  BescheidStatus,
-  BescheidWizardStep,
-  UploadFileInProgress,
-} from './bescheid.model';
+import { Bescheid, BESCHEID_UPLOADED_ATTACHMENTS, BescheidDocument, BescheidListResource, BescheidResource, BescheidStatus, BescheidWizardStep, createEmptyBescheidDocument, createEmptyUploadInProgress, createInitialWizard, } from './bescheid.model';
 import { BescheidService } from './bescheid.service';
 import { DocumentLinkRel } from './document.linkrel';
 import { DocumentResource } from './document.model';
 
+import { expect } from '@jest/globals';
+import { cold } from 'jest-marbles';
 import * as DateUtil from '../../../tech-shared/src/lib/date.util';
+import { BescheidListResourceService } from './bescheid-list-resource-service';
 import * as BescheidUtil from './bescheid.util';
 
 describe('BescheidService', () => {
@@ -88,15 +60,19 @@ describe('BescheidService', () => {
 
   let facade: Mock<BescheidFacade>;
   let vorgangService: Mock<VorgangService>;
-  let resourceRepository: Mock<ResourceRepository<BescheidResource>>;
+  let resourceRepository: Mock<ResourceRepository>;
   let commandService: Mock<CommandService>;
   let vorgangCommandService: Mock<VorgangCommandService>;
   let binaryFileService: Mock<BinaryFileService>;
   let postfachService: Mock<PostfachService>;
+  let bescheidResourceService: Mock<BescheidResourceService>;
+  let bescheidListResourceService: Mock<BescheidListResourceService>;
 
-  const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> = createStateResource(
-    createVorgangWithEingangResource(),
-  );
+  const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
+  const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> =
+    createStateResource(vorgangWithEingangResource);
+  const bescheidResource: BescheidResource = createBescheidResource();
+  const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
 
   beforeEach(() => {
     facade = mock(BescheidFacade);
@@ -107,642 +83,450 @@ describe('BescheidService', () => {
     vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource));
     binaryFileService = mock(BinaryFileService);
     postfachService = mock(PostfachService);
+    bescheidResourceService = mock(CommandResourceService);
+    bescheidListResourceService = mock(ResourceListService);
+
+    TestBed.configureTestingModule({
+      providers: [
+        { provide: BescheidFacade, useValue: facade },
+        { provide: VorgangService, useValue: vorgangService },
+        { provide: ResourceRepository, useValue: resourceRepository },
+        { provide: CommandService, useValue: commandService },
+        { provide: VorgangCommandService, useValue: vorgangCommandService },
+        { provide: BinaryFileService, useValue: binaryFileService },
+        {
+          provide: PostfachService,
+          useValue: postfachService,
+        },
+        { provide: BescheidResourceService, useValue: bescheidResourceService },
+        { provide: BescheidListResourceService, useValue: bescheidListResourceService },
+        BescheidService,
+      ],
+    });
 
-    service = new BescheidService(
-      useFromMock(facade),
-      useFromMock(vorgangService),
-      useFromMock(commandService),
-      useFromMock(vorgangCommandService),
-      useFromMock(binaryFileService),
-      useFromMock(resourceRepository),
-      useFromMock(postfachService),
-    );
+    service = TestBed.inject(BescheidService);
   });
 
   it('should be created', () => {
     expect(service).toBeTruthy();
   });
 
-  describe('getActiveStep', () => {
-    it('should emit initial value', () => {
-      const activeStep$: Observable<number> = service.getActiveStep();
-
-      expect(activeStep$).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden));
-    });
-  });
-
-  describe('setActiveStep', () => {
-    it('should emit changed active step', () => {
-      service.setActiveStep(BescheidWizardStep.DokumenteHochladen);
-
-      expect(service.activeStep$).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen));
-    });
-  });
-
-  describe('get bescheid draft', () => {
-    const bescheidDraft: BescheidResource = createBescheidResource();
-    const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft);
-
-    it('should call resource service', () => {
-      service.bescheidResourceService.get = jest.fn();
-
-      service.getBescheidDraft();
-
-      expect(service.bescheidResourceService.get).toHaveBeenCalled();
-    });
-
-    it('should return value', () => {
-      service.bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource));
-
-      const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft();
-
-      expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource));
-    });
-  });
+  describe('init', () => {
+    it('should init state', () => {
+      service.setActiveStep(2);
 
-  describe('getBescheidCommand', () => {
-    it('should call facade', () => {
-      service.getBescheidCommand();
+      service.init();
 
-      expect(facade.getBescheidCommand).toHaveBeenCalled();
+      expect(service.getWizard()).toBeObservable(singleCold(createInitialWizard()));
+      expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden));
+      expect(service.getBescheidCreated()).toBeObservable(singleCold(false));
+      expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument()));
     });
   });
 
-  describe('createBescheid', () => {
-    const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
-    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(command);
-
+  describe('exit', () => {
     beforeEach(() => {
-      facade.getBescheidCommand.mockReturnValue(of(commandStateResource));
-      service.bescheidResourceService.loadByResourceUri = jest.fn();
+      service._clearUploadedFiles = jest.fn();
     });
 
-    it('should call facade', () => {
-      service.createBescheid(vorgangWithEingang).subscribe();
+    it('should reload postfach list', () => {
+      service.exit();
 
-      expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, {
-        order: CommandOrder.CREATE_BESCHEID,
-        body: null,
-      });
+      expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled();
     });
 
-    it('should set resource by uri', () => {
-      service.createBescheid(vorgangWithEingang).subscribe();
+    it('should clear uploaded files', () => {
+      service.exit();
 
-      expect(service.bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith(
-        getUrl(command, CommandLinkRel.EFFECTED_RESOURCE),
-      );
+      expect(service._clearUploadedFiles).toHaveBeenCalled();
     });
   });
 
-  describe('bescheidErstellungUeberspringen', () => {
-    describe('Bescheid Draft exists', () => {
-      const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-
-      const bescheidResource: BescheidResource = createBescheidResource();
-      const bescheidStateResource: StateResource<BescheidResource> = createStateResource(bescheidResource);
-
-      const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
-
-      beforeEach(() => {
-        service.existsBescheidDraft = jest.fn().mockReturnValue(true);
-        service.getBescheidDraft = jest.fn().mockReturnValue(of(bescheidStateResource));
-        service.bescheidLoeschenUndErstellungUeberspringen = jest.fn().mockReturnValue(of(commandStateResource));
-      });
-
-      it('should get bescheid draft', (done) => {
-        const command$: Observable<StateResource<CommandResource>> =
-          service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
-
-        command$.subscribe(() => {
-          expect(service.getBescheidDraft).toHaveBeenCalled();
-          done();
-        });
-      });
-
-      it('should Bescheid löschen und Erstellung überspringen', (done) => {
-        const command$: Observable<StateResource<CommandResource>> =
-          service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
-
-        command$.subscribe(() => {
-          expect(service.bescheidLoeschenUndErstellungUeberspringen).toHaveBeenCalledWith(
-            vorgangWithEingangResource,
-            bescheidResource,
-          );
-          done();
-        });
-      });
-
-      it('should return command', () => {
-        const command$: Observable<StateResource<CommandResource>> =
-          service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
-
-        expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource }));
-      });
+  describe('skipBescheidCreation', () => {
+    beforeEach(() => {
+      service.deleteBescheidAndCompleteVorgang = jest.fn().mockReturnValue(of(commandStateResource));
     });
 
-    describe('Bescheid Draft not exists', () => {
-      const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-      const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
-
-      beforeEach(() => {
-        service.existsBescheidDraft = jest.fn().mockReturnValue(false);
-        service.vorgangAbschliesen = jest.fn().mockReturnValue(of(commandStateResource));
-      });
-
-      it('should call vorgang abschliessen', (done) => {
-        const command$: Observable<StateResource<CommandResource>> =
-          service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
+    it('should complete vorgang', () => {
+      service.skipBescheidCreation(vorgangWithEingangResource, null);
 
-        command$.subscribe(() => {
-          expect(service.vorgangAbschliesen).toHaveBeenCalledWith(vorgangWithEingangResource);
-          done();
-        });
-      });
-
-      it('should return command', () => {
-        const command$: Observable<StateResource<CommandResource>> =
-          service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
-
-        expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource }));
-      });
+      expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource);
     });
-  });
 
-  describe('getBescheidDraftIfExists', () => {
-    let vorgangStateResource: StateResource<VorgangWithEingangResource>;
-    let bescheidStateResource: StateResource<BescheidResource>;
+    it('should NOT complete vorgang', () => {
+      service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource);
 
-    beforeEach(() => {
-      vorgangStateResource = createStateResource(createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEID_DRAFT]));
-      bescheidStateResource = createBescheidStateResource();
-      vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangStateResource));
-      service.getBescheidDraft = jest.fn().mockReturnValue(of(bescheidStateResource));
+      expect(vorgangCommandService.abschliessen).not.toHaveBeenCalled();
     });
 
-    it('should get vorgang with eingang', () => {
-      service.getBescheidDraftIfExists();
+    it('should delete bescheid and complete vorgang', () => {
+      service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource).subscribe();
 
-      expect(vorgangService.getVorgangWithEingang).toHaveBeenCalled();
+      expect(service.deleteBescheidAndCompleteVorgang).toHaveBeenCalledWith(vorgangWithEingangResource);
     });
 
-    it('should emit state resources', () => {
-      const bescheid$: Observable<StateResource<BescheidResource>> = service.getBescheidDraftIfExists();
+    it('should return command', () => {
+      const command$: Observable<StateResource<CommandResource>> = service.skipBescheidCreation(
+        vorgangWithEingangResource,
+        bescheidResource,
+      );
 
-      expect(bescheid$).toBeObservable(cold('(ab|)', { a: createEmptyStateResource(), b: bescheidStateResource }));
+      expect(command$).toBeObservable(singleColdCompleted(commandStateResource));
     });
   });
 
-  describe('bescheidLoeschenUndErstellungUeberspringen', () => {
-    const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-    const bescheidResource: BescheidResource = createBescheidResource();
-    const vorgangAbschliessenCommandStateResource: StateResource<CommandResource> = createCommandStateResource();
-
+  describe('deleteBescheidAndCompleteVorgang', () => {
     beforeEach(() => {
-      service.vorgangAbschliesen = jest.fn().mockReturnValue(of(vorgangAbschliessenCommandStateResource));
       service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource));
+      vorgangCommandService.abschliessen.mockReturnValue(EMPTY);
     });
 
-    it('should Bescheiderstellung überspringen', (done) => {
-      const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen(
-        vorgangWithEingangResource,
-        bescheidResource,
-      );
+    it('should complete vorgang', () => {
+      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
 
-      command$.subscribe(() => {
-        expect(service.vorgangAbschliesen).toHaveBeenCalledWith(vorgangWithEingangResource);
-        done();
-      });
+      expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource);
     });
 
-    it('should Bescheid löschen', (done) => {
-      service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])));
+    it('should delete bescheid', () => {
+      vorgangCommandService.abschliessen.mockReturnValue(of(createSuccessfullyDoneCommandStateResource()));
 
-      const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen(
-        vorgangWithEingangResource,
-        bescheidResource,
-      );
+      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
 
-      command$.subscribe(() => {
-        expect(service.deleteBescheid).toHaveBeenCalledWith(bescheidResource);
-        done();
-      });
+      expect(service.deleteBescheid).toHaveBeenCalled();
     });
 
-    it('should not Bescheid löschen', (done) => {
-      service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource()));
+    it('should NOT delete bescheid on loading', () => {
+      vorgangCommandService.abschliessen.mockReturnValue(of(createEmptyStateResource(true)));
 
-      const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen(
-        vorgangWithEingangResource,
-        bescheidResource,
-      );
+      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
 
-      command$.subscribe(() => {
-        expect(service.deleteBescheid).not.toHaveBeenCalledWith(bescheidResource);
-        done();
-      });
+      expect(service.deleteBescheid).not.toHaveBeenCalled();
     });
 
-    it('should emit vorgang abschliessen command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen(
-        vorgangWithEingangResource,
-        bescheidResource,
-      );
-
-      expect(command$).toBeObservable(cold('(a|)', { a: vorgangAbschliessenCommandStateResource }));
-    });
-  });
+    it('should NOT delete bescheid on error', () => {
+      vorgangCommandService.abschliessen.mockReturnValue(of(createErrorStateResource(createProblemDetail())));
 
-  describe('vorgang abschliessen', () => {
-    const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-    const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
+      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
 
-    beforeEach(() => {
-      vorgangCommandService.abschliessen.mockReturnValue(of(commandStateResource));
+      expect(service.deleteBescheid).not.toHaveBeenCalled();
     });
 
-    it('should call vorgang command service', (done) => {
-      const command$: Observable<StateResource<CommandResource>> = service.vorgangAbschliesen(vorgangWithEingangResource);
+    it('should return vorgang abschliessen command', () => {
+      const command: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
+      vorgangCommandService.abschliessen.mockReturnValue(of(command));
 
-      command$.subscribe(() => {
-        expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource);
-        done();
-      });
-    });
-
-    it('should return command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.vorgangAbschliesen(vorgangWithEingangResource);
+      const command$: Observable<StateResource<CommandResource>> =
+        service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource);
 
-      expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource }));
+      expect(command$).toBeObservable(singleColdCompleted(command));
     });
   });
 
   describe('delete bescheid', () => {
-    const bescheidResource: BescheidResource = createBescheidResource();
-
     it('should create command', () => {
-      service.deleteBescheid(bescheidResource);
+      service.deleteBescheid();
 
-      const expectedProps: CreateCommandProps = {
-        resource: bescheidResource,
-        linkRel: BescheidLinkRel.DELETE,
-        command: {
-          order: CommandOrder.DELETE_BESCHEID,
-          body: null,
-        },
-        snackBarMessage: EMPTY_STRING,
-      };
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(expectedProps);
+      expect(bescheidResourceService.delete).toHaveBeenCalled();
     });
 
     it('should return command', () => {
-      const commandStateResource: StateResource<CommandResource> = createEmptyStateResource();
-      commandService.createCommandByProps.mockReturnValue(commandStateResource);
+      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
+      bescheidResourceService.delete.mockReturnValue(of(commandStateResource));
 
-      const createdCommand: Observable<StateResource<CommandResource>> = service.deleteBescheid(bescheidResource);
+      const createdCommand$: Observable<StateResource<CommandResource>> = service.deleteBescheid();
 
-      expect(createdCommand).toEqual(commandStateResource);
+      expect(createdCommand$).toBeObservable(singleColdCompleted(commandStateResource));
     });
   });
 
-  describe('update bescheid', () => {
-    const bescheid: Bescheid = createBescheid();
-    const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
-    let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance;
-
+  describe('loadFiles', () => {
     beforeEach(() => {
-      buildUpdateBescheidCommandPropsSpy = jest
-        .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps')
-        .mockReturnValue(createCommandProps);
-      commandService.createCommandByProps.mockReturnValue(of(commandStateResource));
-      service.bescheidResourceService.loadByResourceUri = jest.fn();
-      service.getResource = jest.fn().mockReturnValue(createBescheidResource());
-    });
-
-    it('should build update bescheid command props', () => {
-      service.updateBescheid(bescheid);
-
-      expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(service.getResource(), bescheid);
+      service.loadBescheidDocument = jest.fn();
+      service.loadAttachments = jest.fn();
     });
 
-    it('should create command', () => {
-      service.updateBescheid(bescheid);
+    it('should bescheid document', () => {
+      service.loadFiles(bescheidResource);
 
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
+      expect(service.loadBescheidDocument).toHaveBeenCalledWith(bescheidResource);
     });
 
-    it('should return command', () => {
-      const updateBescheid$: Observable<StateResource<CommandResource>> = service.updateBescheid(bescheid);
-
-      expect(updateBescheid$).toBeObservable(cold('(a|)', { a: commandStateResource }));
-    });
+    it('should load attachments', () => {
+      service.loadFiles(bescheidResource);
 
-    it('should set resource by uri', (done) => {
-      service.updateBescheid(bescheid).subscribe((commandStateResource: StateResource<CommandResource>) => {
-        expect(service.bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith(
-          getUrl(commandStateResource.resource, CommandLinkRel.EFFECTED_RESOURCE),
-        );
-        done();
-      });
+      expect(service.loadAttachments).toHaveBeenCalledWith(bescheidResource);
     });
+  });
 
-    it('should clear create bescheid document in progress', (done) => {
-      service.createBescheidDocumentInProgress$.next(createCommandStateResource());
-
-      service.updateBescheid(bescheid).subscribe(() => {
-        expect(service.createBescheidDocumentInProgress$.value).toEqual(createEmptyStateResource());
-        done();
-      });
+  describe('create bescheid document', () => {
+    beforeEach(() => {
+      service.doCreateBescheidDocument = jest.fn().mockReturnValue(EMPTY);
+      service.handleCreateBescheidDocumentResponse = jest.fn();
     });
 
-    it('should clear upload bescheid document in progress', (done) => {
-      service.uploadBescheidDocumentInProgress$.next(createUploadFileInProgress());
+    it('should emit bescheid document', () => {
+      service.createBescheidDocument(bescheidResource);
 
-      service.updateBescheid(bescheid).subscribe(() => {
-        expect(service.uploadBescheidDocumentInProgress$.value).toEqual({ loading: false });
-        done();
-      });
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }),
+      );
     });
 
-    it('should clear attachment upload', (done) => {
-      service.uploadedAttachment$.next(createStateResource(createBinaryFileResource()));
+    it('should do create bescheid document', () => {
+      service.createBescheidDocument(bescheidResource);
 
-      service.updateBescheid(bescheid).subscribe(() => {
-        expect(service.uploadedAttachment$.value).toEqual(createEmptyStateResource());
-        done();
-      });
+      expect(service.doCreateBescheidDocument).toHaveBeenCalledWith(bescheidResource);
     });
-  });
 
-  describe('send bescheid', () => {
-    const bescheidResource: BescheidResource = createBescheidResource();
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
-    const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
-    const linkRel: string = 'link_rel';
+    it('should handle create response on loaded', () => {
+      service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandStateResource));
 
-    let buildSendBescheidCommandPropsSpy: jest.SpyInstance;
+      service.createBescheidDocument(bescheidResource);
 
-    beforeEach(() => {
-      service.bescheidResourceService.get = jest.fn().mockReturnValue(of(createStateResource(bescheidResource)));
-      buildSendBescheidCommandPropsSpy = jest
-        .spyOn(BescheidUtil, 'buildSendBescheidCommandProps')
-        .mockReturnValue(createCommandProps);
-      commandService.createCommandByProps.mockReturnValue(of(commandStateResource));
+      expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandStateResource);
     });
 
-    it('should get resource', () => {
-      service.sendBescheid(bescheidResource, linkRel);
-
-      expect(service.bescheidResourceService.get).toHaveBeenCalled();
-    });
+    it('should handle create response on error', () => {
+      const commandError: StateResource<CommandResource> = createCommandErrorStateResource();
+      service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandError));
 
-    it('should call command service', (done) => {
-      service.sendBescheid(bescheidResource, linkRel).subscribe(() => {
-        expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
-        done();
-      });
-    });
+      service.createBescheidDocument(bescheidResource);
 
-    it('should build send bescheid command props', (done) => {
-      service.sendBescheid(bescheidResource, linkRel).subscribe(() => {
-        expect(buildSendBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, linkRel);
-        done();
-      });
+      expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandError);
     });
+  });
 
-    it('should return command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.sendBescheid(bescheidResource, linkRel);
+  describe('doCreateBescheidDocument', () => {
+    it('should create command by props', () => {
+      service.doCreateBescheidDocument(bescheidResource);
 
-      expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource }));
+      expect(commandService.createCommandByProps).toHaveBeenCalledWith({
+        resource: bescheidResource,
+        linkRel: BescheidLinkRel.CREATE_DOCUMENT,
+        command: {
+          order: CommandOrder.CREATE_BESCHEID_DOCUMENT,
+          body: null,
+        },
+        snackBarMessage: EMPTY_STRING,
+      });
     });
   });
 
-  describe('sendBescheidManually', () => {
-    const bescheidResource: BescheidResource = createBescheidResource();
-    const sendBescheidCommand: StateResource<CommandResource> = createCommandStateResource();
+  describe('handleCreateBescheidDocumentResponse', () => {
+    const commandStateResource: StateResource<CommandResource> = createStateResource(
+      createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
+    );
 
     beforeEach(() => {
-      service.sendBescheid = jest.fn().mockReturnValue(of(sendBescheidCommand));
+      service.loadBescheidDocumentByUri = jest.fn();
+      service.emitBescheidDocumentError = jest.fn();
     });
 
-    it('should call sendBescheid', () => {
-      service.sendBescheidManually(bescheidResource);
+    it('should emit error', () => {
+      const commandErrorStateResource: StateResource<CommandResource> = createCommandErrorStateResource();
 
-      expect(service.sendBescheid).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.BESCHEIDEN);
-    });
-
-    it('should return command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.sendBescheidManually(bescheidResource);
+      service.handleCreateBescheidDocumentResponse(commandErrorStateResource);
 
-      expect(command$).toBeObservable(singleColdCompleted(sendBescheidCommand));
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({ ...createEmptyBescheidDocument(), create: commandErrorStateResource } as BescheidDocument),
+      );
     });
-  });
 
-  describe('sendBescheidToAntragsteller', () => {
-    const bescheidResource: BescheidResource = createBescheidResource();
-    const sendBescheidCommand: StateResource<CommandResource> = createCommandStateResource();
+    it('should emit bescheid document state', () => {
+      service.handleCreateBescheidDocumentResponse(commandStateResource);
 
-    beforeEach(() => {
-      service.sendBescheid = jest.fn().mockReturnValue(of(sendBescheidCommand));
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({
+          ...createEmptyBescheidDocument(),
+          documentUri: getEffectedResourceUrl(commandStateResource.resource),
+        }),
+      );
     });
 
-    it('should call sendBescheid', () => {
-      service.sendBescheidToAntragsteller(bescheidResource);
+    it('should load document by uri', () => {
+      service.handleCreateBescheidDocumentResponse(commandStateResource);
 
-      expect(service.sendBescheid).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
+      expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getEffectedResourceUrl(commandStateResource.resource));
     });
+  });
 
-    it('should return command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.sendBescheidToAntragsteller(bescheidResource);
+  describe('emitBescheidDocumentError', () => {
+    it('should emit', () => {
+      const commandError: StateResource<CommandResource> = createCommandErrorStateResource();
 
-      expect(command$).toBeObservable(singleColdCompleted(sendBescheidCommand));
+      service.emitBescheidDocumentError(commandError);
+
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({
+          ...createEmptyBescheidDocument(),
+          upload: { ...createEmptyUploadInProgress(), loading: false, error: commandError.error },
+        }),
+      );
     });
   });
 
-  describe('do update bescheid', () => {
-    const bescheid: Bescheid = createBescheid();
-    const bescheidResource: BescheidResource = createBescheidResource();
-
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
-    let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance;
-
+  describe('loadBescheidDocument', () => {
     beforeEach(() => {
-      buildUpdateBescheidCommandPropsSpy = jest
-        .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps')
-        .mockReturnValue(createCommandProps);
-      commandService.createCommandByProps.mockClear();
-      commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource()));
+      service.loadBescheidDocumentByUri = jest.fn();
     });
 
-    it('should build update bescheid command props', () => {
-      service.doUpdateBescheid(bescheidResource, bescheid);
+    it('should load by uri', () => {
+      const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.BESCHEID_DOCUMENT]);
 
-      expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid);
+      service.loadBescheidDocument(bescheidResource);
+
+      expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT));
     });
 
-    it('should call command service', () => {
-      service.doUpdateBescheid(bescheidResource, bescheid).subscribe();
+    it('should NOT load by uri', () => {
+      service.loadBescheidDocument(bescheidResource);
 
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
+      expect(service.loadBescheidDocumentByUri).not.toHaveBeenCalled();
     });
   });
 
-  describe('getAttachments', () => {
-    let bescheidResource: BescheidResource;
-    let binaryFileListResource: BinaryFileListResource;
-    let binaryFileResource: BinaryFileResource;
+  describe('loadBescheidDocumentByUri', () => {
+    const resourceUri: ResourceUri = faker.internet.url();
 
     beforeEach(() => {
-      bescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]);
-      service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource)));
+      resourceRepository.getResource.mockReturnValue(EMPTY);
+      service.loadBescheidDocumentFile = jest.fn();
+    });
 
-      binaryFileResource = createBinaryFileResource();
+    it('should get resource', () => {
+      service.loadBescheidDocumentByUri(resourceUri);
 
-      binaryFileListResource = createBinaryFileListResource([binaryFileResource]);
-      binaryFileService.getFiles.mockReturnValue(of(createStateResource(binaryFileListResource)));
+      expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri);
     });
 
-    it('should get files', (done) => {
-      service.getAttachments().subscribe(() => {
-        expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.ATTACHMENTS);
-        done();
-      });
-    });
+    it('should load bescheid document file', () => {
+      const documentResource: DocumentResource = createDocumentResource();
+      resourceRepository.getResource.mockReturnValue(of(documentResource));
 
-    it('should return embedded resources', () => {
-      const attachments$: Observable<BinaryFileResource[]> = service.getAttachments();
+      service.loadBescheidDocumentByUri(resourceUri);
 
-      expect(attachments$).toBeObservable(singleColdCompleted([binaryFileResource]));
+      expect(service.loadBescheidDocumentFile).toHaveBeenCalledWith(documentResource);
     });
   });
 
-  describe('get document uri', () => {
-    const documentUri: ResourceUri = faker.internet.url();
+  describe('load bescheid document file', () => {
+    const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]);
+    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
 
     beforeEach(() => {
-      service.bescheidDocumentUri$.next(documentUri);
+      binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource));
     });
 
-    it('should return value', (done) => {
-      service.getDocumentUri().subscribe((uri) => {
-        expect(uri).toBe(documentUri);
-        done();
-      });
+    it('should call binary file service', () => {
+      service.loadBescheidDocumentFile(document);
+
+      expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE));
     });
-  });
 
-  describe('get bescheid document file', () => {
-    it('should return value', (done) => {
-      const binaryFile: BinaryFileResource = createBinaryFileResource();
-      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile);
-      service.bescheidDocumentFile$.next(binaryFileStateResource);
+    it('should emit bescheid document state', () => {
+      service.loadBescheidDocumentFile(document);
 
-      service.getBescheidDocumentFile().subscribe((result: StateResource<BinaryFileResource>) => {
-        expect(result).toBe(binaryFileStateResource);
-        done();
-      });
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({
+          upload: createEmptyUploadInProgress(),
+          create: createEmptyStateResource(),
+          resource: binaryFileStateResource.resource,
+          documentUri: getUrl(document, LinkRel.Self),
+        }),
+      );
     });
   });
 
-  describe('upload bescheid document', () => {
-    const bescheid: BescheidResource = createBescheidResource();
-    const file: File = createFile();
+  describe('loadAttachments', () => {
+    const bescheidResourceWithAttachments: BescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]);
 
     beforeEach(() => {
-      service.doUploadBescheidDocument = jest.fn();
+      binaryFileService.getFiles.mockReturnValue(EMPTY);
     });
 
-    it('should call init upload bescheid document in progress', () => {
-      service.uploadBescheidDocument(bescheid, file);
+    it('should call binary file service', () => {
+      service.loadAttachments(bescheidResourceWithAttachments);
 
-      expect(service.uploadBescheidDocumentInProgress$.value).toEqual({
-        loading: true,
-        fileName: file.name,
-      });
+      expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResourceWithAttachments, BescheidLinkRel.ATTACHMENTS);
     });
 
-    it('should clear create bescheid document', () => {
-      service.createBescheidDocumentInProgress$.next(createCommandStateResource());
-      service.uploadBescheidDocument(bescheid, file);
+    it('should NOT call binary file service', () => {
+      service.loadAttachments(bescheidResource);
 
-      expect(service.createBescheidDocumentInProgress$.value).toEqual(createEmptyStateResource());
+      expect(binaryFileService.getFiles).not.toHaveBeenCalled();
     });
 
-    it('should call do upload bescheid document', () => {
-      service.uploadBescheidDocument(bescheid, file);
+    it('should add files', () => {
+      const binaryFileListStateResource: StateResource<BinaryFileListResource> =
+        createStateResource(createBinaryFileListResource());
+      binaryFileService.getFiles.mockReturnValue(of(binaryFileListStateResource));
 
-      expect(service.doUploadBescheidDocument).toHaveBeenCalledWith(bescheid, file);
-    });
+      service.loadAttachments(bescheidResourceWithAttachments);
 
-    it('should return bescheid document file', (done) => {
-      service.uploadBescheidDocument(bescheid, file).subscribe((uploadFileInProgress: UploadFileInProgress) => {
-        expect(uploadFileInProgress.fileName).toBe(file.name);
-        expect(uploadFileInProgress.loading).toBeTruthy();
-        done();
-      });
+      expect(binaryFileService.addFiles).toHaveBeenCalledWith(
+        BESCHEID_UPLOADED_ATTACHMENTS,
+        getEmbeddedResources(binaryFileListStateResource, BinaryFileListLinkRel.FILE_LIST),
+      );
     });
   });
 
-  describe('do upload bescheid document', () => {
-    const bescheid: BescheidResource = createBescheidResource();
-    const file: File = createFile();
-
-    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
+  describe('upload bescheid document', () => {
+    const documentFile: File = createFile();
 
     beforeEach(() => {
-      binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource));
+      binaryFileService.uploadFile.mockReturnValue(EMPTY);
+      service.handleUploadBescheidDocumentResponse = jest.fn();
+    });
+
+    it('should emit bescheid document state', () => {
+      service.uploadBescheidDocument(documentFile, bescheidResource);
+
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({ ...createEmptyBescheidDocument(), upload: { fileName: documentFile.name, loading: true } }),
+      );
     });
 
     it('should call binary file service', () => {
-      service.doUploadBescheidDocument(bescheid, file);
+      service.uploadBescheidDocument(documentFile, bescheidResource);
 
-      expect(binaryFileService.uploadFile).toHaveBeenCalledWith(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, file, false);
+      expect(binaryFileService.uploadFile).toHaveBeenCalledWith(
+        bescheidResource,
+        BescheidLinkRel.UPLOAD_BESCHEID_FILE,
+        documentFile,
+        false,
+      );
     });
 
-    it('should call handle upload becheid document response', () => {
-      service.handleUploadBescheidDocumentResponse = jest.fn();
+    it('should handle upload response', () => {
+      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
+      binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource));
 
-      service.doUploadBescheidDocument(bescheid, file);
+      service.uploadBescheidDocument(documentFile, bescheidResource);
 
-      expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheid, binaryFileStateResource);
+      expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource);
     });
   });
 
-  describe('handle upload bescheid document response', () => {
-    const bescheid: BescheidResource = createBescheidResource();
-
-    const binaryFile: BinaryFileResource = createBinaryFileResource();
-    const apiError: ApiError = createApiError();
-    const binaryFileErrorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(apiError);
-    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile);
-
-    it('should call create bescheid document from file on success', () => {
+  describe('handleUploadBescheidDocumentResponse', () => {
+    beforeEach(() => {
+      service.emitBescheidDocumentError = jest.fn();
       service.createBescheidDocumentFromFile = jest.fn();
-
-      service.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource);
-
-      expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheid, binaryFile);
     });
 
-    describe('on no error', () => {
-      it('should set error', () => {
-        service.uploadBescheidDocumentInProgress$.next({ loading: false });
+    it('should emit error', () => {
+      const errorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createProblemDetail());
 
-        service.handleUploadBescheidDocumentResponse(bescheid, binaryFileErrorStateResource);
+      service.handleUploadBescheidDocumentResponse(bescheidResource, errorStateResource);
 
-        expect(service.uploadBescheidDocumentInProgress$.value.error).toBe(apiError);
-      });
+      expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource);
+    });
 
-      it('should set loading to false', () => {
-        service.uploadBescheidDocumentInProgress$.next({ loading: true });
+    it('should create bescheid document from file', () => {
+      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
 
-        service.handleUploadBescheidDocumentResponse(bescheid, binaryFileErrorStateResource);
+      service.handleUploadBescheidDocumentResponse(bescheidResource, binaryFileStateResource);
 
-        expect(service.uploadBescheidDocumentInProgress$.value.loading).toBeFalsy();
-      });
+      expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource.resource);
     });
   });
 
@@ -783,374 +567,342 @@ describe('BescheidService', () => {
     });
   });
 
-  describe('handle create bescheid document response from file', () => {
-    const binaryFile: BinaryFileResource = createBinaryFileResource();
-    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(command);
+  describe('handleCreateBescheidDocumentFromFileResponse', () => {
+    const commandStateResource: StateResource<CommandResource> = createStateResource(
+      createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
+    );
 
     beforeEach(() => {
-      service.bescheidDocumentFile$.next(createEmptyStateResource());
+      service.emitBescheidDocumentError = jest.fn();
     });
 
-    it('should set upload bescheid document in progress done', () => {
-      service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile);
+    it('should emit error', () => {
+      const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail());
 
-      expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile));
+      service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource());
+
+      expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource);
     });
 
-    describe('on error', () => {
-      it('should set upload bescheid in progress error', () => {
-        const httpError: HttpError = createApiError();
-        const errorStateResource: StateResource<CommandResource> = createErrorStateResource(httpError);
+    it('should NOT emit error', () => {
+      const binaryFileResource: BinaryFileResource = createBinaryFileResource();
 
-        service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, binaryFile);
+      service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource);
 
-        expect(service.uploadBescheidDocumentInProgress$.value.error).toBe(httpError);
-      });
+      expect(service.emitBescheidDocumentError).not.toHaveBeenCalled();
+    });
 
-      it('should set upload bescheid in progress loading false', () => {
-        const httpError: HttpError = createApiError();
-        const errorStateResource: StateResource<CommandResource> = createErrorStateResource(httpError);
+    it('should emit bescheid document state', () => {
+      const binaryFileResource: BinaryFileResource = createBinaryFileResource();
 
-        service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, binaryFile);
+      service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource);
 
-        expect(service.uploadBescheidDocumentInProgress$.value.loading).toBeFalsy();
-      });
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({
+          ...createEmptyBescheidDocument(),
+          documentUri: getEffectedResourceUrl(commandStateResource.resource),
+          upload: createEmptyUploadInProgress(),
+          resource: binaryFileResource,
+        }),
+      );
     });
 
-    describe('on success', () => {
-      it('should set documentFile', () => {
-        service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile);
+    it('should NOT emit bescheid document state', () => {
+      const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail());
 
-        expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile));
-      });
-
-      it('should set document uri', () => {
-        service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile);
+      service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource());
 
-        expect(service.bescheidDocumentUri$.value).toEqual(getUrl(command, CommandLinkRel.EFFECTED_RESOURCE));
-      });
+      expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument()));
     });
   });
 
-  describe('delete bescheid document', () => {
-    it('should clear document uri', () => {
-      service.bescheidDocumentUri$.next(faker.internet.url());
-
-      service.deleteBescheidDocument();
+  describe('createBescheid', () => {
+    const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
+    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
+    const commandStateResource: StateResource<CommandResource> = createStateResource(command);
 
-      expect(service.bescheidDocumentUri$.value).toBeNull();
+    beforeEach(() => {
+      service.updateBescheidDraft = jest.fn();
     });
 
-    it('should clear document file', () => {
-      service.bescheidDocumentFile$.next(createStateResource(createBinaryFileResource()));
+    beforeEach(() => {
+      facade.getBescheidCommand.mockReturnValue(of(commandStateResource));
+      (service as any).bescheidResourceService.loadByResourceUri = jest.fn();
+    });
 
-      service.deleteBescheidDocument();
+    it('should call facade', () => {
+      service.createBescheid(vorgangWithEingang).subscribe();
 
-      expect(service.bescheidDocumentFile$.value).toEqual(createEmptyStateResource());
+      expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, {
+        order: CommandOrder.CREATE_BESCHEID,
+        body: null,
+      });
     });
 
-    it('should clear document', () => {
-      service.bescheidDocument$.next(createStateResource(createDocumentResource()));
-
-      service.deleteBescheidDocument();
+    it('should update bescheid draft', () => {
+      service.createBescheid(vorgangWithEingang).subscribe();
 
-      expect(service.bescheidDocument$.value).toEqual(createEmptyStateResource());
+      expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandStateResource.resource);
     });
   });
 
-  describe('init', () => {
-    it('should emit null bescheid document uri', () => {
-      service.init();
+  describe('updateBescheidDraft', () => {
+    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
 
-      expect(service.getDocumentUri()).toBeObservable(singleCold(null));
+    beforeEach(() => {
+      (service as any).bescheidResourceService.loadByResourceUri = jest.fn();
     });
 
-    it('should emit empty state resource document file', () => {
-      service.init();
+    it('should load resource by uri', () => {
+      service.updateBescheidDraft(command);
 
-      expect(service.getBescheidDocumentFile()).toBeObservable(singleCold(createEmptyStateResource()));
+      expect((service as any).bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith(
+        getUrl(command, CommandLinkRel.EFFECTED_RESOURCE),
+      );
     });
 
-    it('should emit empty state resource uploaded attachment', () => {
-      service.init();
+    it('should emit bescheid created', () => {
+      service.updateBescheidDraft({ ...command, order: CommandOrder.CREATE_BESCHEID });
 
-      expect(service.getUploadedAttachment()).toBeObservable(singleCold(createEmptyStateResource()));
+      expect(service.getBescheidCreated()).toBeObservable(singleCold(true));
     });
+  });
 
-    it('should emit empty upload in progress for upload bescheid document in progress', () => {
-      service.init();
+  describe('updateBescheid', () => {
+    const bescheid: Bescheid = createBescheid();
+    const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
+    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
 
-      expect(service.getUploadBescheidDocumentInProgress()).toBeObservable(singleCold({ loading: false }));
+    beforeEach(() => {
+      service.doUpdateBescheid = jest.fn().mockReturnValue(EMPTY);
+      service.updateBescheidDraft = jest.fn().mockReturnValue(EMPTY);
     });
 
-    it('should emit empty upload in progress for upload attachmentdocument in progress', () => {
-      service.init();
+    it('should do update bescheid', () => {
+      service.updateBescheid(bescheidResource, bescheid);
 
-      expect(service.getUploadAttachmentInProgress()).toBeObservable(singleCold({ loading: false }));
+      expect(service.doUpdateBescheid).toHaveBeenCalledWith(bescheidResource, bescheid);
     });
 
-    it('should init active step', () => {
-      service.setActiveStep(2);
+    it('should update bescheid draft', () => {
+      service.doUpdateBescheid = jest.fn().mockReturnValue(of(commandStateResource));
 
-      service.init();
+      service.updateBescheid(bescheidResource, bescheid).subscribe();
 
-      expect(service.activeStep$).toBeObservable(singleCold(1));
+      expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandResource);
     });
   });
 
-  describe('create bescheid document', () => {
-    const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
-
+  describe('do update bescheid', () => {
+    const bescheid: Bescheid = createBescheid();
     const bescheidResource: BescheidResource = createBescheidResource();
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
 
-    let buildCreateBescheidDocumentCommandPropsSpy: jest.SpyInstance;
+    const createCommandProps: CreateCommandProps = createCreateCommandProps();
+    let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance;
 
     beforeEach(() => {
-      commandService.createCommandByProps.mockReturnValue(of(commandStateResource));
-      service.getResource = jest.fn().mockReturnValue(bescheidResource);
-      buildCreateBescheidDocumentCommandPropsSpy = jest
-        .spyOn(BescheidUtil, 'buildCreateBescheidDocumentCommandProps')
+      buildUpdateBescheidCommandPropsSpy = jest
+        .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps')
         .mockReturnValue(createCommandProps);
+      commandService.createCommandByProps.mockClear();
+      commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource()));
     });
 
-    it('should call command service', () => {
-      service.createBescheidDocument();
+    it('should build update bescheid command props', () => {
+      service.doUpdateBescheid(bescheidResource, bescheid);
 
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
+      expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid);
     });
 
-    it('should build create command props', () => {
-      service.createBescheidDocument();
+    it('should call command service', () => {
+      service.doUpdateBescheid(bescheidResource, bescheid).subscribe();
 
-      expect(buildCreateBescheidDocumentCommandPropsSpy).toHaveBeenCalledWith(bescheidResource);
+      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
     });
+  });
 
-    it('should set create beschied document in progress', () => {
-      service.createBescheidDocument();
-
-      expect(service.createBescheidDocumentInProgress$.value).toEqual(commandStateResource);
+  describe('sendBescheidManually', () => {
+    beforeEach(() => {
+      service.sendBescheid = jest.fn().mockReturnValue(EMPTY);
     });
 
-    it('should set upload beschied document in progress loading false', () => {
-      service.uploadBescheidDocumentInProgress$.next({
-        loading: true,
-        error: createApiError(),
-        fileName: 'Dummy',
-      });
-
-      service.createBescheidDocument();
+    it('should send bescheid', () => {
+      service.sendBescheidManually().subscribe();
 
-      expect(service.uploadBescheidDocumentInProgress$.value).toEqual({ loading: false });
+      expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN);
     });
 
-    describe('on successfully done command', () => {
-      it('should load bescheid document', fakeAsync(() => {
-        service.loadBescheidDocumentByUri = jest.fn();
-
-        service.createBescheidDocument();
-        tick();
+    it('should return send bescheid command', () => {
+      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
+      service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource));
 
-        expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(commandResource, CommandLinkRel.EFFECTED_RESOURCE));
-      }));
+      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidManually();
 
-      it('should update bescheid document Url', fakeAsync(() => {
-        service.loadBescheidDocumentByUri = jest.fn();
-
-        service.createBescheidDocument();
-        tick();
+      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
+    });
+  });
 
-        expect(service.bescheidDocumentUri$.value).toBe(getUrl(commandResource, CommandLinkRel.EFFECTED_RESOURCE));
-      }));
+  describe('sendBescheid', () => {
+    beforeEach(() => {
+      service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource)));
+      commandService.createCommandByProps.mockReturnValue(EMPTY);
     });
 
-    describe('on error', () => {
-      const commandErrorStateResource: StateResource<CommandResource> = createStateResource(createCommandErrorResource());
+    it('should get bescheid draft', () => {
+      service.sendBescheidManually().subscribe();
 
-      it('should emit command state resource', () => {
-        commandService.createCommandByProps.mockReturnValue(of(commandErrorStateResource));
+      expect(service.getBescheidDraft).toHaveBeenCalled();
+    });
 
-        service.createBescheidDocument();
+    it('should create command', () => {
+      service.sendBescheid(BescheidLinkRel.BESCHEIDEN).subscribe();
 
-        expect(service.createBescheidDocumentInProgress$.value).toBe(commandErrorStateResource);
-      });
+      expect(commandService.createCommandByProps).toHaveBeenCalledWith({
+        resource: bescheidResource,
+        linkRel: BescheidLinkRel.BESCHEIDEN,
+        command: {
+          order: CommandOrder.SEND_BESCHEID,
+          body: null,
+        },
+        snackBarMessage: EMPTY_STRING,
+      } as CreateCommandProps);
+    });
 
-      it('should set create bescheid document in progress loading false', () => {
-        service.createBescheidDocumentInProgress$.next(createEmptyStateResource(true));
-        commandService.createCommandByProps.mockReturnValue(of(commandErrorStateResource));
+    it('should return send bescheid command', () => {
+      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
+      commandService.createCommandByProps = jest.fn().mockReturnValue(of(commandStateResource));
 
-        service.createBescheidDocument();
+      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheid(
+        BescheidLinkRel.BESCHEIDEN,
+      );
 
-        expect(service.createBescheidDocumentInProgress$.value.loading).toBeFalsy();
-      });
+      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
     });
   });
 
-  describe('exists bescheid document file', () => {
-    it('should return true if resource exists', (done) => {
-      service.bescheidDocumentFile$.next(createStateResource(createBinaryFileResource()));
-
-      service.existBescheidDocumentFile().subscribe((result) => {
-        expect(result).toBeTruthy();
-        done();
-      });
+  describe('sendBescheidMessage', () => {
+    beforeEach(() => {
+      service.getBescheidDraft = jest.fn().mockReturnValue(createStateResource(bescheidResource));
+      service.sendBescheid = jest.fn().mockReturnValue(EMPTY);
     });
 
-    it('should return false if resource is null', (done) => {
-      service.bescheidDocumentFile$.next(createEmptyStateResource());
+    it('should send bescheid', () => {
+      service.sendBescheidMessage().subscribe();
 
-      service.existBescheidDocumentFile().subscribe((result) => {
-        expect(result).toBeFalsy();
-        done();
-      });
+      expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
     });
-  });
 
-  describe('get bescheid document command', () => {
-    const commandResource: CommandResource = createCommandResource();
-    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
+    it('should return send bescheid command', () => {
+      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
+      service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource));
 
-    beforeEach(() => {
-      commandService.getCommandByOrder.mockReturnValue(of(commandStateResource));
-    });
-
-    it('should call command service', (done) => {
-      service.getBescheidDocumentCommand().subscribe(() => {
-        expect(commandService.getCommandByOrder).toHaveBeenCalledWith(CommandOrder.CREATE_BESCHEID_DOCUMENT);
-        done();
-      });
-    });
+      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidMessage();
 
-    it('should return command stateResource', (done) => {
-      service.getBescheidDocumentCommand().subscribe((result) => {
-        expect(result).toBe(commandStateResource);
-        done();
-      });
+      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
     });
   });
 
-  describe('exists bescheid draft', () => {
+  describe('setActiveStep', () => {
     beforeEach(() => {
-      service.bescheidResourceService.existResource = jest.fn().mockReturnValue(of(true));
+      service._clearUploadedFiles = jest.fn();
     });
 
-    it('should call bescheid resource service', () => {
-      service.existsBescheidDraft();
-
-      expect(service.bescheidResourceService.existResource).toHaveBeenCalled();
-    });
-
-    it('should return false on missing resource', () => {
-      service.bescheidResourceService.existResource = jest.fn().mockReturnValue(of(false));
-
-      const exists: boolean = service.existsBescheidDraft();
+    it('should emit changed active step', () => {
+      service.setActiveStep(BescheidWizardStep.DokumenteHochladen);
 
-      expect(exists).toBeFalsy();
+      expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen));
     });
 
-    it('should return true on existing resource', () => {
-      const exists: boolean = service.existsBescheidDraft();
+    it('should clear uploaded files', () => {
+      service.setActiveStep(BescheidWizardStep.DokumenteHochladen);
 
-      expect(exists).toBeTruthy();
+      expect(service._clearUploadedFiles).toHaveBeenCalled();
     });
   });
 
-  describe('bescheidVerwerfen', () => {
-    const command: CommandResource = createCommandResource();
-    const commandStateResource: StateResource<CommandResource> = createStateResource(command);
-
-    beforeEach(() => {
-      service.deleteBescheid = jest.fn().mockReturnValue(of(commandStateResource));
-      service.deleteBescheidDocument = jest.fn();
-
-      service.getResource = jest.fn().mockReturnValue(createBescheidResource());
-    });
+  describe('getBescheidDraft', () => {
+    const bescheidDraft: BescheidResource = createBescheidResource();
+    const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft);
 
-    it('should get resource', () => {
-      service.bescheidVerwerfen().subscribe();
+    it('should call resource service', () => {
+      bescheidResourceService.get = jest.fn();
 
-      expect(service.getResource).toHaveBeenCalled();
-    });
+      service.getBescheidDraft();
 
-    it('should delete bescheid', (done) => {
-      service.bescheidVerwerfen().subscribe(() => {
-        expect(service.deleteBescheid).toHaveBeenCalled();
-        done();
-      });
+      expect(bescheidResourceService.get).toHaveBeenCalled();
     });
 
-    it('should return command', () => {
-      const command: StateResource<CommandResource> = createCommandStateResource();
-      service.deleteBescheid = jest.fn().mockReturnValue(singleCold(command));
+    it('should return value', () => {
+      bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource));
 
-      const command$: Observable<StateResource<CommandResource>> = service.bescheidVerwerfen();
+      const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft();
 
-      expect(command$).toBeObservable(singleCold(command));
+      expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource));
     });
+  });
 
-    it('should delete bescheid document', (done) => {
-      service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource()));
-
-      service.bescheidVerwerfen().subscribe(() => {
-        done();
-        expect(service.deleteBescheidDocument).toHaveBeenCalled();
-      });
-    });
+  describe('setNachrichtEmpfaenger', () => {
+    it('should change wizard state', () => {
+      const empfaenger: string = faker.person.fullName();
 
-    it('should reload vorgang', (done) => {
-      service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource()));
+      service.setNachrichtEmpfaenger(empfaenger);
 
-      service.bescheidVerwerfen().subscribe(() => {
-        done();
-        expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled();
-      });
+      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), empfaenger }));
     });
   });
 
-  describe('load bescheid document file', () => {
-    const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]);
-    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
+  describe('lockBescheidSending', () => {
+    it('should change wizard state', () => {
+      service.lockBescheidSending();
 
-    beforeEach(() => {
-      binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource));
+      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: false }));
     });
+  });
 
-    it('should call bianry file service', () => {
-      service.loadBescheidDocumentFile(document);
+  describe('unlockBescheidSending', () => {
+    it('should change wizard state', () => {
+      service.unlockBescheidSending();
 
-      expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE));
+      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: true }));
     });
+  });
 
-    it('should set bescheidDocument file', () => {
-      service.loadBescheidDocumentFile(document);
+  describe('finishAddingBescheidDocument', () => {
+    it('should update state', () => {
+      const bescheidDocument: BescheidDocument = createBescheidDocument();
+      service._bescheidDocument$.next(bescheidDocument);
 
-      expect(service.bescheidDocumentFile$.value).toBe(binaryFileStateResource);
-    });
+      service.finishAddingBescheidDocument();
 
-    it('should set create bescheid document in progress loading false', () => {
-      service.createBescheidDocumentInProgress$.next(createEmptyStateResource(true));
+      expect(service.getBescheidDocument()).toBeObservable(
+        singleCold({
+          ...bescheidDocument,
+          create: createEmptyStateResource(),
+          upload: createEmptyUploadInProgress(),
+        } as BescheidDocument),
+      );
+    });
+  });
 
-      service.loadBescheidDocumentFile(document);
+  describe('clear uploaded files', () => {
+    it('should call binary files service', () => {
+      service._clearUploadedFiles();
 
-      expect(service.createBescheidDocumentInProgress$.value.loading).toBeFalsy();
+      expect(binaryFileService.clearUploadedFiles).toHaveBeenCalledWith(BESCHEID_UPLOADED_ATTACHMENTS);
     });
   });
 
   describe('get bescheid list', () => {
     it('should call bescheid list resource service', () => {
-      service.bescheidListResourceService.getList = jest.fn();
-
       service.getBescheidList();
 
-      expect(service.bescheidListResourceService.getList).toHaveBeenCalled();
+      expect(bescheidListResourceService.getList).toHaveBeenCalled();
     });
 
     it('should return value', () => {
       const bescheidList: BescheidListResource = createBescheidListResource();
       const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource(bescheidList);
-      service.bescheidListResourceService.getList = jest.fn().mockReturnValue(singleCold(bescheidListStateResource));
+      bescheidListResourceService.getList = jest.fn().mockReturnValue(singleCold(bescheidListStateResource));
 
       const command$: Observable<StateResource<BescheidListResource>> = service.getBescheidList();
 
@@ -1158,7 +910,7 @@ describe('BescheidService', () => {
     });
   });
 
-  describe('load bescheid document', () => {
+  describe('get bescheid document by uri', () => {
     const resourceUri: ResourceUri = faker.internet.url();
     const document: DocumentResource = createDocumentResource();
 
@@ -1167,13 +919,13 @@ describe('BescheidService', () => {
     });
 
     it('should call repository', () => {
-      service.loadBescheidDocument(resourceUri);
+      service.getBescheidDocumentByUri(resourceUri);
 
       expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri);
     });
 
     it('should return value', () => {
-      const documentStateResource$: Observable<StateResource<DocumentResource>> = service.loadBescheidDocument(resourceUri);
+      const documentStateResource$: Observable<StateResource<DocumentResource>> = service.getBescheidDocumentByUri(resourceUri);
 
       expect(documentStateResource$).toBeObservable(
         cold('(ab|)', { a: createEmptyStateResource(true), b: createStateResource(document) }),
@@ -1181,44 +933,6 @@ describe('BescheidService', () => {
     });
   });
 
-  describe('get resource', () => {
-    const bescheidResource: BescheidResource = createBescheidResource();
-    const bescheidStateResource: StateResource<BescheidResource> = createStateResource(bescheidResource);
-
-    it('should call bescheid resource service select resource', () => {
-      service.bescheidResourceService.selectResource = jest.fn().mockReturnValue(of(bescheidStateResource));
-
-      service.getResource();
-
-      expect(service.bescheidResourceService.selectResource).toHaveBeenCalled();
-    });
-
-    it('should return value', () => {
-      service.bescheidResourceService.selectResource = jest.fn().mockReturnValue(of(bescheidStateResource));
-
-      const bescheidDraft: BescheidResource = service.getResource();
-
-      expect(bescheidDraft).toBe(bescheidResource);
-    });
-  });
-
-  describe('getEmpfaenger', () => {
-    it('should return Empfänger', () => {
-      const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-      const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> =
-        createStateResource(vorgangWithEingangResource);
-      vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource));
-
-      const empfaenger$: Observable<string> = service.getEmpfaenger();
-
-      expect(empfaenger$).toBeObservable(
-        singleColdCompleted(
-          `${vorgangWithEingangResource.eingang.antragsteller.vorname} ${vorgangWithEingangResource.eingang.antragsteller.nachname}`,
-        ),
-      );
-    });
-  });
-
   describe('get last bescheid', () => {
     const bescheid: BescheidResource = createBescheidResource();
     const bescheide: BescheidResource[] = [bescheid];
@@ -1229,7 +943,7 @@ describe('BescheidService', () => {
     beforeEach(() => {
       service.filterBySentStatus = jest.fn().mockReturnValue(bescheide);
       sortByGermanDateStrSpy = jest.spyOn(DateUtil, 'sortByGermanDateStr').mockReturnValue(bescheide);
-      getItemsSpy = service.bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide));
+      getItemsSpy = bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide));
     });
 
     it('should get items', () => {
@@ -1257,47 +971,6 @@ describe('BescheidService', () => {
     });
   });
 
-  describe('exist bescheid', () => {
-    const bescheid: BescheidResource = createBescheidResource();
-    const bescheide: BescheidResource[] = [bescheid];
-    const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource(
-      createBescheidListResource(bescheide),
-    );
-    let getItemsSpy: jest.SpyInstance;
-
-    beforeEach(() => {
-      service.getBescheidList = jest.fn().mockReturnValue(of(bescheidListStateResource));
-      service.filterBySentStatus = jest.fn().mockReturnValue(bescheide);
-      getItemsSpy = service.bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide));
-    });
-
-    it('should get items', () => {
-      service.existBescheid().subscribe();
-
-      expect(getItemsSpy).toHaveBeenCalled();
-    });
-
-    it('should filter by sent status', () => {
-      service.existBescheid().subscribe();
-
-      expect(service.filterBySentStatus).toHaveBeenCalledWith(bescheide);
-    });
-
-    it('should return true if at least one bescheid exists', () => {
-      const existBescheid$: Observable<boolean> = service.existBescheid();
-
-      expect(existBescheid$).toBeObservable(singleColdCompleted(true));
-    });
-
-    it('should return false if no bescheide exists', () => {
-      service.filterBySentStatus = jest.fn().mockReturnValue([]);
-
-      const existBescheid$: Observable<boolean> = service.existBescheid();
-
-      expect(existBescheid$).toBeObservable(singleColdCompleted(false));
-    });
-  });
-
   describe('filter by sent status', () => {
     it('should keep entry with sent status', () => {
       const bescheidWithSentStatus: BescheidResource = {
@@ -1328,130 +1001,44 @@ describe('BescheidService', () => {
     });
   });
 
-  describe('refresh list', () => {
-    it('should call refresh on list resource service', () => {
-      service.bescheidListResourceService.refresh = jest.fn();
-
-      service.refreshList();
-
-      expect(service.bescheidListResourceService.refresh).toHaveBeenCalled();
-    });
-  });
-
-  describe('uploadAttachment', () => {
-    const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.UPLOAD_ATTACHMENT]);
-    const file: File = createFile();
-    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
+  describe('exist bescheid', () => {
+    const bescheid: BescheidResource = createBescheidResource();
+    const bescheide: BescheidResource[] = [bescheid];
+    const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource(
+      createBescheidListResource(bescheide),
+    );
+    let getItemsSpy: jest.SpyInstance;
 
     beforeEach(() => {
-      binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource));
-      service.handleAttachmentUpload = jest.fn();
-    });
-
-    it('should emit upload in progress', () => {
-      service.uploadAttachment(bescheidResource, file).subscribe();
-
-      expect(service.getUploadAttachmentInProgress()).toBeObservable(
-        singleCold({ fileName: file.name, loading: true } as UploadFileInProgress),
-      );
-    });
-
-    it('should upload file', (done) => {
-      service.uploadAttachment(bescheidResource, file).subscribe(() => {
-        expect(binaryFileService.uploadFile).toHaveBeenCalledWith(
-          bescheidResource,
-          BescheidLinkRel.UPLOAD_ATTACHMENT,
-          file,
-          false,
-        );
-        done();
-      });
-    });
-
-    it('should handle attachment upload', (done) => {
-      service.uploadAttachment(bescheidResource, file).subscribe(() => {
-        expect(service.handleAttachmentUpload).toHaveBeenCalledWith(binaryFileStateResource);
-        done();
-      });
-    });
-
-    it('should emit uploaded binary file', () => {
-      expect(service.uploadAttachment(bescheidResource, file)).toBeObservable(singleColdCompleted(binaryFileStateResource));
-    });
-  });
-
-  describe('handleAttachmentUpload', () => {
-    describe('on error', () => {
-      const binaryFileStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createApiError());
-
-      it('should emit upload in progress', () => {
-        service.handleAttachmentUpload(binaryFileStateResource);
-
-        expect(service.getUploadAttachmentInProgress()).toBeObservable(
-          singleCold({
-            loading: false,
-            error: binaryFileStateResource.error,
-          } as UploadFileInProgress),
-        );
-      });
-
-      it('should emit binary file', () => {
-        service.handleAttachmentUpload(binaryFileStateResource);
-
-        expect(service.getUploadedAttachment()).toBeObservable(singleCold(binaryFileStateResource));
-      });
+      service.getBescheidList = jest.fn().mockReturnValue(of(bescheidListStateResource));
+      service.filterBySentStatus = jest.fn().mockReturnValue(bescheide);
+      getItemsSpy = bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide));
     });
 
-    describe('on success', () => {
-      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
-
-      it('should emit upload in progress', () => {
-        service.handleAttachmentUpload(binaryFileStateResource);
-
-        expect(service.getUploadAttachmentInProgress()).toBeObservable(
-          singleCold({
-            loading: false,
-          } as UploadFileInProgress),
-        );
-      });
-
-      it('should emit binary file', () => {
-        service.handleAttachmentUpload(binaryFileStateResource);
+    it('should get items', () => {
+      service.existBescheid().subscribe();
 
-        expect(service.getUploadedAttachment()).toBeObservable(singleCold(binaryFileStateResource));
-      });
+      expect(getItemsSpy).toHaveBeenCalled();
     });
-  });
-
-  describe('clear attachment upload', () => {
-    it('should clear stateresource', () => {
-      service.uploadAttachmentInProgress$.next(createStateResource(createUploadFileInProgress()));
 
-      service.clearAttachmentUpload();
+    it('should filter by sent status', () => {
+      service.existBescheid().subscribe();
 
-      expect(service.uploadAttachmentInProgress$.value).toEqual(createEmptyStateResource());
+      expect(service.filterBySentStatus).toHaveBeenCalledWith(bescheide);
     });
-  });
 
-  describe('exit', () => {
-    it('should refresh bescheid list', () => {
-      service.bescheidListResourceService.refresh = jest.fn();
-
-      service.exit();
+    it('should return true if at least one bescheid exists', () => {
+      const existBescheid$: Observable<boolean> = service.existBescheid();
 
-      expect(service.bescheidListResourceService.refresh).toHaveBeenCalled();
+      expect(existBescheid$).toBeObservable(singleColdCompleted(true));
     });
 
-    it('should reload current vorgang', () => {
-      service.exit();
-
-      expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled();
-    });
+    it('should return false if no bescheide exists', () => {
+      service.filterBySentStatus = jest.fn().mockReturnValue([]);
 
-    it('should reload postfach list', () => {
-      service.exit();
+      const existBescheid$: Observable<boolean> = service.existBescheid();
 
-      expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled();
+      expect(existBescheid$).toBeObservable(singleColdCompleted(false));
     });
   });
 });
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
index f2df99ebc8b9b47adb3244134990a129aedfe731..c88b9888eefaf81c8aa570e90887cace3a01bd43 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
@@ -1,31 +1,33 @@
-/*
- * 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.
- */
-import { BinaryFileListLinkRel, BinaryFileResource, BinaryFileService } from '@alfa-client/binary-file-shared';
+import {
+  Bescheid,
+  BESCHEID_UPLOADED_ATTACHMENTS,
+  BescheidDocument,
+  BescheidLinkRel,
+  BescheidListResource,
+  BescheidResource,
+  BescheidSendBy,
+  BescheidStatus,
+  BescheidWizardStep,
+  buildCreateBescheidCommand,
+  buildCreateBescheidDocumentCommandProps,
+  buildCreateBescheidDocumentFromFileProps,
+  buildSendBescheidCommandProps,
+  buildUpdateBescheidCommandProps,
+  createEmptyBescheidDocument,
+  createEmptyUploadInProgress,
+  createInitialWizard,
+  DocumentResource,
+  Wizard,
+} from '@alfa-client/bescheid-shared';
+import {
+  BinaryFileListLinkRel,
+  BinaryFileListResource,
+  BinaryFileResource,
+  BinaryFileService,
+} from '@alfa-client/binary-file-shared';
 import {
   CommandOrder,
   CommandResource,
-  CommandResourceService,
   CommandService,
   getEffectedResourceUrl,
   notHasCommandError,
@@ -33,9 +35,6 @@ import {
 } from '@alfa-client/command-shared';
 import { PostfachService } from '@alfa-client/postfach-shared';
 import {
-  HttpError,
-  ResourceListService,
-  StateResource,
   createEmptyStateResource,
   createStateResource,
   filterIsLoadedOrHasError,
@@ -44,307 +43,149 @@ import {
   isLoaded,
   isNotEmpty,
   isNotNil,
+  ResourceRepository,
   sortByGermanDateStr,
+  StateResource,
 } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
-import { getEmpfaenger } from '@alfa-client/vorgang-shared-ui';
-import { Injectable } from '@angular/core';
-import { ResourceUri, getUrl, hasLink } from '@ngxp/rest';
-import { BehaviorSubject, Observable, Subscription, filter, first, map, startWith, switchMap, take, tap } from 'rxjs';
-import { ListResourceServiceConfig, ResourceServiceConfig } from '../../../tech-shared/src/lib/resource/resource.model';
-import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository';
-import { ResourceService } from '../../../tech-shared/src/lib/resource/resource.service';
+import { VorgangCommandService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { inject, Injectable } from '@angular/core';
+import { getUrl, hasLink, LinkRel, Resource, ResourceUri } from '@ngxp/rest';
+import { isNil } from 'lodash-es';
+import { BehaviorSubject, filter, first, map, Observable, startWith, switchMap } from 'rxjs';
 import { BescheidFacade } from './+state/bescheid.facade';
-import { BescheidLinkRel, BescheidListLinkRel } from './bescheid.linkrel';
-import {
-  Bescheid,
-  BescheidListResource,
-  BescheidResource,
-  BescheidStatus,
-  BescheidWizardStep,
-  UploadFileInProgress,
-} from './bescheid.model';
-import {
-  buildCreateBescheidCommand,
-  buildCreateBescheidDocumentCommandProps,
-  buildCreateBescheidDocumentFromFileProps,
-  buildDeleteBescheidCommandProps,
-  buildSendBescheidCommandProps,
-  buildUpdateBescheidCommandProps,
-} from './bescheid.util';
+import { BescheidListResourceService } from './bescheid-list-resource-service';
+import { BescheidResourceService } from './bescheid-resource-service';
 import { DocumentLinkRel } from './document.linkrel';
-import { DocumentResource } from './document.model';
 
-@Injectable({ providedIn: 'root' })
+@Injectable()
 export class BescheidService {
-  readonly activeStep$: BehaviorSubject<BescheidWizardStep> = new BehaviorSubject(BescheidWizardStep.AntragBescheiden);
-
-  bescheidResourceService: ResourceService<VorgangWithEingangResource, BescheidResource>;
-  bescheidListResourceService: ResourceListService<VorgangWithEingangResource, BescheidListResource, BescheidResource>;
-
-  readonly bescheidDocumentFile$: BehaviorSubject<StateResource<BinaryFileResource>> = new BehaviorSubject<
-    StateResource<BinaryFileResource>
-  >(createEmptyStateResource());
-
-  readonly bescheidDocumentUri$: BehaviorSubject<ResourceUri> = new BehaviorSubject<ResourceUri>(null);
-
-  readonly bescheidDocument$: BehaviorSubject<StateResource<DocumentResource>> = new BehaviorSubject<
-    StateResource<DocumentResource>
-  >(createEmptyStateResource());
-
-  readonly bescheidList$: BehaviorSubject<StateResource<BescheidListResource>> = new BehaviorSubject(
-    createEmptyStateResource<BescheidListResource>(),
-  );
-
-  readonly createBescheidDocumentInProgress$: BehaviorSubject<StateResource<CommandResource>> = new BehaviorSubject<
-    StateResource<CommandResource>
-  >(createEmptyStateResource());
-
-  readonly uploadBescheidDocumentInProgress$: BehaviorSubject<UploadFileInProgress> = new BehaviorSubject<UploadFileInProgress>({
-    loading: false,
-  });
-
-  readonly uploadAttachmentInProgress$: BehaviorSubject<UploadFileInProgress> = new BehaviorSubject({ loading: false });
-
-  readonly uploadedAttachment$: BehaviorSubject<StateResource<BinaryFileResource>> = new BehaviorSubject(
-    createEmptyStateResource(),
-  );
-
-  loadBescheidDocumentSubscription: Subscription;
-
-  constructor(
-    private readonly facade: BescheidFacade,
-    private readonly vorgangService: VorgangService,
-    private readonly commandService: CommandService,
-    private readonly vorgangCommandService: VorgangCommandService,
-    private readonly binaryFileService: BinaryFileService,
-    private readonly repository: ResourceRepository<BescheidResource>,
-    private readonly postfachService: PostfachService,
-  ) {
-    this.bescheidResourceService = new CommandResourceService(
-      this.buildBescheidDraftServiceConfig(),
-      repository,
-      this.commandService,
-    );
-    this.bescheidListResourceService = new ResourceListService<
-      VorgangWithEingangResource,
-      BescheidListResource,
-      BescheidResource
-    >(this.buildBescheidListServiceConfig(), repository);
-  }
-
-  public getActiveStep(): Observable<BescheidWizardStep> {
-    return this.activeStep$.asObservable();
-  }
-
-  public setActiveStep(step: BescheidWizardStep): void {
-    this.activeStep$.next(step);
-  }
-
-  buildBescheidDraftServiceConfig(): ResourceServiceConfig<VorgangWithEingangResource> {
-    return {
-      resource: this.vorgangService.getVorgangWithEingang(),
-      getLinkRel: VorgangWithEingangLinkRel.BESCHEID_DRAFT,
-      delete: { linkRel: BescheidLinkRel.DELETE, order: CommandOrder.DELETE_BESCHEID },
-      edit: { linkRel: BescheidLinkRel.UPDATE, order: CommandOrder.UPDATE_BESCHEID },
-    };
-  }
-
-  buildBescheidListServiceConfig(): ListResourceServiceConfig<VorgangWithEingangResource> {
-    return {
-      baseResource: this.vorgangService.getVorgangWithEingang(),
-      listLinkRel: VorgangWithEingangLinkRel.BESCHEIDE,
-      listResourceListLinkRel: BescheidListLinkRel.BESCHEID_LIST,
-    };
-  }
+  private readonly bescheidFacade = inject(BescheidFacade);
+  private readonly commandService = inject(CommandService);
+  private readonly vorgangCommandService = inject(VorgangCommandService);
+  private readonly binaryFileService = inject(BinaryFileService);
+  private readonly resourceRepository = inject(ResourceRepository);
+  private readonly postfachService = inject(PostfachService);
+  private readonly bescheidResourceService = inject(BescheidResourceService);
+  private readonly bescheidListResourceService = inject(BescheidListResourceService);
+
+  readonly _bescheidDocument$: BehaviorSubject<BescheidDocument> = new BehaviorSubject(createEmptyBescheidDocument());
+  readonly _wizard$: BehaviorSubject<Wizard> = new BehaviorSubject(createInitialWizard());
 
   public init(): void {
-    this.bescheidResourceService = new CommandResourceService(
-      this.buildBescheidDraftServiceConfig(),
-      this.repository,
-      this.commandService,
-    );
-    this.bescheidDocumentFile$.next(createEmptyStateResource());
-    this.bescheidDocumentUri$.next(null);
-    this.uploadBescheidDocumentInProgress$.next({ loading: false });
-    this.clearUploadAttachment();
-    this.uploadAttachmentInProgress$.next({ loading: false });
-    this.activeStep$.next(BescheidWizardStep.AntragBescheiden);
+    this._wizard$.next(createInitialWizard());
+    this._bescheidDocument$.next(createEmptyBescheidDocument());
   }
 
-  public getBescheidDraft(): Observable<StateResource<BescheidResource>> {
-    return this.bescheidResourceService.get();
-  }
-
-  public getBescheidCommand(): Observable<StateResource<CommandResource>> {
-    return this.facade.getBescheidCommand();
-  }
-
-  public createBescheid(
-    vorgangWithEingang: VorgangWithEingangResource,
-    bescheid?: Bescheid,
-  ): Observable<StateResource<CommandResource>> {
-    this.facade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid));
-    return this.getBescheidCommand().pipe(
-      tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) =>
-        this.updateBescheidDraft(commandStateResource.resource),
-      ),
-    );
+  public exit(): void {
+    this.postfachService.setPostfachMailOnReload();
+    this._clearUploadedFiles();
   }
 
-  public bescheidErstellungUeberspringen(
+  public skipBescheidCreation(
     vorgangWithEingangResource: VorgangWithEingangResource,
+    bescheidResource: BescheidResource,
   ): Observable<StateResource<CommandResource>> {
-    if (!this.existsBescheidDraft()) {
-      return this.vorgangAbschliesen(vorgangWithEingangResource);
+    if (isNil(bescheidResource)) {
+      return this.vorgangCommandService.abschliessen(vorgangWithEingangResource);
     }
-    return this.getBescheidDraft().pipe(
-      filter(isLoaded),
-      first(),
-      switchMap((bescheidStateResource: StateResource<BescheidResource>) =>
-        this.bescheidLoeschenUndErstellungUeberspringen(vorgangWithEingangResource, bescheidStateResource.resource),
-      ),
-    );
-  }
-
-  public getBescheidDraftIfExists(): Observable<StateResource<BescheidResource>> {
-    return this.vorgangService.getVorgangWithEingang().pipe(
-      filter(
-        (stateResource: StateResource<VorgangWithEingangResource>) =>
-          isLoaded(stateResource) && hasLink(stateResource.resource, VorgangWithEingangLinkRel.BESCHEID_DRAFT),
-      ),
-      switchMap(() => this.getBescheidDraft()),
-      startWith(createEmptyStateResource<BescheidResource>()),
-    );
+    return this.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource);
   }
 
-  bescheidLoeschenUndErstellungUeberspringen(
+  deleteBescheidAndCompleteVorgang(
     vorgangWithEingangResource: VorgangWithEingangResource,
-    bescheidResource: BescheidResource,
   ): Observable<StateResource<CommandResource>> {
-    return this.vorgangAbschliesen(vorgangWithEingangResource).pipe(
-      tapOnCommandSuccessfullyDone(() => this.deleteBescheid(bescheidResource)),
-    );
-  }
-
-  vorgangAbschliesen(vorgangWithEingangResource: VorgangWithEingangResource): Observable<StateResource<CommandResource>> {
-    return this.vorgangCommandService.abschliessen(vorgangWithEingangResource);
-  }
-
-  public updateBescheid(bescheid: Bescheid): Observable<StateResource<CommandResource>> {
-    return this.doUpdateBescheid(this.getResource(), bescheid).pipe(
-      tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => {
-        this.updateBescheidDraft(commandStateResource.resource);
-        this.clearCreateBescheidDocumentInProgress();
-        this.clearUploadBescheidDocumentInProgress();
-        this.clearUploadAttachment();
-      }),
-    );
-  }
-
-  private clearUploadAttachment() {
-    this.uploadedAttachment$.next(createEmptyStateResource());
-  }
-
-  public sendBescheidToAntragsteller(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> {
-    return this.sendBescheid(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
-  }
-
-  public sendBescheidManually(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> {
-    return this.sendBescheid(bescheidResource, BescheidLinkRel.BESCHEIDEN);
-  }
-
-  sendBescheid(bescheidResource: BescheidResource, linkRel: string): Observable<StateResource<CommandResource>> {
-    return this.bescheidResourceService.get().pipe(
-      filterIsLoadedOrHasError(),
-      switchMap((stateResource: StateResource<BescheidResource>) =>
-        this.commandService.createCommandByProps(buildSendBescheidCommandProps(stateResource.resource, linkRel)),
-      ),
-    );
+    return this.vorgangCommandService
+      .abschliessen(vorgangWithEingangResource)
+      .pipe(tapOnCommandSuccessfullyDone(() => this.deleteBescheid()));
   }
 
-  doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid));
+  public deleteBescheid(): Observable<StateResource<CommandResource>> {
+    return this.bescheidResourceService.delete();
   }
 
-  private updateBescheidDraft(command: CommandResource): void {
-    this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command));
-  }
-
-  public getAttachments(): Observable<BinaryFileResource[]> {
-    return this.getBescheidDraft().pipe(
-      filter(isLoaded),
-      map((stateResource: StateResource<BescheidResource>) => stateResource.resource),
-      filter((resource: BescheidResource) => hasLink(resource, BescheidLinkRel.ATTACHMENTS)),
-      switchMap((resource: BescheidResource) => this.binaryFileService.getFiles(resource, BescheidLinkRel.ATTACHMENTS)),
-      filter(isLoaded),
-      map((stateResource) => getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST)),
-    );
+  public loadFiles(bescheidResource: BescheidResource): void {
+    this.loadBescheidDocument(bescheidResource);
+    this.loadAttachments(bescheidResource);
   }
 
-  public getDocumentUri(): Observable<ResourceUri> {
-    return this.bescheidDocumentUri$.asObservable();
+  public createBescheidDocument(bescheidResource: BescheidResource): void {
+    this._bescheidDocument$.next({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) });
+    this.doCreateBescheidDocument(bescheidResource)
+      .pipe(filterIsLoadedOrHasError(), first())
+      .subscribe((commandStateResource: StateResource<CommandResource>) =>
+        this.handleCreateBescheidDocumentResponse(commandStateResource),
+      );
   }
 
-  public setDocumentUri(uri: ResourceUri): void {
-    this.bescheidDocumentUri$.next(uri);
+  doCreateBescheidDocument(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> {
+    return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(bescheidResource));
   }
 
-  public existBescheidDocumentFile(): Observable<boolean> {
-    return this.bescheidDocumentFile$.asObservable().pipe(map(isLoaded));
+  handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void {
+    if (notHasCommandError(commandStateResource.resource)) {
+      const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource);
+      this._bescheidDocument$.next({ ...this._bescheidDocument$.value, documentUri });
+      this.loadBescheidDocumentByUri(documentUri);
+    } else {
+      this._bescheidDocument$.next({ ...this._bescheidDocument$.value, create: commandStateResource });
+    }
   }
 
-  public getBescheidDocumentFile(): Observable<StateResource<BinaryFileResource>> {
-    return this.bescheidDocumentFile$.asObservable();
+  emitBescheidDocumentError(stateResource: StateResource<Resource>): void {
+    const value: BescheidDocument = this._bescheidDocument$.value;
+    this._bescheidDocument$.next({
+      ...value,
+      upload: { ...value.upload, loading: false, error: stateResource.error },
+    });
   }
 
-  public getBescheidDocument(): Observable<StateResource<DocumentResource>> {
-    return this.bescheidDocument$.asObservable();
+  loadBescheidDocument(bescheidResource: BescheidResource): void {
+    if (hasLink(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)) {
+      this.loadBescheidDocumentByUri(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT));
+    }
   }
 
   public loadBescheidDocumentByUri(resourceUri: ResourceUri): void {
-    this.setBescheidDocumentFileLoading();
-    this.loadBescheidDocumentSubscription = this.repository
+    this.resourceRepository
       .getResource(resourceUri)
-      .pipe()
-      .subscribe((document: DocumentResource) => {
-        this.bescheidDocument$.next(createStateResource(document));
-        this.loadBescheidDocumentFile(document);
-        this.loadBescheidDocumentSubscription.unsubscribe();
-      });
-  }
-
-  setBescheidDocumentFileLoading(): void {
-    this.bescheidDocumentFile$.next({ ...this.bescheidDocumentFile$.value, loading: true });
+      .pipe(first())
+      .subscribe((document: DocumentResource) => this.loadBescheidDocumentFile(document));
   }
 
-  public uploadBescheidDocument(bescheid: BescheidResource, file: File): Observable<UploadFileInProgress> {
-    this.clearCreateBescheidDocumentInProgress();
-    this.initUploadBescheidDocumentInProgress(file.name);
-    this.doUploadBescheidDocument(bescheid, file);
-    return this.getUploadBescheidDocumentInProgress();
-  }
-
-  private clearCreateBescheidDocumentInProgress(): void {
-    this.createBescheidDocumentInProgress$.next(createEmptyStateResource());
-  }
-
-  private initUploadBescheidDocumentInProgress(fileName: string): void {
-    this.uploadBescheidDocumentInProgress$.next({ fileName, loading: true });
+  loadBescheidDocumentFile(document: DocumentResource): void {
+    this.binaryFileService
+      .getFile(getUrl(document, DocumentLinkRel.FILE))
+      .pipe(filterIsLoadedOrHasError(), first())
+      .subscribe((binaryFile: StateResource<BinaryFileResource>) => {
+        this._bescheidDocument$.next({
+          ...this._bescheidDocument$.value,
+          upload: createEmptyUploadInProgress(),
+          create: createEmptyStateResource(),
+          resource: binaryFile.resource,
+          documentUri: getUrl(document, LinkRel.Self),
+        });
+      });
   }
 
-  public getUploadBescheidDocumentInProgress(): Observable<UploadFileInProgress> {
-    return this.uploadBescheidDocumentInProgress$.asObservable();
+  loadAttachments(bescheidResource: BescheidResource): void {
+    if (hasLink(bescheidResource, BescheidLinkRel.ATTACHMENTS)) {
+      this.binaryFileService
+        .getFiles(bescheidResource, BescheidLinkRel.ATTACHMENTS)
+        .pipe(
+          filterIsLoadedOrHasError(),
+          first(),
+          map((stateResource: StateResource<BinaryFileListResource>) =>
+            getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST),
+          ),
+        )
+        .subscribe((files: BinaryFileResource[]) => this.binaryFileService.addFiles(BESCHEID_UPLOADED_ATTACHMENTS, files));
+    }
   }
 
-  doUploadBescheidDocument(bescheid: BescheidResource, file: File): void {
+  public uploadBescheidDocument(document: File, bescheid: BescheidResource): void {
+    this._bescheidDocument$.next({ ...this._bescheidDocument$.value, upload: { fileName: document.name, loading: true } });
     this.binaryFileService
-      .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, file, false)
+      .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, document, false)
       .pipe(filterIsLoadedOrHasError(), first())
       .subscribe((binaryFileStateResource: StateResource<BinaryFileResource>) =>
         this.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource),
@@ -356,7 +197,7 @@ export class BescheidService {
     binaryFileStateResource: StateResource<BinaryFileResource>,
   ): void {
     if (hasStateResourceError(binaryFileStateResource)) {
-      this.setUploadBescheidDocumentInProgressError(binaryFileStateResource.error);
+      this.emitBescheidDocumentError(binaryFileStateResource);
     } else {
       this.createBescheidDocumentFromFile(bescheid, binaryFileStateResource.resource);
     }
@@ -376,203 +217,167 @@ export class BescheidService {
     binaryFile: BinaryFileResource,
   ): void {
     if (hasStateResourceError(commandStateResource)) {
-      this.setUploadBescheidDocumentInProgressError(commandStateResource.error);
+      this.emitBescheidDocumentError(commandStateResource);
     } else {
-      this.bescheidDocument$.next(createEmptyStateResource());
-      this.bescheidDocumentFile$.next(createStateResource(binaryFile));
-      this.bescheidDocumentUri$.next(getEffectedResourceUrl(commandStateResource.resource));
-      this.clearUploadBescheidDocumentInProgress();
+      this._bescheidDocument$.next({
+        ...this._bescheidDocument$.value,
+        documentUri: getEffectedResourceUrl(commandStateResource.resource),
+        upload: createEmptyUploadInProgress(),
+        resource: binaryFile,
+      });
     }
   }
 
-  private setUploadBescheidDocumentInProgressError(error: HttpError): void {
-    this.uploadBescheidDocumentInProgress$.next({ loading: false, error });
-  }
-
-  public deleteBescheidDocument(): void {
-    this.bescheidDocumentUri$.next(null);
-    this.bescheidDocumentFile$.next(createEmptyStateResource());
-    this.bescheidDocument$.next(createEmptyStateResource());
-  }
-
-  public createBescheidDocument(): Observable<StateResource<CommandResource>> {
-    this.clearUploadBescheidDocumentInProgress();
-    this.setCreateBescheidDocumentInProgress();
-    this.doCreateBescheidDocument()
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((commandStateResource: StateResource<CommandResource>) =>
-        this.handleCreateBescheidDocumentResponse(commandStateResource),
+  public createBescheid(
+    vorgangWithEingang: VorgangWithEingangResource,
+    bescheid?: Bescheid,
+  ): Observable<StateResource<CommandResource>> {
+    this.bescheidFacade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid));
+    return this.bescheidFacade
+      .getBescheidCommand()
+      .pipe(
+        tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) =>
+          this.updateBescheidDraft(commandStateResource.resource),
+        ),
       );
-    return this.getCreateBescheidDocumentInProgress();
   }
 
-  private clearUploadBescheidDocumentInProgress(): void {
-    this.uploadBescheidDocumentInProgress$.next({ loading: false });
+  updateBescheidDraft(command: CommandResource): void {
+    this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command));
+    if (command.order === CommandOrder.CREATE_BESCHEID) {
+      this._wizard$.next({ ...this._wizard$.value, bescheidCreated: true });
+    }
   }
 
-  public getCreateBescheidDocumentInProgress(): Observable<StateResource<CommandResource>> {
-    return this.createBescheidDocumentInProgress$.asObservable();
+  public updateBescheid(
+    bescheidResource: BescheidResource,
+    updatedBescheid: Bescheid,
+  ): Observable<StateResource<CommandResource>> {
+    return this.doUpdateBescheid(bescheidResource, updatedBescheid).pipe(
+      tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => {
+        this.updateBescheidDraft(commandStateResource.resource);
+      }),
+    );
   }
 
-  private setCreateBescheidDocumentInProgress(): void {
-    this.createBescheidDocumentInProgress$.next(createEmptyStateResource(true));
+  doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> {
+    return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid));
   }
 
-  doCreateBescheidDocument(): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(this.getResource()));
+  public sendBescheidManually(): Observable<StateResource<CommandResource>> {
+    return this.sendBescheid(BescheidLinkRel.BESCHEIDEN);
   }
 
-  private handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void {
-    this.createBescheidDocumentInProgress$.next(commandStateResource);
-    if (notHasCommandError(commandStateResource.resource)) {
-      const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource);
-      this.bescheidDocumentUri$.next(documentUri);
-      this.loadBescheidDocumentByUri(documentUri);
-    }
+  public sendBescheidMessage(): Observable<StateResource<CommandResource>> {
+    return this.sendBescheid(BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
   }
 
-  loadBescheidDocumentFile(document: DocumentResource): void {
-    this.binaryFileService
-      .getFile(getUrl(document, DocumentLinkRel.FILE))
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((binaryFile) => {
-        this.bescheidDocumentFile$.next(binaryFile);
-        this.createBescheidDocumentInProgress$.next(createEmptyStateResource());
-      });
+  sendBescheid(linkRel: BescheidLinkRel): Observable<StateResource<CommandResource>> {
+    return this.getBescheidDraft().pipe(
+      filter(isLoaded),
+      map((stateResource: StateResource<BescheidResource>) => stateResource.resource),
+      switchMap((bescheidResource: BescheidResource) =>
+        this.commandService.createCommandByProps(buildSendBescheidCommandProps(bescheidResource, linkRel)),
+      ),
+    );
   }
 
-  public getBescheidDocumentCommand(): Observable<StateResource<CommandResource>> {
-    return this.commandService.getCommandByOrder(CommandOrder.CREATE_BESCHEID_DOCUMENT);
+  public getBescheidDraft(): Observable<StateResource<BescheidResource>> {
+    return this.bescheidResourceService.get();
   }
 
-  public existsBescheidDraft(): boolean {
-    let exists: boolean;
-    this.bescheidResourceService
-      .existResource()
-      .pipe(take(1))
-      .subscribe((existsDraft: boolean) => (exists = existsDraft));
-    return exists;
+  public getBescheidDocument(): Observable<BescheidDocument> {
+    return this._bescheidDocument$.asObservable();
   }
 
-  public bescheidVerwerfen(): Observable<StateResource<CommandResource>> {
-    return this.deleteBescheid(this.getResource()).pipe(
-      tapOnCommandSuccessfullyDone(() => {
-        this.deleteBescheidDocument();
-        this.vorgangService.reloadCurrentVorgang();
-      }),
-    );
+  public deleteBescheidDocument(): void {
+    this._bescheidDocument$.next(createEmptyBescheidDocument());
   }
 
-  deleteBescheid(bescheid: BescheidResource): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommandByProps(buildDeleteBescheidCommandProps(bescheid));
+  public getActiveStep(): Observable<BescheidWizardStep> {
+    return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.activeStep));
   }
 
-  /**
-   * @returns @deprecated Don't use this function, instead pass data to function if necessarry.
-   */
-  getResource(): BescheidResource {
-    let resource: StateResource<BescheidResource> = undefined;
-    this.bescheidResourceService
-      .selectResource()
-      .pipe(take(1))
-      .subscribe((stateResource: StateResource<BescheidResource>) => (resource = stateResource));
-
-    return resource.resource;
+  public setActiveStep(step: BescheidWizardStep): void {
+    this._clearUploadedFiles();
+    this._wizard$.next({ ...this._wizard$.value, activeStep: step });
   }
 
-  public reloadCurrentVorgang(): void {
-    this.vorgangService.reloadCurrentVorgang();
+  public getBescheidCreated(): Observable<boolean> {
+    return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.bescheidCreated));
   }
 
-  public loadBescheidDocument(resourceUri: ResourceUri): Observable<StateResource<DocumentResource>> {
-    return this.repository.getResource<DocumentResource>(resourceUri).pipe(
-      map((documentResource: DocumentResource) => createStateResource(documentResource)),
-      startWith(createEmptyStateResource<DocumentResource>(true)),
-    );
+  public selectBescheidResource(): Observable<StateResource<BescheidResource>> {
+    return this.bescheidResourceService.selectResource();
   }
 
-  public getEmpfaenger(): Observable<string> {
-    return this.vorgangService.getVorgangWithEingang().pipe(
-      filter(isLoaded),
-      map((stateResource) => stateResource.resource),
-      map(getEmpfaenger),
-    );
+  public getWizard(): Observable<Wizard> {
+    return this._wizard$.asObservable();
   }
 
-  public getLastBescheid(): Observable<BescheidResource> {
-    return this.bescheidListResourceService.getItems().pipe(
-      map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)),
-      map((bescheide: BescheidResource[]) => this.sortByBeschiedenAm(bescheide)),
-      map((bescheide: BescheidResource[]) => bescheide[0]),
-    );
+  public setSendBy(sendBy: BescheidSendBy): void {
+    this._wizard$.next({ ...this._wizard$.value, sendBy: sendBy });
   }
 
-  private sortByBeschiedenAm(bescheide: BescheidResource[]): BescheidResource[] {
-    return sortByGermanDateStr<BescheidResource>(bescheide, (bescheid: BescheidResource) => bescheid.beschiedenAm);
+  public setNachrichtEmpfaenger(empfaenger: string): void {
+    this._wizard$.next({ ...this._wizard$.value, empfaenger: empfaenger });
   }
 
-  public existBescheid(): Observable<boolean> {
-    return this.bescheidListResourceService.getItems().pipe(
-      map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)),
-      map((bescheide: BescheidResource[]) => isNotEmpty(bescheide)),
-    );
+  public lockBescheidSending(): void {
+    this._wizard$.next({ ...this._wizard$.value, canBeSend: false });
   }
 
-  public getBescheidList(): Observable<StateResource<BescheidListResource>> {
-    return this.bescheidListResourceService.getList();
+  public unlockBescheidSending(): void {
+    this._wizard$.next({ ...this._wizard$.value, canBeSend: true });
   }
 
-  filterBySentStatus(bescheide: BescheidResource[]): BescheidResource[] {
-    return isNotNil(bescheide) ? bescheide.filter(this.hasSentStatus) : [];
+  public finishAddingBescheidDocument(): void {
+    this._bescheidDocument$.next({
+      ...this._bescheidDocument$.value,
+      upload: createEmptyUploadInProgress(),
+      create: createEmptyStateResource(),
+    });
   }
 
-  private hasSentStatus(bescheid: BescheidResource): boolean {
-    return bescheid.status === BescheidStatus.SENT;
+  _clearUploadedFiles(): void {
+    this.binaryFileService.clearUploadedFiles(BESCHEID_UPLOADED_ATTACHMENTS);
   }
 
-  public refreshList(): void {
-    this.bescheidListResourceService.refresh();
+  public getBescheidList(): Observable<StateResource<BescheidListResource>> {
+    return this.bescheidListResourceService.getList();
   }
 
-  public uploadAttachment(bescheidResource: BescheidResource, file: File): Observable<StateResource<BinaryFileResource>> {
-    this.uploadAttachmentInProgress$.next({ fileName: file.name, loading: true });
-    return this.binaryFileService
-      .uploadFile(bescheidResource, BescheidLinkRel.UPLOAD_ATTACHMENT, file, false)
-      .pipe(
-        tap((binaryFileStateResource: StateResource<BinaryFileResource>) => this.handleAttachmentUpload(binaryFileStateResource)),
-      );
+  public getBescheidDocumentByUri(resourceUri: ResourceUri): Observable<StateResource<DocumentResource>> {
+    return this.resourceRepository.getResource<DocumentResource>(resourceUri).pipe(
+      map((documentResource: DocumentResource) => createStateResource(documentResource)),
+      startWith(createEmptyStateResource<DocumentResource>(true)),
+    );
   }
 
-  handleAttachmentUpload(binaryFileStateResource: StateResource<BinaryFileResource>) {
-    if (hasStateResourceError(binaryFileStateResource)) {
-      this.uploadAttachmentInProgress$.next({
-        loading: false,
-        error: binaryFileStateResource.error,
-      });
-    } else {
-      this.uploadAttachmentInProgress$.next({
-        ...this.uploadAttachmentInProgress$.value,
-        loading: binaryFileStateResource.loading,
-      });
-    }
-    this.uploadedAttachment$.next(binaryFileStateResource);
+  public getLastBescheid(): Observable<BescheidResource> {
+    return this.bescheidListResourceService.getItems().pipe(
+      map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)),
+      map((bescheide: BescheidResource[]) => this.sortByBeschiedenAm(bescheide)),
+      map((bescheide: BescheidResource[]) => bescheide[0]),
+    );
   }
 
-  public getUploadAttachmentInProgress(): Observable<UploadFileInProgress> {
-    return this.uploadAttachmentInProgress$.asObservable();
+  filterBySentStatus(bescheide: BescheidResource[]): BescheidResource[] {
+    return isNotNil(bescheide) ? bescheide.filter(this.hasSentStatus) : [];
   }
 
-  public getUploadedAttachment(): Observable<StateResource<BinaryFileResource>> {
-    return this.uploadedAttachment$.asObservable();
+  private hasSentStatus(bescheid: BescheidResource): boolean {
+    return bescheid.status === BescheidStatus.SENT;
   }
 
-  public clearAttachmentUpload(): void {
-    this.uploadAttachmentInProgress$.next(createEmptyStateResource());
+  private sortByBeschiedenAm(bescheide: BescheidResource[]): BescheidResource[] {
+    return sortByGermanDateStr<BescheidResource>(bescheide, (bescheid: BescheidResource) => bescheid.beschiedenAm);
   }
 
-  public exit(): void {
-    this.bescheidListResourceService.refresh();
-    this.vorgangService.reloadCurrentVorgang();
-    this.postfachService.setPostfachMailOnReload();
+  public existBescheid(): Observable<boolean> {
+    return this.bescheidListResourceService.getItems().pipe(
+      map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)),
+      map((bescheide: BescheidResource[]) => isNotEmpty(bescheide)),
+    );
   }
 }
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts
deleted file mode 100644
index 9fbf45a5ca814d6ed15691e08259f1a664f836e0..0000000000000000000000000000000000000000
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts
+++ /dev/null
@@ -1,888 +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.
- */
-import { BinaryFileListLinkRel, BinaryFileListResource, BinaryFileResource, BinaryFileService, } from '@alfa-client/binary-file-shared';
-import { CommandOrder, CommandResource, CommandResourceService, CommandService, CreateCommandProps, getEffectedResourceUrl, } from '@alfa-client/command-shared';
-import { PostfachService } from '@alfa-client/postfach-shared';
-import { createEmptyStateResource, createErrorStateResource, createStateResource, EMPTY_STRING, getEmbeddedResources, StateResource, } from '@alfa-client/tech-shared';
-import { Mock, mock } from '@alfa-client/test-utils';
-import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
-import { TestBed } from '@angular/core/testing';
-import { faker } from '@faker-js/faker';
-import { getUrl, LinkRel, ResourceUri } from '@ngxp/rest';
-import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
-import { createProblemDetail } from 'libs/tech-shared/test/error';
-import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
-import { EMPTY, Observable, of } from 'rxjs';
-import { createBinaryFileListResource, createBinaryFileResource } from '../../../binary-file-shared/test/binary-file';
-import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command';
-import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository';
-import { createFile } from '../../../tech-shared/test/file';
-import { singleCold, singleColdCompleted } from '../../../tech-shared/test/marbles';
-import { createBescheid, createBescheidDocument, createBescheidResource } from '../test/bescheid';
-import { createDocumentResource } from '../test/document';
-import { BescheidFacade } from './+state/bescheid.facade';
-import { BescheidResourceService } from './bescheid-resource-service';
-import { BescheidLinkRel } from './bescheid.linkrel';
-import { Bescheid, BESCHEID_UPLOADED_ATTACHMENTS, BescheidDocument, BescheidResource, BescheidWizardStep, createEmptyBescheidDocument, createEmptyUploadInProgress, createInitialWizard, } from './bescheid.model';
-import { BescheidService2 } from './bescheid2.service';
-import { DocumentLinkRel } from './document.linkrel';
-import { DocumentResource } from './document.model';
-
-import { expect } from '@jest/globals';
-import * as BescheidUtil from './bescheid.util';
-
-describe('BescheidService', () => {
-  let service: BescheidService2;
-
-  let facade: Mock<BescheidFacade>;
-  let vorgangService: Mock<VorgangService>;
-  let resourceRepository: Mock<ResourceRepository>;
-  let commandService: Mock<CommandService>;
-  let vorgangCommandService: Mock<VorgangCommandService>;
-  let binaryFileService: Mock<BinaryFileService>;
-  let postfachService: Mock<PostfachService>;
-  let bescheidResourceService: Mock<BescheidResourceService>;
-
-  const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
-  const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> =
-    createStateResource(vorgangWithEingangResource);
-  const bescheidResource: BescheidResource = createBescheidResource();
-  const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
-
-  beforeEach(() => {
-    facade = mock(BescheidFacade);
-    resourceRepository = mock(ResourceRepository);
-    commandService = mock(CommandService);
-    vorgangCommandService = mock(VorgangCommandService);
-    vorgangService = mock(VorgangService);
-    vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource));
-    binaryFileService = mock(BinaryFileService);
-    postfachService = mock(PostfachService);
-    bescheidResourceService = mock(CommandResourceService);
-
-    TestBed.configureTestingModule({
-      providers: [
-        { provide: BescheidFacade, useValue: facade },
-        { provide: VorgangService, useValue: vorgangService },
-        { provide: ResourceRepository, useValue: resourceRepository },
-        { provide: CommandService, useValue: commandService },
-        { provide: VorgangCommandService, useValue: vorgangCommandService },
-        { provide: BinaryFileService, useValue: binaryFileService },
-        {
-          provide: PostfachService,
-          useValue: postfachService,
-        },
-        { provide: BescheidResourceService, useValue: bescheidResourceService },
-        BescheidService2,
-      ],
-    });
-
-    service = TestBed.inject(BescheidService2);
-  });
-
-  it('should be created', () => {
-    expect(service).toBeTruthy();
-  });
-
-  describe('init', () => {
-    it('should init state', () => {
-      service.setActiveStep(2);
-
-      service.init();
-
-      expect(service.getWizard()).toBeObservable(singleCold(createInitialWizard()));
-      expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden));
-      expect(service.getBescheidCreated()).toBeObservable(singleCold(false));
-      expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument()));
-    });
-  });
-
-  describe('exit', () => {
-    beforeEach(() => {
-      service._clearUploadedFiles = jest.fn();
-    });
-
-    it('should reload postfach list', () => {
-      service.exit();
-
-      expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled();
-    });
-
-    it('should clear uploaded files', () => {
-      service.exit();
-
-      expect(service._clearUploadedFiles).toHaveBeenCalled();
-    });
-  });
-
-  describe('skipBescheidCreation', () => {
-    beforeEach(() => {
-      service.deleteBescheidAndCompleteVorgang = jest.fn().mockReturnValue(of(commandStateResource));
-    });
-
-    it('should complete vorgang', () => {
-      service.skipBescheidCreation(vorgangWithEingangResource, null);
-
-      expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource);
-    });
-
-    it('should NOT complete vorgang', () => {
-      service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource);
-
-      expect(vorgangCommandService.abschliessen).not.toHaveBeenCalled();
-    });
-
-    it('should delete bescheid and complete vorgang', () => {
-      service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource).subscribe();
-
-      expect(service.deleteBescheidAndCompleteVorgang).toHaveBeenCalledWith(vorgangWithEingangResource);
-    });
-
-    it('should return command', () => {
-      const command$: Observable<StateResource<CommandResource>> = service.skipBescheidCreation(
-        vorgangWithEingangResource,
-        bescheidResource,
-      );
-
-      expect(command$).toBeObservable(singleColdCompleted(commandStateResource));
-    });
-  });
-
-  describe('deleteBescheidAndCompleteVorgang', () => {
-    beforeEach(() => {
-      service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource));
-      vorgangCommandService.abschliessen.mockReturnValue(EMPTY);
-    });
-
-    it('should complete vorgang', () => {
-      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
-
-      expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource);
-    });
-
-    it('should delete bescheid', () => {
-      vorgangCommandService.abschliessen.mockReturnValue(of(createSuccessfullyDoneCommandStateResource()));
-
-      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
-
-      expect(service.deleteBescheid).toHaveBeenCalled();
-    });
-
-    it('should NOT delete bescheid on loading', () => {
-      vorgangCommandService.abschliessen.mockReturnValue(of(createEmptyStateResource(true)));
-
-      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
-
-      expect(service.deleteBescheid).not.toHaveBeenCalled();
-    });
-
-    it('should NOT delete bescheid on error', () => {
-      vorgangCommandService.abschliessen.mockReturnValue(of(createErrorStateResource(createProblemDetail())));
-
-      service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe();
-
-      expect(service.deleteBescheid).not.toHaveBeenCalled();
-    });
-
-    it('should return vorgang abschliessen command', () => {
-      const command: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
-      vorgangCommandService.abschliessen.mockReturnValue(of(command));
-
-      const command$: Observable<StateResource<CommandResource>> =
-        service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource);
-
-      expect(command$).toBeObservable(singleColdCompleted(command));
-    });
-  });
-
-  describe('delete bescheid', () => {
-    it('should create command', () => {
-      service.deleteBescheid();
-
-      expect(bescheidResourceService.delete).toHaveBeenCalled();
-    });
-
-    it('should return command', () => {
-      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
-      bescheidResourceService.delete.mockReturnValue(of(commandStateResource));
-
-      const createdCommand$: Observable<StateResource<CommandResource>> = service.deleteBescheid();
-
-      expect(createdCommand$).toBeObservable(singleColdCompleted(commandStateResource));
-    });
-  });
-
-  describe('loadFiles', () => {
-    beforeEach(() => {
-      service.loadBescheidDocument = jest.fn();
-      service.loadAttachments = jest.fn();
-    });
-
-    it('should bescheid document', () => {
-      service.loadFiles(bescheidResource);
-
-      expect(service.loadBescheidDocument).toHaveBeenCalledWith(bescheidResource);
-    });
-
-    it('should load attachments', () => {
-      service.loadFiles(bescheidResource);
-
-      expect(service.loadAttachments).toHaveBeenCalledWith(bescheidResource);
-    });
-  });
-
-  describe('create bescheid document', () => {
-    beforeEach(() => {
-      service.doCreateBescheidDocument = jest.fn().mockReturnValue(EMPTY);
-      service.handleCreateBescheidDocumentResponse = jest.fn();
-    });
-
-    it('should emit bescheid document', () => {
-      service.createBescheidDocument(bescheidResource);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }),
-      );
-    });
-
-    it('should do create bescheid document', () => {
-      service.createBescheidDocument(bescheidResource);
-
-      expect(service.doCreateBescheidDocument).toHaveBeenCalledWith(bescheidResource);
-    });
-
-    it('should handle create response on loaded', () => {
-      service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandStateResource));
-
-      service.createBescheidDocument(bescheidResource);
-
-      expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandStateResource);
-    });
-
-    it('should handle create response on error', () => {
-      const commandError: StateResource<CommandResource> = createCommandErrorStateResource();
-      service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandError));
-
-      service.createBescheidDocument(bescheidResource);
-
-      expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandError);
-    });
-  });
-
-  describe('doCreateBescheidDocument', () => {
-    it('should create command by props', () => {
-      service.doCreateBescheidDocument(bescheidResource);
-
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith({
-        resource: bescheidResource,
-        linkRel: BescheidLinkRel.CREATE_DOCUMENT,
-        command: {
-          order: CommandOrder.CREATE_BESCHEID_DOCUMENT,
-          body: null,
-        },
-        snackBarMessage: EMPTY_STRING,
-      });
-    });
-  });
-
-  describe('handleCreateBescheidDocumentResponse', () => {
-    const commandStateResource: StateResource<CommandResource> = createStateResource(
-      createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
-    );
-
-    beforeEach(() => {
-      service.loadBescheidDocumentByUri = jest.fn();
-      service.emitBescheidDocumentError = jest.fn();
-    });
-
-    it('should emit error', () => {
-      const commandErrorStateResource: StateResource<CommandResource> = createCommandErrorStateResource();
-
-      service.handleCreateBescheidDocumentResponse(commandErrorStateResource);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({ ...createEmptyBescheidDocument(), create: commandErrorStateResource } as BescheidDocument),
-      );
-    });
-
-    it('should emit bescheid document state', () => {
-      service.handleCreateBescheidDocumentResponse(commandStateResource);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({
-          ...createEmptyBescheidDocument(),
-          documentUri: getEffectedResourceUrl(commandStateResource.resource),
-        }),
-      );
-    });
-
-    it('should load document by uri', () => {
-      service.handleCreateBescheidDocumentResponse(commandStateResource);
-
-      expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getEffectedResourceUrl(commandStateResource.resource));
-    });
-  });
-
-  describe('emitBescheidDocumentError', () => {
-    it('should emit', () => {
-      const commandError: StateResource<CommandResource> = createCommandErrorStateResource();
-
-      service.emitBescheidDocumentError(commandError);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({
-          ...createEmptyBescheidDocument(),
-          upload: { ...createEmptyUploadInProgress(), loading: false, error: commandError.error },
-        }),
-      );
-    });
-  });
-
-  describe('loadBescheidDocument', () => {
-    beforeEach(() => {
-      service.loadBescheidDocumentByUri = jest.fn();
-    });
-
-    it('should load by uri', () => {
-      const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.BESCHEID_DOCUMENT]);
-
-      service.loadBescheidDocument(bescheidResource);
-
-      expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT));
-    });
-
-    it('should NOT load by uri', () => {
-      service.loadBescheidDocument(bescheidResource);
-
-      expect(service.loadBescheidDocumentByUri).not.toHaveBeenCalled();
-    });
-  });
-
-  describe('loadBescheidDocumentByUri', () => {
-    const resourceUri: ResourceUri = faker.internet.url();
-
-    beforeEach(() => {
-      resourceRepository.getResource.mockReturnValue(EMPTY);
-      service.loadBescheidDocumentFile = jest.fn();
-    });
-
-    it('should get resource', () => {
-      service.loadBescheidDocumentByUri(resourceUri);
-
-      expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri);
-    });
-
-    it('should load bescheid document file', () => {
-      const documentResource: DocumentResource = createDocumentResource();
-      resourceRepository.getResource.mockReturnValue(of(documentResource));
-
-      service.loadBescheidDocumentByUri(resourceUri);
-
-      expect(service.loadBescheidDocumentFile).toHaveBeenCalledWith(documentResource);
-    });
-  });
-
-  describe('load bescheid document file', () => {
-    const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]);
-    const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
-
-    beforeEach(() => {
-      binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource));
-    });
-
-    it('should call binary file service', () => {
-      service.loadBescheidDocumentFile(document);
-
-      expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE));
-    });
-
-    it('should emit bescheid document state', () => {
-      service.loadBescheidDocumentFile(document);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({
-          upload: createEmptyUploadInProgress(),
-          create: createEmptyStateResource(),
-          resource: binaryFileStateResource.resource,
-          documentUri: getUrl(document, LinkRel.Self),
-        }),
-      );
-    });
-  });
-
-  describe('loadAttachments', () => {
-    const bescheidResourceWithAttachments: BescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]);
-
-    beforeEach(() => {
-      binaryFileService.getFiles.mockReturnValue(EMPTY);
-    });
-
-    it('should call binary file service', () => {
-      service.loadAttachments(bescheidResourceWithAttachments);
-
-      expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResourceWithAttachments, BescheidLinkRel.ATTACHMENTS);
-    });
-
-    it('should NOT call binary file service', () => {
-      service.loadAttachments(bescheidResource);
-
-      expect(binaryFileService.getFiles).not.toHaveBeenCalled();
-    });
-
-    it('should add files', () => {
-      const binaryFileListStateResource: StateResource<BinaryFileListResource> =
-        createStateResource(createBinaryFileListResource());
-      binaryFileService.getFiles.mockReturnValue(of(binaryFileListStateResource));
-
-      service.loadAttachments(bescheidResourceWithAttachments);
-
-      expect(binaryFileService.addFiles).toHaveBeenCalledWith(
-        BESCHEID_UPLOADED_ATTACHMENTS,
-        getEmbeddedResources(binaryFileListStateResource, BinaryFileListLinkRel.FILE_LIST),
-      );
-    });
-  });
-
-  describe('upload bescheid document', () => {
-    const documentFile: File = createFile();
-
-    beforeEach(() => {
-      binaryFileService.uploadFile.mockReturnValue(EMPTY);
-      service.handleUploadBescheidDocumentResponse = jest.fn();
-    });
-
-    it('should emit bescheid document state', () => {
-      service.uploadBescheidDocument(documentFile, bescheidResource);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({ ...createEmptyBescheidDocument(), upload: { fileName: documentFile.name, loading: true } }),
-      );
-    });
-
-    it('should call binary file service', () => {
-      service.uploadBescheidDocument(documentFile, bescheidResource);
-
-      expect(binaryFileService.uploadFile).toHaveBeenCalledWith(
-        bescheidResource,
-        BescheidLinkRel.UPLOAD_BESCHEID_FILE,
-        documentFile,
-        false,
-      );
-    });
-
-    it('should handle upload response', () => {
-      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
-      binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource));
-
-      service.uploadBescheidDocument(documentFile, bescheidResource);
-
-      expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource);
-    });
-  });
-
-  describe('handleUploadBescheidDocumentResponse', () => {
-    beforeEach(() => {
-      service.emitBescheidDocumentError = jest.fn();
-      service.createBescheidDocumentFromFile = jest.fn();
-    });
-
-    it('should emit error', () => {
-      const errorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createProblemDetail());
-
-      service.handleUploadBescheidDocumentResponse(bescheidResource, errorStateResource);
-
-      expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource);
-    });
-
-    it('should create bescheid document from file', () => {
-      const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource());
-
-      service.handleUploadBescheidDocumentResponse(bescheidResource, binaryFileStateResource);
-
-      expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource.resource);
-    });
-  });
-
-  describe('create bescheid document from file', () => {
-    const bescheid: BescheidResource = createBescheidResource();
-    const binaryFile: BinaryFileResource = createBinaryFileResource();
-
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
-    let buildCreateBescheidDocumentFromFilePropsSpy;
-
-    const commandStateResource: StateResource<CommandResource> = createCommandStateResource();
-
-    beforeEach(() => {
-      buildCreateBescheidDocumentFromFilePropsSpy = jest
-        .spyOn(BescheidUtil, 'buildCreateBescheidDocumentFromFileProps')
-        .mockReturnValue(createCommandProps);
-      commandService.createCommandByProps.mockReturnValue(of(commandStateResource));
-    });
-
-    it('should call command sevice', () => {
-      service.createBescheidDocumentFromFile(bescheid, binaryFile);
-
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
-    });
-
-    it('should build create command document from file props', () => {
-      service.createBescheidDocumentFromFile(bescheid, binaryFile);
-
-      expect(buildCreateBescheidDocumentFromFilePropsSpy).toHaveBeenCalledWith(bescheid, binaryFile);
-    });
-
-    it('should call handle create bescheid document from file response', () => {
-      service.handleCreateBescheidDocumentFromFileResponse = jest.fn();
-
-      service.createBescheidDocumentFromFile(bescheid, binaryFile);
-
-      expect(service.handleCreateBescheidDocumentFromFileResponse).toHaveBeenCalledWith(commandStateResource, binaryFile);
-    });
-  });
-
-  describe('handleCreateBescheidDocumentFromFileResponse', () => {
-    const commandStateResource: StateResource<CommandResource> = createStateResource(
-      createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
-    );
-
-    beforeEach(() => {
-      service.emitBescheidDocumentError = jest.fn();
-    });
-
-    it('should emit error', () => {
-      const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail());
-
-      service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource());
-
-      expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource);
-    });
-
-    it('should NOT emit error', () => {
-      const binaryFileResource: BinaryFileResource = createBinaryFileResource();
-
-      service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource);
-
-      expect(service.emitBescheidDocumentError).not.toHaveBeenCalled();
-    });
-
-    it('should emit bescheid document state', () => {
-      const binaryFileResource: BinaryFileResource = createBinaryFileResource();
-
-      service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource);
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({
-          ...createEmptyBescheidDocument(),
-          documentUri: getEffectedResourceUrl(commandStateResource.resource),
-          upload: createEmptyUploadInProgress(),
-          resource: binaryFileResource,
-        }),
-      );
-    });
-
-    it('should NOT emit bescheid document state', () => {
-      const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail());
-
-      service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource());
-
-      expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument()));
-    });
-  });
-
-  describe('createBescheid', () => {
-    const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
-    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(command);
-
-    beforeEach(() => {
-      service.updateBescheidDraft = jest.fn();
-    });
-
-    beforeEach(() => {
-      facade.getBescheidCommand.mockReturnValue(of(commandStateResource));
-      (service as any).bescheidResourceService.loadByResourceUri = jest.fn();
-    });
-
-    it('should call facade', () => {
-      service.createBescheid(vorgangWithEingang).subscribe();
-
-      expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, {
-        order: CommandOrder.CREATE_BESCHEID,
-        body: null,
-      });
-    });
-
-    it('should update bescheid draft', () => {
-      service.createBescheid(vorgangWithEingang).subscribe();
-
-      expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandStateResource.resource);
-    });
-  });
-
-  describe('updateBescheidDraft', () => {
-    const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-
-    beforeEach(() => {
-      (service as any).bescheidResourceService.loadByResourceUri = jest.fn();
-    });
-
-    it('should load resource by uri', () => {
-      service.updateBescheidDraft(command);
-
-      expect((service as any).bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith(
-        getUrl(command, CommandLinkRel.EFFECTED_RESOURCE),
-      );
-    });
-
-    it('should emit bescheid created', () => {
-      service.updateBescheidDraft({ ...command, order: CommandOrder.CREATE_BESCHEID });
-
-      expect(service.getBescheidCreated()).toBeObservable(singleCold(true));
-    });
-  });
-
-  describe('updateBescheid', () => {
-    const bescheid: Bescheid = createBescheid();
-    const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
-    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
-
-    beforeEach(() => {
-      service.doUpdateBescheid = jest.fn().mockReturnValue(EMPTY);
-      service.updateBescheidDraft = jest.fn().mockReturnValue(EMPTY);
-    });
-
-    it('should do update bescheid', () => {
-      service.updateBescheid(bescheidResource, bescheid);
-
-      expect(service.doUpdateBescheid).toHaveBeenCalledWith(bescheidResource, bescheid);
-    });
-
-    it('should update bescheid draft', () => {
-      service.doUpdateBescheid = jest.fn().mockReturnValue(of(commandStateResource));
-
-      service.updateBescheid(bescheidResource, bescheid).subscribe();
-
-      expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandResource);
-    });
-  });
-
-  describe('do update bescheid', () => {
-    const bescheid: Bescheid = createBescheid();
-    const bescheidResource: BescheidResource = createBescheidResource();
-
-    const createCommandProps: CreateCommandProps = createCreateCommandProps();
-    let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance;
-
-    beforeEach(() => {
-      buildUpdateBescheidCommandPropsSpy = jest
-        .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps')
-        .mockReturnValue(createCommandProps);
-      commandService.createCommandByProps.mockClear();
-      commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource()));
-    });
-
-    it('should build update bescheid command props', () => {
-      service.doUpdateBescheid(bescheidResource, bescheid);
-
-      expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid);
-    });
-
-    it('should call command service', () => {
-      service.doUpdateBescheid(bescheidResource, bescheid).subscribe();
-
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps);
-    });
-  });
-
-  describe('sendBescheidManually', () => {
-    beforeEach(() => {
-      service.sendBescheid = jest.fn().mockReturnValue(EMPTY);
-    });
-
-    it('should send bescheid', () => {
-      service.sendBescheidManually().subscribe();
-
-      expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN);
-    });
-
-    it('should return send bescheid command', () => {
-      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
-      service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource));
-
-      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidManually();
-
-      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
-    });
-  });
-
-  describe('sendBescheid', () => {
-    beforeEach(() => {
-      service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource)));
-      commandService.createCommandByProps.mockReturnValue(EMPTY);
-    });
-
-    it('should get bescheid draft', () => {
-      service.sendBescheidManually().subscribe();
-
-      expect(service.getBescheidDraft).toHaveBeenCalled();
-    });
-
-    it('should create command', () => {
-      service.sendBescheid(BescheidLinkRel.BESCHEIDEN).subscribe();
-
-      expect(commandService.createCommandByProps).toHaveBeenCalledWith({
-        resource: bescheidResource,
-        linkRel: BescheidLinkRel.BESCHEIDEN,
-        command: {
-          order: CommandOrder.SEND_BESCHEID,
-          body: null,
-        },
-        snackBarMessage: EMPTY_STRING,
-      } as CreateCommandProps);
-    });
-
-    it('should return send bescheid command', () => {
-      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
-      commandService.createCommandByProps = jest.fn().mockReturnValue(of(commandStateResource));
-
-      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheid(
-        BescheidLinkRel.BESCHEIDEN,
-      );
-
-      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
-    });
-  });
-
-  describe('sendBescheidMessage', () => {
-    beforeEach(() => {
-      service.getBescheidDraft = jest.fn().mockReturnValue(createStateResource(bescheidResource));
-      service.sendBescheid = jest.fn().mockReturnValue(EMPTY);
-    });
-
-    it('should send bescheid', () => {
-      service.sendBescheidMessage().subscribe();
-
-      expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
-    });
-
-    it('should return send bescheid command', () => {
-      const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource();
-      service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource));
-
-      const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidMessage();
-
-      expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
-    });
-  });
-
-  describe('setActiveStep', () => {
-    beforeEach(() => {
-      service._clearUploadedFiles = jest.fn();
-    });
-
-    it('should emit changed active step', () => {
-      service.setActiveStep(BescheidWizardStep.DokumenteHochladen);
-
-      expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen));
-    });
-
-    it('should clear uploaded files', () => {
-      service.setActiveStep(BescheidWizardStep.DokumenteHochladen);
-
-      expect(service._clearUploadedFiles).toHaveBeenCalled();
-    });
-  });
-
-  describe('getBescheidDraft', () => {
-    const bescheidDraft: BescheidResource = createBescheidResource();
-    const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft);
-
-    it('should call resource service', () => {
-      bescheidResourceService.get = jest.fn();
-
-      service.getBescheidDraft();
-
-      expect(bescheidResourceService.get).toHaveBeenCalled();
-    });
-
-    it('should return value', () => {
-      bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource));
-
-      const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft();
-
-      expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource));
-    });
-  });
-
-  describe('setNachrichtEmpfaenger', () => {
-    it('should change wizard state', () => {
-      const empfaenger: string = faker.person.fullName();
-
-      service.setNachrichtEmpfaenger(empfaenger);
-
-      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), empfaenger }));
-    });
-  });
-
-  describe('lockBescheidSending', () => {
-    it('should change wizard state', () => {
-      service.lockBescheidSending();
-
-      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: false }));
-    });
-  });
-
-  describe('unlockBescheidSending', () => {
-    it('should change wizard state', () => {
-      service.unlockBescheidSending();
-
-      expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: true }));
-    });
-  });
-
-  describe('finishAddingBescheidDocument', () => {
-    it('should update state', () => {
-      const bescheidDocument: BescheidDocument = createBescheidDocument();
-      service._bescheidDocument$.next(bescheidDocument);
-
-      service.finishAddingBescheidDocument();
-
-      expect(service.getBescheidDocument()).toBeObservable(
-        singleCold({
-          ...bescheidDocument,
-          create: createEmptyStateResource(),
-          upload: createEmptyUploadInProgress(),
-        } as BescheidDocument),
-      );
-    });
-  });
-
-  describe('clear uploaded files', () => {
-    it('should call binary files service', () => {
-      service._clearUploadedFiles();
-
-      expect(binaryFileService.clearUploadedFiles).toHaveBeenCalledWith(BESCHEID_UPLOADED_ATTACHMENTS);
-    });
-  });
-});
diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts
deleted file mode 100644
index 8a48a4dbdf043a0994ac12c2a298a6ae2be2fb3e..0000000000000000000000000000000000000000
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts
+++ /dev/null
@@ -1,337 +0,0 @@
-import {
-  Bescheid,
-  BESCHEID_UPLOADED_ATTACHMENTS,
-  BescheidDocument,
-  BescheidLinkRel,
-  BescheidResource,
-  BescheidSendBy,
-  BescheidWizardStep,
-  buildCreateBescheidCommand,
-  buildCreateBescheidDocumentCommandProps,
-  buildCreateBescheidDocumentFromFileProps,
-  buildSendBescheidCommandProps,
-  buildUpdateBescheidCommandProps,
-  createEmptyBescheidDocument,
-  createEmptyUploadInProgress,
-  createInitialWizard,
-  DocumentResource,
-  Wizard,
-} from '@alfa-client/bescheid-shared';
-import {
-  BinaryFileListLinkRel,
-  BinaryFileListResource,
-  BinaryFileResource,
-  BinaryFileService,
-} from '@alfa-client/binary-file-shared';
-import {
-  CommandOrder,
-  CommandResource,
-  CommandService,
-  getEffectedResourceUrl,
-  notHasCommandError,
-  tapOnCommandSuccessfullyDone,
-} from '@alfa-client/command-shared';
-import { PostfachService } from '@alfa-client/postfach-shared';
-import {
-  createEmptyStateResource,
-  filterIsLoadedOrHasError,
-  getEmbeddedResources,
-  hasStateResourceError,
-  isLoaded,
-  ResourceRepository,
-  StateResource,
-} from '@alfa-client/tech-shared';
-import { VorgangCommandService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
-import { inject, Injectable } from '@angular/core';
-import { getUrl, hasLink, LinkRel, Resource, ResourceUri } from '@ngxp/rest';
-import { isNil } from 'lodash-es';
-import { BehaviorSubject, filter, first, map, Observable, switchMap } from 'rxjs';
-import { BescheidFacade } from './+state/bescheid.facade';
-import { BescheidResourceService } from './bescheid-resource-service';
-import { DocumentLinkRel } from './document.linkrel';
-
-@Injectable()
-export class BescheidService2 {
-  private readonly bescheidFacade = inject(BescheidFacade);
-  private readonly commandService = inject(CommandService);
-  private readonly vorgangCommandService = inject(VorgangCommandService);
-  private readonly binaryFileService = inject(BinaryFileService);
-  private readonly resourceRepository = inject(ResourceRepository);
-  private readonly postfachService = inject(PostfachService);
-  private readonly bescheidResourceService = inject(BescheidResourceService);
-
-  readonly _bescheidDocument$: BehaviorSubject<BescheidDocument> = new BehaviorSubject(createEmptyBescheidDocument());
-  readonly _wizard$: BehaviorSubject<Wizard> = new BehaviorSubject(createInitialWizard());
-
-  public init(): void {
-    this._wizard$.next(createInitialWizard());
-    this._bescheidDocument$.next(createEmptyBescheidDocument());
-  }
-
-  public exit(): void {
-    this.postfachService.setPostfachMailOnReload();
-    this._clearUploadedFiles();
-  }
-
-  public skipBescheidCreation(
-    vorgangWithEingangResource: VorgangWithEingangResource,
-    bescheidResource: BescheidResource,
-  ): Observable<StateResource<CommandResource>> {
-    if (isNil(bescheidResource)) {
-      return this.vorgangCommandService.abschliessen(vorgangWithEingangResource);
-    }
-    return this.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource);
-  }
-
-  deleteBescheidAndCompleteVorgang(
-    vorgangWithEingangResource: VorgangWithEingangResource,
-  ): Observable<StateResource<CommandResource>> {
-    return this.vorgangCommandService
-      .abschliessen(vorgangWithEingangResource)
-      .pipe(tapOnCommandSuccessfullyDone(() => this.deleteBescheid()));
-  }
-
-  public deleteBescheid(): Observable<StateResource<CommandResource>> {
-    return this.bescheidResourceService.delete();
-  }
-
-  public loadFiles(bescheidResource: BescheidResource): void {
-    this.loadBescheidDocument(bescheidResource);
-    this.loadAttachments(bescheidResource);
-  }
-
-  public createBescheidDocument(bescheidResource: BescheidResource): void {
-    this._bescheidDocument$.next({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) });
-    this.doCreateBescheidDocument(bescheidResource)
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((commandStateResource: StateResource<CommandResource>) =>
-        this.handleCreateBescheidDocumentResponse(commandStateResource),
-      );
-  }
-
-  doCreateBescheidDocument(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(bescheidResource));
-  }
-
-  handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void {
-    if (notHasCommandError(commandStateResource.resource)) {
-      const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource);
-      this._bescheidDocument$.next({ ...this._bescheidDocument$.value, documentUri });
-      this.loadBescheidDocumentByUri(documentUri);
-    } else {
-      this._bescheidDocument$.next({ ...this._bescheidDocument$.value, create: commandStateResource });
-    }
-  }
-
-  emitBescheidDocumentError(stateResource: StateResource<Resource>): void {
-    const value: BescheidDocument = this._bescheidDocument$.value;
-    this._bescheidDocument$.next({
-      ...value,
-      upload: { ...value.upload, loading: false, error: stateResource.error },
-    });
-  }
-
-  loadBescheidDocument(bescheidResource: BescheidResource): void {
-    if (hasLink(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)) {
-      this.loadBescheidDocumentByUri(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT));
-    }
-  }
-
-  public loadBescheidDocumentByUri(resourceUri: ResourceUri): void {
-    this.resourceRepository
-      .getResource(resourceUri)
-      .pipe(first())
-      .subscribe((document: DocumentResource) => this.loadBescheidDocumentFile(document));
-  }
-
-  loadBescheidDocumentFile(document: DocumentResource): void {
-    this.binaryFileService
-      .getFile(getUrl(document, DocumentLinkRel.FILE))
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((binaryFile: StateResource<BinaryFileResource>) => {
-        this._bescheidDocument$.next({
-          ...this._bescheidDocument$.value,
-          upload: createEmptyUploadInProgress(),
-          create: createEmptyStateResource(),
-          resource: binaryFile.resource,
-          documentUri: getUrl(document, LinkRel.Self),
-        });
-      });
-  }
-
-  loadAttachments(bescheidResource: BescheidResource): void {
-    if (hasLink(bescheidResource, BescheidLinkRel.ATTACHMENTS)) {
-      this.binaryFileService
-        .getFiles(bescheidResource, BescheidLinkRel.ATTACHMENTS)
-        .pipe(
-          filterIsLoadedOrHasError(),
-          first(),
-          map((stateResource: StateResource<BinaryFileListResource>) =>
-            getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST),
-          ),
-        )
-        .subscribe((files: BinaryFileResource[]) => this.binaryFileService.addFiles(BESCHEID_UPLOADED_ATTACHMENTS, files));
-    }
-  }
-
-  public uploadBescheidDocument(document: File, bescheid: BescheidResource): void {
-    this._bescheidDocument$.next({ ...this._bescheidDocument$.value, upload: { fileName: document.name, loading: true } });
-    this.binaryFileService
-      .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, document, false)
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((binaryFileStateResource: StateResource<BinaryFileResource>) =>
-        this.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource),
-      );
-  }
-
-  handleUploadBescheidDocumentResponse(
-    bescheid: BescheidResource,
-    binaryFileStateResource: StateResource<BinaryFileResource>,
-  ): void {
-    if (hasStateResourceError(binaryFileStateResource)) {
-      this.emitBescheidDocumentError(binaryFileStateResource);
-    } else {
-      this.createBescheidDocumentFromFile(bescheid, binaryFileStateResource.resource);
-    }
-  }
-
-  createBescheidDocumentFromFile(bescheid: BescheidResource, binaryFile: BinaryFileResource): void {
-    this.commandService
-      .createCommandByProps(buildCreateBescheidDocumentFromFileProps(bescheid, binaryFile))
-      .pipe(filterIsLoadedOrHasError(), first())
-      .subscribe((commandStateResource: StateResource<CommandResource>) =>
-        this.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile),
-      );
-  }
-
-  handleCreateBescheidDocumentFromFileResponse(
-    commandStateResource: StateResource<CommandResource>,
-    binaryFile: BinaryFileResource,
-  ): void {
-    if (hasStateResourceError(commandStateResource)) {
-      this.emitBescheidDocumentError(commandStateResource);
-    } else {
-      this._bescheidDocument$.next({
-        ...this._bescheidDocument$.value,
-        documentUri: getEffectedResourceUrl(commandStateResource.resource),
-        upload: createEmptyUploadInProgress(),
-        resource: binaryFile,
-      });
-    }
-  }
-
-  public createBescheid(
-    vorgangWithEingang: VorgangWithEingangResource,
-    bescheid?: Bescheid,
-  ): Observable<StateResource<CommandResource>> {
-    this.bescheidFacade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid));
-    return this.bescheidFacade
-      .getBescheidCommand()
-      .pipe(
-        tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) =>
-          this.updateBescheidDraft(commandStateResource.resource),
-        ),
-      );
-  }
-
-  updateBescheidDraft(command: CommandResource): void {
-    this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command));
-    if (command.order === CommandOrder.CREATE_BESCHEID) {
-      this._wizard$.next({ ...this._wizard$.value, bescheidCreated: true });
-    }
-  }
-
-  public updateBescheid(
-    bescheidResource: BescheidResource,
-    updatedBescheid: Bescheid,
-  ): Observable<StateResource<CommandResource>> {
-    return this.doUpdateBescheid(bescheidResource, updatedBescheid).pipe(
-      tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => {
-        this.updateBescheidDraft(commandStateResource.resource);
-      }),
-    );
-  }
-
-  doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid));
-  }
-
-  public sendBescheidManually(): Observable<StateResource<CommandResource>> {
-    return this.sendBescheid(BescheidLinkRel.BESCHEIDEN);
-  }
-
-  public sendBescheidMessage(): Observable<StateResource<CommandResource>> {
-    return this.sendBescheid(BescheidLinkRel.BESCHEIDEN_UND_SENDEN);
-  }
-
-  sendBescheid(linkRel: BescheidLinkRel): Observable<StateResource<CommandResource>> {
-    return this.getBescheidDraft().pipe(
-      filter(isLoaded),
-      map((stateResource: StateResource<BescheidResource>) => stateResource.resource),
-      switchMap((bescheidResource: BescheidResource) =>
-        this.commandService.createCommandByProps(buildSendBescheidCommandProps(bescheidResource, linkRel)),
-      ),
-    );
-  }
-
-  public getBescheidDraft(): Observable<StateResource<BescheidResource>> {
-    return this.bescheidResourceService.get();
-  }
-
-  public getBescheidDocument(): Observable<BescheidDocument> {
-    return this._bescheidDocument$.asObservable();
-  }
-
-  public deleteBescheidDocument(): void {
-    this._bescheidDocument$.next(createEmptyBescheidDocument());
-  }
-
-  public getActiveStep(): Observable<BescheidWizardStep> {
-    return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.activeStep));
-  }
-
-  public setActiveStep(step: BescheidWizardStep): void {
-    this._clearUploadedFiles();
-    this._wizard$.next({ ...this._wizard$.value, activeStep: step });
-  }
-
-  public getBescheidCreated(): Observable<boolean> {
-    return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.bescheidCreated));
-  }
-
-  public selectBescheidResource(): Observable<StateResource<BescheidResource>> {
-    return this.bescheidResourceService.selectResource();
-  }
-
-  public getWizard(): Observable<Wizard> {
-    return this._wizard$.asObservable();
-  }
-
-  public setSendBy(sendBy: BescheidSendBy): void {
-    this._wizard$.next({ ...this._wizard$.value, sendBy: sendBy });
-  }
-
-  public setNachrichtEmpfaenger(empfaenger: string): void {
-    this._wizard$.next({ ...this._wizard$.value, empfaenger: empfaenger });
-  }
-
-  public lockBescheidSending(): void {
-    this._wizard$.next({ ...this._wizard$.value, canBeSend: false });
-  }
-
-  public unlockBescheidSending(): void {
-    this._wizard$.next({ ...this._wizard$.value, canBeSend: true });
-  }
-
-  public finishAddingBescheidDocument(): void {
-    this._bescheidDocument$.next({
-      ...this._bescheidDocument$.value,
-      upload: createEmptyUploadInProgress(),
-      create: createEmptyStateResource(),
-    });
-  }
-
-  _clearUploadedFiles(): void {
-    this.binaryFileService.clearUploadedFiles(BESCHEID_UPLOADED_ATTACHMENTS);
-  }
-}
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts
index 5cc1a78f00492281a9f2508fc173779421b48ee5..e4273362286e10a34719fda69469de408e56d6ff 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts
@@ -21,11 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
 import { Mock, mock } from '@alfa-client/test-utils';
 import { SpinnerComponent } from '@alfa-client/ui';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 import { BescheidListInVorgangContainerComponent } from './bescheid-list-in-vorgang-container.component';
 import { BescheidListInVorgangComponent } from './bescheid-list-in-vorgang/bescheid-list-in-vorgang.component';
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts
index ce73d8bcd2315cd823c862425355825fa70ef83f..2508cfb9a4f1595fdb84d6d28a9adb968be885eb 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts
@@ -21,10 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidListResource, BescheidService } from '@alfa-client/bescheid-shared';
+import { BescheidListResource } from '@alfa-client/bescheid-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import { Component, OnInit } from '@angular/core';
 import { Observable } from 'rxjs';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-list-in-vorgang-container',
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts
index 9d003e6fff71a5306124381c873fc1eef9d2b496..089df332d961970b1c06e5198a6b1267c5b9e805 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts
@@ -21,30 +21,19 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
 import { BinaryFileUriContainerComponent } from '@alfa-client/binary-file';
-import {
-  GetUrlPipe,
-  HasLinkPipe,
-  StateResource,
-  createStateResource,
-} from '@alfa-client/tech-shared';
-import {
-  Mock,
-  existsAsHtmlElement,
-  getMockComponent,
-  mock,
-  notExistsAsHtmlElement,
-} from '@alfa-client/test-utils';
+import { createStateResource, GetUrlPipe, HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
+import { existsAsHtmlElement, getMockComponent, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { faker } from '@faker-js/faker';
-import { ResourceUri, getUrl } from '@ngxp/rest';
+import { getUrl, ResourceUri } from '@ngxp/rest';
 import { AttachmentWrapperComponent } from '@ods/system';
 import { DocumentLinkRel } from 'libs/bescheid-shared/src/lib/document.linkrel';
 import { DocumentResource } from 'libs/bescheid-shared/src/lib/document.model';
 import { getDataTestClassOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createDocumentResource } from '../../../../../../bescheid-shared/src/test/document';
 import { DocumentInBescheidContainerComponent } from './document-in-bescheid-container.component';
 
@@ -81,7 +70,7 @@ describe('DocumentInBescheidContainerComponent', () => {
     fixture = TestBed.createComponent(DocumentInBescheidContainerComponent);
     component = fixture.componentInstance;
     component.documentUri = documentUri;
-    bescheidService.loadBescheidDocument.mockReturnValue(of(documentStateResource));
+    bescheidService.getBescheidDocumentByUri.mockReturnValue(of(documentStateResource));
     fixture.detectChanges();
   });
 
@@ -93,15 +82,13 @@ describe('DocumentInBescheidContainerComponent', () => {
     it('should call service to load bescheid document', () => {
       component.ngOnInit();
 
-      expect(bescheidService.loadBescheidDocument).toHaveBeenCalledWith(documentUri);
+      expect(bescheidService.getBescheidDocumentByUri).toHaveBeenCalledWith(documentUri);
     });
   });
 
   describe('binary file uri container', () => {
     it('should be visible if link exists on resource', () => {
-      component.documentStateResource$ = of(
-        createStateResource(createDocumentResource([DocumentLinkRel.FILE])),
-      );
+      component.documentStateResource$ = of(createStateResource(createDocumentResource([DocumentLinkRel.FILE])));
 
       fixture.detectChanges();
 
@@ -117,8 +104,10 @@ describe('DocumentInBescheidContainerComponent', () => {
     });
 
     it('should be called with binaryFileUri', () => {
-      const binaryFileUriContainer: BinaryFileUriContainerComponent =
-        getMockComponent<BinaryFileUriContainerComponent>(fixture, BinaryFileUriContainerComponent);
+      const binaryFileUriContainer: BinaryFileUriContainerComponent = getMockComponent<BinaryFileUriContainerComponent>(
+        fixture,
+        BinaryFileUriContainerComponent,
+      );
 
       expect(binaryFileUriContainer.binaryFileUri).toBe(getUrl(document, DocumentLinkRel.FILE));
     });
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts
index d4ff2b232c9cbd6e4a0602dfb8de775b2f6b8634..50ed78ef097bc51d63cf521e3e04f2fb7d20bd33 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts
@@ -21,13 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import { Component, Input, OnInit } from '@angular/core';
 import { ResourceUri } from '@ngxp/rest';
 import { DocumentLinkRel } from 'libs/bescheid-shared/src/lib/document.linkrel';
 import { DocumentResource } from 'libs/bescheid-shared/src/lib/document.model';
 import { Observable } from 'rxjs';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-document-in-bescheid-container',
@@ -43,6 +43,6 @@ export class DocumentInBescheidContainerComponent implements OnInit {
   constructor(private bescheidService: BescheidService) {}
 
   ngOnInit(): void {
-    this.documentStateResource$ = this.bescheidService.loadBescheidDocument(this.documentUri);
+    this.documentStateResource$ = this.bescheidService.getBescheidDocumentByUri(this.documentUri);
   }
 }
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts
index 1fe204ade444f7609bea459484de54ed0ab5a829..aff1cef682c39834bb627b9747ee4de3f0d4b816 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts
@@ -24,16 +24,7 @@
 import { BescheidResource, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared';
 import { CommandOrder, CommandResource } from '@alfa-client/command-shared';
 import { createEmptyStateResource, createStateResource, ESCAPE_KEY, StateResource } from '@alfa-client/tech-shared';
-import {
-  createDialogRefMock,
-  DialogRefMock,
-  existsAsHtmlElement,
-  getElementFromFixtureByType,
-  Mock,
-  mock,
-  triggerEvent,
-  useFromMock,
-} from '@alfa-client/test-utils';
+import { createDialogRefMock, DialogRefMock, existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, triggerEvent, useFromMock, } from '@alfa-client/test-utils';
 import { OzgcloudDialogService } from '@alfa-client/ui';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
@@ -41,7 +32,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonComponent, CloseIconComponent } from '@ods/system';
 import { MockComponent } from 'ng-mocks';
 import { EMPTY, of } from 'rxjs';
-import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource, createBescheidStateResource } from '../../../../bescheid-shared/src/test/bescheid';
 import { createCommandErrorResource, createSuccessfullyDoneCommandResource } from '../../../../command-shared/test/command';
 import { getDataTestIdAttributeOf, getDataTestIdOf } from '../../../../tech-shared/test/data-test';
@@ -50,11 +41,7 @@ import { createKeydownKeyboardEvent } from '../../../../test-utils/src/lib/keybo
 import { createVorgangWithEingangResource } from '../../../../vorgang-shared/test/vorgang';
 import { BescheidWizardContainerComponent } from './bescheid-wizard-container.component';
 import { BescheidWizardComponent } from './bescheid-wizard/bescheid-wizard.component';
-import {
-  BescheidWizardCancelDialogContainerComponent,
-  CancelWizardDialogData,
-  CancelWizardDialogResult,
-} from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component';
+import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, CancelWizardDialogResult, } from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component';
 import { BescheidFormService } from './bescheid.formservice';
 
 describe('BescheidWizardContainerComponent', () => {
@@ -64,7 +51,7 @@ describe('BescheidWizardContainerComponent', () => {
   const bescheidWizard: string = getDataTestIdOf('bescheid-wizard');
   const closeButton: string = getDataTestIdAttributeOf('close-bescheid');
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   let ozgcloudDialogService: Mock<OzgcloudDialogService>;
   let formService: Mock<BescheidFormService>;
   let wizardDialogRef: DialogRefMock<BescheidWizardDialogResult>;
@@ -72,7 +59,7 @@ describe('BescheidWizardContainerComponent', () => {
   const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     bescheidService.getBescheidCreated.mockReturnValue(EMPTY);
     ozgcloudDialogService = mock(OzgcloudDialogService);
     formService = mock(BescheidFormService);
@@ -105,7 +92,7 @@ describe('BescheidWizardContainerComponent', () => {
           useValue: { vorgangWithEingangResource },
         },
         {
-          provide: BescheidService2,
+          provide: BescheidService,
           useValue: bescheidService,
         },
         {
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
index cba4185d1a3d6805f5291ad6972c11965ed40fc5..adeded14acbe1600a9bb3cdc4a194d6e2d29660e 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts
@@ -22,17 +22,16 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { BescheidResource, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared';
-import { CommandOrder, CommandResource, CommandService, isSuccessfulDone } from '@alfa-client/command-shared';
-import { createEmptyStateResource, isEscapeKey, isNotLoading, isNotNil, ResourceRepository, StateResource, } from '@alfa-client/tech-shared';
+import { CommandOrder, CommandResource, isSuccessfulDone } from '@alfa-client/command-shared';
+import { createEmptyStateResource, isEscapeKey, isNotLoading, isNotNil, StateResource } from '@alfa-client/tech-shared';
 import { OzgcloudDialogService } from '@alfa-client/ui';
-import { VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { getEmpfaenger } from '@alfa-client/vorgang-shared-ui';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { Component, inject, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
 import { hasLink } from '@ngxp/rest';
-import { BescheidResourceService, createBescheidResourceService } from 'libs/bescheid-shared/src/lib/bescheid-resource-service';
 import { filter, first, Observable, of, Subscription, switchMap } from 'rxjs';
-import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, CancelWizardDialogResult, } from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component';
 import { BescheidFormService } from './bescheid.formservice';
 
@@ -43,18 +42,10 @@ export interface BescheidWizardDialogData {
 @Component({
   selector: 'alfa-bescheid-wizard-container',
   templateUrl: './bescheid-wizard-container.component.html',
-  providers: [
-    BescheidFormService,
-    BescheidService2,
-    {
-      provide: BescheidResourceService,
-      useFactory: createBescheidResourceService,
-      deps: [ResourceRepository, CommandService, VorgangService],
-    },
-  ],
+  providers: [BescheidFormService],
 })
 export class BescheidWizardContainerComponent implements OnInit, OnDestroy {
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
   private readonly ozgcloudDialogService = inject(OzgcloudDialogService);
   private readonly dialogData: BescheidWizardDialogData = inject(DIALOG_DATA);
   private readonly dialogRef = inject(DialogRef<BescheidWizardDialogResult>);
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts
index df6b0e09d088b27f5601ba9b12abf43363b8a0a7..72629a1fb70736f2fc9203a651bdcbf29ff42800 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts
@@ -32,7 +32,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MatIcon } from '@angular/material/icon';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid';
 import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command';
 import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test';
@@ -52,10 +52,10 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => {
   const dialogData: AbschliessenDialogData = { vorgangWithEingangResource, bescheidResource };
 
   let dialogRef: DialogRefMock;
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     dialogRef = createDialogRefMock();
   });
 
@@ -76,7 +76,7 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => {
           useValue: dialogRef,
         },
         {
-          provide: BescheidService2,
+          provide: BescheidService,
           useValue: bescheidService,
         },
       ],
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts
index 5a8ace4040ce03c2e7cff5f2efc3f24877d0f201..6d49d285d541e1743eb0167a71ed3ca6734e3dac 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts
@@ -29,7 +29,7 @@ import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { Component, inject } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 export interface AbschliessenDialogData {
   vorgangWithEingangResource: VorgangWithEingangResource;
@@ -43,7 +43,7 @@ export interface AbschliessenDialogData {
 export class BescheidWizardAbschliessenDialogContainerComponent {
   private readonly dialogData: AbschliessenDialogData = inject(DIALOG_DATA);
   private readonly dialogRef = inject(DialogRef);
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
 
   public abschliessen$: Observable<StateResource<CommandResource>>;
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts
index d3452acaabaa91d8cced04afc925138dd1d2d546..f632a919ec76b31c16acbaece5fbeb5fa386f324 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts
@@ -25,7 +25,7 @@ import { existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, triggerEv
 import { EventEmitter } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from '../../../../../../vorgang-shared/test/vorgang';
@@ -47,10 +47,10 @@ describe('BescheidWizardAntragBescheidenComponent', () => {
   const abschliessenButton: string = getDataTestIdOf('wizard-abschliessen-button');
   const antragBescheidenSummary: string = getDataTestIdOf('antrag-bescheiden-summary');
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
   });
 
   beforeEach(async () => {
@@ -67,7 +67,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => {
       ],
       providers: [
         {
-          provide: BescheidService2,
+          provide: BescheidService,
           useValue: bescheidService,
         },
       ],
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts
index 9837cbe2bca5ed1e8ff4f9674d10895c476d7faf..54084e52870a6eb7a6bd67eb850afc327379eb59 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts
@@ -24,7 +24,7 @@
 import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-wizard-antrag-bescheiden-container',
@@ -36,7 +36,7 @@ export class BescheidWizardAntragBescheidenContainerComponent {
 
   @Output() vorgangAbgeschlossen: EventEmitter<void> = new EventEmitter<void>();
 
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
 
   public readonly BescheidWizardStep = BescheidWizardStep;
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts
index fc15a7f9282febbd25179f0b255a5781234bfb86..10d70055688bb3f42fa8b03308571e1a65a8fd59 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts
@@ -33,7 +33,7 @@ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
 import { CloseIconComponent, RadioButtonCardComponent, StampIconComponent } from '@ods/system';
 import { MockComponent } from 'ng-mocks';
 import { EMPTY, of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid';
 import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command';
 import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test';
@@ -52,7 +52,7 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => {
   let formService: BescheidFormService;
 
   beforeEach(async () => {
-    formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService2)));
+    formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService)));
     formService.submit = jest.fn().mockReturnValue(EMPTY);
 
     await TestBed.configureTestingModule({
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts
index abdb3be7cef699e775c5bbc324911d1ef71b7127..aeb48c72b6d64b7f188fdc0ddbca46d0ab7cdc38 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts
@@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, t
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource, createWizard } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
@@ -26,10 +26,10 @@ describe('BescheidWizardBescheidVersendenComponent', () => {
 
   const bescheidResource: BescheidResource = createBescheidResource();
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
   });
 
   beforeEach(async () => {
@@ -42,7 +42,7 @@ describe('BescheidWizardBescheidVersendenComponent', () => {
         MockComponent(BescheidWizardSummaryComponent),
         MockComponent(BescheidWizardBescheidVersendenSummaryComponent),
       ],
-      providers: [{ provide: BescheidService2, useValue: bescheidService }],
+      providers: [{ provide: BescheidService, useValue: bescheidService }],
     }).compileComponents();
 
     createComponent();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts
index 70408d0b23afb74630248f0a140e07f8f0ccf60a..dddaa1aa3d7a618f94cd04337976865837960f4e 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts
@@ -1,7 +1,7 @@
 import { BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard } from '@alfa-client/bescheid-shared';
 import { Component, inject, Input } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-wizard-bescheid-versenden-container',
@@ -17,7 +17,7 @@ export class BescheidWizardBescheidVersendenContainerComponent {
     return this._bescheidResource;
   }
 
-  private readonly bescheidService: BescheidService2 = inject(BescheidService2);
+  private readonly bescheidService: BescheidService = inject(BescheidService);
 
   public readonly wizard$: Observable<Wizard> = this.bescheidService.getWizard();
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts
index 3f2dd5b69457b1b28b56291e838c633fc17b120f..793d8ad2068db9b2e046b737fdc823ea35554092 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts
@@ -14,7 +14,7 @@ import { expect } from '@jest/globals';
 import { ButtonWithSpinnerComponent, TextareaEditorComponent, TextEditorComponent } from '@ods/component';
 import { MockComponent } from 'ng-mocks';
 import { EMPTY, of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource, createWizard } from '../../../../../../../../bescheid-shared/src/test/bescheid';
 import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../../command-shared/test/command';
 import { getDataTestIdOf } from '../../../../../../../../tech-shared/test/data-test';
@@ -31,12 +31,12 @@ describe('BescheidWizardBescheidVersendenSendenComponent', () => {
   const attachmentsTestId: string = getDataTestIdOf('bescheid-attachments');
   const empfaengerTestId: string = getDataTestIdOf('bescheid-nachricht-empfaenger');
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   let formService: BescheidFormService;
   let dialogRef: Mock<DialogRef<BescheidWizardDialogResult>>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     formService = new BescheidFormService(new FormBuilder(), useFromMock(bescheidService));
     formService.submit = jest.fn();
     dialogRef = mock(DialogRef<BescheidWizardDialogResult>);
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
index c818a3613876e7b6533d508d5714fbbfa5881330..24361e250e5216ffddf3cca5b3fe736d72e902f1 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts
@@ -22,22 +22,8 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared';
-import {
-  createEmptyStateResource,
-  createErrorStateResource,
-  createLoadingStateResource,
-  HasLinkPipe,
-  StateResource,
-} from '@alfa-client/tech-shared';
-import {
-  existsAsHtmlElement,
-  getElementComponentFromFixtureByCss,
-  Mock,
-  mock,
-  notExistsAsHtmlElement,
-  triggerEvent,
-  useFromMock,
-} from '@alfa-client/test-utils';
+import { createEmptyStateResource, createErrorStateResource, createLoadingStateResource, HasLinkPipe, StateResource, } from '@alfa-client/tech-shared';
+import { existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, notExistsAsHtmlElement, triggerEvent, useFromMock, } from '@alfa-client/test-utils';
 import { SpinnerComponent } from '@alfa-client/ui';
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { EventEmitter } from '@angular/core';
@@ -45,7 +31,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
 import { expect } from '@jest/globals';
 import { MockComponent } from 'ng-mocks';
-import { BescheidService2 } from '../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidResource, createBescheidStateResource } from '../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
 import { createProblemDetail } from '../../../../../tech-shared/test/error';
@@ -66,11 +52,11 @@ describe('BescheidWizardComponent', () => {
   const dokumenteHochladenStep: string = getDataTestIdOf('dokumente-hochladen-step');
   const bescheidVersendenStepTestId: string = getDataTestIdOf('bescheid-versenden-step');
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   let formService: BescheidFormService;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService));
   });
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts
index 47aa453fd30472816900af6f9f3c15c74063a05d..72ae74a6f1528cb4b2d77b1c90173d7ac8a7f4d4 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts
@@ -23,21 +23,12 @@
  */
 import { CommandResource } from '@alfa-client/command-shared';
 import { createErrorStateResource, StateResource } from '@alfa-client/tech-shared';
-import {
-  createDialogRefMock,
-  DialogRefMock,
-  existsAsHtmlElement,
-  getElementComponentFromFixtureByCss,
-  Mock,
-  mock,
-  triggerEvent,
-} from '@alfa-client/test-utils';
+import { createDialogRefMock, DialogRefMock, existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, triggerEvent, } from '@alfa-client/test-utils';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { expect } from '@jest/globals';
 import { ButtonWithSpinnerComponent } from '@ods/component';
 import { CheckIconComponent, CloseIconComponent } from '@ods/system';
-import { BescheidService2 } from 'libs/bescheid-shared/src/lib/bescheid2.service';
 import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid';
 import { createCommandStateResource, createSuccessfullyDoneCommandStateResource } from 'libs/command-shared/test/command';
 import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
@@ -45,11 +36,9 @@ import { createApiError } from 'libs/tech-shared/test/error';
 import { singleColdCompleted } from 'libs/tech-shared/test/marbles';
 import { MockComponent } from 'ng-mocks';
 import { EMPTY, of } from 'rxjs';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { BescheidFormService } from '../../bescheid.formservice';
-import {
-  BescheidWizardCancelDialogContainerComponent,
-  CancelWizardDialogData,
-} from './bescheid-wizard-cancel-dialog-container.component';
+import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, } from './bescheid-wizard-cancel-dialog-container.component';
 
 describe('BescheidWizardCancelDialogContainerComponent', () => {
   let component: BescheidWizardCancelDialogContainerComponent;
@@ -63,13 +52,13 @@ describe('BescheidWizardCancelDialogContainerComponent', () => {
   };
 
   let formService: Mock<BescheidFormService>;
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   let dialogRef: DialogRefMock;
 
   beforeEach(() => {
     formService = mock(BescheidFormService);
     formService.submit = jest.fn().mockReturnValue(EMPTY);
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     bescheidService.deleteBescheid.mockReturnValue(EMPTY);
     dialogRef = createDialogRefMock();
   });
@@ -84,7 +73,7 @@ describe('BescheidWizardCancelDialogContainerComponent', () => {
       ],
       providers: [
         {
-          provide: BescheidService2,
+          provide: BescheidService,
           useValue: bescheidService,
         },
         {
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts
index 2b2ee2327c607f41cc889b00a62c84ff3b9560b2..86c92eb7ab3afc5e14313729c86abf2683f540d0 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts
@@ -28,7 +28,7 @@ import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { Component, inject, OnDestroy, OnInit } from '@angular/core';
 import { Resource } from '@ngxp/rest';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { BescheidFormService } from '../../bescheid.formservice';
 
 export interface CancelWizardDialogData {
@@ -45,7 +45,7 @@ export interface CancelWizardDialogResult {
 export class BescheidWizardCancelDialogContainerComponent implements OnInit, OnDestroy {
   private readonly dialogData: CancelWizardDialogData = inject(DIALOG_DATA);
   private readonly dialogRef = inject(DialogRef);
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
   private readonly formService = inject(BescheidFormService);
 
   public saveStateResource$: Observable<StateResource<Resource>>;
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts
index 578b614b16d24e6b9d40ed36e1a0608b04781e24..277b8adbc085547d2088961f37f6ced2d8215d1e 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts
@@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, t
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
@@ -19,10 +19,10 @@ describe('BescheidWizardCreateDocumentButtonContainerComponent', () => {
   const bescheidDocument: BescheidDocument = createBescheidDocument();
   const bescheidResource: BescheidResource = createBescheidResource();
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
   });
 
   beforeEach(async () => {
@@ -31,7 +31,7 @@ describe('BescheidWizardCreateDocumentButtonContainerComponent', () => {
         BescheidWizardCreateDocumentButtonContainerComponent,
         MockComponent(BescheidWizardCreateDocumentButtonComponent),
       ],
-      providers: [{ provide: BescheidService2, useValue: bescheidService }],
+      providers: [{ provide: BescheidService, useValue: bescheidService }],
     }).compileComponents();
 
     createComponent();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts
index 63c525d76932091bdf971c5789c843568afd8112..ed17ac8a0eda8fa255e6e6d6e1d29757389fd9c0 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts
@@ -1,7 +1,7 @@
 import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared';
 import { Component, inject, Input } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-wizard-create-document-button-container',
@@ -10,7 +10,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc
 export class BescheidWizardCreateDocumentButtonContainerComponent {
   @Input() bescheidResource: BescheidResource;
 
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
 
   public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument();
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts
index 9171b0143e8af45416b48d4a779d6e277ad0a5ef..41f6bf9909990a455c8a0593c924ee711e3fbec7 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts
@@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, t
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidDocument } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
@@ -19,11 +19,11 @@ describe('BescheidWizardDocumentFileContainerComponent', () => {
 
   const bescheidDocument: BescheidDocument = createBescheidDocument();
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   let formService: Mock<BescheidFormService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     formService = mock(BescheidFormService);
   });
 
@@ -31,7 +31,7 @@ describe('BescheidWizardDocumentFileContainerComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [BescheidWizardDocumentFileContainerComponent, MockComponent(BescheidWizardDocumentFileComponent)],
       providers: [
-        { provide: BescheidService2, useValue: bescheidService },
+        { provide: BescheidService, useValue: bescheidService },
         { provide: BescheidFormService, useValue: formService },
       ],
     }).compileComponents();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts
index f50758a6f2914eacb0f1f0a3711e6d0eec3f5d13..0f25605973de0c2471f3aad418fd0ed29c41c566 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts
@@ -1,7 +1,7 @@
 import { BescheidDocument, BescheidWizardStep } from '@alfa-client/bescheid-shared';
 import { Component, inject } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { BescheidFormService } from '../../bescheid.formservice';
 
 @Component({
@@ -9,7 +9,7 @@ import { BescheidFormService } from '../../bescheid.formservice';
   templateUrl: './bescheid-wizard-document-file-container.component.html',
 })
 export class BescheidWizardDocumentFileContainerComponent {
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
   private readonly formService = inject(BescheidFormService);
 
   public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts
index 26fb71e977b88813e501e3adcebe112e4077c3fb..ca004d87ac37180dcd39a01c7193d8be3ac05cb4 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts
@@ -27,7 +27,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { expect } from '@jest/globals';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles';
@@ -52,10 +52,10 @@ describe('BescheidWizardDokumenteHochladenComponent', () => {
   const bescheidResource: BescheidResource = createBescheidResource();
   const bescheidDocument: BescheidDocument = createBescheidDocument();
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
   });
 
   beforeEach(async () => {
@@ -70,7 +70,7 @@ describe('BescheidWizardDokumenteHochladenComponent', () => {
         MockComponent(BescheidWizardDokumenteHochladenFormComponent),
         MockComponent(BescheidWizardStepperComponent),
       ],
-      providers: [{ provide: BescheidService2, useValue: bescheidService }],
+      providers: [{ provide: BescheidService, useValue: bescheidService }],
     }).compileComponents();
 
     createComponent();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts
index c15d92820a7e08b122ed18f729dc344adc8f8a58..1e2344a9af32c9933e649a85dce2c34c98c14434 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts
@@ -24,7 +24,7 @@
 import { BescheidDocument, BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared';
 import { Component, inject, Input, OnInit } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-wizard-dokumente-hochladen-container',
@@ -33,7 +33,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc
 export class BescheidWizardDokumenteHochladenContainerComponent implements OnInit {
   @Input() bescheidResource: BescheidResource;
 
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
 
   public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument();
   public isBescheidDocumentMissing: boolean = false;
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts
index aad7d40ccedf3a798acadb6be1b76e9560b43912..c8cc05ed2d82a5af88d111c21ff73468c973c72d 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts
@@ -3,7 +3,7 @@ import { getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid';
 import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test';
 import { createFile } from '../../../../../../tech-shared/test/file';
@@ -19,10 +19,10 @@ describe('BescheidWizardDokumentHochladenContainerButtonComponent', () => {
 
   const bescheidDocument: BescheidDocument = createBescheidDocument();
 
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
   });
 
   beforeEach(async () => {
@@ -31,7 +31,7 @@ describe('BescheidWizardDokumentHochladenContainerButtonComponent', () => {
         BescheidWizardUploadDocumentButtonContainerComponent,
         MockComponent(BescheidWizardUploadDocumentButtonComponent),
       ],
-      providers: [{ provide: BescheidService2, useValue: bescheidService }],
+      providers: [{ provide: BescheidService, useValue: bescheidService }],
     }).compileComponents();
 
     createComponent();
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts
index a874617f496f42ccb8492a8fd116ae29d2384d36..f504a66df6c2d38d42f7dcc9954f8bedf25987a8 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts
@@ -1,7 +1,7 @@
 import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared';
 import { Component, inject, Input } from '@angular/core';
 import { Observable } from 'rxjs';
-import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-bescheid-wizard-upload-document-button-container',
@@ -10,7 +10,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc
 export class BescheidWizardUploadDocumentButtonContainerComponent {
   @Input() bescheidResource: BescheidResource;
 
-  private readonly bescheidService = inject(BescheidService2);
+  private readonly bescheidService = inject(BescheidService);
 
   public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument();
 
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
index 66689e97b55fe62c4176df10614f23737020c5ba..51b0d28323a915e11be5f784d7d3f54720db4dcc 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
@@ -12,7 +12,7 @@ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
 import { SingleFileUploadEditorComponent } from '@ods/component';
 import { BescheidUploadIconComponent, SpinnerIconComponent } from '@ods/system';
 import { MockComponent } from 'ng-mocks';
-import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service';
 import {
   createBescheidDocument,
   createBescheidResource,
@@ -34,7 +34,7 @@ describe('BescheidWizardDokumentHochladenButtonComponent', () => {
   let formService: BescheidFormService;
 
   beforeEach(() => {
-    formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService2)));
+    formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService)));
   });
 
   beforeEach(async () => {
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 86c5f0caee0f27416b51343699e465ec2eb4ef47..e83513e53ac34f7885cb3b34aecb0c0a03b2002a 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
@@ -33,7 +33,7 @@ import { faker } from '@faker-js/faker';
 import { expect } from '@jest/globals';
 import { ResourceUri } from '@ngxp/rest';
 import { EMPTY, Observable, of } from 'rxjs';
-import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 import { createBescheid, createBescheidResource, createWizard } from '../../../../bescheid-shared/src/test/bescheid';
 import { createSuccessfullyDoneCommandStateResource } from '../../../../command-shared/test/command';
 import { createProblemDetail } from '../../../../tech-shared/test/error';
@@ -45,13 +45,13 @@ registerLocaleData(localeDe);
 
 describe('BescheidFormService', () => {
   let service: BescheidFormService;
-  let bescheidService: Mock<BescheidService2>;
+  let bescheidService: Mock<BescheidService>;
   const now: Date = new Date();
   Date.now = jest.fn().mockReturnValue(now);
   const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
 
   beforeEach(() => {
-    bescheidService = mock(BescheidService2);
+    bescheidService = mock(BescheidService);
     service = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService));
     service.setVorgangWithEingangResource(vorgangWithEingangResource);
   });
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 eb96bb9d90af5f6729a3f251ea01bc2e91c58eb7..4b1c8c81fbf8029863adabbb612c8e02c0113f33 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
@@ -30,7 +30,7 @@ import { FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl,
 import { getUrl, hasLink, ResourceUri } from '@ngxp/rest';
 import { isNil } from 'lodash-es';
 import { first, Observable, startWith, switchMap } from 'rxjs';
-import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Injectable()
 export class BescheidFormService extends AbstractFormService<CommandResource> {
@@ -49,7 +49,7 @@ export class BescheidFormService extends AbstractFormService<CommandResource> {
 
   constructor(
     formBuilder: UntypedFormBuilder,
-    private readonly bescheidService: BescheidService2,
+    private readonly bescheidService: BescheidService,
   ) {
     super(formBuilder);
   }
diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts
index 94e4e5de89a58a43eaacae49d8473f9e979afb7b..99491552ff5c16f176038c40c7546f467c7389e1 100644
--- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts
@@ -21,8 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
-import { Mock, existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import { existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { registerLocaleData } from '@angular/common';
 import localeDe from '@angular/common/locales/de';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
@@ -33,6 +32,7 @@ import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid';
 import { FormatFullDatePipe } from 'libs/tech-shared/src/lib/pipe/format-full-date.pipe';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { of } from 'rxjs';
+import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service';
 import { BeschiedenDateContainerComponent } from './beschieden-date-container.component';
 
 registerLocaleData(localeDe);
diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts
index 21a00df187c31c3f899af9f1b1f4c6347b867495..8d0832c56c9476835739eee546297ad75e93c8ae 100644
--- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts
@@ -21,9 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared';
+import { BescheidResource } from '@alfa-client/bescheid-shared';
 import { Component, OnInit } from '@angular/core';
 import { Observable } from 'rxjs';
+import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-beschieden-date-container',
diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts
index c2ace7dc8dfdb9b91b374315dcd557b38962c0e9..e2dadc39d2a1585c73150daa3d8e4172fc24fe0d 100644
--- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts
@@ -21,12 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
-import { Mock, existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import { existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 import { BeschiedenDateContainerComponent } from './beschieden-date-container/beschieden-date-container.component';
 import { BeschiedenDateInVorgangContainerComponent } from './beschieden-date-in-vorgang-container.component';
 
@@ -40,10 +40,7 @@ describe('BeschiedenDateInVorgangContainerComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      declarations: [
-        BeschiedenDateInVorgangContainerComponent,
-        MockComponent(BeschiedenDateContainerComponent),
-      ],
+      declarations: [BeschiedenDateInVorgangContainerComponent, MockComponent(BeschiedenDateContainerComponent)],
       providers: [
         {
           provide: BescheidService,
diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts
index 642c79e07200ba6fb597887159d8c9e411f084cf..fc954a0e5722f37902a46bc9dec84f332269cdac 100644
--- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts
@@ -21,9 +21,9 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidService } from '@alfa-client/bescheid-shared';
 import { Component, OnInit } from '@angular/core';
 import { Observable } from 'rxjs';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-beschieden-date-in-vorgang-container',
diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts
index b95396349c8cb79f0e97601877a7fcd108529e56..971f3982258f6c9b65e7c031763595d20a3f900a 100644
--- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts
+++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts
@@ -123,21 +123,30 @@ describe('OzgcloudDialogService', () => {
   });
 
   describe('openWizard', () => {
+    beforeEach(() => {
+      service.openInCallingComponentContext = jest.fn();
+    });
+
     it('should open wizard dialog', () => {
-      service.openWizard(component);
+      service.openWizard(component, viewContainerRef);
 
-      expect(dialog.open).toHaveBeenCalledWith(component, {
-        ...service.WIZARD_DIALOG_CONFIG,
-      });
+      expect(service.openInCallingComponentContext).toHaveBeenCalledWith(
+        component,
+        viewContainerRef,
+        undefined,
+        service.WIZARD_DIALOG_CONFIG,
+      );
     });
 
     it('should open wizard dialog with data', () => {
-      service.openWizard(component, dialogData);
+      service.openWizard(component, viewContainerRef, dialogData);
 
-      expect(dialog.open).toHaveBeenCalledWith(component, {
-        ...service.WIZARD_DIALOG_CONFIG,
-        data: dialogData,
-      });
+      expect(service.openInCallingComponentContext).toHaveBeenCalledWith(
+        component,
+        viewContainerRef,
+        dialogData,
+        service.WIZARD_DIALOG_CONFIG,
+      );
     });
   });
 
diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts
index aebed88efe5a54fafce9ec09283f0314c744fc5e..cbea4f7eb2ab5ed2a177d1ac3809fae3fabaaae8 100644
--- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts
+++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts
@@ -43,8 +43,8 @@ export class OzgcloudDialogService {
     disableClose: true,
   };
 
-  public openWizard<C, D, R = unknown>(component: ComponentType<C>, data?: D): DialogRef<R> {
-    return this.openDialog<C, R>(component, this.buildDialogConfigWithData<D>(data, this.WIZARD_DIALOG_CONFIG));
+  public openWizard<C, D, R = unknown>(component: ComponentType<C>, viewContainerRef: ViewContainerRef, data?: D): DialogRef<R> {
+    return this.openInCallingComponentContext<C, D, R>(component, viewContainerRef, data, this.WIZARD_DIALOG_CONFIG);
   }
 
   /**
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
index 932363f2b33c3e0ebf50e8082a9389fd83a0a5a7..34b1e2377fe9e2b125d405b1412227dc9b6e3dae 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
@@ -25,17 +25,7 @@ import { BescheidWizardContainerComponent } from '@alfa-client/bescheid';
 import { BescheidWizardDialogResult } from '@alfa-client/bescheid-shared';
 import { CommandResource } from '@alfa-client/command-shared';
 import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
-import {
-  createDialogRefMock,
-  DialogRefMock,
-  getElementComponentFromFixtureByCss,
-  getMockComponent,
-  Mock,
-  mock,
-  notExistsAsHtmlElement,
-  tooltipExistsWithText,
-  triggerEvent,
-} from '@alfa-client/test-utils';
+import { createDialogRefMock, DialogRefMock, getElementComponentFromFixtureByCss, getMockComponent, Mock, mock, notExistsAsHtmlElement, tooltipExistsWithText, triggerEvent, } from '@alfa-client/test-utils';
 import { OzgcloudDialogService } from '@alfa-client/ui';
 import { VorgangCommandService, VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { DialogRef } from '@angular/cdk/dialog';
@@ -47,7 +37,6 @@ import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
 import { Observable, of } from 'rxjs';
-import { VorgangDetailBescheidenComponent } from '../../vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component';
 import { BescheidenButtonComponent } from './bescheiden-button.component';
 
 describe('BescheidenButtonComponent', () => {
@@ -57,11 +46,13 @@ describe('BescheidenButtonComponent', () => {
   const bescheidenButton: string = getDataTestIdAttributeOf('bescheiden-button');
   const bescheidenIconButton: string = getDataTestIdAttributeOf('bescheiden-icon-button');
 
+  const viewContainerRef = <any>{};
+
   let vorgangCommandService: Mock<VorgangCommandService>;
   let ozgcloudDialogService: Mock<OzgcloudDialogService>;
   let vorgangService: Mock<VorgangService>;
 
-  const dialogRef = <DialogRef<VorgangDetailBescheidenComponent>>{};
+  const dialogRef = <DialogRef<BescheidWizardDialogResult>>{};
 
   beforeEach(() => {
     vorgangCommandService = mock(VorgangCommandService);
@@ -96,6 +87,7 @@ describe('BescheidenButtonComponent', () => {
 
     fixture = TestBed.createComponent(BescheidenButtonComponent);
     component = fixture.componentInstance;
+    component.viewContainerRef = viewContainerRef;
     ozgcloudDialogService.openWizard = jest.fn().mockReturnValue(dialogRef);
     fixture.detectChanges();
   });
@@ -196,7 +188,7 @@ describe('BescheidenButtonComponent', () => {
 
         component.openBescheidenWizard();
 
-        expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, {
+        expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, viewContainerRef, {
           vorgangWithEingangResource: vorgang,
         });
       });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
index 2438d67f4992f9b7fd3078d139b0148e0e3a9864..c6b90c722c890f051a37a8233a068896288d92b4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
@@ -28,7 +28,7 @@ import { createEmptyStateResource, isNotNil, StateResource } from '@alfa-client/
 import { OzgcloudDialogService } from '@alfa-client/ui';
 import { VorgangCommandService, VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared';
 import { DialogRef } from '@angular/cdk/dialog';
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, inject, Input, OnInit, ViewContainerRef } from '@angular/core';
 import { hasLink } from '@ngxp/rest';
 import { Observable, of } from 'rxjs';
 
@@ -41,6 +41,11 @@ export class BescheidenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
+  viewContainerRef = inject(ViewContainerRef);
+  private readonly vorgangCommandService = inject(VorgangCommandService);
+  private readonly vorgangService = inject(VorgangService);
+  private readonly ozgcloudDialogService = inject(OzgcloudDialogService);
+
   commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
@@ -55,12 +60,6 @@ export class BescheidenButtonComponent implements OnInit {
       );
   }
 
-  constructor(
-    private vorgangCommandService: VorgangCommandService,
-    private vorgangService: VorgangService,
-    private ozgcloudDialogService: OzgcloudDialogService,
-  ) {}
-
   ngOnInit(): void {
     this.commandStateResource$ = this.vorgangCommandService.getBeschiedenCommand();
   }
@@ -86,7 +85,7 @@ export class BescheidenButtonComponent implements OnInit {
       BescheidWizardContainerComponent,
       BescheidWizardDialogData,
       BescheidWizardDialogResult
-    >(BescheidWizardContainerComponent, dialogData);
+    >(BescheidWizardContainerComponent, this.viewContainerRef, dialogData);
     dialogRef.closed.subscribe((dialogResult: BescheidWizardDialogResult) => this.handleBescheidWizardClosed(dialogResult));
   }
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts
index 150d74f675519f8e62932689e2f2294daeea5fe5..8bba80337407449348426a55419f82498d2fc787 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts
@@ -21,19 +21,35 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { CommandResource } from '@alfa-client/command-shared';
+import { CommandResource, CommandService } from '@alfa-client/command-shared';
 import { LoeschAnforderungService } from '@alfa-client/loesch-anforderung-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
-import { isResourceNotFoundError, StateResource } from '@alfa-client/tech-shared';
+import { isResourceNotFoundError, ResourceRepository, StateResource } from '@alfa-client/tech-shared';
 import { Messages, SnackBarService } from '@alfa-client/ui';
 import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Component, OnInit } from '@angular/core';
 import { Observable, tap } from 'rxjs';
+import { BescheidListResourceService, createBescheidListResourceService, } from '../../../../bescheid-shared/src/lib/bescheid-list-resource-service';
+import { BescheidResourceService, createBescheidResourceService, } from '../../../../bescheid-shared/src/lib/bescheid-resource-service';
+import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service';
 
 @Component({
   selector: 'alfa-vorgang-detail-page',
   templateUrl: './vorgang-detail-page.component.html',
   styleUrls: ['./vorgang-detail-page.component.scss'],
+  providers: [
+    BescheidService,
+    {
+      provide: BescheidResourceService,
+      useFactory: createBescheidResourceService,
+      deps: [ResourceRepository, CommandService, VorgangService],
+    },
+    {
+      provide: BescheidListResourceService,
+      useFactory: createBescheidListResourceService,
+      deps: [ResourceRepository, VorgangService],
+    },
+  ],
 })
 export class VorgangDetailPageComponent implements OnInit {
   vorgangStateResource$: Observable<StateResource<VorgangWithEingangResource>>;