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 d857ac77a073b629badf46eb4462265f2d8aba2e..d1f3b17742b04f08c6f30d4dac6ef11159425724 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
@@ -39,6 +39,7 @@ import org.springframework.hateoas.mediatype.hal.HalModelBuilder;
 import org.springframework.hateoas.server.RepresentationModelAssembler;
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.alfa.common.LinkedResourceProcessor;
 import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
 import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
@@ -78,6 +79,7 @@ class PostfachMailModelAssembler implements RepresentationModelAssembler<Postfac
 
 	private final UserManagerUrlProvider userManagerUrlProvider;
 	private final VorgangController vorgangController;
+	private final LinkedResourceProcessor<PostfachMail> linkedResourceProcessor;
 
 	public RepresentationModel<EntityModel<PostfachSettings>> toCollectionModel(Stream<PostfachMail> postfachMails, VorgangWithEingang vorgang,
 			PostfachSettings postfachSettings) {
@@ -95,7 +97,7 @@ class PostfachMailModelAssembler implements RepresentationModelAssembler<Postfac
 		return HalModelBuilder
 				.halModelOf(postfachSettings)
 				.link(linkTo(methodOn(PostfachMailController.class).getAll(vorgang.getId())).withSelfRel())
-				.embed(postfachMails.map(this::toModel))
+				.embed(postfachMails.map(this::toModel).map(linkedResourceProcessor::process))
 				.build();
 	}
 
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 800829cb556d58a3bc55d030f3b9369d95e7c3ac..205bd81da8557af9393258a1c0c62c560c9d1544 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
@@ -37,6 +37,7 @@ import org.springframework.hateoas.server.RepresentationModelAssembler;
 import org.springframework.stereotype.Component;
 import org.springframework.web.util.UriComponentsBuilder;
 
+import de.ozgcloud.alfa.common.LinkedResourceProcessor;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.common.user.CurrentUserService;
 import de.ozgcloud.alfa.common.user.UserId;
@@ -57,6 +58,7 @@ class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, Ent
 
 	private final CurrentUserService userService;
 	private final VorgangService vorgangService;
