diff --git a/alfa-server/src/main/resources/application-dev.yml b/alfa-server/src/main/resources/application-dev.yml
index 18feb5c73f71f7e5cfda4ffc5ea23530d8797f34..0b2ff4f5d986874d51c24f2e1ea49e42ec0f30c2 100644
--- a/alfa-server/src/main/resources/application-dev.yml
+++ b/alfa-server/src/main/resources/application-dev.yml
@@ -11,6 +11,7 @@ ozgcloud:
   feature:
     reply-always-allowed: true
     collaboration-enabled: true
+    forward-by-ozg-cloud-enabled: true
   production: false
   stage:
     production: false
diff --git a/alfa-server/src/main/resources/application-e2e.yml b/alfa-server/src/main/resources/application-e2e.yml
index d56ddccb468a1ec933afa67796cc933a031851a8..e1104d4169b4fd601ae25ba33fe7d8950e4fcccb 100644
--- a/alfa-server/src/main/resources/application-e2e.yml
+++ b/alfa-server/src/main/resources/application-e2e.yml
@@ -5,6 +5,7 @@ ozgcloud:
   feature:
     reply-always-allowed: true
     collaboration-enabled: true
+    forward-by-ozg-cloud-enabled: true
   forwarding:
     lninfo:
       url: classpath:files/LandesnetzInfo.html
diff --git a/alfa-server/src/main/resources/application-local.yml b/alfa-server/src/main/resources/application-local.yml
index 76f4ccb48052de1ee266058c1f7377dafdac11b0..6c0f901bcd2e416639d72d9c02c178e87a4fb1f6 100644
--- a/alfa-server/src/main/resources/application-local.yml
+++ b/alfa-server/src/main/resources/application-local.yml
@@ -24,6 +24,7 @@ ozgcloud:
   feature:
     reply-always-allowed: true
     collaboration-enabled: true
