diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/FormDataController.java
index 1f12b52ffe4efc2b1f4731ff88181b2968759f32..9c414c51988a8b588367420fc17e0b386a45f06d 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/FormDataController.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/FormDataController.java
@@ -65,6 +65,7 @@ class FormDataController {
 
 	private final FormCycleFormDataMapper mapper;
 	private final SemantikAdapter semantikAdapter;
+	private final VorgangNummerSupplier vorgangNummerSupplier;
 
 	@PostMapping(consumes = "multipart/form-data", produces = "application/protobuf")
 	public FormCycleConfirmationResponse receiveFormData(@RequestPart FormCycleFormData formData,
@@ -78,7 +79,7 @@ class FormDataController {
 
 		semantikAdapter.processFormData(mappedFormData);
 
-		return FormCycleConfirmationResponse.newBuilder().setVorgangNummer("TODO FILL ME").build();
+		return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(vorgangNummerSupplier.get()).build();
 	}
 
 	private FormData addRepresentations(Optional<Collection<MultipartFile>> files, FormData mappedFormData) {
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplier.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplier.java
new file mode 100644
index 0000000000000000000000000000000000000000..cebe8c74bb4d6fe3fa94035b24eb5caf0818c57d
--- /dev/null
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplier.java
@@ -0,0 +1,32 @@
+package de.itvsh.kop.eingang.formcycle;
+
+import java.time.Instant;
+import java.time.LocalDate;
+
+import org.springframework.stereotype.Component;
+
+@Component
+class VorgangNummerSupplier {
+
+	static final String BASE30_ALPHABET = "23456789ABCDEFGHJKMNPQRSTVWXYZ";
+	static final int SUFFIX_LENGTH = 6;
+
+	public String get() {
+		var resultBuilder = initWithPrefix();
+		long currentTimeSeconds = Instant.now().toEpochMilli();
+		for (int i = 0; i < SUFFIX_LENGTH; i++) {
+			resultBuilder.append(BASE30_ALPHABET.charAt((int) currentTimeSeconds % 30));
+			currentTimeSeconds /= 30;
+		}
+		return resultBuilder.toString();
+	}
+
+	StringBuilder initWithPrefix() {
+		var today = LocalDate.now();
+		var lastYearNumber = today.getYear() % 10;
+		var monthValue = "%02d".formatted(today.getMonthValue());
+		var dayValue = "%02d".formatted(today.getDayOfMonth());
+		return new StringBuilder().append(lastYearNumber).append(monthValue).append(dayValue).append("-");
+	}
+
+}
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/FormDataControllerTest.java
index d5bb079c7c955bc8601e83cd5bb074fe901e511b..9731385a03eb028748073092e9700af87d0f06a3 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/FormDataControllerTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/FormDataControllerTest.java
@@ -68,6 +68,8 @@ class FormDataControllerTest {
 	private FormCycleFormDataMapper mapper;
 	@Mock
 	private SemantikAdapter semantikAdapter;
+	@Mock
+	private VorgangNummerSupplier vorgangNummerSupplier;
 
 	private MockMvc mockMvc;
 
@@ -81,6 +83,8 @@ class FormDataControllerTest {
 	@Nested
 	class ReceiveFormData {
 
+		static final String VORGANG_NUMMER = "VorgangNummer";
+
 		private FormData mappedFormData = FormDataTestFactory.create();
 
 		@Captor
@@ -89,6 +93,7 @@ class FormDataControllerTest {
 		@BeforeEach
 		void init() {
 			when(mapper.toFormData(any())).thenReturn(mappedFormData);
+			when(vorgangNummerSupplier.get()).thenReturn(VORGANG_NUMMER);
 		}
 
 		@Test
@@ -96,13 +101,22 @@ class FormDataControllerTest {
 			doPostRequest().andExpect(status().is2xxSuccessful());
 		}
 
+
+		@Test
+		void shouldCallVorgangNummerSupplier() {
+			doPostRequest();
+
+			verify(vorgangNummerSupplier).get();
+		}
+
 		@Test
 		@SneakyThrows
 		void shouldRespondeWithVorgangNummer() {
+
 			var confirmation = FormCycleConfirmationResponse.parseFrom(
 					doPostRequest().andReturn().getResponse().getContentAsByteArray());
 
-			assertThat(confirmation.getVorgangNummer()).isEqualTo("TODO FILL ME");
+			assertThat(confirmation.getVorgangNummer()).isEqualTo(VORGANG_NUMMER);
 		}
 
 		@Test
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplierTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplierTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..42a7be6008e89a9b316a933cf5dcaac7c78ab229
--- /dev/null
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplierTest.java
@@ -0,0 +1,84 @@
+package de.itvsh.kop.eingang.formcycle;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import java.time.LocalDate;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.Spy;
+
+class VorgangNummerSupplierTest {
+
+	@Spy
+	private VorgangNummerSupplier vorgangNummerSupplier = new VorgangNummerSupplier();
+
+	@Nested
+	@DisplayName("Get Vorgang Nummer")
+	class TestGetVorgangNummer {
+
+		@Test
+		void shouldCallAddPrefix() {
+			vorgangNummerSupplier.get();
+
+			verify(vorgangNummerSupplier).initWithPrefix();
+		}
+
+		@Test
+		@DisplayName("should add random suffix of length 6")
+		void shouldAddSuffix() {
+			doReturn(new StringBuilder()).when(vorgangNummerSupplier).initWithPrefix();
+
+			var result = vorgangNummerSupplier.get();
+
+			assertThat(result).hasSize(6);
+		}
+	}
+
+	@Nested
+	class TestAddPrefix{
+
+		@Test
+		void shouldHaveSize(){
+			var resultBuilder = vorgangNummerSupplier.initWithPrefix();
+
+			assertThat(resultBuilder).hasSize(6);
+		}
+		@Test
+		void shouldAddLastYearNumberFirst(){
+			var lastYearNumber = "" + LocalDate.now().getYear() % 10;
+
+			var resultBuilder = vorgangNummerSupplier.initWithPrefix();
+
+			assertThat(resultBuilder.substring(0,1)).isEqualTo(lastYearNumber);
+		}
+
+		@Test
+		void shouldAddMonthValueSecond(){
+			var monthValue = "%02d".formatted(LocalDate.now().getMonthValue());
+
+			var resultBuilder = vorgangNummerSupplier.initWithPrefix();
+
+			assertThat(resultBuilder.substring(1, 3)).isEqualTo(monthValue);
+		}
+
+		@Test
+		void shouldAddDayValueThird(){
+			var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth());
+
+			var resultBuilder = vorgangNummerSupplier.initWithPrefix();
+
+			assertThat(resultBuilder.substring(3, 5)).isEqualTo(dayValue);
+		}
+
+		@Test
+		void shouldAddHyphenAtEnd(){
+			var resultBuilder = vorgangNummerSupplier.initWithPrefix();
+
+			assertThat(resultBuilder.charAt(5)).isEqualTo('-');
+		}
+	}
+
+}
\ No newline at end of file