diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
index 578097370e5d12950085a7a3aeb0b45f57154a56..5210fc4085042c585bc0fd3e8db871443d794c1d 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java
@@ -4,6 +4,7 @@ import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.ReportingPolicy;
 
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery.FormIdentification;
@@ -14,52 +15,59 @@ import de.ozgcloud.vorgang.vorgang.GrpcQuery;
 import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
 import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression.Builder;
 
-@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.WARN)
 public interface OzgCloudVorgangQueryMapper {
 
-	default GrpcQuery toGrpc(OzgCloudVorgangQuery query) {
-		var queryBuilder = GrpcQuery.newBuilder();
-		addPropertiesToExpressions(query, queryBuilder);
+	static final String FORM_ENGINE_NAME_PATH = "formEngineName";
+	static final String STATUS_PATH = "status";
+	static final String ORGANISATIONS_EINHEIT_ID_PATH = "eingangs.zustaendigeStelle.organisationseinheitenId";
+	static final String AKTENZEICHEN_PATH = "aktenzeichen";
+
+	default GrpcQuery toGrpc(OzgCloudVorgangQuery ozgCloudVorgangQuery) {
+		var queryBuilder = mapPropertiesToQuery(ozgCloudVorgangQuery);
 
 		if (queryBuilder.getExpressionsList().isEmpty()) {
-			return query.getQuery().map(this::nestedQueryToGrpc).orElseGet(queryBuilder::build);
+			return ozgCloudVorgangQuery.getQuery().map(this::mapQuery)
+					.orElseGet(GrpcQuery::getDefaultInstance);
 		}
 
-		query.getQuery().map(this::nestedQueryToGrpc).ifPresent(queryBuilder::setNestedQuery);
-		return queryBuilder.setLogicalOperator(GrpcLogicalOperator.AND).build();
+		ozgCloudVorgangQuery.getQuery().map(this::mapQuery).ifPresent(queryBuilder::setNestedQuery);
+		return queryBuilder.build();
 	}
 
-	private void addPropertiesToExpressions(OzgCloudVorgangQuery query, GrpcQuery.Builder queryBuilder) {
+	default GrpcQuery.Builder mapPropertiesToQuery(OzgCloudVorgangQuery query) {
+		var queryBuilder = GrpcQuery.newBuilder().setLogicalOperator(GrpcLogicalOperator.AND);
 		query.getAktenzeichen().map(this::toAktenzeichenExpression).ifPresent(queryBuilder::addExpressions);
 		query.getForm().map(this::toFormExpression).ifPresent(queryBuilder::addExpressions);
 		query.getStatus().map(this::toStatusExpression).ifPresent(queryBuilder::addExpressions);
 		query.getOrganisationsEinheitId().map(this::toOrganisationsEinheitIdExpression).ifPresent(queryBuilder::addExpressions);
+		return queryBuilder;
 	}
 
-	private GrpcVorgangQueryExpression toAktenzeichenExpression(String aktenzeichen) {
+	default GrpcVorgangQueryExpression toAktenzeichenExpression(String aktenzeichen) {
 		return getEqualExpressionBuilder()
-				.setPath("aktenzeichen")
+				.setPath(AKTENZEICHEN_PATH)
 				.setOperandStringValue(aktenzeichen)
 				.build();
 	}
 
-	private GrpcVorgangQueryExpression toOrganisationsEinheitIdExpression(String organisationsEinheitId) {
+	default GrpcVorgangQueryExpression toOrganisationsEinheitIdExpression(String organisationsEinheitId) {
 		return getEqualExpressionBuilder()
-				.setPath("eingangs.zustaendigeStelle.organisationseinheitenId")
+				.setPath(ORGANISATIONS_EINHEIT_ID_PATH)
 				.setOperandStringValue(organisationsEinheitId)
 				.build();
 	}
 
-	private GrpcVorgangQueryExpression toStatusExpression(String status) {
+	default GrpcVorgangQueryExpression toStatusExpression(String status) {
 		return getEqualExpressionBuilder()
-				.setPath("status")
+				.setPath(STATUS_PATH)
 				.setOperandStringValue(status)
 				.build();
 	}
 
-	private GrpcVorgangQueryExpression toFormExpression(FormIdentification formIdentification) {
+	default GrpcVorgangQueryExpression toFormExpression(FormIdentification formIdentification) {
 		return getEqualExpressionBuilder()
-				.setPath("formEngineName")
+				.setPath(FORM_ENGINE_NAME_PATH)
 				.setOperandStringValue(formIdentification.formEngineName())
 				.build();
 	}
@@ -69,15 +77,6 @@ public interface OzgCloudVorgangQueryMapper {
 				.setOperator(GrpcQueryOperator.EQUAL);
 	}
 
-	@Mapping(target = "expressionsList.mergeFrom", ignore = true)
-	@Mapping(target = "expressionsList.clearField", ignore = true)
-	@Mapping(target = "expressionsList.clearOneof", ignore = true)
-	@Mapping(target = "expressionsList.mergeUnknownFields", ignore = true)
-	@Mapping(target = "expressionsList.unknownFields", ignore = true)
-	@Mapping(target = "expressionsList.allFields", ignore = true)
-	@Mapping(target = "expressionsList.operandStringValueBytes", ignore = true)
-	@Mapping(target = "expressionsList.operatorValue", ignore = true)
-	@Mapping(target = "expressionsList.pathBytes", ignore = true)
 	@Mapping(target = "mergeFrom", ignore = true)
 	@Mapping(target = "clearField", ignore = true)
 	@Mapping(target = "clearOneof", ignore = true)
@@ -91,5 +90,5 @@ public interface OzgCloudVorgangQueryMapper {
 	@Mapping(target = "expressionsOrBuilderList", ignore = true)
 
 	@Mapping(target = "expressionsList", source = "expressions")
-	GrpcQuery nestedQueryToGrpc(Query query);
+	GrpcQuery mapQuery(Query query);
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java
index 3678a34105cc1a4f02b7c323ad5e2a723c7429ec..32e3f49a2dcf18f7076f82247c08a6ba223c9efa 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java
@@ -1,13 +1,16 @@
 package de.ozgcloud.apilib.vorgang.grpc;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
 
-import java.util.List;
 import java.util.Optional;
 
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
+import org.mockito.Spy;
 
 import de.ozgcloud.apilib.vorgang.FormIdentificationTestFactory;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery;
@@ -21,134 +24,399 @@ import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
 
 class OzgCloudVorgangQueryMapperTest {
 
+	@Spy
 	private final OzgCloudVorgangQueryMapper mapper = Mappers.getMapper(OzgCloudVorgangQueryMapper.class);
 
 	@Nested
 	class ToGrpc {
 
+		@Test
+		void shouldCallMapProperetiesToQuery() {
+			var query = OzgCloudVorgangQueryTestFactory.create();
+
+			mapper.toGrpc(query);
+
+			verify(mapper).mapPropertiesToQuery(query);
+		}
+
+		@Nested
+		class OnNoNestedQuery {
+
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder()
+					.query(Optional.empty())
+					.build();
+
+			private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder();
+
+			@BeforeEach
+			void mock() {
+				doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query);
+			}
+
+			@Test
+			void shouldReturnBuiltQuery() {
+				var grpcQuery = mapper.toGrpc(query);
+
+				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.create());
+			}
+		}
+
+		@Nested
+		class OnNoProperties {
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create();
+
+			@BeforeEach
+			void mock() {
+				doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query);
+			}
+
+			private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder()
+					.clearExpressions();
+
+			@Test
+			void shouldMapQueryToGrpcQuery() {
+				mapper.toGrpc(query);
+
+				verify(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY);
+			}
+
+			@Test
+			void shouldReturnMappedQuery() {
+				var mappedQuery = GrpcQueryTestFactory.create();
+				doReturn(mappedQuery).when(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY);
+
+				var grpcQuery = mapper.toGrpc(query);
+
+				assertThat(grpcQuery).isEqualTo(mappedQuery);
+			}
+		}
+
+		@Nested
+		class OnNestedQueryAndProperties {
+
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create();
+
+			private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder();
+
+			@BeforeEach
+			void mock() {
+				doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query);
+			}
+
+			@Test
+			void shouldCallMapQuery() {
+				mapper.toGrpc(query);
+
+				verify(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY);
+			}
+
+			@Test
+			void shouldReturnGrpcQuery() {
+				var nestedQuery = GrpcQueryTestFactory.create();
+				var expectedQuery = GrpcQueryTestFactory.createBuilder()
+						.setNestedQuery(nestedQuery)
+						.build();
+				doReturn(nestedQuery).when(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY);
+
+				var grpcQuery = mapper.toGrpc(query);
+
+				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(expectedQuery);
+			}
+
+		}
+
+		@Nested
+		class OnEmptyQuery {
+
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQuery.builder().build();
+
+			@Test
+			void shouldMapToDefaultGrpcQuery() {
+				var grpcQuery = mapper.toGrpc(query);
+
+				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQuery.getDefaultInstance());
+			}
+		}
+	}
+
+	@Nested
+	class TestMapPropertiesToQuery {
+
 		private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
-				.setPath("aktenzeichen")
+				.setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH)
 				.setOperator(GrpcQueryOperator.EQUAL)
 				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN)
 				.build();
 
 		private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
-				.setPath("formEngineName")
+				.setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH)
 				.setOperator(GrpcQueryOperator.EQUAL)
 				.setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME)
 				.build();
 
 		private final GrpcVorgangQueryExpression statusExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
-				.setPath("status")
+				.setPath(OzgCloudVorgangQueryMapper.STATUS_PATH)
 				.setOperator(GrpcQueryOperator.EQUAL)
 				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.STATUS)
 				.build();
 
 		private final GrpcVorgangQueryExpression organisationsEinheitIdExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
