diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java
index ca8dc1cdf6f7497f3111933394d02cb3ae52299d..8de875f0fae7795526b3f0b7ec0dd996a2a38d79 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java
@@ -45,7 +45,6 @@ import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
 import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
 import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandByVorgangController;
 import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHead;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
@@ -79,6 +78,7 @@ class PostfachMailModelAssembler implements RepresentationModelAssembler<Postfac
 			.map(createdBy -> !createdBy.toString().startsWith(SYSTEM_USER_IDENTIFIER)).orElse(false);
 
 	private final UserManagerUrlProvider userManagerUrlProvider;
+	private final VorgangController vorgangController;
 
 	public RepresentationModel<EntityModel<PostfachSettings>> toCollectionModel(Stream<PostfachMail> postfachMails, VorgangWithEingang vorgang,
 			PostfachSettings postfachSettings) {
@@ -107,7 +107,7 @@ class PostfachMailModelAssembler implements RepresentationModelAssembler<Postfac
 	void addPostfachNachrichtLinks(RepresentationModel<EntityModel<PostfachSettings>> model, VorgangWithEingang vorgang) {
 		var vorgangId = vorgang.getId();
 
-		if (vorgang.getStatus() != VorgangStatus.ZU_LOESCHEN) {
+		if (vorgangController.isEditable(vorgang)) {
 			model.add(linkTo(methodOn(PostfachMailCommandByVorgangController.class).sendPostfachMail(vorgangId, null))
 					.withRel(REL_SEND_POSTFACH_MAIL));
 		}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java
index 538bc3b6fdc7e5b1c5a8943a5408436de316011b..ae555e7fbcf0b33a7cb0c6ee926ae307efe29edd 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java
@@ -29,7 +29,6 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
 import org.springframework.hateoas.RepresentationModel;
@@ -44,10 +43,11 @@ import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserId;
 import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.statistic.Statistic;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController;
+import lombok.RequiredArgsConstructor;
 
 @Component
+@RequiredArgsConstructor
 class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, EntityModel<Vorgang>> {
 
 	static final String REL_NEXT = "next";
@@ -56,8 +56,8 @@ class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, Ent
 	static final String REL_WIEDERVORLAGEN = "wiedervorlagen";
 	static final String REL_VORGANG_ASSIGN = "assign";
 
-	@Autowired
-	private CurrentUserService userService;
+	private final CurrentUserService userService;
+	private final VorgangService vorgangService;
 
 	public RepresentationModel<EntityModel<EnhancedVorgang>> toCollectionModel(Stream<VorgangHeader> entities, VorgaengeHeaderResponse response,
 			FindVorgaengeHeaderRequestCriteria requestCriteria, Statistic statistic) {
@@ -148,6 +148,13 @@ class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, Ent
 
 	boolean isAssigneable(Vorgang vorgang) {
 		return (userService.hasRole(UserRole.VERWALTUNG_USER) || userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE))
-				&& vorgang.getStatus() != VorgangStatus.ZU_LOESCHEN;
+				&& isEditable(vorgang);
+	}
+
+	boolean isEditable(Vorgang vorgang) {
+		var vorgangWithEingang = vorgang instanceof VorgangWithEingang ?
+				(VorgangWithEingang) vorgang :
+				vorgangService.findVorgangWithEingang(vorgang.getId());
+		return vorgangService.isEditable(vorgangWithEingang);
 	}
 }
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java
index c77857e911bb8f7db60932f23b9b20c8da6204cd..2a94ca0fcd0a618ed77ae80988c4b61821489e70 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java
@@ -37,7 +37,6 @@ import org.springframework.stereotype.Component;
 import de.ozgcloud.alfa.common.CollectionModelBuilder;
 import de.ozgcloud.alfa.common.ModelBuilder;
 import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import de.ozgcloud.alfa.wiedervorlage.WiedervorlageCommandController.WiedervorlageCommandByVorgangController;
@@ -75,7 +74,7 @@ class WiedervorlageModelAssembler implements RepresentationModelAssembler<Wieder
 				methodOn(WiedervorlageCommandController.class).updateWiedervorlage(null, wiedervorlage.getId(), wiedervorlage.getVersion()));
 
 		return ModelBuilder.fromEntity(wiedervorlage).addLink(selfLink.withSelfRel())
-				.ifMatch(() -> isEditable(vorgang))
+				.ifMatch(() -> vorgangController.isEditable(vorgang))
 				.addLink(commandLink.withRel(REL_EDIT))
 				.ifMatch(ALLOW_ERLEDIGEN).addLink(commandLink.withRel(REL_ERLEDIGEN))
 				.ifMatch(ALLOW_WIEDEREROEFFNEN).addLink(commandLink.withRel(REL_WIEDEREROEFFNEN))
@@ -89,15 +88,11 @@ class WiedervorlageModelAssembler implements RepresentationModelAssembler<Wieder
 
 		return CollectionModelBuilder.fromEntities(entities.map(wiedervorlage -> buildModel(wiedervorlage, vorgang)))
 				.addLink(linkTo(WiedervorlageController.class).withSelfRel())
-				.ifMatch(wiedervorlagenModel -> isEditable(vorgang))
+				.ifMatch(wiedervorlagenModel -> vorgangController.isEditable(vorgang))
 				.addLink(linkTo(methodOn(WiedervorlageCommandByVorgangController.class).createWiedervorlage(null, vorgangId))
 						.withRel(REL_CREATE))
 				.addLink(linkTo(BinaryFileController.class).slash(vorgangId).slash(WIEDERVORLAGE_ATTACHMENT_PATH).slash(FILE_PATH)
 						.withRel(REL_UPLOAD_FILE))
 				.buildModel();
 	}
-
-	private boolean isEditable(VorgangWithEingang vorgang) {
-		return vorgang.getStatus() != VorgangStatus.ZU_LOESCHEN;
-	}
 }
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java
index 5011984faff86f2dd409e0237238bf754014e606..5c8e2874053681408887e2b97e6157456e3c714c 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java
@@ -53,7 +53,7 @@ import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
 import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
 import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandByVorgangController;
 import de.ozgcloud.alfa.vorgang.ServiceKontoTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
