diff --git a/lombok.config b/lombok.config
index ed4a48cd7a5e63130f4ec89321184aafc4e9016b..e955a6b5b3b394bbae6458ecf7ac76f3b1b0f446 100644
--- a/lombok.config
+++ b/lombok.config
@@ -27,4 +27,5 @@ lombok.log.slf4j.flagUsage = ERROR
 lombok.log.log4j.flagUsage = ERROR
 lombok.data.flagUsage = ERROR
 lombok.nonNull.exceptionType = IllegalArgumentException
-lombok.addLombokGeneratedAnnotation = true
\ No newline at end of file
+lombok.addLombokGeneratedAnnotation = true
+lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 97cabfc42f9626269f658147c62a7bf3c5aab331..f2c9efdf81d19278df0cf925bb3595625d5d1a8e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.3.0</version>
+		<version>4.5.0-SNAPSHOT</version>
 	</parent>
 
 	<groupId>de.ozgcloud.processor</groupId>
@@ -42,10 +42,10 @@
 	<description>OZG-Cloud Processor Manager</description>
 
 	<properties>
-		<vorgang-manager.version>2.5.0</vorgang-manager.version>
-		<api-lib.version>0.10.0</api-lib.version>
-		<tyrus-standalone-client.version>2.1.3</tyrus-standalone-client.version>
-		<okio.version>3.9.0</okio.version>
+		<vorgang-manager.version>2.17.0-SNAPSHOT</vorgang-manager.version>
+		<api-lib.version>0.13.0-SNAPSHOT</api-lib.version>
+		<tyrus-standalone-client.version>2.2.0</tyrus-standalone-client.version>
+		<okio.version>3.9.1</okio.version>
 	</properties>
 	<dependencies>
 		<!-- OZG-Cloud -->
@@ -60,13 +60,6 @@
 			<artifactId>command-manager</artifactId>
 			<version>${vorgang-manager.version}</version>
 		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.command</groupId>
