diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/status/StatusService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/status/StatusService.java
index a87a9901cf0418b8a55306b51c878b4902800888..055826fd9d9598f5f9abcd34f1df4ea0e51ce8c4 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/status/StatusService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/status/StatusService.java
@@ -29,7 +29,6 @@ import java.util.Objects;
 import java.util.Optional;
 
 import org.apache.commons.collections4.MapUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 
@@ -41,18 +40,17 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.vorgang.command.PersistedCommand;
 import de.ozgcloud.vorgang.vorgang.Vorgang;
 import de.ozgcloud.vorgang.vorgang.Vorgang.Status;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Service
+@RequiredArgsConstructor
 @Log4j2
 public class StatusService {
 	private static final String CONCURRENT_MODIFICATION_ERROR_CODE = "concurrent_modification";
 
-	@Autowired
-	private ApplicationEventPublisher publisher;
-
-	@Autowired
-	private StatusRepository repository;
+	private final ApplicationEventPublisher publisher;
+	private final StatusRepository repository;
 
 	void setStatusNeu(Command command) {
 		executeStatusChangeCommand(command, Status.NEU);
@@ -100,6 +98,10 @@ public class StatusService {
 		doUpdateStatus(vorgangId, version, Status.IN_BEARBEITUNG.name());
 	}
 
+	public void setStatusToWeitergeleitet(String vorgangId, long version) {
+			doUpdateStatus(vorgangId, version, Status.WEITERGELEITET.name());
+	}
+
 	public void revokeStatusChange(Command command) {
 		try {
 			doUpdateStatus(command.getRelationId(), command.getRelationVersion() + 1,
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Lock.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Lock.java
index 336a0335d93e27f781b0e1e119f9adbd383cdbe6..51060326c1bad411cfa98d93886bdf33576c7d8e 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Lock.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Lock.java
@@ -29,7 +29,7 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Builder;
 import lombok.Getter;
 
-@Builder
+@Builder(toBuilder = true)
 @Getter
 public class Lock {
 
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/LockMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/LockMapper.java
index c94e7b76508223828c076c1873e39386a1972a99..668cccff498c4a5d312783623ae8bd9ce7989237 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/LockMapper.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/LockMapper.java
@@ -35,7 +35,7 @@ import org.mapstruct.Mapping;
 import de.ozgcloud.command.Command;
 
 @Mapper
-interface LockMapper {
+public interface LockMapper {
 
 	@Mapping(target = "clientName", source = "createdByClientName")
 	@Mapping(target = "lockedSince", expression = "java(getLockedSince())")
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
index 7f25cf25bf14f9ed44eee288bb9fdda44f43c90a..b8aab024e7464c3371e9647b506f58611d0d0f95 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
@@ -33,10 +33,13 @@ import org.springframework.stereotype.Component;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandCreatedEvent;
 import de.ozgcloud.command.CommandFailedEvent;
+import de.ozgcloud.command.VorgangLockedEvent;
 import de.ozgcloud.nachrichten.email.MailSendErrorEvent;
 import de.ozgcloud.nachrichten.email.MailSendRequest;
 import de.ozgcloud.nachrichten.email.MailSentEvent;
 import de.ozgcloud.vorgang.command.Order;
+import de.ozgcloud.vorgang.vorgang.LockMapper;
+import de.ozgcloud.vorgang.vorgang.VorgangService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
@@ -60,6 +63,8 @@ public class ForwardingEventListener {
 	private final ForwardingService service;
 	private final ApplicationEventPublisher publisher;
 	private final ForwardingRequestMapper forwardingRequestMapper;
+	private final VorgangService vorgangService;
+	private final LockMapper lockMapper;
 
 	@EventListener(condition = IS_FORWARD_ORDER_CONDITION)
 	public void onForwardOrder(CommandCreatedEvent event) {
@@ -92,7 +97,14 @@ public class ForwardingEventListener {
 
 	@EventListener(condition = IS_FORWARD_VORGANG_ORDER_CONDITION)
 	public void onForwardVorgangOrder(CommandCreatedEvent event) {
+		lockVorgangOnForwarding(event.getSource());
 		service.forward(forwardingRequestMapper.fromCommand(event.getSource()));
+		publisher.publishEvent(new VorgangLockedEvent(event.getSource()));
+	}
+
+	private void lockVorgangOnForwarding(Command command) {
+		var lock = lockMapper.fromCommand(command).toBuilder().reason("Vorgang is being forwarded").build();
+		vorgangService.lockVorgang(lock, command.getVorgangId(), command.getRelationVersion());
 	}
 
 	private void handleException(Runnable runnable, String commandId) {
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java
index a38f6fcf7b6ea3d663ba5e097f8675e6a64bfd77..ed26c9e9850a1361531b70b36699b5ca92c08596 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java
@@ -331,6 +331,6 @@ public class ForwardingService {
 	}
 
 	public void forward(ForwardingRequest request) {
-
+		statusService.setStatusToWeitergeleitet(request.getVorgangId(), request.getVersion());
 	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/status/StatusServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/status/StatusServiceTest.java
index 17e4694ec99c33cd92c2a8f61a07e36d3d26045e..eb96cbe9536c70f7a2a5ced05407b3c311d4d840 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/status/StatusServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/status/StatusServiceTest.java
@@ -39,6 +39,8 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.context.ApplicationEventPublisher;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandFailedEvent;
 import de.ozgcloud.command.CommandRevokedEvent;
@@ -52,18 +54,17 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 
 class StatusServiceTest {
 
+	@Spy
+	@InjectMocks
+	private StatusService service;
+	@Mock
+	private StatusRepository repository;
+	@Mock
+	private ApplicationEventPublisher publisher;
+
 	@DisplayName("Test handling vorgang status changes")
 	@Nested
 	class TestVorgangStatusChanges {
-		@Spy
-		@InjectMocks
-		private StatusService service;
-
-		@Mock
-		private StatusRepository repository;
-
-		@Mock
-		private ApplicationEventPublisher publisher;
 
 		private PersistedCommand command = CommandTestFactory.create();
 
@@ -261,15 +262,6 @@ class StatusServiceTest {
 	@DisplayName("Test status changes when a Vorgang is forwarded")
 	@Nested
 	class TestVorgangWeiterleiten {
-		@Spy
-		@InjectMocks
-		private StatusService service;
-
-		@Mock
-		private StatusRepository repository;
-
-		@Mock
-		private ApplicationEventPublisher publisher;
 
 		@Mock
 		private PersistedCommand command;
@@ -299,15 +291,6 @@ class StatusServiceTest {
 	@DisplayName("Test handling revoke command status changes")
 	@Nested
 	class TestRevokeStatusChanges {
-		@Spy
-		@InjectMocks
-		private StatusService service;
-
-		@Mock
-		private StatusRepository repository;
-
-		@Mock
-		private ApplicationEventPublisher publisher;
 
 		private static final String PREVIOUS_STATUS = Vorgang.Status.BESCHIEDEN.name();
 		private PersistedCommand command = CommandTestFactory.createBuilder()
@@ -381,4 +364,28 @@ class StatusServiceTest {
 			}
 		}
 	}
+
+	@Nested
+	class TestSetStatusToWeitergeleitet {
+
+		@Test
+		void shouldUpdateStatus() {
+			service.setStatusToWeitergeleitet(VorgangTestFactory.ID, VorgangTestFactory.VERSION);
+
+			verify(service).doUpdateStatus(VorgangTestFactory.ID, VorgangTestFactory.VERSION, Status.WEITERGELEITET.name());
+		}
+	}
+
+	@Nested
+	class TestDoUpdateStatus {
+
+		@Test
+		void shouldPatchVorgangWithNewStatus() {
+			var statusName = LoremIpsum.getInstance().getWords(1);
+
+			service.doUpdateStatus(VorgangTestFactory.ID, VorgangTestFactory.VERSION, statusName);
+
+			verify(repository).patch(VorgangTestFactory.ID, VorgangTestFactory.VERSION, Map.of(Vorgang.MONGODB_FIELDNAME_STATUS, statusName));
+		}
+	}
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangEventListenerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangEventListenerTest.java
index dc3152d7860268d0c1554f4bdfb1127363718722..68c76516d74789d6b7dd2a287e39f6fd6a89767b 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangEventListenerTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangEventListenerTest.java
@@ -269,7 +269,7 @@ class VorgangEventListenerTest {
 		}
 
 		@Test
-		void shouldCallPublishEvent() {
+		void shouldPublishVorgangLockedEvent() {
 			onLockVorgang();
 
 			verify(publisher).publishEvent(lockedEventCaptor.capture());
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
index 364aa21a99328cbf1050ff04a39b7883ad0c6535..4ca29c2ac342679a09903dba8d8855699d7bdd1a 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
@@ -44,10 +44,16 @@ import com.thedeanda.lorem.LoremIpsum;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandCreatedEvent;
 import de.ozgcloud.command.CommandFailedEvent;
+import de.ozgcloud.command.VorgangLockedEvent;
 import de.ozgcloud.nachrichten.email.MailSentEventTestFactory;
 import de.ozgcloud.vorgang.command.CommandCreatedEventTestFactory;
 import de.ozgcloud.vorgang.command.CommandTestFactory;
 import de.ozgcloud.vorgang.command.Order;
+import de.ozgcloud.vorgang.vorgang.Lock;
+import de.ozgcloud.vorgang.vorgang.LockMapper;
+import de.ozgcloud.vorgang.vorgang.LockTestFactory;
+import de.ozgcloud.vorgang.vorgang.VorgangService;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 
 class ForwardingEventListenerTest {
 
@@ -60,6 +66,10 @@ class ForwardingEventListenerTest {
 	private ApplicationEventPublisher publisher;
 	@Mock
 	private ForwardingRequestMapper forwardingRequestMapper;
+	@Mock
+	private VorgangService vorgangService;
+	@Mock
+	private LockMapper lockMapper;
 
 	@Nested
 	class OnForwardOrderCommand {
@@ -74,9 +84,9 @@ class ForwardingEventListenerTest {
 		@Test
 		void shouldPublishFailedEventOnError() {
 			when(forwardingService.forwardByCommand(any())).thenThrow(ConcurrentModificationException.class);
-			
+
 			listener.onForwardOrder(CommandCreatedEventTestFactory.create());
-			
+
 			verify(publisher).publishEvent(any(CommandFailedEvent.class));
 		}
 	}
@@ -99,29 +109,63 @@ class ForwardingEventListenerTest {
 	class TestOnForwardVorgangOrder {
 
 		private final CommandCreatedEvent event = event();
+		private final Lock lock = LockTestFactory.create();
+		@Captor
+		private ArgumentCaptor<Lock> lockCaptor;
 		@Captor
 		private ArgumentCaptor<ForwardingRequest> forwardingRequestCaptor;
+		@Captor
+		private ArgumentCaptor<VorgangLockedEvent> lockedEventCaptor;
 
 		@BeforeEach
 		void init() {
-			when(forwardingRequestMapper.fromCommand(event.getSource())).thenReturn(ForwardingRequestTestFactory.create());
+			when(forwardingRequestMapper.fromCommand(any())).thenReturn(ForwardingRequestTestFactory.create());
+			when(lockMapper.fromCommand(any())).thenReturn(lock);
+		}
+
+		@Test
+		void shouldMapLock() {
+			onForwardVorgangOrder();
+
+			verify(lockMapper).fromCommand(event.getSource());
+		}
+
+		@Test
+		void shouldLockVorgang() {
+			onForwardVorgangOrder();
+
+			verify(vorgangService).lockVorgang(lockCaptor.capture(), eq(VorgangTestFactory.ID), eq(CommandTestFactory.RELATION_VERSION));
+			assertThat(lockCaptor.getValue()).usingRecursiveComparison()
+					.isEqualTo(LockTestFactory.createBuilder().reason("Vorgang is being forwarded").build());
 		}
 
 		@Test
 		void shouldMapCommandForwardingRequest() {
-			listener.onForwardVorgangOrder(event);
+			onForwardVorgangOrder();
 
 			verify(forwardingRequestMapper).fromCommand(event.getSource());
 		}
 
 		@Test
 		void shouldCallForwardingService() {
-			listener.onForwardVorgangOrder(event);
+			onForwardVorgangOrder();
 
 			verify(forwardingService).forward(forwardingRequestCaptor.capture());
 			assertThat(forwardingRequestCaptor.getValue()).usingRecursiveComparison().isEqualTo(ForwardingRequestTestFactory.create());
 		}
 
+		@Test
+		void shouldPublishVorgangLockedEvent() {
+			onForwardVorgangOrder();
+
+			verify(publisher).publishEvent(lockedEventCaptor.capture());
+			assertThat(lockedEventCaptor.getValue().getCommand()).isSameAs(event.getSource());
+		}
+
+		private void onForwardVorgangOrder() {
+			listener.onForwardVorgangOrder(event);
+		}
+
 		private static CommandCreatedEvent event() {
 			return CommandCreatedEventTestFactory.create(CommandTestFactory.createBuilder().bodyObject(commandBody()).build());
 		}
@@ -129,7 +173,7 @@ class ForwardingEventListenerTest {
 		private static Map<String, Object> commandBody() {
 			return Map.of(LoremIpsum.getInstance().getWords(1), LoremIpsum.getInstance().getWords(1));
 		}
- 	}
+	}
 
 	@Nested
 	class TestMarkAsSuccessfull {
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingServiceTest.java
index ac84ad8b780ed2655318ee1c05a5129b5e24b4a4..1b864c7a9ab50c247178efd8d1346e87aff1e4f5 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingServiceTest.java
@@ -622,4 +622,15 @@ class ForwardingServiceTest {
 		}
 
 	}
+
+	@Nested
+	class TestForward {
+
+		@Test
+		void shouldSetStatusToWeitergeleitet() {
+			service.forward(ForwardingRequestTestFactory.create());
+
+			verify(statusService).setStatusToWeitergeleitet(VorgangTestFactory.ID, VorgangTestFactory.VERSION);
+		}
+	}
 }
\ No newline at end of file