diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java
index 407f80cfc8b60f886812ce6ef346ce26f923c9a0..a8ddd9361ca3b7c887d1ef2047010303d47a9fe1 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java
@@ -50,6 +50,7 @@ import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungController.LoeschAnforderungByVorgangController;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
+import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 
 class LoeschAnforderungVorgangProcessorTest {
@@ -60,9 +61,10 @@ class LoeschAnforderungVorgangProcessorTest {
 
 	@Mock
 	private CurrentUserService currentUserService;
-
 	@Mock
 	private LoeschAnforderungService loeschAnforderungService;
+	@Mock
+	private VorgangController vorgangController;
 
 	@DisplayName("Process")
 	@Nested
@@ -152,11 +154,23 @@ class LoeschAnforderungVorgangProcessorTest {
 				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
 				void shouldReturnTrue(VorgangStatus vorgangStatus) {
 					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
+					when(vorgangController.isEditable(vorgang)).thenReturn(true);
 
 					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
 
 					assertThat(isAllowed).isTrue();
 				}
+
+				@ParameterizedTest
+				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
+				void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) {
+					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
+					when(vorgangController.isEditable(vorgang)).thenReturn(false);
+
+					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
+
+					assertThat(isAllowed).isFalse();
+				}
 			}
 
 			@DisplayName("with EINHEITLICHER_ANSPRECHPARTNER role")
@@ -173,11 +187,23 @@ class LoeschAnforderungVorgangProcessorTest {
 				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
 				void shouldReturnTrue(VorgangStatus vorgangStatus) {
 					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
+					when(vorgangController.isEditable(vorgang)).thenReturn(true);
 
 					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
 
 					assertThat(isAllowed).isTrue();
 				}
+
+				@ParameterizedTest
+				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
+				void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) {
+					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
+					when(vorgangController.isEditable(vorgang)).thenReturn(false);
+
+					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
+
+					assertThat(isAllowed).isFalse();
+				}
 			}
 		}
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java
index f06e3e333ce0da60213ca90f8c8af8f808a36117..83e431f870d0b470841cb427a4c4a4954b83acbf 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java
@@ -63,10 +63,24 @@ class VorgangCommandProcessorTest {
 	@Mock
 	private VorgangController vorgangController;
 
-	@BeforeEach
-	void init() {
-		// TODO: refactor
-		when(vorgangController.isEditable(any())).thenReturn(true);
+	@Test
+	void shouldNotAddLinksIfVorgangIsNull() {
+		var entityModel = mock(EntityModel.class);
+
+		processor.process(entityModel);
+
+		verify(entityModel, never()).add(any(Link.class));
+	}
+
+	@ParameterizedTest
+	@EnumSource(value = VorgangStatus.class)
+	void shouldNotAddLinksIfVorgangIsNotEditable(VorgangStatus status) {
+		var vorgang = VorgangHeaderTestFactory.createBuilder().status(status).build();
+		when(vorgangController.isEditable(vorgang)).thenReturn(false);
+
+		var entityModel = processor.process(EntityModel.of(vorgang));
+
+		assertThat(entityModel.hasLinks()).isFalse();
 	}
 
 	@Nested
@@ -77,7 +91,7 @@ class VorgangCommandProcessorTest {
 
 		@Test
 		void shouldBePresent() {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.NEU));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -86,7 +100,7 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
 		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -103,7 +117,7 @@ class VorgangCommandProcessorTest {
 		void shouldBePresentAtStatusAndRole(String userRole) {
 			doReturn(userRole).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.NEU));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -114,7 +128,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) {
 			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -124,7 +138,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) {
 			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -139,7 +153,8 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@ValueSource(strings = { "EINHEITLICHER_ANSPRECHPARTNER", "VERWALTUNG_USER" })
 		void shouldBePresentAtStatusAndRole(String userRole) {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.VERWORFEN));
+			doReturn(userRole).when(processor).getUserRole();
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.VERWORFEN));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -150,7 +165,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) {
 			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -160,7 +175,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) {
 			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -174,7 +189,7 @@ class VorgangCommandProcessorTest {
 
 		@Test
 		void shouldBePresent() {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.ANGENOMMEN));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ANGENOMMEN));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref)
