diff --git a/pom.xml b/pom.xml
index 83ac3790f8fe729a395987303ec8b7403faec641..25296a021777ebce52966784a7d321190db7631e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -181,7 +181,7 @@
 							<goal>single</goal>
 						</goals>
 						<configuration>
-							<finalName>${project.artifactId}</finalName>
+							<finalName>${project.artifactId}-${project.version}</finalName>
 							<descriptorRefs>
 								<descriptorRef>jar-with-dependencies</descriptorRef>
 							</descriptorRefs>
diff --git a/src/main/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapper.java b/src/main/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapper.java
index 59d4cc78689f81ebf980ce93272d2b962b22dbc8..136db664a3b30887b36495e588f14e9b176d5fef 100644
--- a/src/main/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapper.java
+++ b/src/main/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapper.java
@@ -47,12 +47,12 @@ public class OzgCloudFormDataMapper {
 	static final String SERVICEKONTO_VERSION = "1";
 
 	public FormCycleFormData map(FormData formData) {
-		return FormCycleFormData.newBuilder()
+		var formcycleFormDataBuilder = FormCycleFormData.newBuilder()
 				.setHeader(buildHeader(formData))
-				.setServiceKonto(buildServiceKonto(formData))
 				.setFormData(mapToGrpcFormData(formData))
-				.addAttachmentGroup(mapToAttachmentGroup(formData))
-				.build();
+				.addAttachmentGroup(mapToAttachmentGroup(formData));
+		formData.getPostkorbId().map(postkorbId -> buildServiceKonto(formData)).ifPresent(formcycleFormDataBuilder::setServiceKonto);
+		return formcycleFormDataBuilder.build();
 	}
 
 	FormCycleAttachmentGroup mapToAttachmentGroup(FormData formData) {
diff --git a/src/main/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapter.java b/src/main/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapter.java
index 10b623b9bb9c64476be6312ab6d7c6660f7c7b08..0979658ab94dd64fbb50ab8c7d7b00d5a9b84b97 100644
--- a/src/main/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapter.java
+++ b/src/main/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapter.java
@@ -23,6 +23,7 @@
 package de.ozgcloud.formcycle.formdata;
 
 import static java.util.Objects.*;
+import static org.apache.commons.lang3.StringUtils.*;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -33,7 +34,9 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Predicate;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import de.xima.fc.interfaces.form.IFormDataAdapter;
 import de.xima.fc.interfaces.workflow.execution.IWorkflowExecutionEnvironmentData;
@@ -43,6 +46,8 @@ import lombok.RequiredArgsConstructor;
 
 @RequiredArgsConstructor
 public class PluginFormDataAdapter {
+
+	private static final Pattern FORMCYCLE_PLACEHOLDER = Pattern.compile("^\\[%\\s*\\$.+%]$");
 	private static final boolean AS_FIELD_NAME = false;
 	private static final String TEXT_KEY = "text";
 	static final String POSTKORB_FORM_KEY = "PostboxId";
@@ -137,7 +142,15 @@ public class PluginFormDataAdapter {
 
 	Optional<String> getPostkorbId() {
 		return Optional.ofNullable(getFormDataAdapter().getFieldValues(POSTKORB_FORM_KEY))
-				.flatMap(list -> list.stream().flatMap(Arrays::stream).findFirst());
+				.flatMap(this::extractPostkorbId);
+	}
+
+	Optional<String> extractPostkorbId(List<String[]> values) {
+		return values.stream().flatMap(Stream::of).filter(this::isValidPostkorbId).findFirst();
+	}
+
+	boolean isValidPostkorbId(String postkorbId) {
+		return isNotBlank(postkorbId) && !FORMCYCLE_PLACEHOLDER.matcher(postkorbId).matches();
 	}
 
 	private String getFormName() {
diff --git a/src/test/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapperTest.java b/src/test/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapperTest.java
index a46de1298d238e3ff98fcb75b3f9963301d7bc22..90df659e18d28bf42d18b734be73c6fbff5ff927 100644
--- a/src/test/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapperTest.java
+++ b/src/test/java/de/ozgcloud/formcycle/formdata/OzgCloudFormDataMapperTest.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.*;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -274,6 +275,16 @@ class OzgCloudFormDataMapperTest {
 			assertThat(ozgFormData.getServiceKonto()).isEqualTo(serviceKonto);
 		}
 
+		@Test
+		@DisplayName("should not set service konto if postkorbId not set")
+		void shouldNotSetServiceKonto() {
+			var formDate = FormDataTestFactory.createBuilder().postkorbId(Optional.empty()).build();
+
+			var ozgFormData = mapper.map(formDate);
+
+			assertThat(ozgFormData.getServiceKonto()).isEqualTo(FormCycleServiceKonto.getDefaultInstance());
+		}
+
 		@Test
 		void shouldSetAttachments() {
 			FormCycleAttachmentGroup attachmentGroup = mock(FormCycleAttachmentGroup.class);
@@ -345,6 +356,7 @@ class OzgCloudFormDataMapperTest {
 	class TestServiceKonto {
 
 		private final FormData formData = FormDataTestFactory.create();
+
 		@Test
 		void shouldSetServiceKontoType() {
 			var serviceKonto = mapper.buildServiceKonto(formData);
diff --git a/src/test/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapterTest.java b/src/test/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapterTest.java
index 44a3971df4b968dd257b63a43f896006a1bf4f33..678cae727d42f8bcd165d06fb846a23c6fca4d16 100644
--- a/src/test/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapterTest.java
+++ b/src/test/java/de/ozgcloud/formcycle/formdata/PluginFormDataAdapterTest.java
@@ -42,6 +42,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullSource;
+import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
@@ -440,6 +443,21 @@ class PluginFormDataAdapterTest {
 
 			assertThat(postkorbId).isEmpty();
 		}
+
+	}
+
+	@Nested
+	class TestPostkorbIdValidation {
+
+		@DisplayName("should return FALSE when")
+		@ParameterizedTest(name = "postkorbId is \"{0}\"")
+		@NullSource
+		@ValueSource(strings = {"", "[%$id%]", "[% $id%]", "[%$id %]", "[% $id %]"})
+		void shouldFilterOutEmptyValues(String postkorbId) {
+			var isValid = adapter.isValidPostkorbId(postkorbId);
+
+			assertThat(isValid).isFalse();
+		}
 	}
 
 	@Nested