+	private final LinkedResourceProcessor<Vorgang> linkedResourceProcessor;
 
 	public RepresentationModel<EntityModel<EnhancedVorgang>> toCollectionModel(Stream<VorgangHeader> entities, VorgaengeHeaderResponse response,
 			FindVorgaengeHeaderRequestCriteria requestCriteria, Statistic statistic) {
@@ -71,7 +73,7 @@ class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, Ent
 	RepresentationModel<EntityModel<EnhancedVorgang>> initModel(Stream<VorgangHeader> entities, Statistic statistic) {
 		return HalModelBuilder.halModelOf(EnhancedVorgang.builder().statistic(statistic).build())
 				.link(linkTo(VorgangController.class).withSelfRel())
-				.embed(entities.map(this::toModel).toList())
+				.embed(entities.map(this::toModel).map(linkedResourceProcessor::process))
 				.build();
 	}
 
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 5c8e2874053681408887e2b97e6157456e3c714c..091797403adabd9734b63866c28185033da4e0b7 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
@@ -48,6 +48,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
+import de.ozgcloud.alfa.common.LinkedResourceProcessor;
 import de.ozgcloud.alfa.common.user.UserId;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
 import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
@@ -69,6 +70,8 @@ class PostfachMailModelAssemblerTest {
 	private UserManagerUrlProvider userManagerUrlProvider;
 	@Mock
 	private VorgangController vorgangController;
+	@Mock
+	private LinkedResourceProcessor<PostfachMail> linkedResourceProcessor;
 
 	@Nested
 	class TestToModel {
@@ -352,6 +355,14 @@ class PostfachMailModelAssemblerTest {
 		private final Stream<PostfachMail> mails = Stream.of(postfachMail);
 		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
 		private final PostfachSettings postfachSettings = PostfachSettingsTestFactory.create();
+		private final EntityModel<PostfachMail> entityModel = EntityModel.of(postfachMail);
+		private final EntityModel<PostfachMail> processedEntityModel = EntityModel.of(postfachMail, Link.of("dummy"));
+
+		@BeforeEach
+		void mock() {
+			doReturn(entityModel).when(modelAssembler).toModel(any());
+			when(linkedResourceProcessor.process(entityModel)).thenReturn(processedEntityModel);
+		}
 
 		@Test
 		void shouldHavePostfachAsContent() {
@@ -376,15 +387,21 @@ class PostfachMailModelAssemblerTest {
 			verify(modelAssembler).toModel(postfachMail);
 		}
 
+		@Test
+		void shouldCallLinkedResourceProcessor() {
+			callModelAssembler();
+
+			verify(linkedResourceProcessor).process(entityModel);
+		}
+
 		@Test
 		@SneakyThrows
 		void shouldContainPostfachMails() {
 			var objectMapper = new ObjectMapper().registerModules(new JavaTimeModule(), new Jdk8Module());
-			doReturn(EntityModel.of(postfachMail)).when(modelAssembler).toModel(postfachMail);
 
 			var model = callModelAssembler();
 
-			assertThat(objectMapper.writeValueAsString(model)).contains(objectMapper.writeValueAsString(EntityModel.of(postfachMail)));
+			assertThat(objectMapper.writeValueAsString(model)).contains(objectMapper.writeValueAsString(processedEntityModel));
 		}
 
 		private RepresentationModel<EntityModel<PostfachSettings>> callModelAssembler() {
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 7b9dee67de61a225007517ea68d14440c69b6f6c..7daaae7e4675eaad6587961a5f42994787c3191d 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
@@ -24,6 +24,7 @@
 package de.ozgcloud.alfa.vorgang;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Collections;
@@ -32,6 +33,7 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -42,10 +44,17 @@ import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.hateoas.Link;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+
+import de.ozgcloud.alfa.common.LinkedResourceProcessor;
 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.Statistic;
 import de.ozgcloud.alfa.statistic.StatisticTestFactory;
+import lombok.SneakyThrows;
 
 class VorgangModelAssemblerTest {
 
@@ -56,6 +65,8 @@ class VorgangModelAssemblerTest {
 	private CurrentUserService userService;
 	@Mock
 	private VorgangService vorgangService;
+	@Mock
+	private LinkedResourceProcessor<Vorgang> linkedResourceProcessor;
 
 	private static final int PAGE_SIZE = 100;
 
@@ -172,6 +183,54 @@ class VorgangModelAssemblerTest {
 		}
 	}
 
+	@Nested
+	class TestInitModel {
+
+		private static final Link DUMMY_LINK = Link.of("dummy");
+		private final VorgangHeader vorgangHeader = VorgangHeaderTestFactory.create();
+		private final Stream<VorgangHeader> entities = Stream.of(vorgangHeader);
+		private final Statistic statistic = StatisticTestFactory.create();
+		private final EntityModel<Vorgang> entityModel = EntityModel.of(vorgangHeader);
+		private final EntityModel<Vorgang> processedEntityModel = EntityModel.of(vorgangHeader, DUMMY_LINK);
+
+		@BeforeEach
+		void mock() {
+			doReturn(entityModel).when(modelAssembler).toModel(any());
+			when(linkedResourceProcessor.process(any())).thenReturn(processedEntityModel);
+		}
+
+		@Test
+		void shouldHaveSelfLink() {
+			var model = modelAssembler.initModel(entities, statistic);
+
+			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).get().extracting(Link::getHref).isEqualTo(VorgangController.PATH);
+		}
+
+		@Test
+		void shouldCallToModel() {
+			modelAssembler.initModel(entities, statistic);
+
+			verify(modelAssembler).toModel(vorgangHeader);
+		}
+
+		@Test
+		void shouldCallLinkedResourceProcessor() {
+			modelAssembler.initModel(entities, statistic);
+
+			verify(linkedResourceProcessor).process(entityModel);
+		}
+
+		@Test
+		@SneakyThrows
+		void shouldContainProcessedEntity() {
+			var mapper = new ObjectMapper().registerModules(new JavaTimeModule(), new Jdk8Module());
+
+			var model = mapper.writeValueAsString(modelAssembler.initModel(entities, statistic));
+
+			assertThat(model).contains(mapper.writeValueAsString(processedEntityModel));
+		}
+	}
+
 	@DisplayName("Build page link")
 	@Nested
 	class TestBuildPageLink {