+    forward-by-ozg-cloud-enabled: true
   production: false
   user-assistance:
     documentation:
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java
index 9fe15e7d929b643995dc46717453e60be8f58304..52e3396fd8b1e5002bbbf80b22faf14794184e25 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java
@@ -44,4 +44,9 @@ public class FeatureToggleProperties {
 	 * Enable collaboration-feature in Vorgang
 	 */
 	private boolean collaborationEnabled = false;
+
+	/**
+	 * Enable forwarding feature
+	 */
+	private boolean forwardByOzgCloudEnabled = false;
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java
index 21bb1c9bde7590193d9f78598e95181070685b10..b4d8be1f41504a7f2a31e3256f7aacc633f79a42 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java
@@ -30,7 +30,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 
 import de.ozgcloud.alfa.common.LinkedUserProfileResource;
 import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
index eff4c6d7cdb8e907412b0f9a98ac9c793cfdbc59..46db2e9b657a09f9d98f4a25c77d800a07cdba1b 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
@@ -30,13 +30,13 @@ import de.ozgcloud.alfa.aktenzeichen.AktenzeichenCommandBody;
 import de.ozgcloud.alfa.bescheid.Bescheid;
 import de.ozgcloud.alfa.bescheid.BescheidDocumentFromFileBody;
 import de.ozgcloud.alfa.collaboration.CollaborationCommandBody;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import de.ozgcloud.alfa.kommentar.Kommentar;
 import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
 import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
 import de.ozgcloud.alfa.postfach.PostfachMail;
 import de.ozgcloud.alfa.vorgang.AssignUserCommandBody;
 import de.ozgcloud.alfa.vorgang.ProcessVorgangBody;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
 import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
 
 @JsonSubTypes({
@@ -57,7 +57,7 @@ import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
 		@Type(value = AktenzeichenCommandBody.class, name = "SET_AKTENZEICHEN"),
 		@Type(value = BescheidDocumentFromFileBody.class, name = "CREATE_BESCHEID_DOCUMENT_FROM_FILE"),
 		@Type(value = CollaborationCommandBody.class, name = "CREATE_COLLABORATION_REQUEST"),
-		@Type(value = EmptyCommandBody.class, name="ARCHIVE_VORGANG")
+		@Type(value = EmptyCommandBody.class, name = "ARCHIVE_VORGANG")
 })
 public interface CommandBody {
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java
index 7c81d4cb175a320df2fdb4fb9c7e49160b0d66de..d9c449e4ca471d018a686fe47f6fef78f325316f 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java
@@ -36,7 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import de.ozgcloud.alfa.common.TimeMapper;
 import de.ozgcloud.alfa.common.callcontext.CallContextMapper;
 import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
 import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
 import de.ozgcloud.vorgang.grpc.command.GrpcRedirectRequest;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java
index cd92b52eef33d5fdaf1d13075e77488304a370c4..31f4bce83e9fd2493493ccf8629ff74aecd11927 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java
@@ -40,10 +40,10 @@ import de.ozgcloud.alfa.bescheid.BescheidController;
 import de.ozgcloud.alfa.bescheid.DocumentController;
 import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
 import de.ozgcloud.alfa.common.ModelBuilder;
+import de.ozgcloud.alfa.forwarding.ForwardingController;
 import de.ozgcloud.alfa.kommentar.KommentarController;
 import de.ozgcloud.alfa.postfach.PostfachMailController;
 import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
 import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController;
 
 @Component
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java
index 90a7dbe82cd63d41f3ef77e9143bfadf920c0ca9..e4dafbe784bf6fa42d35d9a7fcc5fecd42f886b9 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Service;
 
 import de.ozgcloud.alfa.common.GrpcUtil;
 import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
 import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub;
 import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java
index 634746ff1f2f7bae267d4811b72d47860c540ba3..ae6b87d3a4c82fbb5d8ec22cd67ad9eb87d44564 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java
@@ -31,7 +31,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
 import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
 
 import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/Forwarding.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/Forwarding.java
index 8bce269cf11e84e986cba4edbd1333eb066a186a..396153f1c4cd950e7274561c5e8bdf6973c2585e 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/Forwarding.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.time.ZonedDateTime;
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingController.java
similarity index 95%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingController.java
index 62447cc7c136cee398917a79c4cf04d2af0081d2..665f4ada47abfc85e8db115c7b74713842370d3c 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingController.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.util.List;
 import java.util.function.Predicate;
@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
+import de.ozgcloud.alfa.forwarding.Forwarding.Status;
 
 @RestController
 @RequestMapping(ForwardingController.LIST_PATH)
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoService.java
similarity index 98%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoService.java
index 7eb50c08577e8293e2306e6ee986406f3787ed17..bcf072bfdbf2108a64759e1f27aee87b475ba6fa 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoService.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.util.Collections;
 import java.util.Objects;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingMapper.java
similarity index 96%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingMapper.java
index c8e7a4af92ff6d7177040e3c7050d9213781c50e..808adef376c3bce7035bedfaef872a9b9c594b73 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingMapper.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import org.mapstruct.Mapper;
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssembler.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssembler.java
index 8a4d1bb8c7c0f7c2133acbd6f67ffe7a13a84624..fdb6df92dd6fa7fc692974d1e079bb8567a1bb78 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssembler.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
 
@@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
 
 import de.ozgcloud.alfa.common.ModelBuilder;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
+import de.ozgcloud.alfa.forwarding.Forwarding.Status;
 
 @Component
 class ForwardingModelAssembler implements RepresentationModelAssembler<Forwarding, EntityModel<Forwarding>> {
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordSizeConstraint.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordSizeConstraint.java
index 11fec98c49d8e183569257701ddee46a7e9d432d..674402eb9e14ff4e184147cfaa5e002b63bfccd3 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordSizeConstraint.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidator.java
similarity index 98%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidator.java
index 1c6a82af0f9256a1373ae927cfa0ada3a21f163b..b56dd943b95bb31daa4fa970fa109d00129eebd4 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidator.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import jakarta.validation.ConstraintValidator;
 import jakarta.validation.ConstraintValidatorContext;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteService.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteService.java
index 85ca4d49cb0aec55df057dfc245bfb07364b4e0c..24f9874965316d17f3e711b64e0e2bf11ce5644c 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteService.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.util.stream.Stream;
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingService.java
similarity index 96%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingService.java
index abd68ad81cff15f504bd1853839bafd05223d148..6da266ffa25eca78b937b26255e7a4aa90ce5200 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingService.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.util.stream.Stream;
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..60a3c43ef0338e8e7908cc592ddcb3c2fdb7f257
--- /dev/null
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessor.java
@@ -0,0 +1,66 @@
+package de.ozgcloud.alfa.forwarding;
+
+import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
+
+import java.util.Optional;
+
+import org.springframework.hateoas.EntityModel;
+import org.springframework.hateoas.Link;
+import org.springframework.hateoas.LinkRelation;
+import org.springframework.hateoas.server.RepresentationModelProcessor;
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.alfa.common.FeatureToggleProperties;
+import de.ozgcloud.alfa.common.command.CommandController;
+import de.ozgcloud.alfa.common.user.CurrentUserService;
+import de.ozgcloud.alfa.common.user.UserRole;
+import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
+import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@RequiredArgsConstructor
+class ForwardingVorgangWithEingangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
+
+	static final LinkRelation REL_FORWARD_BY_OZGCLOUD = LinkRelation.of("forwardByOzgCloud");
+	static final LinkRelation REL_FORWARD_BY_EMAIL = LinkRelation.of("forwardByEmail");
+
+	private final FeatureToggleProperties featureToggleProperties;
+	private final CurrentUserService userService;
+
+	@Override
+	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
+
+		Optional.ofNullable(model.getContent())
+				.ifPresent(vorgang -> model
+						.addIf(isForwardableByOzgCloud(vorgang), () -> buildForwardByOzgCloudLink(vorgang))
+						.addIf(isForwardableByEmail(), () -> buildForwardByEmailLink(vorgang)));
+		return model;
+	}
+
+	boolean isForwardableByOzgCloud(VorgangWithEingang vorgang) {
+		return featureToggleProperties.isForwardByOzgCloudEnabled() && isStatusNeu(vorgang) && isVerwaltungUser();
+	}
+
+	private boolean isStatusNeu(VorgangWithEingang vorgang) {
+		return vorgang.getStatus() == VorgangStatus.NEU;
+	}
+
+	private boolean isVerwaltungUser() {
+		return userService.hasRole(UserRole.VERWALTUNG_USER);
+	}
+
+	private Link buildForwardByOzgCloudLink(VorgangWithEingang vorgang) {
+		return linkTo(methodOn(CommandController.CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(),
+				vorgang.getVersion(), null)).withRel(REL_FORWARD_BY_OZGCLOUD);
+	}
+
+	boolean isForwardableByEmail() {
+		return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
+	}
+
+	private Link buildForwardByEmailLink(VorgangWithEingang vorgang) {
+		return linkTo(methodOn(ForwardingController.class).findByVorgangId(vorgang.getId())).withRel(REL_FORWARD_BY_EMAIL);
+	}
+
+}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoProperties.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoProperties.java
index 010b4798226e61d67d2f7579e289e8cd09b41904..2d74c3df6885e4d84765f9b084d96c1b4b2ef4a4 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoProperties.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadService.java
similarity index 96%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadService.java
index 24e63abf3ec8079d2e4bbad6869621409c949d43..c9d96ed8e60b21739e49a59f8adcc553a748d9c1 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadService.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -79,7 +79,7 @@ class LandesnetzInfoReadService {
 	}
 
 	Set<String> readFile(InputStream fileInputStream) {
-		try(var fileScanner = new Scanner(fileInputStream, StandardCharsets.UTF_8)){
+		try (var fileScanner = new Scanner(fileInputStream, StandardCharsets.UTF_8)) {
 			while (fileScanner.hasNextLine()) {
 				var line = fileScanner.nextLine();
 				if (isStartOfSection(line)) {
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/RedirectRequest.java
similarity index 97%
rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java
rename to alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/RedirectRequest.java
index e07009c3843824afbcdeeae985e0b4837becc700..f7d6b10f4399918d52df9e9c67a6cd417b06a68a 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/RedirectRequest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java
index 38e6b3c7e13f35faeab1684111fc787a69361da3..a5014ff3e7ac1482d61d7c3b6e3b509f744b7fae 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java
@@ -39,15 +39,12 @@ import org.springframework.stereotype.Component;
 import de.ozgcloud.alfa.attachment.AttachmentByVorgangController;
 import de.ozgcloud.alfa.common.ModelBuilder;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.historie.HistorieController;
 import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController;
 import de.ozgcloud.alfa.postfach.PostfachMailController;
 import de.ozgcloud.alfa.representation.RepresentationByVorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
 import lombok.RequiredArgsConstructor;
 
 @Component
@@ -68,7 +65,6 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
 	static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId";
 
 	private final PostfachMailController postfachMailController;
-	private final CurrentUserService userService;
 	private final UserManagerUrlProvider userManagerUrlProvider;
 
 	private final VorgangProcessorProperties vorgangProcessorProperties;
@@ -99,8 +95,6 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
 						.withRel(REL_REPRESENTATIONS))
 				.ifMatch(this::isPostfachConfigured)
 				.addLink(linkTo(methodOn(PostfachMailController.class).getAll(vorgang.getId())).withRel(REL_POSTFACH_MAILS))
-				.ifMatch(this::isEinheitlicherAnsprechpartner)
-				.addLink(linkTo(methodOn(ForwardingController.class).findByVorgangId(vorgang.getId())).withRel(REL_VORGANG_FORWARDING))
 				.addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE))
 				.ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang))
 				.addLink(this::buildSearchUserProfilesLink)
@@ -115,10 +109,6 @@ class VorgangWithEingangProcessor implements RepresentationModelProcessor<Entity
 		return postfachMailController.isPostfachConfigured();
 	}
 
