diff --git a/src/app/features/admin/admin.module.ts b/src/app/features/admin/admin.module.ts
index a249171543481ed01fd109dbeb8cc3e493c54fcb..fa6ba6e8d3b5f73526438f5c1a07fb20a864fe98 100644
--- a/src/app/features/admin/admin.module.ts
+++ b/src/app/features/admin/admin.module.ts
@@ -65,6 +65,7 @@ const presentationals = [];
       AdminOrganizationalUnitPersonRoleState,
       AdminOrganizationalUnitFundingAgencyState,
       AdminOrganizationalUnitInstitutionState,
+      AdminOrganizationalUnitAdditionalFieldsFormState,
       AdminUserState,
       AdminOaiSetState,
       AdminOAuth2ClientState,
diff --git a/src/app/features/admin/organizational-unit/admin-organizational-unit-routing.module.ts b/src/app/features/admin/organizational-unit/admin-organizational-unit-routing.module.ts
index 5771b6c1563110986224ad2ca957e05f36f5f8ec..0cf78ed2f28e1981550fb0cb16484d728027f5df 100644
--- a/src/app/features/admin/organizational-unit/admin-organizational-unit-routing.module.ts
+++ b/src/app/features/admin/organizational-unit/admin-organizational-unit-routing.module.ts
@@ -14,6 +14,7 @@ import {
 } from "@shared/enums/routes.enum";
 import {CanDeactivateGuard} from "@shared/services/can-deactivate-guard.service";
 import {MARK_AS_TRANSLATABLE} from "solidify-frontend";