-				.setPath("eingangs.zustaendigeStelle.organisationseinheitenId")
+				.setPath(OzgCloudVorgangQueryMapper.ORGANISATIONS_EINHEIT_ID_PATH)
 				.setOperator(GrpcQueryOperator.EQUAL)
 				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID)
 				.build();
 
 		@Nested
-		class OnNoNestedQuery {
+		class OnAllPropertiesPresent {
+
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create();
+
+			@BeforeEach
+			void mock() {
+				doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
+				doReturn(formExpression).when(mapper).toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
+				doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
+				doReturn(organisationsEinheitIdExpression).when(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
+			}
+
+			@Test
+			void shouldCallToAktenzeichenExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
+			}
+
+			@Test
+			void shouldCallToOrganisationsEinheitIdExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper).toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
+			}
+
+			@Test
+			void shouldCallToStatusExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
+			}
+
+			@Test
+			void shouldCallToFormExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
+			}
+
+			@Test
+			void shouldReturnQueryBuilderContainingAllExpressions() {
+				var queryBuilder = callMapPropertiesToQuery();
+
+				assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression,
+						organisationsEinheitIdExpression);
+			}
+
+			@Test
+			void shouldReturnQueryBuilderWIthAndOperator() {
+				var queryBuilder = callMapPropertiesToQuery();
+
+				assertThat(queryBuilder.getLogicalOperator()).isEqualTo(GrpcLogicalOperator.AND);
+			}
+
+			private GrpcQuery.Builder callMapPropertiesToQuery() {
+				return mapper.mapPropertiesToQuery(query);
+			}
+		}
+
+		@Nested
+		class OnEmptyAktenzeichen {
 
 			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder()
-					.query(Optional.empty())
+					.aktenzeichen(Optional.empty())
 					.build();
 
 			@Test
-			void shouldMapToGrpcQuery() {
-				var grpcQuery = mapper.toGrpc(query);
+			void shouldNotCallToAktenzeichenExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper, never()).toAktenzeichenExpression(any());
+			}
+
+			@Test
+			void shouldReturnQueryBuilderContainingAllOtherExpressions() {
+				var queryBuilder = callMapPropertiesToQuery();
+
+				assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(statusExpression, formExpression,
+						organisationsEinheitIdExpression);
+			}
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions()
-						.addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression))
-						.setLogicalOperator(GrpcLogicalOperator.AND)
-						.build());
+			private GrpcQuery.Builder callMapPropertiesToQuery() {
+				return mapper.mapPropertiesToQuery(query);
 			}
 		}
 
 		@Nested
