diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..9bd06c2e74db50ec5d22d49cf0108e70d1da3271
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+    "java.configuration.updateBuildConfiguration": "automatic",
+    "java.debug.settings.onBuildFailureProceed": true
+}
\ No newline at end of file
diff --git a/user-manager-interface/src/main/protobuf/recipient.model.proto b/user-manager-interface/src/main/protobuf/recipient.model.proto
index 5c286982bd5d030560df4ada71454fefcec937b8..5f07b59ff2567fabdad01b05038d9b9211127b30 100644
--- a/user-manager-interface/src/main/protobuf/recipient.model.proto
+++ b/user-manager-interface/src/main/protobuf/recipient.model.proto
@@ -30,6 +30,7 @@ option java_package = "de.ozgcloud.user.recipient";
 option java_outer_classname = "RecipientModelProto";
 
 message GrpcRecipient {
+  option deprecated = true;
   string firstName = 1;
   string lastName = 2;
   string email = 3;
diff --git a/user-manager-interface/src/main/protobuf/recipient.proto b/user-manager-interface/src/main/protobuf/recipient.proto
index bbaae80c221116bf348bba49aa67a1da12c6f02e..8c3d9b273c584960c3e3f647e5ffe09db2209b6e 100644
--- a/user-manager-interface/src/main/protobuf/recipient.proto
+++ b/user-manager-interface/src/main/protobuf/recipient.proto
@@ -32,13 +32,17 @@ option java_package = "de.ozgcloud.user.grpc.recipient";
 option java_outer_classname = "RecipientProto";
 
 service RecipientService {
-  rpc findRecipientByOrganisationsEinheitId(GrpcFindRecipientRequest) returns (GrpcFindRecipientResponse);
+  rpc findRecipientByOrganisationsEinheitId(GrpcFindRecipientRequest) returns (GrpcFindRecipientResponse){
+    option deprecated = true;
+  };
 }
 
 message GrpcFindRecipientRequest {
+  option deprecated = true;
   string organisationsEinheitId = 1;
 }
 
 message GrpcFindRecipientResponse {
+  option deprecated = true;
   repeated GrpcRecipient recipient = 1;
 }
\ No newline at end of file
diff --git a/user-manager-interface/src/main/protobuf/userprofile.model.proto b/user-manager-interface/src/main/protobuf/userprofile.model.proto
index 0a5db4334318f844dca9c0bf1c96dcc07b4d405c..910054b10150ce02ffdf238ad4087cda53d567da 100644
--- a/user-manager-interface/src/main/protobuf/userprofile.model.proto
+++ b/user-manager-interface/src/main/protobuf/userprofile.model.proto
@@ -34,6 +34,15 @@ message GrpcUserProfile {
   string firstName = 2;
   string lastName = 3;
   string email = 4;
+  GrpcUserSettings userSettings = 5;
+}
+
+message GrpcUserSettings {
+  bool notificationsSendForAll = 1;
+	bool vorgangCreated = 2;
+	bool vorgangAssignedToUser = 3;
+	bool postfachNachrichtFromAntragsteller = 4;
+	bool wiedervorlageOverdue = 5;
 }
 
 
@@ -45,6 +54,14 @@ message GrpcGetUserProfileResponse {
   GrpcUserProfile userProfile = 1;
 }
 
+message GrpcGetAllByOrganisationsEinheitIdRequest{
+  string organisationsEinheitId = 1;
+}
+
+message GrpcGetAllByOrganisationsEinheitIdResponse{
+  repeated GrpcUserProfile userProfile = 1;
+}
+
 message GrpcFindInactiveUserIdsResponse {
   repeated GrpcUserProfileId userProfileIds = 1;
 }
diff --git a/user-manager-interface/src/main/protobuf/userprofile.proto b/user-manager-interface/src/main/protobuf/userprofile.proto
index ab445da50c1b7fa166a7d7baae574042f70bddd7..0b22ea5141227ef49ace738890da5d42f882a9d6 100644
--- a/user-manager-interface/src/main/protobuf/userprofile.proto
+++ b/user-manager-interface/src/main/protobuf/userprofile.proto
@@ -37,6 +37,8 @@ service UserProfileService {
 
   rpc GetByExternalId(GrpcGetUserProfileRequest) returns (GrpcGetUserProfileResponse);
 
+  rpc GetAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequest) returns (GrpcGetAllByOrganisationsEinheitIdResponse);
+
   rpc FindInactiveUserIds(GrpcFindInactiveUserIdsRequest) returns (GrpcFindInactiveUserIdsResponse);
 
   rpc DeleteInactiveUser(GrpcDeleteInactiveUserRequest) returns (GrpcDeleteInactiveUserResponse);
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java
index 56f1b35b720162cdefd35edec85cc220787990de..df9598eb6416dbfd15c864337ff060beb47b0840 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java
@@ -28,13 +28,14 @@ import static de.ozgcloud.user.User.*;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import jakarta.enterprise.context.ApplicationScoped;
+
 import org.bson.types.ObjectId;
 
 import de.ozgcloud.common.logging.OzgCloudLogging;
 import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
 import io.quarkus.mongodb.panache.PanacheMongoRepository;
 import io.quarkus.panache.common.Parameters;
-import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
 @OzgCloudLogging
@@ -127,6 +128,10 @@ class UserRepository implements PanacheMongoRepository<User> {
 		return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getAsString);
 	}
 
