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 bb5149c4a69fe064abed82a848a63e0318b88cf9..abd5f0d05bd073f54ed85352b565fa1df62350d3 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
@@ -17,6 +17,10 @@ import {
 import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository';
 import { CommandOrder, CommandService, CreateCommand } from '@alfa-client/command-shared';
 import faker from '@faker-js/faker';
+import { createBescheidStateResource } from '../test/bescheid';
+import { createCommandStateResource } from '../../../command-shared/test/command';
+import { CommandLinkRel } from '../../../command-shared/src/lib/command.linkrel';
+import { cold } from 'jest-marbles';
 
 describe('BescheidService', () => {
   let service: BescheidService;
@@ -74,31 +78,70 @@ describe('BescheidService', () => {
 
   describe('bescheiderstellungUeberspringen', () => {
     let vorgang: VorgangWithEingangResource;
+    let getBescheidDraft: jest.Mock;
+    let deleteBescheid: jest.Mock;
 
     beforeEach(() => {
       vorgang = createVorgangWithEingangResource();
+      getBescheidDraft = service.getBescheidDraft = jest.fn();
+      deleteBescheid = service.deleteBescheid = jest.fn();
     });
 
-    it('should create command', () => {
-      service.bescheiderstellungUeberspringen(vorgang);
+    it('should get bescheid draft', (done) => {
+      getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
+      commandService.createCommand.mockReturnValue(of(createCommandStateResource()));
+      deleteBescheid.mockReturnValue(of(createCommandStateResource()));
 
-      expect(commandService.createCommand).toHaveBeenCalledWith(
-        vorgang,
-        VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
-        {
-          order: CommandOrder.VORGANG_ABSCHLIESSEN,
-          body: null,
-        } as CreateCommand,
-      );
+      const command$ = service.bescheiderstellungUeberspringen(vorgang);
+
+      command$.subscribe(() => {
+        expect(getBescheidDraft).toHaveBeenCalled();
+        done();
+      });
+    });
+
+    it('should vorgang abschliessen', (done) => {
+      getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
+      commandService.createCommand.mockReturnValue(of(createCommandStateResource()));
+      deleteBescheid.mockReturnValue(of(createCommandStateResource()));
+
+      const command$ = service.bescheiderstellungUeberspringen(vorgang);
+
+      command$.subscribe(() => {
+        expect(commandService.createCommand).toHaveBeenCalledWith(
+          vorgang,
+          VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+          {
+            order: CommandOrder.VORGANG_ABSCHLIESSEN,
+            body: null,
+          } as CreateCommand,
+        );
+        done();
+      });
+    });
+
+    it('should delete bescheid', (done) => {
+      getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
+      commandService.createCommand.mockReturnValue(of(createCommandStateResource()));
+      deleteBescheid.mockReturnValue(of(createCommandStateResource()));
+
+      const command$ = service.bescheiderstellungUeberspringen(vorgang);
+
+      command$.subscribe(() => {
+        expect(deleteBescheid).toHaveBeenCalled();
+        done();
+      });
     });
 
     it('should return command', () => {
-      const command = createEmptyStateResource();
-      commandService.createCommand.mockReturnValue(command);
+      const deleteBescheidCommand = createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE]);
+      getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
+      commandService.createCommand.mockReturnValue(of(createCommandStateResource()));
+      deleteBescheid.mockReturnValue(of(deleteBescheidCommand));
 
-      const createdCommand = service.bescheiderstellungUeberspringen(vorgang);
+      const command$ = service.bescheiderstellungUeberspringen(vorgang);
 
-      expect(createdCommand).toEqual(command);
+      expect(command$).toBeObservable(cold('(a|)', { a: deleteBescheidCommand }));
     });
   });
 
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 ecb47bcb7af8a4f29c20685c00fed5202aebbe24..e46d23967d0db4151df9ed34471ce1d760dca9f9 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
@@ -6,7 +6,7 @@ import {
   VorgangWithEingangResource,
 } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
-import { Observable, of } from 'rxjs';
+import { Observable, of, switchMap } from 'rxjs';
 import { 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';
@@ -63,13 +63,23 @@ export class BescheidService {
   public bescheiderstellungUeberspringen(
     vorgangWithEingangResource: VorgangWithEingangResource,
   ): Observable<StateResource<CommandResource>> {
-    return this.commandService.createCommand(
-      vorgangWithEingangResource,
-      VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
-      {
-        order: CommandOrder.VORGANG_ABSCHLIESSEN,
-        body: null,
-      },
+    return this.getBescheidDraft().pipe(
+      switchMap((bescheidStateResource) =>
+        this.commandService
+          .createCommand(
+            vorgangWithEingangResource,
+            VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+            {
+              order: CommandOrder.VORGANG_ABSCHLIESSEN,
+              body: null,
+            },
+          )
+          .pipe(
+            switchMap(() =>
+              this.deleteBescheid(bescheidStateResource.resource.id, vorgangWithEingangResource),
+            ),
+          ),
+      ),
     );
   }
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts
index d0f1d93894ddd296120031904fba446c59416c7e..4c10e6dd53054a691a86f3dd75cb5bc07b079c73 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts
@@ -8,14 +8,12 @@ import { MatIcon } from '@angular/material/icon';
 import { BescheidService } from '@alfa-client/bescheid-shared';
 import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
-import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
+import { BescheiderstellungUeberspringenDailogData } from '@alfa-client/vorgang-detail';
 import { createCommandStateResource } from '../../../../../../../../command-shared/test/command';
 import { lastValueFrom, of } from 'rxjs';
-import { BescheiderstellungUeberspringenDailogData } from '@alfa-client/vorgang-detail';
 import { cold } from 'jest-marbles';
-import { createBescheidStateResource } from '../../../../../../../../bescheid-shared/src/test/bescheid';
+import { createEmptyStateResource } from '@alfa-client/tech-shared';
 import { CommandLinkRel } from '../../../../../../../../command-shared/src/lib/command.linkrel';
-import { CommandResource } from '@alfa-client/command-shared';
 
 describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => {
   let component: VorgangDetailBescheidenUeberspringenDialogComponent;
@@ -79,98 +77,57 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => {
   });
 
   describe('onConfirm', () => {
-    it('should get bescheid draft', async () => {
-      const lastValue = givenSuccessfullyLoadedResources();
-
-      when();
-
-      await lastValueToEmit(lastValue);
-      expect(bescheidService.getBescheidDraft).toHaveBeenCalled();
-    });
-
-    it('should überspringen Bescheiderstellung', async () => {
-      const lastValue = givenSuccessfullyLoadedResources();
-
-      when();
-
-      await lastValueToEmit(lastValue);
-      expect(bescheidService.bescheiderstellungUeberspringen).toHaveBeenCalled();
-    });
+    it('should Bescheiderstellung Überspringen', async () => {
+      bescheidService.bescheiderstellungUeberspringen.mockReturnValue(
+        of(createCommandStateResource()),
+      );
 
-    it('should delete Bescheid', async () => {
-      const lastValue = givenSuccessfullyLoadedResources();
+      component.onConfirm();
 
-      when();
+      await lastValueFrom(component.bescheiderstellungUeberspringen$);
 
-      await lastValueToEmit(lastValue);
-      expect(bescheidService.deleteBescheid).toHaveBeenCalled();
+      expect(bescheidService.bescheiderstellungUeberspringen).toHaveBeenCalledWith(
+        vorgangWithEingangResource,
+      );
     });
 
-    it('should emit commands', () => {
-      const ueberspringenCommandStateResource = createCommandStateResource();
-      const deleteCommandStateResource = createCommandStateResource();
-      bescheidService.getBescheidDraft.mockReturnValue(
-        cold('a', { a: createBescheidStateResource() }),
-      );
+    it('should emit values', () => {
+      const loadingCommand = createEmptyStateResource(true);
+      const bescheiderstellungUeberspringenCommand = createCommandStateResource();
       bescheidService.bescheiderstellungUeberspringen.mockReturnValue(
-        cold('a', { a: ueberspringenCommandStateResource }),
+        cold('-a', { a: bescheiderstellungUeberspringenCommand }),
       );
-      bescheidService.deleteBescheid.mockReturnValue(cold('-a', { a: deleteCommandStateResource }));
 
-      when();
+      component.onConfirm();
 
       expect(component.bescheiderstellungUeberspringen$).toBeObservable(
-        cold('ab', {
-          a: createEmptyStateResource(true),
-          b: deleteCommandStateResource,
-        }),
+        cold('ab', { a: loadingCommand, b: bescheiderstellungUeberspringenCommand }),
       );
     });
 
     it('should close all dialogs on success', async () => {
-      const lastValue = givenSuccessfullyLoadedResources();
-
-      when();
-
-      await lastValueToEmit(lastValue);
-      expect(ozgcloudDialogService.closeAll).toHaveBeenCalled();
-    });
-
-    it('should not close all dialogs on get bescheid draft failure', async () => {
-      bescheidService.getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
       bescheidService.bescheiderstellungUeberspringen.mockReturnValue(
         of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])),
       );
-      const lastValue = createCommandStateResource();
-      bescheidService.deleteBescheid.mockReturnValue(of(lastValue));
 
-      when();
+      component.onConfirm();
 
-      await expect(lastValueFrom(component.bescheiderstellungUeberspringen$)).resolves.toEqual(
-        lastValue,
-      );
-      expect(ozgcloudDialogService.closeAll).not.toHaveBeenCalled();
+      await lastValueFrom(component.bescheiderstellungUeberspringen$);
+
+      expect(ozgcloudDialogService.closeAll).toHaveBeenCalled();
     });
 
-    function givenSuccessfullyLoadedResources(): StateResource<CommandResource> {
-      bescheidService.getBescheidDraft.mockReturnValue(of(createBescheidStateResource()));
+    it('should not close all dialogs on failure', async () => {
       bescheidService.bescheiderstellungUeberspringen.mockReturnValue(
-        of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])),
+        of(createCommandStateResource()),
       );
-      const lastValue = createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE]);
-      bescheidService.deleteBescheid.mockReturnValue(of(lastValue));
-      return lastValue;
-    }
 
-    function when(): void {
       component.onConfirm();
-    }
 
-    async function lastValueToEmit(lastValue: StateResource<CommandResource>) {
-      await expect(lastValueFrom(component.bescheiderstellungUeberspringen$)).resolves.toEqual(
-        lastValue,
-      );
-    }
+      await lastValueFrom(component.bescheiderstellungUeberspringen$);
+
+      expect(ozgcloudDialogService.closeAll).not.toHaveBeenCalled();
+    });
   });
 
   describe('onClose', () => {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
index 1de2673a968c331d0055a71acb4e414c8f1c6698..6af40f56481e52fe3a1ecfacf3ac8fabbe9765e3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
@@ -2,7 +2,7 @@ import { Component, Inject } from '@angular/core';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { OzgcloudDialogService } from '@alfa-client/ui';
 import { BescheidService } from '@alfa-client/bescheid-shared';
-import { Observable, startWith, switchMap, tap } from 'rxjs';
+import { Observable, startWith, tap } from 'rxjs';
 import { CommandResource, isSuccessfulDone } from '@alfa-client/command-shared';
 import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
 import { BescheiderstellungUeberspringenDailogData } from '@alfa-client/vorgang-detail';
@@ -26,29 +26,16 @@ export class VorgangDetailBescheidenUeberspringenDialogComponent {
   }
 
   onConfirm() {
-    this.bescheiderstellungUeberspringen$ = this.bescheidService.getBescheidDraft().pipe(
-      switchMap((bescheidStateResource) =>
-        this.bescheidService
-          .bescheiderstellungUeberspringen(this.dialogData.vorgangWithEingangResource)
-          .pipe(
-            switchMap(() =>
-              this.bescheidService
-                .deleteBescheid(
-                  bescheidStateResource.resource.id,
-                  this.dialogData.vorgangWithEingangResource,
-                )
-                .pipe(
-                  tap((command) => {
-                    if (isSuccessfulDone(command.resource)) {
-                      this.ozgcloudDialogService.closeAll();
-                    }
-                  }),
-                ),
-            ),
-          ),
-      ),
-      startWith(createEmptyStateResource<CommandResource>(true)),
-    );
+    this.bescheiderstellungUeberspringen$ = this.bescheidService
+      .bescheiderstellungUeberspringen(this.dialogData.vorgangWithEingangResource)
+      .pipe(
+        startWith(createEmptyStateResource<CommandResource>(true)),
+        tap((command) => {
+          if (isSuccessfulDone(command.resource)) {
+            this.ozgcloudDialogService.closeAll();
+          }
+        }),
+      );
   }
 
   onClose() {