+import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHeadTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
@@ -67,6 +67,8 @@ class PostfachMailModelAssemblerTest {
 	private PostfachMailModelAssembler modelAssembler;
 	@Mock
 	private UserManagerUrlProvider userManagerUrlProvider;
+	@Mock
+	private VorgangController vorgangController;
 
 	@Nested
 	class TestToModel {
@@ -455,10 +457,20 @@ class PostfachMailModelAssemblerTest {
 		class SendPostfachMailLink {
 
 			private final String sendPostfachMailLinkRel = PostfachMailModelAssembler.REL_SEND_POSTFACH_MAIL;
+			private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
+
+			@Test
+			void shouldCheckIfVorgangIsEditable() {
+				callModelAssembler(vorgang);
+
+				verify(vorgangController).isEditable(vorgang);
+			}
 
 			@Test
 			void shouldExist() {
-				callModelAssembler(VorgangWithEingangTestFactory.create());
+				when(vorgangController.isEditable(vorgang)).thenReturn(true);
+
+				callModelAssembler(vorgang);
 
 				var link = model.getLink(sendPostfachMailLinkRel);
 				assertThat(link).get().extracting(Link::getHref)
@@ -466,8 +478,10 @@ class PostfachMailModelAssemblerTest {
 			}
 
 			@Test
-			void shouldNotExistOnStatusZuLoeschen() {
-				callModelAssembler(VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN).build());
+			void shouldNotExistWhenVorgangIsNotEditable() {
+				when(vorgangController.isEditable(vorgang)).thenReturn(false);
+
+				callModelAssembler(vorgang);
 
 				var link = model.getLink(sendPostfachMailLinkRel);
 				assertThat(link).isEmpty();
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java
index ce086063abdabff1414092f6fb2dfbb43eb01241..3a8b5c7335a1c2caa7886678b9e21cc7fde36055 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java
@@ -37,6 +37,8 @@ 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.ValueSource;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
@@ -49,7 +51,6 @@ import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
 import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.statistic.StatisticTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 
 class VorgangModelAssemblerTest {
 
@@ -58,6 +59,8 @@ class VorgangModelAssemblerTest {
 	private VorgangModelAssembler modelAssembler;
 	@Mock
 	private CurrentUserService userService;
+	@Mock
+	private VorgangService vorgangService;
 
 	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
 
@@ -317,6 +320,7 @@ class VorgangModelAssemblerTest {
 	class TestLinksOnModel {
 
 		private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
+		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
 
 		@BeforeEach
 		void beforeEach() {
@@ -337,82 +341,39 @@ class VorgangModelAssemblerTest {
 			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(VorgangController.PATH + "/" + VorgangHeaderTestFactory.ID);
 		}
 
-		@DisplayName("Without any roles")
-		@Nested
-		class WithoutRoles {
-
-			@Test
-			void shouldNotHaveWiedervorlagenLink() {
-				var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
+		@Test
+		void shouldHaveAssignLink() {
+			doReturn(true).when(modelAssembler).isAssigneable(vorgang);
 
-				assertThat(link).isEmpty();
-			}
+			var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
 
-			@DisplayName("Should not have Vorgang-assign-links")
-			@Test
-			void shouldNotHaveAssignLink() {
-				var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
-
-				assertThat(link).isEmpty();
-			}
+			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(buildCommandLink());
 		}
 
-		@Nested
-		class ForRoleVerwaltungPoststelle {
-
-			@Test
-			void shouldHaveAssignLink() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-				when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-
-				var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(buildCommandLink());
-			}
-
-			@Test
-			void shouldNotHaveAssignLink() {
-				var vorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN).build();
-				doReturn(false).when(modelAssembler).isAssigneable(vorgang);
-
-				var model = modelAssembler.toModel(vorgang);
-				var link = model.getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
+		@Test
+		void shouldNotHaveAssignLink() {
+			doReturn(false).when(modelAssembler).isAssigneable(vorgang);
 
-				assertThat(link).isEmpty();
-			}
+			var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
 
+			assertThat(link).isEmpty();
 		}
 
-		@Nested
-		class ForRoleVerwaltungUser {
-
-			@BeforeEach
-			void mockUserService() {
-				when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-			}
-
-			@Test
-			void shouldHaveWiedervorlagenLink() {
-				var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/wiedervorlages?vorgangId=" + VorgangHeaderTestFactory.ID);
-			}
+		@Test
+		void shouldHaveWiedervorlagenLink() {
+			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
 
-			@Test
-			void shouldHaveAssignLink() {
-				var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
+			var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
 
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(buildCommandLink());
-			}
+			assertThat(link).isPresent().get().extracting(Link::getHref)
+					.isEqualTo("/api/wiedervorlages?vorgangId=" + VorgangHeaderTestFactory.ID);
+		}
 
-			@Test
-			void shouldNotHaveAssignLink() {
-				var model = modelAssembler.toModel(VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN).build());
-				var link = model.getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
+		@Test
+		void shouldNotHaveWiedervorlagenLink() {
+			var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
 
-				assertThat(link).isEmpty();
-			}
+			assertThat(link).isEmpty();
 		}
 
 		private String buildCommandLink() {
@@ -421,62 +382,155 @@ class VorgangModelAssemblerTest {
 		}
 
 		private EntityModel<Vorgang> toModel() {
-			return modelAssembler.toModel(VorgangWithEingangTestFactory.create());
+			return modelAssembler.toModel(vorgang);
 		}
 	}
 
 	@Nested
 	class TestIsAssigneable {
 
+		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
+
 		@Test
-		void shouldReturnTrueForVerwaltungUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.NEU);
+		void shoudCheckIfVorgangIsEditable() {
+			givenVerwaltungUser();
+
+			modelAssembler.isAssigneable(vorgang);
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isTrue();
+			verify(modelAssembler).isEditable(vorgang);
 		}
 
 		@Test
-		void shouldReturnFalseForVerwaltungUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.NEU);
+		void shouldReturnTrueForVerwaltungUser() {
+			givenVerwaltungUser();
+			givenVorgangIsEditable();
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isFalse();
+			assertThat(modelAssembler.isAssigneable(vorgang)).isTrue();
 		}
 
 		@Test
-		void shouldReturnFalseForVerwatlugnUserAndVorgangZuLoeschen() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN);
+		void shouldReturnTrueForPoststelleUser() {
+			givenNotVerwaltungUser();
+			givenPoststelleUser();
+			givenVorgangIsEditable();
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isFalse();
+			assertThat(modelAssembler.isAssigneable(vorgang)).isTrue();
 		}
 
 		@Test
-		void shouldReturnTrueForPoststelleUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.NEU);
+		void shouldReturnFalseForNotPoststelleUser() {
+			givenNotVerwaltungUser();
+			givenNotPoststelleUser();
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isTrue();
+			assertThat(modelAssembler.isAssigneable(vorgang)).isFalse();
 		}
 
 		@Test
-		void shouldReturnFalseForPoststelleUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.NEU);
+		void shouldReturnFalseForVerwaltungUserAndVorgangNotEditable() {
+			givenVerwaltungUser();
+			givenVorgangIsNotEditable();
+
+			var assignable = modelAssembler.isAssigneable(vorgang);
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isFalse();
+			assertThat(assignable).isFalse();
 		}
 
 		@Test
-		void shouldReturnFalseForPoststelleUserAndVorgangZuLoeschen() {
+		void shouldReturnFalseForPoststelleUserAndVorgangNotEditable() {
+			givenNotVerwaltungUser();
+			givenPoststelleUser();
+			givenVorgangIsNotEditable();
+
+			var assignable = modelAssembler.isAssigneable(vorgang);
+
+			assertThat(assignable).isFalse();
+		}
+
+		private void givenVerwaltungUser() {
+			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
+		}
+
+		private void givenNotVerwaltungUser() {
 			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
+		}
+
+		private void givenPoststelleUser() {
 			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN);
+		}
+
+		private void givenNotPoststelleUser() {
+			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
+		}
+
+		private void givenVorgangIsEditable() {
+			doReturn(true).when(modelAssembler).isEditable(vorgang);
+		}
+
+		private void givenVorgangIsNotEditable() {
+			doReturn(false).when(modelAssembler).isEditable(vorgang);
+		}
+	}
+
+	@Nested
+	class IsEditable {
+
+		@Nested
+		class OnIsVorgangWithEingang {
+
+			private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
+
+			@Test
+			void shouldCheckIfVorgangIsEditable() {
+				modelAssembler.isEditable(vorgangWithEingang);
 
-			assertThat(modelAssembler.isAssigneable(vorgang.build())).isFalse();
+				verify(vorgangService).isEditable(vorgangWithEingang);
+			}
+
+			@ParameterizedTest
+			@ValueSource(booleans = { true, false })
+			void shouldReturnCheckResult(boolean checkResult) {
+				when(vorgangService.isEditable(vorgangWithEingang)).thenReturn(checkResult);
+
+				var editable = modelAssembler.isEditable(vorgangWithEingang);
+
+				assertThat(editable).isEqualTo(checkResult);
+			}
+		}
+
+		@Nested
+		class OnIsNotVorgangWithEingang {
+
+			private final Vorgang vorgang = VorgangHeaderTestFactory.create();
+			private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
+
+			@BeforeEach
+			void init() {
+				when(vorgangService.findVorgangWithEingang(VorgangHeaderTestFactory.ID)).thenReturn(vorgangWithEingang);
+			}
+
+			@Test
+			void shouldFindVorgangWithEingang() {
+				modelAssembler.isEditable(vorgang);
+
+				verify(vorgangService).findVorgangWithEingang(VorgangHeaderTestFactory.ID);
+			}
+
+			@Test
+			void shouldCheckIfVorgangIsEditable() {
+				modelAssembler.isEditable(vorgang);
+
+				verify(vorgangService).isEditable(vorgangWithEingang);
+			}
+
+			@ParameterizedTest
+			@ValueSource(booleans = { true, false })
+			void shouldReturnCheckResult(boolean checkResult) {
+				when(vorgangService.isEditable(vorgangWithEingang)).thenReturn(checkResult);
+
+				var editable = modelAssembler.isEditable(vorgang);
+
+				assertThat(editable).isEqualTo(checkResult);
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java
index b442bcaa6eb72d576947b6497eb0d742401d00b9..01cbb98f06ab930c917ae0bff08a2afd6d90e7aa 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java
@@ -44,9 +44,9 @@ import org.springframework.hateoas.server.EntityLinks;
 
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangController;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
+import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
 
 class WiedervorlageModelAssemblerTest {
@@ -103,6 +103,8 @@ class WiedervorlageModelAssemblerTest {
 				.replace("{wiedervorlageId}", WiedervorlageTestFactory.ID)
 				.replace("{wiedervorlageVersion}", String.valueOf(WiedervorlageTestFactory.VERSION));
 
+		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
+
 		@Test
 		void shouldHaveSelfLink() {
 			var link = buildModel().getLink(IanaLinkRelations.SELF);
@@ -113,6 +115,8 @@ class WiedervorlageModelAssemblerTest {
 
 		@Test
 		void shouldHaveEditLink() {
+			when(vorgangController.isEditable(vorgang)).thenReturn(true);
+
 			var link = buildModel().getLink(WiedervorlageModelAssembler.REL_EDIT);
 
 			assertThat(link).isPresent();
@@ -121,9 +125,9 @@ class WiedervorlageModelAssemblerTest {
 
 		@Test
 		void shouldNotHaveEditLink() {
-			var model = modelAssembler.buildModel(WiedervorlageTestFactory.createBuilder().done(true).build(),
-					VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN).build());
-			var link = model.getLink(WiedervorlageModelAssembler.REL_EDIT);
+			when(vorgangController.isEditable(vorgang)).thenReturn(false);
+
+			var link = buildModel().getLink(WiedervorlageModelAssembler.REL_EDIT);
 
 			assertThat(link).isEmpty();
 		}
@@ -201,23 +205,23 @@ class WiedervorlageModelAssemblerTest {
 		}
 
 		private EntityModel<Wiedervorlage> buildModel() {
-			return modelAssembler.buildModel(WiedervorlageTestFactory.create(), VorgangWithEingangTestFactory.create());
+			return modelAssembler.buildModel(WiedervorlageTestFactory.create(), vorgang);
 		}
 	}
 
 	@Nested
 	class TestLinksOnCollectionModel {
 
+		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
+
 		@BeforeEach
 		void beforeEach() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
+			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
 		}
 
 		@Test
 		void shouldBuildModel() {
 			var wiedervorlage = WiedervorlageTestFactory.create();
-			var vorgang = VorgangWithEingangTestFactory.create();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
 
 			modelAssembler.toCollectionModel(Stream.of(wiedervorlage), VorgangHeaderTestFactory.ID);
 
@@ -226,9 +230,10 @@ class WiedervorlageModelAssemblerTest {
 
 		@Test
 		void shouldHaveCreateWiedervorlageLink() {
+			when(vorgangController.isEditable(vorgang)).thenReturn(true);
+
 			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(WiedervorlageTestFactory.create()).stream(),
 					VorgangHeaderTestFactory.ID);
-
 			var link = collectionModel.getLink(WiedervorlageModelAssembler.REL_CREATE);
 
 			assertThat(link).isPresent();
@@ -237,12 +242,10 @@ class WiedervorlageModelAssemblerTest {
 
 		@Test
 		void shouldNotHaveCreateWiedervorlageLink() {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.ZU_LOESCHEN).build();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
+			when(vorgangController.isEditable(vorgang)).thenReturn(false);
 
 			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(WiedervorlageTestFactory.create()).stream(),
 					VorgangHeaderTestFactory.ID);
-
 			var link = collectionModel.getLink(WiedervorlageModelAssembler.REL_CREATE);
 
 			assertThat(link).isEmpty();