diff --git a/src/main/java/de/ozgcloud/aggregation/AggregationManagerRunner.java b/src/main/java/de/ozgcloud/aggregation/AggregationManagerRunner.java
index 3629c317ecacf3a46c778bab7472af4c11fea46b..1d9fec5f0f6106859ce05eb3f48b2a692e5e4371 100644
--- a/src/main/java/de/ozgcloud/aggregation/AggregationManagerRunner.java
+++ b/src/main/java/de/ozgcloud/aggregation/AggregationManagerRunner.java
@@ -25,6 +25,7 @@ package de.ozgcloud.aggregation;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.function.Function;
 import java.util.function.IntFunction;
@@ -40,6 +41,7 @@ import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.aggregation.transformation.AggregationMapping.FormIdentifier;
 import de.ozgcloud.aggregation.transformation.Transformation;
 import de.ozgcloud.aggregation.transformation.TransformationException;
 import de.ozgcloud.aggregation.transformation.TransformationService;
@@ -48,6 +50,7 @@ import de.ozgcloud.aggregation.warehouse.DocumentEntry;
 import de.ozgcloud.aggregation.warehouse.WarehouseRepository;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgang;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery.FormIdentification;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub;
 import de.ozgcloud.apilib.vorgang.Page;
@@ -80,19 +83,19 @@ public class AggregationManagerRunner implements CommandLineRunner {
 		var identifier = transformationProperties.getIdentifier();
 		var aggregationMappings = transformationProperties.getAggregationMappings();
 		if (Objects.isNull(aggregationMappings) || aggregationMappings.isEmpty()) {
-			runWithTransformation(transformationService.load(identifier, null));
+			runWithTransformation(transformationService.load(identifier, null), null);
 		} else {
 			aggregationMappings.stream()
-					.map(aggregationMapping -> transformationService.load(identifier, aggregationMapping))
-					.forEach(this::runWithTransformation);
+					.forEach(aggregationMapping -> runWithTransformation(transformationService.load(identifier, aggregationMapping),
+							aggregationMapping.getFormIdentifier()));
 		}
 	}
 
