diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java
index 8c570cff79bdad0796683d6ecaf92888c841138f..e8c8c90460ecdc6bff0e4336041362d8c4e10d0d 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java
@@ -11,6 +11,7 @@ import org.springframework.hateoas.server.RepresentationModelProcessor;
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.alfa.common.ModelBuilder;
+import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import lombok.RequiredArgsConstructor;
@@ -22,6 +23,9 @@ class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel
 	private static final Predicate<VorgangWithEingang> IS_VORGANG_ABGESCHLOSSEN = vorgang -> vorgang.getStatus() == VorgangStatus.ABGESCHLOSSEN;
 
 	static final LinkRelation REL_EXPORT = LinkRelation.of("export");
+	static final LinkRelation REL_ARCHIVE = LinkRelation.of("archive");
+
+	private final DmsProperties dmsProperties;
 
 	@Override
 	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
@@ -34,6 +38,13 @@ class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel
 		return ModelBuilder.fromModel(model)
 				.ifMatch(IS_VORGANG_ABGESCHLOSSEN)
 				.addLink(linkTo(methodOn(ExportVorgangController.class).exportVorgang(vorgang.getId())).withRel(REL_EXPORT))
+				.ifMatch(IS_VORGANG_ABGESCHLOSSEN.and(isDmsEnabled()))
+				.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
+						null)).withRel(REL_ARCHIVE))
 				.buildModel();
 	}
+
+	private Predicate<VorgangWithEingang> isDmsEnabled() {
+		return vorgang -> dmsProperties.isEnabled();
+	}
 }
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java
index 1443f94482daadc8ab02a10a9ebeaa17a3045457..79cd503f5182830920e8f1d4f3f591a50d05aa59 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java
@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.export;
 
 import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -10,10 +11,13 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.EnumSource;
 import org.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
+import org.springframework.hateoas.UriTemplate;
 
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
+import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
 import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
@@ -23,21 +27,23 @@ class ExportVorgangProcessorTest {
 
 	@InjectMocks
 	private ExportVorgangProcessor processor;
+	@Mock
+	private DmsProperties dmsProperties;
 
 	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
 
 	@Nested
 	class TestProcess {
 
+		@BeforeEach
+		void init() {
+			initUserProfileUrlProvider(urlProvider);
+		}
+
 		@DisplayName("Export link")
 		@Nested
 		class TestExportLink {
 
-			@BeforeEach
-			void init() {
-				initUserProfileUrlProvider(urlProvider);
-			}
-
 			@Test
 			void shouldAddLinkWhenVorgangIsAbgeschlossen() {
 				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
@@ -57,12 +63,54 @@ class ExportVorgangProcessorTest {
 
 				assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty();
 			}
+		}
+
+		@Nested
+		class TestArchiveLink {
+
+			@Test
+			void shouldAddLink() {
+				givenDmsIsEnabled();
+				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
+
+				var model = processor.process(EntityModel.of(vorgang));
+
+				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isPresent().get().extracting(Link::getHref)
+						.isEqualTo(UriTemplate.of(CommandByRelationController.COMMAND_BY_RELATION_PATH)
+								.expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString());
+			}
+
+			@ParameterizedTest
+			@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ABGESCHLOSSEN")
+			void shouldNotAddLinkWhenVorgangIsNotAbgeschlossen(VorgangStatus status) {
+				var vorgang = vorgangInStatus(status);
+
+				var model = processor.process(EntityModel.of(vorgang));
+
+				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isEmpty();
+			}
+
+			@Test
+			void shouldNotAddLinkWhenDmsIsNotEnabled() {
+				givenDmsIsNotEnabled();
+				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
 
-			private VorgangWithEingang vorgangInStatus(VorgangStatus status) {
-				return VorgangWithEingangTestFactory.createBuilder().status(status).build();
+				var model = processor.process(EntityModel.of(vorgang));
+
+				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isEmpty();
+			}
+
+			void givenDmsIsEnabled() {
+				when(dmsProperties.isEnabled()).thenReturn(true);
+			}
+
+			void givenDmsIsNotEnabled() {
+				when(dmsProperties.isEnabled()).thenReturn(false);
 			}
 		}
 
+		private VorgangWithEingang vorgangInStatus(VorgangStatus status) {
+			return VorgangWithEingangTestFactory.createBuilder().status(status).build();
+		}
 	}
-
 }
\ No newline at end of file