diff --git a/.gitignore b/.gitignore
index 3fc1d884b983db7cd48581b4198239e70ebc5119..4c1a41b2c5665e76dae6bd753ebdbe7fdfe74337 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ target/
 .idea
 *.iml
 *.orig
+.vscode/settings.json
diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationManagerConfiguration.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationManagerConfiguration.java
index 80496bb8b53b809302bfb7d426be4dafcff80bda..331b155a60b7e4ca3fbd112ab4ad99e487d69e5f 100644
--- a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationManagerConfiguration.java
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationManagerConfiguration.java
@@ -64,6 +64,7 @@ public class CollaborationManagerConfiguration {
 	public static final String TEMPLATE_HANDLER_NAME = "collaboration_TemplateHandler";
 	public static final String VORGANG_ATTACHED_ITEM_REMOTE_SERVICE_NAME = "collaboration_VorgangAttachedItemRemoteService";
 	public static final String VORGANG_ATTACHED_ITEM_SERVICE_NAME = "collaboration_VorgangAttachedItemService";
+	public static final String VORGANG_MANAGER_PROPERTIES_NAME = "collaboration_vorgangManagerProperties";
 
 	public static final String CALL_CONTEXT_INTERCEPTOR_NAME = "collaboration_CallContextInterceptor";
 	public static final String CALL_CONTEXT_PROVIDER_NAME = "collaboration_CallContextProvider";
diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationService.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationService.java
index 367588a12e4519d7f136b699cd1b85c859f8c4eb..257d19c5ad692c1f026bdff02e62d96175857aca 100644
--- a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationService.java
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/CollaborationService.java
@@ -23,7 +23,6 @@
  */
 package de.ozgcloud.collaboration;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -51,7 +50,7 @@ public class CollaborationService {
 
 	static final String CREATE_ATTACHED_ITEM_ORDER = "CREATE_ATTACHED_ITEM";
 	static final String SUBCOMMANDS_EXECUTION_MODE = "PARALLEL";
-	public static final String KEY_TEMPLATE_URL = "url";
+	public static final String KEY_VORGANG_LINK = "linkToVorgang";
 
 	public static final String COLLABORATION_NACHRICHT_TEMPLATE = "collaboration.nachrichtTemplate.txt.ftlh";
 	static final String SEND_POSTFACH_NACHRICHT_ORDER = "SEND_POSTFACH_NACHRICHT";
@@ -78,6 +77,7 @@ public class CollaborationService {
 	private final CommandMapper commandMapper;
 	@Qualifier(CollaborationManagerConfiguration.TEMPLATE_HANDLER_NAME) // NOSONAR
 	private final TemplateHandler templateHandler;
+	private final FachstelleVorgangUrlProvider urlProvider;
 
 	public void createCollaborationRequest(@Valid CollaborationRequest collaborationRequest) {
 		var enrichedRequest = enrichCollaborationRequest(collaborationRequest, vorgangService.createCollaborationVorgang(collaborationRequest));
@@ -125,7 +125,8 @@ public class CollaborationService {
 	}
 
 	OzgCloudCommand buildSendPostfachNachrichtCommand(CollaborationRequest collaborationRequest, ServiceKonto serviceKonto) {
-		var bodyObject = buildPostfachSendNachrichtCommandBody(buildPostfachAddress(serviceKonto.getAddresses().getFirst(), serviceKonto.getType()));
+		var bodyObject = buildPostfachSendNachrichtCommandBody(buildPostfachAddress(serviceKonto.getAddresses().getFirst(), serviceKonto.getType()),
+				collaborationRequest.getVorgangId());
 		return OzgCloudCommand.builder()
 				.vorgangId(commandMapper.toOzgCloudVorgangId(collaborationRequest.getVorgangId()))
 				.relationId(commandMapper.mapRelationId(collaborationRequest.getVorgangId()))
@@ -143,19 +144,19 @@ public class CollaborationService {
 				ServiceKonto.FIELD_SERVICEKONTO_TYPE, serviceKontoType);
 	}
 
-	Map<String, Object> buildPostfachSendNachrichtCommandBody(Map<String, Object> postfachAddress) {
+	Map<String, Object> buildPostfachSendNachrichtCommandBody(Map<String, Object> postfachAddress, String vorgangId) {
 		return Map.of(
 				FIELD_REPLY_OPTION, REPLY_OPTION,
 				FIELD_SUBJECT, SUBJECT,
-				FIELD_MAIL_BODY, getAnfrageText(),
+				FIELD_MAIL_BODY, getAnfrageText(vorgangId),
 				ServiceKonto.FIELD_POSTFACH_ADDRESS, postfachAddress);
 	}
 
-	String getAnfrageText() {
-		return templateHandler.fillTemplate(COLLABORATION_NACHRICHT_TEMPLATE, getTemplateParameters());
+	String getAnfrageText(String vorgangId) {
+		return templateHandler.fillTemplate(COLLABORATION_NACHRICHT_TEMPLATE, getTemplateParameters(vorgangId));
 	}
 
-	Map<String, Object> getTemplateParameters() {
-		return Collections.emptyMap();
+	Map<String, Object> getTemplateParameters(String vorgangId) {
+		return Map.of(KEY_VORGANG_LINK, urlProvider.getUrl(vorgangId));
 	}
 }
\ No newline at end of file
diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleProperties.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleProperties.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7af41f49b8778af927df2f44918c18e071d65ec
--- /dev/null
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleProperties.java
@@ -0,0 +1,18 @@
+package de.ozgcloud.collaboration;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Configuration
+@ConfigurationProperties(prefix = FachstelleProperties.PREFIX)
+@Getter
+@Setter
+class FachstelleProperties {
+
+	static final String PREFIX = "ozgcloud.fachstelle";
+
+	private String host;
+}
diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProvider.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5952aeab811e7d0eec5c8a9d211886a0a3b7953c
--- /dev/null
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProvider.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.collaboration;
+
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.common.errorhandling.TechnicalException;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@RequiredArgsConstructor
+class FachstelleVorgangUrlProvider {
+
+	private final FachstelleProperties fachstelleProperties;
+	@Qualifier(CollaborationManagerConfiguration.VORGANG_MANAGER_PROPERTIES_NAME) // NOSONAR
+	private final VorgangManagerProperties vorgangManagerProperties;
+
+	public static final String VORGANG_URL_TEMPLATE = "%s/resources?uri=%s";
+	private static final String RESOURCE_URI_TEMPLATE = "%s/vorgangs/%s";
+	private static final String SERVICE_DOMAIN_NAME_PATTERN = "^(.*:/+)?([a-zA-Z.-]+)(:\\d*)?$";
+
+	public String getUrl(String vorgangId) {
+		var fachstelleHost = fachstelleProperties.getHost();
+		var serviceAddress = vorgangManagerProperties.getServiceAddress();
+		if (StringUtils.isAnyBlank(fachstelleHost, serviceAddress)) {
+			throw new TechnicalException("Link to Fachstelle is not configured!");
+		}
+		return VORGANG_URL_TEMPLATE.formatted(fachstelleHost, buildVorgangUri(vorgangId, serviceAddress));
+	}
+
+	String buildVorgangUri(String vorgangId, String serviceAddress) {
+		var domainName = extractServiceDomainName(serviceAddress);
+		var vorgangUri = RESOURCE_URI_TEMPLATE.formatted(domainName, vorgangId);
+		return URLEncoder.encode(vorgangUri, StandardCharsets.UTF_8);
+	}
+
+	String extractServiceDomainName(String serviceAddress) {
+		var match = Pattern.compile(SERVICE_DOMAIN_NAME_PATTERN).matcher(serviceAddress);
+		if (!match.find()) {
+			throw new TechnicalException("No domain name found in " + serviceAddress);
+		}
+		return match.group(2);
+	}
+}
diff --git a/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/VorgangManagerProperties.java b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/VorgangManagerProperties.java
new file mode 100644
index 0000000000000000000000000000000000000000..97d517e31f5e0a2308ef28fcfe188701a1cb2507
--- /dev/null
+++ b/collaboration-manager-server/src/main/java/de/ozgcloud/collaboration/VorgangManagerProperties.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.collaboration;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Configuration(CollaborationManagerConfiguration.VORGANG_MANAGER_PROPERTIES_NAME) // NOSONAR
+@ConfigurationProperties(prefix = VorgangManagerProperties.PREFIX)
+@Getter
+@Setter
+class VorgangManagerProperties {
+
+	static final String PREFIX = "ozgcloud.vorgang-manager";
+
+	private String serviceAddress;
+}
diff --git a/collaboration-manager-server/src/main/resources/templates/collaboration.nachrichtTemplate.txt.ftlh b/collaboration-manager-server/src/main/resources/templates/collaboration.nachrichtTemplate.txt.ftlh
index 5874936fb45fd176e05cef6a7e888b4b6fb0379c..5259992504dabd4761c1c656363a765d2f8a417d 100644
--- a/collaboration-manager-server/src/main/resources/templates/collaboration.nachrichtTemplate.txt.ftlh
+++ b/collaboration-manager-server/src/main/resources/templates/collaboration.nachrichtTemplate.txt.ftlh
@@ -1,7 +1,4 @@
-Hallo Fachstelle,
+Guten Tag,
+Sie haben eine Zuarbeitsanfrage erhalten. Bitte klicken Sie auf folgenden Link, um zum Vorgang zu gelangen:
 
-bitte bearbeiten:
-${url!"http://www.host.local"}
-
-Danke,
-Verwaltung
\ No newline at end of file
+${linkToVorgang}
\ No newline at end of file
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceITCase.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceITCase.java
index b5c9c52e92d34ba535e9563c7891d4a7d5c0a2b8..1d0867baad9d780b636d5421070b7f824fe0f11f 100644
--- a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceITCase.java
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceITCase.java
@@ -34,7 +34,6 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.NullAndEmptySource;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.annotation.DirtiesContext;
 
 import de.ozgcloud.common.test.ITCase;
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceTest.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceTest.java
index 4d1f78dda4fac0508c147c1cd8e8c8a74767dfd0..68dc021e4f75af3f230a19d73cbe778a91b9aa74 100644
--- a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceTest.java
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/CollaborationServiceTest.java
@@ -24,6 +24,7 @@
 package de.ozgcloud.collaboration;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.InstanceOfAssertFactories.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
@@ -37,6 +38,8 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
 import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
 import de.ozgcloud.apilib.common.command.OzgCloudCreateSubCommandsRequest;
@@ -77,6 +80,8 @@ class CollaborationServiceTest {
 	private CommandMapper commandMapper;
 	@Mock
 	private TemplateHandler templateHandler;
+	@Mock
+	private FachstelleVorgangUrlProvider urlProvider;
 
 	@Nested
 	class TestCreateCollaborationRequest {
@@ -400,7 +405,7 @@ class CollaborationServiceTest {
 			when(commandMapper.toOzgCloudVorgangId(anyString())).thenReturn(VORGANG_ID);
 			when(commandMapper.mapRelationId(anyString())).thenReturn(RELATION_ID);
 			when(commandMapper.toOzgCloudUserId(anyString())).thenReturn(OZG_CLOUD_ID);
-			doReturn(OBJECT_MAP).when(service).buildPostfachSendNachrichtCommandBody(any());
+			doReturn(OBJECT_MAP).when(service).buildPostfachSendNachrichtCommandBody(any(), any());
 		}
 
 		@Test
@@ -417,7 +422,7 @@ class CollaborationServiceTest {
 
 			buildSendPostfachNachrichtCommand();
 
-			verify(service).buildPostfachSendNachrichtCommandBody(postfachAddressMap);
+			verify(service).buildPostfachSendNachrichtCommandBody(postfachAddressMap, VorgangTestFactory.ID_STR);
 		}
 
 		@Test
@@ -524,7 +529,7 @@ class CollaborationServiceTest {
 
 		@BeforeEach
 		void init() {
-			doReturn(CollaborationRequestTestFactory.BESCHREIBUNG).when(service).getAnfrageText();
+			doReturn(CollaborationRequestTestFactory.BESCHREIBUNG).when(service).getAnfrageText(any());
 		}
 
 		@Test
@@ -549,53 +554,74 @@ class CollaborationServiceTest {
 		}
 
 		private Map<String, Object> buildSendNachrichtCommandBody() {
-			return service.buildPostfachSendNachrichtCommandBody(POSTFACH_ADDRESS);
+			return service.buildPostfachSendNachrichtCommandBody(POSTFACH_ADDRESS, VorgangTestFactory.ID_STR);
 		}
 	}
 
 	@Nested
-	class TestGetDefaultAnfrageText {
+	class TestGetAnfrageText {
 
 		private static final String DEFAULT_MAIL_TEXT = "default mail text";
 
+		private static final Map<String, Object> TEMPLATE_PARAMETERS = Map.of("key", "value ");
+
 		@BeforeEach
 		void init() {
 			when(templateHandler.fillTemplate(anyString(), any())).thenReturn(DEFAULT_MAIL_TEXT);
+			doReturn(TEMPLATE_PARAMETERS).when(service).getTemplateParameters(any());
 		}
 
 		@Test
 		void shouldCallGetTemplateParameters() {
-			service.getAnfrageText();
+			getAnfrageText();
 
-			verify(service).getTemplateParameters();
+			verify(service).getTemplateParameters(VorgangTestFactory.ID_STR);
 		}
 
 		@Test
 		void shouldCallTemplateHandler() {
-			var templateParameters = Map.<String, Object>of("key", "value ");
-			doReturn(templateParameters).when(service).getTemplateParameters();
-
-			service.getAnfrageText();
+			getAnfrageText();
 
-			verify(templateHandler).fillTemplate(CollaborationService.COLLABORATION_NACHRICHT_TEMPLATE, templateParameters);
+			verify(templateHandler).fillTemplate(CollaborationService.COLLABORATION_NACHRICHT_TEMPLATE, TEMPLATE_PARAMETERS);
 		}
 
 		@Test
 		void shouldReturnDefaultMailText() {
-			var result = service.getAnfrageText();
+			var result = getAnfrageText();
 
 			assertThat(result).isEqualTo(DEFAULT_MAIL_TEXT);
 		}
+
+		private String getAnfrageText() {
+			return service.getAnfrageText(VorgangTestFactory.ID_STR);
+		}
 	}
 
 	@Nested
 	class TestGetTemplateParameters {
 
+		private final String linkToVorgang = LoremIpsum.getInstance().getUrl();
+
+		@Test
+		void shouldCallUrlProvider() {
+			when(urlProvider.getUrl(any())).thenReturn(linkToVorgang);
+
+			getTemplateParameters();
+
+			verify(urlProvider).getUrl(VorgangTestFactory.ID_STR);
+		}
+
 		@Test
 		void shouldReturnTemplateParameters() {
-			var result = service.getTemplateParameters();
+			when(urlProvider.getUrl(any())).thenReturn(linkToVorgang);
+
+			var result = getTemplateParameters();
+
+			assertThat(result).containsExactly(Map.entry(CollaborationService.KEY_VORGANG_LINK, linkToVorgang));
+		}
 
-			assertThat(result).isEmpty();
+		private Map<String, Object> getTemplateParameters() {
+			return service.getTemplateParameters(VorgangTestFactory.ID_STR);
 		}
 	}
 }
\ No newline at end of file
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProviderTest.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProviderTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..161eb0af86cc6e7c5d936de4d76ccd73272a1cf3
--- /dev/null
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/FachstelleVorgangUrlProviderTest.java
@@ -0,0 +1,162 @@
+package de.ozgcloud.collaboration;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.junit.jupiter.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.NullAndEmptySource;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import de.ozgcloud.collaboration.vorgang.VorgangTestFactory;
+import de.ozgcloud.common.errorhandling.TechnicalException;
+
+class FachstelleVorgangUrlProviderTest {
+
+	@Mock
+	private FachstelleProperties fachstelleProperties;
+	@Mock
+	private VorgangManagerProperties vorgangManagerProperties;
+
+	@Spy
+	@InjectMocks
+	private FachstelleVorgangUrlProvider provider;
+
+	@Nested
+	class TestGetUrl {
+
+		private static final String FACHSTELLE_HOST = "https://test.fachstelle.de";
+		private static final String VORGANG_MANAGER_SERVICE_ADDRESS = "vorgang-manager.test-namespace";
+
+		@Nested
+		class OnPropertiesSet {
+
+			private static final String RESOURCES_URL = FACHSTELLE_HOST + "/resources";
+			private static final String URI_PARAM = VORGANG_MANAGER_SERVICE_ADDRESS + "/vorgangs/" + VorgangTestFactory.ID_STR;
+
+			@BeforeEach
+			void mock() {
+				when(fachstelleProperties.getHost()).thenReturn(FACHSTELLE_HOST);
+				when(vorgangManagerProperties.getServiceAddress()).thenReturn(VORGANG_MANAGER_SERVICE_ADDRESS);
+
+			}
+
+			@Test
+			void shouldGetFachstelleHost() {
+				provider.getUrl(VorgangTestFactory.ID_STR);
+
+				verify(fachstelleProperties).getHost();
+			}
+
+			@Test
+			void shouldGetVorgangManagerServiceAddress() {
+				provider.getUrl(VorgangTestFactory.ID_STR);
+
+				verify(vorgangManagerProperties).getServiceAddress();
+			}
+
+			@Test
+			void shouldCallBuildVorgangUri() {
+				provider.getUrl(VorgangTestFactory.ID_STR);
+
+				verify(provider).buildVorgangUri(VorgangTestFactory.ID_STR, VORGANG_MANAGER_SERVICE_ADDRESS);
+			}
+
+			@Test
+			void shouldReturnUrl() {
+				doReturn(URI_PARAM).when(provider).buildVorgangUri(any(), any());
+
+				var vorgangUrl = provider.getUrl(VorgangTestFactory.ID_STR);
+
+				assertThat(vorgangUrl).isEqualTo(RESOURCES_URL + "?uri=" + URI_PARAM);
+			}
+		}
+
+		@Nested
+		class OnPropertiesNotSet {
+
+			@ParameterizedTest
+			@NullAndEmptySource
+			void shouldThrowExceptionIfFachstelleHostIsNotSet(String host) {
+				when(fachstelleProperties.getHost()).thenReturn(host);
+				when(vorgangManagerProperties.getServiceAddress()).thenReturn(VORGANG_MANAGER_SERVICE_ADDRESS);
+
+				assertThrows(TechnicalException.class, () -> provider.getUrl(VorgangTestFactory.ID_STR));
+			}
+
+			@ParameterizedTest
+			@NullAndEmptySource
+			void shouldThrowExceptionIfServiceAddressIsNotSet(String serviceAddress) {
+				when(vorgangManagerProperties.getServiceAddress()).thenReturn(serviceAddress);
+				when(fachstelleProperties.getHost()).thenReturn(FACHSTELLE_HOST);
+
+				assertThrows(TechnicalException.class, () -> provider.getUrl(VorgangTestFactory.ID_STR));
+			}
+		}
+	}
+
+	@Nested
+	class TestBuildVorgangUri {
+
+		private static final String VORGANG_MANAGER_DOMAIN_NAME = "vorgang-manager.by-kiel-dev";
+		private static final String VORGANG_MANAGER_SERVICE_ADDRESS = "dns:///vorgang-manager.by-kiel-dev:9090";
+
+		@BeforeEach
+		void setUp() {
+			doReturn(VORGANG_MANAGER_DOMAIN_NAME).when(provider).extractServiceDomainName(any());
+		}
+
+		@Test
+		void shouldCallExtractServiceDomainName() {
+			buildVorgangUri();
+
+			verify(provider).extractServiceDomainName(VORGANG_MANAGER_SERVICE_ADDRESS);
+		}
+
+		@Test
+		void shouldReturnEncodedVorgangUri() {
+			var vorgangUri = buildVorgangUri();
+
+			assertThat(vorgangUri).isEqualTo(VORGANG_MANAGER_DOMAIN_NAME + "%2Fvorgangs%2F" + VorgangTestFactory.ID_STR);
+		}
+
+		private String buildVorgangUri() {
+			return provider.buildVorgangUri(VorgangTestFactory.ID_STR, VORGANG_MANAGER_SERVICE_ADDRESS);
+		}
+	}
+
+	@Nested
+	class TestExtractServiceDomainName {
+		@ParameterizedTest
+		@ValueSource(strings = {
+				"dns:///vorgang-manager.by-kiel-dev:9090",
+				"dns:///vorgang-manager.by-kiel-dev",
+				"vorgang-manager.by-kiel-dev:9090",
+				"vorgang-manager.by-kiel-dev",
+				"dns://vorgang-manager.by-kiel-dev:9090",
+				"dns:/vorgang-manager.by-kiel-dev:9090",
+				"dns:/vorgang-manager.by-kiel-dev:",
+				"dns:/vorgang-manager.by-kiel-dev:1",
+				"abc:/vorgang-manager.by-kiel-dev:9090" })
+		void shouldReturnDomainName(String serviceAddress) {
+			var address = provider.extractServiceDomainName(serviceAddress);
+
+			assertThat(address).isEqualTo("vorgang-manager.by-kiel-dev");
+		}
+
+		@Test
+		void shouldThrowTechnicalException() {
+			var invalidServiceAddress = "123";
+
+			assertThatThrownBy(() -> provider.extractServiceDomainName(invalidServiceAddress)).isInstanceOf(
+					TechnicalException.class).hasMessageStartingWith("No domain name found in " + invalidServiceAddress);
+		}
+	}
+}
diff --git a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/freemarker/TemplateHandlerITCase.java b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/freemarker/TemplateHandlerITCase.java
index faac634359143e548636ed8bf0503c5719555ea3..3859ca14813c564bc84d949c576561199eb5934c 100644
--- a/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/freemarker/TemplateHandlerITCase.java
+++ b/collaboration-manager-server/src/test/java/de/ozgcloud/collaboration/common/freemarker/TemplateHandlerITCase.java
@@ -67,7 +67,7 @@ class TemplateHandlerITCase {
 		void shouldReturnFilledTemplate() {
 			var value = "http://test.url";
 			var content = handler.fillTemplate(CollaborationService.COLLABORATION_NACHRICHT_TEMPLATE,
-					Map.of(CollaborationService.KEY_TEMPLATE_URL, value));
+					Map.of(CollaborationService.KEY_VORGANG_LINK, value));
 
 			assertThat(content)
 					.contains("Hallo Fachstelle,")