diff --git a/Jenkinsfile b/Jenkinsfile
index c1c240d05ef207061c0d3c6de725f2a7609ac9e8..0a5f73bb61823ed177c3685b8dbd252a54d8f864 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -341,20 +341,26 @@ Void setAnsibleKubeConfig() {
 Void checkoutProvisioningRepo(String stage) {   
     withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
         dir(stage) {
-        sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
+            sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
 
-            // todo remove git checkout
-            //dir('provisioning') {
-            //    sh 'git checkout ozg-2552-jenkins-e2e'
-            //}
+            if (env.BRANCH_NAME == 'release') {
+                dir('provisioning') {
+                    sh 'git checkout release'
+                }
+            }
         }
     }
 }
 
 Void copyTestEnvironmentToDev(stage) {
     dir("${stage}/provisioning") {
-        def devEnvFile = "playbook/inventory/versions/dev.yml"
-        def testEnvFile = "playbook/inventory/versions/test.yml"
+        def devEnvFile = "inventories/group_vars/dev/versions"
+        def testEnvFile = "inventories/group_vars/test/versions"            
+
+        if (env.BRANCH_NAME == 'release') {
+            devEnvFile = "playbook/inventory/versions/dev.yml"
+            testEnvFile = "playbook/inventory/versions/test.yml"
+        }
 
         def devVersions = readYaml file: devEnvFile
         def testVersions = readYaml file: testEnvFile
@@ -368,7 +374,11 @@ Void copyTestEnvironmentToDev(stage) {
 
 Void editEnvironemntVersion(String stage, String imageTag, Boolean isEa) {
     dir("${stage}/provisioning") {
-        def editFile = "playbook/inventory/versions/dev.yml"
+        def editFile = "inventories/group_vars/dev/versions"
+        
+        if (env.BRANCH_NAME == 'release') {
+            editFile = "playbook/inventory/versions/dev.yml"
+        }
 
         def devVersions = readYaml file: editFile
 
@@ -380,8 +390,6 @@ Void editEnvironemntVersion(String stage, String imageTag, Boolean isEa) {
         devVersions.versions.goofy.image.tag = imageTag
 
         writeYaml file: editFile, data: devVersions, overwrite: true
-
-        sh "cat ${editFile}"
     }
 }
 
@@ -395,7 +403,12 @@ String getSpringProfile(Boolean isEa) {
 
 Void setupEaEnvironment(String stage) {
     dir("${stage}/provisioning") {
-        def editFile = "playbook/inventory/group_vars/all.yml"
+        def editFile = "inventories/group_vars/all/env"
+
+        if (env.BRANCH_NAME == 'release') {
+            editFile = "playbook/inventory/group_vars/all.yml"
+        }
+
         def groupVars = readYaml file: editFile
 
         groupVars.kop_einheitlicher_ansprechpartner = true
@@ -406,7 +419,12 @@ Void setupEaEnvironment(String stage) {
 
 Void setPlutoDatabasePassword(String stage) {
     dir("${stage}/provisioning") {
-        def editFile = "playbook/inventory/versions/dev.yml"
+        def editFile = "inventories/group_vars/dev/versions"
+        
+        if (env.BRANCH_NAME == 'release') {
+            editFile = "playbook/inventory/versions/dev.yml"
+        }
+
         def devVars = readYaml file: editFile
 
         devVars.values.pluto.database.password = "XnHhfznNWg65NNd"
@@ -427,7 +445,7 @@ Void rolloutKopStack(String bezeichner, String stage) {
                     "install_fs_adapter":false, \
                     "external_db_enabled":false}"""
 
-            sh "ansible-playbook playbook/rollout.yml --extra-vars '${ansibleVars}'"
+            sh "ansible-playbook playbooks/rollout.yml --extra-vars '${ansibleVars}'"
         }
     }
 }
@@ -446,7 +464,7 @@ Void addKeycloakGroups(String bezeichner, String stage) {
             }"""
 
             dir("${stage}/provisioning") {
-                sh "ansible-playbook playbook/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
+                sh "ansible-playbook playbooks/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
             }
     	}
     }
@@ -466,7 +484,7 @@ Void addKeycloakUser(String bezeichner, String stage) {
             }"""
 
             dir("${stage}/provisioning") {
-                sh "ansible-playbook playbook/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
+                sh "ansible-playbook playbooks/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
             }
         }
     }
@@ -479,7 +497,7 @@ Void deleteKopStack(String bezeichner, String stage) {
                     "kop_env":"dev", \
                     "kop_bezeichner":${bezeichner}}"""
 
-            sh "ansible-playbook playbook/delete-commune.yml --extra-vars '${ansibleVars}'"
+            sh "ansible-playbook playbooks/delete-commune.yml --extra-vars '${ansibleVars}'"
         }
     }
 }
diff --git a/goofy-client/libs/postfach/src/lib/postfach.module.ts b/goofy-client/libs/postfach/src/lib/postfach.module.ts
index 73e5115ee1bee6a0e9e982106aca8e73328180bb..51873ed48f38cdce082bd9ff7acd6df11c9c46e0 100644
--- a/goofy-client/libs/postfach/src/lib/postfach.module.ts
+++ b/goofy-client/libs/postfach/src/lib/postfach.module.ts
@@ -27,7 +27,7 @@ const routes: Routes = [
 	{
 		path: 'postfach',
 		component: PostfachPageContainerComponent,
-		title: 'Postfach zum Vorgang | Alfa'
+		title: 'Nachrichten zum Vorgang | Alfa'
 	}
 ];
 
diff --git a/goofy-client/libs/vorgang/src/lib/vorgang.module.ts b/goofy-client/libs/vorgang/src/lib/vorgang.module.ts
index 6708cae6c7f1f88f6731bed39e7841c011927df2..49f433b03c481402f1680915ed115f5170cd5c7b 100644
--- a/goofy-client/libs/vorgang/src/lib/vorgang.module.ts
+++ b/goofy-client/libs/vorgang/src/lib/vorgang.module.ts
@@ -20,7 +20,7 @@ const routes: Routes = [
 	{
 		path: '',
 		component: VorgangListPageContainerComponent,
-		title: 'Vorgang Übersichtsseite | Alfa'
+		title: 'Alle Vorgänge | Alfa'
 	},
 	{
 		path: 'search/:search',
@@ -35,12 +35,12 @@ const routes: Routes = [
 	{
 		path: 'myVorgaenge/search/:search',
 		component: VorgangListPageContainerComponent,
-		title: 'Suchergebniss in meine Vorgänge | Alfa'
+		title: 'Suchergebnis in meine Vorgänge | Alfa'
 	},
 	{
 		path: 'vorgang/:vorgangWithEingangUrl',
 		loadChildren: () => import('@goofy-client/vorgang-detail').then(m => m.VorgangDetailModule),
-		title: 'Vorgangdetails | Alfa'
+		title: 'Details zum Vorgang | Alfa'
 	},
 ];
 
diff --git a/goofy-client/pom.xml b/goofy-client/pom.xml
index 641ca104804688f78f5e3ab96b556a2dc59bedda..45e6b5587379e4660ece10d816b5561dd8bd22c4 100644
--- a/goofy-client/pom.xml
+++ b/goofy-client/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>de.itvsh.ozg</groupId>
 		<artifactId>goofy</artifactId>
-		<version>0.31.0-SNAPSHOT</version>
+		<version>0.32.0-SNAPSHOT</version>
 	</parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml
index ba4e53191ef5670c93764305b9e4d0a8c80f00fe..24c74564ce454a3a77092d6d223c435fd550431e 100644
--- a/goofy-server/pom.xml
+++ b/goofy-server/pom.xml
@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>de.itvsh.ozg</groupId>
 		<artifactId>goofy</artifactId>
-		<version>0.31.0-SNAPSHOT</version>
+		<version>0.32.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>goofy-server</artifactId>
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/RootController.java b/goofy-server/src/main/java/de/itvsh/goofy/RootController.java
index 97b2c40373c78b5024cc55eb7c6b5d917240e935..a2ea4de838cd30a4e69ea22ededfe7d03ecd62b4 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/RootController.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/RootController.java
@@ -5,7 +5,9 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
 import java.time.Instant;
 import java.util.Optional;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.info.BuildProperties;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
@@ -31,15 +33,22 @@ public class RootController {
 	static final String REL_MY_VORGAENGE = "myVorgaenge";
 	static final String REL_SEARCH_MY_VORGAENGE = "searchMyVorgaenge";
 	static final String REL_DOWNLOAD_TOKEN = "downloadToken";
+	static final String REL_CURRENT_USER = "currentUser";
 
 	@Autowired(required = false)
 	public BuildProperties buildProperties;
 	@Autowired
 	private CurrentUserService currentUserService;
 
+	@Value("${kop.user-manager.url:}")
+	private String userManagerUrl;
+
+	@Value("${kop.user-manager.profile-template:}")
+	private String userProfileTemplate;
+
 	@GetMapping
 	public EntityModel<RootResource> getRootResource() {
-		return ModelBuilder.fromEntity(new RootResource())
+		var model = ModelBuilder.fromEntity(new RootResource())
 				.ifMatch(this::hasRole).addLinks(
 						linkTo(RootController.class).withSelfRel(),
 						linkTo(VorgangController.class).withRel(REL_VORGAENGE),
@@ -50,6 +59,12 @@ public class RootController {
 						buildVorgangListByPageLink(REL_MY_VORGAENGE, Optional.of(currentUserService.getUserId())),
 						buildVorgangListByPageLink(REL_SEARCH_MY_VORGAENGE, Optional.of(currentUserService.getUserId())))
 				.buildModel();
+
+		getUserProfilesUrl().ifPresent(urlTemplate -> {
+			model.add(Link.of(String.format(urlTemplate, currentUserService.getUserId()), REL_CURRENT_USER));
+		});
+
+		return model;
 	}
 
 	boolean hasRole() {
@@ -61,6 +76,14 @@ public class RootController {
 				|| currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE);
 	}
 
+	Optional<String> getUserProfilesUrl() {
+		if (StringUtils.isNotEmpty(userManagerUrl) && StringUtils.isNotEmpty(userProfileTemplate)) {
+			return Optional.of(userManagerUrl + userProfileTemplate);
+		}
+
+		return Optional.empty();
+	}
+
 	private Link buildVorgangListByPageLink(String linkRel, Optional<UserId> assignedTo) {
 		return linkTo(methodOn(VorgangController.class).getVorgangListByPage(0, null, null, assignedTo)).withRel(linkRel);
 	}
diff --git a/goofy-server/src/main/resources/application-local.yml b/goofy-server/src/main/resources/application-local.yml
index d9fb15b0f488f337653c6a468491e4c7aa08929b..e31341b5373e35f978cca6e7c4c24d3ea2bab468 100644
--- a/goofy-server/src/main/resources/application-local.yml
+++ b/goofy-server/src/main/resources/application-local.yml
@@ -5,7 +5,7 @@ logging:
 
 goofy:
   production: false
-  
+    
 keycloak:
   auth-server-url: http://localhost:8088/auth
   realm: sh-kiel-dev
@@ -13,4 +13,9 @@ keycloak:
 
 server:
   error:
-    include-stacktrace: always
\ No newline at end of file
+    include-stacktrace: always
+
+kop:
+  user-manager:
+    url: http://localhost:9092
+    profile-template: /api/userProfiles/%s
\ No newline at end of file
diff --git a/goofy-server/src/main/resources/application.yml b/goofy-server/src/main/resources/application.yml
index c42fb1cb1c35ac8e8bde5b43a3ef01c5706dd391..2e89353325d25d232a366d0d5209fe1f7d28c75e 100644
--- a/goofy-server/src/main/resources/application.yml
+++ b/goofy-server/src/main/resources/application.yml
@@ -76,4 +76,6 @@ kop:
   upload:
     maxFileSize:
       postfachNachrichtAttachment: 3MB
-      wiedervorlageAttachment: 40MB
\ No newline at end of file
+      wiedervorlageAttachment: 40MB
+  user-manager:
+    profile-template: /api/userProfiles/%s
\ No newline at end of file
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java
index bd32012c381f870f397df66abc0485a793c5c0db..9507c845040141269402a1171358c235b62dad91 100644
--- a/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java
+++ b/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java
@@ -1,5 +1,6 @@
 package de.itvsh.goofy;
 
+import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
@@ -7,6 +8,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
+import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -22,9 +24,8 @@ import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
-import static org.assertj.core.api.Assertions.*;
-
 import de.itvsh.goofy.common.user.CurrentUserService;
+import de.itvsh.goofy.common.user.GoofyUserTestFactory;
 import de.itvsh.goofy.common.user.UserRole;
 import de.itvsh.goofy.common.user.UserTestFactory;
 
@@ -160,6 +161,39 @@ class RootControllerTest {
 				assertThat(model.getLinks()).isEmpty();
 			}
 		}
+
+		@DisplayName("current user")
+		@Nested
+		class CurrentUser {
+			@DisplayName("when usermanager url is configured")
+			@Nested
+			class UsermanagerUrlConfigured {
+				@Test
+				void shouldHaveCurrentUserLink() {
+					when(controller.getUserProfilesUrl()).thenReturn(Optional.of("http://localhost:9092/api/userProfiles/%s"));
+					when(currentUserService.getUserId()).thenReturn(GoofyUserTestFactory.ID);
+
+					var model = controller.getRootResource();
+
+					assertThat(model.getLink(RootController.REL_CURRENT_USER)).isPresent().get().extracting(Link::getHref)
+							.isEqualTo(Link.of("http://localhost:9092/api/userProfiles/" + GoofyUserTestFactory.ID, RootController.REL_CURRENT_USER)
+									.getHref());
+				}
+			}
+
+			@DisplayName("when usermanager url is not configured")
+			@Nested
+			class UsermanagerUrlNotConfigured {
+
+				@Test
+				void shouldNotHaveCurrentUserLink() {
+					var model = controller.getRootResource();
+
+					assertThat(model.getLink(RootController.REL_CURRENT_USER)).isNotPresent();
+				}
+			}
+
+		}
 	}
 
 	@Test
diff --git a/pom.xml b/pom.xml
index 6315b873457a7e59e27a0329eb9ad3ed0d470dc5..51643ab3571b1d4e1ee313fb5279b0915610573c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,14 +5,14 @@
 
 	<groupId>de.itvsh.ozg</groupId>
 	<artifactId>goofy</artifactId>
-	<version>0.31.0-SNAPSHOT</version>
+	<version>0.32.0-SNAPSHOT</version>
 	<name>Goofy Parent</name>
 	<packaging>pom</packaging>
 
 	<parent>
 		<groupId>de.itvsh.kop.common</groupId>
 		<artifactId>kop-common-parent</artifactId>
-		<version>1.1.5</version>
+		<version>1.2.1</version>
 	</parent>
 
 	<modules>
@@ -24,7 +24,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-		<pluto.version>0.31.0-SNAPSHOT</pluto.version>
+		<pluto.version>0.32.0-SNAPSHOT</pluto.version>
 		<jsoup.version>1.15.1</jsoup.version>
 	</properties>