@@ -184,7 +199,7 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@EnumSource(mode = Mode.EXCLUDE, names = { "ANGENOMMEN", "ABGESCHLOSSEN" })
 		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -198,7 +213,7 @@ class VorgangCommandProcessorTest {
 
 		@Test
 		void shouldBePresent() {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref)
@@ -208,7 +223,7 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
 		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -222,7 +237,7 @@ class VorgangCommandProcessorTest {
 
 		@Test
 		void shouldBePresent() {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -231,7 +246,7 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
 		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -254,7 +269,7 @@ class VorgangCommandProcessorTest {
 			@ParameterizedTest
 			@EnumSource(mode = Mode.INCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" })
 			void shouldBePresent(VorgangStatus status) {
-				var processed = processor.process(buildVorgangInStatus(status));
+				var processed = processor.process(buildEditableVorgangInStatus(status));
 
 				assertThat(processed.getLink(linkRel)).isPresent().get()
 						.extracting(Link::getHref)
@@ -264,7 +279,7 @@ class VorgangCommandProcessorTest {
 			@ParameterizedTest
 			@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" })
 			void shouldNOTbePresentbyStatus(VorgangStatus status) {
-				var processed = processor.process(buildVorgangInStatus(status));
+				var processed = processor.process(buildEditableVorgangInStatus(status));
 
 				assertThat(processed.getLink(linkRel)).isEmpty();
 			}
@@ -280,7 +295,7 @@ class VorgangCommandProcessorTest {
 
 			@Test
 			void shouldBePresent() {
-				var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
+				var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
 
 				assertThat(processed.getLink(linkRel)).isPresent().get()
 						.extracting(Link::getHref)
@@ -290,7 +305,7 @@ class VorgangCommandProcessorTest {
 			@ParameterizedTest
 			@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
 			void shouldNOTbePresentbyStatus(VorgangStatus status) {
-				var processed = processor.process(buildVorgangInStatus(status));
+				var processed = processor.process(buildEditableVorgangInStatus(status));
 
 				assertThat(processed.getLink(linkRel)).isEmpty();
 			}
@@ -309,7 +324,7 @@ class VorgangCommandProcessorTest {
 		void shouldBePresentOnStatusAbgeschlossen(String userRole) {
 			doReturn(userRole).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.ABGESCHLOSSEN));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ABGESCHLOSSEN));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -318,7 +333,7 @@ class VorgangCommandProcessorTest {
 		@Test
 		@DisplayName("on Vorgang with Status Beschieden and Role VerwaltungUser")
 		void shouldBePresentOnStatusBeschieden() {
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.BESCHIEDEN));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN));
 
 			assertThat(processed.getLink(linkRel)).isPresent().get()
 					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
@@ -329,7 +344,7 @@ class VorgangCommandProcessorTest {
 		void shouldBeNotPresentOnStatusBeschiedenAndRoleEA() {
 			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(VorgangStatus.BESCHIEDEN));
+			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN));
 
 			assertThat(processed.getLink(linkRel)).isNotPresent();
 		}
@@ -339,7 +354,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentbyStatusAndRoleVerwaltungUser(VorgangStatus status) {
 			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -349,7 +364,7 @@ class VorgangCommandProcessorTest {
 		void shouldNOTbePresentbyStatusAndRoleEA(VorgangStatus status) {
 			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
 
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLink(linkRel)).isEmpty();
 		}
@@ -366,13 +381,15 @@ class VorgangCommandProcessorTest {
 		@ParameterizedTest
 		@EnumSource()
 		void shouldNotBePresent(VorgangStatus status) {
-			var processed = processor.process(buildVorgangInStatus(status));
+			var processed = processor.process(buildEditableVorgangInStatus(status));
 
 			assertThat(processed.getLinks()).isEmpty();
 		}
 	}
 
-	private EntityModel<Vorgang> buildVorgangInStatus(VorgangStatus status) {
-		return EntityModel.of(VorgangHeaderTestFactory.createBuilder().status(status).build());
+	private EntityModel<Vorgang> buildEditableVorgangInStatus(VorgangStatus status) {
+		var vorgangInStatus = VorgangHeaderTestFactory.createBuilder().status(status).build();
+		when(vorgangController.isEditable(vorgangInStatus)).thenReturn(true);
+		return EntityModel.of(vorgangInStatus);
 	}
 }
\ No newline at end of file