diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java
index 510b7c92779fa39758cf3da4855a7af4dec20fe1..29b9ca971b5aa597a7df76abdc2537562202ad59 100644
--- a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java
+++ b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java
@@ -5,6 +5,7 @@ import java.time.LocalDate;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.common.errorhandling.TechnicalException;
 import lombok.RequiredArgsConstructor;
 
 @Component
@@ -17,10 +18,17 @@ public class VorgangNummerSupplier {
 	static final int SUFFIX_LENGTH = 6;
 
 	public String get() {
+		return get(SUFFIX_LENGTH);
+	}
+
+	public String get(int suffixLength) {
+		if (suffixLength <1){
+			throw new TechnicalException("Suffix length must be at least 1");
+		}
 		var today = LocalDate.now();
 		var lastYearNumber = today.getYear() % 10;
 		return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(),
-				RandomStringUtils.random(SUFFIX_LENGTH, BASE30_ALPHABET));
+				RandomStringUtils.random(suffixLength, BASE30_ALPHABET));
 	}
 
 }
diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java
index 2fc9a524f5e23d2bebd9721eb5612d96ad879782..fa604a63010e2b45ef5fb16d76438c870ced4603 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java
@@ -1,18 +1,20 @@
 package de.ozgcloud.eingang.common.vorgang;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 import java.time.LocalDate;
-import java.util.Random;
 
 import org.apache.commons.lang3.RandomStringUtils;
 import org.junit.jupiter.api.DisplayName;
 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;
