diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoader.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoader.java
index 0bd3bd6174d9ea7f450a4c2b933cfdc16f60af6e..454b0adc0c7f1e84cf9633d8f15e453ea4ab3e44 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoader.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoader.java
@@ -23,7 +23,11 @@
  */
 package de.ozgcloud.aggregation;
 
+import de.ozgcloud.aggregation.transformation.AggregationMapping;
+
 public interface AggregationDataLoader {
 
 	void loadIntoTarget(Aggregation aggregation);
+
+	AggregationMapping.Scope getScope();
 }
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistry.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistry.java
index 4d7e2ff3ad1732f0466745d7d0e0c571335a9159..614e35a422db7f486d6fd53a8aaa5ed4878b063d 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistry.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistry.java
@@ -23,26 +23,39 @@
  */
 package de.ozgcloud.aggregation;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.aggregation.transformation.AggregationMapping;
 import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
 
 @Component
-@RequiredArgsConstructor
-class AggregationDataLoaderRegistry {
+public class AggregationDataLoaderRegistry {
 
-	private final Map<String, AggregationDataLoader> loaders;
+	private final Map<AggregationMapping.Scope, AggregationDataLoader> loadersByScope;
+
+	AggregationDataLoaderRegistry(List<AggregationDataLoader> loaders) {
+		this.loadersByScope = toLoadersByScope(loaders);
+	}
 
 	public boolean hasLoader(AggregationMapping.Scope scope) {
-		return loaders.containsKey(scope.name());
+		return loadersByScope.containsKey(scope);
 	}
 
 	public AggregationDataLoader getLoader(AggregationMapping.Scope scope) {
-		return Optional.ofNullable(loaders.get(scope.name())).orElseThrow(() -> new TechnicalException("No data loader for scope " + scope));
+		return Optional.ofNullable(loadersByScope.get(scope)).orElseThrow(() -> new TechnicalException("No data loader for scope " + scope));
+	}
+
+	static Map<AggregationMapping.Scope, AggregationDataLoader> toLoadersByScope(List<AggregationDataLoader> loaders) {
+		try {
+			return loaders.stream().collect(Collectors.toMap(AggregationDataLoader::getScope, Function.identity()));
+		} catch (IllegalStateException e) {
+			throw new TechnicalException("Multiple loaders exist for single scope.", e);
+		}
 	}
 }
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationManagerGrpcConfiguration.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationManagerGrpcConfiguration.java
index eec32d5d22db5bb94650f73344808f20fc3e5931..a9b23c15a1faec0ff3b332c4fcf87ba633f67a6b 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationManagerGrpcConfiguration.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationManagerGrpcConfiguration.java
@@ -23,9 +23,13 @@
  */
 package de.ozgcloud.aggregation;
 
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import de.ozgcloud.aggregation.data.AggregationDataServiceGrpc;
+import de.ozgcloud.aggregation.extern.AggregationDataRemoteService;
+import de.ozgcloud.aggregation.extern.GrpcAggregationDataMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper;
@@ -37,9 +41,12 @@ import net.devh.boot.grpc.client.inject.GrpcClientBean;
 
 @Configuration
 @GrpcClientBean(clazz = VorgangServiceGrpc.VorgangServiceBlockingStub.class, beanName = "vorgangServiceBlockingStub", client = @GrpcClient("vorgang-manager"))
+@GrpcClientBean(clazz = AggregationDataServiceGrpc.AggregationDataServiceStub.class, beanName = "aggregationDataServiceStub", client = @GrpcClient("aggregation-manager"))
 public class AggregationManagerGrpcConfiguration {
 	@GrpcClient("vorgang-manager")
 	VorgangServiceGrpc.VorgangServiceBlockingStub vorgangServiceBlockingStub;
+	@GrpcClient("aggregation-manager")
+	AggregationDataServiceGrpc.AggregationDataServiceStub aggregationDataServiceStub;
 
 	@Bean
 	OzgCloudVorgangService grpcOzgCloudVorgangService(OzgCloudVorgangMapper vorgangMapper,
@@ -49,4 +56,10 @@ public class AggregationManagerGrpcConfiguration {
 				aggregationCallContext);
 	}
 
+	@Bean
+	@ConditionalOnProperty("grpc.client.aggregation-manager.address")
+	AggregationDataRemoteService aggregationDataRemoteService(AggregationManagerProperties properties,
+			AggregationManagerConfiguration configuration, GrpcAggregationDataMapper grpcAggregationDataMapper) {
+		return new AggregationDataRemoteService(aggregationDataServiceStub, properties, configuration, grpcAggregationDataMapper);
+	}
 }
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationDataRemoteService.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationDataRemoteService.java
index 564df2133a2df80d848b4dcab68c17182d9beea5..531a02c99d1d55da63fadade4eaa192a67895cc7 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationDataRemoteService.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationDataRemoteService.java
@@ -28,9 +28,6 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
 import java.util.stream.Stream;
 
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.stereotype.Service;
-
 import de.ozgcloud.aggregation.Aggregation;
 import de.ozgcloud.aggregation.AggregationManagerConfiguration;
 import de.ozgcloud.aggregation.AggregationManagerProperties;
@@ -46,10 +43,8 @@ import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import net.devh.boot.grpc.client.inject.GrpcClient;
 
-@Service
-@ConditionalOnProperty("grpc.client.aggregation-manager.address")
 @RequiredArgsConstructor
-class AggregationDataRemoteService {
+public class AggregationDataRemoteService {
 
 	@GrpcClient("aggregation-manager")
 	private final AggregationDataServiceGrpc.AggregationDataServiceStub serviceStub;
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoader.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoader.java
index 12a9e4d3768c6fa65f3b7a85730939754cc195cc..845c20369cdd75b4761ac8e1ea616fb0166fa883 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoader.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoader.java
@@ -25,24 +25,22 @@ package de.ozgcloud.aggregation.extern;
 
 import java.util.concurrent.ExecutionException;
 
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.aggregation.Aggregation;
 import de.ozgcloud.aggregation.AggregationDataLoader;
+import de.ozgcloud.aggregation.transformation.AggregationMapping;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Component
-@Qualifier(AggregationRemoteDataLoader.SCOPE)
 @ConditionalOnProperty("grpc.client.aggregation-manager.address")
 @RequiredArgsConstructor
 @Log4j2
 public class AggregationRemoteDataLoader implements AggregationDataLoader {
 
-	static final String SCOPE = "EXTERN";
 	private final AggregationDataRemoteService service;
 
 	@Override
@@ -56,4 +54,10 @@ public class AggregationRemoteDataLoader implements AggregationDataLoader {
 			throw new TechnicalException("Error on sending aggregation data.", e);
 		}
 	}
+
+	@Override
+	public AggregationMapping.Scope getScope() {
+		return AggregationMapping.Scope.EXTERN;
+	}
+
 }
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/GrpcAggregationDataMapper.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/GrpcAggregationDataMapper.java
index d111d825eb64c2bdfeade31288e6223fcbc2bfb2..33bdee45a8f99724ce130f8be3a95046fe4f4e3e 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/GrpcAggregationDataMapper.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/extern/GrpcAggregationDataMapper.java
@@ -30,7 +30,7 @@ import de.ozgcloud.aggregation.data.GrpcAggregationData;
 import de.ozgcloud.aggregation.warehouse.DocumentEntry;
 
 @Mapper
-interface GrpcAggregationDataMapper {
+public interface GrpcAggregationDataMapper {
 
 	@Mapping(target = "eingangDatum", source = "eingangsdatum")
 	@Mapping(target = "vorgangName", source = "vorgangsname")
diff --git a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoader.java b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoader.java
similarity index 84%
rename from aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoader.java
rename to aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoader.java
index 51ead0e4fb25e567f36884adfe1d26f63af6c344..3e319bfa1e37988de0138c29cf58bfb33f53d92a 100644
--- a/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoader.java
+++ b/aggregation-manager-job/src/main/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoader.java
@@ -21,24 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.aggregation;
+package de.ozgcloud.aggregation.warehouse;
 
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
-import de.ozgcloud.aggregation.warehouse.DocumentEntry;
-import de.ozgcloud.aggregation.warehouse.WarehouseRepository;
+import de.ozgcloud.aggregation.Aggregation;
+import de.ozgcloud.aggregation.AggregationDataLoader;
+import de.ozgcloud.aggregation.transformation.AggregationMapping;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Component
-@Qualifier(AggregationWarehouseDataLoader.SCOPE)
 @RequiredArgsConstructor
 @Log4j2
 public class AggregationWarehouseDataLoader implements AggregationDataLoader {
 
-	static final String SCOPE = "INTERN";
 	private final WarehouseRepository repository;
 
 	@Override
@@ -51,4 +49,9 @@ public class AggregationWarehouseDataLoader implements AggregationDataLoader {
 	String getCollectionName(Aggregation aggregation) {
 		return StringUtils.isNotBlank(aggregation.aggregationName()) ? aggregation.aggregationName() : DocumentEntry.COLLECTION;
 	}
+
+	@Override
+	public AggregationMapping.Scope getScope() {
+		return AggregationMapping.Scope.INTERN;
+	}
 }
diff --git a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistryTest.java b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistryTest.java
index 02d5b4b8148153d830a25beb552548e9ccfa5082..92cde4b15573002348204af710305aa358bce038 100644
--- a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistryTest.java
+++ b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationDataLoaderRegistryTest.java
@@ -26,30 +26,61 @@ package de.ozgcloud.aggregation;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import java.util.List;
 import java.util.Map;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+import org.mockito.MockedStatic;
 
 import de.ozgcloud.aggregation.transformation.AggregationMapping;
 import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.common.test.ReflectionTestUtils;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
 class AggregationDataLoaderRegistryTest {
 
-	private static final String SCOPE_KEY = AggregationWarehouseDataLoader.SCOPE;
 	private final AggregationMapping.Scope registeredScope = AggregationMapping.Scope.INTERN;
 	private final AggregationMapping.Scope notRegisteredScope = AggregationMapping.Scope.EXTERN;
 
-
-	@Mock
-	private AggregationDataLoader loader;
+	private final AggregationDataLoader loader = new TestLoader(registeredScope);
 	private AggregationDataLoaderRegistry registry;
 
 	@BeforeEach
 	void init() {
-		registry = spy(new AggregationDataLoaderRegistry(Map.of(SCOPE_KEY, loader)));
+		registry = spy(new AggregationDataLoaderRegistry(List.of(loader)));
+	}
+
+	@Nested
+	class TestConstructor {
+
+		private final List<AggregationDataLoader> loaders = List.of(new TestLoader(AggregationMapping.Scope.INTERN));
+
+		@Test
+		void shouldConvertToLoadersByScope() {
+			try (MockedStatic<AggregationDataLoaderRegistry> mocked = mockStatic(AggregationDataLoaderRegistry.class)) {
+				new AggregationDataLoaderRegistry(loaders);
+				mocked.verify(() -> AggregationDataLoaderRegistry.toLoadersByScope(loaders));
+			}
+		}
+
+		@Test
+		@SuppressWarnings("unchecked")
+		void setLoadersByScope() {
+			var loadersByScope = Map.of(AggregationMapping.Scope.INTERN, new TestLoader(AggregationMapping.Scope.INTERN));
+			try (MockedStatic<AggregationDataLoaderRegistry> mocked = mockStatic(AggregationDataLoaderRegistry.class)) {
+				mocked.when(() -> AggregationDataLoaderRegistry.toLoadersByScope(loaders)).thenReturn(loadersByScope);
+
+				AggregationDataLoaderRegistry registry = new AggregationDataLoaderRegistry(loaders);
+
+				var loadersByScopeFieldValue = ReflectionTestUtils.getField(registry, "loadersByScope", Map.class);
+				assertThat(loadersByScopeFieldValue).isEqualTo(loadersByScope);
+			}
+		}
 	}
 
 	@Nested
@@ -85,4 +116,36 @@ class AggregationDataLoaderRegistryTest {
 			assertThatThrownBy(() -> registry.getLoader(notRegisteredScope)).isInstanceOf(TechnicalException.class);
 		}
 	}
+
+	@Nested
+	class TestToLoadersByScope {
+
+		@ParameterizedTest
+		@EnumSource
+		void shouldAddLoader(AggregationMapping.Scope scope) {
+			var loader = new TestLoader(scope);
+			var loadersByScope = AggregationDataLoaderRegistry.toLoadersByScope(List.of(loader));
+
+			assertThat(loadersByScope).containsEntry(scope, loader);
+		}
+
+		@Test
+		void shouldThrowExceptionIfMultipleLoadersHaveSameScope() {
+			var scope = AggregationMapping.Scope.EXTERN;
+			assertThatThrownBy(() -> AggregationDataLoaderRegistry.toLoadersByScope(List.of(new TestLoader(scope), new TestLoader(scope))))
+					.isInstanceOf(TechnicalException.class);
+		}
+	}
+
+	@RequiredArgsConstructor
+	static class TestLoader implements AggregationDataLoader {
+
+		@Getter
+		private final AggregationMapping.Scope scope;
+
+		@Override
+		public void loadIntoTarget(Aggregation aggregation) {
+
+		}
+	}
 }
diff --git a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoaderTest.java b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoaderTest.java
index 49e0b0703265f2a01c344c53e0e590ca0a1822ff..045febec72d531d2d0a355e4fa8803ad90d7a68c 100644
--- a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoaderTest.java
+++ b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/AggregationRemoteDataLoaderTest.java
@@ -37,7 +37,6 @@ import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.beans.factory.annotation.Qualifier;
 
 import de.ozgcloud.aggregation.Aggregation;
 import de.ozgcloud.aggregation.AggregationTestFactory;
@@ -128,13 +127,13 @@ class AggregationRemoteDataLoaderTest {
 	}
 
 	@Nested
-	class TestQualifier {
+	class TestGetScope {
 
 		@Test
-		void shouldBeExtern() {
-			var qualifierValue = AggregationRemoteDataLoader.class.getAnnotation(Qualifier.class).value();
+		void shouldReturnExternScope() {
+			var scope = loader.getScope();
 
-			assertThat(qualifierValue).isEqualTo(AggregationMapping.Scope.EXTERN.name());
+			assertThat(scope).isEqualTo(AggregationMapping.Scope.EXTERN);
 		}
 	}
 }
diff --git a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/SpringContextITCase.java b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/SpringContextITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c7e93e117a1c73174059b800f6779d275eca7de
--- /dev/null
+++ b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/extern/SpringContextITCase.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.aggregation.extern;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.TestPropertySource;
+
+import de.ozgcloud.aggregation.AggregationDataLoader;
+import de.ozgcloud.aggregation.AggregationDataLoaderRegistry;
+import de.ozgcloud.aggregation.transformation.AggregationMapping;
+import de.ozgcloud.common.test.ITCase;
+
+class SpringContextITCase {
+
+	@Nested
+	@ITCase
+	@TestPropertySource(properties = { "grpc.client.aggregation-manager.address=static://127.0.0.1:9090" })
+	class OnAggregationManagerAddressSet {
+
+		@Autowired
+		private List<AggregationDataLoader> loaders;
+		@Autowired
+		private AggregationDataLoaderRegistry registry;
+
+		@Test
+		void shouldHaveOneLoader() {
+			assertThat(getLoadersWithScopeExtern(loaders)).singleElement().isInstanceOf(AggregationRemoteDataLoader.class);
+		}
+
+		@Test
+		void shouldRegister() {
+			assertThat(registry.hasLoader(AggregationMapping.Scope.EXTERN)).isTrue();
+		}
+	}
+
+	@Nested
+	@ITCase
+	class OnAggregationManagerAddressNotSet {
+
+		@Autowired
+		private List<AggregationDataLoader> loaders;
+		@Autowired
+		private AggregationDataLoaderRegistry registry;
+
+		@Test
+		void shouldNotHaveLoader() {
+			assertThat(getLoadersWithScopeExtern(loaders)).isEmpty();
+		}
+
+		@Test
+		void shouldNotRegister() {
+			assertThat(registry.hasLoader(AggregationMapping.Scope.EXTERN)).isFalse();
+		}
+	}
+
+	private List<AggregationDataLoader> getLoadersWithScopeExtern(List<AggregationDataLoader> loaders) {
+		return loaders.stream()
+				.filter(loader -> loader.getScope() == AggregationMapping.Scope.EXTERN)
+				.toList();
+	}
+}
diff --git a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoaderTest.java b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoaderTest.java
similarity index 88%
rename from aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoaderTest.java
rename to aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoaderTest.java
index 9cd225c7ed6cc017c204016dca415b6c52295093..ed86396f694745874bf95f0c6a6e5eee914bd1a9 100644
--- a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/AggregationWarehouseDataLoaderTest.java
+++ b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/AggregationWarehouseDataLoaderTest.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.ozgcloud.aggregation;
+package de.ozgcloud.aggregation.warehouse;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -38,13 +38,12 @@ import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.beans.factory.annotation.Qualifier;
 
 import com.thedeanda.lorem.LoremIpsum;
 
+import de.ozgcloud.aggregation.Aggregation;
+import de.ozgcloud.aggregation.AggregationTestFactory;
 import de.ozgcloud.aggregation.transformation.AggregationMapping;
-import de.ozgcloud.aggregation.warehouse.DocumentEntry;
-import de.ozgcloud.aggregation.warehouse.WarehouseRepository;
 
 class AggregationWarehouseDataLoaderTest {
 
@@ -111,13 +110,13 @@ class AggregationWarehouseDataLoaderTest {
 	}
 
 	@Nested
-	class TestQualifier {
+	class TestGetScope {
 
 		@Test
-		void shouldBeIntern() {
-			var qualifierValue = AggregationWarehouseDataLoader.class.getAnnotation(Qualifier.class).value();
+		void shouldReturnInternScope() {
+			var scope = loader.getScope();
 
-			assertThat(qualifierValue).isEqualTo(AggregationMapping.Scope.INTERN.name());
+			assertThat(scope).isEqualTo(AggregationMapping.Scope.INTERN);
 		}
 	}
 }
diff --git a/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/SpringContextITCase.java b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/SpringContextITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed88f4f4ecc40e07028102fc11dc0815e5279c69
--- /dev/null
+++ b/aggregation-manager-job/src/test/java/de/ozgcloud/aggregation/warehouse/SpringContextITCase.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.aggregation.warehouse;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.ozgcloud.aggregation.AggregationDataLoader;
+import de.ozgcloud.aggregation.AggregationDataLoaderRegistry;
+import de.ozgcloud.aggregation.transformation.AggregationMapping;
+import de.ozgcloud.common.test.ITCase;
+
+@ITCase
+class SpringContextITCase {
+
+	@Autowired
+	private List<AggregationDataLoader> loaders;
+	@Autowired
+	private AggregationDataLoaderRegistry registry;
+
+	@Test
+	void shouldHaveLoader() {
+		assertThat(getLoadersWithScopeIntern(loaders)).singleElement().isInstanceOf(AggregationWarehouseDataLoader.class);
+	}
+
+	@Test
+	void shouldRegister() {
+		assertThat(registry.hasLoader(AggregationMapping.Scope.INTERN)).isTrue();
+	}
+
+	private List<AggregationDataLoader> getLoadersWithScopeIntern(List<AggregationDataLoader> loaders) {
+		return loaders.stream()
+				.filter(loader -> loader.getScope() == AggregationMapping.Scope.INTERN)
+				.toList();
+	}
+}