-	private boolean isEinheitlicherAnsprechpartner(VorgangWithEingang vorgang) {
-		return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-	}
-
 	private Link buildSearchUserProfilesLink(VorgangWithEingang vorgang) {
 		return Link.of(userManagerUrlProvider.getSearchUserProfilesTemplate()
 				.queryParam(USER_PROFILE_SEARCH_DELETED_PARAM, false)
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java
index 1a4862869d9de93184e643671e9d1e4c327d8d4a..2c2453560d8651d92c72673e29d17f6d75ce75c3 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java
@@ -38,9 +38,9 @@ import de.ozgcloud.alfa.common.command.CommandController;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserRole;
+import de.ozgcloud.alfa.forwarding.ForwardingController;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
 
 @Component
 public class VorgangWithEingangCommandProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
@@ -74,8 +74,8 @@ public class VorgangWithEingangCommandProcessor implements RepresentationModelPr
 	boolean isForwardingAllowed(VorgangWithEingang vorgang) {
 		return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)
 				&& (vorgang.getStatus() == VorgangStatus.NEU
-				|| (vorgang.getStatus() == VorgangStatus.IN_BEARBEITUNG
-				&& hasForwardingFailed(vorgang)));
+						|| (vorgang.getStatus() == VorgangStatus.IN_BEARBEITUNG
+								&& hasForwardingFailed(vorgang)));
 	}
 
 	private boolean hasForwardingFailed(VorgangWithEingang vorgang) {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java
index d6cb0b73c7bd7d7108e61664307d81694bc560b8..095f95d67833f26cf946cefe6d62b6e0a61eae6b 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java
@@ -49,12 +49,12 @@ import org.springframework.test.web.servlet.ResultActions;
 
 import de.ozgcloud.alfa.common.ValidationMessageCodes;
 import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import de.ozgcloud.alfa.postfach.PostfachMailTestFactory;
 import de.ozgcloud.alfa.vorgang.RedirectRequestTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
 import de.ozgcloud.common.test.TestUtils;
 
 @AutoConfigureMockMvc
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingControllerTest.java
similarity index 98%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingControllerTest.java
index 670bbd3dcfbf08a51a52bc57e4d69c912a1bf801..013042859a82dd82873a1beb7d966bf5ecea4125 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingControllerTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoServiceTest.java
similarity index 98%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoServiceTest.java
index 7f237a504d9845ac8b0f1c36cbdd9b566ac673a2..dc5c9e355519dc6441b33a0a87525fb26b0e7f6e 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingLandesnetzInfoServiceTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.assertj.core.api.Assertions.*;
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssemblerTest.java
similarity index 98%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssemblerTest.java
index bc9484c6d37e412a8bc0f602366b79a0edf5ec64..ee5503fc35c1712b2a782874a1a16fc59fab4d94 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingModelAssemblerTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -40,8 +40,8 @@ import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.hateoas.Link;
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.alfa.forwarding.Forwarding.Status;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
 
 @Component
 class ForwardingModelAssemblerTest {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidatorTest.java
similarity index 98%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidatorTest.java
index 406376542a0ba7962304aefd24cbf64b87131971..f59e4b8d8ea6cc6e81b80ae4fb5a3362acdd3138 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingPasswordValidatorTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteServiceTest.java
similarity index 98%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteServiceTest.java
index 82aa2a6652bc58b4e09c8ed805a1b3c5fa0ce392..591294c83c45022419941f186e66c549c7fbbd65 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingRemoteServiceTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingTestFactory.java
similarity index 96%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingTestFactory.java
index 5b834aa838b32ccc81f29c9c0cc9189992e44d88..c75aa41fc1eaf13a28330f49c0de73c76486845f 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingTestFactory.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import java.util.UUID;
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessorTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..15be150ccf28cc8cf1248f727ade96dcbc29e9e5
--- /dev/null
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardingVorgangWithEingangProcessorTest.java
@@ -0,0 +1,273 @@
+package de.ozgcloud.alfa.forwarding;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.EnumSource.Mode;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.springframework.hateoas.EntityModel;
+import org.springframework.hateoas.Link;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import de.ozgcloud.alfa.common.FeatureToggleProperties;
+import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
+import de.ozgcloud.alfa.common.user.CurrentUserService;
+import de.ozgcloud.alfa.common.user.UserRole;
+import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
+import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
+import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
+import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
+
+class ForwardingVorgangWithEingangProcessorTest {
+
+	@InjectMocks
+	@Spy
+	private ForwardingVorgangWithEingangProcessor processor;
+
+	@Mock
+	private CurrentUserService userService;
+	@Mock
+	private FeatureToggleProperties featureToggleProperties;
+
+	@Nested
+	class TestProcess {
+
+		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
+
+		@Test
+		void shouldReturnSameModelOnEmptyEntity() {
+			EntityModel<VorgangWithEingang> inputModel = when(mock(EntityModel.class).getContent()).thenReturn(null).getMock();
+
+			var model = processor.process(inputModel);
+
+			assertThat(model).isSameAs(inputModel);
+		}
+
+		@Test
+		void shouldReturnSameModel() {
+			var inputModel = EntityModel.of(vorgang);
+
+			var model = processor.process(inputModel);
+
+			assertThat(model).isSameAs(inputModel);
+		}
+
+		@Nested
+		class TestForwardByOzgCloudLink {
+
+			@Test
+			void shouldCallIsForwardableByOzgCloud() {
+				doReturn(false).when(processor).isForwardableByOzgCloud(any());
+
+				processor.process(EntityModel.of(vorgang));
+
+				verify(processor).isForwardableByOzgCloud(vorgang);
+			}
+
+			@Nested
+			class TestOnIsNotForwardableByOzgCloud {
+
+				@BeforeEach
+				void givenIsNotForwardableByOzgCloud() {
+					doReturn(false).when(processor).isForwardableByOzgCloud(any());
+				}
+
+				@Test
+				void shouldNotAddLink() {
+					var model = processor.process(EntityModel.of(vorgang));
+
+					assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_OZGCLOUD)).isEmpty();
+				}
+			}
+
+			@Nested
+			class TestOnIsForwardableByOzgCloud {
+
+				@BeforeEach
+				void givenIsNotForwardableByOzgCloud() {
+					doReturn(true).when(processor).isForwardableByOzgCloud(any());
+				}
+
+				@Test
+				void shouldAddForwardByOzgCloudLink() {
+					var expectedHref = UriComponentsBuilder.fromUriString(CommandByRelationController.COMMAND_BY_RELATION_PATH)
+							.buildAndExpand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString();
+
+					var model = processor.process(EntityModel.of(vorgang));
+
+					assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_OZGCLOUD)).get()
+							.extracting(Link::getHref)
+							.isEqualTo(expectedHref);
+				}
+			}
+		}
+
+		@Nested
+		class TestForwardByEmailLink {
+
+			@Test
+			void shouldCallIsForwardableByEmail() {
+				doReturn(false).when(processor).isForwardableByEmail();
+
+				processor.process(EntityModel.of(vorgang));
+
+				verify(processor).isForwardableByEmail();
+			}
+
+			@Nested
+			class TestOnIsNotForwardableByEmail {
+
+				@BeforeEach
+				void givenIsNotForwardableByEmail() {
+					doReturn(false).when(processor).isForwardableByEmail();
+				}
+
+				@Test
+				void shouldNotAddLink() {
+					var model = processor.process(EntityModel.of(vorgang));
+
+					assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL)).isEmpty();
+				}
+			}
+
+			@Nested
+			class TestOnIsForwardableByEmail {
+
+				@BeforeEach
+				void givenIsForwardableByEmail() {
+					doReturn(true).when(processor).isForwardableByEmail();
+				}
+
+				@Test
+				void shouldAddLink() {
+					var expectedHref = UriComponentsBuilder.fromUriString(ForwardingController.LIST_PATH)
+							.queryParam(ForwardingController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID).build().toString();
+
+					var model = processor.process(EntityModel.of(vorgang));
+
+					assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL)).get()
+							.extracting(Link::getHref)
+							.isEqualTo(expectedHref);
+				}
+			}
+		}
+	}
+
+	@Nested
+	class TestIsForwardableByOzgCloud {
+
+		@Nested
+		class TestOnFeatureDisabled {
+
+			@BeforeEach
+			void givenFeatureDisabled() {
+				when(featureToggleProperties.isForwardByOzgCloudEnabled()).thenReturn(false);
+			}
+
+			@ParameterizedTest
+			@EnumSource
+			void shouldReturnFalse(VorgangStatus status) {
+				var vorgang = VorgangWithEingangTestFactory.createBuilder().status(status).build();
+
+				var forwardableByOzgCloud = processor.isForwardableByOzgCloud(vorgang);
+
+				assertThat(forwardableByOzgCloud).isFalse();
+			}
+
+			@ParameterizedTest
+			@EnumSource
+			void shouldNotCallUserService(VorgangStatus status) {
+				var vorgang = VorgangWithEingangTestFactory.createBuilder().status(status).build();
+
+				processor.isForwardableByOzgCloud(vorgang);
+
+				verify(userService, never()).hasRole(any());
+			}
+		}
+
+		@Nested
+		class TestOnFeatureEnabled {
+
+			@BeforeEach
+			void givenFeatureEnabled() {
+				when(featureToggleProperties.isForwardByOzgCloudEnabled()).thenReturn(true);
+			}
+
+			@Nested
+			class TestOnVorgangNotNeu {
+				@ParameterizedTest
+				@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
+				void shouldReturnFalseOnVorgangStatusNotNeu(VorgangStatus status) {
+					var vorgang = VorgangWithEingangTestFactory.createBuilder().status(status).build();
+
+					var forwardableByOzgCloud = processor.isForwardableByOzgCloud(vorgang);
+
+					assertThat(forwardableByOzgCloud).isFalse();
+				}
+
+				@ParameterizedTest
+				@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
+				void shouldNotCallUserService(VorgangStatus status) {
+					var vorgang = VorgangWithEingangTestFactory.createBuilder().status(status).build();
+
+					processor.isForwardableByOzgCloud(vorgang);
+
+					verify(userService, never()).hasRole(any());
+				}
+			}
+
+			@Nested
+			class TestOnVorgangIsNeu {
+
+				private final VorgangWithEingang newVorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.NEU).build();
+
+				@Test
+				void shouldCheckUserRole() {
+					processor.isForwardableByOzgCloud(newVorgang);
+
+					verify(userService).hasRole(UserRole.VERWALTUNG_USER);
+				}
+
+				@ParameterizedTest
+				@ValueSource(booleans = { true, false })
+				void shouldReturnValueOfHasVerwaltungUserRole(boolean isVerwaltungUser) {
+					when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(isVerwaltungUser);
+
+					var forwardableByOzgCloud = processor.isForwardableByOzgCloud(newVorgang);
+
+					assertThat(forwardableByOzgCloud).isEqualTo(isVerwaltungUser);
+				}
+			}
+		}
+	}
+
+	@Nested
+	class TestIsForwardableByEmail {
+
+		@Test
+		void shouldCallUserServiceForCurrentRole() {
+			processor.isForwardableByEmail();
+
+			verify(userService).hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
+		}
+
+		@ParameterizedTest
+		@ValueSource(booleans = { true, false })
+		void shouldReturnIsEinheitlicherAnsprechpartner(boolean isEinheitlicherAnsprechpartner) {
+			when(userService.hasRole(any())).thenReturn(isEinheitlicherAnsprechpartner);
+
+			var isForwardableByEmail = processor.isForwardableByEmail();
+
+			assertThat(isForwardableByEmail).isEqualTo(isEinheitlicherAnsprechpartner);
+		}
+	}
+}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadServiceTest.java
similarity index 89%
rename from alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java
rename to alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadServiceTest.java
index a2291ca870f98ece338f36e19a7842a395f41022..92ba57bbdb2a001cef7b0c33bfc3565bf1dbd683 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/LandesnetzInfoReadServiceTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.alfa.vorgang.forwarding;
+package de.ozgcloud.alfa.forwarding;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -51,14 +51,15 @@ class LandesnetzInfoReadServiceTest {
 
 		@Test
 		void shouldAcceptStartSectionLine() {
-			boolean isStartOfSection = service.isStartOfSection("############################## Beginn Schleswig-Holstein ##########################");
+			boolean isStartOfSection = service
+					.isStartOfSection("############################## Beginn Schleswig-Holstein ##########################");
 
 			assertThat(isStartOfSection).isTrue();
 		}
 
 		@DisplayName("should return FALSE when")
 		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "###", "abs.de 	esm", "################## Schleswig-Holstein ########"})
