diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index fe54c4c6b70a3366aa204a6cceb6a297b3420b44..93335b99f6432706ac32ec106da3d4c4bd50919b 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -49,6 +49,7 @@ import {NgxsLoggerPluginModule} from "@ngxs/logger-plugin";
 import {NgxsRouterPluginModule} from "@ngxs/router-plugin";
 import {NgxsModule} from "@ngxs/store";
 import {CustomMatPaginatorIntlService} from "@shared/services/custom-mat-paginator-intl.service";
+import {ErrorsSkipperService} from "@shared/services/errors-skipper.service";
 import xml from "highlight.js/lib/languages/xml";
 import {HighlightModule} from "ngx-highlightjs";
 import {
@@ -192,7 +193,7 @@ export function hljsLanguages(): any {
     {provide: MAT_DATE_LOCALE, useValue: navigator.language},
     {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
     {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},
-
+    ErrorsSkipperService,
   ],
   entryComponents: [
     ...dialogs,
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 050cd2da7905a9b8072dbda081dc46cfa2ba42da..dd443d70d92686adf5601c76215e9dbb52415efd 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
@@ -93,7 +93,7 @@ export abstract class AbstractMainToolbarPresentational extends SharedAbstractPr
     {
       path: RoutesEnum.organizationalUnit,
       labelToTranslate: TRANSLATE("app.toolbar.organizationalUnit"),
-      isVisible: () => this.logged && PermissionUtil.isUserHavePermission(ApplicationRolePermissionEnum.adminPermission, this.userRoles),
+      isVisible: () => this.logged && PermissionUtil.isUserHavePermission(ApplicationRolePermissionEnum.userPermission, this.userRoles),
       icon: "building",
     },
     {
diff --git a/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html b/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
index 0ed8cb6e5138d8a82efc8070fa6bd87ac40fdcbf..cf949f5768ddaf8e44b2b0227f68377e262d9e0d 100644
--- a/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
+++ b/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.html
@@ -1,54 +1,86 @@
 <form [formGroup]="form"
+      [class.form-two-columns]="isManager"
       (ngSubmit)="onSubmit()"
 >
-  <mat-form-field>
-    <mat-label>{{'organizationalUnit.name' | translate }}</mat-label>
-    <input [formControlName]="formDefinition.name"
-           matInput
-           [placeholder]="'organizationalUnit.name' | translate"
-           [required]="isRequired(formDefinition.name)"
-    >
-    <mat-error *ngIf="getFormControl(formDefinition.name).invalid">{{'required' | translate}}</mat-error>
-    <mat-error *ngFor="let error of getFormControl(formDefinition.name).errors?.errorsFromBackend">{{error}}</mat-error>
-  </mat-form-field>
+  <ng-template #formPublic>
+    <mat-form-field>
+      <mat-label>{{'organizationalUnit.name' | translate }}</mat-label>
+      <input [formControlName]="formDefinition.name"
+             matInput
+             [placeholder]="'organizationalUnit.name' | translate"
+             [required]="isRequired(formDefinition.name)"
+      >
+      <mat-error *ngIf="getFormControl(formDefinition.name).invalid">{{'required' | translate}}</mat-error>
+      <mat-error *ngFor="let error of getFormControl(formDefinition.name).errors?.errorsFromBackend">{{error}}</mat-error>
+    </mat-form-field>
 
-  <mat-form-field>
-    <input [formControlName]="formDefinition.description"
-           matInput
-           [placeholder]="'organizationalUnit.description' | translate"
-           [required]="isRequired(formDefinition.description)"
-    >
-    <mat-error *ngIf="getFormControl(formDefinition.description).invalid">{{'required' | translate}}</mat-error>
-    <mat-error *ngFor="let error of getFormControl(formDefinition.description).errors?.errorsFromBackend">{{error}}</mat-error>
-  </mat-form-field>
+    <mat-form-field>
+      <input [formControlName]="formDefinition.description"
+             matInput
+             [placeholder]="'organizationalUnit.description' | translate"
+             [required]="isRequired(formDefinition.description)"
+      >
+      <mat-error *ngIf="getFormControl(formDefinition.description).invalid">{{'required' | translate}}</mat-error>
+      <mat-error *ngFor="let error of getFormControl(formDefinition.description).errors?.errorsFromBackend">{{error}}</mat-error>
+    </mat-form-field>
 
-  <mat-form-field>
-    <input [formControlName]="formDefinition.openingDate"
-           matInput
-           [matDatepicker]="openingDateDatepicker"
-           [placeholder]="'organizationalUnit.openingDate' | translate"
-    >
-    <mat-datepicker-toggle matSuffix
-                           [for]="openingDateDatepicker"
-    ></mat-datepicker-toggle>
-    <mat-datepicker [touchUi]="breakpointService.isSmallerThanMd()"
-                    #openingDateDatepicker
-    ></mat-datepicker>
-  </mat-form-field>
+    <mat-form-field *ngIf="getFormControl(formDefinition.url) as fd">
+      <input [formControl]="fd"
+             solidifyValidation
+             matInput
+             [placeholder]="'organizationalUnit.form.url' | translate"
+      >
+      <mat-error>{{formValidationHelper.getFormError(fd)}}</mat-error>
+    </mat-form-field>
 
-  <mat-form-field>
-    <input [formControlName]="formDefinition.closingDate"
-           matInput
-           [matDatepicker]="closingDateDatepicker"
-           [placeholder]="'organizationalUnit.closingDate' | translate"
-    >
-    <mat-datepicker-toggle matSuffix
-                           [for]="closingDateDatepicker"
-    ></mat-datepicker-toggle>
-    <mat-datepicker [touchUi]="breakpointService.isSmallerThanMd()"
-                    #closingDateDatepicker
-    ></mat-datepicker>
-  </mat-form-field>
+    <mat-form-field>
+      <input [formControlName]="formDefinition.openingDate"
+             matInput
+             [matDatepicker]="openingDateDatepicker"
+             [placeholder]="'organizationalUnit.openingDate' | translate"
+      >
+      <mat-datepicker-toggle matSuffix
+                             [for]="openingDateDatepicker"
+      ></mat-datepicker-toggle>
+      <mat-datepicker [touchUi]="breakpointService.isSmallerThanMd()"
+                      #openingDateDatepicker
+      ></mat-datepicker>
+    </mat-form-field>
+
+    <mat-form-field>
+      <input [formControlName]="formDefinition.closingDate"
+             matInput
+             [matDatepicker]="closingDateDatepicker"
+             [placeholder]="'organizationalUnit.closingDate' | translate"
+      >
+      <mat-datepicker-toggle matSuffix
+                             [for]="closingDateDatepicker"
+      ></mat-datepicker-toggle>
+      <mat-datepicker [touchUi]="breakpointService.isSmallerThanMd()"
+                      #closingDateDatepicker
+      ></mat-datepicker>
+    </mat-form-field>
+  </ng-template>
+
+  <div *ngIf="isManager; else isNotManager"
+       class="two-columns-wrapper"
+  >
+    <div class="left-part">
+      <ng-container *ngTemplateOutlet="formPublic"></ng-container>
+    </div>
+    <div class="right-part">
+      <dlcm-shared-person-orgunit-role [formControl]="form.get(formDefinition.personRole)"
+                                       [mode]="personOrgUnitRoleMode.person"
+                                       [selectedPersonOrOrgUnitRole]="selectedPersonRole"
+                                       [listPerson]="listPerson"
+                                       [listRole]="listRole"
+      ></dlcm-shared-person-orgunit-role>
+    </div>
+  </div>
+
+  <ng-template #isNotManager>
+    <ng-container *ngTemplateOutlet="formPublic"></ng-container>
+  </ng-template>
 
   <div class="submit-button">
     <button *ngIf="!readonly"
diff --git a/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts b/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
index 87740c88fef25aa8a92bcb7d364b5b8ffac59012..3b9f28397ff33ae2009ef219dc24b3dc025a5386 100644
--- a/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
+++ b/src/app/features/organizational-unit/components/presentationals/orgunit-form/orgunit-form.presentational.ts
@@ -1,3 +1,5 @@
+import {PersonExtended} from "@admin/models/person-extended.model";
+import {PersonRole} from "@admin/models/person-role.model";
 import {
   ChangeDetectionStrategy,
   ChangeDetectorRef,
@@ -11,10 +13,12 @@ import {
 import {OrganizationalUnitExtended} from "@app/features/deposit/models/organizational-unit-extended.model";
 import {
   PreservationPolicy,
+  Role,
   SubmissionPolicy,
 } from "@app/generated-api";
 import {SharedAbstractFormPresentational} from "@app/shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
 import {BaseFormDefinition} from "@app/shared/models/base-form-definition.model";
+import {PersonOrgUnitRoleMode} from "@shared/components/presentationals/shared-person-orgunit-role/shared-person-orgunit-role.presentational";
 import {BreakpointService} from "@shared/services/breakpoint.service";
 import {
   DateUtil,
@@ -37,6 +41,22 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
   @Input()
   listPreservationPolicies: PreservationPolicy[];
 
+  @Input()
+  selectedPersonRole: PersonRole[];
+
+  @Input()
+  listPerson: PersonExtended[];
+
+  @Input()
+  listRole: Role[];
+
+  @Input()
+  isManager: boolean;
+
+  get personOrgUnitRoleMode(): typeof PersonOrgUnitRoleMode {
+    return PersonOrgUnitRoleMode;
+  }
+
   constructor(protected readonly _changeDetectorRef: ChangeDetectorRef,
               private readonly _fb: FormBuilder,
               public readonly breakpointService: BreakpointService) {
@@ -47,9 +67,10 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
     this.form = this._fb.group({
       [this.formDefinition.name]: ["", [Validators.required, SolidifyValidator]],
       [this.formDefinition.description]: ["", [SolidifyValidator]],
+      [this.formDefinition.url]: ["", [SolidifyValidator]],
       [this.formDefinition.openingDate]: [""],
       [this.formDefinition.closingDate]: [""],
-      [this.formDefinition.submissionPolicies]: [],
+      [this.formDefinition.personRole]: ["", [SolidifyValidator]],
     });
   }
 
@@ -57,8 +78,10 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
     this.form = this._fb.group({
       [this.formDefinition.name]: [organizationalUnit.name, [Validators.required, SolidifyValidator]],
       [this.formDefinition.description]: [organizationalUnit.description, [SolidifyValidator]],
+      [this.formDefinition.url]: [organizationalUnit.url, [SolidifyValidator]],
       [this.formDefinition.openingDate]: [organizationalUnit.openingDate],
       [this.formDefinition.closingDate]: [organizationalUnit.closingDate],
+      [this.formDefinition.personRole]: ["", [SolidifyValidator]],
     });
   }
 
@@ -72,7 +95,8 @@ export class OrgunitFormPresentational extends SharedAbstractFormPresentational<
 class FormComponentFormDefinition extends BaseFormDefinition {
   @PropertyName() name: string;
   @PropertyName() description: string;
+  @PropertyName() url: string;
   @PropertyName() closingDate: string;
   @PropertyName() openingDate: string;
-  @PropertyName() submissionPolicies: string;
+  @PropertyName() personRole: string;
 }
diff --git a/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.html b/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.html
index f0a9f722e5a93a2e2be48849beaf2773c3fc6223..775e7bd517a77fdb2c9cef718ff90e2665292aa6 100644
--- a/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.html
+++ b/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.html
@@ -6,7 +6,8 @@
     <mat-icon>navigate_before</mat-icon>
     {{KEY_BACK_BUTTON | translate}}
   </button>
-  <button mat-button
+  <button *ngIf="currentUserIsManager | async | isTrue"
+          mat-button
           color="primary"
           (click)="edit()"
   >
@@ -16,13 +17,17 @@
 </div>
 
 <div class="wrapper"
-     [dlcmSpinner]="isLoadingObs | async"
+     [dlcmSpinner]="isLoadingWithDependencyObs | async"
 >
   <dlcm-orgunit-form #formPresentational
-                     *ngIf="!(isLoadingObs | async) && (currentObs | async)"
+                     *ngIf="isReadyToBeDisplayedObs | async"
                      [model]="currentObs| async"
+                     [isManager]="currentUserIsManager | async"
                      [listSubmissionPolicies]="listSubmissionPoliciesObs | async"
                      [listPreservationPolicies]="listPreservationPoliciesObs | async"
+                     [listPerson]="listPersonObs | async"
+                     [listRole]="listRoleObs | async"
+                     [selectedPersonRole]="selectedPersonRoleObs | async"
                      [readonly]="true"
   >
   </dlcm-orgunit-form>
diff --git a/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.ts b/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.ts
index 72a5e88159f24083609d4e996272655030f19231..e94d96e8d02ac55a03805b2cfb715a45df35e1c6 100644
--- a/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.ts
+++ b/src/app/features/organizational-unit/components/routables/orgunit-detail/orgunit-detail.routable.ts
@@ -1,14 +1,22 @@
+import {PersonExtended} from "@admin/models/person-extended.model";
+import {PersonRole} from "@admin/models/person-role.model";
 import {
   ChangeDetectionStrategy,
+  ChangeDetectorRef,
   Component,
+  OnInit,
 } from "@angular/core";
 import {MatDialog} from "@angular/material";
 import {ActivatedRoute} from "@angular/router";
 import {OrganizationalUnitExtended} from "@app/features/deposit/models/organizational-unit-extended.model";
 import {orgUnitActionNameSpace} from "@app/features/organizational-unit/stores/organizational-unit.action";
-import {OrganizationalUnitStateModel} from "@app/features/organizational-unit/stores/organizational-unit.state";
+import {
+  OrganizationalUnitState,
+  OrganizationalUnitStateModel,
+} from "@app/features/organizational-unit/stores/organizational-unit.state";
 import {
   PreservationPolicy,
+  Role,
   SubmissionPolicy,
 } from "@app/generated-api";
 import {SharedAbstractDetailRoutable} from "@app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable";
@@ -27,20 +35,45 @@ import {TRANSLATE} from "solidify-frontend";
   styleUrls: ["../../../../../shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class OrgunitDetailRoutable extends SharedAbstractDetailRoutable<OrganizationalUnitExtended, OrganizationalUnitStateModel> {
+export class OrgunitDetailRoutable extends SharedAbstractDetailRoutable<OrganizationalUnitExtended, OrganizationalUnitStateModel> implements OnInit {
+  @Select(OrganizationalUnitState.isLoadingWithDependency) isLoadingWithDependencyObs: Observable<boolean>;
+  @Select(OrganizationalUnitState.isReadyToBeDisplayed) isReadyToBeDisplayedObs: Observable<boolean>;
+  @Select(OrganizationalUnitState.currentUserIsManager) currentUserIsManager: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_submissionPolicy.list) listSubmissionPoliciesObs: Observable<SubmissionPolicy[]>;
   @Select((state: LocalStateModel) => state.shared.shared_preservationPolicy.list) listPreservationPoliciesObs: Observable<PreservationPolicy[]>;
+  @Select((state: LocalStateModel) => state.shared.shared_person.list) listPersonObs: Observable<PersonExtended[]>;
+  @Select((state: LocalStateModel) => state.shared.shared_role.list) listRoleObs: Observable<Role[]>;
+  @Select((state: LocalStateModel) => state.organizationalUnit.organizationalUnit_personRole.selected) selectedPersonRoleObs: Observable<PersonRole[]>;
 
   readonly KEY_PARAM_NAME: string = "name";
   readonly KEY_DELETE_BUTTON: string = TRANSLATE("organizationalUnit.delete");
   readonly KEY_EDIT_BUTTON: string = TRANSLATE("organizationalUnit.edit");
 
+  // private _isManager: boolean = false;
+  //
+  // set isManager(value: boolean) {
+  //   if (isTrue(value) && isFalse(this._isManager)) {
+  //     console.error("TEST", this._resId);
+  //     this.store.dispatch(new OrgUnitPersonRoleAction.GetAll(this._resId));
+  //   }
+  //   this._isManager = value;
+  // }
+  //
+  // get isManager(): boolean {
+  //   return this._isManager;
+  // }
+
   constructor(protected store: Store,
               protected route: ActivatedRoute,
-              public dialog: MatDialog) {
+              public dialog: MatDialog,
+              private readonly _changeDetector: ChangeDetectorRef) {
     super(store, route, dialog, LocalStateEnum.organizationalUnit, orgUnitActionNameSpace);
   }
 
+  ngOnInit(): void {
+    super.ngOnInit();
+  }
+
   getSubResourceWithParentId(id: string): void {
   }
 }
diff --git a/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.html b/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.html
index 68660c06af64a7e956e2cc7428f6b1aafa9ac634..9d16207a52539f9c50e593cb91ffda3c7c89abef 100644
--- a/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.html
+++ b/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.html
@@ -9,13 +9,17 @@
 </div>
 
 <div class="wrapper"
-     [dlcmSpinner]="isLoadingObs | async"
+     [dlcmSpinner]="isLoadingWithDependencyObs | async"
 >
   <dlcm-orgunit-form #formPresentational
-                     *ngIf="currentObs | async"
+                     *ngIf="isReadyToBeDisplayedObs | async"
                      [model]="currentObs | async"
+                     [isManager]="true"
                      [listSubmissionPolicies]="listSubmissionPoliciesObs | async"
                      [listPreservationPolicies]="listPreservationPoliciesObs | async"
+                     [listPerson]="listPersonObs | async"
+                     [listRole]="listRoleObs | async"
+                     [selectedPersonRole]="selectedPersonRoleObs | async"
                      (submitChange)="update($event)"
   >
   </dlcm-orgunit-form>
diff --git a/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.ts b/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.ts
index 426059ea4856117e7cbc93e1b01bc34992afefbd..88e8db9fd7c2aa86503f83077dd4bcf865eb9a5c 100644
--- a/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.ts
+++ b/src/app/features/organizational-unit/components/routables/orgunit-edit/orgunit-edit.routable.ts
@@ -1,3 +1,5 @@
+import {PersonExtended} from "@admin/models/person-extended.model";
+import {PersonRole} from "@admin/models/person-role.model";
 import {
   ChangeDetectionStrategy,
   Component,
@@ -5,9 +7,13 @@ import {
 import {ActivatedRoute} from "@angular/router";
 import {OrganizationalUnitExtended} from "@app/features/deposit/models/organizational-unit-extended.model";
 import {orgUnitActionNameSpace} from "@app/features/organizational-unit/stores/organizational-unit.action";
-import {OrganizationalUnitStateModel} from "@app/features/organizational-unit/stores/organizational-unit.state";
+import {
+  OrganizationalUnitState,
+  OrganizationalUnitStateModel,
+} from "@app/features/organizational-unit/stores/organizational-unit.state";
 import {
   PreservationPolicy,
+  Role,
   SubmissionPolicy,
 } from "@app/generated-api";
 import {SharedAbstractEditRoutable} from "@app/shared/components/routables/shared-abstract-edit/shared-abstract-edit.routable";
@@ -17,6 +23,7 @@ import {
   Select,
   Store,
 } from "@ngxs/store";
+import {OrgUnitPersonRoleAction} from "@orgunit/stores/person-role/organizational-unit-person-role.action";
 import {Observable} from "rxjs";
 
 @Component({
@@ -26,8 +33,13 @@ import {Observable} from "rxjs";
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class OrgunitEditRoutable extends SharedAbstractEditRoutable<OrganizationalUnitExtended, OrganizationalUnitStateModel> {
+  @Select(OrganizationalUnitState.isLoadingWithDependency) isLoadingWithDependencyObs: Observable<boolean>;
+  @Select(OrganizationalUnitState.isReadyToBeDisplayed) isReadyToBeDisplayedObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_submissionPolicy.list) listSubmissionPoliciesObs: Observable<SubmissionPolicy[]>;
   @Select((state: LocalStateModel) => state.shared.shared_preservationPolicy.list) listPreservationPoliciesObs: Observable<PreservationPolicy[]>;
+  @Select((state: LocalStateModel) => state.shared.shared_person.list) listPersonObs: Observable<PersonExtended[]>;
+  @Select((state: LocalStateModel) => state.shared.shared_role.list) listRoleObs: Observable<Role[]>;
+  @Select((state: LocalStateModel) => state.organizationalUnit.organizationalUnit_personRole.selected) selectedPersonRoleObs: Observable<PersonRole[]>;
 
   constructor(protected store: Store,
               protected route: ActivatedRoute) {
@@ -35,5 +47,6 @@ export class OrgunitEditRoutable extends SharedAbstractEditRoutable<Organization
   }
 
   getSubResourceWithParentId(id: string): void {
+    this.store.dispatch(new OrgUnitPersonRoleAction.GetAll(id));
   }
 }
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 299df0e1c54889f58cd3e3068d9b6e31b3e35297..2c2d00899dc48778443e318dd8c207daf6a402ec 100644
--- a/src/app/features/organizational-unit/organizational-unit-routing.module.ts
+++ b/src/app/features/organizational-unit/organizational-unit-routing.module.ts
@@ -8,6 +8,7 @@ import {
   OrganizationalUnitRoutesEnum,
 } from "@app/shared/enums/routes.enum";
 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";
 
@@ -30,6 +31,7 @@ const routes: DlcmRoutes = [
     data: {
       breadcrumb: TRANSLATE("breadcrumb.organizationalUnit.edit"),
     },
+    canActivate: [OrganizationalUnitRoleGuardService],
     canDeactivate: [CanDeactivateGuard],
   },
 ];
diff --git a/src/app/features/organizational-unit/organizational-unit.module.ts b/src/app/features/organizational-unit/organizational-unit.module.ts
index 82ff7d1a550aeeb6fcd3ac8a69be9451b8627a4c..69f43c90684f4124f3127a08966729da10108225 100644
--- a/src/app/features/organizational-unit/organizational-unit.module.ts
+++ b/src/app/features/organizational-unit/organizational-unit.module.ts
@@ -8,6 +8,7 @@ import {OrganizationalUnitState} from "@app/features/organizational-unit/stores/
 import {SharedModule} from "@app/shared/shared.module";
 import {TranslateModule} from "@ngx-translate/core";
 import {NgxsModule} from "@ngxs/store";
+import {OrganizationalUnitPersonRoleState} from "@orgunit/stores/person-role/organizational-unit-person-role.state";
 
 const routables = [
   OrgunitDetailRoutable,
@@ -33,6 +34,7 @@ const presentationals = [
     TranslateModule.forChild({}),
     NgxsModule.forFeature([
       OrganizationalUnitState,
+      OrganizationalUnitPersonRoleState,
     ]),
   ],
   entryComponents: [
diff --git a/src/app/features/organizational-unit/stores/organizational-unit.action.ts b/src/app/features/organizational-unit/stores/organizational-unit.action.ts
index a60197f11bb31bd0969dee577e06f55ed494f102..21a835cf6080cab86f360c43f61f5835619f649d 100644
--- a/src/app/features/organizational-unit/stores/organizational-unit.action.ts
+++ b/src/app/features/organizational-unit/stores/organizational-unit.action.ts
@@ -88,6 +88,20 @@ export namespace OrgUnitAction {
   @TypeDefaultAction(state)
   export class Clean extends ResourceAction.Clean {
   }
+
+  export class ComputeCurrentUserIsManager {
+    static readonly type: string = `[${state}] Compute Current User Is Manager`;
+
+    constructor() {
+    }
+  }
+
+  export class SaveCurrentUserIsManagerAndRetrievePersonRoleIfManager {
+    static readonly type: string = `[${state}]Save Current User Is Manager And Retrieve Person Role If Manager`;
+
+    constructor(public isManager: boolean) {
+    }
+  }
 }
 
 export const orgUnitActionNameSpace: ResourceNameSpace = OrgUnitAction;
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 18c47f9b3dcbe3749777d38ef224b9dc49df5c99..86613d51d7a1dc5d66382d19993176896fa56ba0 100644
--- a/src/app/features/organizational-unit/stores/organizational-unit.state.ts
+++ b/src/app/features/organizational-unit/stores/organizational-unit.state.ts
@@ -1,39 +1,75 @@
 import {OrganizationalUnitExtended} from "@app/features/deposit/models/organizational-unit-extended.model";
-import {orgUnitActionNameSpace} from "@app/features/organizational-unit/stores/organizational-unit.action";
-import {AdminResourceApiEnum} from "@app/shared/enums/api.enum";
+import {
+  OrgUnitAction,
+  orgUnitActionNameSpace,
+} from "@app/features/organizational-unit/stores/organizational-unit.action";
+import {
+  AccessResourceApiEnum,
+  AdminResourceApiEnum,
+} from "@app/shared/enums/api.enum";
 import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
 import {RoutesEnum} from "@app/shared/enums/routes.enum";
+import {DepositStateModel} from "@deposit/stores/deposit.state";
 import {
+  Action,
   Actions,
+  ofActionCompleted,
+  Selector,
   State,
+  StateContext,
   Store,
 } from "@ngxs/store";
+import {OrgUnitPersonRoleAction} from "@orgunit/stores/person-role/organizational-unit-person-role.action";
+import {
+  OrganizationalUnitPersonRoleState,
+  OrganizationalUnitPersonRoleStateModel,
+} from "@orgunit/stores/person-role/organizational-unit-person-role.state";
+import {OrganizationalUnitRoleHelper} from "@shared/guards/organizational-unit-role-guard.service";
+import {ErrorsSkipperService} from "@shared/services/errors-skipper.service";
+import {SharedPersonAction} from "@shared/stores/person/shared-person.action";
+import {SharedRoleAction} from "@shared/stores/role/shared-role.action";
+import {Observable} from "rxjs";
+import {tap} from "rxjs/operators";
 import {
   ApiService,
+  defaultRelation3TiersStateInitValue,
   defaultResourceStateInitValue,
+  isFalse,
+  isNullOrUndefined,
+  isTrue,
+  isUndefined,
   NotificationService,
+  OverrideDefaultAction,
   ResourceState,
   ResourceStateModel,
+  StoreUtil,
   TRANSLATE,
   urlSeparator,
 } from "solidify-frontend";
 
 export interface OrganizationalUnitStateModel extends ResourceStateModel<OrganizationalUnitExtended> {
+  organizationalUnit_personRole: OrganizationalUnitPersonRoleStateModel;
+  currentUserIsManager: boolean;
 }
 
 @State<OrganizationalUnitStateModel>({
   name: LocalStateEnum.organizationalUnit,
   defaults: {
     ...defaultResourceStateInitValue,
+    currentUserIsManager: undefined,
+    organizationalUnit_personRole: {...defaultRelation3TiersStateInitValue},
   },
-  children: [],
+  children: [
+    OrganizationalUnitPersonRoleState,
+  ],
 })
 export class OrganizationalUnitState extends ResourceState<OrganizationalUnitExtended> {
 
   constructor(protected apiService: ApiService,
               protected store: Store,
               protected notificationService: NotificationService,
-              protected actions$: Actions) {
+              protected actions$: Actions,
+              protected errorsSkipperService: ErrorsSkipperService) {
     super(apiService, store, notificationService, actions$, {
       nameSpace: orgUnitActionNameSpace,
       routeRedirectUrlAfterSuccessCreateAction: (resId: string) => RoutesEnum.organizationalUnitDetail + urlSeparator + resId,
@@ -46,6 +82,147 @@ export class OrganizationalUnitState extends ResourceState<OrganizationalUnitExt
   }
 
   protected get _urlResource(): string {
-    return AdminResourceApiEnum.organizationalUnits;
+    return this.store.selectSnapshot(OrganizationalUnitState.currentUserIsManager) ? AdminResourceApiEnum.organizationalUnits : AccessResourceApiEnum.organizationalUnits;
+  }
+
+  @Selector()
+  static currentUserIsManager(state: OrganizationalUnitStateModel): boolean | undefined {
+    return state.currentUserIsManager;
+  }
+
+  @Selector()
+  static current(state: OrganizationalUnitStateModel): OrganizationalUnitExtended {
+    return state.current;
+  }
+
+  @Selector()
+  static isLoading(state: OrganizationalUnitStateModel): boolean {
+    return StoreUtil.isLoadingState(state);
+  }
+
+  @Selector()
+  static isLoadingWithDependency(state: OrganizationalUnitStateModel): boolean {
+    return this.isLoading(state)
+      || isUndefined(this.currentUserIsManager(state))
+      || StoreUtil.isLoadingState(state.organizationalUnit_personRole);
+  }
+
+  @Selector()
+  static isReadyToBeDisplayed(state: OrganizationalUnitStateModel): boolean {
+    return !isNullOrUndefined(state.current)
+      && !isUndefined(this.currentUserIsManager(state))
+      && (isFalse(this.currentUserIsManager(state)) || !isNullOrUndefined(state.organizationalUnit_personRole.selected));
+  }
+
+  @Action(OrgUnitAction.LoadResource)
+  loadResource(ctx: StateContext<DepositStateModel>, action: OrgUnitAction.LoadResource): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
+    });
+
+    StoreUtil.dispatchParallelActionAndWaitForSubActionsCompletion(ctx, [
+      {
+        action: new SharedPersonAction.GetAll(),
+        subActionCompletions: [
+          this.actions$.pipe(ofActionCompleted(SharedPersonAction.GetAllSuccess)),
+          this.actions$.pipe(ofActionCompleted(SharedPersonAction.GetAllFail)),
+        ],
+      },
+      {
+        action: new SharedRoleAction.GetAll(),
+        subActionCompletions: [
+          this.actions$.pipe(ofActionCompleted(SharedRoleAction.GetAllSuccess)),
+          this.actions$.pipe(ofActionCompleted(SharedRoleAction.GetAllFail)),
+        ],
+      },
+    ]).subscribe(success => {
+      if (success) {
+        ctx.dispatch(new OrgUnitAction.LoadResourceSuccess(action));
+      } else {
+        ctx.dispatch(new OrgUnitAction.LoadResourceFail(action));
+      }
+    });
+  }
+
+  @OverrideDefaultAction()
+  @Action(OrgUnitAction.GetByIdSuccess)
+  getByIdSuccess(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.GetByIdSuccess): void {
+    ctx.patchState({
+      current: action.model,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+    });
+
+    ctx.dispatch(new OrgUnitAction.ComputeCurrentUserIsManager());
+  }
+
+  @Action(OrgUnitAction.ComputeCurrentUserIsManager)
+  computeCurrentUserIsManager(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.ComputeCurrentUserIsManager): void | Observable<any> {
+    return OrganizationalUnitRoleHelper.isManagerOfOrgUnit(ctx.getState().current.resId, this.store).pipe(
+      tap(isManager => {
+        ctx.dispatch(new OrgUnitAction.SaveCurrentUserIsManagerAndRetrievePersonRoleIfManager(isManager));
+      }),
+    );
+  }
+
+  @Action(OrgUnitAction.SaveCurrentUserIsManagerAndRetrievePersonRoleIfManager)
+  saveCurrentUserIsManagerAndRetrievePersonRoleIfManager(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.SaveCurrentUserIsManagerAndRetrievePersonRoleIfManager): void {
+    ctx.patchState({
+      currentUserIsManager: action.isManager,
+    });
+    if (isTrue(action.isManager)) {
+      const orgUnitId = ctx.getState().current.resId;
+      this.store.dispatch(new OrgUnitPersonRoleAction.GetAll(orgUnitId));
+    }
+  }
+
+  @OverrideDefaultAction()
+  @Action(OrgUnitAction.Create)
+  create(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.Create): Observable<OrganizationalUnitExtended> {
+    return super.internalCreate(ctx, action)
+      .pipe(
+        tap(model => {
+          this.updateSubResource(model, action, ctx)
+            .subscribe(success => {
+              if (success) {
+                ctx.dispatch(new OrgUnitAction.CreateSuccess(action, model));
+              } else {
+                ctx.dispatch(new OrgUnitAction.CreateFail(action));
+              }
+            });
+        }),
+      );
+  }
+
+  @OverrideDefaultAction()
+  @Action(OrgUnitAction.Update)
+  update(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.Update): Observable<OrganizationalUnitExtended> {
+    return super.internalUpdate(ctx, action)
+      .pipe(
+        tap(model => {
+          this.updateSubResource(model, action, ctx)
+            .subscribe(success => {
+              if (success) {
+                ctx.dispatch(new OrgUnitAction.UpdateSuccess(action, model));
+              } else {
+                ctx.dispatch(new OrgUnitAction.UpdateFail(action));
+              }
+            });
+        }),
+      );
+  }
+
+  private updateSubResource(model: OrganizationalUnitExtended, action: OrgUnitAction.Create | OrgUnitAction.Update, ctx: StateContext<OrganizationalUnitStateModel>): Observable<boolean> {
+    const orgUnitId = model.resId;
+    const newPersonRole = action.modelFormControlEvent.formControl.get("personRole").value;
+
+    return StoreUtil.dispatchSequentialActionAndWaitForSubActionsCompletion(ctx, [
+      {
+        action: new OrgUnitPersonRoleAction.Update(orgUnitId, newPersonRole),
+        subActionCompletions: [
+          this.actions$.pipe(ofActionCompleted(OrgUnitPersonRoleAction.UpdateSuccess)),
+          this.actions$.pipe(ofActionCompleted(OrgUnitPersonRoleAction.UpdateFail)),
+        ],
+      },
+    ]);
   }
 }
diff --git a/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.action.ts b/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.action.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ba03af95077ff5add9f2e750270e6fca107ca03d
--- /dev/null
+++ b/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.action.ts
@@ -0,0 +1,110 @@
+import {PersonRole} from "@admin/models/person-role.model";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {
+  Relation3TiersAction,
+  Relation3TiersNameSpace,
+  TypeDefaultAction,
+} from "solidify-frontend";
+
+const state = LocalStateEnum.organizationalUnit_personRole;
+
+export namespace OrgUnitPersonRoleAction {
+
+  @TypeDefaultAction(state)
+  export class GetAll extends Relation3TiersAction.GetAll {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllSuccess extends Relation3TiersAction.GetAllSuccess<PersonRole> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllFail extends Relation3TiersAction.GetAllFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetById extends Relation3TiersAction.GetById {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdSuccess extends Relation3TiersAction.GetByIdSuccess<PersonRole> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdFail extends Relation3TiersAction.GetByIdFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class Update extends Relation3TiersAction.Update {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateSuccess extends Relation3TiersAction.UpdateSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateFail extends Relation3TiersAction.UpdateFail {
+  }
+
+  // @TypeDefaultAction(state)
+  // export class UpdateRelation extends Relation3TiersAction.UpdateRelation<OrganizationalUnitPreservationPolicy> {
+  // }
+  //
+  // @TypeDefaultAction(state)
+  // export class UpdateRelationSuccess extends Relation3TiersAction.UpdateRelationSuccess<OrganizationalUnitPreservationPolicy> {
+  // }
+  //
+  // @TypeDefaultAction(state)
+  // export class UpdateRelationFail extends Relation3TiersAction.UpdateRelationFail<OrganizationalUnitPreservationPolicy> {
+  // }
+
+  @TypeDefaultAction(state)
+  export class Create extends Relation3TiersAction.Create {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateSuccess extends Relation3TiersAction.CreateSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateFail extends Relation3TiersAction.CreateFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateResource extends Relation3TiersAction.CreateResource {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateResourceSuccess extends Relation3TiersAction.CreateResourceSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateResourceFail extends Relation3TiersAction.CreateResourceFail {
+  }
+
+  // @TypeDefaultAction(state)
+  // export class DeleteList extends Relation3TiersAction.DeleteList {
+  // }
+  //
+  // @TypeDefaultAction(state)
+  // export class DeleteListSuccess extends Relation3TiersAction.DeleteListSuccess {
+  // }
+  //
+  // @TypeDefaultAction(state)
+  // export class DeleteListFail extends Relation3TiersAction.DeleteListFail {
+  // }
+
+  @TypeDefaultAction(state)
+  export class Delete extends Relation3TiersAction.Delete {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteSuccess extends Relation3TiersAction.DeleteSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteFail extends Relation3TiersAction.DeleteFail {
+  }
+}
+
+export const orgUnitPersonRoleActionNameSpace: Relation3TiersNameSpace = OrgUnitPersonRoleAction;
diff --git a/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.state.ts b/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.state.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d8473edbed9bd71ec2955de7fb88b8c11e9a185d
--- /dev/null
+++ b/src/app/features/organizational-unit/stores/person-role/organizational-unit-person-role.state.ts
@@ -0,0 +1,50 @@
+import {OrganizationalUnitPersonRole} from "@admin/models/organizational-unit-person-role.model";
+import {PersonRole} from "@admin/models/person-role.model";
+import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum";
+import {AdminResourceApiEnum} from "@app/shared/enums/api.enum";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+
+import {
+  Actions,
+  State,
+  Store,
+} from "@ngxs/store";
+import {orgUnitPersonRoleActionNameSpace} from "@orgunit/stores/person-role/organizational-unit-person-role.action";
+import {
+  ApiService,
+  defaultRelation3TiersStateInitValue,
+  NotificationService,
+  Relation3TiersForm,
+  Relation3TiersState,
+  Relation3TiersStateModel,
+} from "solidify-frontend";
+
+export interface OrganizationalUnitPersonRoleStateModel extends Relation3TiersStateModel<PersonRole> {
+}
+
+@State<OrganizationalUnitPersonRoleStateModel>({
+  name: LocalStateEnum.organizationalUnit_personRole,
+  defaults: {
+    ...defaultRelation3TiersStateInitValue,
+  },
+})
+// OrganizationalUnitPersonController
+export class OrganizationalUnitPersonRoleState extends Relation3TiersState<PersonRole, OrganizationalUnitPersonRole> {
+  constructor(protected apiService: ApiService,
+              protected store: Store,
+              protected notificationService: NotificationService,
+              protected actions$: Actions) {
+    super(apiService, store, notificationService, actions$, {
+      nameSpace: orgUnitPersonRoleActionNameSpace,
+      resourceName: ApiResourceNameEnum.PERSON,
+    });
+  }
+
+  protected get _urlResource(): string {
+    return AdminResourceApiEnum.organizationalUnits;
+  }
+
+  protected convertResourceInForm(resource: PersonRole): Relation3TiersForm {
+    return {id: resource.resId, listId: resource.roles.map(r => r.resId)};
+  }
+}
diff --git a/src/app/shared/enums/local-state.enum.ts b/src/app/shared/enums/local-state.enum.ts
index d603325c3ec9e858371979f89ce1985673e9f007..8b0854eae68f9e0c2fefeae56d0af39c05016297 100644
--- a/src/app/shared/enums/local-state.enum.ts
+++ b/src/app/shared/enums/local-state.enum.ts
@@ -18,6 +18,8 @@ export enum LocalStateEnum {
   deposit_dataFile_statusHistory = "deposit_dataFile_statusHistory",
 
   organizationalUnit = "organizationalUnit",
+  organizationalUnit_personRole = "organizationalUnit_personRole",
+
   oauth2Client = "oauth2Client",
 
   shared = "shared",
diff --git a/src/app/shared/guards/organizational-unit-role-guard.service.ts b/src/app/shared/guards/organizational-unit-role-guard.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3e90477bd8ec0c033189fdd4854e5668adc368f8
--- /dev/null
+++ b/src/app/shared/guards/organizational-unit-role-guard.service.ts
@@ -0,0 +1,70 @@
+import {Injectable} from "@angular/core";
+import {
+  ActivatedRouteSnapshot,
+  CanActivate,
+  Router,
+} from "@angular/router";
+import {AppState} from "@app/stores/app.state";
+import {AppOrgUnitPersonRoleAction} from "@app/stores/organizational-unit-person-role/app-organizational-unit-person-role.action";
+import {Store} from "@ngxs/store";
+import {RoleEnum} from "@shared/enums/role.enum";
+import {AppRoutesEnum} from "@shared/enums/routes.enum";
+import {UserApplicationRoleEnum} from "@shared/enums/user-application-role.enum";
+import {
+  Observable,
+  of,
+} from "rxjs";
+import {map} from "rxjs/operators";
+import {ApiService} from "solidify-frontend";
+
+@Injectable({
+  providedIn: "root",
+})
+export class OrganizationalUnitRoleGuardService implements CanActivate {
+  constructor(public router: Router,
+              public store: Store,
+              public apiService: ApiService) {
+  }
+
+  canActivate(route: ActivatedRouteSnapshot): Observable<boolean> {
+    return OrganizationalUnitRoleHelper.isManagerOfOrgUnit(route.params[AppRoutesEnum.paramIdWithoutPrefixParam], this.store);
+
+    // const applicationRoles = this.store.selectSnapshot(AppState.currentUserApplicationRolesResId);
+    // if (applicationRoles.includes(UserApplicationRoleEnum.admin) || applicationRoles.includes(UserApplicationRoleEnum.root)) {
+    //   return of(true);
+    // }
+    // const listAuthorizedOrgUnitId = this.store.selectSnapshot(AppState.listAuthorizedOrganizationalUnitId);
+    // const orgUnitId: string = route.params[AppRoutesEnum.paramIdWithoutPrefixParam];
+    //
+    // if (!listAuthorizedOrgUnitId.includes(orgUnitId)) {
+    //   return of(false);
+    // }
+    // const currentPersonId = this.store.selectSnapshot(AppState.currentPerson).resId;
+    // return this.store.dispatch(new AppOrgUnitPersonRoleAction.GetById(orgUnitId, currentPersonId)).pipe(
+    //   map(state => {
+    //     const currentRoleOnOrgUnit = this.store.selectSnapshot(AppState.currentOrgUnitPersonRoleResId);
+    //     return currentRoleOnOrgUnit.includes(RoleEnum.MANAGER);
+    //   }),
+    // );
+  }
+}
+
+export class OrganizationalUnitRoleHelper {
+  public static isManagerOfOrgUnit(orgUnitId: string, store: Store): Observable<boolean> {
+    const applicationRoles = store.selectSnapshot(AppState.currentUserApplicationRolesResId);
+    if (applicationRoles.includes(UserApplicationRoleEnum.admin) || applicationRoles.includes(UserApplicationRoleEnum.root)) {
+      return of(true);
+    }
+    const listAuthorizedOrgUnitId = store.selectSnapshot(AppState.listAuthorizedOrganizationalUnitId);
+    if (!listAuthorizedOrgUnitId.includes(orgUnitId)) {
+      return of(false);
+    }
+    const currentPersonId = store.selectSnapshot(AppState.currentPerson).resId;
+    return store.dispatch(new AppOrgUnitPersonRoleAction.GetById(orgUnitId, currentPersonId)).pipe(
+      map(state => {
+        const currentRoleOnOrgUnit = store.selectSnapshot(AppState.currentOrgUnitPersonRoleResId);
+        return currentRoleOnOrgUnit.includes(RoleEnum.MANAGER);
+      }),
+    );
+  }
+}
diff --git a/src/app/shared/services/dlcm-errors-handler.service.ts b/src/app/shared/services/dlcm-errors-handler.service.ts
index f9ace01b6d6eba28049f21a381b7210dc97e2bd9..83904417cc8d2c8572a33f1599577c9802fc7177 100644
--- a/src/app/shared/services/dlcm-errors-handler.service.ts
+++ b/src/app/shared/services/dlcm-errors-handler.service.ts
@@ -5,6 +5,7 @@ import {
 } from "@angular/core";
 import {AppAction} from "@app/stores/app.action";
 import {Store} from "@ngxs/store";
+import {ErrorsSkipperService} from "@shared/services/errors-skipper.service";
 import {
   ENVIRONMENT,
   ErrorDto,
@@ -19,18 +20,23 @@ import {
 export class DlcmErrorsHandlerService extends GlobalErrorsHandlerService {
   // Error handling is important and needs to be loaded first.
   // Because of this we should manually inject the services with Injector.
+
   constructor(protected injector: Injector) {
     super(injector);
   }
 
   handleError(error: Error | HttpErrorResponse): void {
     const environment = this.injector.get(ENVIRONMENT);
+    const errorSkipper = this.injector.get(ErrorsSkipperService);
     if (error === environment.errorToSkipInErrorHandler) {
       return;
     }
     const httpErrorKeyToSkipInErrorHandler = environment.httpErrorKeyToSkipInErrorHandler;
 
     if (error instanceof HttpErrorResponse) {
+      if (errorSkipper.shouldBeSkipped(error.status)) {
+        return;
+      }
       const errorDto = error.error as ErrorDto;
       if (ErrorHelper.isErrorToTreat(error, httpErrorKeyToSkipInErrorHandler)) {
         // Server Error
@@ -44,6 +50,7 @@ export class DlcmErrorsHandlerService extends GlobalErrorsHandlerService {
     }
 
     super.handleError(error);
+
     console.error(error);
   }
 }
diff --git a/src/app/shared/services/errors-skipper.service.ts b/src/app/shared/services/errors-skipper.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0982f280581533f82572ea8d1adde2ece92694bb
--- /dev/null
+++ b/src/app/shared/services/errors-skipper.service.ts
@@ -0,0 +1,44 @@
+import {Injectable} from "@angular/core";
+import {isNullOrUndefined} from "solidify-frontend";
+
+@Injectable({
+  providedIn: "root",
+})
+export class ErrorsSkipperService {
+  private _errorHttpCodeToSkipTemporary: number[];
+
+  constructor() {
+    this.init();
+  }
+
+  init(): void {
+    if (isNullOrUndefined(this._errorHttpCodeToSkipTemporary)) {
+      this._errorHttpCodeToSkipTemporary = [];
+    }
+  }
+
+  addErrorSoSkip(error: number): void {
+    if (!this._errorHttpCodeToSkipTemporary.includes(error)) {
+      this._errorHttpCodeToSkipTemporary.push(error);
+    }
+  }
+
+  removeErrorSoSkip(error: number): void {
+    if (!this._errorHttpCodeToSkipTemporary.includes(error)) {
+      return;
+    }
+    const index = this._errorHttpCodeToSkipTemporary.indexOf(error);
+    if (index === -1) {
+      return;
+    }
+    this._errorHttpCodeToSkipTemporary.splice(index, 1);
+  }
+
+  shouldBeSkipped(error: number): boolean {
+    if (this._errorHttpCodeToSkipTemporary.includes(error)) {
+      this.removeErrorSoSkip(error);
+      return true;
+    }
+    return false;
+  }
+}
diff --git a/src/app/stores/authorized-organizational-unit/app-authorized-organizational-unit.state.ts b/src/app/stores/authorized-organizational-unit/app-authorized-organizational-unit.state.ts
index aa1d2e3e2bc17192c5a2729be94e1eaef056c1a6..4c6f4c81e37c5271f4cbe78ebd67fd42dd2a89d1 100644
--- a/src/app/stores/authorized-organizational-unit/app-authorized-organizational-unit.state.ts
+++ b/src/app/stores/authorized-organizational-unit/app-authorized-organizational-unit.state.ts
@@ -20,11 +20,18 @@ import {environment} from "../../../environments/environment";
 export interface AppAuthorizedOrganizationalUnitStateModel extends ResourceStateModel<OrganizationalUnit> {
 }
 
+// WARNING : IN SOME CASE WE NEED TO FILTER TO GET ONLY OPENED ORG UNIT
+const getQueryParameter = () => {
+  const queryParameters = new QueryParameters(environment.defaultEnumValuePageSizeOption);
+  queryParameters.search.searchItems.set("openOnly", "false");
+  return queryParameters;
+};
+
 @State<AppAuthorizedOrganizationalUnitStateModel>({
   name: LocalStateEnum.application_authorizedOrganizationalUnit,
   defaults: {
     ...defaultResourceStateInitValue,
-    queryParameters: new QueryParameters(environment.defaultEnumValuePageSizeOption),
+    queryParameters: getQueryParameter(),
   },
 })
 export class AppAuthorizedOrganizationalUnitState extends ResourceState<OrganizationalUnit> {
@@ -41,4 +48,35 @@ export class AppAuthorizedOrganizationalUnitState extends ResourceState<Organiza
   protected get _urlResource(): string {
     return AdminResourceApiEnum.authorizedOrganizationalUnits;
   }
+
+  // @OverrideDefaultAction()
+  // @Action(AppAuthorizedOrganizationalUnitAction.GetAll)
+  // getAll(ctx: StateContext<ResourceStateModel<PersonExtended>>, action: AppAuthorizedOrganizationalUnitAction.GetAll): Observable<CollectionTyped<OrganizationalUnit>> {
+  //   action.queryParameters.sort
+  //   return super.getAll(ctx, action);
+  // ctx.patchState({
+  //   isLoadingCounter: ctx.getState().isLoadingCounter + 1,
+  //   queryParameters: StoreUtil.getQueryParametersToApply(action.queryParameters, ctx),
+  // });
+  // let url = this._urlResource;
+  // const searchItems = ctx.getState().queryParameters.search.searchItems;
+  // const fullName = searchItems.get("fullName");
+  // if (!isNullOrUndefined(fullName) && !isWhiteString(fullName)) {
+  //   searchItems.set("search", `i-firstName~${fullName},i-lastName~${fullName},i-orcid~${fullName}`);
+  //   searchItems.set("match", "any");
+  //   searchItems.delete("fullName");
+  //   url = this._urlResource + urlSeparator + ApiActionEnum.SEARCH;
+  // }
+  // return this.apiService.get<OrganizationalUnit>(url, ctx.getState().queryParameters)
+  //   .pipe(
+  //     StoreUtil.cancelUncompleted(ctx, this.actions$, [SharedPersonAction.GetAll]),
+  //     tap((collection: CollectionTyped<PersonExtended>) => {
+  //       ctx.dispatch(new SharedPersonAction.GetAllSuccess(action, collection));
+  //     }),
+  //     catchError(error => {
+  //       ctx.dispatch(new SharedPersonAction.GetAllFail(action));
+  //       throw error;
+  //     }),
+  //   );
+  // }
 }
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 4d5dd2cbf320704c2a1a61a9c623935b22a12d3b..75fec7fd1f044180ab55ff8b13562b06780d855f 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -895,6 +895,9 @@
     "delete": "Delete",
     "description": "Description",
     "edit": "Edit",
+    "form": {
+      "url": "Url"
+    },
     "name": "Name",
     "new": "Create new organizational unit",
     "notification": {
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 4d5dd2cbf320704c2a1a61a9c623935b22a12d3b..75fec7fd1f044180ab55ff8b13562b06780d855f 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -895,6 +895,9 @@
     "delete": "Delete",
     "description": "Description",
     "edit": "Edit",
+    "form": {
+      "url": "Url"
+    },
     "name": "Name",
     "new": "Create new organizational unit",
     "notification": {
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index 1cf83328a6900fd18ba4b17f9c218a37be805b11..2033c54c1f68848ee2378ef91e52c47f6f4f11c6 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -895,6 +895,9 @@
     "delete": "Supprimer",
     "description": "Description",
     "edit": "Modifier",
+    "form": {
+      "url": "Url"
+    },
     "name": "Nom",
     "new": "Créer nouvelle unité organisationnelle",
     "notification": {