diff --git a/src/main/java/de/ozgcloud/formcycle/OzgCloudConfig.java b/src/main/java/de/ozgcloud/formcycle/OzgCloudConfig.java
index 46b4b349080f85bfe01f34df937d571d55811870..dd7006b729b1a0b3ddab9cc77a4eef1a46b9cee3 100644
--- a/src/main/java/de/ozgcloud/formcycle/OzgCloudConfig.java
+++ b/src/main/java/de/ozgcloud/formcycle/OzgCloudConfig.java
@@ -36,10 +36,7 @@ public class OzgCloudConfig implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	public static final String KEY_EINGANGSADAPTER_URL = "eingangsAdapterUrl";
-	public static final String KEY_PLUGIN_VERSION = "pluginVersion";
 
-	// TODO pluginVersion soll hier wieder raus und z.B. direkt in de.ozgcloud.formcycle.errorhandling.NodeThrewExceptionFactory eingebaut werden
-	private String pluginVersion;
 	private String eingangsAdapterUrl;
 	private ProxyConfig proxyConfig;
 
diff --git a/src/main/java/de/ozgcloud/formcycle/OzgCloudPlugin.java b/src/main/java/de/ozgcloud/formcycle/OzgCloudPlugin.java
index a86d2c20e0b105b8c6cc9cf348235dec517dfb66..a3879220107b3d48a4994f706afe339eb32fbe04 100644
--- a/src/main/java/de/ozgcloud/formcycle/OzgCloudPlugin.java
+++ b/src/main/java/de/ozgcloud/formcycle/OzgCloudPlugin.java
@@ -67,6 +67,7 @@ public final class OzgCloudPlugin
 		implements IPluginActionNodeHandler<OzgPluginWorkflowNodeProperties>, IKeyValueSummarizableNode<OzgPluginWorkflowNodeProperties> {
 
 	static final String VORGANGNUMMER_PROPERTY_KEY = "vorgangnummer";
+	public static final String KEY_PLUGIN_VERSION = "pluginVersion";
 
 	private final transient PortParser portParser = new PortParser();
 	private final transient BuildProperties buildProperties = new BuildProperties();
@@ -172,25 +173,16 @@ public final class OzgCloudPlugin
 	}
 
 	OzgCloudFormDataHttpClient createOzgCloudClient(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
-		return new OzgCloudFormDataHttpClient(buildOzgCloudConfig(params.getData()), new SystemPropertiesProvider(), portParser,
+		var ozgCloudConfig = buildOzgCloudConfig(params.getData());
+		validateOzgCloudConfig(ozgCloudConfig);
+		return new OzgCloudFormDataHttpClient(ozgCloudConfig, new SystemPropertiesProvider(), portParser,
 				new OzgCloudResponseHandler(new ObjectMapper()));
 	}
 
-	OzgCloudConfig buildOzgCloudConfig(OzgPluginWorkflowNodeProperties formProperties) {
-		var ozgCloudConfigBuilder = OzgCloudConfig.builder().pluginVersion(pluginVersion).eingangsAdapterUrl(getEingangsAdapterUrl(formProperties));
-		ozgPluginPropertiesSupplier.getProxyProperties().ifPresent(ozgCloudConfigBuilder::proxyConfig);
-		return ozgCloudConfigBuilder.build();
-	}
-
-	String getEingangsAdapterUrl(OzgPluginWorkflowNodeProperties formProperties) {
-		var eingangsAdapterUrl = formProperties.isUseCustomEingangsAdapterUrl()
-				? formProperties.getEingangsAdapterUrl()
-				: ozgPluginPropertiesSupplier.getEingangsAdapterUrl();
-
-		if (isBlank(eingangsAdapterUrl)) {
+	void validateOzgCloudConfig(OzgCloudConfig ozgCloudConfig) {
+		if (isBlank(ozgCloudConfig.getEingangsAdapterUrl())) {
 			throw new TechnicalException("Eingangsadapter URL cannot be blank");
 		}
-		return eingangsAdapterUrl;
 	}
 
 	PluginFormDataAdapter createFormDataAdapter(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
@@ -203,7 +195,19 @@ public final class OzgCloudPlugin
 	}
 
 	NodeThrewExceptionFactory createExceptionFactory(INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
-		return new NodeThrewExceptionFactory(params.throwingException(), buildOzgCloudConfig(params.getData()));
+		return new NodeThrewExceptionFactory(params.throwingException(), pluginVersion, buildOzgCloudConfig(params.getData()));
+	}
+
+	OzgCloudConfig buildOzgCloudConfig(OzgPluginWorkflowNodeProperties formProperties) {
+		var ozgCloudConfigBuilder = OzgCloudConfig.builder().eingangsAdapterUrl(getEingangsAdapterUrl(formProperties));
+		ozgPluginPropertiesSupplier.getProxyProperties().ifPresent(ozgCloudConfigBuilder::proxyConfig);
+		return ozgCloudConfigBuilder.build();
+	}
+
+	String getEingangsAdapterUrl(OzgPluginWorkflowNodeProperties formProperties) {
+		return formProperties.isUseCustomEingangsAdapterUrl()
+				? formProperties.getEingangsAdapterUrl()
+				: ozgPluginPropertiesSupplier.getEingangsAdapterUrl();
 	}
 
 	INormalCompletionResult buildSuccessResult(ExecutionResult pluginExecutionResult, INodeExecutionParams<OzgPluginWorkflowNodeProperties> params) {
diff --git a/src/main/java/de/ozgcloud/formcycle/errorhandling/NodeThrewExceptionFactory.java b/src/main/java/de/ozgcloud/formcycle/errorhandling/NodeThrewExceptionFactory.java
index 8520f4ad53dc939d23c24eb178a7f327290d8f23..2599b5329ddc4c3786d1a113c5f37f00cdeb6c90 100644
--- a/src/main/java/de/ozgcloud/formcycle/errorhandling/NodeThrewExceptionFactory.java
+++ b/src/main/java/de/ozgcloud/formcycle/errorhandling/NodeThrewExceptionFactory.java
@@ -9,6 +9,7 @@ import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 
 import de.ozgcloud.formcycle.OzgCloudConfig;
+import de.ozgcloud.formcycle.OzgCloudPlugin;
 import de.xima.fc.exceptions.NodeThrewException;
 import de.xima.fc.interfaces.workflow.params.INodeThrewExceptionBuilder;
 import lombok.RequiredArgsConstructor;
@@ -19,6 +20,7 @@ public class NodeThrewExceptionFactory {
 	public static final String KEY_EXCEPTION_ID = "exceptionId";
 
 	private final INodeThrewExceptionBuilder exceptionBuilder;
+	private final String pluginVersion;
 	private final OzgCloudConfig pluginConfig;
 
 	public NodeThrewException createInternalException(TechnicalException e) {
@@ -48,10 +50,12 @@ public class NodeThrewExceptionFactory {
 	String formatWithPluginConfig(String message) {
 		var builder = StringUtils.isBlank(message) ? new StringBuilder("An error happened.") : new StringBuilder(message);
 		builder.append("\nPlugin configuration:")
-				.append("\n\t").append(OzgCloudConfig.KEY_PLUGIN_VERSION).append(": ").append(pluginConfig.getPluginVersion())
-				.append("\n\t").append(OzgCloudConfig.KEY_EINGANGSADAPTER_URL).append(": ").append(pluginConfig.getEingangsAdapterUrl());
-		if (nonNull(pluginConfig.getProxyConfig())) {
-			builder.append("\n\t").append(pluginConfig.getProxyConfig());
+				.append("\n\t").append(OzgCloudPlugin.KEY_PLUGIN_VERSION).append(": ").append(pluginVersion);
+		if (nonNull(pluginConfig)) {
+			builder.append("\n\t").append(OzgCloudConfig.KEY_EINGANGSADAPTER_URL).append(": ").append(pluginConfig.getEingangsAdapterUrl());
+			if (nonNull(pluginConfig.getProxyConfig())) {
+				builder.append("\n\t").append(pluginConfig.getProxyConfig());
+			}
 		}
 		return builder.toString();
 	}
diff --git a/src/test/java/de/ozgcloud/formcycle/OzgCloudPluginTest.java b/src/test/java/de/ozgcloud/formcycle/OzgCloudPluginTest.java
index 797c06829a248cc3eeaf47e379f1bf42308057a3..736fff9d29af66efc07b69a3ea520b2c272bb6ff 100644
--- a/src/test/java/de/ozgcloud/formcycle/OzgCloudPluginTest.java
+++ b/src/test/java/de/ozgcloud/formcycle/OzgCloudPluginTest.java
@@ -76,107 +76,118 @@ class OzgCloudPluginTest {
 	}
 
 	@Nested
-	class TestCreateOzgClient {
+	class TestCreateOzgCloudClient {
 
 		@Mock
 		private OzgPluginWorkflowNodeProperties formProperties;
 		@Mock
-		private NodeThrewExceptionFactory exceptionFactory;
+		private OzgCloudConfig ozgCloudConfig;
+
+		@BeforeEach
+		void init() {
+			doNothing().when(plugin).validateOzgCloudConfig(any());
+		}
 
 		@Test
-		@SneakyThrows
 		void shouldCallBuildOzgCloudConfig() {
 			when(invocationParameters.getData()).thenReturn(formProperties);
-			doReturn("").when(plugin).getEingangsAdapterUrl(any());
 
 			plugin.createOzgCloudClient(invocationParameters);
 
 			verify(plugin).buildOzgCloudConfig(formProperties);
 		}
 
-		@Nested
-		class TestEingangsAdapterUrl {
+		@Test
+		void shouldCallValidateOzgCloudConfig() {
+			doReturn(ozgCloudConfig).when(plugin).buildOzgCloudConfig(any());
 
-			private static final String CUSTOM_URL = "http://custom.url";
+			plugin.createOzgCloudClient(invocationParameters);
 
-			@Test
-			void shouldReturnCustomUrl() {
-				when(formProperties.getEingangsAdapterUrl()).thenReturn(CUSTOM_URL);
-				when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(true);
+			verify(plugin).validateOzgCloudConfig(ozgCloudConfig);
+		}
 
-				var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
+	}
 
-				assertThat(eingangsAdapterUrl).isEqualTo(CUSTOM_URL);
-			}
+	@Nested
+	class TestValidateOzgCloudConfig {
 
-			@Test
-			void shouldReturnDefaultUrl() {
-				when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
-				when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
+		@Test
+		void shouldValidateEingangsAdapterUrl() {
+			var ozgCloudConfig = OzgCloudConfigTestFactory.create();
 
-				var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
+			assertDoesNotThrow(() -> plugin.validateOzgCloudConfig(ozgCloudConfig));
+		}
 
-				assertThat(eingangsAdapterUrl).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
-			}
+		@Test
+		void shouldThrowExceptionWhenMissingEngangsadapterUrl() {
+			var ozgCloudConfig = OzgCloudConfig.builder().build();
 
-			@Test
-			void shouldThrowExceptionIfNoUrl() {
-				when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
+			assertThrows(TechnicalException.class, () -> plugin.validateOzgCloudConfig(ozgCloudConfig));
+		}
 
-				assertThrows(TechnicalException.class, () -> plugin.getEingangsAdapterUrl(formProperties));
-			}
+	}
+
+	@Nested
+	class TestBuildOzgClientConfig {
+
+		@Mock
+		private OzgPluginWorkflowNodeProperties formProperties;
+
+		@BeforeEach
+		void init() {
+			when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
 		}
 
-		@Nested
-		class TestBuildOzgClientConfig {
+		@Test
+		void shouldSetEingangsAdapterUrl() {
+			var ozgClientConfig = buildOzgCloudConfig();
 
-			@Mock
-			private Properties properties;
+			assertThat(ozgClientConfig.getEingangsAdapterUrl()).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
+		}
 
-			@BeforeEach
-			void init() {
-				when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
-			}
+		@SneakyThrows
+		@Test
+		void shouldSetProxyConfig() {
+			var expectedProxyConfig = ProxyConfigTestFactory.create();
+			when(propertiesMapper.getProxyProperties()).thenReturn(Optional.of(expectedProxyConfig));
 
-			@Test
-			void shouldSetPluginVersion() {
-				var pluginVersion = "version";
-				setPluginVersion(pluginVersion);
+			var ozgClientConfig = buildOzgCloudConfig();
 
-				var ozgClientConfig = buildOzgCloudConfig();
+			assertThat(ozgClientConfig.getProxyConfig()).isEqualTo(expectedProxyConfig);
+		}
 
-				assertThat(ozgClientConfig.getPluginVersion()).isEqualTo(pluginVersion);
-			}
+		@SneakyThrows
+		private OzgCloudConfig buildOzgCloudConfig() {
+			return plugin.buildOzgCloudConfig(formProperties);
+		}
+	}
 
-			@Test
-			void shouldSetEingangsAdapterUrl() {
-				var ozgClientConfig = buildOzgCloudConfig();
+	@Nested
+	class TestGetEingangsAdapterUrl {
 
-				assertThat(ozgClientConfig.getEingangsAdapterUrl()).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
-			}
+		private static final String CUSTOM_URL = "http://custom.url";
 
-			@SneakyThrows
-			@Test
-			void shouldSetProxyConfig() {
-				var expectedProxyConfig = ProxyConfigTestFactory.create();
-				when(propertiesMapper.getProxyProperties()).thenReturn(Optional.of(expectedProxyConfig));
+		@Mock
+		private OzgPluginWorkflowNodeProperties formProperties;
+
+		@Test
+		void shouldReturnCustomUrl() {
+			when(formProperties.getEingangsAdapterUrl()).thenReturn(CUSTOM_URL);
+			when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(true);
 
-				var ozgClientConfig = buildOzgCloudConfig();
+			var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
 
-				assertThat(ozgClientConfig.getProxyConfig()).isEqualTo(expectedProxyConfig);
-			}
+			assertThat(eingangsAdapterUrl).isEqualTo(CUSTOM_URL);
+		}
 
-			@SneakyThrows
-			private OzgCloudConfig buildOzgCloudConfig() {
-				return plugin.buildOzgCloudConfig(formProperties);
-			}
+		@Test
+		void shouldReturnDefaultUrl() {
+			when(formProperties.isUseCustomEingangsAdapterUrl()).thenReturn(false);
+			when(propertiesMapper.getEingangsAdapterUrl()).thenReturn(PropertiesTestFactory.EINGANGSADAPTER_URL);
 
-			@SneakyThrows
-			private void setPluginVersion(String pluginVersion) {
-				var pluginVersionField = OzgCloudPlugin.class.getDeclaredField("pluginVersion");
-				pluginVersionField.setAccessible(true);
-				pluginVersionField.set(plugin, pluginVersion);
-			}
+			var eingangsAdapterUrl = plugin.getEingangsAdapterUrl(formProperties);
+
+			assertThat(eingangsAdapterUrl).isEqualTo(PropertiesTestFactory.EINGANGSADAPTER_URL);
 		}
 	}