-		class OnNestedQueryAndOptionals {
+		class OnEmptyForm {
 
-			private final OzgCloudVorgangQuery.OzgCloudVorgangQueryBuilder queryBuilder = OzgCloudVorgangQueryTestFactory.createBuilder();
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder()
+					.form(Optional.empty())
+					.build();
 
 			@Test
-			void shouldMapToGrpcQuery() {
-				var grpcQuery = mapper.toGrpc(queryBuilder.build());
+			void shouldNotCallToFormExpression() {
+				callMapPropertiesToQuery();
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions()
-						.addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression))
-						.setLogicalOperator(GrpcLogicalOperator.AND)
-						.setNestedQuery(GrpcQueryTestFactory.create())
-						.build());
+				verify(mapper, never()).toFormExpression(any());
 			}
 
 			@Test
-			void shouldMapToDoubleNestedGrpcQuery() {
-				var nestedQuery = QueryTestFactory.createBuilder()
-						.nestedQuery(QueryTestFactory.create())
-						.build();
-
-				var grpcQuery = mapper.toGrpc(queryBuilder.query(Optional.of(nestedQuery)).build());
+			void shouldReturnQueryBuilderContainingAllOtherExpressions() {
+				var queryBuilder = callMapPropertiesToQuery();
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions()
-						.addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression))
-						.setLogicalOperator(GrpcLogicalOperator.AND)
-						.setNestedQuery(GrpcQueryTestFactory.createBuilder()
-								.setNestedQuery(GrpcQueryTestFactory.create())
-								.build())
-						.build());
+				assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression,
+						organisationsEinheitIdExpression);
 			}
 
