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 a64cb0dd5f581ff2a55b66d3ab9e56f22223841a..b86ac920fbeab00514c3cf45b7ae0f88e7ff7ce3 100644
--- a/alfa-client/libs/command-shared/src/lib/command.model.ts
+++ b/alfa-client/libs/command-shared/src/lib/command.model.ts
@@ -73,6 +73,7 @@ export enum CommandOrder {
   VORGANG_ZURUECKHOLEN = 'VORGANG_ZURUECKHOLEN',
   VORGANG_BEARBEITEN = 'VORGANG_BEARBEITEN',
   VORGANG_BESCHEIDEN = 'VORGANG_BESCHEIDEN',
+  FORWARD_VORGANG = 'FORWARD_VORGANG',
   VORGANG_ZURUECKSTELLEN = 'VORGANG_ZURUECKSTELLEN',
   VORGANG_ABSCHLIESSEN = 'VORGANG_ABSCHLIESSEN',
   VORGANG_WIEDEREROEFFNEN = 'VORGANG_WIEDEREROEFFNEN',
@@ -98,3 +99,5 @@ export interface CreateCommandProps {
   snackBarMessage?: string;
   snackBarErrorMessage?: string;
 }
+
+export type CreateCommandPropsWithoutResource = Omit<CreateCommandProps, 'resource'>;
diff --git a/alfa-client/libs/command-shared/test/command.ts b/alfa-client/libs/command-shared/test/command.ts
index ff7aae6c8ba99ae02f921c49b9a789c675e404bd..05fec9de4806f6473cf2d4204ee196ed71db5da0 100644
--- a/alfa-client/libs/command-shared/test/command.ts
+++ b/alfa-client/libs/command-shared/test/command.ts
@@ -35,6 +35,7 @@ import {
   CommandStatus,
   CreateCommand,
   CreateCommandProps,
+  CreateCommandPropsWithoutResource,
 } from '../src/lib/command.model';
 
 export function createCommand(): Command {
@@ -85,8 +86,11 @@ export function createCreateCommand(order: CommandOrder = CommandOrder.VORGANG_A
 }
 
 export function createCreateCommandProps(): CreateCommandProps {
+  return { ...createCreateCommandPropsWithoutResource(), resource: createCommandResource() };
+}
+
+export function createCreateCommandPropsWithoutResource(): CreateCommandPropsWithoutResource {
   return {
-    resource: createCommandResource(),
     linkRel: faker.internet.url(),
     command: createCreateCommand(),
     snackBarMessage: faker.word.sample(5),
diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
index 34a7bd065f0c85b3ddc80a39d2fbe195e9c33655..8c472b9da3215b624913bf869c367887ab97c27f 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
@@ -21,8 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { LinkRelationName } from '@alfa-client/tech-shared';
 import { mock, useFromMock } from '@alfa-client/test-utils';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { faker } from '@faker-js/faker/.';
 import { ResourceFactory } from '@ngxp/rest';
 import { cold, hot } from 'jest-marbles';
 import { createForwardingListResource } from 'libs/forwarding-shared/test/forwarding';
@@ -45,25 +47,26 @@ describe('ForwardingRepository', () => {
   describe('getForwardings', () => {
     const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]);
     const commandList: ForwardingListResource = createForwardingListResource();
+    const linkRel: LinkRelationName = faker.string.alpha(5);
 
     beforeEach(() => {
       resourceWrapper.get.mockReturnValue(hot('a', { a: commandList }));
     });
 
     it('should call resourceFactory', () => {
-      repository.getForwardings(vorgang);
+      repository.getForwardings(vorgang, linkRel);
 
       expect(resourceFactory.from).toHaveBeenCalledWith(vorgang);
     });
 
     it('should call resourceWrapper', () => {
-      repository.getForwardings(vorgang);
+      repository.getForwardings(vorgang, linkRel);
 
-      expect(resourceWrapper.get).toHaveBeenCalledWith(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL);
+      expect(resourceWrapper.get).toHaveBeenCalledWith(linkRel);
     });
 
     it('should return result', () => {
-      let result = repository.getForwardings(vorgang);
+      let result = repository.getForwardings(vorgang, linkRel);
 
       expect(result).not.toBeNull();
       expect(result).toBeObservable(cold('a', { a: commandList }));
diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
index a83ca3536dabe921ff4dc10719dbbdd1f5c74943..acd33b4bc2523a2761e420640d1d422cbdbca088 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
@@ -21,7 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { LinkRelationName } from '@alfa-client/tech-shared';
+import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
 import { ResourceFactory } from '@ngxp/rest';
 import { Observable } from 'rxjs';
@@ -31,7 +32,7 @@ import { ForwardingListResource } from './forwarding.model';
 export class ForwardingRepository {
   constructor(private resourceFactory: ResourceFactory) {}
 
-  public getForwardings(vorgang: VorgangWithEingangResource): Observable<ForwardingListResource> {
-    return this.resourceFactory.from(vorgang).get(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL);
+  public getForwardings(vorgang: VorgangWithEingangResource, linkRel: LinkRelationName): Observable<ForwardingListResource> {
+    return this.resourceFactory.from(vorgang).get(linkRel);
   }
 }
diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
index afb141693929a6b51c1d096d58510076816fdc0a..f3f631dfbcb316d354a18b2c2fab9299d347cd91 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
@@ -21,9 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { CommandOrder, CommandResource, CommandService } from '@alfa-client/command-shared';
+import { CommandOrder, CommandResource, CommandService, CreateCommandPropsWithoutResource } from '@alfa-client/command-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import {
+  EMPTY_STRING,
   StateResource,
   createEmptyStateResource,
   createErrorStateResource,
@@ -38,16 +39,19 @@ import {
   VorgangWithEingangLinkRel,
   VorgangWithEingangResource,
 } from '@alfa-client/vorgang-shared';
-import { cold, hot } from 'jest-marbles';
+import { faker } from '@faker-js/faker/.';
+import { ResourceUri } from '@ngxp/rest';
+import { hot } from 'jest-marbles';
 import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
-import { createCommandResource } from 'libs/command-shared/test/command';
+import { createCommandResource, createCreateCommandPropsWithoutResource } from 'libs/command-shared/test/command';
 import {
   createVorgangForwardRequest,
   createVorgangResource,
   createVorgangWithEingangResource,
 } from 'libs/vorgang-shared/test/vorgang';
-import { of } from 'rxjs';
+import { Observable, of } from 'rxjs';
 import { createApiError } from '../../../tech-shared/test/error';
+import { multipleCold, singleColdCompleted } from '../../../tech-shared/test/marbles';
 import { createForwardingListResource, createForwardingResource } from '../../test/forwarding';
 import { ForwardingLinkRel } from './forwarding.linkrel';
 import { ForwardingListResource, ForwardingResource } from './forwarding.model';
@@ -82,10 +86,9 @@ describe('ForwardingService', () => {
     expect(service).toBeTruthy();
   });
 
-  describe('forward', () => {
+  describe('forward by email', () => {
     const vorgang: VorgangResource = createVorgangResource();
-    const commandStateResource: StateResource<CommandResource> =
-      createStateResource(createCommandResource());
+    const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource());
 
     beforeEach(() => {
       commandService.createCommand.mockReturnValue(of(commandStateResource));
@@ -99,31 +102,27 @@ describe('ForwardingService', () => {
         body: null,
       };
 
-      service.forward(vorgang, forwardRequest);
+      service.forwardByEmail(vorgang, forwardRequest);
 
-      expect(commandService.createCommand).toHaveBeenCalledWith(
-        vorgang,
-        VorgangWithEingangLinkRel.FORWARD,
-        command,
-      );
+      expect(commandService.createCommand).toHaveBeenCalledWith(vorgang, VorgangWithEingangLinkRel.FORWARD, command);
     });
 
     it('should call reloadCurrentVorgang', () => {
       service.reloadCurrentVorgang = jest.fn();
 
-      service.forward(vorgang, forwardRequest);
+      service.forwardByEmail(vorgang, forwardRequest);
 
       expect(service.reloadCurrentVorgang).toHaveBeenCalled();
     });
 
     it('should call setPendingForwardSingleCommandLoading', () => {
-      service.forward(vorgang, forwardRequest);
+      service.forwardByEmail(vorgang, forwardRequest);
 
       expect(vorgangService.setPendingForwardSingleCommandLoading).toHaveBeenCalled();
     });
 
     it('should call setPendingForwardSingleCommand', () => {
-      service.forward(vorgang, forwardRequest);
+      service.forwardByEmail(vorgang, forwardRequest);
 
       expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalled();
     });
@@ -169,16 +168,12 @@ describe('ForwardingService', () => {
     });
 
     it('should call vorgangservice on command is done', () => {
-      const commandServiceReturnValue = createStateResource(
-        createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
-      );
+      const commandServiceReturnValue = createStateResource(createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]));
       commandService.pollCommand.mockReturnValue(of(commandServiceReturnValue));
 
       service.pollPendingForwardCommand(createStateResource(commandResourceWithUpdateLink));
 
-      expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalledWith(
-        commandServiceReturnValue,
-      );
+      expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalledWith(commandServiceReturnValue);
     });
 
     it('should call not vorgangservice on pending command', () => {
@@ -237,7 +232,7 @@ describe('ForwardingService', () => {
     });
   });
 
-  describe('getForwardings', () => {
+  describe('get forwardings by email', () => {
     const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource();
     const listResource: ForwardingListResource = createForwardingListResource();
 
@@ -246,17 +241,15 @@ describe('ForwardingService', () => {
     });
 
     it('should return value', () => {
-      const result = service.getForwardings(vorgang);
+      const result: Observable<StateResource<ForwardingListResource>> = service.getForwardingsByEmail(vorgang);
 
-      expect(result).toBeObservable(
-        cold('ab', { a: createEmptyStateResource(true), b: createStateResource(listResource) }),
-      );
+      expect(result).toBeObservable(multipleCold(createEmptyStateResource(true), createStateResource(listResource)));
     });
 
     it('should call repository', () => {
-      service.getForwardings(vorgang);
+      service.getForwardingsByEmail(vorgang);
 
-      expect(forwardingRepository.getForwardings).toHaveBeenCalledWith(vorgang);
+      expect(forwardingRepository.getForwardings).toHaveBeenCalledWith(vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL);
     });
   });
 
@@ -273,10 +266,7 @@ describe('ForwardingService', () => {
           order: CommandOrder.FORWARD_SUCCESSFULL,
           body: null,
         });
-
-        expect(result).toBeObservable(
-          cold('ab', { a: createEmptyStateResource(true), b: stateResource }),
-        );
+        expect(result).toBeObservable(multipleCold(createEmptyStateResource(true), stateResource));
       });
     });
 
@@ -284,11 +274,10 @@ describe('ForwardingService', () => {
       it('should call command service', () => {
         service.markAsSuccess(forwading);
 
-        expect(commandService.createCommand).toHaveBeenCalledWith(
-          forwading,
-          ForwardingLinkRel.MARK_AS_SUCCESS,
-          { order: CommandOrder.FORWARD_SUCCESSFULL, body: null },
-        );
+        expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, {
+          order: CommandOrder.FORWARD_SUCCESSFULL,
+          body: null,
+        });
       });
 
       it('should update list on valid response', () => {
@@ -306,11 +295,10 @@ describe('ForwardingService', () => {
       it('should call command service', () => {
         service.markAsFail(forwading);
 
-        expect(commandService.createCommand).toHaveBeenCalledWith(
-          forwading,
-          ForwardingLinkRel.MARK_AS_FAIL,
-          { order: CommandOrder.FORWARD_FAILED, body: null },
-        );
+        expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_FAIL, {
+          order: CommandOrder.FORWARD_FAILED,
+          body: null,
+        });
       });
 
       it('should update vorgang on valid response', () => {
@@ -368,4 +356,60 @@ describe('ForwardingService', () => {
       expect(service.setList).toHaveBeenCalledWith(list);
     });
   });
+
+  describe('forward', () => {
+    const forwardingToUri: ResourceUri = faker.internet.url();
+
+    const createCommandProps: CreateCommandPropsWithoutResource = createCreateCommandPropsWithoutResource();
+    const commandResource: CommandResource = createCommandResource();
+    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
+
+    beforeEach(() => {
+      vorgangService.createCommand.mockReturnValue(of(commandStateResource));
+      service._buildForwardCreateCommandProps = jest.fn().mockReturnValue(createCommandProps);
+    });
+
+    it('should call build forward create command', () => {
+      service.forward(forwardingToUri).subscribe();
+
+      expect(service._buildForwardCreateCommandProps).toHaveBeenCalledWith(forwardingToUri);
+    });
+
+    it('should call vorgang service to create command', () => {
+      service.forward(forwardingToUri).subscribe();
+
+      expect(vorgangService.createCommand).toHaveBeenCalledWith(createCommandProps, true);
+    });
+
+    it('should return response from command service', () => {
+      const forwardCommand$: Observable<StateResource<CommandResource>> = service.forward(forwardingToUri);
+
+      expect(forwardCommand$).toBeObservable(singleColdCompleted(commandStateResource));
+    });
+  });
+
+  describe('build forward command props', () => {
+    const forwardingToUri: ResourceUri = faker.internet.url();
+
+    it('should contains linkrel', () => {
+      const commandProps: CreateCommandPropsWithoutResource = service._buildForwardCreateCommandProps(forwardingToUri);
+
+      expect(commandProps.linkRel).toBe(VorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD);
+    });
+
+    it('should contains command', () => {
+      const commandProps: CreateCommandPropsWithoutResource = service._buildForwardCreateCommandProps(forwardingToUri);
+
+      expect(commandProps.command).toEqual({
+        order: CommandOrder.FORWARD_VORGANG,
+        body: { organisationEinheitId: forwardingToUri },
+      });
+    });
+
+    it('should contains empty snackbar message', () => {
+      const commandProps: CreateCommandPropsWithoutResource = service._buildForwardCreateCommandProps(forwardingToUri);
+
+      expect(commandProps.snackBarMessage).toBe(EMPTY_STRING);
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts
index 73510b902a2a9408905b9af3124bba1ab81efe47..b84c9d5c0ee51ea7e6464997fd24106a8c91fbf4 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts
@@ -21,17 +21,18 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Injectable, OnDestroy } from '@angular/core';
-import { Params } from '@angular/router';
 import {
+  CommandOrder,
   CommandResource,
   CommandService,
   CreateCommand,
+  CreateCommandPropsWithoutResource,
   isDone,
   isPending,
 } from '@alfa-client/command-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import {
+  EMPTY_STRING,
   StateResource,
   createEmptyStateResource,
   createStateResource,
@@ -45,21 +46,22 @@ import {
   VorgangWithEingangResource,
   createForwardCommand,
 } from '@alfa-client/vorgang-shared';
+import { Injectable, OnDestroy } from '@angular/core';
+import { Params } from '@angular/router';
+import { ResourceUri } from '@ngxp/rest';
 import { isNil } from 'lodash-es';
 import { BehaviorSubject, Observable, Subscription } from 'rxjs';
 import { first, map, startWith, tap } from 'rxjs/operators';
 import { ForwardingLinkRel } from './forwarding.linkrel';
 import { ForwardingListResource, ForwardingResource } from './forwarding.model';
 import { ForwardingRepository } from './forwarding.repository';
-import {
-  createForwardingMarkAsFailCommand,
-  createForwardingMarkAsSuccessCommand,
-} from './forwarding.util';
+import { createForwardingMarkAsFailCommand, createForwardingMarkAsSuccessCommand } from './forwarding.util';
 
 @Injectable({ providedIn: 'root' })
 export class ForwardingService implements OnDestroy {
-  private readonly forwardingList$: BehaviorSubject<StateResource<ForwardingListResource>> =
-    new BehaviorSubject(createEmptyStateResource<ForwardingListResource>());
+  private readonly forwardingList$: BehaviorSubject<StateResource<ForwardingListResource>> = new BehaviorSubject(
+    createEmptyStateResource<ForwardingListResource>(),
+  );
 
   private navigationSubscription: Subscription;
   private subscription: Subscription;
@@ -71,15 +73,15 @@ export class ForwardingService implements OnDestroy {
     private forwardingRepository: ForwardingRepository,
   ) {}
 
-  getForwardings(
-    vorgang: VorgangWithEingangResource,
-  ): Observable<StateResource<ForwardingListResource>> {
+  getForwardingsByEmail(vorgang: VorgangWithEingangResource): Observable<StateResource<ForwardingListResource>> {
     this.forwardingList$.next(createEmptyStateResource(true));
 
-    const subscription = this.forwardingRepository.getForwardings(vorgang).subscribe((list) => {
-      this.forwardingList$.next(createStateResource(list));
-      subscription.unsubscribe();
-    });
+    const subscription = this.forwardingRepository
+      .getForwardings(vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL)
+      .subscribe((listResource: ForwardingListResource) => {
+        this.forwardingList$.next(createStateResource(listResource));
+        subscription.unsubscribe();
+      });
 
     return this.forwardingList$.asObservable();
   }
@@ -94,9 +96,7 @@ export class ForwardingService implements OnDestroy {
 
   listenToNavigation(): void {
     this.unsubscribe();
-    this.navigationSubscription = this.navigationService
-      .urlChanged()
-      .subscribe((params) => this.onNavigation(params));
+    this.navigationSubscription = this.navigationService.urlChanged().subscribe((params) => this.onNavigation(params));
   }
 
   onNavigation(params: Params): void {
@@ -105,19 +105,15 @@ export class ForwardingService implements OnDestroy {
     }
   }
 
-  pollPendingForwardCommand(
-    command: StateResource<CommandResource>,
-  ): StateResource<CommandResource> {
+  pollPendingForwardCommand(command: StateResource<CommandResource>): StateResource<CommandResource> {
     if (this.shouldPoll(command)) {
-      this.subscription = this.commandService
-        .pollCommand(command.resource)
-        .subscribe((updatedCommand) => {
-          if (isDone(updatedCommand.resource)) {
-            this.vorgangService.setPendingForwardSingleCommand(updatedCommand);
-            this.reloadCurrentVorgang(updatedCommand);
-            this.subscription.unsubscribe();
-          }
-        });
+      this.subscription = this.commandService.pollCommand(command.resource).subscribe((updatedCommand) => {
+        if (isDone(updatedCommand.resource)) {
+          this.vorgangService.setPendingForwardSingleCommand(updatedCommand);
+          this.reloadCurrentVorgang(updatedCommand);
+          this.subscription.unsubscribe();
+        }
+      });
     }
     return command;
   }
@@ -126,10 +122,7 @@ export class ForwardingService implements OnDestroy {
     return command.loaded && isPending(command.resource);
   }
 
-  public forward(
-    vorgang: VorgangResource,
-    request: ForwardRequest,
-  ): Observable<StateResource<CommandResource>> {
+  public forwardByEmail(vorgang: VorgangResource, request: ForwardRequest): Observable<StateResource<CommandResource>> {
     this.vorgangService.setPendingForwardSingleCommandLoading();
     const subscription: Subscription = this.commandService
       .createCommand(vorgang, VorgangWithEingangLinkRel.FORWARD, createForwardCommand(request))
@@ -142,19 +135,13 @@ export class ForwardingService implements OnDestroy {
   }
 
   markAsSuccess(forward: ForwardingResource): Observable<StateResource<CommandResource>> {
-    return this.createMarkAsCommand(
-      forward,
-      ForwardingLinkRel.MARK_AS_SUCCESS,
-      createForwardingMarkAsSuccessCommand(),
-    ).pipe(tap((command) => this.updateForwardingList(command)));
+    return this.createMarkAsCommand(forward, ForwardingLinkRel.MARK_AS_SUCCESS, createForwardingMarkAsSuccessCommand()).pipe(
+      tap((command) => this.updateForwardingList(command)),
+    );
   }
 
   markAsFail(forward: ForwardingResource): Observable<StateResource<CommandResource>> {
-    return this.createMarkAsCommand(
-      forward,
-      ForwardingLinkRel.MARK_AS_FAIL,
-      createForwardingMarkAsFailCommand(),
-    ).pipe(
+    return this.createMarkAsCommand(forward, ForwardingLinkRel.MARK_AS_FAIL, createForwardingMarkAsFailCommand()).pipe(
       tap((command) => {
         if (isDone(command.resource)) this.reloadCurrentVorgang(command);
       }),
@@ -192,6 +179,22 @@ export class ForwardingService implements OnDestroy {
     this.forwardingList$.next(createStateResource(list));
   }
 
+  public forward(forwardingToUri: ResourceUri): Observable<StateResource<CommandResource>> {
+    return this.vorgangService.createCommand(this._buildForwardCreateCommandProps(forwardingToUri), true);
+  }
+
+  _buildForwardCreateCommandProps(forwardingToUri: ResourceUri): CreateCommandPropsWithoutResource {
+    return {
+      linkRel: VorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD,
+      command: this.createBuildForwardCommand(forwardingToUri),
+      snackBarMessage: EMPTY_STRING,
+    };
+  }
+
+  private createBuildForwardCommand(forwardingToUri: ResourceUri): CreateCommand {
+    return { order: CommandOrder.FORWARD_VORGANG, body: { organisationEinheitId: forwardingToUri } };
+  }
+
   ngOnDestroy(): void {
     this.unsubscribe();
   }
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts
index a4dd016d064b1e6d4c377d4f37518d8f9811eb84..b7387f11528fc118117ad6ca0cb51e11850ec1e8 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts
@@ -120,7 +120,7 @@ describe('ForwardingByEmailContainerComponent', () => {
 
       component.getForwardings();
 
-      expect(service.getForwardings).not.toHaveBeenCalled();
+      expect(service.getForwardingsByEmail).not.toHaveBeenCalled();
     });
 
     it('should call service get forward commands', () => {
@@ -129,7 +129,7 @@ describe('ForwardingByEmailContainerComponent', () => {
 
       component.getForwardings();
 
-      expect(service.getForwardings).toHaveBeenCalled();
+      expect(service.getForwardingsByEmail).toHaveBeenCalled();
     });
   });
 
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts
index f38fe66d56f971eef30db7804b5f8eea516853f1..bfc76dd9bd7bcb57c775bf38f8b60ab924c8f31b 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts
@@ -65,7 +65,7 @@ export class ForwardingByEmailContainerComponent implements OnChanges {
 
   getForwardings(): void {
     if (hasLink(this.vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL)) {
-      this.forwardingStateResources$ = this.forwardingService.getForwardings(this.vorgang);
+      this.forwardingStateResources$ = this.forwardingService.getForwardingsByEmail(this.vorgang);
     }
   }
 
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts
index 9cbe55ce655a5df52ab295788a8879602a7d9bb9..364d7e506e6e6b54ec5a84ecfb01f98ffebb9d9c 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts
@@ -61,7 +61,7 @@ export class ForwardingByEmailFormService extends AbstractFormService<CommandRes
   }
 
   protected doSubmit(): Observable<StateResource<CommandResource>> {
-    return this.forwardingService.forward(this.vorgang, this.getFormValue());
+    return this.forwardingService.forwardByEmail(this.vorgang, this.getFormValue());
   }
 
   patchField(fieldName: string, value: string) {
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts
index a20bed0488696ecb79c97108a03d0c2b5f1a36f8..26483f43dbf893769e87f2c6589ff88744c84461 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { ForwardingService } from '@alfa-client/forwarding-shared';
-import { mock, useFromMock } from '@alfa-client/test-utils';
+import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang';
 import { of } from 'rxjs';
@@ -30,7 +30,8 @@ import { ForwardingByEmailFormService } from './forwarding-by-email-form.service
 
 describe('ForwardingByEmailFormService', () => {
   let formService: ForwardingByEmailFormService;
-  let service;
+
+  let service: Mock<ForwardingService>;
 
   const formBuilder: UntypedFormBuilder = new UntypedFormBuilder();
 
@@ -48,8 +49,7 @@ describe('ForwardingByEmailFormService', () => {
     const returnValue = {};
 
     beforeEach(() => {
-      service.forward.mockReturnValue(of(returnValue));
-      service.doSubmit = jest.fn();
+      service.forwardByEmail.mockReturnValue(of(returnValue));
     });
 
     it('should call service', () => {
@@ -57,7 +57,7 @@ describe('ForwardingByEmailFormService', () => {
 
       formService.submit();
 
-      expect(service.forward).toHaveBeenCalledWith(formService.vorgang, formService.form.value);
+      expect(service.forwardByEmail).toHaveBeenCalledWith(formService.vorgang, formService.form.value);
     });
   });
 
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
index ad97972cd9cc4c7e7f135d96b2b755378f953b3e..e6c65fbf4d123859056d2b834c6b45107a620683 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
@@ -1 +1,6 @@
-<alfa-forwarding-dialog [selectedSearchResult]="selectedSearchResult$ | async" data-test-id="forwarding-dialog"/>
\ No newline at end of file
+<alfa-forwarding-dialog
+  [forwardCommandStateResource]="forwardCommandStateResource$ | async"
+  [selectedSearchResult]="selectedSearchResult$ | async"
+  (forward)="forward($event)"
+  data-test-id="forwarding-dialog"
+/>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts
index 355c614cc694333be2f34a629eac5ad5b527035e..2dbd1a86402ade740cfbef6bc23460542baec559 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts
@@ -1,9 +1,18 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { mock, Mock } from '@alfa-client/test-utils';
+import { CommandLinkRel, CommandResource } from '@alfa-client/command-shared';
+import { ForwardingService } from '@alfa-client/forwarding-shared';
+import { StateResource } from '@alfa-client/tech-shared';
+import { mock, Mock, triggerEvent } from '@alfa-client/test-utils';
+import { OzgcloudDialogService } from '@alfa-client/ui';
 import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared';
 import { AsyncPipe } from '@angular/common';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { faker } from '@faker-js/faker/.';
+import { ResourceUri } from '@ngxp/rest';
+import { createCommandStateResource } from 'libs/command-shared/test/command';
+import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
+import { singleColdCompleted } from 'libs/tech-shared/test/marbles';
 import { MockComponent } from 'ng-mocks';
+import { of } from 'rxjs';
 import { ForwardingDialogContainerComponent } from './forwarding-dialog-container.component';
 import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog.component';
 
@@ -11,14 +20,30 @@ describe('ForwardingDialogContainerComponent', () => {
   let component: ForwardingDialogContainerComponent;
   let fixture: ComponentFixture<ForwardingDialogContainerComponent>;
 
+  const forwardingDialog: string = getDataTestIdOf('forwarding-dialog');
+
+  let service: Mock<ForwardingService>;
   let organisationsEinheitService: Mock<OrganisationsEinheitService>;
+  let dialogService: Mock<OzgcloudDialogService>;
 
   beforeEach(async () => {
+    service = mock(ForwardingService);
     organisationsEinheitService = mock(OrganisationsEinheitService);
+    dialogService = mock(OzgcloudDialogService);
 
     await TestBed.configureTestingModule({
       imports: [ForwardingDialogContainerComponent, AsyncPipe],
       declarations: [MockComponent(ForwardingDialogComponent)],
+      providers: [
+        {
+          provide: ForwardingService,
+          useValue: service,
+        },
+        {
+          provide: OzgcloudDialogService,
+          useValue: dialogService,
+        },
+      ],
     })
       .overrideComponent(ForwardingDialogContainerComponent, {
         set: {
@@ -40,4 +65,45 @@ describe('ForwardingDialogContainerComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('forward button', () => {
+    const targetUri: ResourceUri = faker.internet.url();
+
+    it('should call forward on click', () => {
+      component.forward = jest.fn();
+
+      triggerEvent({ fixture, elementSelector: forwardingDialog, name: 'forward', data: targetUri });
+
+      expect(component.forward).toHaveBeenCalledWith(targetUri);
+    });
+  });
+
+  describe('forward', () => {
+    const targetUri: ResourceUri = faker.internet.url();
+
+    const commandStateResource: StateResource<CommandResource> = createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE]);
+
+    beforeEach(() => {
+      service.forward.mockReturnValue(of(commandStateResource));
+    });
+
+    it('should call service with uri', () => {
+      component.forward(targetUri);
+
+      expect(service.forward).toHaveBeenCalledWith(targetUri);
+    });
+
+    it('should set service response', () => {
+      component.forward(targetUri);
+
+      expect(component.forwardCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource));
+    });
+
+    it('should call dialog service to close all if command is done', () => {
+      component.forward(targetUri);
+      component.forwardCommandStateResource$.subscribe();
+
+      expect(dialogService.closeAll).toHaveBeenCalled();
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
index afb2a3d5a97213615dcc22a98195e82fd916ed50..726320a3498c9e9b3ede988f28d84feee3cbcc24 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
@@ -1,4 +1,7 @@
-import { ResourceRepository } from '@alfa-client/tech-shared';
+import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared';
+import { ForwardingService } from '@alfa-client/forwarding-shared';
+import { createEmptyStateResource, ResourceRepository, StateResource } from '@alfa-client/tech-shared';
+import { OzgcloudDialogService } from '@alfa-client/ui';
 import { VorgangService } from '@alfa-client/vorgang-shared';
 import { createOrganisationEinheitService } from '@alfa-client/zustaendige-stelle';
 import {
@@ -6,15 +9,16 @@ import {
   OrganisationsEinheitService,
   ZUSTAENDIGE_STELLE_SERVICE,
 } from '@alfa-client/zustaendige-stelle-shared';
-import { AsyncPipe } from '@angular/common';
+import { AsyncPipe, CommonModule } from '@angular/common';
 import { Component, inject, OnInit } from '@angular/core';
-import { Observable } from 'rxjs';
+import { ResourceUri } from '@ngxp/rest';
+import { Observable, of } from 'rxjs';
 import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog.component';
 
 @Component({
   selector: 'alfa-forwarding-dialog-container',
   standalone: true,
-  imports: [ForwardingDialogComponent, AsyncPipe],
+  imports: [ForwardingDialogComponent, AsyncPipe, CommonModule],
   templateUrl: './forwarding-dialog-container.component.html',
   providers: [
     {
@@ -26,10 +30,22 @@ import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog
 })
 export class ForwardingDialogContainerComponent implements OnInit {
   private readonly organisationsEinheitService = inject(ZUSTAENDIGE_STELLE_SERVICE) as OrganisationsEinheitService;
+  private readonly forwardingService = inject(ForwardingService);
+  private readonly dialogService = inject(OzgcloudDialogService);
 
   public selectedSearchResult$: Observable<OrganisationsEinheitResource>;
+  public forwardCommandStateResource$: Observable<StateResource<CommandResource>> =
+    of(createEmptyStateResource<CommandResource>());
 
   ngOnInit(): void {
     this.selectedSearchResult$ = this.organisationsEinheitService.getSelectedResult();
   }
+
+  public forward(targetUri: ResourceUri): void {
+    this.forwardCommandStateResource$ = this.forwardingService.forward(targetUri).pipe(
+      tapOnCommandSuccessfullyDone(() => {
+        this.dialogService.closeAll();
+      }),
+    );
+  }
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
index d0dd3c9c055bfc74030ddd0a0c19ddacafa8976b..1b36245dd262eb85c56fa35d29ba8f4bf1ba53d4 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html
@@ -1,3 +1,11 @@
-<ods-button-with-spinner [disabled]="disabled" text="Weiterleiten" variant="outline" dataTestId="forwarding-button">
+<ods-button-with-spinner
+  [stateResource]="stateResource"
+  [disabled]="disabled"
+  (clickEmitter)="clickEmitter.emit()"
+  text="Weiterleiten"
+  variant="outline"
+  dataTestId="forwarding-button"
+  data-test-id="forwarding-button-container"
+>
   <ods-forward-vorgang-icon icon class="fill-primary" />
-</ods-button-with-spinner>
\ No newline at end of file
+</ods-button-with-spinner>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts
index ec3ee8288b888a029f6de545b97636ec3c5aae5d..9e9a9d2118e1a9758f7ba58715f822822ead4cbf 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts
@@ -1,7 +1,8 @@
+import { dispatchEventFromFixture, MockEvent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-
 import { ButtonWithSpinnerComponent } from '@ods/component';
 import { ForwardVorgangIconComponent } from '@ods/system';
+import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { ForwardingButtonComponent } from './forwarding-button.component';
 
@@ -9,6 +10,8 @@ describe('ForwardingButtonComponent', () => {
   let component: ForwardingButtonComponent;
   let fixture: ComponentFixture<ForwardingButtonComponent>;
 
+  const button: string = getDataTestIdOf('forwarding-button-container');
+
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardingButtonComponent],
@@ -23,4 +26,14 @@ describe('ForwardingButtonComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('on button click', () => {
+    it('should emit', () => {
+      component.clickEmitter.emit = jest.fn();
+
+      dispatchEventFromFixture(fixture, button, MockEvent.CLICK);
+
+      expect(component.clickEmitter.emit).toHaveBeenCalled();
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts
index 63fec70d17fb549ab13163155fe3ca596446209a..767fe5e4ce40e7589725973d37e9a84c12fd0564 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts
@@ -1,4 +1,6 @@
-import { Component, Input } from '@angular/core';
+import { CommandResource } from '@alfa-client/command-shared';
+import { StateResource } from '@alfa-client/tech-shared';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
 import { ForwardVorgangIconComponent } from '@ods/system';
 
@@ -10,4 +12,7 @@ import { ForwardVorgangIconComponent } from '@ods/system';
 })
 export class ForwardingButtonComponent {
   @Input() disabled: boolean;
+  @Input() stateResource: StateResource<CommandResource>;
+
+  @Output() clickEmitter: EventEmitter<void> = new EventEmitter();
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
index 3d60550c444dcbc34d9f229e91c1133e6a5af9ac..5aaf99a340455262073812254cf8c7d74adf578e 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
@@ -1,5 +1,5 @@
 <div class="flex w-[620px] max-w-full flex-col gap-4 bg-background-100 p-8">
-  <div class="flex items-center justify-between" >
+  <div class="flex items-center justify-between">
     <h1 class="text-xl font-semibold text-primary">Vorgang weiterleiten</h1>
     <ods-cancel-dialog-button showAsIconButton="true" />
   </div>
@@ -7,14 +7,16 @@
   @if (!selectedSearchResult) {
     <alfa-search-zustaendige-stelle-form-container cdkFocusInitial focusOnSearchField="true" data-test-id="zufi-search" />
   } @else {
-    <alfa-forwarding-item-in-dialog
-      [organisationsEinheitResource]="selectedSearchResult"
-      data-test-id="forwarding-item"
-    />
+    <alfa-forwarding-item-in-dialog [organisationsEinheitResource]="selectedSearchResult" data-test-id="forwarding-item" />
   }
 
   <div class="flex gap-4">
-    <alfa-forwarding-button [disabled]="!selectedSearchResult"/>
+    <alfa-forwarding-button
+      [stateResource]="forwardCommandStateResource"
+      [disabled]="!selectedSearchResult"
+      (clickEmitter)="onForwarding()"
+      data-test-id="foward-dialog-forward-button"
+    />
     <ods-cancel-dialog-button />
   </div>
 </div>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
index 6d4454c8e37a0bde91a410aeacf6df07087973f6..7e6114236be2ad7d2dddfcdfd309853b32568cdd 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
@@ -1,14 +1,21 @@
-import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import {
+  dispatchEventFromFixture,
+  existsAsHtmlElement,
+  getMockComponent,
+  MockEvent,
+  notExistsAsHtmlElement,
+} from '@alfa-client/test-utils';
 import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
 import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { getUrl } from '@ngxp/rest';
 import { CancelDialogButtonComponent } from '@ods/component';
 import { MockComponent, MockModule } from 'ng-mocks';
 import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
 import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
-import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component';
 import { ForwardingDialogComponent } from './forwarding-dialog.component';
+import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component';
 
 describe('ForwardingDialogComponent', () => {
   let component: ForwardingDialogComponent;
@@ -16,6 +23,7 @@ describe('ForwardingDialogComponent', () => {
 
   const zufiSearch: string = getDataTestIdOf('zufi-search');
   const forwardingItem: string = getDataTestIdOf('forwarding-item');
+  const forwardButton: string = getDataTestIdOf('foward-dialog-forward-button');
 
   const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource();
   beforeEach(async () => {
@@ -64,23 +72,21 @@ describe('ForwardingDialogComponent', () => {
     fixture.detectChanges();
   });
 
-  describe('template', () => {
-    describe('forwarding item', () => {
-      it('should render if selectedSearchResult is NOT null', () => {
-        component.selectedSearchResult = organisationsEinheitResource;
+  describe('forwarding item', () => {
+    it('should render if selectedSearchResult is NOT null', () => {
+      component.selectedSearchResult = organisationsEinheitResource;
 
-        fixture.detectChanges();
+      fixture.detectChanges();
 
-        existsAsHtmlElement(fixture, forwardingItem);
-      });
+      existsAsHtmlElement(fixture, forwardingItem);
+    });
 
-      it('should NOT render if selectedSearchResult is null', () => {
-        component.selectedSearchResult = null;
+    it('should NOT render if selectedSearchResult is null', () => {
+      component.selectedSearchResult = null;
 
-        fixture.detectChanges();
+      fixture.detectChanges();
 
-        notExistsAsHtmlElement(fixture, forwardingItem);
-      });
+      notExistsAsHtmlElement(fixture, forwardingItem);
     });
   });
 
@@ -103,4 +109,15 @@ describe('ForwardingDialogComponent', () => {
       expect(forwardingButton.disabled).toBeFalsy();
     });
   });
+
+  describe('forward button', () => {
+    it('should emit on click', () => {
+      component.selectedSearchResult = organisationsEinheitResource;
+      component.forward.emit = jest.fn();
+
+      dispatchEventFromFixture(fixture, forwardButton, MockEvent.CLICK);
+
+      expect(component.forward.emit).toHaveBeenCalledWith(getUrl(organisationsEinheitResource));
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
index c1695f42a08728b6921b6813694fad2ffb5440fe..178d84465273bc421ee5bd9a49dca84d213cb299 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
@@ -1,8 +1,11 @@
+import { CommandResource } from '@alfa-client/command-shared';
+import { StateResource } from '@alfa-client/tech-shared';
 import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
 import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { A11yModule } from '@angular/cdk/a11y';
-import { Component, Input } from '@angular/core';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 import { ReactiveFormsModule } from '@angular/forms';
+import { getUrl, ResourceUri } from '@ngxp/rest';
 import { CancelDialogButtonComponent } from '@ods/component';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
 import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component';
@@ -22,4 +25,11 @@ import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-it
 })
 export class ForwardingDialogComponent {
   @Input() selectedSearchResult: OrganisationsEinheitResource;
+  @Input() forwardCommandStateResource: StateResource<CommandResource>;
+
+  @Output() forward: EventEmitter<ResourceUri> = new EventEmitter();
+
+  public onForwarding(): void {
+    this.forward.emit(getUrl(this.selectedSearchResult));
+  }
 }
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
index 0aa3ead988609bc5416e593f13cfdf6e44bd8a6e..5e9995262ed38703521d02d10ee078a330163cbd 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
@@ -23,27 +23,33 @@
  */
 import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@alfa-client/api-root-shared';
 import { BinaryFileListResource } from '@alfa-client/binary-file-shared';
-import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@alfa-client/command-shared';
+import {
+  CommandOrder,
+  CommandResource,
+  CommandService,
+  CreateCommandProps,
+  CreateCommandPropsWithoutResource,
+} from '@alfa-client/command-shared';
 import { Environment } from '@alfa-client/environment-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import { EMPTY_STRING, StateResource, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared';
 import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { HttpErrorResponse } from '@angular/common/http';
+import { faker } from '@faker-js/faker';
 import { ResourceUri, getUrl } from '@ngxp/rest';
 import { cold, hot } from 'jest-marbles';
 import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
 import { createBinaryFileListResource } from 'libs/binary-file-shared/test/binary-file';
 import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
-import { createCommandResource } from 'libs/command-shared/test/command';
+import { createCommandResource, createCreateCommandPropsWithoutResource } from 'libs/command-shared/test/command';
+import { singleColdCompleted } from 'libs/tech-shared/test/marbles';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { Observable, of } from 'rxjs';
 import { VorgangFacade } from './+state/vorgang.facade';
 import { VorgangWithEingangLinkRel } from './vorgang.linkrel';
-import { AdditionalActions, VorgangWithEingangResource } from './vorgang.model';
+import { AdditionalActions, VorgangResource, VorgangWithEingangResource } from './vorgang.model';
 import { VorgangService } from './vorgang.service';
 
-import { faker } from '@faker-js/faker';
-
 import * as VorgangNavigationUtil from './vorgang-navigation.util';
 
 describe('VorgangService', () => {
@@ -515,4 +521,64 @@ describe('VorgangService', () => {
       });
     });
   });
+
+  describe('select vorgang with eingang', () => {
+    const vorgangStateResource: StateResource<VorgangResource> = createStateResource(createVorgangWithEingangResource());
+
+    beforeEach(() => {
+      facade.getVorgangWithEingang.mockReturnValue(of(vorgangStateResource));
+    });
+
+    it('should call facade to get vorgang with eingang', () => {
+      service.selectVorgangWithEingang();
+
+      expect(facade.getVorgangWithEingang).toHaveBeenCalled();
+    });
+
+    it('should return value', () => {
+      const vorgangWithEingangStateResource$: Observable<StateResource<VorgangWithEingangResource>> =
+        service.selectVorgangWithEingang();
+
+      expect(vorgangWithEingangStateResource$).toBeObservable(singleColdCompleted(vorgangStateResource));
+    });
+  });
+
+  describe('create command', () => {
+    const vorgangResource: VorgangWithEingangResource = createVorgangWithEingangResource();
+
+    const createCommandProps: CreateCommandPropsWithoutResource = createCreateCommandPropsWithoutResource();
+    const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]);
+    const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource);
+
+    beforeEach(() => {
+      facade.getVorgangWithEingang.mockReturnValue(of(createStateResource(vorgangResource)));
+      commandService.createCommandByProps.mockReturnValue(of(commandStateResource));
+    });
+
+    it('should call facade to get vorgang with eingang', () => {
+      service.createCommand(createCommandProps).subscribe();
+
+      expect(facade.getVorgangWithEingang).toHaveBeenCalled();
+    });
+
+    it('should call command service to create command', () => {
+      service.createCommand(createCommandProps).subscribe();
+
+      expect(commandService.createCommandByProps).toHaveBeenCalledWith({ ...createCommandProps, resource: vorgangResource });
+    });
+
+    it('should return response from command service', () => {
+      const forwardCommand$: Observable<StateResource<CommandResource>> = service.createCommand(createCommandProps);
+
+      expect(forwardCommand$).toBeObservable(singleColdCompleted(commandStateResource));
+    });
+
+    it('should call reload if command is done and reload flag is true', () => {
+      service.reloadVorgang = jest.fn();
+
+      service.createCommand(createCommandProps, true).subscribe();
+
+      expect(service.reloadVorgang).toHaveBeenCalled();
+    });
+  });
 });
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts
index 1af6e12ff7877e9e221d05730199423689663082..7e43262e9757d58e030c4bbe2900aae791255e96 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts
@@ -28,15 +28,17 @@ import {
   CommandResource,
   CommandService,
   CreateCommandProps,
+  CreateCommandPropsWithoutResource,
   getEffectedResourceUrl,
+  tapOnCommandSuccessfullyDone,
 } from '@alfa-client/command-shared';
 import { ENVIRONMENT_CONFIG, Environment } from '@alfa-client/environment-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
-import { StateResource, createEmptyStateResource, doIfLoadingRequired, isNotNull } from '@alfa-client/tech-shared';
+import { StateResource, createEmptyStateResource, doIfLoadingRequired, isNotNull, mapToResource } from '@alfa-client/tech-shared';
 import { Inject, Injectable } from '@angular/core';
 import { ResourceUri, hasLink } from '@ngxp/rest';
 import { Observable, combineLatest } from 'rxjs';
-import { filter, map, startWith, tap, withLatestFrom } from 'rxjs/operators';
+import { filter, first, map, startWith, switchMap, tap, withLatestFrom } from 'rxjs/operators';
 import { VorgangFacade } from './+state/vorgang.facade';
 import { buildLinkRelFromPathSegments } from './vorgang-navigation.util';
 import { VorgangWithEingangLinkRel } from './vorgang.linkrel';
@@ -142,10 +144,6 @@ export class VorgangService {
     return this.facade.getAssignUserCommand();
   }
 
-  public reloadVorgang(commandResource: CommandResource): void {
-    this.facade.loadVorgangWithEingang(getEffectedResourceUrl(commandResource));
-  }
-
   public getBackButtonUrl(): Observable<string> {
     return this.facade.getBackButtonUrl();
   }
@@ -198,4 +196,28 @@ export class VorgangService {
     const createCommand = { order: CommandOrder.SET_AKTENZEICHEN, body: { aktenzeichen } };
     return this.commandService.createCommand(vorgang, VorgangWithEingangLinkRel.SET_AKTENZEICHEN, createCommand);
   }
+
+  public createCommand(
+    createCommandProps: CreateCommandPropsWithoutResource,
+    reloadResource: boolean = false,
+  ): Observable<StateResource<CommandResource>> {
+    return this.selectVorgangWithEingang().pipe(
+      first(),
+      mapToResource(),
+      switchMap((vorgang: VorgangWithEingangResource) =>
+        this.commandService.createCommandByProps({ ...createCommandProps, resource: vorgang }),
+      ),
+      tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => {
+        if (reloadResource) this.reloadVorgang(commandStateResource.resource);
+      }),
+    );
+  }
+
+  public selectVorgangWithEingang(): Observable<StateResource<VorgangWithEingangResource>> {
+    return this.facade.getVorgangWithEingang();
+  }
+
+  public reloadVorgang(commandResource: CommandResource): void {
+    this.facade.loadVorgangWithEingang(getEffectedResourceUrl(commandResource));
+  }
 }