+import {AdminOrgUnitAdditionalFieldsFormListRoutable} from "@admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form-list.routable";
 
 const routes: Routes = [
   {
@@ -35,7 +36,23 @@ const routes: Routes = [
         },
         canDeactivate: [CanDeactivateGuard],
       },
-    ],
+    ]
+  },
+  {
+    path: AdminRoutesEnum.organizationalUnitAdditionalFieldsForm + AppRoutesEnum.separator + AppRoutesEnum.paramId,
+    component: AdminOrgUnitAdditionalFieldsFormListRoutable,
+    data: {
+      breadcrumbMemoizedSelector: AdminOrganizationalUnitState.currentTitle,
+    },
+    children: [
+      {
+        path: AdminRoutesEnum.organizationalUnitEdit,
+        data: {
+          breadcrumb: MARK_AS_TRANSLATABLE("breadcrumb.admin.organizationalUnit.additionalFieldsForm.edit"),
+        },
+        canDeactivate: [CanDeactivateGuard],
+      },
+    ]
   },
   {
     path: AdminRoutesEnum.organizationalUnitCreate,
diff --git a/src/app/features/admin/organizational-unit/components/routables/admin-orgunit-detail-edit/admin-organizational-unit-detail-edit.routable.ts b/src/app/features/admin/organizational-unit/components/routables/admin-orgunit-detail-edit/admin-organizational-unit-detail-edit.routable.ts
index bdee68e700af3db7a008aca3968976479ed8bfa9..7448bd876f4a9d126373e016feb20b6a702db58f 100644
--- a/src/app/features/admin/organizational-unit/components/routables/admin-orgunit-detail-edit/admin-organizational-unit-detail-edit.routable.ts
+++ b/src/app/features/admin/organizational-unit/components/routables/admin-orgunit-detail-edit/admin-organizational-unit-detail-edit.routable.ts
@@ -51,10 +51,14 @@ 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 {
+  MARK_AS_TRANSLATABLE,
   MemoizedUtil,
   OverrideProperty,
   ResourceNameSpace,
 } from "solidify-frontend";
+import {Tab} from "@shared/components/containers/shared-tabs/shared-tabs.container";
+import {AdminRoutesEnum, AppRoutesEnum, DepositRoutesEnum} from "@shared/enums/routes.enum";
+import {IconNameEnum} from "@shared/enums/icon-name.enum";
 
 @Component({
   selector: "dlcm-admin-organizational-unit-detail-edit-routable",
@@ -83,6 +87,27 @@ export class AdminOrganizationalUnitDetailEditRoutable extends SharedAbstractDet
 
   readonly KEY_PARAM_NAME: keyof OrganizationalUnit & string = "name";
 
+  private get rootUrl(): string[] {
+    return [AppRoutesEnum.admin, AdminRoutesEnum.organizationalUnit];
+  }
+
+  listTabs: Tab[] = [
+    {
+      id: TabEnum.METADATA,
+      suffixUrl: DepositRoutesEnum.metadata,
+      icon: IconNameEnum.metadata,
+      titleToTranslate: MARK_AS_TRANSLATABLE("admin.organizationalUnit.detail"),
+      route: () => [...this.rootUrl, AdminRoutesEnum.organizationalUnitDetail, this._resId],
+    },
+    {
+      id: TabEnum.ADDITIONAL_FIELDS_FORM,
+      suffixUrl: DepositRoutesEnum.metadata,
+      icon: IconNameEnum.files,
+      titleToTranslate: MARK_AS_TRANSLATABLE("admin.organizationalUnit.additionalFieldsForm"),
+      route: () => [...this.rootUrl, AdminRoutesEnum.organizationalUnitAdditionalFieldsForm, this._resId],
+    },
+  ];
+
   constructor(protected _store: Store,
               protected _route: ActivatedRoute,
               protected readonly _actions$: Actions,
@@ -105,3 +130,8 @@ export class AdminOrganizationalUnitDetailEditRoutable extends SharedAbstractDet
     this._store.dispatch(new AdminOrganizationalUnitInstitutionAction.GetAll(id));
   }
 }
+
+enum TabEnum {
+  METADATA = "METADATA",
+  ADDITIONAL_FIELDS_FORM = "ADDITIONAL_FIELDS_FORM",
+}
diff --git a/src/app/features/admin/organizational-unit/stores/admin-organizational-unit.state.ts b/src/app/features/admin/organizational-unit/stores/admin-organizational-unit.state.ts
index 873d8f0fa751293c09b21e010a6b2b1460b153c5..6f8c283556e50ea146f0b51822c94feaad56833d 100644
--- a/src/app/features/admin/organizational-unit/stores/admin-organizational-unit.state.ts
+++ b/src/app/features/admin/organizational-unit/stores/admin-organizational-unit.state.ts
@@ -32,6 +32,11 @@ import {
   AdminOrganizationalUnitSubmissionPolicyState,
   AdminOrganizationalUnitSubmissionPolicyStateModel,
 } from "@admin/organizational-unit/stores/submission-policy/admin-organizational-unit-submission-policy.state";
+import {
+  AdminOrganizationalUnitAdditionalFieldsFormState,
+  AdminOrganizationalUnitAdditionalFieldsFormStateModel,
+  defaultAdminOrganizationalUnitAdditionalFieldsFormStateModel
+} from "@admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.state";
 import {Injectable} from "@angular/core";
 import {DepositStateModel} from "@deposit/stores/deposit.state";
 import {OrganizationalUnit} from "@models";
@@ -56,6 +61,7 @@ import {tap} from "rxjs/internal/operators/tap";
 import {
   ApiService,
   defaultAssociationStateInitValue,
+  defaultCompositionStateInitValue,
   defaultRelation2TiersStateInitValue,
   defaultRelation3TiersStateInitValue,
   defaultResourceStateInitValue,
@@ -80,6 +86,7 @@ export interface AdminOrganizationalUnitStateModel extends ResourceStateModel<Or
   admin_organizationalUnit_personRole: AdminOrganizationalUnitPersonRoleStateModel;
   admin_organizationalUnit_fundingAgency: AdminOrganizationalUnitFundingAgencyStateModel;
   admin_organizationalUnit_institution: AdminOrganizationalUnitInstitutionStateModel;
+  admin_organizationalUnit_additionalFieldsForm: AdminOrganizationalUnitAdditionalFieldsFormStateModel;
 }
 
 @Injectable()
@@ -93,6 +100,7 @@ export interface AdminOrganizationalUnitStateModel extends ResourceStateModel<Or
     admin_organizationalUnit_personRole: {...defaultRelation3TiersStateInitValue()},
     admin_organizationalUnit_fundingAgency: {...defaultAssociationStateInitValue()},
     admin_organizationalUnit_institution: {...defaultAssociationStateInitValue()},
+    admin_organizationalUnit_additionalFieldsForm: {...defaultAdminOrganizationalUnitAdditionalFieldsFormStateModel()}
   },
   children: [
     AdminOrganizationalUnitSubmissionPolicyState,
@@ -101,6 +109,7 @@ export interface AdminOrganizationalUnitStateModel extends ResourceStateModel<Or
     AdminOrganizationalUnitPersonRoleState,
     AdminOrganizationalUnitFundingAgencyState,
     AdminOrganizationalUnitInstitutionState,
+    AdminOrganizationalUnitAdditionalFieldsFormState
   ],
 })
 export class AdminOrganizationalUnitState extends ResourceState<AdminOrganizationalUnitStateModel, OrganizationalUnit> {
diff --git a/src/app/features/admin/orgunit/admin-orgunit.module.ts b/src/app/features/admin/orgunit/admin-orgunit.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b5752b4f6a31cb66e0f803c471c53c5a288f94ba
--- /dev/null
+++ b/src/app/features/admin/orgunit/admin-orgunit.module.ts
@@ -0,0 +1,52 @@
+import {AdminOrgunitRoutingModule} from "@admin/orgunit/admin-orgunit-routing.module";
+import {AdminOrgunitDeleteDialog} from "@admin/orgunit/components/dialogs/admin-orgunit-delete/admin-orgunit-delete.dialog";
+import {AdminOrgunitFormPresentational} from "@admin/orgunit/components/presentationals/admin-orgunit-form/admin-orgunit-form.presentational";
+import {AdminOrgunitCreateRoutable} from "@admin/orgunit/components/routables/admin-orgunit-create/admin-orgunit-create.routable";
+import {AdminOrgunitDetailEditRoutable} from "@admin/orgunit/components/routables/admin-orgunit-detail-edit/admin-orgunit-detail-edit.routable";
+import {AdminOrgunitListRoutable} from "@admin/orgunit/components/routables/admin-orgunit-list/admin-orgunit-list.routable";
+import {AdminOrganizationalUnitState} from "@admin/orgunit/stores/admin-organizational-unit.state";
+import {NgModule} from "@angular/core";
+import {SharedModule} from "@app/shared/shared.module";
+import {TranslateModule} from "@ngx-translate/core";
+import {NgxsModule} from "@ngxs/store";
+import {AdminOrgUnitAdditionalFieldsFormListRoutable} from "@admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form-list.routable";
+
+const routables = [
+  AdminOrgunitCreateRoutable,
+  AdminOrgunitDetailEditRoutable,
+  AdminOrgunitListRoutable,
+  AdminOrgUnitAdditionalFieldsFormListRoutable
+];
+const containers = [];
+const dialogs = [
+  AdminOrgunitDeleteDialog,
+];
+const presentationals = [
+  AdminOrgunitFormPresentational,
+];
+
+@NgModule({
+  declarations: [
+    ...routables,
+    ...containers,
+    ...dialogs,
+    ...presentationals,
+  ],
+  imports: [
+    SharedModule,
+    AdminOrgunitRoutingModule,
+    TranslateModule.forChild({}),
+    NgxsModule.forFeature([
+      AdminOrganizationalUnitState,
+    ]),
+  ],
+  entryComponents: [
+    ...dialogs,
+  ],
+  exports: [
+    ...routables,
+  ],
+  providers: [],
+})
+export class AdminOrgunitModule {
+}
diff --git a/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form-list.routable.ts b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form-list.routable.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3fcfa6626204e11998990c0e631dcebc3d3b475c
--- /dev/null
+++ b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form-list.routable.ts
@@ -0,0 +1,110 @@
+import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from "@angular/core";
+import {AdditionalFieldsForm} from "@models";
+import {MARK_AS_TRANSLATABLE, MemoizedUtil, OrderEnum, QueryParameters} from "solidify-frontend";
+import {FieldTypeEnum} from "@shared/enums/field-type.enum";
+import {DataTableColumns} from "@shared/models/data-table-columns.model";
+import {Store} from "@ngxs/store";
+import {Observable} from "rxjs";
+import {
+  AdminOrganizationalUnitAdditionalFieldsFormState,
+} from "@admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.state";
+import {
+  AdminOrganizationalUnitAdditionalFieldsFormAction,
+} from "@admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.action";
+import {debounceTime, distinctUntilChanged, tap} from "rxjs/operators";
+import {AdminRoutesEnum, AppRoutesEnum, DepositRoutesEnum} from "@shared/enums/routes.enum";
+import {Tab} from "@shared/components/containers/shared-tabs/shared-tabs.container";
+import {IconNameEnum} from "@shared/enums/icon-name.enum";
+import {ActivatedRoute} from "@angular/router";
+
+@Component({
+  selector: "dlcm-admin-orgunit-additional-fields-form-routable",
+  templateUrl: "./admin-orgunit-additional-fields-form.routable.html",
+  styleUrls: ["./admin-orgunit-additional-fields-form.routable.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminOrgUnitAdditionalFieldsFormListRoutable {
+  isLoadingObs: Observable<boolean> = MemoizedUtil.isLoading(this._store, AdminOrganizationalUnitAdditionalFieldsFormState);
+
+  _orgUnitResId: string;
+  _resId: string;
+
+  private currentTab: Tab;
+
+  additionalFieldsFormObs: Observable<AdditionalFieldsForm[]>;
+  queryParametersObs: Observable<QueryParameters> = MemoizedUtil.select(this._store, AdminOrganizationalUnitAdditionalFieldsFormState, (state) => state.queryParameters);
+
+  columns: DataTableColumns<AdditionalFieldsForm>[];
+
+  private get rootUrl(): string[] {
+    return [AppRoutesEnum.admin, AdminRoutesEnum.organizationalUnit];
+  }
+
+  listTabs: Tab[] = [
+    {
+      id: TabEnum.METADATA,
+      suffixUrl: DepositRoutesEnum.metadata,
+      icon: IconNameEnum.metadata,
+      titleToTranslate: MARK_AS_TRANSLATABLE("admin.organizationalUnit.detail"),
+      route: () => [...this.rootUrl, AdminRoutesEnum.organizationalUnitDetail, this._orgUnitResId],
+    },
+    {
+      id: TabEnum.ADDITIONAL_FIELDS_FORM,
+      suffixUrl: DepositRoutesEnum.metadata,
+      icon: IconNameEnum.files,
+      titleToTranslate: MARK_AS_TRANSLATABLE("admin.organizationalUnit.additionalFieldsForm"),
+      route: () => [...this.rootUrl, AdminRoutesEnum.organizationalUnitAdditionalFieldsForm, this._orgUnitResId],
+    },
+  ];
+
+  constructor(protected readonly _store: Store, protected readonly _route: ActivatedRoute, private readonly _changeDetector: ChangeDetectorRef) {
+    this.retrieveResIdFromUrl();
+    this.defineColumns();
+
+    this.additionalFieldsFormObs = MemoizedUtil.select(this._store, AdminOrganizationalUnitAdditionalFieldsFormState,
+      (state) => state.list)
+      .pipe(
+        debounceTime(400),
+        distinctUntilChanged()
+      );
+  }
+
+  protected retrieveResIdFromUrl(): void {
+    this._orgUnitResId = this._route.snapshot.paramMap.get(AppRoutesEnum.paramIdWithoutPrefixParam);
+  }
+
+  onQueryParametersEvent(queryParameters: QueryParameters): void {
+    this._store.dispatch(new AdminOrganizationalUnitAdditionalFieldsFormAction.ChangeQueryParameters(this._orgUnitResId, queryParameters));
+    this._changeDetector.detectChanges(); // Allow to display spinner the first time
+  }
+
+  defineColumns(): void {
+    this.columns = [
+      {
+        field: "name",
+        header: MARK_AS_TRANSLATABLE("admin.organizationalUnit.additionalFields.table.header.name"),
+        type: FieldTypeEnum.string,
+        order: OrderEnum.none,
+        isFilterable: true,
+        isSortable: true,
+      },
+      {
+        field: "creation.when" as any,
+        header: MARK_AS_TRANSLATABLE("admin.organizationalUnit.additionalFields.table.header.creation.when"),
+        type: FieldTypeEnum.datetime,
+        order: OrderEnum.ascending,
+        isFilterable: true,
+        isSortable: true,
+      },
+    ];
+  }
+
+  setCurrentTab($event: Tab): void {
+    this.currentTab = $event;
+  }
+}
+
+enum TabEnum {
+  METADATA = "METADATA",
+  ADDITIONAL_FIELDS_FORM = "ADDITIONAL_FIELDS_FORM",
+}
diff --git a/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.html b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.html
new file mode 100644
index 0000000000000000000000000000000000000000..afddfd424d1300a92aeb2ccfad4979e032fb5e65
--- /dev/null
+++ b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.html
@@ -0,0 +1,21 @@
+<div class="additional-fields-form">
+
+  <dlcm-shared-tabs-container [tabs]="listTabs"
+                              [isLoading]="isLoadingObs | async"
+                              (tabChange)="setCurrentTab($event)"
+  ></dlcm-shared-tabs-container>
+
+  <dlcm-shared-data-table [columns]="columns"
+                          [datas]="additionalFieldsFormObs | async"
+                          [queryParameters]="queryParametersObs | async"
+                          [isLoading]="isLoadingObs | async"
+                          (queryParametersChange)="onQueryParametersEvent($event)"
+  ></dlcm-shared-data-table>
+
+  <div class="wrapper"
+       [dlcmSpinner]="isLoadingObs | async"
+  >
+
+  </div>
+
+</div>
diff --git a/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.scss b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.scss
new file mode 100644
index 0000000000000000000000000000000000000000..b9bc65ea450fe2c81372502f895811531a324ae8
--- /dev/null
+++ b/src/app/features/admin/orgunit/components/routables/admin-orgunit-additional-fields-form-list/admin-orgunit-additional-fields-form.routable.scss
@@ -0,0 +1,3 @@
+:host {
+  width: 100%;
+}
diff --git a/src/app/features/admin/orgunit/components/routables/admin-orgunit-detail-edit/admin-orgunit-detail-edit.routable.html b/src/app/features/admin/orgunit/components/routables/admin-orgunit-detail-edit/admin-orgunit-detail-edit.routable.html
new file mode 100644
index 0000000000000000000000000000000000000000..20c782bb363f0b201af97cc82f7148616eb0f21d
--- /dev/null
+++ b/src/app/features/admin/orgunit/components/routables/admin-orgunit-detail-edit/admin-orgunit-detail-edit.routable.html
@@ -0,0 +1,53 @@
+<dlcm-shared-tabs-container [tabs]="listTabs"
+                            [isLoading]="isLoadingObs | async"
+                            (tabChange)="setCurrentTab($event)"
+></dlcm-shared-tabs-container>
+
+<lib-empty-container
+    cdkTrapFocus
+    solidifyShortCuts
+    [solidifyFocusFirstElement]="true"
+    (onEscape)="backToList()"
+>
+  <dlcm-shared-banner-edit-mode [isEdit]="isEdit"></dlcm-shared-banner-edit-mode>
+
+
+  <dlcm-button-toolbar-detail [mode]="isEdit ? 'edit' : 'detail'"
+                              [formPresentational]="formPresentational"
+                              [currentModel]="currentObs | async"
+                              (editChange)="edit()"
+                              (deleteChange)="delete()"
+                              (backToDetailChange)="backToDetail()"
+                              (backToListChange)="backToList()"
+  >
+  </dlcm-button-toolbar-detail>
+
+  <div class="wrapper"
+       [dlcmSpinner]="isLoadingWithDependencyObs | async"
+  >
+    <dlcm-admin-orgunit-form #formPresentational
+                             [solidifyFocusFirstElement]="isEdit"
+                             *ngIf="isReadyToBeDisplayedObs | async"
+                             [model]="currentObs| async"
+                             [selectedSubmissionPolicies]="selectedSubmissionPoliciesObs | async"
+                             [selectedPreservationPolicies]="selectedPreservationPoliciesObs | async"
+                             [selectedDisseminationPolicies]="selectedDisseminationPoliciesObs | async"
+                             [selectedPersonRole]="selectedPersonRoleObs | async"
+                             [selectedFundingAgencies]="selectedFundingAgenciesObs | async"
+                             [selectedInstitutions]="selectedInstitutionsObs | async"
+                             [listSubmissionPolicies]="listSubmissionPoliciesObs | async"
+                             [listPreservationPolicies]="listPreservationPoliciesObs | async"
+                             [listDisseminationPolicies]="listDisseminationPoliciesObs | async"
+                             [researchDomainSources]="researchDomainSourcesObs | async"
+                             [defaultPlatformLicenseId]="(systemPropertyObs | async)?.defaultLicense"
+                             [listRole]="listRoleObs | async"
+                             [readonly]="!isEdit"
+                             [editAvailable]="editAvailable"
+                             (checkAvailableChange)="checkAvailable($event)"
+                             (submitChange)="update($event)"
+                             (dirtyChange)="updateCanDeactivate($event)"
+                             (navigate)="navigate($event)"
+                             (editChange)="edit()"
+    ></dlcm-admin-orgunit-form>
+  </div>
+</lib-empty-container>
diff --git a/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.action.ts b/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.action.ts
new file mode 100644
index 0000000000000000000000000000000000000000..280943f57da625fb16dd77fe3039d1b7e6ae1003
--- /dev/null
+++ b/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.action.ts
@@ -0,0 +1,103 @@
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {AdditionalFieldsForm} from "@models";
+import {
+  BaseAction, BaseSubAction,
+  CompositionAction,
+  CompositionNameSpace, QueryParameters,
+  TypeDefaultAction,
+} from "solidify-frontend";
+
+const state = LocalStateEnum.admin_organizationalUnit_additionalFieldsForm;
+
+export namespace AdminOrganizationalUnitAdditionalFieldsFormAction {
+  @TypeDefaultAction(state)
+  export class GetAll extends CompositionAction.GetAll {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllSuccess extends CompositionAction.GetAllSuccess<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllFail extends CompositionAction.GetAllFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetById extends CompositionAction.GetById {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdSuccess extends CompositionAction.GetByIdSuccess<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdFail extends CompositionAction.GetByIdFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class Update extends CompositionAction.Update<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateSuccess extends CompositionAction.UpdateSuccess<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateFail extends CompositionAction.UpdateFail<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class Create extends CompositionAction.Create<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateSuccess extends CompositionAction.CreateSuccess<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateFail extends CompositionAction.CreateFail<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class Delete extends CompositionAction.Delete<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteSuccess extends CompositionAction.DeleteSuccess<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteFail extends CompositionAction.DeleteFail<AdditionalFieldsForm> {
+  }
+
+  @TypeDefaultAction(state)
+  export class ChangeQueryParameters extends CompositionAction.ChangeQueryParameters {
+    static readonly type: string = `[${state}] Change Query Parameters`;
+
+    constructor(public parentId: string, public queryParameters: QueryParameters, public keepCurrentContext: boolean = false, public getAllAfterChange: boolean = true) {
+      super(parentId, queryParameters, keepCurrentContext, getAllAfterChange);
+    }
+  }
+
+  export class GetCurrentMetadataForm extends BaseAction {
+    static readonly type: string = `[${state}] Get Current Metadata Form`;
+
+    constructor(public parentId: string) {
+      super();
+    }
+  }
+
+  export class GetCurrentMetadataFormSuccess extends BaseSubAction<GetCurrentMetadataForm> {
+    static readonly type: string = `[${state}] Get Current Metadata Form Success`;
+
+    constructor(public parentAction: GetCurrentMetadataForm, public currentForm: AdditionalFieldsForm) {
+      super(parentAction);
+    }
+  }
+
+  export class GetCurrentMetadataFormFail extends BaseSubAction<GetCurrentMetadataForm> {
+    static readonly type: string = `[${state}] Get Current Metadata Form Fail`;
+  }
+}
+
+export const adminOrganizationalUnitAdditionalFieldsFormActionNameSpace: CompositionNameSpace = AdminOrganizationalUnitAdditionalFieldsFormAction;
diff --git a/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.state.ts b/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.state.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3481898ac97b8766d7e5bbfb0c7b880911d38a20
--- /dev/null
+++ b/src/app/features/admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.state.ts
@@ -0,0 +1,90 @@
+import {Injectable} from "@angular/core";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {AdditionalFieldsForm} from "@models";
+import {
+  Action,
+  Actions,
+  State, StateContext,
+  Store,
+} from "@ngxs/store";
+import {ApiResourceNameEnum} from "@shared/enums/api-resource-name.enum";
+import {AdminResourceApiEnum} from "@shared/enums/api.enum";
+import {
+  ApiService,
+  CompositionState,
+  CompositionStateModel,
+  defaultCompositionStateInitValue,
+  NotificationService, QueryParameters, SolidifyStateError,
+} from "solidify-frontend";
+import {Observable} from "rxjs";
+import {catchError, tap} from "rxjs/operators";
+import GetCurrentMetadataFormSuccess = AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormSuccess;
+import GetCurrentMetadataFormFail = AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormFail;
+import {
+  AdminOrganizationalUnitAdditionalFieldsFormAction,
+  adminOrganizationalUnitAdditionalFieldsFormActionNameSpace
+} from "@admin/orgunit/stores/additional-fields-form/admin-organizational-unit-additional-fields-form.action";
+
+export const defaultAdminOrganizationalUnitAdditionalFieldsFormStateModel: () => AdminOrganizationalUnitAdditionalFieldsFormStateModel = () =>
+  ({
+    ...defaultCompositionStateInitValue(),
+    queryParameters: new QueryParameters(20),
+    loaded: false
+  });
+
+export interface AdminOrganizationalUnitAdditionalFieldsFormStateModel extends CompositionStateModel<AdditionalFieldsForm> {
+  loaded: boolean;
+}
+
+@Injectable()
+@State<AdminOrganizationalUnitAdditionalFieldsFormStateModel>({
+  name: LocalStateEnum.admin_organizationalUnit_additionalFieldsForm,
+  defaults: {
+    ...defaultAdminOrganizationalUnitAdditionalFieldsFormStateModel(),
+  },
+})
+export class AdminOrganizationalUnitAdditionalFieldsFormState extends CompositionState<AdminOrganizationalUnitAdditionalFieldsFormStateModel, AdditionalFieldsForm> {
+  constructor(protected apiService: ApiService,
+              protected store: Store,
+              protected notificationService: NotificationService,
+              protected actions$: Actions) {
+    super(apiService, store, notificationService, actions$, {
+      nameSpace: adminOrganizationalUnitAdditionalFieldsFormActionNameSpace,
+      resourceName: ApiResourceNameEnum.ADDITIONAL_FIELDS_FORM,
+    });
+  }
+
+  protected get _urlResource(): string {
+    return AdminResourceApiEnum.organizationalUnits;
+  }
+
+  @Action(AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataForm)
+  getCurrentMetadataForm(ctx: StateContext<AdminOrganizationalUnitAdditionalFieldsFormStateModel>, action: AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataForm): Observable<AdditionalFieldsForm> {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1
+    });
+    return this.apiService.getByIdInPath<AdditionalFieldsForm>(`${this._urlResource}/${action.parentId}/${this._resourceName}/${ApiResourceNameEnum.CURRENT_VERSION}`).pipe(
+      tap(result => ctx.dispatch(new GetCurrentMetadataFormSuccess(action, result))),
+      catchError(error => {
+        ctx.dispatch(new GetCurrentMetadataFormFail(action));
+        throw new SolidifyStateError(this, error);
+      })
+    );
+  }
+
+  @Action(AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormSuccess)
+  getCurrentMetadataFormSuccess(ctx: StateContext<AdminOrganizationalUnitAdditionalFieldsFormStateModel>, action: AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormSuccess): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+      current: action.currentForm,
+      loaded: true
+    });
+  }
+
+  @Action(AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormFail)
+  getCurrentMetadataFormFail(ctx: StateContext<AdminOrganizationalUnitAdditionalFieldsFormStateModel>, action: AdminOrganizationalUnitAdditionalFieldsFormAction.GetCurrentMetadataFormFail): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1
+    });
+  }
+}
diff --git a/src/app/shared/enums/local-state.enum.ts b/src/app/shared/enums/local-state.enum.ts
index 54b703c86025f15105c12857ff4f091303d42b8d..d8454c8bf342f311328695c2d74815f44cd7a478 100644
--- a/src/app/shared/enums/local-state.enum.ts
+++ b/src/app/shared/enums/local-state.enum.ts
@@ -100,6 +100,7 @@ export enum LocalStateEnum {
   admin_organizationalUnit_personRole = "admin_organizationalUnit_personRole",
   admin_organizationalUnit_fundingAgency = "admin_organizationalUnit_fundingAgency",
   admin_organizationalUnit_institution = "admin_organizationalUnit_institution",
+  admin_organizationalUnit_additionalFieldsForm = "admin_organizationalUnit_additionalFieldsForm",
   admin_fundingAgencies_organizationalUnit = "admin_fundingAgencies_organizationalUnit",
   admin_institution = "admin_institution",
   admin_researchDomain = "admin_researchDomain",
diff --git a/src/app/shared/enums/routes.enum.ts b/src/app/shared/enums/routes.enum.ts
index 8a7c2898f695f239df20d2e45f3a507426ba393b..5f9e05e792b104a1f40ed77d66599f314780d2ba 100644
--- a/src/app/shared/enums/routes.enum.ts
+++ b/src/app/shared/enums/routes.enum.ts
@@ -89,6 +89,7 @@ export enum AdminRoutesEnum {
   organizationalUnitCreate = "create",
   organizationalUnitDetail = "detail",
   organizationalUnitEdit = "edit",
+  organizationalUnitAdditionalFieldsForm = "additional-fields-form",
 
   institution = "institution",
   institutionCreate = "create",
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index 9828a61639f0a657eb0d056fafab6299422a66d6..9ff8c15f4b36075719321d5d2f5a359befd736dd 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -468,6 +468,17 @@
       }
     },
     "organizationalUnit": {
+      "additionalFieldsForm" : "Métadonnées supplémentaires",
+      "additionalFields" : {
+        "table" : {
+          "header" : {
+            "name" : "Nom",
+            "creation" : {
+              "when" : "Date de création"
+            }
+          }
+        }
+      },
       "dialog": {
         "delete": {
           "cancel": "Annuler",
@@ -476,6 +487,7 @@
           "title": "Confirmer suppresion"
         }
       },
+      "detail" : "Détail",
       "form": {
         "closingDate": "Fermeture",
         "description": {