diff --git a/pom.xml b/pom.xml
index ca9687bf4b8063400fd666cd0b2eb04f735e8ca1..8f012b9b151a38ebe31d966f226e2b52d0f4f524 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.5.0</version>
+		<version>4.7.0</version>
 	</parent>
 
 	<groupId>de.ozgcloud.processor</groupId>
@@ -48,6 +48,7 @@
 		<tyrus-standalone-client.version>2.2.0</tyrus-standalone-client.version>
 		<okio.version>3.9.1</okio.version>
 	</properties>
+	
 	<dependencies>
 		<!-- OZG-Cloud -->
 		<dependency>
@@ -124,7 +125,6 @@
 		<dependency>
 			<groupId>io.grpc</groupId>
 			<artifactId>grpc-inprocess</artifactId>
-			<version>1.65.0</version>
 			<scope>test</scope>
 		</dependency>
 
diff --git a/src/main/java/de/ozgcloud/processor/processor/LogRunner.java b/src/main/java/de/ozgcloud/processor/processor/LogRunner.java
new file mode 100644
index 0000000000000000000000000000000000000000..d93978c475d9f4cc3dc0d5b16a150892b1c3943b
--- /dev/null
+++ b/src/main/java/de/ozgcloud/processor/processor/LogRunner.java
@@ -0,0 +1,23 @@
+package de.ozgcloud.processor.processor;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+@Component
+@RequiredArgsConstructor
+class ProcessorLogRunner implements ApplicationListener<ContextRefreshedEvent> {
+
+	private final ProcessorProperties properties;
+
+	@Override
+	public void onApplicationEvent(ContextRefreshedEvent event) {
+		LOG.info("Processors configured: " + properties);
+
+	}
+
+}
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
index e7706c445d815047256d6dd5deda5848c6f8d9fb..51fe4ae61b818c4320bf1aa144647dd000795ec8 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
@@ -55,6 +55,7 @@ class ProcessorProperties {
 	@Singular
 	private List<Processor> processors;
 
+	@ToString
 	@Getter
 	@Setter
 	@Builder
@@ -82,6 +83,7 @@ class ProcessorProperties {
 		private String address;
 	}
 
+	@ToString
 	@Getter
 	@Setter
 	@Builder
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
index 15dcb0253134f16dd3fc214e466feabd96435ef2..ff4d2230dfaf2883bf85450f2c0ea065ad20e4a6 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
@@ -26,6 +26,7 @@ package de.ozgcloud.processor.processor;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
@@ -78,7 +79,14 @@ public class ProcessorService {
 	}
 
 	public Stream<Mono<ProcessorResult>> processVorgang(Vorgang vorgang, Collection<String> processorNames) {
-		return getProcessors(processorNames).map(processor -> callProcessor(processor, vorgang));
+		return getProcessors(processorNames)
+				.filter(processor -> containsMatchingForm(vorgang, processor.getForms()))
+				.map(processor -> callProcessor(processor, vorgang));
+	}
+
+	private boolean containsMatchingForm(Vorgang vorgang, Set<Form> forms) {
+		return forms.stream().anyMatch(form -> StringUtils.equals(vorgang.getFormEngineName(), form.getFormEngineName())
+				&& StringUtils.equals(vorgang.getFormId(), form.getFormId()));
 	}
 
 	Stream<Processor> getProcessors(Collection<String> processorNames) {
diff --git a/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java b/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java
index 9d3c8772b52e9fd5309bc6e376412d04441a45fb..5634470d8e0879f822d392c07c65bcd0b913ba86 100644
--- a/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java
+++ b/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java
@@ -23,7 +23,6 @@
  */
 package de.ozgcloud.processor.vorgang;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty.Access;
 
@@ -39,9 +38,9 @@ public class Vorgang {
 	private long version;
 	private String vorgangName;
 	private String vorgangNummer;
-	private String formId;
-	@JsonIgnore
+
 	private String formEngineName;
+	private String formId;
 
 	private Eingang eingang;
 
diff --git a/src/test/java/de/ozgcloud/processor/processor/ProcessorServiceTest.java b/src/test/java/de/ozgcloud/processor/processor/ProcessorServiceTest.java
index 1b77a7729e7cdd16a1f51a73149738f72607c647..c9a87204347c1039119adde275cd3508af8a3d8d 100644
--- a/src/test/java/de/ozgcloud/processor/processor/ProcessorServiceTest.java
+++ b/src/test/java/de/ozgcloud/processor/processor/ProcessorServiceTest.java
@@ -98,77 +98,95 @@ class ProcessorServiceTest {
 			}
 		}
 	}
-	
+
 	@DisplayName("Process vorgang by given processorNames")
 	@Nested
 	class TestProcessVorgangByGivenProcessorNames {
-		
+
 		private final Vorgang vorgang = VorgangTestFactory.create();
 		private final Collection<String> processorNames = Collections.singleton(ProcessorTestFactory.PROCESSOR_NAME);
 		private final Processor processor = ProcessorTestFactory.create();
 		private final Mono<ProcessorResult> processorMonoResponse = Mono.just(ProcessorResultTestFactory.create());
-		
+
 		@Test
 		void shouldGetProcessorByNames() {
 			doReturn(Stream.of(processor)).when(service).getProcessors(anyCollection());
-			
+
 			service.processVorgang(vorgang, processorNames);
-			
+
 			verify(service).getProcessors(processorNames);
 		}
-		
+
 		@Test
 		void shouldCallProcessor() {
 			doReturn(processorMonoResponse).when(service).callProcessor(any(), any());
 			doReturn(Stream.of(processor)).when(service).getProcessors(anyCollection());
-			
+
 			service.processVorgang(vorgang, processorNames).toList();
-			
+
 			verify(service).callProcessor(any(), any());
 		}
-		
+
+		@Test
+		void shouldNotCallProcessorForWrongFormEngine() {
+			doReturn(Stream.of(processor)).when(service).getProcessors(anyCollection());
+
+			service.processVorgang(VorgangTestFactory.createBuilder().formEngineName("wrong").build(), processorNames).toList();
+
+			verify(service, never()).callProcessor(any(), any());
+		}
+
+		@Test
+		void shouldNotCallProcessorForWrongFormId() {
+			doReturn(Stream.of(processor)).when(service).getProcessors(anyCollection());
+
+			service.processVorgang(VorgangTestFactory.createBuilder().formId("wrong").build(), processorNames).toList();
+
+			verify(service, never()).callProcessor(any(), any());
+		}
+
 		@Test
 		void shouldReturnProcessorResult() {
 			doReturn(processorMonoResponse).when(service).callProcessor(any(), any());
 			doReturn(Stream.of(processor)).when(service).getProcessors(anyCollection());
-			
+
 			var result = service.processVorgang(vorgang, processorNames).toList();
-			
+
 			assertThat(result).containsExactly(processorMonoResponse);
 		}
-		
+
 		@DisplayName("get processors")
 		@Nested
 		class TestGetProcessors {
-			
+
 			private final Processor processor = ProcessorTestFactory.create();
-			
+
 			@Test
 			void shouldGetConfiguredProcessor() {
 				when(properties.getProcessors()).thenReturn(List.of(processor));
-				
+
 				service.getProcessors(processorNames);
-				
+
 				verify(properties).getProcessors();
 			}
-			
+
 			@DisplayName("should return processors matching processor name")
 			@Test
 			void shouldReturnProcessor() {
 				when(properties.getProcessors()).thenReturn(List.of(processor));
-				
+
 				var processorResult = service.getProcessors(processorNames).toList();
-				
+
 				assertThat(processorResult).containsExactly(processor);
 			}
-			
+
 			@DisplayName("should return empty stream on non matching processor name")
 			@Test
 			void shouldReturnEmpty() {
 				when(properties.getProcessors()).thenReturn(List.of(ProcessorTestFactory.createBuilder().name("notMatchin").build()));
-				
+
 				var processorResult = service.getProcessors(processorNames).toList();
-				
+
 				assertThat(processorResult).isEmpty();
 			}
 		}