diff --git a/api-lib-core/pom.xml b/api-lib-core/pom.xml
index d9dac238a6067872fccc2b71d94741275ca7e7be..04fe74c643a01d00d86949ec87018e39aa8be53b 100644
--- a/api-lib-core/pom.xml
+++ b/api-lib-core/pom.xml
@@ -17,6 +17,8 @@
 		<maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
 		<maven-failsafe-plugin.version>3.1.2</maven-failsafe-plugin.version>
 		<jacoco.plugin.version>0.8.10</jacoco.plugin.version>
+		
+		<user-manager.version>2.0.0-SNAPSHOT</user-manager.version>
 	</properties>
 
 	<dependencies>
@@ -39,6 +41,12 @@
 			<groupId>de.itvsh.ozg.pluto</groupId>
 			<artifactId>pluto-utils</artifactId>
 		</dependency>
+		
+		<dependency>
+			<groupId>de.ozgcloud.user</groupId>
+			<artifactId>user-manager-interface</artifactId>
+			<version>${user-manager.version}</version>
+		</dependency>
 
 		<!--spring -->
 		<dependency>
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileService.java
new file mode 100644
index 0000000000000000000000000000000000000000..549ac07ae4036d7d167667417bac5c757b9dfeca
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileService.java
@@ -0,0 +1,26 @@
+package de.ozgcloud.apilib.user;
+
+import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
+import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public class GrpcOzgCloudUserProfileService implements OzgCloudUserProfileService {
+
+	private final UserProfileServiceBlockingStub serviceStub;
+
+	private final UserProfileMapper mapper;
+
+	@Override
+	public OzgCloudUserProfile getById(OzgCloudUserId userId) {
+		var grpcUserProfileResponse = serviceStub.getById(buildGetUserRequest(userId));
+
+		return mapper.mapFromGrpc(grpcUserProfileResponse.getUserProfile());
+	}
+
+	private GrpcGetUserProfileRequest buildGetUserRequest(OzgCloudUserId id) {
+		return GrpcGetUserProfileRequest.newBuilder()
+				.setUserId(id.toString())
+				.build();
+	}
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfile.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfile.java
new file mode 100644
index 0000000000000000000000000000000000000000..f8c9089fde456c73c19c0b0f6b87162ce80e297f
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfile.java
@@ -0,0 +1,15 @@
+package de.ozgcloud.apilib.user;
+
+import lombok.Builder;
+import lombok.Getter;
+
+@Builder
+@Getter
+public class OzgCloudUserProfile {
+
+	private OzgCloudUserId id;
+
+	private String firstName;
+	private String lastName;
+	private String email;
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfileService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfileService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a769f63f92287d035ca4284c2630b893d15a303a
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/OzgCloudUserProfileService.java
@@ -0,0 +1,6 @@
+package de.ozgcloud.apilib.user;
+
+public interface OzgCloudUserProfileService {
+
+	public OzgCloudUserProfile getById(OzgCloudUserId userId);
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/user/UserProfileMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/UserProfileMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ae1f4e46c9e1ad8fb934145fddcf7d2e8da48d0
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/user/UserProfileMapper.java
@@ -0,0 +1,16 @@
+package de.ozgcloud.apilib.user;
+
+import org.mapstruct.Mapper;
+
+import de.ozgcloud.user.userprofile.GrpcUserProfile;
+import lombok.NonNull;
+
+@Mapper
+public interface UserProfileMapper {
+
+	OzgCloudUserProfile mapFromGrpc(GrpcUserProfile userProfile);
+
+	default OzgCloudUserId toOzgCloudUserId(@NonNull String id) {
+		return OzgCloudUserId.from(id);
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcGetUserProfileResponseTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcGetUserProfileResponseTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c9ec6e55032f8e87978b7b2d9842a6679a3ddbc
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcGetUserProfileResponseTestFactory.java
@@ -0,0 +1,15 @@
+package de.ozgcloud.apilib.user;
+
+import de.ozgcloud.user.userprofile.GrpcGetUserProfileResponse;
+
+public class GrpcGetUserProfileResponseTestFactory {
+
+	public static GrpcGetUserProfileResponse create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcGetUserProfileResponse.Builder createBuilder() {
+		return GrpcGetUserProfileResponse.newBuilder()
+				.setUserProfile(GrpcUserProfileTestFactory.create());
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e15fa0a4a24ff42c46cd344c1bf22abcc8bb0ca
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcOzgCloudUserProfileServiceTest.java
@@ -0,0 +1,64 @@
+package de.ozgcloud.apilib.user;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+
+import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
+import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
+
+class GrpcOzgCloudUserProfileServiceTest {
+
+	@InjectMocks
+	private GrpcOzgCloudUserProfileService service;
+
+	@Mock
+	private UserProfileServiceBlockingStub userProfileServiceStub;
+	@Mock
+	private UserProfileMapper mapper;
+
+	@Nested
+	class TestGetById {
+		@Captor
+		private ArgumentCaptor<GrpcGetUserProfileRequest> requestCaptor;
+
+		private OzgCloudUserProfile mappedUserProfile = OzgCloudUserProfileTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			when(userProfileServiceStub.getById(any())).thenReturn(GrpcGetUserProfileResponseTestFactory.create());
+			when(mapper.mapFromGrpc(any())).thenReturn(mappedUserProfile);
+		}
+
+		@Test
+		void shouldCallStub() {
+			service.getById(OzgCloudUserProfileTestFactory.ID);
+
+			verify(userProfileServiceStub).getById(requestCaptor.capture());
+			assertThat(requestCaptor.getValue().getUserId()).isEqualTo(OzgCloudUserProfileTestFactory.ID.toString());
+		}
+
+		@Test
+		void shouldCallMapper() {
+			service.getById(OzgCloudUserProfileTestFactory.ID);
+
+			verify(mapper).mapFromGrpc(any());
+		}
+
+		@Test
+		void shouldReturnResult() {
+			var result = service.getById(OzgCloudUserProfileTestFactory.ID);
+
+			assertThat(result).isSameAs(mappedUserProfile);
+		}
+	}
+
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcUserProfileTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcUserProfileTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..b34ec0e294629ded591ac1174a8e8e5406b177c2
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/GrpcUserProfileTestFactory.java
@@ -0,0 +1,20 @@
+package de.ozgcloud.apilib.user;
+
+import static de.ozgcloud.apilib.user.OzgCloudUserProfileTestFactory.*;
+
+import de.ozgcloud.user.userprofile.GrpcUserProfile;
+
+public class GrpcUserProfileTestFactory {
+
+	public static GrpcUserProfile create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcUserProfile.Builder createBuilder() {
+		return GrpcUserProfile.newBuilder()
+				.setId(ID.toString())
+				.setFirstName(FIRST_NAME)
+				.setLastName(LAST_NAME);
+
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/user/OzgCloudUserProfileTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/OzgCloudUserProfileTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ecd77ac0bc38e3dc061e0120473bd19cc385d933
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/user/OzgCloudUserProfileTestFactory.java
@@ -0,0 +1,23 @@
+package de.ozgcloud.apilib.user;
+
+import java.util.UUID;
+
+public class OzgCloudUserProfileTestFactory {
+
+	public static final OzgCloudUserId ID = OzgCloudUserId.from(UUID.randomUUID().toString());
+	public static final String FIRST_NAME = "Theo";
+	public static final String LAST_NAME = "Test";
+	public static final String EMAIL = "theo@local";
+
+	public static OzgCloudUserProfile create() {
+		return createBuilder().build();
+	}
+
+	public static OzgCloudUserProfile.OzgCloudUserProfileBuilder createBuilder() {
+		return OzgCloudUserProfile.builder()
+				.id(ID)
+				.firstName(FIRST_NAME)
+				.lastName(LAST_NAME)
+				.email(EMAIL);
+	}
+}
diff --git a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
index de90768eab0aaaf249f37c15984fd4f19a08290d..c47106980a377540e4f66b9df187eab8d3685ff2 100644
--- a/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
+++ b/ozg-cloud-spring-boot-starter/src/main/java/de/ozgcloud/client/autoconfigure/OzgCloudClientAutoConfiguration.java
@@ -25,12 +25,16 @@ import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import de.ozgcloud.apilib.common.command.grpc.GrpcOzgCloudCommandService;
 import de.ozgcloud.apilib.file.dummy.DummyOzgCloudFileService;
 import de.ozgcloud.apilib.file.grpc.GrpcOzgCloudFileService;
+import de.ozgcloud.apilib.user.GrpcOzgCloudUserProfileService;
+import de.ozgcloud.apilib.user.OzgCloudUserProfileService;
+import de.ozgcloud.apilib.user.UserProfileMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.dummy.DummyVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
 import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper;
 import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper;
+import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
 import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration;
 import net.devh.boot.grpc.client.config.GrpcChannelProperties;
 import net.devh.boot.grpc.client.config.GrpcChannelsProperties;
@@ -56,10 +60,10 @@ public class OzgCloudClientAutoConfiguration {
 	@Autowired
 	private OzgCloudCommandManagerProperties commandManagerProperties;
 
-	//	@Bean
-	//	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
+	// @Bean
+	// @ConditionalOnProperty("ozgcloud.vorgang-manager.address")
 	GrpcChannelsProperties channelProperties(GrpcChannelsProperties properties) {
-		//		var properties = new GrpcChannelsProperties();
+		// var properties = new GrpcChannelsProperties();
 		var clientMap = properties.getClient();
 
 		addVorgangManager(clientMap);
@@ -111,8 +115,8 @@ public class OzgCloudClientAutoConfiguration {
 	@Bean("ozgCloudVorgangService")
 	@ConditionalOnProperty("ozgcloud.vorgang-manager.address")
 	OzgCloudVorgangService grpcOzgCloudVorgangService(VorgangServiceBlockingStub vorgangServiceStub,
-		OzgCloudVorgangMapper mapper,
-		OzgCloudVorgangStubMapper stubMapper, OzgCloudCallContextProvider contextProvider) {
+			OzgCloudVorgangMapper mapper,
+			OzgCloudVorgangStubMapper stubMapper, OzgCloudCallContextProvider contextProvider) {
 
 		return new GrpcOzgCloudVorgangService(vorgangServiceStub, mapper, stubMapper, contextProvider);
 	}
@@ -141,9 +145,9 @@ public class OzgCloudClientAutoConfiguration {
 	@Bean
 	@ConditionalOnProperty("ozgcloud.command-manager.address")
 	OzgCloudCommandService grpcOzgCloudCommandService(@GrpcClient("command-manager") CommandServiceBlockingStub commandServiceStub,
-		CommandMapper commandMapper, OzgCloudCallContextProvider contextProvider) {
+			CommandMapper commandMapper, OzgCloudCallContextProvider contextProvider) {
 		return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper, contextProvider,
-			GrpcOzgCloudCommandService.DEFAULT_COMMAND_REQUEST_THRESHOLD_MILLIS);
+				GrpcOzgCloudCommandService.DEFAULT_COMMAND_REQUEST_THRESHOLD_MILLIS);
 	}
 
 	@Bean
@@ -163,4 +167,11 @@ public class OzgCloudClientAutoConfiguration {
 	AlfaService alfaService() {
 		return new DummyAlfaService();
 	}
+
+	@Bean
+	@ConditionalOnProperty("ozgcloud.user-manager.address")
+	OzgCloudUserProfileService grpcOzgCloudUserProfileService(@GrpcClient("user-manager") UserProfileServiceBlockingStub grpcStub,
+			UserProfileMapper mapper) {
+		return new GrpcOzgCloudUserProfileService(grpcStub, mapper);
+	}
 }
diff --git a/pom.xml b/pom.xml
index 5eb6fa5c1e201eb151d780c17d7364ad86a9d399..b943bbf3de2eaa5369b5b2b9cfcebb0e4b572ada 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,7 @@
 					</execution>
 				</executions>
 			</plugin>
+			
 		</plugins>
 	</build>