+			private GrpcQuery.Builder callMapPropertiesToQuery() {
+				return mapper.mapPropertiesToQuery(query);
+			}
 		}
 
 		@Nested
-		class OnNoExplicitProperties {
-			private final OzgCloudVorgangQuery.OzgCloudVorgangQueryBuilder queryBuilder = OzgCloudVorgangQueryTestFactory.createBuilder()
-					.aktenzeichen(Optional.empty())
-					.form(Optional.empty())
-					.organisationsEinheitId(Optional.empty())
-					.status(Optional.empty());
+		class OnEmptyStatus {
+
+			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder()
+					.status(Optional.empty())
+					.build();
 
 			@Test
-			void shouldMapToGrpcQuery() {
-				var grpcQuery = mapper.toGrpc(queryBuilder.build());
+			void shouldNotCallToStatusExpression() {
+				callMapPropertiesToQuery();
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.create());
+				verify(mapper, never()).toStatusExpression(any());
 			}
 
 			@Test
-			void shouldMapToNestedGrpcQuery() {
-				Query nestedQuery = QueryTestFactory.createBuilder()
-						.nestedQuery(QueryTestFactory.create())
-						.build();
+			void shouldReturnQueryBuilderContainingAllOtherExpressions() {
+				var queryBuilder = callMapPropertiesToQuery();
 
-				var grpcQuery = mapper.toGrpc(queryBuilder.query(Optional.of(nestedQuery)).build());
+				assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, formExpression,
+						organisationsEinheitIdExpression);
+			}
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder()
-						.setNestedQuery(GrpcQueryTestFactory.create())
-						.build());
+			private GrpcQuery.Builder callMapPropertiesToQuery() {
+				return mapper.mapPropertiesToQuery(query);
 			}
 		}
 
 		@Nested