-			<artifactId>command-manager</artifactId>
-			<version>${vorgang-manager.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 
 		<dependency>
 			<groupId>de.ozgcloud.api-lib</groupId>
diff --git a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
index 3ce4b10271262235a40bfff7806e6699a32af0c4..c9dea1532cd7a392ed564c176b6fe1188c770594 100644
--- a/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
+++ b/src/main/java/de/ozgcloud/processor/ProcessorManagerConfiguration.java
@@ -23,12 +23,14 @@
  */
 package de.ozgcloud.processor;
 
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper;
+import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangQueryMapper;
 import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper;
 import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
 import net.devh.boot.grpc.client.inject.GrpcClient;
@@ -36,12 +38,27 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
 @Configuration
 public class ProcessorManagerConfiguration {
 
-	@GrpcClient("vorgang-manager")
+	public static final String PROCESSOR_EVENT_LISTENER_NAME = "processorManager_ProcessorEventListener";
+	public static final String PROCESSOR_PROPERTIES_NAME = "processorManager_ProcessorProperties";
+	public static final String PROXY_PROPERTIES_NAME = "processorManager_ProxyProperties";
+	public static final String AKTENNOTIZ_FACTORY_NAME = "processorManager_AktennotizFactory";
+	public static final String VORGANG_MAPPER_NAME = "processorManager_VorgangMapper";
+
+	public static final String VORGANG_SERVICE_NAME = "processorManager_VorgangService";
+	public static final String PROCESSOR_SERVICE_NAME = "processorManager_ProcessorService";
+	public static final String RESULT_SERVICE_NAME = "processorManager_ResultService";
+
+	public static final String OZGCLOUD_VORGANG_SERVICE_NAME = "processorManager_OzgCloudVorgangService";
+
+	public static final String GRPC_VORGANG_SERVICE_ADDRESS = "vorgang-manager";
+
+	@GrpcClient(GRPC_VORGANG_SERVICE_ADDRESS)
 	private VorgangServiceGrpc.VorgangServiceBlockingStub vorgangServiceStub;
 
-	@Bean("processorManager_OzgCloudCommandService")
+	@ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address")
+	@Bean(OZGCLOUD_VORGANG_SERVICE_NAME) // NOSONAR
 	OzgCloudVorgangService grpcOzgCloudCommandService(OzgCloudVorgangMapper vorgangMapper, OzgCloudVorgangStubMapper vorgangStubMapper,
-			ProzessorManagerCallContextProvider contextProvider) {
-		return new GrpcOzgCloudVorgangService(vorgangServiceStub, vorgangMapper, vorgangStubMapper, contextProvider);
+			OzgCloudVorgangQueryMapper vorgangQueryMapper, ProzessorManagerCallContextProvider contextProvider) {
+		return new GrpcOzgCloudVorgangService(vorgangServiceStub, vorgangMapper, vorgangStubMapper, vorgangQueryMapper, contextProvider);
 	}
 }
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java
index 3bd6df7af204ad995d74ed052dfd415faad9d8e6..0e87a5504251da330165435ee2769a8c7fbbe04e 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorConfiguration.java
@@ -28,18 +28,21 @@ import java.net.ProxySelector;
 import java.net.http.HttpClient;
 import java.util.Optional;
 
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.client.reactive.ClientHttpConnector;
 import org.springframework.http.client.reactive.JdkClientHttpConnector;
 import org.springframework.web.reactive.function.client.WebClient;
 
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import lombok.RequiredArgsConstructor;
 
 @Configuration
 @RequiredArgsConstructor
 class ProcessorConfiguration {
 
+	@Qualifier(ProcessorManagerConfiguration.PROXY_PROPERTIES_NAME) // NOSONAR
 	private final Optional<ProxyProperties> proxyProperties;
 
 	@Bean
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java
index 84192fc956551c063398256c6bf8c40d67d5138a..5f8ac51fe140c015f7592cced1d9e922dfce6fe7 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java
@@ -29,6 +29,7 @@ import java.util.function.Predicate;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.event.EventListener;
@@ -38,6 +39,7 @@ import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandCreatedEvent;
 import de.ozgcloud.command.CommandFailedEvent;
 import de.ozgcloud.command.VorgangCreatedEvent;
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import de.ozgcloud.processor.result.ResultService;
 import de.ozgcloud.processor.vorgang.Vorgang;
 import de.ozgcloud.processor.vorgang.VorgangId;
@@ -46,15 +48,21 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 import reactor.core.publisher.Mono;
 
-@Component("processorVorgangEventListener")
+@Component(ProcessorManagerConfiguration.PROCESSOR_EVENT_LISTENER_NAME) // NOSONAR
 @ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address")
 @RequiredArgsConstructor
 @Log4j2
 class ProcessorEventListener {
 
+	@Qualifier(ProcessorManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR
 	private final VorgangService service;
+
+	@Qualifier(ProcessorManagerConfiguration.PROCESSOR_SERVICE_NAME) // NOSONAR
 	private final ProcessorService processorService;
+
+	@Qualifier(ProcessorManagerConfiguration.RESULT_SERVICE_NAME) // NOSONAR
 	private final ResultService resultService;
+
 	private final ApplicationEventPublisher publisher;
 
 	static final String PROCESS_VORGANG_ORDER = "PROCESS_VORGANG";
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
index caecd057967c3870ca19ad7dabe5cc956b29869b..e7706c445d815047256d6dd5deda5848c6f8d9fb 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorProperties.java
@@ -32,6 +32,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.validation.annotation.Validated;
 
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
@@ -43,7 +44,7 @@ import lombok.ToString;
 @ToString
 @Getter
 @Setter
-@Configuration
+@Configuration(ProcessorManagerConfiguration.PROCESSOR_PROPERTIES_NAME) // NOSONAR
 @ConfigurationProperties(prefix = "ozgcloud")
 @Validated
 @Builder
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
index a2d694dcb56d52de54e5eb5f095a8bd225fc5113..15dcb0253134f16dd3fc214e466feabd96435ef2 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorService.java
@@ -29,6 +29,8 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpStatusCode;
 import org.springframework.http.MediaType;
@@ -39,6 +41,7 @@ import org.springframework.web.reactive.function.client.ClientResponse;
 import org.springframework.web.reactive.function.client.WebClient;
 
 import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import de.ozgcloud.processor.processor.ProcessorProperties.Form;
 import de.ozgcloud.processor.processor.ProcessorProperties.Processor;
 import de.ozgcloud.processor.result.ProcessorTechnicalException;
@@ -47,13 +50,15 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 import reactor.core.publisher.Mono;
 
-@Service
+@ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address")
+@Service(ProcessorManagerConfiguration.PROCESSOR_SERVICE_NAME) // NOSONAR
 @RequiredArgsConstructor
 @Log4j2
 public class ProcessorService {
 
 	private static final String KEY_VORGANG = "vorgang";
 
+	@Qualifier(ProcessorManagerConfiguration.PROCESSOR_PROPERTIES_NAME) // NOSONAR
 	private final ProcessorProperties properties;
 
 	private final WebClient webClient;
diff --git a/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java b/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java
index 54d7b59612ca569dc569295e4d63ac72c2372baa..889fff90e47301ce4ab4621dfc1dfaafcef35b90 100644
--- a/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java
+++ b/src/main/java/de/ozgcloud/processor/processor/ProxyProperties.java
@@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.validation.annotation.Validated;
 
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
@@ -38,7 +39,7 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.ToString;
 
-@Configuration
+@Configuration(ProcessorManagerConfiguration.PROXY_PROPERTIES_NAME) // NOSONAR
 @ConditionalOnProperty(prefix = "ozgcloud.http-proxy", name = { "host", "port" })
 @ConfigurationProperties(prefix = "ozgcloud.http-proxy")
 @Validated
diff --git a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java
index 43b149c479cb8b0505160ee4546eaefd38de2030..5083d57cb9ac80fc9756e49c37f46fefbc570ce9 100644
--- a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java
+++ b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java
@@ -25,9 +25,10 @@ package de.ozgcloud.processor.result;
 
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import de.ozgcloud.processor.processor.ProcessorResult;
 
-@Component
+@Component(ProcessorManagerConfiguration.AKTENNOTIZ_FACTORY_NAME) // NOSONAR
 public class AktennotizFactory {
 
 	static final String AKTENNOTIZ_ERROR_TEXT = """
diff --git a/src/main/java/de/ozgcloud/processor/result/ResultService.java b/src/main/java/de/ozgcloud/processor/result/ResultService.java
index 8aac24e021268fc1f3d12bf60d72405a256d36b7..9fdc0b84b92d294f6b63fd7b597e7aafe942426e 100644
--- a/src/main/java/de/ozgcloud/processor/result/ResultService.java
+++ b/src/main/java/de/ozgcloud/processor/result/ResultService.java
@@ -25,21 +25,24 @@ package de.ozgcloud.processor.result;
 
 import jakarta.validation.Valid;
 
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import de.ozgcloud.apilib.alfa.AlfaService;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import de.ozgcloud.processor.processor.ProcessorResult;
 import lombok.RequiredArgsConstructor;
 
-@Service
+@Service(ProcessorManagerConfiguration.RESULT_SERVICE_NAME) // NOSONAR
 @RequiredArgsConstructor
 @Validated
 public class ResultService {
 
 	private final AlfaService alfaService;
 	private final OzgCloudVorgangIdMapper vorgangIdMapper;
+	@Qualifier(ProcessorManagerConfiguration.AKTENNOTIZ_FACTORY_NAME) // NOSONAR
 	private final AktennotizFactory aktennotizFactory;
 
 	public void processResult(@Valid ProcessorResult result) {
diff --git a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java
index cce04e9a6f1a964ea471c0a49f08f63283f55d44..2774aed34bce917b8407cf19389408061491b4d7 100644
--- a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java
+++ b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java
@@ -27,9 +27,11 @@ import java.util.List;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.AnnotateWith;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Named;
+import org.springframework.stereotype.Component;
 
 import de.ozgcloud.apilib.file.OzgCloudFileGroup;
 import de.ozgcloud.apilib.file.OzgCloudFileId;
@@ -42,8 +44,10 @@ import de.ozgcloud.apilib.vorgang.OzgCloudSubForm;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgang;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.common.binaryfile.FileId;
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 
 @Mapper
+@AnnotateWith(value = Component.class, elements = @AnnotateWith.Element(strings = ProcessorManagerConfiguration.VORGANG_MAPPER_NAME))
 public interface ProcessorVorgangMapper {
 
 	@Mapping(target = "eingang", qualifiedByName = "mapEingang", source = "eingangs")
diff --git a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
index 2eb18aaee20f844bd493f22976b81a599550d34c..ab58b3b9149601a2e4695caf11d17a0d00dd4775 100644
--- a/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
+++ b/src/main/java/de/ozgcloud/processor/vorgang/VorgangService.java
@@ -23,22 +23,26 @@
  */
 package de.ozgcloud.processor.vorgang;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
+import de.ozgcloud.processor.ProcessorManagerConfiguration;
 import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
 
-@Service("processorVorgangService")
+@ConditionalOnProperty(prefix = "ozgcloud.processors[0]", name = "address")
+@Service(ProcessorManagerConfiguration.VORGANG_SERVICE_NAME) // NOSONAR
+@RequiredArgsConstructor
 public class VorgangService {
 
-	@Autowired
-	@Qualifier("processorManager_OzgCloudCommandService")
-	private OzgCloudVorgangService ozgCloudService;
-	@Autowired
-	private ProcessorVorgangMapper mapper;
+	@Qualifier(ProcessorManagerConfiguration.OZGCLOUD_VORGANG_SERVICE_NAME) // NOSONAR
+	private final OzgCloudVorgangService ozgCloudService;
+
+	@Qualifier(ProcessorManagerConfiguration.VORGANG_MAPPER_NAME) // NOSONAR
+	private final ProcessorVorgangMapper mapper;
 
 	public Vorgang getVorgang(@NonNull VorgangId id) {
 		var loaded = ozgCloudService.getById(OzgCloudVorgangId.from(id.toString()));
diff --git a/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java
index 0e3504087cec390443adb5154a4aa428ea47abca..c354643602e40f7cf907ae7a0d50f275b9629d70 100644
--- a/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java
+++ b/src/test/java/de/ozgcloud/processor/vorgang/AttachmentTestFactory.java
@@ -23,14 +23,20 @@
  */
 package de.ozgcloud.processor.vorgang;
 
-import static de.ozgcloud.apilib.vorgang.AttachmentTestFactory.*;
+import de.ozgcloud.processor.vorgang.FileGroup.FileGroupBuilder;
 
 public class AttachmentTestFactory {
 
-	public static FileGroup createFileGroup() {
+	public static final String GROUP_NAME = "File Group Name";
+
+	public static FileGroup create() {
+		return createBuilder().build();
+	}
+
+	public static FileGroupBuilder createBuilder() {
 		return FileGroup.builder()
 				.name(GROUP_NAME)
-				.file(FileMetaDataTestFactory.create())
-				.build();
+				.file(FileMetaDataTestFactory.create());
 	}
+
 }
diff --git a/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java
index 9523d09402279553b011f522cb6a30cd2a83c55e..6a526f55d74b471103cafefb782d7f0d7c0a0233 100644
--- a/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java
+++ b/src/test/java/de/ozgcloud/processor/vorgang/EingangTestFactory.java
@@ -36,7 +36,7 @@ public class EingangTestFactory {
 	public static Eingang.EingangBuilder createBuilder() {
 		return Eingang.builder()
 				.antragsteller(AntragstellerTestFactory.create())
-				.attachment(AttachmentTestFactory.createFileGroup())
+				.attachment(AttachmentTestFactory.create())
 				.formData(List.<FormDataEntry>of(
 						FormField.builder().name(FIELD_NAME).label(FIELD_LABEL).value(FIELD_VALUE).build(),
 						SubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL)