diff --git a/src/app/features/admin/funding-agencies/funding-agencies-routing.module.ts b/src/app/features/admin/funding-agencies/funding-agencies-routing.module.ts
index 159d16c4fdca22bc6261e991b9d2c25e49d3e318..6afba38fc66681de3442186621518d74c95afd4a 100644
--- a/src/app/features/admin/funding-agencies/funding-agencies-routing.module.ts
+++ b/src/app/features/admin/funding-agencies/funding-agencies-routing.module.ts
@@ -13,6 +13,7 @@ import {
 } from "@shared/enums/routes.enum";
 import {CanDeactivateGuard} from "@shared/services/can-deactivate-guard.service";
 import {TRANSLATE} from "solidify-frontend";
+import {AdminFundingAgenciesState} from "./stores/admin-funding-agencies.state";
 
 const routes: Routes = [
   {
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminFundingAgenciesDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.funding-agencies.detail"),
+      breadcrumbMemoizedSelector: AdminFundingAgenciesState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/funding-agencies/stores/admin-funding-agencies.state.ts b/src/app/features/admin/funding-agencies/stores/admin-funding-agencies.state.ts
index 439f4e90729143e001f074a9ab945a8d9b0e73b3..e6d99babaad4caf1545bdd3f710eb7c22b145ce6 100644
--- a/src/app/features/admin/funding-agencies/stores/admin-funding-agencies.state.ts
+++ b/src/app/features/admin/funding-agencies/stores/admin-funding-agencies.state.ts
@@ -87,6 +87,14 @@ export class AdminFundingAgenciesState extends ResourceState<FundingAgencyExtend
       || StoreUtil.isLoadingState(state.admin_fundingAgencies_organizationalUnit);
   }
 
+  @Selector()
+  static currentTitle(state: AdminFundingAgenciesStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminFundingAgenciesStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/institution/institution-routing.module.ts b/src/app/features/admin/institution/institution-routing.module.ts
index a2095f54c305e82ab4e8627f1347f643fb1aa920..45f9f8ba4b50ace47dacf1cb899887a5b69a3a3b 100644
--- a/src/app/features/admin/institution/institution-routing.module.ts
+++ b/src/app/features/admin/institution/institution-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminInstitutionCreateRoutable} from "@admin/institution/components/rout
 import {AdminInstitutionDetailRoutable} from "@admin/institution/components/routables/admin-institution-detail/admin-institution-detail.routable";
 import {AdminInstitutionEditRoutable} from "@admin/institution/components/routables/admin-institution-edit/admin-institution-edit.routable";
 import {AdminInstitutionListRoutable} from "@admin/institution/components/routables/admin-institution-list/admin-institution-list.routable";
+import {AdminInstitutionState} from "@admin/institution/stores/admin-institution.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminInstitutionDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.institution.detail"),
+      breadcrumbMemoizedSelector: AdminInstitutionState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/institution/stores/admin-institution.state.ts b/src/app/features/admin/institution/stores/admin-institution.state.ts
index 602d7d96c6e3b81bfc35866a6e4f204198d6aabd..76b5a7468fcaab5a28491a038a0533a88f93f598 100644
--- a/src/app/features/admin/institution/stores/admin-institution.state.ts
+++ b/src/app/features/admin/institution/stores/admin-institution.state.ts
@@ -61,6 +61,14 @@ export class AdminInstitutionState extends ResourceState<Institution> {
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminInstitutionStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminInstitutionStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/license/license-routing.module.ts b/src/app/features/admin/license/license-routing.module.ts
index c2caf0226974a26d50334ece7c2a2175d8d9ab05..acbd2341b89c6594ec0463ff8670bd95fc8cb159 100644
--- a/src/app/features/admin/license/license-routing.module.ts
+++ b/src/app/features/admin/license/license-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminLicenseCreateRoutable} from "@admin/license/components/routables/ad
 import {AdminLicenseDetailRoutable} from "@admin/license/components/routables/admin-license-detail/admin-license-detail.routable";
 import {AdminLicenseEditRoutable} from "@admin/license/components/routables/admin-license-edit/admin-license-edit.routable";
 import {AdminLicenseListRoutable} from "@admin/license/components/routables/admin-license-list/admin-license-list.routable";
+import {AdminLicenseState} from "@admin/license/stores/admin-license.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -41,6 +42,7 @@ const routes: Routes = [
     component: AdminLicenseDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.license.detail"),
+      breadcrumbMemoizedSelector: AdminLicenseState.currentTitle,
     },
   },
 ];
diff --git a/src/app/features/admin/license/stores/admin-license.state.ts b/src/app/features/admin/license/stores/admin-license.state.ts
index 1414f78c8cce5862a8326a0ec75feef452eb08ce..cfbd2ec57e747f0257d1957a6b987ff67a4b3b80 100644
--- a/src/app/features/admin/license/stores/admin-license.state.ts
+++ b/src/app/features/admin/license/stores/admin-license.state.ts
@@ -60,6 +60,14 @@ export class AdminLicenseState extends ResourceState<License> {
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminLicenseStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.title;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminLicenseStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/oauth2-client/oauth2-client-routing.module.ts b/src/app/features/admin/oauth2-client/oauth2-client-routing.module.ts
index d74c511cdc3c7eeb41b986d78034437b20cc17b4..9df76e083d971b63da0805c55b585781edcc2715 100644
--- a/src/app/features/admin/oauth2-client/oauth2-client-routing.module.ts
+++ b/src/app/features/admin/oauth2-client/oauth2-client-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminOauth2ClientCreateRoutable} from "@admin/oauth2-client/components/r
 import {AdminOAuth2ClientDetailRoutable} from "@admin/oauth2-client/components/routables/admin-oauth2-client-detail/admin-oauth2-client-detail.routable";
 import {AdminOauth2ClientEditRoutable} from "@admin/oauth2-client/components/routables/admin-oauth2-client-edit/admin-oauth2-client-edit.routable";
 import {AdminOAuth2ClientListRoutable} from "@admin/oauth2-client/components/routables/admin-oauth2-client-list/admin-oauth2-client-list.routable";
+import {AdminOAuth2ClientState} from "@admin/oauth2-client/stores/admin-oauth2-client.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminOAuth2ClientDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.oauth2Client.detail"),
+      breadcrumbMemoizedSelector: AdminOAuth2ClientState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/oauth2-client/stores/admin-oauth2-client.state.ts b/src/app/features/admin/oauth2-client/stores/admin-oauth2-client.state.ts
index c868caea6a188e135394e973479a7fa259c54718..cd5d4296ecf836183d651577a071eb4990c76f0c 100644
--- a/src/app/features/admin/oauth2-client/stores/admin-oauth2-client.state.ts
+++ b/src/app/features/admin/oauth2-client/stores/admin-oauth2-client.state.ts
@@ -60,6 +60,14 @@ export class AdminOAuth2ClientState extends ResourceState<Oauth2Client> {
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminOAuth2ClientStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminOAuth2ClientStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/orgunit/orgunit-routing.module.ts b/src/app/features/admin/orgunit/orgunit-routing.module.ts
index 049c7550ae575e52731d68ca6f73904e8e58e425..e3e4c0c7aeb88bc8901c13f561143bde907a6d3d 100644
--- a/src/app/features/admin/orgunit/orgunit-routing.module.ts
+++ b/src/app/features/admin/orgunit/orgunit-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminOrgunitCreateRoutable} from "@admin/orgunit/components/routables/ad
 import {AdminOrgunitDetailRoutable} from "@admin/orgunit/components/routables/admin-orgunit-detail/admin-orgunit-detail.routable";
 import {AdminOrgunitEditRoutable} from "@admin/orgunit/components/routables/admin-orgunit-edit/admin-orgunit-edit.routable";
 import {AdminOrgunitListRoutable} from "@admin/orgunit/components/routables/admin-orgunit-list/admin-orgunit-list.routable";
+import {AdminOrganizationalUnitState} from "@admin/orgunit/stores/admin-organizational-unit.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminOrgunitDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.organizationalUnit.detail"),
+      breadcrumbMemoizedSelector: AdminOrganizationalUnitState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts
index e324d881e3c5314c335e69c171d35ab75dcc24a4..87baa4649adb2cc3c1851ac76e360e661040650c 100644
--- a/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts
+++ b/src/app/features/admin/orgunit/stores/admin-organizational-unit.state.ts
@@ -129,6 +129,14 @@ export class AdminOrganizationalUnitState extends ResourceState<OrganizationalUn
       || StoreUtil.isLoadingState(state.admin_organizationalUnit_institution);
   }
 
+  @Selector()
+  static currentTitle(state: AdminOrganizationalUnitStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminOrganizationalUnitStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/person/person-routing.module.ts b/src/app/features/admin/person/person-routing.module.ts
index 6800c3c55255ec9e6e1f9a100f9d61f322567ebd..3404b9ac8f9ce9661d8274fc1f93615033f2319f 100644
--- a/src/app/features/admin/person/person-routing.module.ts
+++ b/src/app/features/admin/person/person-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminPersonCreateRoutable} from "@admin/person/components/routables/admi
 import {AdminPersonDetailRoutable} from "@admin/person/components/routables/admin-person-detail/admin-person-detail.routable";
 import {AdminPersonEditRoutable} from "@admin/person/components/routables/admin-person-edit/admin-person-edit.routable";
 import {AdminPersonListRoutable} from "@admin/person/components/routables/admin-person-list/admin-person-list.routable";
+import {AdminPersonState} from "@admin/person/stores/admin-person.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -30,6 +31,7 @@ const routes: Routes = [
     component: AdminPersonDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.person.detail"),
+      breadcrumbMemoizedSelector: AdminPersonState.currentTitle,
       permission: ApplicationRolePermissionEnum.rootPermission,
     },
   },
diff --git a/src/app/features/admin/person/stores/admin-person.state.ts b/src/app/features/admin/person/stores/admin-person.state.ts
index 87181313c1690c4b4cf23ff7a5efb21db7a26c9e..d166375abc029a0668dcfaf02389dffc039c1dff 100644
--- a/src/app/features/admin/person/stores/admin-person.state.ts
+++ b/src/app/features/admin/person/stores/admin-person.state.ts
@@ -95,6 +95,14 @@ export class AdminPersonState extends ResourceState<PersonExtended> {
       || StoreUtil.isLoadingState(state.admin_person_institutions);
   }
 
+  @Selector()
+  static currentTitle(state: AdminPersonStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.fullName;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminPersonStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/preservation-policy/preservation-policy-routing.module.ts b/src/app/features/admin/preservation-policy/preservation-policy-routing.module.ts
index 58bed5578d8c01fc8db30c2c3244a4761f2a1b13..39e77b26d9730ec859705fab14ec98293f528975 100644
--- a/src/app/features/admin/preservation-policy/preservation-policy-routing.module.ts
+++ b/src/app/features/admin/preservation-policy/preservation-policy-routing.module.ts
@@ -13,6 +13,7 @@ import {
 } from "@shared/enums/routes.enum";
 import {CanDeactivateGuard} from "@shared/services/can-deactivate-guard.service";
 import {TRANSLATE} from "solidify-frontend";
+import {AdminPreservationPolicyState} from "./stores/admin-preservation-policy.state";
 
 const routes: Routes = [
   {
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminPreservationPolicyDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.preservationPolicy.detail"),
+      breadcrumbMemoizedSelector: AdminPreservationPolicyState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/preservation-policy/stores/admin-preservation-policy.state.ts b/src/app/features/admin/preservation-policy/stores/admin-preservation-policy.state.ts
index af64cb1bbffe0c5fb628f2b835b26c481334e853..725161a408149e793b9ae5964bb2f8dc6555d1dd 100644
--- a/src/app/features/admin/preservation-policy/stores/admin-preservation-policy.state.ts
+++ b/src/app/features/admin/preservation-policy/stores/admin-preservation-policy.state.ts
@@ -60,6 +60,14 @@ export class AdminPreservationPolicyState extends ResourceState<PreservationPoli
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminPreservationPolicyStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminPreservationPolicyStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/role/role-routing.module.ts b/src/app/features/admin/role/role-routing.module.ts
index f44c15d66b98c7efbd2ff837bd11fddaf686b7a7..1e4daa7f96c7eea1ab16c050a0359f1f30c45561 100644
--- a/src/app/features/admin/role/role-routing.module.ts
+++ b/src/app/features/admin/role/role-routing.module.ts
@@ -1,6 +1,7 @@
 import {AdminRoleDetailRoutable} from "@admin/role/components/routables/admin-role-detail/admin-role-detail.routable";
 import {AdminRoleEditRoutable} from "@admin/role/components/routables/admin-role-edit/admin-role-edit.routable";
 import {AdminRoleListRoutable} from "@admin/role/components/routables/admin-role-list/admin-role-list.routable";
+import {AdminRoleState} from "@admin/role/stores/admin-role.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -24,6 +25,7 @@ const routes: Routes = [
     component: AdminRoleDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.role.detail"),
+      breadcrumbMemoizedSelector: AdminRoleState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/role/stores/admin-role.state.ts b/src/app/features/admin/role/stores/admin-role.state.ts
index 64b356c54f1ecf5c485c7ed918118e5dc7132f99..800cff33a0f31d4e6e96e235e198f0abbe45a207 100644
--- a/src/app/features/admin/role/stores/admin-role.state.ts
+++ b/src/app/features/admin/role/stores/admin-role.state.ts
@@ -61,6 +61,14 @@ export class AdminRoleState extends ResourceState<Role> {
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminRoleStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminRoleStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/submission-policy/stores/admin-submission-policy.state.ts b/src/app/features/admin/submission-policy/stores/admin-submission-policy.state.ts
index 51164a232cc812336aabf159e1edb36390f5e59b..e610d2f2f20a2c8f6419159cfce714b5a149d3a1 100644
--- a/src/app/features/admin/submission-policy/stores/admin-submission-policy.state.ts
+++ b/src/app/features/admin/submission-policy/stores/admin-submission-policy.state.ts
@@ -60,6 +60,14 @@ export class AdminSubmissionPolicyState extends ResourceState<SubmissionPolicy>
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminSubmissionPolicyStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminSubmissionPolicyStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/submission-policy/submission-policy-routing.module.ts b/src/app/features/admin/submission-policy/submission-policy-routing.module.ts
index 1359e39113f5cf61457e75f8e21c16ec522820a2..df31372704ede9a21b5d6e64b5d91bdaa3d9c914 100644
--- a/src/app/features/admin/submission-policy/submission-policy-routing.module.ts
+++ b/src/app/features/admin/submission-policy/submission-policy-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminSubmissionPolicyCreateRoutable} from "@admin/submission-policy/comp
 import {AdminSubmissionPolicyDetailRoutable} from "@admin/submission-policy/components/routables/admin-submission-policy-detail/admin-submission-policy-detail.routable";
 import {AdminSubmissionPolicyEditRoutable} from "@admin/submission-policy/components/routables/admin-submission-policy-edit/admin-submission-policy-edit.routable";
 import {AdminSubmissionPolicyListRoutable} from "@admin/submission-policy/components/routables/admin-submission-policy-list/admin-submission-policy-list.routable";
+import {AdminSubmissionPolicyState} from "@admin/submission-policy/stores/admin-submission-policy.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -25,6 +26,7 @@ const routes: Routes = [
     component: AdminSubmissionPolicyDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.submissionPolicy.detail"),
+      breadcrumbMemoizedSelector: AdminSubmissionPolicyState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/admin/user/stores/admin-user.state.ts b/src/app/features/admin/user/stores/admin-user.state.ts
index 6181c6f2cfd3b491f0a45a4975904cdf2888a58b..9f766be8f4eb9398fc14656559998790a71b6d5d 100644
--- a/src/app/features/admin/user/stores/admin-user.state.ts
+++ b/src/app/features/admin/user/stores/admin-user.state.ts
@@ -68,6 +68,14 @@ export class AdminUserState extends ResourceState<UserExtended> {
     return this.isLoading(state);
   }
 
+  @Selector()
+  static currentTitle(state: AdminUserStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.externalUid;
+  }
+
   @Selector()
   static isReadyToBeDisplayed(state: AdminUserStateModel): boolean {
     return this.isReadyToBeDisplayedInCreateMode
diff --git a/src/app/features/admin/user/user-routing.module.ts b/src/app/features/admin/user/user-routing.module.ts
index c8f2404f00c99e56af32364547392deeeff0239a..98d5cb84fcbc92757fcdea77bfb93def57c68dd9 100644
--- a/src/app/features/admin/user/user-routing.module.ts
+++ b/src/app/features/admin/user/user-routing.module.ts
@@ -2,6 +2,7 @@ import {AdminUserCreateRoutable} from "@admin/user/components/routables/admin-us
 import {AdminUserDetailRoutable} from "@admin/user/components/routables/admin-user-detail/admin-user-detail.routable";
 import {AdminUserEditRoutable} from "@admin/user/components/routables/admin-user-edit/admin-user-edit.routable";
 import {AdminUserListRoutable} from "@admin/user/components/routables/admin-user-list/admin-user-list.routable";
+import {AdminUserState} from "@admin/user/stores/admin-user.state";
 import {NgModule} from "@angular/core";
 import {
   RouterModule,
@@ -30,6 +31,7 @@ const routes: Routes = [
     component: AdminUserDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.admin.user.detail"),
+      breadcrumbMemoizedSelector: AdminUserState.currentTitle,
       permission: ApplicationRolePermissionEnum.rootPermission,
     },
   },
diff --git a/src/app/features/deposit/deposit-routing.module.ts b/src/app/features/deposit/deposit-routing.module.ts
index d46ad4d8175b2a6f0f8e9e04c34c13137ccd823e..79677fc7f717b6df68d23b585372402b275a8d56 100644
--- a/src/app/features/deposit/deposit-routing.module.ts
+++ b/src/app/features/deposit/deposit-routing.module.ts
@@ -11,6 +11,7 @@ import {
 import {DlcmRoutes} from "@app/shared/models/dlcm-route.model";
 import {DepositFileRoutable} from "@deposit/components/routables/deposit-file/deposit-file.routable";
 import {DepositMetadataRoutable} from "@deposit/components/routables/deposit-metadata/deposit-metadata.routable";
+import {DepositState} from "@deposit/stores/deposit.state";
 import {DepositRoleGuardDetailService} from "@shared/guards/deposit-role-guard-detail.service";
 import {DepositRoleGuardEditService} from "@shared/guards/deposit-role-guard-edit.service";
 import {CanDeactivateGuard} from "@shared/services/can-deactivate-guard.service";
@@ -32,6 +33,7 @@ const routes: DlcmRoutes = [
     component: DepositDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.deposit.detail"),
+      breadcrumbMemoizedSelector: DepositState.currentTitle,
     },
     canActivate: [DepositRoleGuardDetailService],
     children: [
@@ -44,7 +46,7 @@ const routes: DlcmRoutes = [
         canDeactivate: [CanDeactivateGuard],
       },
       {
-        path: DepositRoutesEnum.file,
+        path: DepositRoutesEnum.files,
         component: DepositFileRoutable,
         data: {
           breadcrumb: TRANSLATE("breadcrumb.deposit.file"),
@@ -75,7 +77,7 @@ const routes: DlcmRoutes = [
         canDeactivate: [CanDeactivateGuard],
       },
       {
-        path: DepositRoutesEnum.file,
+        path: DepositRoutesEnum.files,
         component: DepositFileRoutable,
         data: {
           breadcrumb: TRANSLATE("breadcrumb.deposit.file"),
diff --git a/src/app/features/deposit/helpers/deposit.helper.ts b/src/app/features/deposit/helpers/deposit.helper.ts
index 5170473675acda10ee19cd58dbc68e6e53c6e6bf..3128ca8dd17464e4a94d149ba762215d46dd0f58 100644
--- a/src/app/features/deposit/helpers/deposit.helper.ts
+++ b/src/app/features/deposit/helpers/deposit.helper.ts
@@ -28,7 +28,7 @@ export class DepositHelper {
     if (tabRouteSelected === DepositRoutesEnum.metadata) {
       return DepositTabEnum.metadata;
     }
-    if (tabRouteSelected === DepositRoutesEnum.file) {
+    if (tabRouteSelected === DepositRoutesEnum.files) {
       return DepositTabEnum.file;
     }
     return undefined;
@@ -39,7 +39,7 @@ export class DepositHelper {
       return DepositRoutesEnum.metadata;
     }
     if (tabIndexSelected === DepositTabEnum.file) {
-      return DepositRoutesEnum.file;
+      return DepositRoutesEnum.files;
     }
     return undefined;
   }
diff --git a/src/app/features/deposit/stores/deposit.state.ts b/src/app/features/deposit/stores/deposit.state.ts
index fe5128cdf14ec2930e89ee03d69f09430079e8f6..4821ba62ca216bc1269d24a6d0922b33fc24f8ea 100644
--- a/src/app/features/deposit/stores/deposit.state.ts
+++ b/src/app/features/deposit/stores/deposit.state.ts
@@ -130,6 +130,14 @@ export class DepositState extends ResourceState<DepositExtended> {
     return StoreUtil.isLoadingState(state);
   }
 
+  @Selector()
+  static currentTitle(state: DepositStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.title;
+  }
+
   @Selector()
   static isLoadingWithDependency(state: DepositStateModel): boolean {
     return this.isLoading(state)
diff --git a/src/app/features/organizational-unit/organizational-unit-routing.module.ts b/src/app/features/organizational-unit/organizational-unit-routing.module.ts
index 2c2d00899dc48778443e318dd8c207daf6a402ec..1c58f067fa1bff238a7d0450e4efd7b502d98891 100644
--- a/src/app/features/organizational-unit/organizational-unit-routing.module.ts
+++ b/src/app/features/organizational-unit/organizational-unit-routing.module.ts
@@ -11,6 +11,7 @@ import {DlcmRoutes} from "@app/shared/models/dlcm-route.model";
 import {OrganizationalUnitRoleGuardService} from "@shared/guards/organizational-unit-role-guard.service";
 import {CanDeactivateGuard} from "@shared/services/can-deactivate-guard.service";
 import {TRANSLATE} from "solidify-frontend";
+import {OrganizationalUnitState} from "./stores/organizational-unit.state";
 
 const routes: DlcmRoutes = [
   {
@@ -23,6 +24,7 @@ const routes: DlcmRoutes = [
     component: OrgunitDetailRoutable,
     data: {
       breadcrumb: TRANSLATE("breadcrumb.organizationalUnit.detail"),
+      breadcrumbMemoizedSelector: OrganizationalUnitState.currentTitle,
     },
   },
   {
diff --git a/src/app/features/organizational-unit/stores/organizational-unit.state.ts b/src/app/features/organizational-unit/stores/organizational-unit.state.ts
index 6cee1205e1a53bab353be259685206725b7335bf..36250abd6b74912ef3e2b4cf4592aa684c77b031 100644
--- a/src/app/features/organizational-unit/stores/organizational-unit.state.ts
+++ b/src/app/features/organizational-unit/stores/organizational-unit.state.ts
@@ -83,6 +83,9 @@ export class OrganizationalUnitState extends ResourceState<OrganizationalUnitExt
   }
 
   protected get _urlResource(): string {
+    if (isNullOrUndefined(this.store)) {
+      return AccessResourceApiEnum.organizationalUnits;
+    }
     return this.store.selectSnapshot(OrganizationalUnitState.currentUserIsManager) ? AdminResourceApiEnum.organizationalUnits : AccessResourceApiEnum.organizationalUnits;
   }
 
@@ -96,6 +99,14 @@ export class OrganizationalUnitState extends ResourceState<OrganizationalUnitExt
     return state.current;
   }
 
+  @Selector()
+  static currentTitle(state: OrganizationalUnitStateModel): string | undefined {
+    if (isNullOrUndefined(state.current)) {
+      return undefined;
+    }
+    return state.current.name;
+  }
+
   @Selector()
   static isLoading(state: OrganizationalUnitStateModel): boolean {
     return StoreUtil.isLoadingState(state);
diff --git a/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.html b/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.html
index 64c918f6fa5bd3e541e91ca0b22f00e53692ef4c..0ae20b212d69dc1fcbab4ea3a27b4da79da62a12 100644
--- a/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.html
+++ b/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.html
@@ -4,6 +4,15 @@
   >
     <a [class.current]="isCurrent(breadcrumb.url)"
        (click)="navigate(breadcrumb.url)"
-    >{{breadcrumb.label | translate}}</a>
+    >
+      <ng-template [ngIf]="!(breadcrumb.labelObs | isNullOrUndefined) && !(breadcrumb.labelObs | async | isNullOrUndefined)"
+                   [ngIfElse]="normalLabel"
+      >
+        {{breadcrumb.labelObs | async}}
+      </ng-template>
+      <ng-template #normalLabel>
+        {{breadcrumb.label | translate}}
+      </ng-template>
+    </a>
   </li>
 </ol>
diff --git a/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.ts b/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.ts
index 733f3ba032b204b26499154be15bc50f5a88fd82..8ea6de79839ed7b0f9c0546984bb453d6793c7dd 100644
--- a/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.ts
+++ b/src/app/shared/components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational.ts
@@ -12,6 +12,8 @@ import {
 import {SharedAbstractPresentational} from "@app/shared/components/presentationals/shared-abstract/shared-abstract.presentational";
 import {Breadcrumb} from "@app/shared/models/breadcrumb.model";
 import {TranslateService} from "@ngx-translate/core";
+import {Store} from "@ngxs/store";
+import {DlcmData} from "@shared/models/dlcm-route.model";
 import {
   BehaviorSubject,
   Observable,
@@ -22,11 +24,12 @@ import {
   map,
 } from "rxjs/operators";
 import {
+  isNullOrUndefined,
   isUndefined,
   ObservableUtil,
+  StringUtil,
   TRANSLATE,
 } from "solidify-frontend";
-import {isNullOrUndefined} from "util";
 
 @Component({
   selector: "dlcm-shared-breadcrumb",
@@ -47,6 +50,7 @@ export class SharedBreadcrumbPresentational extends SharedAbstractPresentational
 
   constructor(private translate: TranslateService,
               private router: Router,
+              private store: Store,
               private activatedRoute: ActivatedRoute) {
     super();
   }
@@ -64,16 +68,16 @@ export class SharedBreadcrumbPresentational extends SharedAbstractPresentational
   buildBreadCrumb(route: ActivatedRoute,
                   url: string = "",
                   breadcrumbs: Breadcrumb[] = []): Breadcrumb[] {
-    console.error(route);
-    const label = this.getLabel(route);
-    const id = this.getParamId(route);
-    if (!isUndefined(label)) {
+    const label: string = this.getLabel(route);
+    const labelObs = this.getBreadcrumbMemoizedSelector(route);
+    if (!isUndefined(label) || !isUndefined(labelObs)) {
       const path = this.getPath(route);
 
       url = `${url}${path}/`;
 
       const breadcrumbElement: Breadcrumb = {
         label,
+        labelObs: labelObs,
         url: url,
       } as Breadcrumb;
 
@@ -98,12 +102,15 @@ export class SharedBreadcrumbPresentational extends SharedAbstractPresentational
     return this._BREADCRUMB_TRANSLATE_HOME;
   }
 
-  private getParamId(route: ActivatedRoute): string {
-    if (route.snapshot.paramMap.keys.length > 0 && route.snapshot.paramMap.has("id")) {
-      const id = route.snapshot.paramMap.get("id");
-      console.error("FIND PARAM ID", id);
-      return id;
+  private getBreadcrumbMemoizedSelector(route: ActivatedRoute): Observable<string> | undefined {
+    if (isNullOrUndefined(route.routeConfig)) {
+      return undefined;
     }
+    const breadcrumbMemoizedSelector = (route.routeConfig.data as DlcmData).breadcrumbMemoizedSelector;
+    if (!isNullOrUndefined(breadcrumbMemoizedSelector)) {
+      return this.store.select(breadcrumbMemoizedSelector);
+    }
+    return undefined;
   }
 
   private getPath(route: ActivatedRoute): string {
@@ -112,7 +119,7 @@ export class SharedBreadcrumbPresentational extends SharedAbstractPresentational
       path = this.insertParametersInPath(route, path);
       return path;
     }
-    return "";
+    return StringUtil.stringEmpty;
   }
 
   private insertParametersInPath(route: ActivatedRoute, path: string): string {
diff --git a/src/app/shared/enums/routes.enum.ts b/src/app/shared/enums/routes.enum.ts
index e1dfdd696018c54b67bbd287b00ab7f8061b1266..35ba40e3578ef485408872982314707d69ad0e49 100644
--- a/src/app/shared/enums/routes.enum.ts
+++ b/src/app/shared/enums/routes.enum.ts
@@ -23,7 +23,7 @@ export enum DepositRoutesEnum {
   detail = "detail",
   edit = "edit",
   metadata = "metadata",
-  file = "file",
+  files = "files",
 }
 
 export enum OrganizationalUnitRoutesEnum {
diff --git a/src/app/shared/models/breadcrumb.model.ts b/src/app/shared/models/breadcrumb.model.ts
index e88fdb43e066d20b70ad22f8b110ed7b7f297ec0..1088f4d631d70142976ed59e50b65a13afdbc569 100644
--- a/src/app/shared/models/breadcrumb.model.ts
+++ b/src/app/shared/models/breadcrumb.model.ts
@@ -1,4 +1,7 @@
+import {Observable} from "rxjs";
+
 export interface Breadcrumb {
   label: string;
+  labelObs: Observable<string> | undefined;
   url: string;
 }
diff --git a/src/app/shared/models/dlcm-route.model.ts b/src/app/shared/models/dlcm-route.model.ts
index 36ff4148da1c6fff01f14e5bf2687709db89febc..8cd34245bb96d19ae9d428eea8913504f01d98f3 100644
--- a/src/app/shared/models/dlcm-route.model.ts
+++ b/src/app/shared/models/dlcm-route.model.ts
@@ -9,6 +9,7 @@ import {
   UrlMatcher,
 } from "@angular/router";
 import {ApplicationRolePermissionEnum} from "@app/shared/enums/application-role-permission.enum";
+import {BaseResourceState} from "solidify-frontend";
 
 export declare type DlcmRoutes = DlcmRoute[];
 
@@ -32,5 +33,6 @@ export class DlcmRoute implements Route {
 
 export class DlcmData implements Data {
   breadcrumb?: string;
+  breadcrumbMemoizedSelector?: (state: BaseResourceState) => string;
   permission?: ApplicationRolePermissionEnum;
 }
diff --git a/src/app/shared/services/security.service.ts b/src/app/shared/services/security.service.ts
index b4bcf0723f33e79bc3503fd1837fe213468f41da..8831f48c9b03654580575b7c3c79e3fd0587b61b 100644
--- a/src/app/shared/services/security.service.ts
+++ b/src/app/shared/services/security.service.ts
@@ -153,6 +153,9 @@ export class SecurityService {
 
   public isRootOrAdmin(): boolean {
     const applicationRoles = this._store.selectSnapshot(AppState.currentUserApplicationRolesResId);
+    if (isNullOrUndefined(applicationRoles)) {
+      return false;
+    }
     if (applicationRoles.includes(UserApplicationRoleEnum.admin) || applicationRoles.includes(UserApplicationRoleEnum.root)) {
       return true;
     }
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 3b32545c51afaa1684619262fd0481933c50b472..2de94cf2f9ea360e6eb673e5edd40ce63f4bdd9c 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -579,19 +579,19 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Funding agency"
+        "root": "Funding agencies"
       },
       "institution": {
         "create": "Create",
         "detail": "License",
         "edit": "Edit",
-        "root": "Institution"
+        "root": "Institutions"
       },
       "license": {
         "create": "Create",
         "detail": "License",
         "edit": "Edit",
-        "root": "License"
+        "root": "Licenses"
       },
       "oauth2Client": {
         "create": "Create",
@@ -603,7 +603,7 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Organizational unit"
+        "root": "Organizational units"
       },
       "person": {
         "create": "Create",
@@ -615,25 +615,25 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Preservation policy"
+        "root": "Preservation policies"
       },
       "role": {
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Role"
+        "root": "Roles"
       },
       "root": "Admin",
       "submissionPolicy": {
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Submission policy"
+        "root": "Submission policies"
       },
       "user": {
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "User"
+        "root": "Users"
       }
     },
     "deposit": {
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 3b32545c51afaa1684619262fd0481933c50b472..2de94cf2f9ea360e6eb673e5edd40ce63f4bdd9c 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -579,19 +579,19 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Funding agency"
+        "root": "Funding agencies"
       },
       "institution": {
         "create": "Create",
         "detail": "License",
         "edit": "Edit",
-        "root": "Institution"
+        "root": "Institutions"
       },
       "license": {
         "create": "Create",
         "detail": "License",
         "edit": "Edit",
-        "root": "License"
+        "root": "Licenses"
       },
       "oauth2Client": {
         "create": "Create",
@@ -603,7 +603,7 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Organizational unit"
+        "root": "Organizational units"
       },
       "person": {
         "create": "Create",
@@ -615,25 +615,25 @@
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Preservation policy"
+        "root": "Preservation policies"
       },
       "role": {
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Role"
+        "root": "Roles"
       },
       "root": "Admin",
       "submissionPolicy": {
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "Submission policy"
+        "root": "Submission policies"
       },
       "user": {
         "create": "Create",
         "detail": "Detail",
         "edit": "Edit",
-        "root": "User"
+        "root": "Users"
       }
     },
     "deposit": {
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index 18988ea68ac804c791351a66ebd9aa5d6b3e95d1..320a1313aacc95e5088f8d49ae1c04427d4e059e 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -585,55 +585,55 @@
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Institution"
+        "root": "Institutions"
       },
       "license": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Licence"
+        "root": "Licences"
       },
       "oauth2Client": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Client OAuth2"
+        "root": "Clients OAuth2"
       },
       "organizationalUnit": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Unité organisationelle"
+        "root": "Unités organisationelles"
       },
       "person": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Personne"
+        "root": "Personnes"
       },
       "preservationPolicy": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Liste politique de préservation"
+        "root": "Politiques de préservation"
       },
       "role": {
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Role"
+        "root": "Rôles"
       },
       "root": "Administration",
       "submissionPolicy": {
         "create": "Créer",
         "detail": "Détail",
         "edit": "Modifier",
-        "root": "Politique soumission"
+        "root": "Politiques de soumission"
       },
       "user": {
         "create": "Créer",
-        "detail": "Supprimer",
+        "detail": "Détail",
         "edit": "Modifier",
-        "root": "Utilisateur"
+        "root": "Utilisateurs"
       }
     },
     "deposit": {
@@ -648,7 +648,7 @@
     "organizationalUnit": {
       "detail": "Détail",
       "edit": "Modifier",
-      "root": "Unité organisationnelle"
+      "root": "Unités organisationnelles"
     }
   },
   "deposit": {