+		@ValueSource(strings = { "", "0", "###", "abs.de 	esm", "################## Schleswig-Holstein ########" })
 		void shouldDeclineAnotherLines(String line) {
 			boolean isStartOfSection = service.isStartOfSection(line);
 
@@ -78,7 +79,7 @@ class LandesnetzInfoReadServiceTest {
 
 		@DisplayName("should return FALSE when")
 		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "###", "abs.de 	esm","################## Schleswig-Holstein ########"})
+		@ValueSource(strings = { "", "0", "###", "abs.de 	esm", "################## Schleswig-Holstein ########" })
 		void shouldDeclineAnotherLines(String line) {
 			boolean isEndOfSection = service.isEndOfSection(line);
 
@@ -98,7 +99,7 @@ class LandesnetzInfoReadServiceTest {
 
 		@DisplayName("should return FALSE when")
 		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "abs.de 	esm"})
+		@ValueSource(strings = { "", "0", "abs.de 	esm" })
 		void shouldDeclineAnotherLines(String line) {
 			boolean isCommentedLine = service.isCommentedLine(line);
 
@@ -167,7 +168,7 @@ class LandesnetzInfoReadServiceTest {
 			var line = "row";
 			doReturn(Optional.of(line)).when(service).getFirstColumn(anyString());
 
-			var section = service.readSection(new Scanner(line+ "\n# Ende Schleswig-Holstein"));
+			var section = service.readSection(new Scanner(line + "\n# Ende Schleswig-Holstein"));
 
 			assertThat(section).containsExactly(line);
 		}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java
index 96f08f793d99849a616a42b1f5eec827c8905894..fde089cc30122225b4a97bcc70dc28322bd0dee1 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java
@@ -24,7 +24,7 @@
 package de.ozgcloud.alfa.vorgang;
 
 import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
+import de.ozgcloud.alfa.forwarding.RedirectRequest;
 import de.ozgcloud.common.test.TestUtils;
 
 public class RedirectRequestTestFactory {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java
index d916fca57012f1ecab9d21af08457d73be29b688..257f019b7ffc2ba3f4a0b10f74139f3ed49cc4b5 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java
@@ -57,11 +57,11 @@ import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
 import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
 import de.ozgcloud.alfa.common.user.UserService;
+import de.ozgcloud.alfa.forwarding.ForwardingController;
 import de.ozgcloud.alfa.postfach.PostfachMailController;
 import de.ozgcloud.alfa.statistic.ByStatusTestFactory;
 import de.ozgcloud.alfa.statistic.StatisticController;
 import de.ozgcloud.alfa.statistic.StatisticTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
 import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
 
 @AutoConfigureMockMvc
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java
index 87d377093b7b9438cef8bd144f1f736f34656072..987b09227e8f17d3beeb0709b2385e6f7f45f930 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java
@@ -33,8 +33,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
@@ -46,11 +44,8 @@ import org.springframework.web.util.UriTemplate;
 
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 
 class VorgangWithEingangProcessorTest {
 
@@ -60,8 +55,6 @@ class VorgangWithEingangProcessorTest {
 	@Mock
 	private PostfachMailController postfachMailController;
 	@Mock
-	private CurrentUserService userService;
-	@Mock
 	private UserManagerUrlProvider userManagerUrlProvider;
 
 	@Mock
@@ -205,43 +198,6 @@ class VorgangWithEingangProcessorTest {
 		}
 	}
 
-	@Nested
-	class TestForwardingLink {
-
-		@DisplayName("should NOT be present in other Role then EA")
-		@ParameterizedTest
-		@EnumSource
-		void shouldNotBePresentWithoutRole(Vorgang.VorgangStatus status) {
-			when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-
-			var link = processor.process(buildVorgangInStatus(status)).getLink(VorgangWithEingangProcessor.REL_VORGANG_FORWARDING);
-
-			assertThat(link).isEmpty();
-		}
-
-		@DisplayName("with role EinheitlicherAnsprechpartner")
-		@Nested
-		class TestWithRoleEinheitlicherAnsprechpartner {
-			@BeforeEach
-			void init() {
-				when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-			}
-
-			@DisplayName("should be present in any Status")
-			@ParameterizedTest
-			@EnumSource()
-			void shouldBePresent(VorgangStatus status) {
-				var link = processor.process(buildVorgangInStatus(status)).getLink(VorgangWithEingangProcessor.REL_VORGANG_FORWARDING);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo("/api/forwardings?vorgangId=" + VorgangHeaderTestFactory.ID);
-			}
-		}
-
-		private EntityModel<VorgangWithEingang> buildVorgangInStatus(VorgangStatus status) {
-			return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-		}
-	}
-
 	@DisplayName("Historie Link")
 	@Nested
 	class TestHistorieLink {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java
index 64fd8c50634f12d18c5e14de0e2226252ad21fa4..37b3d3ad544fc896f8a915c5f22b02b1278ac966 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java
@@ -48,12 +48,12 @@ import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.command.CommandController;
 import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserRole;
+import de.ozgcloud.alfa.forwarding.ForwardingController;
+import de.ozgcloud.alfa.forwarding.ForwardingTestFactory;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingTestFactory;
 
 class VorgangWithEingangCommandProcessorTest {