diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java
index 365d7e268306e05d8025a8a9e7c6937186804d53..cae792c048fd93a58a532239cbb4270d0e58003c 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java
@@ -23,12 +23,15 @@ public class BescheidModelAssembler implements RepresentationModelAssembler<Besc
 	static final String REL_UPLOAD_ATTACHMENT = "uploadAttachment";
 	static final String REL_ATTACHMENTS = "attachments";
 	static final String REL_UPDATE = "update";
-	static final String REL_CREATE_BESCHEID_DOCUMENT = "createBescheidDocument";
+	static final String REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY = "createBescheidDocumentAutomatically";
+	static final String REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE = "createBescheidDocumentFromFile";
 	static final String REL_BESCHEID_DOCUMENT = "bescheidDocument";
 	static final String REL_SEND = "send";
 
 	private static final Predicate<Bescheid> HAS_ATTACHMENTS = bescheid -> !bescheid.getAttachments().isEmpty();
 
+	private final BescheidService bescheidService;
+
 	@Override
 	public EntityModel<Bescheid> toModel(Bescheid bescheid) {
 		var selfLink = linkTo(methodOn(BescheidController.class).getDraft(bescheid.getVorgangId()));
@@ -49,7 +52,9 @@ public class BescheidModelAssembler implements RepresentationModelAssembler<Besc
 				.ifMatch(HAS_ATTACHMENTS)
 				.addLink(attachmentsLink.withRel(REL_ATTACHMENTS))
 				.addLink(createCommandLink.withRel(REL_UPDATE))
-				.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT))
+				.ifMatch(bescheidService::canCreateBescheidDocumentAutomatically)
+				.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY))
+				.addLink(createCommandLink.withRel(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE))
 				.addLink(createCommandLink.withRel(REL_SEND))
 				.buildModel();
 	}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java
index 78d288a3afb3324f1a9c60a9cc9ab07608f5e4df..c423e4b2d165b61a05c2fac8824b7164fdfb8151 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java
@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.bescheid;
 
 import static de.ozgcloud.alfa.bescheid.BescheidModelAssembler.*;
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 import java.util.Collections;
 
@@ -9,6 +10,8 @@ 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.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.IanaLinkRelations;
@@ -22,8 +25,12 @@ import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 class BescheidModelAssemblerTest {
 
 	@Spy
+	@InjectMocks
 	private BescheidModelAssembler assembler;
 
+	@Mock
+	private BescheidService bescheidService;
+
 	@Nested
 	class TestToModel {
 
@@ -88,10 +95,29 @@ class BescheidModelAssemblerTest {
 		}
 
 		@Test
-		void shouldHaveCreateBescheidDocumentLink() {
+		void shouldHaveCreateBescheidDocumentAutomaticallyLink() {
+			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
+
 			var model = callToModel();
 
-			assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT)).isPresent().get().extracting(Link::getHref)
+			assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY)).isPresent().get().extracting(Link::getHref)
+					.isEqualTo(createCommandLink());
+		}
+
+		@Test
+		void shoulNotdHaveCreateBescheidDocumentAutomaticallyLink() {
+			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(false);
+
+			var model = callToModel();
+
+			assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY)).isEmpty();
+		}
+
+		@Test
+		void shouldHaveCreateBescheidDocumentFromFileLink() {
+			var model = callToModel();
+
+			assertThat(model.getLink(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE)).isPresent().get().extracting(Link::getHref)
 					.isEqualTo(createCommandLink());
 		}
 
@@ -113,12 +139,21 @@ class BescheidModelAssemblerTest {
 
 		@Test
 		void shouldHaveOnlyExpectedLinks() {
+			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
+
 			var model = callToModel();
 
 			assertThat(model.getLinks()).extracting(Link::getRel).containsExactlyInAnyOrder(
-					IanaLinkRelations.SELF, LinkRelation.of(REL_DELETE), LinkRelation.of(REL_UPLOAD_BESCHEID_FILE),
-					LinkRelation.of(REL_UPLOAD_ATTACHMENT), LinkRelation.of(REL_ATTACHMENTS), LinkRelation.of(REL_UPDATE),
-					LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT), LinkRelation.of(REL_BESCHEID_DOCUMENT), LinkRelation.of(REL_SEND));
+					IanaLinkRelations.SELF,
+					LinkRelation.of(REL_DELETE),
+					LinkRelation.of(REL_UPLOAD_BESCHEID_FILE),
+					LinkRelation.of(REL_UPLOAD_ATTACHMENT),
+					LinkRelation.of(REL_ATTACHMENTS),
+					LinkRelation.of(REL_UPDATE),
+					LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT_AUTOMATICALLY),
+					LinkRelation.of(REL_CREATE_BESCHEID_DOCUMENT_FROM_FILE),
+					LinkRelation.of(REL_BESCHEID_DOCUMENT),
+					LinkRelation.of(REL_SEND));
 		}
 
 		@Test