-		class OnEmptyQuery {
+		class OnEmptyOrganisationsEinheitId {
 
 			private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder()
-					.aktenzeichen(Optional.empty())
-					.form(Optional.empty())
 					.organisationsEinheitId(Optional.empty())
-					.status(Optional.empty())
-					.query(Optional.empty())
 					.build();
 
 			@Test
-			void shouldMapToEmptyGrpcQuery() {
-				var grpcQuery = mapper.toGrpc(query);
+			void shouldNotCallToOrganisationsEinheitIdExpression() {
+				callMapPropertiesToQuery();
+
+				verify(mapper, never()).toOrganisationsEinheitIdExpression(any());
+			}
+
+			@Test
+			void shouldReturnQueryBuilderContainingAllOtherExpressions() {
+				var queryBuilder = callMapPropertiesToQuery();
+
+				assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression);
+			}
 
-				assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQuery.newBuilder().build());
+			private GrpcQuery.Builder callMapPropertiesToQuery() {
+				return mapper.mapPropertiesToQuery(query);
 			}
 		}
 	}
+
+	@Nested
+	class TestToAktenzeichenExpression {
+
+		private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
+				.setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH)
+				.setOperator(GrpcQueryOperator.EQUAL)
+				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN)
+				.build();
+
+		@Test
+		void shouldReturnAktenzeichenExpression() {
+			var expression = mapper.toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
+
+			assertThat(expression).usingRecursiveComparison().isEqualTo(aktenzeichenExpression);
+		}
+	}
+
+	@Nested
+	class TestToOrganisationsEinheitIdExpression {
+
+		private final GrpcVorgangQueryExpression organisationsEinheitIdExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
+				.setPath(OzgCloudVorgangQueryMapper.ORGANISATIONS_EINHEIT_ID_PATH)
+				.setOperator(GrpcQueryOperator.EQUAL)
+				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID)
+				.build();
+
+		@Test
+		void shouldReturnOrganisationsEinheitIdExpression() {
+			var expression = mapper.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
+
+			assertThat(expression).usingRecursiveComparison().isEqualTo(organisationsEinheitIdExpression);
+		}
+	}
+
+	@Nested
+	class TestToStatusExpression {
+
+		private final GrpcVorgangQueryExpression statusExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
+				.setPath(OzgCloudVorgangQueryMapper.STATUS_PATH)
+				.setOperator(GrpcQueryOperator.EQUAL)
+				.setOperandStringValue(OzgCloudVorgangQueryTestFactory.STATUS)
+				.build();
+
+		@Test
+		void shouldReturnStatusExpression() {
+			var expression = mapper.toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
+
+			assertThat(expression).usingRecursiveComparison().isEqualTo(statusExpression);
+		}
+	}
+
+	@Nested
+	class TestToFormExpression {
+
+		private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
+				.setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH)
+				.setOperator(GrpcQueryOperator.EQUAL)
+				.setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME)
+				.build();
+
+		@Test
+		void shouldReturnFormExpression() {
+			var expression = mapper.toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
+
+			assertThat(expression).usingRecursiveComparison().isEqualTo(formExpression);
+		}
+	}
+
+	@Nested
+	class TestMapQuery {
+
+		private final Query nestedQuery = QueryTestFactory.create();
+		private final Query query = QueryTestFactory.createBuilder().nestedQuery(nestedQuery).build();
+
+		private final GrpcQuery nestedGrpcQuery = GrpcQueryTestFactory.create();
+		private final GrpcQuery expectedGrpcQuery = GrpcQueryTestFactory.createBuilder().setNestedQuery(nestedGrpcQuery).build();
+
+		@Test
+		void shouldMapQuery() {
+			var grpcQuery = mapper.mapQuery(query);
+
+			assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(expectedGrpcQuery);
+		}
+	}
 }