diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 5f23cbb948599e9512b920528a214f7e33d28078..0d1ad42c5d032f9d4d62d3580670a551a2774e78 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -26,6 +26,7 @@ import {AppAction} from "@app/stores/app.action";
 import {AppCartArchiveState} from "@app/stores/cart/archive/app-cart-archive.state";
 import {environment} from "@environments/environment";
 import {HomeHelper} from "@home/helpers/home.helper";
+import {User} from "@models";
 import {TranslateService} from "@ngx-translate/core";
 import {Navigate} from "@ngxs/router-plugin";
 import {
@@ -37,7 +38,6 @@ import {ChemicalMoleculeVisualizationEnum} from "@shared/enums/chemical-molecule
 import {SessionStorageEnum} from "@shared/enums/session-storage.enum";
 import {SessionStorageHelper} from "@shared/helpers/session-storage.helper";
 import {UrlQueryParamHelper} from "@shared/helpers/url-query-param.helper";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {AppStatusService} from "@shared/services/app-status.service";
 import {BreakpointService} from "@shared/services/breakpoint.service";
 import {PermissionUtil} from "@shared/utils/permission.util";
@@ -84,7 +84,7 @@ export class AppComponent extends SharedAbstractPresentational {
   @Select((state: LocalStateModel) => state.application.isApplicationInitialized) isApplicationInitializedObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.application.theme) themeObs: Observable<ThemeEnum>;
   @Select((state: LocalStateModel) => state.application.userRoles) userRolesObs: Observable<ApplicationRoleEnum[]>;
-  @Select((state: LocalStateModel) => state.application.application_user.current) currentUserObs: Observable<UserExtended>;
+  @Select((state: LocalStateModel) => state.application.application_user.current) currentUserObs: Observable<User>;
 
   numberArchiveInCartObs: Observable<number> = ResourceState.total(this.store, AppCartArchiveState);
 
diff --git a/src/app/components/dialogs/user/user.dialog.ts b/src/app/components/dialogs/user/user.dialog.ts
index 6483513073a2a2e89e9f3f366c6f49bce2a9c94c..b86c31b888bfadf7ea68763e53a2f7822b4c0f2e 100644
--- a/src/app/components/dialogs/user/user.dialog.ts
+++ b/src/app/components/dialogs/user/user.dialog.ts
@@ -11,14 +11,16 @@ import {
   MatDialogRef,
 } from "@angular/material/dialog";
 import {AppPersonAction} from "@app/stores/person/app-person.action";
-import {Person} from "@models";
+import {
+  Person,
+  User,
+} from "@models";
 import {
   Select,
   Store,
 } from "@ngxs/store";
 import {SharedAbstractContainer} from "@shared/components/containers/shared-abstract/shared-abstract.container";
 import {SharedPersonFormPresentational} from "@shared/components/presentationals/shared-person-form/shared-person-form.presentational";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {LocalStateModel} from "@shared/models/local-state.model";
 import {Observable} from "rxjs";
 import {
@@ -41,7 +43,7 @@ export class UserDialog extends SharedAbstractContainer implements OnInit {
 
   constructor(protected store: Store,
               protected dialogRef: MatDialogRef<UserDialog>,
-              @Inject(MAT_DIALOG_DATA) public user: UserExtended) {
+              @Inject(MAT_DIALOG_DATA) public user: User) {
     super();
   }
 
diff --git a/src/app/components/presentationals/avatar/avatar.presentational.ts b/src/app/components/presentationals/avatar/avatar.presentational.ts
index 1827c18eca26bb3e06e1c9d804b5e73d66c0e693..aab54675bedaa0b642276c6549502ae9fbd69bd3 100644
--- a/src/app/components/presentationals/avatar/avatar.presentational.ts
+++ b/src/app/components/presentationals/avatar/avatar.presentational.ts
@@ -9,8 +9,8 @@ import {TokenDialog} from "@app/components/dialogs/token/token.dialog";
 import {UserDialog} from "@app/components/dialogs/user/user.dialog";
 import {MenuToolbar} from "@app/components/presentationals/main-toolbar/abstract-main-toolbar/abstract-main-toolbar.presentational";
 import {SharedAbstractPresentational} from "@app/shared/components/presentationals/shared-abstract/shared-abstract.presentational";
+import {User} from "@models";
 import {ThemeEnum} from "@shared/enums/theme.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   BehaviorSubject,
   Observable,
@@ -27,7 +27,7 @@ import {
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class AvatarPresentational extends SharedAbstractPresentational {
-  private _user: UserExtended;
+  private _user: User;
 
   @Input()
   mode: "horizontal" | "vertical" = "vertical";
@@ -50,7 +50,7 @@ export class AvatarPresentational extends SharedAbstractPresentational {
   }
 
   @Input()
-  set user(value: UserExtended) {
+  set user(value: User) {
     this._user = value;
     this.computeInitial();
   }
@@ -58,7 +58,7 @@ export class AvatarPresentational extends SharedAbstractPresentational {
   @Input()
   listMenuAdmin: MenuToolbar[];
 
-  get user(): UserExtended {
+  get user(): User {
     return this._user;
   }
 
diff --git a/src/app/components/presentationals/main-toolbar/abstract-main-toolbar/abstract-main-toolbar.presentational.ts b/src/app/components/presentationals/main-toolbar/abstract-main-toolbar/abstract-main-toolbar.presentational.ts
index 1e9a6d90ac438e97de26c8c78257622250d2f578..120606ea45b104c149fee979099d8d6b9c3aab66 100644
--- a/src/app/components/presentationals/main-toolbar/abstract-main-toolbar/abstract-main-toolbar.presentational.ts
+++ b/src/app/components/presentationals/main-toolbar/abstract-main-toolbar/abstract-main-toolbar.presentational.ts
@@ -16,8 +16,8 @@ import {
 import {ThemeEnum} from "@app/shared/enums/theme.enum";
 import {PermissionUtil} from "@app/shared/utils/permission.util";
 import {environment} from "@environments/environment";
+import {User} from "@models";
 import {IconNameEnum} from "@shared/enums/icon-name.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   BehaviorSubject,
   Observable,
@@ -40,7 +40,7 @@ export abstract class AbstractMainToolbarPresentational extends SharedAbstractPr
   currentLanguage: LanguagesEnum;
 
   @Input()
-  user: UserExtended;
+  user: User;
 
   institutionUrl: string = environment.institutionUrl;
 
diff --git a/src/app/components/presentationals/main-toolbar/main-toolbar/main-toolbar.presentational.ts b/src/app/components/presentationals/main-toolbar/main-toolbar/main-toolbar.presentational.ts
index b4ca8637fee6485a3ed8994579132c3f22b87e64..d327a68a47996fff7bbeb23a1a7f4f2f5760cc03 100644
--- a/src/app/components/presentationals/main-toolbar/main-toolbar/main-toolbar.presentational.ts
+++ b/src/app/components/presentationals/main-toolbar/main-toolbar/main-toolbar.presentational.ts
@@ -4,11 +4,11 @@ import {
   Input,
   Output,
 } from "@angular/core";
+import {User} from "@models";
 import {SharedAbstractPresentational} from "@shared/components/presentationals/shared-abstract/shared-abstract.presentational";
 import {ApplicationRoleEnum} from "@shared/enums/application-role.enum";
 import {LanguagesEnum} from "@shared/enums/languages.enum";
 import {ThemeEnum} from "@shared/enums/theme.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   BehaviorSubject,
   Observable,
@@ -35,7 +35,7 @@ export class MainToolbarPresentational extends SharedAbstractPresentational {
   userRoles: ApplicationRoleEnum[];
 
   @Input()
-  user: UserExtended;
+  user: User;
 
   @Input()
   numberArchiveInCart: number;
diff --git a/src/app/components/presentationals/user-form/user-form.ts b/src/app/components/presentationals/user-form/user-form.ts
index fa4bf859cf9c1d3118fc726cf864505a7c9dbe34..740f9f372f5c38a1c38970b797426fc91bf88d3d 100644
--- a/src/app/components/presentationals/user-form/user-form.ts
+++ b/src/app/components/presentationals/user-form/user-form.ts
@@ -16,8 +16,8 @@ import {BaseFormDefinition} from "@app/shared/models/base-form-definition.model"
 import {
   AccessOrganizationalUnit,
   ApplicationRole,
+  User,
 } from "@models";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   EnumUtil,
   isNullOrUndefined,
@@ -32,7 +32,7 @@ import {
   styleUrls: ["../../../shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class UserForm extends SharedAbstractFormPresentational<UserExtended> {
+export class UserForm extends SharedAbstractFormPresentational<User> {
   formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
   applicationRolesNames: string[] = EnumUtil.convertToArray(UserApplicationRoleEnum, [UserApplicationRoleEnum.trusted_client]);
 
@@ -45,7 +45,7 @@ export class UserForm extends SharedAbstractFormPresentational<UserExtended> {
     super(_changeDetectorRef, _elementRef);
   }
 
-  protected bindFormTo(user: UserExtended): void {
+  protected bindFormTo(user: User): void {
     this.form = this._fb.group({
       [this.formDefinition.externalUid]: [user.externalUid, [Validators.required, SolidifyValidator]],
       [this.formDefinition.targetedUid]: [user.targetedUid],
@@ -75,7 +75,7 @@ export class UserForm extends SharedAbstractFormPresentational<UserExtended> {
     });
   }
 
-  protected treatmentBeforeSubmit(user: UserExtended): UserExtended {
+  protected treatmentBeforeSubmit(user: User): User {
     return user;
   }
 
diff --git a/src/app/features/admin/orgunit/components/routables/admin-orgunit-create/admin-orgunit-create.routable.ts b/src/app/features/admin/orgunit/components/routables/admin-orgunit-create/admin-orgunit-create.routable.ts
index ae1acddaf44fd82cdd67dcbe34806ed8bb18882a..8730b81bcfdfe712b844102b358e0eba0246b801 100644
--- a/src/app/features/admin/orgunit/components/routables/admin-orgunit-create/admin-orgunit-create.routable.ts
+++ b/src/app/features/admin/orgunit/components/routables/admin-orgunit-create/admin-orgunit-create.routable.ts
@@ -33,6 +33,7 @@ import {RoleEnum} from "@shared/enums/role.enum";
 import {LocalStateModel} from "@shared/models/local-state.model";
 import {SharedResearchDomainAction} from "@shared/stores/research-domain/shared-research-domain.action";
 import {SharedResearchDomainState} from "@shared/stores/research-domain/shared-research-domain.state";
+import {SharedRoleState} from "@shared/stores/role/shared-role.state";
 import {SharedSubmissionPolicyState} from "@shared/stores/submission-policy/shared-submission-policy.state";
 import {Observable} from "rxjs";
 import {
@@ -52,7 +53,7 @@ export class AdminOrgunitCreateRoutable extends SharedAbstractCreateRoutable<Org
   @Select(AdminOrganizationalUnitState.isReadyToBeDisplayedInCreateMode) isReadyToBeDisplayedInCreateModeObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_preservationPolicy.list) listPreservationPoliciesObs: Observable<PreservationPolicy[]>;
   @Select((state: LocalStateModel) => state.shared.shared_disseminationPolicy.list) listDisseminationPoliciesObs: Observable<DisseminationPolicy[]>;
-  @Select((state: LocalStateModel) => state.shared.shared_role.list) listRoleObs: Observable<Role[]>;
+  listRoleObs: Observable<Role[]> = ResourceState.list(this._store, SharedRoleState);
   @Select((state: LocalStateModel) => state.admin.admin_organizationalUnit.admin_organizationalUnit_fundingAgency.selected) selectedFundingAgenciesObs: Observable<FundingAgency[]>;
   @Select((state: LocalStateModel) => state.admin.admin_organizationalUnit.admin_organizationalUnit_institution.selected) selectedInstitutionsObs: Observable<Institution[]>;
   researchDomainSourcesObs: Observable<string[]> = MemoizedUtil.select(this._store, SharedResearchDomainState, state => state.sources);
diff --git a/src/app/features/admin/user/components/dialogs/admin-user-delete/admin-user-delete.dialog.ts b/src/app/features/admin/user/components/dialogs/admin-user-delete/admin-user-delete.dialog.ts
index 214478f345fcbdd913b5745fab0c4c0fce4239e5..3f84ed44d47aedeec9d54bd67885504acd7137a3 100644
--- a/src/app/features/admin/user/components/dialogs/admin-user-delete/admin-user-delete.dialog.ts
+++ b/src/app/features/admin/user/components/dialogs/admin-user-delete/admin-user-delete.dialog.ts
@@ -9,10 +9,10 @@ import {
   MAT_DIALOG_DATA,
   MatDialogRef,
 } from "@angular/material/dialog";
+import {User} from "@models";
 import {Store} from "@ngxs/store";
 import {SharedAbstractDeleteDialog} from "@shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {DeleteDialog} from "@shared/models/delete-dialog.model";
 import {MARK_AS_TRANSLATABLE} from "solidify-frontend";
 
@@ -22,7 +22,7 @@ import {MARK_AS_TRANSLATABLE} from "solidify-frontend";
   styleUrls: ["../../../../../../shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class AdminUserDeleteDialog extends SharedAbstractDeleteDialog<UserExtended, AdminUserStateModel> {
+export class AdminUserDeleteDialog extends SharedAbstractDeleteDialog<User, AdminUserStateModel> {
   public readonly KEY_TITLE: string = MARK_AS_TRANSLATABLE("admin.user.dialog.delete.title");
   public readonly KEY_MESSAGE: string = MARK_AS_TRANSLATABLE("admin.user.dialog.delete.message");
   public readonly KEY_CONFIRM_BUTTON: string = MARK_AS_TRANSLATABLE("admin.user.dialog.delete.confirm");
diff --git a/src/app/features/admin/user/components/presentationals/admin-user-form/admin-user-form.presentational.ts b/src/app/features/admin/user/components/presentationals/admin-user-form/admin-user-form.presentational.ts
index d6666519a8f7f7a7340905fb29ffb88cee149223..d2dc442f9ae3cbf3c3c1a64868818644e5f993d6 100644
--- a/src/app/features/admin/user/components/presentationals/admin-user-form/admin-user-form.presentational.ts
+++ b/src/app/features/admin/user/components/presentationals/admin-user-form/admin-user-form.presentational.ts
@@ -20,7 +20,6 @@ import {SharedAbstractFormPresentational} from "@shared/components/presentationa
 import {RoutesEnum} from "@shared/enums/routes.enum";
 import {UserApplicationRoleEnum} from "@shared/enums/user-application-role.enum";
 import {BaseFormDefinition} from "@shared/models/base-form-definition.model";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   isEmptyString,
   isNullOrUndefined,
@@ -34,7 +33,7 @@ import {
   styleUrls: ["./admin-user-form.presentational.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class AdminUserFormPresentational extends SharedAbstractFormPresentational<UserExtended> {
+export class AdminUserFormPresentational extends SharedAbstractFormPresentational<User> {
   formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
 
   applicationRolesNames: string[] = [...Object.values(UserApplicationRoleEnum)];
@@ -54,7 +53,7 @@ export class AdminUserFormPresentational extends SharedAbstractFormPresentationa
     super(_changeDetectorRef, _elementRef);
   }
 
-  protected bindFormTo(user: UserExtended): void {
+  protected bindFormTo(user: User): void {
     this.form = this._fb.group({
       [this.formDefinition.externalUid]: [user.externalUid, [Validators.required, SolidifyValidator]],
       [this.formDefinition.targetedUid]: [user.targetedUid, [Validators.required, SolidifyValidator]],
@@ -87,7 +86,7 @@ export class AdminUserFormPresentational extends SharedAbstractFormPresentationa
   protected disableSpecificField(): void {
   }
 
-  protected treatmentBeforeSubmit(user: UserExtended): UserExtended {
+  protected treatmentBeforeSubmit(user: User): User {
     const userRoles = this.form.controls.applicationRoles.value.controls as FormArray[];
     const selectedArray: string [] = [];
     userRoles.map((formCtrl) => {
diff --git a/src/app/features/admin/user/components/routables/admin-user-create/admin-user-create.routable.ts b/src/app/features/admin/user/components/routables/admin-user-create/admin-user-create.routable.ts
index ff207a23b6e1237715e16e6f46359139167da11a..563b8ae0326cb148b8406ffd3db32ae674dfdce7 100644
--- a/src/app/features/admin/user/components/routables/admin-user-create/admin-user-create.routable.ts
+++ b/src/app/features/admin/user/components/routables/admin-user-create/admin-user-create.routable.ts
@@ -10,7 +10,10 @@ import {
   Component,
   ViewChild,
 } from "@angular/core";
-import {AccessOrganizationalUnit} from "@models";
+import {
+  AccessOrganizationalUnit,
+  User,
+} from "@models";
 import {
   Actions,
   Select,
@@ -19,7 +22,6 @@ import {
 import {SharedAbstractFormPresentational} from "@shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
 import {SharedAbstractCreateRoutable} from "@shared/components/routables/shared-abstract-create/shared-abstract-create.routable";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {LocalStateModel} from "@shared/models/local-state.model";
 import {Observable} from "rxjs";
 
@@ -29,14 +31,14 @@ import {Observable} from "rxjs";
   styleUrls: ["../../../../../../shared/components/routables/shared-abstract-create/shared-abstract-create.routable.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class AdminUserCreateRoutable extends SharedAbstractCreateRoutable<UserExtended, AdminUserStateModel> {
+export class AdminUserCreateRoutable extends SharedAbstractCreateRoutable<User, AdminUserStateModel> {
   @Select(AdminUserState.isLoadingWithDependency) isLoadingWithDependencyObs: Observable<boolean>;
   @Select(AdminUserState.isReadyToBeDisplayedInCreateMode) isReadyToBeDisplayedInCreateModeObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_person.list) listPersonObs: Observable<PersonExtended[]>;
   @Select((state: LocalStateModel) => state.shared.shared_organizationalUnit.list) listOrgUnitObs: Observable<AccessOrganizationalUnit[]>;
 
   @ViewChild("formPresentational")
-  readonly formPresentational: SharedAbstractFormPresentational<UserExtended>;
+  readonly formPresentational: SharedAbstractFormPresentational<User>;
 
   constructor(protected readonly _store: Store,
               protected readonly _actions$: Actions,
diff --git a/src/app/features/admin/user/components/routables/admin-user-detail-edit/admin-user-detail-edit.routable.ts b/src/app/features/admin/user/components/routables/admin-user-detail-edit/admin-user-detail-edit.routable.ts
index 0e86a82686272c22033674964afc35fde6d9e24c..9f3c281206dc341f7520b5e37e715a0d3282cc61 100644
--- a/src/app/features/admin/user/components/routables/admin-user-detail-edit/admin-user-detail-edit.routable.ts
+++ b/src/app/features/admin/user/components/routables/admin-user-detail-edit/admin-user-detail-edit.routable.ts
@@ -20,7 +20,10 @@ import {MatDialog} from "@angular/material/dialog";
 import {ActivatedRoute} from "@angular/router";
 import {AppAction} from "@app/stores/app.action";
 import {AppState} from "@app/stores/app.state";
-import {AccessOrganizationalUnit} from "@models";
+import {
+  AccessOrganizationalUnit,
+  User,
+} from "@models";
 import {Navigate} from "@ngxs/router-plugin";
 import {
   Actions,
@@ -30,7 +33,6 @@ import {
 } from "@ngxs/store";
 import {SharedAbstractDetailEditCommonRoutable} from "@shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {LocalStateModel} from "@shared/models/local-state.model";
 import {
   Observable,
@@ -52,14 +54,14 @@ import {
   styleUrls: ["./admin-user-detail-edit.routable.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonRoutable<UserExtended, AdminUserStateModel> {
+export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonRoutable<User, AdminUserStateModel> {
   @Select(AdminUserState.isLoadingWithDependency) isLoadingWithDependencyObs: Observable<boolean>;
   @Select(AdminUserState.isReadyToBeDisplayed) isReadyToBeDisplayedObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_person.list) listPersonObs: Observable<PersonExtended[]>;
   @Select((state: LocalStateModel) => state.shared.shared_organizationalUnit.list) listOrgUnitObs: Observable<AccessOrganizationalUnit[]>;
-  @Select(AppState.currentUser) currentUser: Observable<UserExtended>;
+  @Select(AppState.currentUser) currentUser: Observable<User>;
 
-  readonly KEY_PARAM_NAME: keyof UserExtended & string = "externalUid";
+  readonly KEY_PARAM_NAME: keyof User & string = "externalUid";
 
   constructor(protected _store: Store,
               protected _route: ActivatedRoute,
@@ -72,7 +74,7 @@ export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonR
   getSubResourceWithParentId(id: string): void {
   }
 
-  update(model: ModelFormControlEvent<UserExtended>): Observable<any> {
+  update(model: ModelFormControlEvent<User>): Observable<any> {
     this.subscribe(this.currentUser.pipe(
       take(1),
       tap(currentUser => {
@@ -102,7 +104,7 @@ export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonR
     return of();
   }
 
-  private openModalConfirmEditRole(data: AdminUserEditRoleCurrentUserDialogData, model: ModelFormControlEvent<UserExtended>): void {
+  private openModalConfirmEditRole(data: AdminUserEditRoleCurrentUserDialogData, model: ModelFormControlEvent<User>): void {
     this.subscribe(this._dialog.open(AdminUserEditRoleCurrentUserDialog, {
       data: data,
     }).afterClosed().pipe(
@@ -117,7 +119,7 @@ export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonR
     ));
   }
 
-  private updateAndLogout(model: ModelFormControlEvent<UserExtended>): void {
+  private updateAndLogout(model: ModelFormControlEvent<User>): void {
     super.update(model);
     this.subscribe(this._actions$.pipe(
       ofActionCompleted(AdminUserAction.UpdateSuccess),
@@ -129,11 +131,11 @@ export class AdminUserDetailEditRoutable extends SharedAbstractDetailEditCommonR
     ));
   }
 
-  isCurrentUser(userExtended: UserExtended): boolean {
-    if (isNullOrUndefined(userExtended)) {
+  isCurrentUser(user: User): boolean {
+    if (isNullOrUndefined(user)) {
       return false;
     }
-    return userExtended.resId === this._resId;
+    return user.resId === this._resId;
   }
 
   navigate($event: string[]): void {
diff --git a/src/app/features/admin/user/components/routables/admin-user-list/admin-user-list.routable.ts b/src/app/features/admin/user/components/routables/admin-user-list/admin-user-list.routable.ts
index b1add781e977ccd2927d793c6fb6415bf678e876..5f8e950f3e4097f60e2bd1fddde5933fdc1f3127 100644
--- a/src/app/features/admin/user/components/routables/admin-user-list/admin-user-list.routable.ts
+++ b/src/app/features/admin/user/components/routables/admin-user-list/admin-user-list.routable.ts
@@ -8,6 +8,8 @@ import {
 } from "@angular/core";
 import {MatDialog} from "@angular/material/dialog";
 import {ActivatedRoute} from "@angular/router";
+import {AppState} from "@app/stores/app.state";
+import {User} from "@models";
 import {
   Actions,
   Store,
@@ -15,13 +17,11 @@ import {
 import {SharedAbstractListRoutable} from "@shared/components/routables/shared-abstract-list/shared-abstract-list.routable";
 import {FieldTypeEnum} from "@shared/enums/field-type.enum";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {RouterExtService} from "@shared/services/router-ext.service";
 import {
-  OrderEnum,
   MARK_AS_TRANSLATABLE,
+  OrderEnum,
 } from "solidify-frontend";
-import {AppState} from "@app/stores/app.state";
 
 @Component({
   selector: "dlcm-admin-user-list-routable",
@@ -29,11 +29,11 @@ import {AppState} from "@app/stores/app.state";
   styleUrls: ["../../../../../../shared/components/routables/shared-abstract-list/shared-abstract-list.routable.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class AdminUserListRoutable extends SharedAbstractListRoutable<UserExtended, AdminUserStateModel> implements OnInit {
+export class AdminUserListRoutable extends SharedAbstractListRoutable<User, AdminUserStateModel> implements OnInit {
   readonly KEY_CREATE_BUTTON: string = MARK_AS_TRANSLATABLE("admin.user.button.new");
   readonly KEY_REFRESH_BUTTON: string = MARK_AS_TRANSLATABLE("admin.user.button.refresh");
   readonly KEY_BACK_BUTTON: string | undefined = MARK_AS_TRANSLATABLE("admin.button.goBackToAdminHome");
-  readonly KEY_PARAM_NAME: keyof UserExtended & string = "externalUid";
+  readonly KEY_PARAM_NAME: keyof User & string = "externalUid";
 
   constructor(protected readonly _store: Store,
               protected readonly _changeDetector: ChangeDetectorRef,
@@ -46,15 +46,15 @@ export class AdminUserListRoutable extends SharedAbstractListRoutable<UserExtend
 
   ngOnInit(): void {
     super.ngOnInit();
-    const currentUser: UserExtended = this._store.selectSnapshot(AppState.currentUser);
+    const currentUser: User = this._store.selectSnapshot(AppState.currentUser);
     this.listNewId = [currentUser.resId];
   }
 
-  conditionDisplayEditButton(model: UserExtended | undefined): boolean {
+  conditionDisplayEditButton(model: User | undefined): boolean {
     return true;
   }
 
-  conditionDisplayDeleteButton(model: UserExtended | undefined): boolean {
+  conditionDisplayDeleteButton(model: User | undefined): boolean {
     return true;
   }
 
diff --git a/src/app/features/admin/user/stores/admin-user.action.ts b/src/app/features/admin/user/stores/admin-user.action.ts
index 41c95bdd2c377e02c5d7f2e5cf67c755910ef6db..169a0b00668b36c694214c6d3e891376419d3920 100644
--- a/src/app/features/admin/user/stores/admin-user.action.ts
+++ b/src/app/features/admin/user/stores/admin-user.action.ts
@@ -1,5 +1,5 @@
+import {User} from "@models";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   ResourceAction,
   ResourceNameSpace,
@@ -30,11 +30,11 @@ export namespace AdminUserAction {
   }
 
   @TypeDefaultAction(state)
-  export class GetAllSuccess extends ResourceAction.GetAllSuccess<UserExtended> {
+  export class GetAllSuccess extends ResourceAction.GetAllSuccess<User> {
   }
 
   @TypeDefaultAction(state)
-  export class GetAllFail extends ResourceAction.GetAllFail<UserExtended> {
+  export class GetAllFail extends ResourceAction.GetAllFail<User> {
   }
 
   @TypeDefaultAction(state)
@@ -54,35 +54,35 @@ export namespace AdminUserAction {
   }
 
   @TypeDefaultAction(state)
-  export class GetByIdSuccess extends ResourceAction.GetByIdSuccess<UserExtended> {
+  export class GetByIdSuccess extends ResourceAction.GetByIdSuccess<User> {
   }
 
   @TypeDefaultAction(state)
-  export class GetByIdFail extends ResourceAction.GetByIdFail<UserExtended> {
+  export class GetByIdFail extends ResourceAction.GetByIdFail<User> {
   }
 
   @TypeDefaultAction(state)
-  export class Create extends ResourceAction.Create<UserExtended> {
+  export class Create extends ResourceAction.Create<User> {
   }
 
   @TypeDefaultAction(state)
-  export class CreateSuccess extends ResourceAction.CreateSuccess<UserExtended> {
+  export class CreateSuccess extends ResourceAction.CreateSuccess<User> {
   }
 
   @TypeDefaultAction(state)
-  export class CreateFail extends ResourceAction.CreateFail<UserExtended> {
+  export class CreateFail extends ResourceAction.CreateFail<User> {
   }
 
   @TypeDefaultAction(state)
-  export class Update extends ResourceAction.Update<UserExtended> {
+  export class Update extends ResourceAction.Update<User> {
   }
 
   @TypeDefaultAction(state)
-  export class UpdateSuccess extends ResourceAction.UpdateSuccess<UserExtended> {
+  export class UpdateSuccess extends ResourceAction.UpdateSuccess<User> {
   }
 
   @TypeDefaultAction(state)
-  export class UpdateFail extends ResourceAction.UpdateFail<UserExtended> {
+  export class UpdateFail extends ResourceAction.UpdateFail<User> {
   }
 
   @TypeDefaultAction(state)
@@ -98,7 +98,7 @@ export namespace AdminUserAction {
   }
 
   @TypeDefaultAction(state)
-  export class AddInList extends ResourceAction.AddInList<UserExtended> {
+  export class AddInList extends ResourceAction.AddInList<User> {
   }
 
   @TypeDefaultAction(state)
@@ -106,11 +106,11 @@ export namespace AdminUserAction {
   }
 
   @TypeDefaultAction(state)
-  export class AddInListByIdSuccess extends ResourceAction.AddInListByIdSuccess<UserExtended> {
+  export class AddInListByIdSuccess extends ResourceAction.AddInListByIdSuccess<User> {
   }
 
   @TypeDefaultAction(state)
-  export class AddInListByIdFail extends ResourceAction.AddInListByIdFail<UserExtended> {
+  export class AddInListByIdFail extends ResourceAction.AddInListByIdFail<User> {
   }
 
   @TypeDefaultAction(state)
@@ -126,7 +126,7 @@ export namespace AdminUserAction {
   }
 
   @TypeDefaultAction(state)
-  export class LoadNextChunkListSuccess extends ResourceAction.LoadNextChunkListSuccess<UserExtended> {
+  export class LoadNextChunkListSuccess extends ResourceAction.LoadNextChunkListSuccess<User> {
   }
 
   @TypeDefaultAction(state)
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 f611dbe529995f54fa43411a25bcf185187d7194..4d5d5a12fb4575569a4f73c6e315a6d9a366fdfd 100644
--- a/src/app/features/admin/user/stores/admin-user.state.ts
+++ b/src/app/features/admin/user/stores/admin-user.state.ts
@@ -3,6 +3,7 @@ import {
   adminUserActionNameSpace,
 } from "@admin/user/stores/admin-user.action";
 import {Injectable} from "@angular/core";
+import {User} from "@models";
 import {
   Action,
   Actions,
@@ -15,21 +16,20 @@ import {
 import {AdminResourceApiEnum} from "@shared/enums/api.enum";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
 import {RoutesEnum} from "@shared/enums/routes.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {SharedPersonAction} from "@shared/stores/person/shared-person.action";
 import {
   ApiService,
   defaultResourceStateInitValue,
   isNullOrUndefined,
+  MARK_AS_TRANSLATABLE,
   NotificationService,
   ResourceState,
   ResourceStateModel,
   StoreUtil,
-  MARK_AS_TRANSLATABLE,
   urlSeparator,
 } from "solidify-frontend";
 
-export interface AdminUserStateModel extends ResourceStateModel<UserExtended> {
+export interface AdminUserStateModel extends ResourceStateModel<User> {
 }
 
 @Injectable()
@@ -40,7 +40,7 @@ export interface AdminUserStateModel extends ResourceStateModel<UserExtended> {
   },
 
 })
-export class AdminUserState extends ResourceState<AdminUserStateModel, UserExtended> {
+export class AdminUserState extends ResourceState<AdminUserStateModel, User> {
   constructor(protected apiService: ApiService,
               protected store: Store,
               protected notificationService: NotificationService,
diff --git a/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-detail-edit/preservation-space-notification-detail-edit.routable.ts b/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-detail-edit/preservation-space-notification-detail-edit.routable.ts
index 04c557e1906d352954b4ad0a79d9362bbe4243ad..9d2af2bff5541f4aafe28de3b566b5749ccb3c96 100644
--- a/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-detail-edit/preservation-space-notification-detail-edit.routable.ts
+++ b/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-detail-edit/preservation-space-notification-detail-edit.routable.ts
@@ -6,16 +6,19 @@ import {
 } from "@angular/core";
 import {MatDialog} from "@angular/material/dialog";
 import {ActivatedRoute} from "@angular/router";
-import {environment} from "@environments/environment";
 import {NotificationModeEnum} from "@app/features/preservation-space/notification/enums/notification-mode.enum";
 import {NotificationHelper} from "@app/features/preservation-space/notification/helper/notification.helper";
 import {
   PreservationSpaceNotificationState,
   PreservationSpaceNotificationStateModel,
 } from "@app/features/preservation-space/notification/stores/preservation-space-notification.state";
+import {PreservationSpaceNotificationStatusHistoryAction} from "@app/features/preservation-space/notification/stores/status-history/preservation-space-notification-status-history.action";
+import {PreservationSpaceNotificationStatusHistoryState} from "@app/features/preservation-space/notification/stores/status-history/preservation-space-notification-status-history.state";
+import {environment} from "@environments/environment";
 import {
   NotificationDlcm,
   NotificationStatus,
+  NotificationType,
 } from "@models";
 import {Navigate} from "@ngxs/router-plugin";
 import {
@@ -23,34 +26,34 @@ import {
   Select,
   Store,
 } from "@ngxs/store";
+import {SharedHistoryDialog} from "@shared/components/dialogs/shared-history/shared-history.dialog";
 import {SharedAbstractDetailEditCommonRoutable} from "@shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable";
 import {IconNameEnum} from "@shared/enums/icon-name.enum";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
 import {
+  OrganizationalUnitRoutesEnum,
   PreservationSpaceRoutesEnum,
   RoutesEnum,
 } from "@shared/enums/routes.enum";
 import {ExtraButtonToolbar} from "@shared/models/extra-button-toolbar.model";
+import {StatusHistoryDialog} from "@shared/models/status-history-dialog.model";
+import {StatusHistory} from "@shared/models/status-history.model";
 import {Observable} from "rxjs";
 import {
   isNullOrUndefined,
+  MARK_AS_TRANSLATABLE,
   MemoizedUtil,
+  NotificationService,
   Override,
   OverrideProperty,
-  MARK_AS_TRANSLATABLE,
 } from "solidify-frontend";
+import {QueryParameters} from "solidify-frontend/lib/models";
 import {
   PreservationSpaceNotificationAction,
   preservationSpaceNotificationActionNameSpace,
 } from "../../../stores/preservation-space-notification.action";
 import NotificationStatusEnum = NotificationStatus.NotificationStatusEnum;
-import {SharedHistoryDialog} from "@shared/components/dialogs/shared-history/shared-history.dialog";
-import {PreservationSipStatusHistoryAction} from "@preservation/sip/stores/status-history/sip-status-history.action";
-import {StatusHistoryDialog} from "@shared/models/status-history-dialog.model";
-import {PreservationSpaceNotificationStatusHistoryState} from "@app/features/preservation-space/notification/stores/status-history/preservation-space-notification-status-history.state";
-import {StatusHistory} from "@shared/models/status-history.model";
-import {QueryParameters} from "solidify-frontend/lib/models";
-import {PreservationSpaceNotificationStatusHistoryAction} from "@app/features/preservation-space/notification/stores/status-history/preservation-space-notification-status-history.action";
+import NotificationTypeEnum = NotificationType.NotificationTypeEnum;
 
 @Component({
   selector: "dlcm-preservation-space-notification-detail-edit-routable",
@@ -76,11 +79,19 @@ export class PreservationSpaceNotificationDetailEditRoutable extends SharedAbstr
   readonly KEY_PARAM_NAME: keyof NotificationDlcm & string = "notificationType";
 
   listExtraButtons: ExtraButtonToolbar<NotificationDlcm>[] = [
+    {
+      color: "primary",
+      icon: IconNameEnum.navigate,
+      displayCondition: current => !isNullOrUndefined(current) && this.mode === NotificationModeEnum.inbox && current.notificationStatus !== NotificationStatusEnum.ACCEPTED,
+      callback: (current) => this._process(current),
+      labelToTranslate: MARK_AS_TRANSLATABLE("preservationSpace.notifications.navigation.button.process"),
+      order: 40,
+    },
     {
       color: "primary",
       icon: IconNameEnum.approve,
       displayCondition: current => !isNullOrUndefined(current) && this.mode === NotificationModeEnum.inbox && current.notificationStatus !== NotificationStatusEnum.ACCEPTED,
-      callback: () => this.accept(),
+      callback: () => this._accept(),
       labelToTranslate: MARK_AS_TRANSLATABLE("preservationSpace.notifications.navigation.button.accept"),
       order: 40,
     },
@@ -88,7 +99,7 @@ export class PreservationSpaceNotificationDetailEditRoutable extends SharedAbstr
       color: "primary",
       icon: IconNameEnum.unapprove,
       displayCondition: current => !isNullOrUndefined(current) && this.mode === NotificationModeEnum.inbox && current.notificationStatus !== NotificationStatusEnum.REFUSED,
-      callback: () => this.refuse(),
+      callback: () => this._refuse(),
       labelToTranslate: MARK_AS_TRANSLATABLE("preservationSpace.notifications.navigation.button.refuse"),
       order: 40,
     },
@@ -96,7 +107,7 @@ export class PreservationSpaceNotificationDetailEditRoutable extends SharedAbstr
       color: "primary",
       icon: IconNameEnum.wait,
       displayCondition: current => !isNullOrUndefined(current) && this.mode === NotificationModeEnum.inbox && current.notificationStatus !== NotificationStatusEnum.WAITING,
-      callback: () => this.wait(),
+      callback: () => this._wait(),
       labelToTranslate: MARK_AS_TRANSLATABLE("preservationSpace.notifications.navigation.button.wait"),
       order: 40,
     },
@@ -106,6 +117,7 @@ export class PreservationSpaceNotificationDetailEditRoutable extends SharedAbstr
               protected _route: ActivatedRoute,
               protected readonly _actions$: Actions,
               protected readonly _changeDetector: ChangeDetectorRef,
+              private readonly _notificationService: NotificationService,
               public _dialog: MatDialog) {
     super(_store, _route, _actions$, _changeDetector, _dialog, LocalStateEnum.preservationSpace_notification, preservationSpaceNotificationActionNameSpace, LocalStateEnum.preservationSpace);
   }
@@ -136,18 +148,37 @@ export class PreservationSpaceNotificationDetailEditRoutable extends SharedAbstr
     this._store.dispatch(new Navigate([route], NotificationHelper.getUrlQueryParam(orgUnitId)));
   }
 
-  accept(): void {
+  private _accept(): void {
     this._store.dispatch(new PreservationSpaceNotificationAction.Accept(this._resId));
   }
 
-  refuse(): void {
+  private _refuse(): void {
     this._store.dispatch(new PreservationSpaceNotificationAction.Refuse(this._resId));
   }
 
-  wait(): void {
+  private _wait(): void {
     this._store.dispatch(new PreservationSpaceNotificationAction.Wait(this._resId));
   }
 
+  private _process(notification: NotificationDlcm): void {
+    switch (notification.notificationType) {
+      case NotificationTypeEnum.JOIN_ORG_UNIT_REQUEST:
+        this._processJoinOrgUnitRequest(notification);
+        break;
+      case NotificationTypeEnum.ACCESS_DATASET_REQUEST:
+      default:
+        this._notificationService.showInformation(MARK_AS_TRANSLATABLE("preservationSpace.notifications.notification.processActionNotAvailableForThisType"), {type: notification.notificationType});
+        break;
+    }
+  }
+
+  private _processJoinOrgUnitRequest(notification: NotificationDlcm): void {
+    this._store.dispatch(new Navigate([RoutesEnum.preservationSpaceOrganizationalUnitDetail, notification.notifiedOrgUnit.resId, OrganizationalUnitRoutesEnum.edit], {
+      [NotificationHelper.KEY_ROLE_ID]: "APPROVER", // TODO Change when backend store this info
+      [NotificationHelper.KEY_PERSON_ID]: notification.emitter.person.resId,
+    }));
+  }
+
   showHistory(): void {
     const dialogRef = this._dialog.open(SharedHistoryDialog, {
       width: environment.modalWidth,
diff --git a/src/app/features/preservation-space/notification/helper/notification.helper.ts b/src/app/features/preservation-space/notification/helper/notification.helper.ts
index c0d43f892b1e0d5febc3534b201be66ef1c6f61f..fd87432fa7f87738f825876bfa139a051a22f122 100644
--- a/src/app/features/preservation-space/notification/helper/notification.helper.ts
+++ b/src/app/features/preservation-space/notification/helper/notification.helper.ts
@@ -6,6 +6,8 @@ import {isNotNullNorUndefined} from "solidify-frontend";
 
 export class NotificationHelper {
   static readonly KEY_ORGUNIT_ID: keyof NotificationDlcm = "notifiedOrgUnit";
+  static readonly KEY_ROLE_ID: string = "roleId";
+  static readonly KEY_PERSON_ID: string = "personId";
 
   static getUrlQueryParam(orgUnitId: string): object {
     if (isNotNullNorUndefined(orgUnitId)) {
diff --git a/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.html b/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.html
index 3da41e778163726afb1ed792852ebfef93d7f9ec..f18355a5e0924f959ad04baf9799f17f6dc31cdb 100644
--- a/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.html
+++ b/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.html
@@ -3,6 +3,19 @@
         class="form"
         (ngSubmit)="onSubmit()"
   >
+    <mat-form-field *ngIf="getFormControl(formDefinition.roleId) as fd">
+      <mat-label>{{'sorganizationalUnit.modal.requestAccess.form.desiredRole' | translate}}</mat-label>
+      <mat-select [formControl]="fd"
+                  [required]="formValidationHelper.hasRequiredField(fd)"
+      >
+        <mat-option *ngFor="let role of (listRoleObs | async)"
+                    [value]="role.resId"
+        >
+          {{role.name}}
+        </mat-option>
+      </mat-select>
+    </mat-form-field>
+
     <mat-form-field *ngIf="getFormControl(formDefinition.message) as fd">
       <mat-label>{{'organizationalUnit.modal.requestAccess.form.message' | translate }}</mat-label>
       <textarea [formControl]="fd"
diff --git a/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.ts b/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.ts
index e4bdb559794b65affc5d820d626f85c5b65558ba..e3636eab91432dbc1d2574e7b14008f25eae9a7e 100644
--- a/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.ts
+++ b/src/app/features/preservation-space/organizational-unit/components/dialogs/orgunit-request-access/orgunit-request-access.dialog.ts
@@ -15,6 +15,7 @@ import {
   MatDialogRef,
 } from "@angular/material/dialog";
 import {DepositDataFile} from "@deposit/models/deposit-data-file.model";
+import {Role} from "@models";
 import {
   Actions,
   Store,
@@ -22,11 +23,14 @@ import {
 import {SharedAbstractContainer} from "@shared/components/containers/shared-abstract/shared-abstract.container";
 import {BaseFormDefinition} from "@shared/models/base-form-definition.model";
 import {SharedNotificationState} from "@shared/stores/notification/shared-notification.state";
+import {SharedRoleAction} from "@shared/stores/role/shared-role.action";
+import {SharedRoleState} from "@shared/stores/role/shared-role.state";
 import {Observable} from "rxjs";
 import {
   FormValidationHelper,
   MemoizedUtil,
   PropertyName,
+  ResourceState,
   SolidifyValidator,
 } from "solidify-frontend";
 
@@ -38,6 +42,7 @@ import {
 })
 export class OrgunitRequestAccessDialog extends SharedAbstractContainer implements OnInit {
   isLoadingObs: Observable<boolean> = MemoizedUtil.isLoading(this._store, SharedNotificationState);
+  listRoleObs: Observable<Role[]> = ResourceState.list(this._store, SharedRoleState);
 
   form: FormGroup;
   formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
@@ -52,7 +57,9 @@ export class OrgunitRequestAccessDialog extends SharedAbstractContainer implemen
 
   ngOnInit(): void {
     super.ngOnInit();
+    this._store.dispatch(new SharedRoleAction.GetAll());
     this.form = this._fb.group({
+      [this.formDefinition.roleId]: ["", [Validators.required, SolidifyValidator]],
       [this.formDefinition.message]: ["", [Validators.required, SolidifyValidator]],
     });
   }
@@ -75,6 +82,7 @@ export class OrgunitRequestAccessDialog extends SharedAbstractContainer implemen
 }
 
 class FormComponentFormDefinition extends BaseFormDefinition {
+  @PropertyName() roleId: string;
   @PropertyName() message: string;
 }
 
diff --git a/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html b/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
index cdfc755ac52f5a767821cba52590593e2b0e1e67..e181a5d7503ebec3dc4d75b891544a484158df1d 100644
--- a/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
+++ b/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
@@ -121,6 +121,7 @@
       <dlcm-shared-person-orgunit-role [formControl]="form.get(formDefinition.personRole)"
                                        [mode]="personOrgUnitRoleMode.person"
                                        [selectedPersonOrOrgUnitRole]="selectedPersonRole"
+                                       [highlightedPersonOrOrgUnitId]="personIdAutomaticallyAdded"
                                        [readonly]="readonly"
                                        [listRole]="listRole"
                                        (navigate)="_navigateBS.next($event)"
diff --git a/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts b/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
index f2f1d374889f7b19d31cb79d7657d50c4fb5e6bb..5cbce95a8bb0995a57e97bb5bc7793725205b2a0 100644
--- a/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
+++ b/src/app/features/preservation-space/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
@@ -45,6 +45,8 @@ import {
   isNullOrUndefined,
   MappingObject,
   MappingObjectUtil,
+  MARK_AS_TRANSLATABLE,
+  NotificationService,
   ObservableUtil,
   PropertyName,
   ResourceNameSpace,
@@ -80,6 +82,9 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
   @Input()
   isManager: boolean;
 
+  @Input()
+  urlQueryParameters: MappingObject<string | undefined>;
+
   researchDomainLabelCallback: (value: ResearchDomain) => string = (value: ResearchDomain) => `[${value.source}] ${value.name}`;
 
   protected readonly _requestToBeMemberBS: BehaviorSubject<void> = new BehaviorSubject<void>(undefined);
@@ -90,6 +95,7 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
   sharedResearchDomainState: typeof SharedResearchDomainState = SharedResearchDomainState;
 
   extraSearchParameterSource: MappingObject = {};
+  personIdAutomaticallyAdded: string | undefined = undefined;
 
   get personOrgUnitRoleMode(): typeof PersonOrgUnitRoleMode {
     return PersonOrgUnitRoleMode;
@@ -99,6 +105,7 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
               protected readonly _elementRef: ElementRef,
               private readonly _fb: FormBuilder,
               public readonly breakpointService: BreakpointService,
+              private readonly _notificationService: NotificationService,
               public readonly securityService: SecurityService) {
     super(_changeDetectorRef, _elementRef);
   }
@@ -127,6 +134,32 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
       [this.formDefinition.researchDomains]: [_.map(organizationalUnit.researchDomains, LocalModelAttributeEnum.resId), [SolidifyValidator]],
       [this.formDefinition.keywords]: [isNullOrUndefined(organizationalUnit.keywords) ? [] : [...organizationalUnit.keywords], [SolidifyValidator]],
     });
+
+    this._addRoleAskingInNotificationRequest();
+  }
+
+  private _addRoleAskingInNotificationRequest(): void {
+    if (isNullOrUndefined(this.urlQueryParameters) || MappingObjectUtil.size(this.urlQueryParameters) === 0) {
+      return;
+    }
+    const roleId = MappingObjectUtil.get(this.urlQueryParameters, NotificationHelper.KEY_ROLE_ID);
+    const personId = MappingObjectUtil.get(this.urlQueryParameters, NotificationHelper.KEY_PERSON_ID);
+    if (isNullOrUndefined(roleId) || isNullOrUndefined(personId)) {
+      return;
+    }
+    this.personIdAutomaticallyAdded = personId;
+    const existingPerson = this.selectedPersonRole.find(p => p.resId === personId);
+    if (isNullOrUndefined(existingPerson)) {
+      this.selectedPersonRole = [...this.selectedPersonRole, {
+        resId: personId,
+        roles: [{
+          resId: roleId,
+        }],
+      }];
+      this._notificationService.showInformation(MARK_AS_TRANSLATABLE("organizationalUnit.notification.personAddedToOrgUnit"));
+    } else {
+      this._notificationService.showInformation(MARK_AS_TRANSLATABLE("organizationalUnit.notification.personAlreadyInOrgUnit"));
+    }
   }
 
   protected treatmentBeforeSubmit(organizationalUnit: OrganizationalUnit): OrganizationalUnit {
diff --git a/src/app/features/preservation-space/organizational-unit/components/routables/orgunit-detail-edit/orgunit-detail-edit.routable.html b/src/app/features/preservation-space/organizational-unit/components/routables/orgunit-detail-edit/orgunit-detail-edit.routable.html
index cc2616dc802b25c8eccca49bb240ff5d0abc6163..6c50e50e6f9d2bfaeea619a0d68d8fccc91905a6 100644
--- a/src/app/features/preservation-space/organizational-unit/components/routables/orgunit-detail-edit/orgunit-detail-edit.routable.html
+++ b/src/app/features/preservation-space/organizational-unit/components/routables/orgunit-detail-edit/orgunit-detail-edit.routable.html
@@ -29,6 +29,7 @@
                        [readonly]="!isEdit"
                        [editAvailable]="editAvailable"
                        [researchDomainSources]="researchDomainSourcesObs | async"
+                       [urlQueryParameters]="urlQueryParameters"
                        (submitChange)="update($event)"
                        (checkAvailableChange)="checkAvailable($event)"
                        (dirtyChange)="updateCanDeactivate($event)"
diff --git a/src/app/models/index.ts b/src/app/models/index.ts
index b2d3cbfb30aa4a69395a9124a9a272901e31b967..42f92fa8f6481c4bdbff5474aca3090569c16d04 100644
--- a/src/app/models/index.ts
+++ b/src/app/models/index.ts
@@ -42,7 +42,6 @@ import {Sip as SipPartial} from "../generated-api/model/sip.partial.model";
 import {SubmissionAgreement as SubmissionAgreementPartial} from "../generated-api/model/submission-agreement.partial.model";
 import {SubmissionPolicy as SubmissionPolicyPartial} from "../generated-api/model/submission-policy.partial.model";
 import {User as UserPartial} from "../generated-api/model/user.partial.model";
-import FormDescriptionTypeEnum = FormDescriptionType.FormDescriptionTypeEnum;
 
 export interface AccessOrganizationalUnit extends AccessOrganizationalUnitPartial {
 }
@@ -108,6 +107,7 @@ export namespace FormDescriptionType {
     FORMLY: "FORMLY" as FormDescriptionTypeEnum,
   };
 }
+
 export interface AdditionalFieldsForm {
   resId?: string;
   type: FormDescriptionType.FormDescriptionTypeEnum;
@@ -301,4 +301,7 @@ export interface SubmissionPolicy extends SubmissionPolicyPartial {
 }
 
 export interface User extends UserPartial {
+  person?: Person;
+  accessToken?: string;
+  refreshToken?: string;
 }
diff --git a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.html b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.html
index 44963c9c709c3a80883fae72faecf86cb3723fd6..7e83632ad4563be31f1822519e5e816174ed9a75 100644
--- a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.html
+++ b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.html
@@ -7,7 +7,9 @@
 <ul *ngIf="formArray?.controls?.length > 0"
     class="list-person-role"
 >
-  <li *ngFor="let f of formArray.controls; let i = index">
+  <li *ngFor="let f of formArray.controls; let i = index"
+      [class.is-highlighted]="highlightedPersonOrOrgUnitId === getFormControl(f, formDefinition.id).value"
+  >
     <div class="left-part">
       <dlcm-shared-searchable-single-select *ngIf="mode === modeEnum.person && getFormControl(f, formDefinition.id) as fd"
                                             solidifyValidation
diff --git a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.scss b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.scss
index 7b1bee39ab1c590ab2da6744cad214043a8b4119..41ce5d52045aed30b0325eda2f1f0d30d96c1424 100644
--- a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.scss
+++ b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.scss
@@ -25,6 +25,10 @@
       flex-direction: row;
       padding: 10px 10px;
 
+      &.is-highlighted {
+        background-color: $primary-color-extra-lighter !important;
+      }
+
       &:not(:last-child) {
         border-bottom: 1px solid $medium-light-grey;
       }
diff --git a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.ts b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.ts
index 66acbd1e5dda8b6f22535f48ab244a094bbb96e2..4bfc89966621f3cfe9fa20412ad7c05acc67c3cb 100644
--- a/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.ts
+++ b/src/app/shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational.ts
@@ -47,11 +47,11 @@ import {
   isEmptyArray,
   isNullOrUndefined,
   isUndefined,
+  MARK_AS_TRANSLATABLE,
   ObservableUtil,
   PropertyName,
   ResourceNameSpace,
   StringUtil,
-  MARK_AS_TRANSLATABLE,
 } from "solidify-frontend";
 
 @Component({
@@ -85,6 +85,9 @@ export class SharedPersonOrgunitRolePresentational extends SharedAbstractPresent
   @Input()
   listRole: Role[];
 
+  @Input()
+  highlightedPersonOrOrgUnitId: string;
+
   sharedPersonActionNameSpace: ResourceNameSpace = sharedPersonActionNameSpace;
   sharedPersonState: typeof SharedPersonState = SharedPersonState;
 
diff --git a/src/app/shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable.ts b/src/app/shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable.ts
index d74b43b239cd9490e95554a34a37e3f6f94e48a7..9598ac83b69f271a1c2e8cd516a3371db922f52a 100644
--- a/src/app/shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable.ts
+++ b/src/app/shared/components/routables/shared-abstract-detail-edit-common/shared-abstract-detail-edit-common.routable.ts
@@ -24,7 +24,8 @@ import {
   ResourceStateModel,
 } from "solidify-frontend";
 
-export abstract class SharedAbstractDetailEditCommonRoutable<TResourceModel extends BaseResourceType, UResourceStateModel extends ResourceStateModel<TResourceModel>> extends SharedAbstractDetailEditRoutable<TResourceModel, UResourceStateModel> implements OnInit, OnDestroy {
+export abstract class SharedAbstractDetailEditCommonRoutable<TResourceModel extends BaseResourceType, UResourceStateModel extends ResourceStateModel<TResourceModel>>
+  extends SharedAbstractDetailEditRoutable<TResourceModel, UResourceStateModel> implements OnInit, OnDestroy {
   abstract readonly KEY_PARAM_NAME: keyof TResourceModel & string;
 
   protected constructor(protected readonly _store: Store,
diff --git a/src/app/shared/components/routables/shared-abstract-detail-edit/shared-abstract-detail-edit.routable.ts b/src/app/shared/components/routables/shared-abstract-detail-edit/shared-abstract-detail-edit.routable.ts
index 65324659263dfbe1271436cbf36b006d59c6a370..204ff6f7d8e9d4bce4234901a3ab1a906c873ede 100644
--- a/src/app/shared/components/routables/shared-abstract-detail-edit/shared-abstract-detail-edit.routable.ts
+++ b/src/app/shared/components/routables/shared-abstract-detail-edit/shared-abstract-detail-edit.routable.ts
@@ -25,6 +25,7 @@ import {
 import {SharedAbstractFormPresentational} from "@shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
 import {AppRoutesEnum} from "@shared/enums/routes.enum";
 import {CrudHelper} from "@shared/helpers/crud.helper";
+import {UrlQueryParamHelper} from "@shared/helpers/url-query-param.helper";
 import {FormControlKey} from "@shared/models/form-control-key.model";
 import {LocalStateModel} from "@shared/models/local-state.model";
 import {Observable} from "rxjs";
@@ -37,6 +38,7 @@ import {
 import {
   BaseResourceType,
   isNullOrUndefined,
+  MappingObject,
   ModelFormControlEvent,
   QueryParameters,
   ResourceActionHelper,
@@ -66,6 +68,7 @@ export abstract class SharedAbstractDetailEditRoutable<TResourceModel extends Ba
 
   isEdit: boolean;
   isEditObs: Observable<boolean>;
+  urlQueryParameters: MappingObject<string | undefined>;
 
   readonly editAvailable: boolean = true;
   readonly deleteAvailable: boolean = true;
@@ -127,7 +130,10 @@ export abstract class SharedAbstractDetailEditRoutable<TResourceModel extends Ba
     this.isEditObs = this.urlStateObs.pipe(
       map(url => url.url),
       distinctUntilChanged(),
-      map(url => {
+      map(urlRaw => {
+        const urlSplitted = urlRaw.split("?");
+        const url = urlSplitted[0];
+        this._extractQueryParams(urlSplitted.length > 1 ? urlSplitted[1] : undefined);
         this.isEdit = url.endsWith(AppRoutesEnum.separator + AppRoutesEnum.edit);
         this._changeDetector.detectChanges();
         return this.isEdit;
@@ -187,4 +193,8 @@ export abstract class SharedAbstractDetailEditRoutable<TResourceModel extends Ba
   checkAvailable(formControlKey: FormControlKey): void {
     this.subscribe(CrudHelper.checkAvailable(formControlKey, this._store, this._actions$, this._resourceNameSpace, this._resId));
   }
+
+  private _extractQueryParams(rawQueryParameters: string): void {
+    this.urlQueryParameters = UrlQueryParamHelper.getQueryParamMappingObject(rawQueryParameters);
+  }
 }
diff --git a/src/app/shared/helpers/url-query-param.helper.ts b/src/app/shared/helpers/url-query-param.helper.ts
index ddb4e958a54a21d69a888a6fa5f4894b06c5f0fc..32174a6dacab82502cb510e92730b589a2bb7172 100644
--- a/src/app/shared/helpers/url-query-param.helper.ts
+++ b/src/app/shared/helpers/url-query-param.helper.ts
@@ -4,6 +4,7 @@ import {
   isEmptyString,
   isNotNullNorUndefined,
   isNullOrUndefined,
+  MappingObject,
   MappingObjectUtil,
   StringUtil,
 } from "solidify-frontend";
@@ -16,6 +17,23 @@ export class UrlQueryParamHelper {
   private static readonly _QUERY_PARAM_SEPARATOR_CHAR: string = "&";
   private static readonly _QUERY_PARAM_VALUE_AFFECTION_CHAR: string = "=";
 
+  static getQueryParamMappingObject(rawQueryParam: string): MappingObject<string | undefined> {
+    const mappingObject = new Map<string, string>();
+    if (isNullOrUndefined(rawQueryParam)) {
+      return mappingObject;
+    }
+    const listQueryParam = this._getListQueryParameters(rawQueryParam);
+    if (listQueryParam.length === 0) {
+      return mappingObject;
+    }
+    listQueryParam.forEach(queryParam => {
+      const queryParamSplitted = queryParam.split(this._QUERY_PARAM_VALUE_AFFECTION_CHAR);
+      mappingObject.set(queryParamSplitted[0], queryParamSplitted.length > 1 ? queryParamSplitted[1] : undefined);
+    });
+
+    return mappingObject;
+  }
+
   static getQueryParamOAuth2(): string {
     // NEED TO PRESERVE QUERY PARAM WHEN ROOTING USING HASH STRATEGY IS INITIALIZED
     // NECESSARY FOR OAUTH 2 PROCESS (SHOULD PRESERVED CODE AND STATE IN QUERY PARAM)
diff --git a/src/app/shared/models/business/user-extended.model.ts b/src/app/shared/models/business/user-extended.model.ts
deleted file mode 100644
index e4763234947efbf6a52ced5fcfe448c08fbd1991..0000000000000000000000000000000000000000
--- a/src/app/shared/models/business/user-extended.model.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {
-  Person,
-  User,
-} from "@models";
-
-export interface UserExtended extends User {
-  person?: Person;
-  accessToken?: string;
-  refreshToken?: string;
-}
diff --git a/src/app/stores/app.state.ts b/src/app/stores/app.state.ts
index fed448e230b0786167859d44a3df09bc7894b7ec..6f547009f578d4d65acf1c519829114f292f60b9 100644
--- a/src/app/stores/app.state.ts
+++ b/src/app/stores/app.state.ts
@@ -52,6 +52,7 @@ import {
   OrganizationalUnit,
   Person,
   Role,
+  User,
 } from "@models";
 import {TranslateService} from "@ngx-translate/core";
 import {Navigate} from "@ngxs/router-plugin";
@@ -74,7 +75,6 @@ import {LocalStateEnum} from "@shared/enums/local-state.enum";
 import {PollingHelper} from "@shared/helpers/polling.helper";
 import {SessionStorageHelper} from "@shared/helpers/session-storage.helper";
 import {UrlQueryParamHelper} from "@shared/helpers/url-query-param.helper";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {ShortDoi} from "@shared/models/short-doi.model";
 import {Token} from "@shared/models/token.model";
 import * as moment from "moment";
@@ -189,7 +189,7 @@ export class AppState extends BasicState<AppStateModel> {
   }
 
   @Selector()
-  static currentUser(state: AppStateModel): UserExtended {
+  static currentUser(state: AppStateModel): User {
     return state.application_user.current;
   }
 
diff --git a/src/app/stores/system-property/app-system-property.state.ts b/src/app/stores/system-property/app-system-property.state.ts
index f88c40791f58d796258b6f78a342e9a782ba2bf5..d8410500af5f4016defa4ae4b30a9f83e59aa9f4 100644
--- a/src/app/stores/system-property/app-system-property.state.ts
+++ b/src/app/stores/system-property/app-system-property.state.ts
@@ -7,6 +7,7 @@ import {
   appSystemPropertyActionNameSpace,
 } from "@app/stores/system-property/app-system-property.action";
 import {environment} from "@environments/environment";
+import {User} from "@models";
 import {
   Action,
   Actions,
@@ -14,7 +15,6 @@ import {
   StateContext,
   Store,
 } from "@ngxs/store";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {Observable} from "rxjs";
 import {
   catchError,
@@ -30,7 +30,7 @@ import {
   SolidifyStateError,
 } from "solidify-frontend";
 
-export interface AppSystemPropertyStateModel extends ResourceStateModel<UserExtended> {
+export interface AppSystemPropertyStateModel extends ResourceStateModel<User> {
 }
 
 @Injectable()
@@ -63,7 +63,7 @@ export class AppSystemPropertyState extends ResourceState<AppSystemPropertyState
 
     return this.apiService.getByIdInPath<SystemProperty>(AdminResourceApiEnum.systemProperties)
       .pipe(
-        tap((user: UserExtended) => {
+        tap((user: User) => {
           ctx.dispatch(new AppSystemPropertyAction.GetSystemPropertiesSuccess(action, user));
         }),
         catchError(error => {
diff --git a/src/app/stores/user/app-user.action.ts b/src/app/stores/user/app-user.action.ts
index 158434c521dcf13cd9b30dd401d25bd3368e143e..e9727aef034c2cce324ead0f341160a3cae12009 100644
--- a/src/app/stores/user/app-user.action.ts
+++ b/src/app/stores/user/app-user.action.ts
@@ -1,6 +1,8 @@
-import {Person} from "@models";
+import {
+  Person,
+  User,
+} from "@models";
 import {LocalStateEnum} from "@shared/enums/local-state.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {
   BaseAction,
   BaseSubAction,
@@ -147,7 +149,7 @@ export namespace AppUserAction {
   export class GetCurrentUserSuccess extends BaseSubAction<GetCurrentUser> {
     static readonly type: string = `[${state}] Get Current User Success`;
 
-    constructor(public parentAction: GetCurrentUser, public user: UserExtended) {
+    constructor(public parentAction: GetCurrentUser, public user: User) {
       super(parentAction);
     }
   }
diff --git a/src/app/stores/user/app-user.state.ts b/src/app/stores/user/app-user.state.ts
index a1f2a103cc19518470abca77149a80e8a46b5d49..68c6a3d836b5c2b0e9471b95d4a602f308143d5f 100644
--- a/src/app/stores/user/app-user.state.ts
+++ b/src/app/stores/user/app-user.state.ts
@@ -6,6 +6,7 @@ import {
   AppUserAction,
   appUserActionNameSpace,
 } from "@app/stores/user/app-user.action";
+import {User} from "@models";
 import {
   Action,
   Actions,
@@ -14,7 +15,6 @@ import {
   Store,
 } from "@ngxs/store";
 import {ApiActionEnum} from "@shared/enums/api-action.enum";
-import {UserExtended} from "@shared/models/business/user-extended.model";
 import {Observable} from "rxjs";
 import {
   catchError,
@@ -33,7 +33,7 @@ import {
 } from "solidify-frontend";
 import {environment} from "../../../environments/environment";
 
-export interface AppUserStateModel extends ResourceStateModel<UserExtended> {
+export interface AppUserStateModel extends ResourceStateModel<User> {
 }
 
 @Injectable()
@@ -44,7 +44,7 @@ export interface AppUserStateModel extends ResourceStateModel<UserExtended> {
     queryParameters: new QueryParameters(environment.defaultEnumValuePageSizeOption),
   },
 })
-export class AppUserState extends ResourceState<AppUserStateModel, UserExtended> {
+export class AppUserState extends ResourceState<AppUserStateModel, User> {
   constructor(protected apiService: ApiService,
               protected store: Store,
               protected notificationService: NotificationService,
@@ -59,10 +59,10 @@ export class AppUserState extends ResourceState<AppUserStateModel, UserExtended>
   }
 
   @Action(AppUserAction.GetCurrentUser)
-  getCurrentUser(ctx: StateContext<AppUserStateModel>, action: AppUserAction.GetCurrentUser): Observable<CollectionTyped<UserExtended>> {
-    return this.apiService.get<UserExtended>(AdminResourceApiEnum.users + urlSeparator + ApiActionEnum.AUTHENTICATED, null)
+  getCurrentUser(ctx: StateContext<AppUserStateModel>, action: AppUserAction.GetCurrentUser): Observable<CollectionTyped<User>> {
+    return this.apiService.get<User>(AdminResourceApiEnum.users + urlSeparator + ApiActionEnum.AUTHENTICATED, null)
       .pipe(
-        tap((user: UserExtended) => {
+        tap((user: User) => {
           ctx.dispatch(new AppUserAction.GetCurrentUserSuccess(action, user));
         }),
         catchError(error => {
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index b312811925123d815a5ecfa0ff5d9356bb75b19d..6bf44112eab10fbe061ef828921beb59d643b43e 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -893,7 +893,7 @@
         "button": {
           "back": "Zurück"
         },
-        "title": "Titel"
+        "title": "Aip nicht gefunden"
       }
     },
     "buttonInfoCreation": {
@@ -2119,6 +2119,8 @@
     "name": "Name",
     "new": "Neue Organisationseinheit anlegen",
     "notification": {
+      "personAddedToOrgUnit": "Die Person wurde der Organisationseinheit hinzugefügt",
+      "personAlreadyInOrgUnit": "Die Person ist bereits Teil der Organisationseinheit",
       "resource": {
         "create": "Organisatorische Einheit erstellt",
         "delete": "Organisationseinheit gelöscht",
@@ -2537,11 +2539,13 @@
       "navigation": {
         "button": {
           "accept": "Akzeptieren Sie",
+          "process": "Prozess",
           "refuse": "ablehnen",
           "wait": "Warten"
         }
       },
       "notification": {
+        "processActionNotAvailableForThisType": "Halbautomatische Verarbeitung von Abfragen des Typs {{type}} sind noch nicht verfügbar",
         "resource": {
           "create": "Benachrichtigung erstellt",
           "delete": "Benachrichtigung gelöscht",
@@ -2618,6 +2622,15 @@
       }
     }
   },
+  "sorganizationalUnit": {
+    "modal": {
+      "requestAccess": {
+        "form": {
+          "desiredRole": "Gewünschte Rolle"
+        }
+      }
+    }
+  },
   "table": {
     "cleanAllFilter": "Alle Filter entfernen",
     "filter": {
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index f1c41bf1b40f2d03732a2ed5d037286293e43567..819e460cd0d319024f1d40c8be1d5cbf24ba5f3e 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -893,7 +893,7 @@
         "button": {
           "back": "Back"
         },
-        "title": "Title"
+        "title": "Aip not found"
       }
     },
     "buttonInfoCreation": {
@@ -2119,6 +2119,8 @@
     "name": "Name",
     "new": "Create new organizational unit",
     "notification": {
+      "personAddedToOrgUnit": "The person has been added to the organizational unit",
+      "personAlreadyInOrgUnit": "The person is already part of the organizational unit",
       "resource": {
         "create": "Organizational Unit created",
         "delete": "Organizational Unit deleted",
@@ -2537,11 +2539,13 @@
       "navigation": {
         "button": {
           "accept": "Accept",
+          "process": "Process",
           "refuse": "Refuse",
           "wait": "Wait"
         }
       },
       "notification": {
+        "processActionNotAvailableForThisType": "Semi-automatic processing of {{type}} type queries are not yet available",
         "resource": {
           "create": "Notification created",
           "delete": "Notification deleted",
@@ -2618,6 +2622,15 @@
       }
     }
   },
+  "sorganizationalUnit": {
+    "modal": {
+      "requestAccess": {
+        "form": {
+          "desiredRole": "Desired role"
+        }
+      }
+    }
+  },
   "table": {
     "cleanAllFilter": "Remove all filters",
     "filter": {
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index 92c935c2e116b339f4ed75da6f1eed3b1c8ee52f..3d7c3216a4939195754dab3fef3d586142e919ed 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -891,9 +891,9 @@
     "aipDownloaded": {
       "notFound": {
         "button": {
-          "back": "app.aipDownloaded.notFound.button.back"
+          "back": "Retour"
         },
-        "title": "app.aipDownloaded.notFound.title"
+        "title": "AIP introuvable"
       }
     },
     "buttonInfoCreation": {
@@ -2119,6 +2119,8 @@
     "name": "Nom",
     "new": "Créer nouvelle unité organisationnelle",
     "notification": {
+      "personAddedToOrgUnit": "La personne a été ajouté à l'unité organisationnelle",
+      "personAlreadyInOrgUnit": "La personne fait déjà partie de l'unité organisationnelle",
       "resource": {
         "create": "Unité Organisationnelle créée avec succès",
         "delete": "Unité Organisationnelle supprimée avec succès",
@@ -2537,11 +2539,13 @@
       "navigation": {
         "button": {
           "accept": "Accepter",
+          "process": "Traiter",
           "refuse": "Refuser",
           "wait": "En attente"
         }
       },
       "notification": {
+        "processActionNotAvailableForThisType": "Le traitement semi-automatique des requêtes de type {{type}} ne sont pas encore disponible",
         "resource": {
           "create": "Notification créée avec succès",
           "delete": "Notification supprimée avec succès",
@@ -2618,6 +2622,15 @@
       }
     }
   },
+  "sorganizationalUnit": {
+    "modal": {
+      "requestAccess": {
+        "form": {
+          "desiredRole": "Rôle désiré"
+        }
+      }
+    }
+  },
   "table": {
     "cleanAllFilter": "Supprimer tous les filtres",
     "filter": {