diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
index c7dc8db99cd709ae5909a5b10db662801357276e..4c05bd47b57fa99637c1ca250fce6105363dfa46 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts
@@ -1,6 +1,7 @@
 import { Resource } from '@ngxp/rest';
 
 export interface Bescheid {
+  id?: string;
   beschiedenAm: string;
   bewilligt: boolean;
   bescheidDocument?: string;
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 22aa4fbf7a5fb3411866f82b3feb2947fc246c93..3113ffb78ef2f532a99726a91adaeae3475f00e8 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
@@ -1,15 +1,27 @@
 import { mock, Mock, useFromMock } from '@alfa-client/test-utils';
-import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import {
+  VorgangService,
+  VorgangWithEingangLinkRel,
+  VorgangWithEingangResource,
+} from '@alfa-client/vorgang-shared';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { BescheidFacade } from './+state/bescheid.facade';
 import { BescheidService } from './bescheid.service';
 import { buildCreateBescheidCommand } from './bescheid.util';
 import { Observable, of } from 'rxjs';
-import { createStateResource, StateResource } from '@alfa-client/tech-shared';
+import {
+  createEmptyStateResource,
+  createStateResource,
+  StateResource,
+} from '@alfa-client/tech-shared';
 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 { createBescheidResource } from '../test/bescheid';
+import { createCommandStateResource } from '../../../command-shared/test/command';
 import { singleCold } from '../../../tech-shared/src/lib/resource/marbles';
 import { BescheidResource } from './bescheid.model';
-import { createBescheidResource } from '../test/bescheid';
+import { cold } from 'jest-marbles';
 
 describe('BescheidService', () => {
   let service: BescheidService;
@@ -17,6 +29,7 @@ describe('BescheidService', () => {
   let facade: Mock<BescheidFacade>;
   let vorgangService: Mock<VorgangService>;
   let resourceRepository: Mock<ResourceRepository>;
+  let commandService: Mock<CommandService>;
 
   const vorgangWithEingangStateResource$: Observable<StateResource<VorgangWithEingangResource>> =
     of(createStateResource(createVorgangWithEingangResource()));
@@ -25,12 +38,13 @@ describe('BescheidService', () => {
     facade = mock(BescheidFacade);
     vorgangService = mock(VorgangService);
     resourceRepository = mock(ResourceRepository);
-
+    commandService = mock(CommandService);
     vorgangService.getVorgangWithEingang.mockReturnValue(vorgangWithEingangStateResource$);
 
     service = new BescheidService(
       useFromMock(facade),
       useFromMock(vorgangService),
+      useFromMock(commandService),
       useFromMock(resourceRepository),
     );
   });
@@ -73,7 +87,11 @@ describe('BescheidService', () => {
   });
 
   describe('createBescheid', () => {
-    const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
+    let vorgangWithEingang: VorgangWithEingangResource;
+
+    beforeEach(() => {
+      vorgangWithEingang = createVorgangWithEingangResource();
+    });
 
     it('should call facade', () => {
       service.createBescheid(vorgangWithEingang);
@@ -84,4 +102,126 @@ describe('BescheidService', () => {
       );
     });
   });
+
+  describe('bescheidLoeschenUndErstellungUeberspringen', () => {
+    let vorgangWithEingangResource: VorgangWithEingangResource;
+    let bescheidResource: BescheidResource;
+    let bescheidErstellungUeberspringen: jest.Mock;
+    let deleteBescheid: jest.Mock;
+
+    beforeEach(() => {
+      vorgangWithEingangResource = createVorgangWithEingangResource();
+      bescheidResource = createBescheidResource();
+      bescheidErstellungUeberspringen = service.bescheidErstellungUeberspringen = jest.fn();
+      deleteBescheid = service.deleteBescheid = jest.fn();
+      bescheidErstellungUeberspringen.mockReturnValue(of(createCommandStateResource()));
+      deleteBescheid.mockReturnValue(of(createCommandStateResource()));
+    });
+
+    it('should Bescheiderstellung überspringen', (done) => {
+      const command$ = service.bescheidLoeschenUndErstellungUeberspringen(
+        vorgangWithEingangResource,
+        bescheidResource,
+      );
+
+      command$.subscribe(() => {
+        expect(bescheidErstellungUeberspringen).toHaveBeenCalledWith(vorgangWithEingangResource);
+        done();
+      });
+    });
+
+    it('should Bescheid löschen', (done) => {
+      const command$ = service.bescheidLoeschenUndErstellungUeberspringen(
+        vorgangWithEingangResource,
+        bescheidResource,
+      );
+
+      command$.subscribe(() => {
+        expect(deleteBescheid).toHaveBeenCalledWith(
+          bescheidResource.id,
+          vorgangWithEingangResource,
+        );
+        done();
+      });
+    });
+
+    it('should emit delete bescheid command', () => {
+      const deleteBescheidCommand = createCommandStateResource();
+      deleteBescheid.mockReturnValue(of(deleteBescheidCommand));
+
+      const command$ = service.bescheidLoeschenUndErstellungUeberspringen(
+        vorgangWithEingangResource,
+        bescheidResource,
+      );
+
+      expect(command$).toBeObservable(cold('(a|)', { a: deleteBescheidCommand }));
+    });
+  });
+
+  describe('bescheidErstellungUeberspringen', () => {
+    let vorgangWithEingangResource: VorgangWithEingangResource;
+
+    beforeEach(() => {
+      vorgangWithEingangResource = createVorgangWithEingangResource();
+      commandService.createCommand.mockReturnValue(of(createCommandStateResource()));
+    });
+
+    it('should create command', (done) => {
+      const command$ = service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
+
+      command$.subscribe(() => {
+        expect(commandService.createCommand).toHaveBeenCalledWith(
+          vorgangWithEingangResource,
+          VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+          {
+            order: CommandOrder.VORGANG_ABSCHLIESSEN,
+            body: null,
+          } as CreateCommand,
+        );
+        done();
+      });
+    });
+
+    it('should return command', () => {
+      const command = createCommandStateResource();
+      commandService.createCommand.mockReturnValue(of(command));
+
+      const command$ = service.bescheidErstellungUeberspringen(vorgangWithEingangResource);
+
+      expect(command$).toBeObservable(cold('(a|)', { a: command }));
+    });
+  });
+
+  describe('deleteBescheid', () => {
+    let bescheidId: string;
+    let vorgang: VorgangWithEingangResource;
+
+    beforeEach(() => {
+      bescheidId = faker.datatype.uuid();
+      vorgang = createVorgangWithEingangResource();
+    });
+
+    it('should create command', () => {
+      service.deleteBescheid(bescheidId, vorgang);
+
+      expect(commandService.createCommand).toHaveBeenCalledWith(
+        vorgang,
+        VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+        {
+          order: CommandOrder.DELETE_BESCHEID,
+          body: null,
+          relationId: bescheidId,
+        } as CreateCommand,
+      );
+    });
+
+    it('should return command', () => {
+      const command = createEmptyStateResource();
+      commandService.createCommand.mockReturnValue(command);
+
+      const createdCommand = service.deleteBescheid(bescheidId, vorgang);
+
+      expect(createdCommand).toEqual(command);
+    });
+  });
 });
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 6da8f80a4acffff5bed60dd3395f2d9a031bed07..8f5b54ded79a63c59a8b1b946dc83b290933227f 100644
--- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
+++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts
@@ -1,4 +1,4 @@
-import { CommandResource } from '@alfa-client/command-shared';
+import { CommandOrder, CommandResource, CommandService } from '@alfa-client/command-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import {
   VorgangService,
@@ -6,7 +6,7 @@ import {
   VorgangWithEingangResource,
 } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
-import { Observable, of } from 'rxjs';
+import { Observable, 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';
@@ -21,6 +21,7 @@ export class BescheidService {
   constructor(
     private readonly facade: BescheidFacade,
     private readonly vorgangService: VorgangService,
+    private readonly commandService: CommandService,
     repository: ResourceRepository,
   ) {
     this.resourceService = new ResourceService(this.buildConfig(), repository);
@@ -46,4 +47,41 @@ export class BescheidService {
   public createBescheid(vorgangWithEingang: VorgangWithEingangResource, bescheid?: Bescheid): void {
     this.facade.createBescheid(vorgangWithEingang, buildCreateBescheidCommand(bescheid));
   }
+
+  public bescheidLoeschenUndErstellungUeberspringen(
+    vorgangWithEingangResource: VorgangWithEingangResource,
+    bescheidResource: BescheidResource,
+  ): Observable<StateResource<CommandResource>> {
+    return this.bescheidErstellungUeberspringen(vorgangWithEingangResource).pipe(
+      switchMap(() => this.deleteBescheid(bescheidResource.id, vorgangWithEingangResource)),
+    );
+  }
+
+  public bescheidErstellungUeberspringen(
+    vorgangWithEingangResource: VorgangWithEingangResource,
+  ): Observable<StateResource<CommandResource>> {
+    return this.commandService.createCommand(
+      vorgangWithEingangResource,
+      VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+      {
+        order: CommandOrder.VORGANG_ABSCHLIESSEN,
+        body: null,
+      },
+    );
+  }
+
+  public deleteBescheid(
+    bescheidId: string,
+    vorgangWithEingangResource: VorgangWithEingangResource,
+  ): Observable<StateResource<CommandResource>> {
+    return this.commandService.createCommand(
+      vorgangWithEingangResource,
+      VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+      {
+        order: CommandOrder.DELETE_BESCHEID,
+        relationId: bescheidId,
+        body: null,
+      },
+    );
+  }
 }
diff --git a/alfa-client/libs/bescheid-shared/src/test/bescheid.ts b/alfa-client/libs/bescheid-shared/src/test/bescheid.ts
index 447ce7902940277d309e84481a368f0d3ff9892a..aa3156fbb7f957d8ee0ccb9d22154a04bddc611c 100644
--- a/alfa-client/libs/bescheid-shared/src/test/bescheid.ts
+++ b/alfa-client/libs/bescheid-shared/src/test/bescheid.ts
@@ -1,8 +1,11 @@
 import { Bescheid, BescheidResource } from '../lib/bescheid.model';
 import { toResource } from 'libs/tech-shared/test/resource';
+import faker from '@faker-js/faker';
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 
 export function createBescheid(): Bescheid {
   return {
+    id: faker.datatype.uuid(),
     beschiedenAm: '2024-01-01',
     bewilligt: true,
   };
@@ -11,3 +14,9 @@ export function createBescheid(): Bescheid {
 export function createBescheidResource(linkRel: string[] = []): BescheidResource {
   return toResource(createBescheid(), linkRel);
 }
+
+export function createBescheidStateResource(
+  linkRel: string[] = [],
+): StateResource<BescheidResource> {
+  return createStateResource(createBescheidResource(linkRel));
+}
diff --git a/alfa-client/libs/command-shared/src/lib/command.model.ts b/alfa-client/libs/command-shared/src/lib/command.model.ts
index 1dbd3046f91c9e6079ad54cf6ccdd3ec7712ac0e..b01673cf043fe7b97e749d12bea509d2ae99cef5 100644
--- a/alfa-client/libs/command-shared/src/lib/command.model.ts
+++ b/alfa-client/libs/command-shared/src/lib/command.model.ts
@@ -27,6 +27,7 @@ import { Resource } from '@ngxp/rest';
 export interface CreateCommand {
   order: CommandOrder | any;
   body?: any | CommandBody;
+  relationId?: string;
 }
 
 export interface CommandBody {
@@ -80,6 +81,7 @@ export enum CommandOrder {
   LOESCH_ANFORDERUNG_ZURUECKNEHMEN = 'LOESCH_ANFORDERUNG_ZURUECKNEHMEN',
   CREATE_BESCHEID = 'CREATE_BESCHEID',
   SET_AKTENZEICHEN = 'SET_AKTENZEICHEN',
+  DELETE_BESCHEID = 'DELETE_BESCHEID',
 }
 
 export enum CommandOrderType {
diff --git a/alfa-client/libs/command-shared/test/command.ts b/alfa-client/libs/command-shared/test/command.ts
index eeb9f2dba68b587edc8d0f16ccb46c6cb4bde4c6..9668c8d8136b41f729b33ce7b3dcfecb876cfeaa 100644
--- a/alfa-client/libs/command-shared/test/command.ts
+++ b/alfa-client/libs/command-shared/test/command.ts
@@ -35,6 +35,7 @@ import {
   CreateCommand,
   CreateCommandProps,
 } from '../src/lib/command.model';
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 
 export function createCommand(): Command {
   return {
@@ -55,6 +56,10 @@ export function createCommandResources(linkRelations: string[] = []): CommandRes
   return times(10, () => toResource(createCommandResource(), [...linkRelations]));
 }
 
+export function createCommandStateResource(linkRel: string[] = []): StateResource<CommandResource> {
+  return createStateResource(createCommandResource(linkRel));
+}
+
 export function createCommandListResource(
   commandResources: CommandResource[] = createCommandResources(),
   linkRelations: string[] = [],
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
index 07ef0798552c6f98fdeed8603fca545ebf05562c..293d3e918580059d0aed36eb52051663afd945d7 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 
-import { EMPTY_ARRAY } from '@alfa-client/tech-shared';
+import { EMPTY_ARRAY, notHasLink } from '@alfa-client/tech-shared';
 import { Resource } from '@ngxp/rest';
 import {
   createDummyListResource,
@@ -39,6 +39,8 @@ import {
   isResourceDifferent,
   isValidStateResource,
 } from './resource.util';
+import { createCommandResource } from '../../../../command-shared/test/command';
+import { CommandLinkRel } from '../../../../command-shared/src/lib/command.linkrel';
 
 describe('resource util', () => {
   describe('isLoadingRequired', () => {
@@ -189,4 +191,21 @@ describe('isResourceDifferent', () => {
 
     expect(isChanged).toBeFalsy();
   });
+
+  describe('notHasLink', () => {
+    it('should return true', () => {
+      const result = notHasLink(createCommandResource(), CommandLinkRel.EFFECTED_RESOURCE);
+
+      expect(result).toBeTruthy();
+    });
+
+    it('should return true', () => {
+      const result = notHasLink(
+        createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
+        CommandLinkRel.EFFECTED_RESOURCE,
+      );
+
+      expect(result).toBeFalsy();
+    });
+  });
 });
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
index 08d17f6400cd22441ea75c8b6c57f0159a5f1109..78791500f052588d712548fe8274eff5d785d20e 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { encodeUrlForEmbedding, isNotNull } from '@alfa-client/tech-shared';
-import { getEmbeddedResource, getUrl, Resource, ResourceUri } from '@ngxp/rest';
+import { getEmbeddedResource, getUrl, hasLink, Resource, ResourceUri } from '@ngxp/rest';
 import { isEqual, isNil } from 'lodash-es';
 import { HttpError } from '../tech.model';
 
@@ -113,3 +113,7 @@ export function isResourceDifferent(
 export function throwErrorOn(condition: boolean, errorMsg: string): void {
   if (condition) throw Error(errorMsg);
 }
+
+export function notHasLink<T extends Resource>(resource: T, linkRel: string): boolean {
+  return !hasLink(resource, linkRel);
+}
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 e7c4b6524db9932fd85899a95f299bdc788b7486..805460d0d26cf91bd2e7252a077166622b424641 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
@@ -2,17 +2,19 @@ import { TestBed } from '@angular/core/testing';
 
 import { Dialog, DialogConfig } from '@angular/cdk/dialog';
 import { OzgcloudDialogService } from './ozgcloud-dialog.service';
-import { mock } from '@alfa-client/test-utils';
+import { Mock, mock } from '@alfa-client/test-utils';
 
 describe('OzgcloudDialogService', () => {
   let service: OzgcloudDialogService;
+  let dialog: Mock<Dialog>;
 
   const component = <any>{ name: 'Component' };
-  const dialog = mock(Dialog);
   const dialogData = { id: 'ZumBeispiel' };
   const dialogConfigWithData: DialogConfig = { data: dialogData };
 
   beforeEach(() => {
+    dialog = mock(Dialog);
+
     TestBed.configureTestingModule({
       providers: [
         {
@@ -29,10 +31,6 @@ describe('OzgcloudDialogService', () => {
   });
 
   describe('open', () => {
-    beforeEach(() => {
-      dialog.open.mockReset();
-    });
-
     it('should open dialog with data', () => {
       service.open(component, dialogData);
 
@@ -47,10 +45,6 @@ describe('OzgcloudDialogService', () => {
   });
 
   describe('openWizard', () => {
-    beforeEach(() => {
-      dialog.open.mockReset();
-    });
-
     it('should open wizard dialog', () => {
       service.openWizard(component);
 
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 449aae405b44aa5f59152749e4e40c4e00798cfd..62cba4d267093de5a9b242dbb478fb1a87dbac12 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
@@ -35,4 +35,8 @@ export class OzgcloudDialogService {
   private openDialog<T>(component: ComponentType<T>, dialogConfig?: DialogConfig): DialogRef<T> {
     return this.dialog.open<T>(component, dialogConfig);
   }
+
+  public closeAll(): void {
+    this.dialog.closeAll();
+  }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
index 1b5791a219f69124dca4c77093010d54250cf451..82d1291e4c39cf5501b8feefeee3093005ae3878 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
@@ -1,6 +1,6 @@
 import { Bescheid, BescheidService } from '@alfa-client/bescheid-shared';
 import { createEmptyStateResource, formatForDatabase } from '@alfa-client/tech-shared';
-import { mock, useFromMock } from '@alfa-client/test-utils';
+import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { registerLocaleData } from '@angular/common';
 import localeDe from '@angular/common/locales/de';
 import { UntypedFormBuilder } from '@angular/forms';
@@ -14,13 +14,12 @@ registerLocaleData(localeDe);
 
 describe('BescheidenFormServiceService', () => {
   let service: BescheidenFormService;
-
-  const bescheidService = mock(BescheidService);
-
+  let bescheidService: Mock<BescheidService>;
   const now = new Date();
   Date.now = jest.fn().mockReturnValue(now);
 
   beforeEach(() => {
+    bescheidService = mock(BescheidService);
     service = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService));
   });
 
@@ -138,4 +137,15 @@ describe('BescheidenFormServiceService', () => {
       expect(service.vorgangWithEingangResource).toBe(vorgangWithEingangResource);
     });
   });
+
+  describe('getVorgangWithEingangResource', () => {
+    it('should reutrn vorgangWithEingangResource', () => {
+      const vorgangWithEingangResource = createVorgangWithEingangResource();
+      service.vorgangWithEingangResource = vorgangWithEingangResource;
+
+      const vorang = service.getVorgangWithEingangResource();
+
+      expect(vorang).toBe(vorgangWithEingangResource);
+    });
+  });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
index 5515fbf8f54812145bd9a6a8e943410338e109cf..1b14d33257f6f5ce68ffe686015be430034d8c7b 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
@@ -1,15 +1,15 @@
 import { Bescheid, BescheidService } from '@alfa-client/bescheid-shared';
 import {
   AbstractFormService,
-  StateResource,
   asBoolean,
   formatForDatabase,
+  StateResource,
 } from '@alfa-client/tech-shared';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
 import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { isNil } from 'lodash-es';
-import { BehaviorSubject, Observable, map, startWith } from 'rxjs';
+import { BehaviorSubject, map, Observable, startWith } from 'rxjs';
 
 @Injectable()
 export class BescheidenFormService extends AbstractFormService {
@@ -86,4 +86,8 @@ export class BescheidenFormService extends AbstractFormService {
   ): void {
     this.vorgangWithEingangResource = vorgangWithEingangResource;
   }
+
+  public getVorgangWithEingangResource(): VorgangWithEingangResource {
+    return this.vorgangWithEingangResource;
+  }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts
index c44625133f9a8739e215b4d72d33be87fbad044f..cdaaba160035bd674b9b97b2560b716ba44c1e4f 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts
@@ -5,3 +5,7 @@ export interface BescheidenDialogData {
   vorgangWithEingangResource: VorgangWithEingangResource;
   bescheidDraftResource?: BescheidResource;
 }
+
+export interface BescheiderstellungUeberspringenDialogData {
+  vorgangWithEingangResource: VorgangWithEingangResource;
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts
index 38d4b55a556221345205af61f2b824fe11d32b7e..cd1c843172aa1e4828f1a1e667412f3c75d0d865 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts
@@ -1,10 +1,9 @@
 import { BescheidService } from '@alfa-client/bescheid-shared';
-import { mock, useFromMock } from '@alfa-client/test-utils';
+import { Mock, mock } from '@alfa-client/test-utils';
 import { OzgcloudSvgIconComponent } from '@alfa-client/ui';
 import { registerLocaleData } from '@angular/common';
 import localeDe from '@angular/common/locales/de';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { UntypedFormBuilder } from '@angular/forms';
 import { MatIcon } from '@angular/material/icon';
 import { MockComponent } from 'ng-mocks';
 import { BehaviorSubject } from 'rxjs';
@@ -17,38 +16,32 @@ describe('VorgangDetailBescheidenResultStatusComponent', () => {
   let component: VorgangDetailBescheidenResultStatusComponent;
   let fixture: ComponentFixture<VorgangDetailBescheidenResultStatusComponent>;
 
-  const bescheidService = mock(BescheidService);
-  const formService = new BescheidenFormService(
-    new UntypedFormBuilder(),
-    useFromMock(bescheidService),
-  );
-  const bescheidChangesMock = jest.fn();
-  bescheidChangesMock.mockReturnValue(
-    new BehaviorSubject({ beschiedenAm: new Date(), bewilligt: false }),
-  );
-  formService.getBescheidChanges = bescheidChangesMock;
+  let bescheidService: Mock<BescheidService>;
+  let formService: Mock<BescheidenFormService>;
 
   beforeEach(async () => {
-    TestBed.overrideComponent(VorgangDetailBescheidenResultStatusComponent, {
-      set: {
-        providers: [
-          {
-            provide: BescheidenFormService,
-            useValue: formService,
-          },
-          {
-            provide: BescheidService,
-            useValue: bescheidService,
-          },
-        ],
-      },
-    });
+    bescheidService = mock(BescheidService);
+    formService = mock(BescheidenFormService);
+    formService.getBescheidChanges.mockReturnValue(
+      new BehaviorSubject({ beschiedenAm: new Date(), bewilligt: false }),
+    );
+
     await TestBed.configureTestingModule({
       declarations: [
         VorgangDetailBescheidenResultStatusComponent,
         MatIcon,
         MockComponent(OzgcloudSvgIconComponent),
       ],
+      providers: [
+        {
+          provide: BescheidenFormService,
+          useValue: formService,
+        },
+        {
+          provide: BescheidService,
+          useValue: bescheidService,
+        },
+      ],
     }).compileComponents();
 
     fixture = TestBed.createComponent(VorgangDetailBescheidenResultStatusComponent);
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts
index 1dafab1f08b411ea2f54187289784735e11ba0a8..ea689654bbad5b54a1d5ddbed9c508c7e03de475 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts
@@ -4,7 +4,6 @@ import { BescheidenFormService } from '../../bescheiden.formservice';
 @Component({
   selector: 'alfa-vorgang-detail-bescheiden-result-status',
   templateUrl: './vorgang-detail-bescheiden-result-status.component.html',
-  styles: [],
 })
 export class VorgangDetailBescheidenResultStatusComponent {
   constructor(public formService: BescheidenFormService) {}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts
index cac6414127bead528246228a2947e0b808bf49a7..195c9de8a0ab7fd4bf54050d39d16f9dfc58a892 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts
@@ -1,4 +1,4 @@
-import { mock } from '@alfa-client/test-utils';
+import { Mock, mock } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { BescheidenFormService } from '../bescheiden.formservice';
@@ -9,9 +9,11 @@ describe('VorgangDetailBescheidenResultComponent', () => {
   let component: VorgangDetailBescheidenResultComponent;
   let fixture: ComponentFixture<VorgangDetailBescheidenResultComponent>;
 
-  const bescheidenFormService = mock(BescheidenFormService);
+  let bescheidenFormService: Mock<BescheidenFormService>;
 
   beforeEach(async () => {
+    bescheidenFormService = mock(BescheidenFormService);
+
     await TestBed.configureTestingModule({
       declarations: [
         VorgangDetailBescheidenResultComponent,
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-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.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-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component.spec.ts
index 85510f8c2ccc6297c0bdc3abba6a85a4224cfc23..f341daa2d8fe4004d725f6d76371169d7a8c7ecc 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-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.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-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component.spec.ts
@@ -1,5 +1,5 @@
 import { BescheidService } from '@alfa-client/bescheid-shared';
-import { mock, useFromMock } from '@alfa-client/test-utils';
+import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { DateEditorComponent } from '@alfa-client/ui';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
@@ -13,27 +13,12 @@ describe('VorgangDetailAntragBescheidenStepComponent', () => {
   let component: VorgangDetailAntragBescheidenStepComponent;
   let fixture: ComponentFixture<VorgangDetailAntragBescheidenStepComponent>;
 
-  const bescheidService = mock(BescheidService);
-  const formService = new BescheidenFormService(
-    new UntypedFormBuilder(),
-    useFromMock(bescheidService),
-  );
+  let bescheidService: Mock<BescheidService>;
+  let formService: BescheidenFormService;
 
   beforeEach(async () => {
-    TestBed.overrideComponent(VorgangDetailAntragBescheidenStepComponent, {
-      set: {
-        providers: [
-          {
-            provide: BescheidenFormService,
-            useValue: formService,
-          },
-          {
-            provide: BescheidService,
-            useValue: bescheidService,
-          },
-        ],
-      },
-    });
+    bescheidService = mock(BescheidService);
+    formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService));
     await TestBed.configureTestingModule({
       declarations: [
         VorgangDetailAntragBescheidenStepComponent,
@@ -43,6 +28,16 @@ describe('VorgangDetailAntragBescheidenStepComponent', () => {
         MockComponent(MatIcon),
       ],
       imports: [ReactiveFormsModule],
+      providers: [
+        {
+          provide: BescheidenFormService,
+          useValue: formService,
+        },
+        {
+          provide: BescheidService,
+          useValue: bescheidService,
+        },
+      ],
     }).compileComponents();
 
     fixture = TestBed.createComponent(VorgangDetailAntragBescheidenStepComponent);
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-steps-content.component.html 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-steps-content.component.html
index 4127fdefb5e7a1c4f61ddb8a5ae39b0a1d1d0006..a216435fc62bd74cf35bee3ed62d0fa40a8a72f5 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-steps-content.component.html
+++ 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-steps-content.component.html
@@ -28,3 +28,7 @@
   [activeStep]="activeStep"
 >
 </alfa-vorgang-detail-bescheiden-step-content>
+
+<alfa-vorgang-detail-bescheiden-ueberspringen-button
+  *ngIf="showBescheiderstellungUeberspringen"
+></alfa-vorgang-detail-bescheiden-ueberspringen-button>
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-steps-content.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-steps-content.component.spec.ts
index ce71487fa6d042b8622573fce274a89fb3f20993..a70bede3ef5a468d28140815cb18106d89f3fa75 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-steps-content.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-steps-content.component.spec.ts
@@ -1,18 +1,29 @@
-import { mock } from '@alfa-client/test-utils';
+import { Mock, mock } from '@alfa-client/test-utils';
 import { EventEmitter } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { VorgangDetailBescheidenStepTitleComponent } from '../vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component';
 import { VorgangDetailBescheidenWeiterButtonComponent } from '../vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component';
-import { VorgangDetailAntragBescheidenStepComponent } from './vorgang-detail-bescheiden-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component';
 import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component';
 import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-bescheiden-steps-content.component';
+import { VorgangDetailAntragBescheidenStepComponent } from './vorgang-detail-bescheiden-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component';
+import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component';
+import { BescheidenFormService } from '../../bescheiden.formservice';
+import { createVorgangWithEingangResource } from '../../../../../../../vorgang-shared/test/vorgang';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 
 describe('VorgangDetailBescheidenStepsContentComponent', () => {
   let component: VorgangDetailBescheidenStepsContentComponent;
   let fixture: ComponentFixture<VorgangDetailBescheidenStepsContentComponent>;
 
+  let formService: Mock<BescheidenFormService>;
+  let vorgangWithEingangResource: VorgangWithEingangResource;
+
   beforeEach(async () => {
+    formService = mock(BescheidenFormService);
+    vorgangWithEingangResource = createVorgangWithEingangResource();
+    formService.getVorgangWithEingangResource.mockReturnValue(vorgangWithEingangResource);
+
     await TestBed.configureTestingModule({
       declarations: [
         VorgangDetailBescheidenStepsContentComponent,
@@ -20,6 +31,13 @@ describe('VorgangDetailBescheidenStepsContentComponent', () => {
         MockComponent(VorgangDetailBescheidenStepTitleComponent),
         MockComponent(VorgangDetailBescheidenStepContentComponent),
         MockComponent(VorgangDetailAntragBescheidenStepComponent),
+        MockComponent(VorgangDetailBescheidenUeberspringenButtonComponent),
+      ],
+      providers: [
+        {
+          provide: BescheidenFormService,
+          useValue: formService,
+        },
       ],
     }).compileComponents();
 
@@ -43,4 +61,41 @@ describe('VorgangDetailBescheidenStepsContentComponent', () => {
       expect(component.activeStepChange.emit).toHaveBeenCalledWith(1);
     });
   });
+
+  describe('ngOnInit', () => {
+    it('should render überspringen und abschliessen button', () => {
+      component.activeStep = 1;
+      formService.getVorgangWithEingangResource.mockReturnValue(
+        createVorgangWithEingangResource([
+          VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+        ]),
+      );
+
+      component.ngOnInit();
+
+      expect(component.showBescheiderstellungUeberspringen).toBeTruthy();
+    });
+
+    it('should not render überspringen und abschliessen button for active step 1', () => {
+      component.activeStep = 2;
+      formService.getVorgangWithEingangResource.mockReturnValue(
+        createVorgangWithEingangResource([
+          VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+        ]),
+      );
+
+      component.ngOnInit();
+
+      expect(component.showBescheiderstellungUeberspringen).toBeFalsy();
+    });
+
+    it('should not render überspringen und abschliessen button if link missing', () => {
+      component.activeStep = 1;
+      formService.getVorgangWithEingangResource.mockReturnValue(createVorgangWithEingangResource());
+
+      component.ngOnInit();
+
+      expect(component.showBescheiderstellungUeberspringen).toBeFalsy();
+    });
+  });
 });
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-steps-content.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-steps-content.component.ts
index a70befbc6706c728275b395a3aa6d9dfa7cb3ebd..6558d2cc365be0179fe676a036bf64a5c70e46c6 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-steps-content.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-steps-content.component.ts
@@ -1,14 +1,31 @@
-import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { BescheidenFormService } from '../../bescheiden.formservice';
+import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { hasLink } from '@ngxp/rest';
 
 @Component({
   selector: 'alfa-vorgang-detail-bescheiden-steps-content',
   templateUrl: './vorgang-detail-bescheiden-steps-content.component.html',
   styles: [':host {@apply flex flex-col}'],
 })
-export class VorgangDetailBescheidenStepsContentComponent {
+export class VorgangDetailBescheidenStepsContentComponent implements OnInit {
   @Input() activeStep: number = 1;
+
   @Output() activeStepChange = new EventEmitter<number>();
 
+  showBescheiderstellungUeberspringen = false;
+
+  constructor(private readonly formService: BescheidenFormService) {}
+
+  ngOnInit(): void {
+    const vorgangWithEingangResource = this.formService.getVorgangWithEingangResource();
+    this.showBescheiderstellungUeberspringen =
+      hasLink(
+        vorgangWithEingangResource,
+        VorgangWithEingangLinkRel.UEBERSPRINGEN_UND_ABSCHLIESSEN,
+      ) && this.activeStep === 1;
+  }
+
   public changeActiveStep(step: number): void {
     this.activeStepChange.emit(step);
   }
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-button/vorgang-detail-bescheiden-ueberspringen-button.component.html 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-button/vorgang-detail-bescheiden-ueberspringen-button.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..5d788111718efb024b7d0b2f3009ac6775878a11
--- /dev/null
+++ 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-button/vorgang-detail-bescheiden-ueberspringen-button.component.html
@@ -0,0 +1,3 @@
+<button (click)="onClick()" class="select-none text-left text-primary hover:underline">
+  Bescheiderstellung überspringen<br />und abschließen
+</button>
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-button/vorgang-detail-bescheiden-ueberspringen-button.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-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5bd380e629b34379a00163a4d56479c2bb80a254
--- /dev/null
+++ 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-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts
@@ -0,0 +1,59 @@
+import { Mock, mock } from '@alfa-client/test-utils';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-bescheiden-ueberspringen-button.component';
+import { OzgcloudDialogService } from '@alfa-client/ui';
+import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component';
+import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail';
+import { BescheidenFormService } from '../../../bescheiden.formservice';
+import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang';
+import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+
+describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => {
+  let component: VorgangDetailBescheidenUeberspringenButtonComponent;
+  let fixture: ComponentFixture<VorgangDetailBescheidenUeberspringenButtonComponent>;
+
+  let ozgcloudDialogService: Mock<OzgcloudDialogService>;
+  let formService: Mock<BescheidenFormService>;
+  let vorgangWithEingangResource: VorgangWithEingangResource;
+
+  beforeEach(async () => {
+    ozgcloudDialogService = mock(OzgcloudDialogService);
+    formService = mock(BescheidenFormService);
+
+    vorgangWithEingangResource = createVorgangWithEingangResource();
+    formService.getVorgangWithEingangResource.mockReturnValue(vorgangWithEingangResource);
+
+    await TestBed.configureTestingModule({
+      declarations: [VorgangDetailBescheidenUeberspringenButtonComponent],
+      providers: [
+        {
+          provide: OzgcloudDialogService,
+          useValue: ozgcloudDialogService,
+        },
+        {
+          provide: BescheidenFormService,
+          useValue: formService,
+        },
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(VorgangDetailBescheidenUeberspringenButtonComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('onClick', () => {
+    it('should open dialog', () => {
+      component.onClick();
+
+      expect(ozgcloudDialogService.open).toHaveBeenCalledWith(
+        VorgangDetailBescheidenUeberspringenDialogComponent,
+        { vorgangWithEingangResource } as BescheiderstellungUeberspringenDialogData,
+      );
+    });
+  });
+});
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-button/vorgang-detail-bescheiden-ueberspringen-button.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-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..63b182124b45070ea84e6285feef13589053240a
--- /dev/null
+++ 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-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts
@@ -0,0 +1,29 @@
+import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input } from '@angular/core';
+import { OzgcloudDialogService } from '@alfa-client/ui';
+import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component';
+import { BescheidenFormService } from '../../../bescheiden.formservice';
+import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail';
+
+@Component({
+  selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-button',
+  templateUrl: './vorgang-detail-bescheiden-ueberspringen-button.component.html',
+  styles: [':host {@apply flex flex-1 items-end}'],
+})
+export class VorgangDetailBescheidenUeberspringenButtonComponent {
+  @Input() vorgang: VorgangWithEingangResource;
+
+  constructor(
+    private readonly ozgcloudDialogService: OzgcloudDialogService,
+    private formService: BescheidenFormService,
+  ) {}
+
+  public onClick(): void {
+    this.ozgcloudDialogService.open<
+      VorgangDetailBescheidenUeberspringenDialogComponent,
+      BescheiderstellungUeberspringenDialogData
+    >(VorgangDetailBescheidenUeberspringenDialogComponent, {
+      vorgangWithEingangResource: this.formService.getVorgangWithEingangResource(),
+    });
+  }
+}
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.html 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.html
new file mode 100644
index 0000000000000000000000000000000000000000..44ed66ec4fb5b61351fd96a932edab83973d7eda
--- /dev/null
+++ 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.html
@@ -0,0 +1,25 @@
+<div class="bg-background-200">
+  <button (click)="onClose()">
+    <mat-icon>close</mat-icon>
+  </button>
+  <h1>Bescheiderstellung überspringen</h1>
+  <p>
+    Soll die Bescheiderstellung übersprungen und der Vorgang direkt in den Status Abgeschlossen
+    gesetzt werden?
+  </p>
+  <ozgcloud-stroked-button-with-spinner
+    (click)="onConfirm()"
+    data-test-id="bescheiderstellung-ueberspringen-und-vorgang-abschliessen-dialog"
+    text="Überspringen und abschließen"
+    type="submit"
+    [stateResource]="bescheiderstellungUeberspringen$ | async"
+  >
+  </ozgcloud-stroked-button-with-spinner>
+  <ozgcloud-stroked-button-with-spinner
+    (click)="onCancel()"
+    data-test-id="bescheiderstellung-ueberspringen-und-vorgang-abschliessen-dialog"
+    text="Abbrechen"
+    type="submit"
+  >
+  </ozgcloud-stroked-button-with-spinner>
+</div>
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
new file mode 100644
index 0000000000000000000000000000000000000000..71f794d276fff9cf640189625308419fcdd81f6e
--- /dev/null
+++ 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
@@ -0,0 +1,220 @@
+import { Mock, mock } from '@alfa-client/test-utils';
+import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { VorgangDetailBescheidenUeberspringenDialogComponent } from './vorgang-detail-bescheiden-ueberspringen-dialog.component';
+import { MockComponent } from 'ng-mocks';
+import { OzgcloudDialogService, OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui';
+import { MatIcon } from '@angular/material/icon';
+import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared';
+import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail';
+import { createCommandStateResource } from '../../../../../../../../command-shared/test/command';
+import { of } from 'rxjs';
+import { cold } from 'jest-marbles';
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
+import { CommandLinkRel } from '../../../../../../../../command-shared/src/lib/command.linkrel';
+import { createBescheidResource } from '../../../../../../../../bescheid-shared/src/test/bescheid';
+import { CommandResource } from '@alfa-client/command-shared';
+
+describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => {
+  let component: VorgangDetailBescheidenUeberspringenDialogComponent;
+  let fixture: ComponentFixture<VorgangDetailBescheidenUeberspringenDialogComponent>;
+
+  let dialogRef: Mock<DialogRef>;
+  let bescheidService: Mock<BescheidService>;
+  let ozgcloudDialogService: Mock<OzgcloudDialogService>;
+  let dialogData: BescheiderstellungUeberspringenDialogData;
+  let vorgangWithEingangResource: VorgangWithEingangResource;
+
+  beforeEach(async () => {
+    dialogRef = mock(DialogRef);
+    bescheidService = mock(BescheidService);
+    ozgcloudDialogService = mock(OzgcloudDialogService);
+
+    vorgangWithEingangResource = createVorgangWithEingangResource();
+    dialogData = { vorgangWithEingangResource };
+
+    await TestBed.configureTestingModule({
+      declarations: [
+        VorgangDetailBescheidenUeberspringenDialogComponent,
+        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
+        MockComponent(MatIcon),
+      ],
+      providers: [
+        {
+          provide: DialogRef,
+          useValue: dialogRef,
+        },
+        {
+          provide: BescheidService,
+          useValue: bescheidService,
+        },
+        {
+          provide: OzgcloudDialogService,
+          useValue: ozgcloudDialogService,
+        },
+        {
+          provide: DIALOG_DATA,
+          useValue: dialogData,
+        },
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(VorgangDetailBescheidenUeberspringenDialogComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('onCancel', () => {
+    it('should close dialog', () => {
+      component.onCancel();
+
+      expect(dialogRef.close).toHaveBeenCalled();
+    });
+  });
+
+  describe('onConfirm', () => {
+    let bescheidErstellungUeberspringen: jest.Mock;
+    let bescheidErstellungUeberspringenCommand: StateResource<CommandResource>;
+
+    beforeEach(() => {
+      bescheidErstellungUeberspringen = component.bescheidErstellungUeberspringen = jest.fn();
+      bescheidErstellungUeberspringenCommand = createCommandStateResource([
+        CommandLinkRel.EFFECTED_RESOURCE,
+      ]);
+      bescheidErstellungUeberspringen.mockReturnValue(of(bescheidErstellungUeberspringenCommand));
+    });
+
+    it('should call bescheidErstellungUeberspringen', (done) => {
+      component.onConfirm();
+
+      component.bescheiderstellungUeberspringen$.subscribe(() => {
+        expect(bescheidErstellungUeberspringen).toHaveBeenCalled();
+        done();
+      });
+    });
+
+    it('should close all dialogs on success', (done) => {
+      component.onConfirm();
+
+      component.bescheiderstellungUeberspringen$.subscribe(() => {
+        expect(ozgcloudDialogService.closeAll).toHaveBeenCalled();
+        done();
+      });
+    });
+
+    it('should not close all dialogs on failre', (done) => {
+      bescheidErstellungUeberspringen.mockReturnValue(of(createCommandStateResource()));
+
+      component.onConfirm();
+
+      component.bescheiderstellungUeberspringen$.subscribe(() => {
+        expect(ozgcloudDialogService.closeAll).not.toHaveBeenCalled();
+        done();
+      });
+    });
+
+    it('should return command', () => {
+      component.onConfirm();
+
+      expect(component.bescheiderstellungUeberspringen$).toBeObservable(
+        cold('(a|)', { a: bescheidErstellungUeberspringenCommand }),
+      );
+    });
+  });
+
+  describe('bescheidErstellungUeberspringen', () => {
+    describe('Bescheid Draft exists', () => {
+      let vorgangWithEingangResource: VorgangWithEingangResource;
+      let bescheidResource: BescheidResource;
+
+      beforeEach(() => {
+        vorgangWithEingangResource = createVorgangWithEingangResource([
+          VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+        ]);
+        dialogData.vorgangWithEingangResource = vorgangWithEingangResource;
+        bescheidResource = createBescheidResource();
+        bescheidService.getBescheidDraft.mockReturnValue(of(createStateResource(bescheidResource)));
+        bescheidService.bescheidLoeschenUndErstellungUeberspringen.mockReturnValue(
+          of(createCommandStateResource()),
+        );
+      });
+
+      it('should get bescheid draft', (done) => {
+        const command$ = component.bescheidErstellungUeberspringen();
+
+        command$.subscribe(() => {
+          expect(bescheidService.getBescheidDraft).toHaveBeenCalled();
+          done();
+        });
+      });
+
+      it('should Bescheid löschen und Erstellung überspringen', (done) => {
+        const command$ = component.bescheidErstellungUeberspringen();
+
+        command$.subscribe(() => {
+          expect(bescheidService.bescheidLoeschenUndErstellungUeberspringen).toHaveBeenCalledWith(
+            vorgangWithEingangResource,
+            bescheidResource,
+          );
+          done();
+        });
+      });
+
+      it('should return command', () => {
+        const command = createCommandStateResource();
+        bescheidService.bescheidLoeschenUndErstellungUeberspringen.mockReturnValue(of(command));
+
+        const command$ = component.bescheidErstellungUeberspringen();
+
+        expect(command$).toBeObservable(cold('(a|)', { a: command }));
+      });
+    });
+
+    describe('Bescheid Draft not exists', () => {
+      let vorgangWithEingangResource: VorgangWithEingangResource;
+
+      beforeEach(() => {
+        vorgangWithEingangResource = createVorgangWithEingangResource();
+        dialogData.vorgangWithEingangResource = vorgangWithEingangResource;
+      });
+
+      it('should Bescheiderstellung überspringen', (done) => {
+        bescheidService.bescheidErstellungUeberspringen.mockReturnValue(
+          of(createCommandStateResource()),
+        );
+
+        const command$ = component.bescheidErstellungUeberspringen();
+
+        command$.subscribe(() => {
+          expect(bescheidService.bescheidErstellungUeberspringen).toHaveBeenCalledWith(
+            vorgangWithEingangResource,
+          );
+          done();
+        });
+      });
+
+      it('should return command', () => {
+        const command = createCommandStateResource();
+        bescheidService.bescheidErstellungUeberspringen.mockReturnValue(of(command));
+
+        const command$ = component.bescheidErstellungUeberspringen();
+
+        expect(command$).toBeObservable(cold('(a|)', { a: command }));
+      });
+    });
+  });
+
+  describe('onClose', () => {
+    it('should close dialog', () => {
+      component.onClose();
+
+      expect(dialogRef.close).toHaveBeenCalled();
+    });
+  });
+});
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
new file mode 100644
index 0000000000000000000000000000000000000000..c33af98fa79df291216ad75505be960d5353e702
--- /dev/null
+++ 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
@@ -0,0 +1,61 @@
+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, switchMap, tap } from 'rxjs';
+import { CommandResource, isSuccessfulDone } from '@alfa-client/command-shared';
+import { notHasLink, StateResource } from '@alfa-client/tech-shared';
+import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail';
+import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+
+@Component({
+  selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-dialog',
+  templateUrl: './vorgang-detail-bescheiden-ueberspringen-dialog.component.html',
+})
+export class VorgangDetailBescheidenUeberspringenDialogComponent {
+  bescheiderstellungUeberspringen$: Observable<StateResource<CommandResource>>;
+
+  constructor(
+    private readonly dialogRef: DialogRef,
+    private readonly bescheidService: BescheidService,
+    private readonly ozgcloudDialogService: OzgcloudDialogService,
+    @Inject(DIALOG_DATA) private readonly dialogData: BescheiderstellungUeberspringenDialogData,
+  ) {}
+
+  onCancel(): void {
+    this.dialogRef.close();
+  }
+
+  onConfirm(): void {
+    this.bescheiderstellungUeberspringen$ = this.bescheidErstellungUeberspringen().pipe(
+      tap((command) => {
+        if (isSuccessfulDone(command.resource)) {
+          this.ozgcloudDialogService.closeAll();
+        }
+      }),
+    );
+  }
+
+  bescheidErstellungUeberspringen(): Observable<StateResource<CommandResource>> {
+    const vorgangWithEingangResource = this.dialogData.vorgangWithEingangResource;
+
+    if (notHasLink(vorgangWithEingangResource, VorgangWithEingangLinkRel.BESCHEID_DRAFT)) {
+      return this.bescheidService.bescheidErstellungUeberspringen(vorgangWithEingangResource);
+    } else {
+      return this.bescheidService
+        .getBescheidDraft()
+        .pipe(
+          switchMap((bescheidStateResource) =>
+            this.bescheidService.bescheidLoeschenUndErstellungUeberspringen(
+              vorgangWithEingangResource,
+              bescheidStateResource.resource,
+            ),
+          ),
+        );
+    }
+  }
+
+  onClose(): void {
+    this.dialogRef.close();
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts
index 25e5f64656c4658d89c9e7bfc18b464502bdedc3..73a99ab73f0b5da16898817168f3fe9482884bce 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts
@@ -1,4 +1,4 @@
-import { mock } from '@alfa-client/test-utils';
+import { Mock, mock } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { BescheidenFormService } from '../../bescheiden.formservice';
 import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-bescheiden-weiter-button.component';
@@ -9,9 +9,11 @@ describe('VorgangDetailBescheidenWeiterButtonComponent', () => {
   let component: VorgangDetailBescheidenWeiterButtonComponent;
   let fixture: ComponentFixture<VorgangDetailBescheidenWeiterButtonComponent>;
 
-  const formService = mock(BescheidenFormService);
+  let formService: Mock<BescheidenFormService>;
 
   beforeEach(async () => {
+    formService = mock(BescheidenFormService);
+
     await TestBed.configureTestingModule({
       providers: [
         {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts
index a90f0deb26966b8ff3527b381cdb5510e9bfe544..78082d9bdc9b3c462dc1dc13102b0904d2f6f33e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts
@@ -1,5 +1,5 @@
-import { BescheidService } from '@alfa-client/bescheid-shared';
-import { mock, useFromMock } from '@alfa-client/test-utils';
+import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared';
+import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
@@ -11,22 +11,27 @@ import { BescheidenFormService } from './bescheiden.formservice';
 import { VorgangDetailBescheidenResultComponent } from './vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component';
 import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component';
 import { VorgangDetailBescheidenComponent } from './vorgang-detail-bescheiden.component';
+import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 
 describe('VorgangDetailBescheidenComponent', () => {
   let component: VorgangDetailBescheidenComponent;
   let fixture: ComponentFixture<VorgangDetailBescheidenComponent>;
 
-  const vorgangWithEingangResource = createVorgangWithEingangResource();
-  const bescheidDraftResource = createBescheidResource();
+  let bescheidService: Mock<BescheidService>;
+  let formService: BescheidenFormService;
+  let dialogRef: Mock<DialogRef>;
 
-  const bescheidService = mock(BescheidService);
-  const formService = new BescheidenFormService(
-    new UntypedFormBuilder(),
-    useFromMock(bescheidService),
-  );
-  const dialogRef = mock(DialogRef);
+  let vorgangWithEingangResource: VorgangWithEingangResource;
+  let bescheidDraftResource: BescheidResource;
 
   beforeEach(async () => {
+    bescheidService = mock(BescheidService);
+    formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService));
+    dialogRef = mock(DialogRef);
+
+    vorgangWithEingangResource = createVorgangWithEingangResource();
+    bescheidDraftResource = createBescheidResource();
+
     TestBed.overrideComponent(VorgangDetailBescheidenComponent, {
       set: {
         providers: [
@@ -34,10 +39,6 @@ describe('VorgangDetailBescheidenComponent', () => {
             provide: BescheidenFormService,
             useValue: formService,
           },
-          {
-            provide: BescheidService,
-            useValue: bescheidService,
-          },
         ],
       },
     });
@@ -50,8 +51,8 @@ describe('VorgangDetailBescheidenComponent', () => {
       ],
       providers: [
         {
-          provide: BescheidenFormService,
-          useValue: formService,
+          provide: BescheidService,
+          useValue: bescheidService,
         },
         {
           provide: DialogRef,
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 76194ddd0d5a2534b259ccff3135060600d0b69c..4d37d4b10bf41e707638c68bd5df3673c1ce6d29 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -40,7 +40,6 @@ import { WiedervorlageModule } from '@alfa-client/wiedervorlage';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
-import { RadioButtonCardComponent } from 'design-system';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
 import { AbschliessenButtonComponent } from './buttons/abschliessen-button/abschliessen-button.component';
@@ -67,19 +66,22 @@ import { VorgangDetailBackButtonContainerComponent } from './vorgang-detail-page
 import { VorgangDetailBackButtonComponent } from './vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button/vorgang-detail-back-button.component';
 import { VorgangDetailBescheidenResultStatusComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component';
 import { VorgangDetailBescheidenResultComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component';
-import { VorgangDetailBescheidenStepButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component';
-import { VorgangDetailBescheidenStepButtonsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component';
-import { VorgangDetailBescheidenStepTitleComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component';
-import { VorgangDetailAntragBescheidenStepComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component';
-import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component';
-import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component';
+import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component';
 import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component';
-import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component';
 import { VorgangDetailBescheidenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component';
 import { VorgangDetailMoreMenuComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component';
 import { VorgangExportContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-export-container/vorgang-export-container.component';
 import { ProcessVorgangContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component';
 import { VorgangDetailPageComponent } from './vorgang-detail-page/vorgang-detail-page.component';
+import { VorgangDetailBescheidenStepButtonsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component';
+import { VorgangDetailBescheidenStepButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component';
+import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component';
+import { VorgangDetailBescheidenStepTitleComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component';
+import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component';
+import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component';
+import { VorgangDetailAntragBescheidenStepComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden-step/vorgang-detail-antrag-bescheiden-step.component';
+import { RadioButtonCardComponent } from 'design-system';
+import { VorgangDetailBescheidenUeberspringenDialogComponent } from './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';
 
 const routes: Routes = [
   {
@@ -150,6 +152,8 @@ const routes: Routes = [
     VorgangDetailBescheidenStepContentComponent,
     VorgangDetailBescheidenResultStatusComponent,
     VorgangDetailAntragBescheidenStepComponent,
+    VorgangDetailBescheidenUeberspringenButtonComponent,
+    VorgangDetailBescheidenUeberspringenDialogComponent,
   ],
   exports: [
     VorgangDetailAntragstellerComponent,
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
index 3ee8483333198b707bea7ffa26c0c053bccc1499..f49ddb1b57cd60961dd2f29d50e12abe48e8b691 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
@@ -62,6 +62,7 @@ export enum VorgangWithEingangLinkRel {
 
   SET_AKTENZEICHEN = 'set_aktenzeichen',
   BESCHEID_DRAFT = 'bescheidDraft',
+  UEBERSPRINGEN_UND_ABSCHLIESSEN = 'ueberspringen_und_abschliessen',
 }
 
 export enum LoeschAnforderungLinkRel {
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
index 25e5daeeda18211fe04c4ad6c22d1ce1b3cfd142..fa60bb0b188ac33e509a84ba4cf3e6e90051cef2 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
@@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
 
 import de.ozgcloud.alfa.common.FeatureToggleProperties;
 import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController;
+import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import lombok.RequiredArgsConstructor;
@@ -21,8 +21,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
 
-	static final String REL_DRAFT = "bescheidDraft";
+	static final LinkRelation REL_DRAFT = LinkRelation.of("bescheidDraft");
 	static final LinkRelation REL_CREATE_BESCHEID_DRAFT = LinkRelation.of("createBescheidDraft");
+	static final LinkRelation REL_UEBERSPRINGEN_UND_ABSCHLIESSEN = LinkRelation.of("ueberspringen_und_abschliessen");
 
 	private final FeatureToggleProperties featureToggleProperties;
 	private final BescheidService bescheidService;
@@ -36,20 +37,23 @@ class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityMod
 		}
 
 		return ModelBuilder.fromModel(model)
-				.ifMatch(shouldAddLinkToDraft(vorgang))
+				.ifMatch(isRetrievingDraftAllowed(vorgang))
 				.addLink(linkTo(methodOn(BescheidController.class).getDraft(vorgang.getId(), BescheidController.REQUEST_PARAM_STATUS_DRAFT)).withRel(
 						REL_DRAFT))
-				.ifMatch(shouldAddLinkToCreateDraft(vorgang))
-				.addLink(linkTo(methodOn(CommandController.CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
+				.ifMatch(isCreatingDraftAllowed(vorgang))
+				.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
 						null)).withRel(REL_CREATE_BESCHEID_DRAFT))
+				.ifMatch(isCreatingDraftAllowed(vorgang))
+				.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(),
+						vorgang.getId(), vorgang.getVersion(), null)).withRel(REL_UEBERSPRINGEN_UND_ABSCHLIESSEN))
 				.buildModel();
 	}
 
-	BooleanSupplier shouldAddLinkToDraft(Vorgang vorgang) {
+	BooleanSupplier isRetrievingDraftAllowed(Vorgang vorgang) {
 		return () -> featureToggleProperties.isBescheidWizard() && isVorgangInBearbeitung(vorgang) && draftExists(vorgang);
 	}
 
-	BooleanSupplier shouldAddLinkToCreateDraft(Vorgang vorgang) {
+	BooleanSupplier isCreatingDraftAllowed(Vorgang vorgang) {
 		return () -> featureToggleProperties.isBescheidWizard() && isVorgangInBearbeitung(vorgang);
 	}
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java
index e3887f47b757ae3201e503a7817323165904546f..827bf9e9729cd7763d48fefc23626d8bd2cc6bdb 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java
@@ -72,7 +72,8 @@ public enum CommandOrder {
 	DELETE_ATTACHED_ITEM(false, Type.VORGANG),
 
 	CREATE_BESCHEID(false, Type.VORGANG),
-	
+	DELETE_BESCHEID(false, Type.VORGANG),
+
 	PROCESS_VORGANG(false, Type.VORGANG);
 
 	enum Type {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
index e535a2a8a1e894837959ce2cf87ada9ee7f33c37..69f2e7690b0a0a4911875a7ad402b4219d22752a 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
@@ -17,9 +17,11 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
+import org.springframework.web.util.UriTemplate;
 
 import de.ozgcloud.alfa.common.FeatureToggleProperties;
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
+import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
@@ -60,7 +62,7 @@ class BescheidVorgangProcessorTest {
 
 			@Test
 			void shouldNotHaveLinkToDraft() {
-				givenLinkToDraftShouldBeAdded(false);
+				givenRetrievingDraftIsAllowed(false);
 
 				var model = callProcess();
 
@@ -69,7 +71,7 @@ class BescheidVorgangProcessorTest {
 
 			@Test
 			void shouldHaveLinkToDraft() {
-				givenLinkToDraftShouldBeAdded(true);
+				givenRetrievingDraftIsAllowed(true);
 
 				var model = callProcess();
 
@@ -80,7 +82,7 @@ class BescheidVorgangProcessorTest {
 
 			@Test
 			void shouldHaveLinkToCreateBescheidDraft() {
-				givenLinkToCrateDraftShouldBeAdded(true);
+				givenCreatingDraftIsAllowed(true);
 
 				var model = callProcess();
 
@@ -92,19 +94,39 @@ class BescheidVorgangProcessorTest {
 
 			@Test
 			void shouldNotHaveLinkToCreateBescheidDraft() {
-				givenLinkToCrateDraftShouldBeAdded(false);
+				givenCreatingDraftIsAllowed(false);
 
 				var model = callProcess();
 
 				assertThat(model.getLink(BescheidVorgangProcessor.REL_CREATE_BESCHEID_DRAFT)).isEmpty();
 			}
 
-			private void givenLinkToDraftShouldBeAdded(boolean shouldBeAdded) {
-				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).shouldAddLinkToDraft(vorgang);
+			@Test
+			void shouldNotHaveLinkToBescheidUeberspringenUndVorgangAbschliessen() {
+				givenCreatingDraftIsAllowed(false);
+
+				var model = callProcess();
+
+				assertThat(model.getLink(BescheidVorgangProcessor.REL_UEBERSPRINGEN_UND_ABSCHLIESSEN)).isEmpty();
+			}
+
+			@Test
+			void shouldHaveLinkToBescheidUeberspringenUndVorgangAbschliessen() {
+				givenCreatingDraftIsAllowed(true);
+
+				var model = callProcess();
+
+				assertThat(model.getLink(BescheidVorgangProcessor.REL_UEBERSPRINGEN_UND_ABSCHLIESSEN)).isPresent().map(Link::getHref)
+						.hasValue(new UriTemplate(CommandByRelationController.COMMAND_BY_RELATION_PATH).expand(VorgangHeaderTestFactory.ID,
+								VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString());
+			}
+
+			private void givenRetrievingDraftIsAllowed(boolean shouldBeAdded) {
+				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).isRetrievingDraftAllowed(vorgang);
 			}
 
-			private void givenLinkToCrateDraftShouldBeAdded(boolean shouldBeAdded) {
-				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).shouldAddLinkToCreateDraft(vorgang);
+			private void givenCreatingDraftIsAllowed(boolean shouldBeAdded) {
+				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).isCreatingDraftAllowed(vorgang);
 			}
 
 			private EntityModel<? extends Vorgang> callProcess() {
@@ -119,7 +141,7 @@ class BescheidVorgangProcessorTest {
 	}
 
 	@Nested
-	class TestShouldAddLinkToDraft {
+	class TestIsRetrievingDraftAllowed {
 
 		@Test
 		void shouldReturnTrue() {
@@ -167,12 +189,12 @@ class BescheidVorgangProcessorTest {
 		}
 
 		private BooleanSupplier callMethod() {
-			return processor.shouldAddLinkToDraft(vorgang);
+			return processor.isRetrievingDraftAllowed(vorgang);
 		}
 	}
 
 	@Nested
-	class TestShouldAddLinkToCreateDraft {
+	class TestIsCreatingDraftAllowed {
 
 		@Test
 		void shouldReturnTrue() {
@@ -204,7 +226,7 @@ class BescheidVorgangProcessorTest {
 		}
 
 		private BooleanSupplier callMethod() {
-			return processor.shouldAddLinkToCreateDraft(vorgang);
+			return processor.isCreatingDraftAllowed(vorgang);
 		}
 	}
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
index 6495e5ade06e58926c0f6f382cfa062d4448d645..3737540596df3d9767a8413604057b399cc5a096 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
@@ -196,7 +196,8 @@ class CommandModelAssemblerTest {
 					"WIEDERVORLAGE_WIEDEREROEFFNEN", "CREATE_KOMMENTAR", "EDIT_KOMMENTAR", "REDIRECT_VORGANG", "FORWARD_SUCCESSFULL",
 					"FORWARD_FAILED", "ASSIGN_USER", "SEND_POSTFACH_MAIL", "SEND_POSTFACH_NACHRICHT", "RESEND_POSTFACH_MAIL", "CREATE_ATTACHED_ITEM",
 					"UPDATE_ATTACHED_ITEM", "PATCH_ATTACHED_ITEM", "RECEIVE_POSTFACH_NACHRICHT", "VORGANG_LOESCHEN", "DELETE_ATTACHED_ITEM",
-					"VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN", "CREATE_BESCHEID", "PROCESS_VORGANG", "SET_AKTENZEICHEN" })
+					"VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN", "CREATE_BESCHEID", "PROCESS_VORGANG", "SET_AKTENZEICHEN",
+					"DELETE_BESCHEID" })
 			void shouldBePresentOnOrder(CommandOrder order) {
 				var model = toModelWithOrder(order);