-	void runWithTransformation(Transformation transformation) {
+	void runWithTransformation(Transformation transformation, FormIdentifier formIdentifier) {
 		try (Execution execution = new Execution(transformation)) {
 			ThreadContext.put(MDC_EXECUTION, execution.id.toString());
 			loadVorgaengeIntoRepository(Stream.concat(
-					extractBatchesOfVorgaengeFromDataSource(execution),
+					extractBatchesOfVorgaengeFromDataSource(execution, formIdentifier),
 					extractBatchesOfDeletedVorgaengeFromDataSource(execution)));
 		} finally {
 			ThreadContext.remove(MDC_EXECUTION);
@@ -103,18 +106,28 @@ public class AggregationManagerRunner implements CommandLineRunner {
 		batches.map(this::transformBatchToDocumentEntries).forEach(this::loadDocumentEntriesIntoRepository);
 	}
 
-	Stream<Batch> extractBatchesOfVorgaengeFromDataSource(Execution execution) {
-		return extractBatchesFromDataSource(execution, this::getVorgaengeFromDataSource);
+	Stream<Batch> extractBatchesOfVorgaengeFromDataSource(Execution execution, FormIdentifier formIdentifier) {
+		return extractBatchesFromDataSource(execution, page -> getVorgaengeFromDataSource(page, formIdentifier));
 	}
 
-	List<OzgCloudVorgang> getVorgaengeFromDataSource(Page page) {
-		return vorgangService.find(buildFindAllQuery(), page).stream()
+	List<OzgCloudVorgang> getVorgaengeFromDataSource(Page page, FormIdentifier formIdentifier) {
+		return vorgangService.find(buildFindByFormEngineQuery(formIdentifier), page).stream()
 				.map(vorgangStub -> vorgangService.getById(vorgangStub.getId()))
 				.toList();
 	}
 
-	OzgCloudVorgangQuery buildFindAllQuery() {
-		return OzgCloudVorgangQuery.builder().build();
+	OzgCloudVorgangQuery buildFindByFormEngineQuery(FormIdentifier formIdentifier) {
+		return OzgCloudVorgangQuery.builder()
+				.form(mapToFormIdentification(formIdentifier))
+				.build();
+	}
+
+	private Optional<FormIdentification> mapToFormIdentification(FormIdentifier formIdentifier) {
+		return Optional.ofNullable(formIdentifier)
+				.map(identifier -> FormIdentification.builder()
+						.formId(identifier.getFormId())
+						.formEngineName(identifier.getFormEngineName())
+						.build());
 	}
 
 	Stream<Batch> extractBatchesOfDeletedVorgaengeFromDataSource(Execution execution) {
diff --git a/src/test/java/de/ozgcloud/aggregation/AggregationManagerRunnerTest.java b/src/test/java/de/ozgcloud/aggregation/AggregationManagerRunnerTest.java
index b9e7f4c3aa06073458d6485d9281d0af9d427ca2..92d4198ba9e3c40faedf75c6dc5b51956f633a66 100644
--- a/src/test/java/de/ozgcloud/aggregation/AggregationManagerRunnerTest.java
+++ b/src/test/java/de/ozgcloud/aggregation/AggregationManagerRunnerTest.java
@@ -48,7 +48,9 @@ import com.thedeanda.lorem.LoremIpsum;
 import de.ozgcloud.aggregation.AggregationManagerRunner.Batch;
 import de.ozgcloud.aggregation.AggregationManagerRunner.Execution;
 import de.ozgcloud.aggregation.transformation.AggregationMapping;
+import de.ozgcloud.aggregation.transformation.AggregationMapping.FormIdentifier;
 import de.ozgcloud.aggregation.transformation.AggregationMappingTestFactory;
+import de.ozgcloud.aggregation.transformation.FormIdentifierTestFactory;
 import de.ozgcloud.aggregation.transformation.Transformation;
 import de.ozgcloud.aggregation.transformation.TransformationService;
 import de.ozgcloud.aggregation.transformation.VorgangMapper;
@@ -88,7 +90,7 @@ class AggregationManagerRunnerTest {
 		@BeforeEach
 		void mock() {
 			when(transformationProperties.getIdentifier()).thenReturn(identifier);
-			doNothing().when(runner).runWithTransformation(any());
+			doNothing().when(runner).runWithTransformation(any(), any());
 		}
 
 		@Test
@@ -132,8 +134,8 @@ class AggregationManagerRunnerTest {
 			void shouldRunWithTransformationForEachTransformation() {
 				runner.run();
 
-				verify(runner).runWithTransformation(firstTransformation);
-				verify(runner).runWithTransformation(secondTransformation);
+				verify(runner).runWithTransformation(firstTransformation, AggregationMappingTestFactory.FORM_IDENTIFIER);
+				verify(runner).runWithTransformation(secondTransformation, AggregationMappingTestFactory.FORM_IDENTIFIER);
 			}
 		}
 
@@ -159,7 +161,7 @@ class AggregationManagerRunnerTest {
 			void shouldCallRunWithTransformation() {
 				runner.run();
 
-				verify(runner).runWithTransformation(transformation);
+				verify(runner).runWithTransformation(transformation, null);
 			}
 		}
 
@@ -185,7 +187,7 @@ class AggregationManagerRunnerTest {
 			void shouldCallRunWithTransformation() {
 				runner.run();
 
-				verify(runner).runWithTransformation(transformation);
+				verify(runner).runWithTransformation(transformation, null);
 			}
 		}
 	}
@@ -196,6 +198,7 @@ class AggregationManagerRunnerTest {
 		@Mock
 		private Transformation transformation;
 		private final ArgumentMatcher<Execution> hasTransformation = execution -> execution.getTransformation().equals(transformation);
+		private final FormIdentifier formIdentifier = FormIdentifierTestFactory.create();
 		@Mock
 		private Batch batchOfVorgaenge;
 		@Mock
@@ -205,28 +208,28 @@ class AggregationManagerRunnerTest {
 
 		@BeforeEach
 		void init() {
-			doReturn(Stream.of(batchOfVorgaenge)).when(runner).extractBatchesOfVorgaengeFromDataSource(any());
+			doReturn(Stream.of(batchOfVorgaenge)).when(runner).extractBatchesOfVorgaengeFromDataSource(any(), any());
 			doReturn(Stream.of(batchOfDeletedVorgaenge)).when(runner).extractBatchesOfDeletedVorgaengeFromDataSource(any());
 			doNothing().when(runner).loadVorgaengeIntoRepository(any());
 		}
 
 		@Test
 		void shouldExtractBatchesOfVorgaengeFromDataSource() {
-			runner.runWithTransformation(transformation);
+			runner.runWithTransformation(transformation, formIdentifier);
 
-			verify(runner).extractBatchesOfVorgaengeFromDataSource(argThat(hasTransformation));
+			verify(runner).extractBatchesOfVorgaengeFromDataSource(argThat(hasTransformation), eq(formIdentifier));
 		}
 
 		@Test
 		void shouldExtractBatchesOfDeletedVorgaengeFromDataSource() {
-			runner.runWithTransformation(transformation);
+			runner.runWithTransformation(transformation, formIdentifier);
 
 			verify(runner).extractBatchesOfDeletedVorgaengeFromDataSource(argThat(hasTransformation));
 		}
 
 		@Test
 		void shouldLoadVorgaengeIntoRepository() {
-			runner.runWithTransformation(transformation);
+			runner.runWithTransformation(transformation, formIdentifier);
 
 			verify(runner).loadVorgaengeIntoRepository(batchStreamCaptor.capture());
 			assertThat(batchStreamCaptor.getValue()).containsExactly(batchOfVorgaenge, batchOfDeletedVorgaenge);
@@ -273,6 +276,7 @@ class AggregationManagerRunnerTest {
 	@Nested
 	class TestExtractBatchesOfVorgaengeFromDataSource {
 
+		private final FormIdentifier formIdentifier = FormIdentifierTestFactory.create();
 		@Mock
 		private Execution execution;
 		@Captor
@@ -289,23 +293,23 @@ class AggregationManagerRunnerTest {
 
 		@Test
 		void shouldExtract() {
-			runner.extractBatchesOfVorgaengeFromDataSource(execution);
+			runner.extractBatchesOfVorgaengeFromDataSource(execution, formIdentifier);
 
 			verify(runner).extractBatchesFromDataSource(eq(execution), any());
 		}
 
 		@Test
 		void shouldExtractWithDataRetrievalFunction() {
-			runner.extractBatchesOfVorgaengeFromDataSource(execution);
+			runner.extractBatchesOfVorgaengeFromDataSource(execution, formIdentifier);
 
 			verify(runner).extractBatchesFromDataSource(eq(execution), functionToRetrieveDataCaptor.capture());
 			functionToRetrieveDataCaptor.getValue().apply(page);
-			verify(runner).getVorgaengeFromDataSource(page);
+			verify(runner).getVorgaengeFromDataSource(page, formIdentifier);
 		}
 
 		@Test
 		void shouldReturnExtractedBatches() {
-			var extracted = runner.extractBatchesOfVorgaengeFromDataSource(execution);
+			var extracted = runner.extractBatchesOfVorgaengeFromDataSource(execution, formIdentifier);
 
 			assertThat(extracted).containsExactly(batch);
 		}
@@ -315,15 +319,23 @@ class AggregationManagerRunnerTest {
 	class TestGetVorgaengeFromDataSource {
 
 		private final Page page = Page.builder().offset(10).limit(2).build();
+		private final FormIdentifier formIdentifier = FormIdentifierTestFactory.create();
 		private final OzgCloudVorgangQuery query = OzgCloudVorgangQuery.builder().build();
 
 		@BeforeEach
 		void init() {
-			doReturn(query).when(runner).buildFindAllQuery();
+			doReturn(query).when(runner).buildFindByFormEngineQuery(any());
 			when(vorgangService.find(any(), any())).thenReturn(List.of(OzgCloudVorgangStubTestFactory.create()));
 			when(vorgangService.getById(any())).thenReturn(OzgCloudVorgangTestFactory.create());
 		}
 
+		@Test
+		void shouldCallBuildFindByFormEngineQuery() {
+			getVorgaengeFromDataSource();
+
+			verify(runner).buildFindByFormEngineQuery(formIdentifier);
+		}
+
 		@Test
 		void shouldCallVorgangService() {
 			getVorgaengeFromDataSource();
@@ -346,7 +358,40 @@ class AggregationManagerRunnerTest {
 		}
 
 		private List<OzgCloudVorgang> getVorgaengeFromDataSource() {
-			return runner.getVorgaengeFromDataSource(page);
+			return runner.getVorgaengeFromDataSource(page, formIdentifier);
+		}
+	}
+
+	@Nested
+	class TestBuildFindByFormEngineQuery {
+
+		@Nested
+		class TestOnFormIdentifierNull {
+			@Test
+			void shouldReturnFindAllQueryOnNullFormIdentifier() {
+				var query = runner.buildFindByFormEngineQuery(null);
+
+				assertThat(query).usingRecursiveComparison().isEqualTo(OzgCloudVorgangQuery.builder().build());
+			}
+		}
+
+		@Nested
+		class TestOnFormIdentifierNotNull {
+			private final FormIdentifier formIdentifier = FormIdentifierTestFactory.create();
+
+			@Test
+			void shouldSetFormIdInQuery() {
+				var query = runner.buildFindByFormEngineQuery(formIdentifier);
+
+				assertThat(query.getForm()).get().extracting("formId").isEqualTo(FormIdentifierTestFactory.FORM_ID);
+			}
+
+			@Test
+			void shouldSetFormEngineNameInQuery() {
+				var query = runner.buildFindByFormEngineQuery(formIdentifier);
+
+				assertThat(query.getForm()).get().extracting("formEngineName").isEqualTo(FormIdentifierTestFactory.FORM_ENGINE_NAME);
+			}
 		}
 	}
 
@@ -483,8 +528,7 @@ class AggregationManagerRunnerTest {
 
 			assertThat(batches).hasSize(2).usingRecursiveFieldByFieldElementComparator().containsExactly(
 					new Batch(execution, BATCH_1_UUID, Page.builder().offset(0).limit(BATCH_SIZE).build(), VORGAENGE_1),
-					new Batch(execution, BATCH_2_UUID, Page.builder().offset(BATCH_SIZE).limit(BATCH_SIZE).build(), VORGAENGE_2)
-			);
+					new Batch(execution, BATCH_2_UUID, Page.builder().offset(BATCH_SIZE).limit(BATCH_SIZE).build(), VORGAENGE_2));
 		}
 
 		private ArgumentMatcher<Page> hasExpectedOffsetAndConfiguredLimit(int expectedOffset) {