-import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.errorhandling.TechnicalException;
 
 class VorgangNummerSupplierTest {
 
@@ -26,7 +28,25 @@ class VorgangNummerSupplierTest {
 	void shouldAddSuffix() {
 		var result = vorgangNummerSupplier.get();
 
-		assertThat(result).hasSize(11);
+		assertThat(getSuffix(result)).hasSize(VorgangNummerSupplier.SUFFIX_LENGTH);
+	}
+
+	@Test
+	void shouldHaveSuffixSize() {
+		var result = vorgangNummerSupplier.get(3);
+
+		assertThat(getSuffix(result)).hasSize(3);
+	}
+
+	@DisplayName("should throw exception when")
+	@ParameterizedTest(name = "suffix length {0}")
+	@ValueSource(ints = { -1, 0 })
+	void shouldThrowException(int suffixLength) {
+		assertThrows(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength));
+	}
+
+	private String getSuffix(String string) {
+		return string.substring(string.indexOf('-') + 1);
 	}
 
 	@Test
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
index 0fe6d495bf3382335bbb41a8fc186feeb30ba300..9e60b84b7ac4ba0dafc491ae1d80742a4d002d58 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
@@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.FormHeader;
+import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
 import lombok.NonNull;
 import lombok.extern.log4j.Log4j2;
 
@@ -17,11 +19,14 @@ import lombok.extern.log4j.Log4j2;
 class XtaService {
 
 	static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201";
+	static final int VORGANG_NUMMER_SUFFIX_LENGTH = 4;
 
 	@Autowired
 	private XtaRemoteService remoteService;
 	@Autowired
 	private XtaMessageMapper mapper;
+	@Autowired
+	private VorgangNummerSupplier vorgangNummerSupplier;
 
 	public Stream<FormData> getMessages() {
 		return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData);
@@ -45,7 +50,16 @@ class XtaService {
 
 	public FormData getFormData(@NonNull XtaMessageMetaData metaData) {
 		var msg = remoteService.getMessage(metaData.getMessageId());
-		return mapper.toFormData(msg.toBuilder().metaData(metaData).build());
+		var formData = mapper.toFormData(msg.toBuilder().metaData(metaData).build());
+		return updateHeader(formData);
+	}
+
+	FormData updateHeader(FormData formData) {
+		return formData.toBuilder().header(setVorgangNummer(formData.getHeader())).build();
+	}
+
+	FormHeader setVorgangNummer(FormHeader formHeader) {
+		return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).build();
 	}
 
 	public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
index 643602f8918e4082a2c71cc0cf6223a79945a596..d1fc3de86803ba5fc9c49a574011b41adf8e3be0 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
@@ -6,6 +6,7 @@ import static org.mockito.Mockito.*;
 
 import java.util.stream.Stream;
 
+import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -15,6 +16,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
+
 class XtaServiceTest {
 
 	private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER";
@@ -27,6 +31,8 @@ class XtaServiceTest {
 	private XtaRemoteService remoteService;
 	@Mock
 	private XtaMessageMapper mapper;
+	@Mock
+	private VorgangNummerSupplier vorgangNummerSupplier;
 
 	@Nested
 	class TestGetMessagesAsFormData {
@@ -49,6 +55,7 @@ class XtaServiceTest {
 
 		@Test
 		void shouldCallFilterByMessageType() {
+			when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create());
 			when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message);
 
 			service.getMessages().toList();
@@ -58,6 +65,7 @@ class XtaServiceTest {
 
 		@Test
 		void shouldCallGetFormData() {
+			when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create());
 			when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message);
 			doReturn(true).when(service).filterByMessageType(messageMetaData);
 
@@ -101,6 +109,8 @@ class XtaServiceTest {
 
 		@Captor
 		private ArgumentCaptor<XtaMessage> messageCaptor;
+		@Mock
+		private FormData formData;
 
 		@BeforeEach
 		void init() {
@@ -109,6 +119,8 @@ class XtaServiceTest {
 
 		@Test
 		void shouldCallRemoteService() {
+			doReturn(formData).when(service).updateHeader(any());
+
 			service.getFormData(XtaMessageMetaDataTestFactory.create());
 
 			verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID);
@@ -116,6 +128,8 @@ class XtaServiceTest {
 
 		@Test
 		void shouldCallMapper() {
+			doReturn(formData).when(service).updateHeader(any());
+
 			service.getFormData(XtaMessageMetaDataTestFactory.create());
 
 			verify(mapper).toFormData(any());
@@ -123,7 +137,9 @@ class XtaServiceTest {
 
 		@Test
 		void shouldHaveMetaData() {
+			doReturn(formData).when(service).updateHeader(any());
 			XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create();
+
 			service.getFormData(metaData);
 
 			verify(mapper).toFormData(messageCaptor.capture());
@@ -134,6 +150,7 @@ class XtaServiceTest {
 		void shouldReturnMappedResult() {
 			var mapped = FormDataTestFactory.create();
 			when(mapper.toFormData(any())).thenReturn(mapped);
+			doReturn(mapped).when(service).updateHeader(any());
 
 			var result = service.getFormData(XtaMessageMetaDataTestFactory.create());
 
@@ -141,6 +158,50 @@ class XtaServiceTest {
 		}
 	}
 
+	@Nested
+	class TestUpdateHeader {
+
+		@Test
+		void shouldCallSetVorgangNummer() {
+			var formData = FormDataTestFactory.create();
+
+			service.updateHeader(formData);
+
+			verify(service).setVorgangNummer(formData.getHeader());
+		}
+
+		@Test
+		void shouldSetUpdatedHeader() {
+			var updatedHeader = FormHeaderTestFactory.create();
+			doReturn(updatedHeader).when(service).setVorgangNummer(any());
+
+			var result = service.updateHeader(FormDataTestFactory.create());
+
+			Assertions.assertThat(result.getHeader()).isSameAs(updatedHeader);
+		}
+	}
+
+	@Nested
+	class TestSetVorgangNummer {
+
+		@Test
+		void shouldCallVorgangNummerSupplier() {
+			service.setVorgangNummer(FormHeaderTestFactory.create());
+
+			verify(vorgangNummerSupplier).get(XtaService.VORGANG_NUMMER_SUFFIX_LENGTH);
+		}
+
+		@Test
+		void shouldSetVorgangNummer() {
+			var vorgangNummer = "vorgang-1";
+			when(vorgangNummerSupplier.get(anyInt())).thenReturn(vorgangNummer);
+
+			var result = service.setVorgangNummer(FormHeaderTestFactory.create());
+
+			assertThat(result.getVorgangNummer()).isEqualTo(vorgangNummer);
+		}
+	}
+
 	@Nested
 	class TestAcknowledgeReceive {