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..c6f0add9f68709045ae14f8b1aaca13409ecc3ca
--- /dev/null
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/itvsh/kop/eingang/formcycle/VorgangNummerSupplier.java
@@ -0,0 +1,29 @@
+package de.itvsh.kop.eingang.formcycle;
+
+import java.time.Instant;
+import java.time.LocalDate;
+
+public class VorgangNummerSupplier {
+
+	static final String BASE30_ALPHABET = "23456789ABCDEFGHJKMNPQRSTVWXYZ";
+	static final int SUFFIX_LENGTH = 6;
+
+	public String get() {
+		var resultBuilder = addPrefix(new StringBuilder());
+		long currentTimeSeconds = Instant.now().getEpochSecond();
+		for (int i = 0; i < SUFFIX_LENGTH; i++) {
+			resultBuilder.append(BASE30_ALPHABET.charAt((int) currentTimeSeconds % 30));
+			currentTimeSeconds /= 30;
+		}
+		return resultBuilder.toString();
+	}
+
+	StringBuilder addPrefix(StringBuilder resultBuilder) {
+		var today = LocalDate.now();
+		var lastYearNumber = today.getYear() % 10;
+		var monthValue = "%02d".formatted(today.getMonthValue());
+		var dayValue = "%02d".formatted(today.getDayOfMonth());
+		return resultBuilder.append(lastYearNumber).append(monthValue).append(dayValue).append("-");
+	}
+
+}
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..81e9b46af09296449e0b79a6b1a52f5b7c3a94ed
--- /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).addPrefix(any());
+		}
+
+		@Test
+		@DisplayName("should add random suffix of length 6")
+		void shouldAddSuffix() {
+			doReturn(new StringBuilder()).when(vorgangNummerSupplier).addPrefix(any());
+
+			var result = vorgangNummerSupplier.get();
+
+			assertThat(result).hasSize(6);
+		}
+	}
+
+	@Nested
+	class TestAddPrefix{
+
+		@Test
+		void shouldHaveSize(){
+			var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
+
+			assertThat(resultBuilder).hasSize(6);
+		}
+		@Test
+		void shouldAddLastYearNumberFirst(){
+			var lastYearNumber = "" + LocalDate.now().getYear() % 10;
+
+			var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
+
+			assertThat(resultBuilder.substring(0,1)).isEqualTo(lastYearNumber);
+		}
+
+		@Test
+		void shouldAddMonthValueSecond(){
+			var monthValue = "%02d".formatted(LocalDate.now().getMonthValue());
+
+			var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
+
+			assertThat(resultBuilder.substring(1, 3)).isEqualTo(monthValue);
+		}
+
+		@Test
+		void shouldAddDayValueThird(){
+			var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth());
+
+			var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
+
+			assertThat(resultBuilder.substring(3, 5)).isEqualTo(dayValue);
+		}
+
+		@Test
+		void shouldAddHyphenAtEnd(){
+			var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
+
+			assertThat(resultBuilder.charAt(5)).isEqualTo('-');
+		}
+	}
+
+}
\ No newline at end of file