+	public Stream<User> findAllUsersByOrganisationsEinheitId(String organisationsEinheitId) {
+		return stream(ORGANISATIONS_EINHEIT_IDS_FIELD, organisationsEinheitId);
+	}
+
 	public void deleteById(String id) {
 		deleteById(new ObjectId(id));
 	}
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
index 27edabcc7dc9d0d1e2be4c549065298f1c4eca3e..2fd9d63a9de57a7797443c9097615c8f204dfdd0 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
@@ -28,26 +28,28 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
 
 import org.apache.commons.lang3.StringUtils;
 
 import de.ozgcloud.common.logging.OzgCloudLogging;
+import de.ozgcloud.user.common.errorhandling.FunctionalException;
 import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
 import de.ozgcloud.user.common.errorhandling.TechnicalException;
 import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
 import de.ozgcloud.user.settings.UserSettings;
 import io.smallrye.mutiny.Uni;
 import io.smallrye.mutiny.infrastructure.Infrastructure;
+import lombok.RequiredArgsConstructor;
 
 @ApplicationScoped
 @OzgCloudLogging
+@RequiredArgsConstructor
 public class UserService {
 
-	@Inject
-	UserRepository repository;
-	@Inject
-	KeycloakUserRemoteService keycloakUserRemoteService;
+	static final String MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE = "OrganisationsEinheitId ('%s') can not be null or empty";
+
+	private final UserRepository repository;
+	private final KeycloakUserRemoteService keycloakUserRemoteService;
 
 	public User save(User user) {
 		findUser(user).ifPresentOrElse(persistedUser -> repository.updateUser(addIdUser(user, persistedUser)),
@@ -146,4 +148,11 @@ public class UserService {
 			throw new TechnicalException(String.format("Deleting active users is not allowed [user id: %s].", user.getId().toHexString()));
 		}
 	}
+
+	public Stream<User> findAllUsersOfOrganisationsEinheit(String organisationsEinheitId) {
+		if (StringUtils.isEmpty(organisationsEinheitId)) {
+			throw new FunctionalException(() -> String.format(MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE, organisationsEinheitId));
+		}
+		return repository.findAllUsersByOrganisationsEinheitId(organisationsEinheitId);
+	}
 }
\ No newline at end of file
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientGrpcService.java b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientGrpcService.java
index fa9dc41d0d2f2079ac017b8cfc7b3335e0ab105b..ab0ebdd2f7d0f324171121fd234639f72750ed1b 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientGrpcService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientGrpcService.java
@@ -35,6 +35,7 @@ import io.grpc.stub.StreamObserver;
 import io.quarkus.grpc.GrpcService;
 
 @GrpcService
+@Deprecated
 public class RecipientGrpcService extends RecipientServiceImplBase {
 
 	@Inject
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientMapper.java b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientMapper.java
index bea3d98566fca973601f0139516bdcb3c0d5503c..334c81ea9051bc009b43c80fd000b8f99a4bca84 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientMapper.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientMapper.java
@@ -34,6 +34,7 @@ import de.ozgcloud.user.User;
 		unmappedSourcePolicy = ReportingPolicy.WARN, //
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
 		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
+@Deprecated
 interface RecipientMapper {
 
 	GrpcRecipient toRecipient(User user);
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
index 17482b933b614b1c6f36c61b58b064846937b907..f076298b30f0c1b47d6a2635de33f7957c13da63 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
@@ -15,6 +15,7 @@ import io.quarkus.mongodb.panache.PanacheMongoRepository;
 
 @ApplicationScoped
 @OzgCloudLogging
+@Deprecated
 class RecipientRepository implements PanacheMongoRepository<User> {
 
 	private static final String SEARCH_RECIPIENT_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and "
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientService.java b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientService.java
index b383eceb28d300bae59c83f8c692d05d7cf1e776..c64447393969054c2ada13c40ce2c5066207de60 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientService.java
@@ -25,15 +25,16 @@ package de.ozgcloud.user.recipient;
 
 import java.util.List;
 
-import de.ozgcloud.user.common.errorhandling.FunctionalException;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 
 import com.cronutils.utils.StringUtils;
 
 import de.ozgcloud.user.User;
+import de.ozgcloud.user.common.errorhandling.FunctionalException;
 
 @ApplicationScoped
+@Deprecated
 class RecipientService {
 
 	static final String MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE = "OrganisationsEinheitId ('%s') can not be null or empty";
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsMapper.java b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..329078be5d3c381226adcbc66b0d36d30b8597fc
--- /dev/null
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsMapper.java
@@ -0,0 +1,25 @@
+package de.ozgcloud.user.settings;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.ReportingPolicy;
+
+import de.ozgcloud.user.userprofile.GrpcUserSettings;
+
+@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface UserSettingsMapper {
+
+	@Mapping(target = "mergeFrom", ignore = true)
+	@Mapping(target = "clearField", ignore = true)
+	@Mapping(target = "clearOneof", ignore = true)
+	@Mapping(target = "mergeUnknownFields", ignore = true)
+	@Mapping(target = "unknownFields", ignore = true)
+	@Mapping(target = "allFields", ignore = true)
+	@Mapping(target = "notificationsSendForAll", source = "notificationsSendFor")
+	GrpcUserSettings toGrpc(UserSettings userSettings);
+
+	default boolean map(NotificationsSendFor sendFor) {
+		return NotificationsSendFor.ALL.equals(sendFor);
+	}
+}
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java
index c9d773bed326d3465751c780baf122d39c7c7005..b41ec61d533b1a085fd738d96497588ba2147d93 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java
@@ -25,22 +25,20 @@ package de.ozgcloud.user.userprofile;
 
 import java.util.stream.Stream;
 
-import jakarta.inject.Inject;
-
 import de.ozgcloud.user.User;
 import de.ozgcloud.user.UserService;
 import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceImplBase;
 import io.grpc.stub.StreamObserver;
 import io.quarkus.grpc.GrpcService;
+import lombok.RequiredArgsConstructor;
 
 @GrpcService
+@RequiredArgsConstructor
 public class UserProfileGrpcService extends UserProfileServiceImplBase {
 
-	@Inject
-	UserService service;
+	private final UserService service;
 
-	@Inject
-	UserProfileMapper mapper;
+	private final UserProfileMapper mapper;
 
 	@Override
 	public void getById(GrpcGetUserProfileRequest request, StreamObserver<GrpcGetUserProfileResponse> responseObserver) {
@@ -62,6 +60,22 @@ public class UserProfileGrpcService extends UserProfileServiceImplBase {
 		responseObserver.onCompleted();
 	}
 
+	@Override
+	public void getAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequest request,
+			StreamObserver<GrpcGetAllByOrganisationsEinheitIdResponse> responseObserver) {
+
+		var userProfiles = service.findAllUsersOfOrganisationsEinheit(request.getOrganisationsEinheitId());
+
+		responseObserver.onNext(buildGrpcGetAllByOrganisationsEinheitIdResponse(userProfiles));
+		responseObserver.onCompleted();
+	}
+
+	GrpcGetAllByOrganisationsEinheitIdResponse buildGrpcGetAllByOrganisationsEinheitIdResponse(Stream<User> users) {
+		return GrpcGetAllByOrganisationsEinheitIdResponse.newBuilder()
+				.addAllUserProfile(users.map(mapper::mapTo).toList())
+				.build();
+	}
+
 	@Override
 	public void findInactiveUserIds(GrpcFindInactiveUserIdsRequest request, StreamObserver<GrpcFindInactiveUserIdsResponse> responseObserver) {
 		var userIds = service.findAllInactiveUserIds();
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileMapper.java b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileMapper.java
index c29c5e8d949d498714bc39c1fa38623b2c16f7fd..3807a4bca7807bafefd6a371a5b69227292281dc 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileMapper.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileMapper.java
@@ -30,9 +30,9 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.ReportingPolicy;
 
 import de.ozgcloud.user.User;
+import de.ozgcloud.user.settings.UserSettingsMapper;
 
-@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, //
-		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = UserSettingsMapper.class)
 interface UserProfileMapper {
 
 	@Mapping(target = "emailBytes", ignore = true)
@@ -45,6 +45,7 @@ interface UserProfileMapper {
 	@Mapping(target = "lastNameBytes", ignore = true)
 	@Mapping(target = "unknownFields", ignore = true)
 	@Mapping(target = "allFields", ignore = true)
+	@Mapping(target = "mergeUserSettings", ignore = true)
 	GrpcUserProfile mapTo(User userProfile);
 
 	default String toString(ObjectId objectId) {
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java
index e8cf01e27b347d8c4d93912f4fdcc6f27be59c30..c8bec75135851aa86d27cf3c776f7f61101e6337 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java
@@ -29,6 +29,7 @@ import static org.assertj.core.api.Assertions.*;
 import java.time.Instant;
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Stream;
 
 import jakarta.inject.Inject;
@@ -51,7 +52,7 @@ import io.quarkus.test.junit.TestProfile;
 class UserRepositoryITCase {
 
 	@Inject
-	UserRepository repository;
+	private UserRepository repository;
 
 	@DisplayName("Update unsynced users")
 	@Nested
@@ -249,8 +250,7 @@ class UserRepositoryITCase {
 			Arrays.asList(
 					UserTestFactory.createBuilder().id(null).username("user1").fullName("Franz Vogel").build(),
 					UserTestFactory.createBuilder().id(null).username("user2").fullName("Franz von Holzhausen").build(),
-					UserTestFactory.createBuilder().id(null).username("user3").fullName("Peter Lustig").build()
-			).forEach(repository::persist);
+					UserTestFactory.createBuilder().id(null).username("user3").fullName("Peter Lustig").build()).forEach(repository::persist);
 
 			var foundUsernames = repository.findUsers(query, 10).map(User::getUsername);
 
@@ -266,8 +266,7 @@ class UserRepositoryITCase {
 					Arguments.of("Franz von", new String[] { "user2" }),
 					Arguments.of("Franz von Holzhausen", new String[] { "user2" }),
 					Arguments.of("Franz L", new String[0]),
-					Arguments.of("Peter V", new String[0])
-			);
+					Arguments.of("Peter V", new String[0]));
 		}
 	}
 
@@ -285,8 +284,7 @@ class UserRepositoryITCase {
 			Arrays.asList(
 					UserTestFactory.createBuilder().id(null).username("user1").fullNameReversed("Langbein Franz").build(),
 					UserTestFactory.createBuilder().id(null).username("user2").fullNameReversed("Lustig Peter").build(),
-					UserTestFactory.createBuilder().id(null).username("user3").fullNameReversed("Ilona Nowak").build()
-			).forEach(repository::persist);
+					UserTestFactory.createBuilder().id(null).username("user3").fullNameReversed("Ilona Nowak").build()).forEach(repository::persist);
 
 			var foundUsernames = repository.findUsers(query, 10).map(User::getUsername);
 
@@ -297,8 +295,7 @@ class UserRepositoryITCase {
 			return Stream.of(
 					Arguments.of("L", new String[] { "user1", "user2", "user3" }),
 					Arguments.of("Lustig", new String[] { "user2" }),
-					Arguments.of("Lustig Peter", new String[] { "user2" })
-			);
+					Arguments.of("Lustig Peter", new String[] { "user2" }));
 		}
 	}
 
@@ -573,6 +570,44 @@ class UserRepositoryITCase {
 		}
 	}
 
+	@Nested
+	class TestFindAllUsersByOrganisationsEinheitId {
+
+		private static final String ORGANISATIONSEINHEIT_ID_1 = UUID.randomUUID().toString();
+		private static final String ORGANISATIONSEINHEIT_ID_2 = UUID.randomUUID().toString();
+
+		private final User user1 = UserTestFactory.createBuilder()
+				.id(null)
+				.clearOrganisationsEinheitIds()
+				.organisationsEinheitId(ORGANISATIONSEINHEIT_ID_1)
+				.build();
+		private final User user2 = UserTestFactory.createBuilder()
+				.id(null)
+				.clearOrganisationsEinheitIds()
+				.organisationsEinheitId(ORGANISATIONSEINHEIT_ID_1)
+				.build();
+		private final User user3 = UserTestFactory.createBuilder()
+				.id(null)
+				.clearOrganisationsEinheitIds()
+				.organisationsEinheitId(ORGANISATIONSEINHEIT_ID_2)
+				.build();
+
+		@BeforeEach
+		void init() {
+			repository.deleteAll();
+			repository.persist(user1);
+			repository.persist(user2);
+			repository.persist(user3);
+		}
+
+		@Test
+		void shouldFindUsersByOrganisationsEinheitId() {
+			var users = repository.findAllUsersByOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID_1);
+
+			assertThat(users).usingRecursiveFieldByFieldElementComparator().containsExactlyInAnyOrder(user1, user2);
+		}
+	}
+
 	@Nested
 	class TestDeleteById {
 
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java
index 98c81190f771301e7d9452acb42277da982c0cd8..3ca1e919622d88b5b2e23221994ba082b673692c 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.*;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import org.assertj.core.api.Condition;
 import org.bson.types.ObjectId;
@@ -49,12 +50,12 @@ import io.quarkus.panache.common.Parameters;
 
 class UserRepositoryTest {
 	@Spy
-	UserRepository userRepository;
+	private UserRepository userRepository;
 
 	@Mock
-	PanacheQuery<User> panacheQuery;
+	private PanacheQuery<User> panacheQuery;
 
-	User user = UserTestFactory.create();
+	private final User user = UserTestFactory.create();
 
 	@DisplayName("Test updating users")
 	@Nested
@@ -190,15 +191,42 @@ class UserRepositoryTest {
 			assertThatExceptionOfType(ResourceNotFoundException.class).isThrownBy(() -> userRepository.refresh(UserTestFactory.create())); // NOSONAR
 		}
 	}
-	
+
 	@Nested
 	class TestToRegex {
-		
+
 		@Test
-		void shouldReturnRegex(){
+		void shouldReturnRegex() {
 			var regex = userRepository.toRegex("abc");
 
 			assertThat(regex).isEqualTo("/.*abc.*/i");
 		}
 	}
+
+	@Nested
+	class TestFindAllUsersByOrganisationsEinheitId {
+
+		@BeforeEach
+		void mock() {
+			doReturn(Stream.of(user)).when(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+
+		@Test
+		void shouldFindUsers() {
+			callRepository();
+
+			verify(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+
+		@Test
+		void shouldReturnStreamOfUsers() {
+			var users = callRepository();
+
+			assertThat(users).containsExactly(user);
+		}
+
+		private Stream<User> callRepository() {
+			return userRepository.findAllUsersByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+	}
 }
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
index 434d355536c0ccc3b261ad8557e9aeab7eda031d..c9f783ae036b70bd1a25933303034679c0c3cce0 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
@@ -38,10 +38,13 @@ import org.bson.types.ObjectId;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.user.common.errorhandling.FunctionalException;
 import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
 import de.ozgcloud.user.common.errorhandling.TechnicalException;
 import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
@@ -399,4 +402,42 @@ class UserServiceTest {
 			verify(repository).persist(user);
 		}
 	}
+
+	@Nested
+	class TestFindAllUsersOfOrganisationsEinheit {
+
+		private static final String EXPECTED_EXCEPTION_MESSAGE_TEMPLATE = "Functional error: "
+				+ UserService.MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE;
+
+		@Test
+		void shouldCallRepository() {
+			callService();
+
+			verify(repository).findAllUsersByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+
+		@Test
+		void shouldReturnFoundUsers() {
+			var users = Stream.of(UserTestFactory.create());
+			when(repository.findAllUsersByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users);
+
+			var returnedUsers = callService();
+
+			assertThat(returnedUsers).isEqualTo(users);
+		}
+
+		private Stream<User> callService() {
+			return service.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+
+		@ParameterizedTest
+		@NullAndEmptySource
+		void shouldThrowFunctionalExceptionOnInvalidOrganisationsId(String organisationsEinheitId) {
+			var expectedMessage = String.format(EXPECTED_EXCEPTION_MESSAGE_TEMPLATE, organisationsEinheitId);
+
+			assertThatExceptionOfType(FunctionalException.class)
+					.isThrownBy(() -> service.findAllUsersOfOrganisationsEinheit(organisationsEinheitId))
+					.withMessageStartingWith(expectedMessage);
+		}
+	}
 }
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserTestFactory.java
index fc8e1524b13bd267a2734f224601751bdd19aea9..4292703149d8a5fc94e41c06d55aecc6743d18fa 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/UserTestFactory.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserTestFactory.java
@@ -27,6 +27,7 @@ import java.util.List;
 
 import org.bson.types.ObjectId;
 
+import de.ozgcloud.user.settings.UserSettings;
 import de.ozgcloud.user.settings.UserSettingsTestFactory;
 
 public class UserTestFactory {
@@ -45,6 +46,7 @@ public class UserTestFactory {
 	public static final String EXTERNAL_ID = "aec115b5-67be-42c9-a693-36d4d711a87a";
 	public static final String ORGANISTATIONSEINHEITEN_ID = "0815";
 	public static final List<String> ROLES = List.of("ROLE_1", "POSTSTELLE");
+	public static final UserSettings USER_SETTINGS = UserSettingsTestFactory.create();
 
 	public static User create() {
 		return createBuilder().build();
@@ -64,6 +66,6 @@ public class UserTestFactory {
 				.externalId(EXTERNAL_ID)
 				.organisationsEinheitId(ORGANISTATIONSEINHEITEN_ID)
 				.roles(ROLES)
-				.userSettings(UserSettingsTestFactory.create());
+				.userSettings(USER_SETTINGS);
 	}
 }
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/GrpcUserSettingsTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/GrpcUserSettingsTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..39e625f696b39516c4400cb14b974b227fc2229e
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/GrpcUserSettingsTestFactory.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2022 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.user.settings;
+
+import de.ozgcloud.user.userprofile.GrpcUserSettings;
+
+public class GrpcUserSettingsTestFactory {
+
+	public static final boolean NOTIFICATIONS_SEND_FOR = NotificationsSendFor.ALL == UserSettingsTestFactory.NOTIFICATIONS_SEND_FOR;
+	public static final boolean VORGANG_CREATED = UserSettingsTestFactory.VORGANG_CREATED;
+	public static final boolean VORGANG_ASSIGNED_TO_USER = UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER;
+	public static final boolean POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER = UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER;
+	public static final boolean WIEDERVORLAGE_OVERDUE = UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE;
+
+	public static GrpcUserSettings create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcUserSettings.Builder createBuilder() {
+		return GrpcUserSettings.newBuilder()
+				.setNotificationsSendForAll(NOTIFICATIONS_SEND_FOR)
+				.setVorgangCreated(VORGANG_CREATED)
+				.setVorgangAssignedToUser(VORGANG_ASSIGNED_TO_USER)
+				.setPostfachNachrichtFromAntragsteller(POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER)
+				.setWiedervorlageOverdue(WIEDERVORLAGE_OVERDUE);
+	}
+}
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsMapperTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..41c6366177f29902c61485d2372dc26051260639
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsMapperTest.java
@@ -0,0 +1,23 @@
+package de.ozgcloud.user.settings;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+class UserSettingsMapperTest {
+
+	private final UserSettingsMapper mapper = Mappers.getMapper(UserSettingsMapper.class);
+
+	@Nested
+	class TestToGrpc {
+
+		@Test
+		void shouldMapToGrpc() {
+			var userSettings = mapper.toGrpc(UserSettingsTestFactory.create());
+
+			assertThat(userSettings).usingRecursiveComparison().isEqualTo(GrpcUserSettingsTestFactory.create());
+		}
+	}
+}
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdRequestTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdRequestTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..32bbabc55e0d05124a2e112e52e683fe3fc8c295
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdRequestTestFactory.java
@@ -0,0 +1,19 @@
+package de.ozgcloud.user.userprofile;
+
+import de.ozgcloud.user.UserTestFactory;
+import de.ozgcloud.user.userprofile.GrpcGetAllByOrganisationsEinheitIdRequest.Builder;
+
+public class GrpcGetAllByOrganisationsEinheitIdRequestTestFactory {
+
+	public static final String ORGANISTATIONSEINHEITEN_ID = UserTestFactory.ORGANISTATIONSEINHEITEN_ID;
+
+	public static GrpcGetAllByOrganisationsEinheitIdRequest create() {
+		return createBuilder()
+				.build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcGetAllByOrganisationsEinheitIdRequest.newBuilder()
+				.setOrganisationsEinheitId(ORGANISTATIONSEINHEITEN_ID);
+	}
+}
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdResponseTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdResponseTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..de7b1c0dcd975d189a58f6a2d47a123ba866325e
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcGetAllByOrganisationsEinheitIdResponseTestFactory.java
@@ -0,0 +1,17 @@
+package de.ozgcloud.user.userprofile;
+
+import de.ozgcloud.user.userprofile.GrpcGetAllByOrganisationsEinheitIdResponse.Builder;
+
+public class GrpcGetAllByOrganisationsEinheitIdResponseTestFactory {
+
+	public static final GrpcUserProfile USER_PROFILE = GrpcUserProfileTestFactory.create();
+
+	public static GrpcGetAllByOrganisationsEinheitIdResponse create() {
+		return createBuilder().build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcGetAllByOrganisationsEinheitIdResponse.newBuilder()
+				.addUserProfile(USER_PROFILE);
+	}
+}
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcUserProfileTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcUserProfileTestFactory.java
index 16fd8ad1742ccc8f91bfe9d037c9f481f9776126..5146952f18f7371d5fda9b2ad620410323c5851d 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcUserProfileTestFactory.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/GrpcUserProfileTestFactory.java
@@ -24,6 +24,7 @@
 package de.ozgcloud.user.userprofile;
 
 import de.ozgcloud.user.UserTestFactory;
+import de.ozgcloud.user.settings.GrpcUserSettingsTestFactory;
 
 public class GrpcUserProfileTestFactory {
 
@@ -34,6 +35,7 @@ public class GrpcUserProfileTestFactory {
 	public static GrpcUserProfile.Builder createBuilder() {
 		return GrpcUserProfile.newBuilder()
 				.setFirstName(UserTestFactory.FIRST_NAME)
-				.setLastName(UserTestFactory.LAST_NAME);
+				.setLastName(UserTestFactory.LAST_NAME)
+				.setUserSettings(GrpcUserSettingsTestFactory.create());
 	}
 }
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java
index 3b8038541b8de00c0392014cc886cb611710598a..1dbd5875884f37f102b47004cd1d07e9d8efc940 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java
@@ -157,6 +157,86 @@ class UserProfileGrpcServiceTest {
 		}
 	}
 
+	@Nested
+	class TestGetAllByOrganisationsEinheitId {
+
+		@Mock
+		private StreamObserver<GrpcGetAllByOrganisationsEinheitIdResponse> streamObserver;
+
+		private final Stream<User> users = Stream.of(UserTestFactory.create());
+		private final GrpcGetAllByOrganisationsEinheitIdResponse response = GrpcGetAllByOrganisationsEinheitIdResponseTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(userService.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users);
+		}
+
+		@Test
+		void shouldCallUserService() {
+			callService();
+
+			verify(userService).findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
+		}
+
+		@Test
+		void shouldBuildGrpcGetAllByOrganisationsEinheitIdResponse() {
+			callService();
+
+			verify(grpcService).buildGrpcGetAllByOrganisationsEinheitIdResponse(users);
+		}
+
+		@Test
+		void shouldCallOnNext() {
+			doReturn(response).when(grpcService).buildGrpcGetAllByOrganisationsEinheitIdResponse(users);
+
+			callService();
+
+			verify(streamObserver).onNext(response);
+		}
+
+		@Test
+		void shouldCallOnCompleted() {
+			callService();
+
+			verify(streamObserver).onCompleted();
+		}
+
+		private void callService() {
+			grpcService.getAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequestTestFactory.create(), streamObserver);
+		}
+	}
+
+	@Nested
+	class TestBuildGrpcGetAllByOrganisationsEinheitIdResponse {
+
+		private final User user = UserTestFactory.create();
+		private final Stream<User> users = Stream.of(user);
+		private GrpcUserProfile grpcUserProfile = GrpcUserProfileTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(mapper.mapTo(user)).thenReturn(grpcUserProfile);
+		}
+
+		@Test
+		void shouldMapUser() {
+			callService();
+
+			verify(mapper).mapTo(user);
+		}
+
+		@Test
+		void shouldMappedUsersInResponse() {
+			var response = callService();
+
+			assertThat(response.getUserProfileList()).containsExactly(grpcUserProfile);
+		}
+
+		private GrpcGetAllByOrganisationsEinheitIdResponse callService() {
+			return grpcService.buildGrpcGetAllByOrganisationsEinheitIdResponse(users);
+		}
+	}
+
 	@Nested
 	class TestBuildGrpcGetInactiveUserIdsResponse {
 
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileMapperTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileMapperTest.java
index fa280033555979187ac89125d3b219b44ff82429..834524816f1ee6230ec8fd30a9386da8d2d618f8 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileMapperTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileMapperTest.java
@@ -33,6 +33,7 @@ import org.mapstruct.factory.Mappers;
 
 import de.ozgcloud.user.User;
 import de.ozgcloud.user.UserTestFactory;
+import de.ozgcloud.user.settings.GrpcUserSettingsTestFactory;
 
 class UserProfileMapperTest {
 
@@ -70,6 +71,13 @@ class UserProfileMapperTest {
 			assertThat(userProfile.getId()).isEqualTo(UserTestFactory.ID.toString());
 		}
 
+		@Test
+		void shouldMapUserSettings() {
+			var userProfile = map();
+
+			assertThat(userProfile.getUserSettings()).usingRecursiveComparison().isEqualTo(GrpcUserSettingsTestFactory.create());
+		}
+
 		private GrpcUserProfile map() {
 			return mapper.mapTo(UserTestFactory.create());
 		}