diff --git a/package-lock.json b/package-lock.json
index 227cedc4575e11ee6132fdd27a19e0374e7e27f7..bfa10c204b21ffc8057e1b3a47541ba1aeb5188e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9329,7 +9329,7 @@
     "solidify-frontend": {
       "version": "0.0.1",
       "resolved": "https://packages.dlcm.ch/repository/npm-group/solidify-frontend/-/solidify-frontend-0.0.1.tgz",
-      "integrity": "sha512-3BpQTUwI3nNyEKuVQbAxQL5+Mmrq2dvwJ622QXeUIrLZP37T3C5hQgKbxS13aRCnBxy2FnD7lOqb4Ry3BJWkUg==",
+      "integrity": "sha512-2Cc6SXorJxpU8JMot508AV+GdEllHlGEkdCt+J8BCDDbqKS25e2v9o6Zfe/dpQo7USWyU+qLmea1GcavhUxw9Q==",
       "requires": {
         "tslib": "^1.9.0"
       }
diff --git a/package.json b/package.json
index 3fb321cd96d92ddec371d138bcd87cd6b0dd26bc..4838c085a3500cb6d3398b29c3038550cf97f36b 100644
--- a/package.json
+++ b/package.json
@@ -54,9 +54,9 @@
     "primeicons": "1.0.0",
     "primeng": "8.0.1",
     "rxjs": "6.5.2",
+    "solidify-frontend": "0.0.1",
     "tslib": "1.10.0",
-    "zone.js": "0.9.1",
-    "solidify-frontend": "0.0.1"
+    "zone.js": "0.9.1"
   },
   "devDependencies": {
     "@angular-devkit/build-angular": "0.801.2",
diff --git a/src/app/features/admin/admin-routing.module.ts b/src/app/features/admin/admin-routing.module.ts
index 32d5e50ac83674026f36a4ddb1d2c298833562a6..2023098c4b47be92ca99ef6217c887205ef06b2a 100644
--- a/src/app/features/admin/admin-routing.module.ts
+++ b/src/app/features/admin/admin-routing.module.ts
@@ -1,6 +1,10 @@
 import {NgModule} from "@angular/core";
 import {RouterModule, Routes} from "@angular/router";
 import {AdminHomeRoutable} from "@app/features/admin/components/routables/admin-home/admin-home.routable";
+import {AdminLicenseCreateRoutable} from "@app/features/admin/components/routables/admin-license-create/admin-license-create.routable";
+import {AdminLicenseDetailRoutable} from "@app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable";
+import {AdminLicenseEditRoutable} from "@app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable";
+import {AdminLicenseListRoutable} from "@app/features/admin/components/routables/admin-license-list/admin-license-list.routable";
 import {AdminSubmissionPolicyCreateRoutable} from "@app/features/admin/components/routables/admin-submission-policy-create/admin-submission-policy-create.routable";
 import {AdminSubmissionPolicyDetailRoutable} from "@app/features/admin/components/routables/admin-submission-policy-detail/admin-submission-policy-detail.routable";
 import {AdminSubmissionPolicyEditRoutable} from "@app/features/admin/components/routables/admin-submission-policy-edit/admin-submission-policy-edit.routable";
@@ -49,6 +53,34 @@ const routes: Routes = [
       breadcrumb: TRANSLATE("breadcrumb.admin.submissionPolicy.create"),
     },
   },
+  {
+    path: AdminRoutesEnum.license + AppRoutesEnum.separator + AdminRoutesEnum.licenseCreate,
+    component: AdminLicenseCreateRoutable,
+    data: {
+      breadcrumb: TRANSLATE("breadcrumb.admin.license.create"),
+    },
+  },
+  {
+    path: AdminRoutesEnum.license + AppRoutesEnum.separator + AdminRoutesEnum.licenseEdit + AppRoutesEnum.separator + AppRoutesEnum.paramId,
+    component: AdminLicenseEditRoutable,
+    data: {
+      breadcrumb: TRANSLATE("breadcrumb.admin.license.edit"),
+    },
+  },
+  {
+    path: AdminRoutesEnum.license + AppRoutesEnum.separator + AdminRoutesEnum.licenseDetail + AppRoutesEnum.separator + AppRoutesEnum.paramId,
+    component: AdminLicenseDetailRoutable,
+    data: {
+      breadcrumb: TRANSLATE("breadcrumb.admin.license.detail"),
+    },
+  },
+  {
+    path: AdminRoutesEnum.license,
+    component: AdminLicenseListRoutable,
+    data: {
+      breadcrumb: TRANSLATE("breadcrumb.admin.license.list"),
+    },
+  },
   {
     path: AdminRoutesEnum.preservationPolicy,
     component: AdminPreservationPolicyListRoutable,
diff --git a/src/app/features/admin/admin.module.ts b/src/app/features/admin/admin.module.ts
index ad7b42a964b18592535fc4e664d2e5380861bdc9..1218ad1b122d874398f1d02860d280a163dec189 100644
--- a/src/app/features/admin/admin.module.ts
+++ b/src/app/features/admin/admin.module.ts
@@ -1,12 +1,19 @@
 import {NgModule} from "@angular/core";
 import {AdminRoutingModule} from "@app/features/admin/admin-routing.module";
+import {AdminLicenseDeleteDialog} from "@app/features/admin/components/dialogs/admin-license-delete/admin-license-delete.dialog";
 import {AdminSubmissionPolicyDeleteDialog} from "@app/features/admin/components/dialogs/admin-submission-policy-delete/admin-submission-policy-delete.dialog";
+import {AdminLicenseForm} from "@app/features/admin/components/presentationals/admin-license-form/admin-license-form";
 import {AdminSubmissionPolicyForm} from "@app/features/admin/components/presentationals/admin-submission-policy-form/admin-submission-policy-form";
 import {AdminHomeRoutable} from "@app/features/admin/components/routables/admin-home/admin-home.routable";
+import {AdminLicenseCreateRoutable} from "@app/features/admin/components/routables/admin-license-create/admin-license-create.routable";
+import {AdminLicenseDetailRoutable} from "@app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable";
+import {AdminLicenseEditRoutable} from "@app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable";
+import {AdminLicenseListRoutable} from "@app/features/admin/components/routables/admin-license-list/admin-license-list.routable";
 import {AdminSubmissionPolicyCreateRoutable} from "@app/features/admin/components/routables/admin-submission-policy-create/admin-submission-policy-create.routable";
 import {AdminSubmissionPolicyDetailRoutable} from "@app/features/admin/components/routables/admin-submission-policy-detail/admin-submission-policy-detail.routable";
 import {AdminSubmissionPolicyEditRoutable} from "@app/features/admin/components/routables/admin-submission-policy-edit/admin-submission-policy-edit.routable";
 import {AdminState} from "@app/features/admin/stores/admin.state";
+import {AdminLicenseState} from "@app/features/admin/stores/license/admin-license.state";
 import {AdminSubmissionPolicyState} from "@app/features/admin/stores/submission-policy/admin-submission-policy.state";
 import {SharedModule} from "@app/shared/shared.module";
 import {TranslateModule} from "@ngx-translate/core";
@@ -29,16 +36,22 @@ const routables = [
   AdminPreservationPolicyListRoutable,
   AdminPreservationPolicyDetailRoutable,
   AdminPreservationPolicyCreateRoutable,
-  AdminPreservationPolicyEditRoutable
+  AdminPreservationPolicyEditRoutable,
+  AdminLicenseCreateRoutable,
+  AdminLicenseDetailRoutable,
+  AdminLicenseEditRoutable,
+  AdminLicenseListRoutable,
 ];
 const containers = [];
 const dialogs = [
   AdminSubmissionPolicyDeleteDialog,
+  AdminLicenseDeleteDialog,
   AdminPreservationPolicyDeleteDialog
 ];
 const presentationals = [
   AdminSubmissionPolicyForm,
-  AdminPreservationPolicyForm
+  AdminLicenseForm,
+  AdminPreservationPolicyForm,
 ];
 
 @NgModule({
@@ -55,7 +68,8 @@ const presentationals = [
     NgxsModule.forFeature([
       AdminState,
       AdminSubmissionPolicyState,
-      AdminPreservationPolicyState
+      AdminPreservationPolicyState,
+      AdminLicenseState,
     ]),
   ],
   entryComponents: [
diff --git a/src/app/features/admin/components/dialogs/admin-license-delete/admin-license-delete.dialog.ts b/src/app/features/admin/components/dialogs/admin-license-delete/admin-license-delete.dialog.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8f851043e388189331e96d9c6b25c7c646dc24e7
--- /dev/null
+++ b/src/app/features/admin/components/dialogs/admin-license-delete/admin-license-delete.dialog.ts
@@ -0,0 +1,30 @@
+import {ChangeDetectionStrategy, Component, Inject} from "@angular/core";
+import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material";
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {AdminLicenseStateModel} from "@app/features/admin/stores/license/admin-license.state";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractDeleteDialog} from "@app/shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {DeleteDialog} from "@app/shared/models/delete-dialog.model";
+import {Store} from "@ngxs/store";
+import {TRANSLATE} from "solidify-frontend";
+
+@Component({
+  selector: "dlcm-license-delete-dialog",
+  templateUrl: "../../../../../shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog.html",
+  styleUrls: ["../../../../../shared/components/dialogs/shared-abstract-delete/shared-abstract-delete.dialog.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseDeleteDialog extends SharedAbstractDeleteDialog<Licenses, AdminLicenseStateModel> {
+  public readonly KEY_TITLE: string = TRANSLATE("admin.license.dialog.delete.title");
+  public readonly KEY_MESSAGE: string = TRANSLATE("admin.license.dialog.delete.message");
+  public readonly KEY_CONFIRM_BUTTON: string = TRANSLATE("admin.license.dialog.delete.confirm");
+  public readonly KEY_CANCEL_BUTTON: string = TRANSLATE("admin.license.dialog.delete.cancel");
+
+  constructor(protected store: Store,
+              protected dialogRef: MatDialogRef<AdminLicenseDeleteDialog>,
+              @Inject(MAT_DIALOG_DATA) public data: DeleteDialog) {
+    super(store, dialogRef, data, LocalStateEnum.admin_license, adminLicenseActionNameSpace);
+  }
+
+}
diff --git a/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.html b/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.html
new file mode 100644
index 0000000000000000000000000000000000000000..a80ebbea54d7e48858525e254a5c40b81eca9940
--- /dev/null
+++ b/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.html
@@ -0,0 +1,89 @@
+<form [formGroup]="form"
+      (ngSubmit)="onSubmit()">
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.title' | translate}}</mat-label>
+    <input matInput
+           [formControlName]="formDefinition.title"
+           [required]="isRequired(formDefinition.title)">
+    <mat-error *ngIf="getFormControl(formDefinition.title).invalid">{{'required' | translate}}</mat-error>
+    <mat-error *ngFor="let error of getFormControl(formDefinition.title).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.openLicenseId' | translate}}</mat-label>
+    <input matInput
+           [formControlName]="formDefinition.openLicenseId"
+           [required]="isRequired(formDefinition.openLicenseId)">
+    <mat-error *ngIf="getFormControl(formDefinition.openLicenseId).invalid">{{'required' | translate}}</mat-error>
+    <mat-error *ngFor="let error of getFormControl(formDefinition.openLicenseId).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.url' | translate}}</mat-label>
+    <input matInput
+           [formControlName]="formDefinition.url">
+    <mat-error *ngFor="let error of getFormControl(formDefinition.url).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.maintainer' | translate}}</mat-label>
+    <input matInput
+           [formControlName]="formDefinition.maintainer">
+    <mat-error *ngFor="let error of getFormControl(formDefinition.maintainer).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.odConformance' | translate}}</mat-label>
+    <mat-select [formControlName]="formDefinition.odConformance">
+      <mat-option *ngFor="let odConformance of licenseOdConformanceEnum" [value]="odConformance">
+        {{odConformance}}
+      </mat-option>
+    </mat-select>
+    <mat-error *ngFor="let error of getFormControl(formDefinition.odConformance).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.osdConformance' | translate}}</mat-label>
+    <mat-select [formControlName]="formDefinition.osdConformance">
+      <mat-option *ngFor="let osdConformance of licenseOsdConformanceEnum" [value]="osdConformance">
+        {{osdConformance}}
+      </mat-option>
+    </mat-select>
+    <mat-error *ngFor="let error of getFormControl(formDefinition.osdConformance).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.status' | translate}}</mat-label>
+    <mat-select [formControlName]="formDefinition.status">
+      <mat-option *ngFor="let status of licensesStatusEnum" [value]="status">
+        {{status}}
+      </mat-option>
+    </mat-select>
+    <mat-error *ngFor="let error of getFormControl(formDefinition.status).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-checkbox [formControlName]="formDefinition.isGeneric">{{'admin.license.form.isGeneric' | translate }}</mat-checkbox>
+
+  <mat-form-field>
+    <mat-label>{{'admin.license.form.family' | translate}}</mat-label>
+    <input matInput
+           [formControlName]="formDefinition.family">
+    <mat-error *ngFor="let error of getFormControl(formDefinition.family).errors?.errorsFromBackend">{{error}}</mat-error>
+  </mat-form-field>
+
+  <mat-checkbox [formControlName]="formDefinition.domainContent">{{'admin.license.form.domainContent' | translate }}</mat-checkbox>
+
+  <mat-checkbox [formControlName]="formDefinition.domainData">{{'admin.license.form.domainData' | translate }}</mat-checkbox>
+
+  <mat-checkbox [formControlName]="formDefinition.domainSoftware">{{'admin.license.form.domainSoftware' | translate }}</mat-checkbox>
+
+  <div class="submit-button">
+    <button *ngIf="!readonly"
+            mat-flat-button
+            color="primary"
+            type="submit"
+            [disabled]="!form.valid">
+      {{'admin.license.form.submit' | translate }}
+    </button>
+  </div>
+</form>
diff --git a/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.ts b/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.ts
new file mode 100644
index 0000000000000000000000000000000000000000..aae50b625d7796607345f5513b7f18ddb7fb38f4
--- /dev/null
+++ b/src/app/features/admin/components/presentationals/admin-license-form/admin-license-form.ts
@@ -0,0 +1,96 @@
+import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from "@angular/core";
+import {FormBuilder, Validators} from "@angular/forms";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractFormPresentational} from "@app/shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
+import {odConformanceEnum, osdConformanceEnum} from "@app/shared/enums/license.enums";
+import {BaseFormDefinition} from "@app/shared/models/base-form-definition.model";
+import {PropertyName, SolidifyValidator} from "solidify-frontend";
+
+@Component({
+  selector: "dlcm-admin-license-form",
+  templateUrl: "./admin-license-form.html",
+  styleUrls: ["../../../../../shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseForm extends SharedAbstractFormPresentational<Licenses> {
+  formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
+
+  get licensesStatusEnum(): Licenses.StatusEnum[] {
+    return [Licenses.StatusEnum.Active,
+      Licenses.StatusEnum.Retired,
+      Licenses.StatusEnum.Superseded];
+  }
+
+  get licenseOdConformanceEnum(): odConformanceEnum[] {
+    return [odConformanceEnum.rejected,
+      odConformanceEnum.approved,
+      odConformanceEnum.not_reviewed,
+      odConformanceEnum.empty];
+  }
+
+  get licenseOsdConformanceEnum(): osdConformanceEnum[] {
+    return [osdConformanceEnum.rejected,
+      osdConformanceEnum.approved,
+      osdConformanceEnum.not_reviewed,
+      osdConformanceEnum.empty];
+  }
+
+  constructor(protected readonly _changeDetectorRef: ChangeDetectorRef,
+              private readonly _fb: FormBuilder) {
+    super(_changeDetectorRef);
+  }
+
+  protected initNewForm(): void {
+    this.form = this._fb.group({
+      [this.formDefinition.title]: ["", [Validators.required, SolidifyValidator]],
+      [this.formDefinition.openLicenseId]: ["", [Validators.required, SolidifyValidator]],
+      [this.formDefinition.url]: ["", [SolidifyValidator]],
+      [this.formDefinition.maintainer]: ["", [SolidifyValidator]],
+      [this.formDefinition.odConformance]: ["", [SolidifyValidator]],
+      [this.formDefinition.osdConformance]: ["", [SolidifyValidator]],
+      [this.formDefinition.status]: [Licenses.StatusEnum.Retired, [SolidifyValidator]],
+      [this.formDefinition.isGeneric]: [false, [SolidifyValidator]],
+      [this.formDefinition.family]: ["", [SolidifyValidator]],
+      [this.formDefinition.domainContent]: [false, [SolidifyValidator]],
+      [this.formDefinition.domainData]: [false, [SolidifyValidator]],
+      [this.formDefinition.domainSoftware]: [false, [SolidifyValidator]],
+    });
+  }
+
+  protected bindFormTo(licenses: Licenses): void {
+    this.form = this._fb.group({
+      [this.formDefinition.title]: [licenses.title, [Validators.required, SolidifyValidator]],
+      [this.formDefinition.openLicenseId]: [licenses.openLicenseId, [Validators.required, SolidifyValidator]],
+      [this.formDefinition.url]: [licenses.url, [SolidifyValidator]],
+      [this.formDefinition.maintainer]: [licenses.maintainer, [SolidifyValidator]],
+      [this.formDefinition.odConformance]: [licenses.odConformance, [SolidifyValidator]],
+      [this.formDefinition.osdConformance]: [licenses.osdConformance, [SolidifyValidator]],
+      [this.formDefinition.status]: [licenses.status, [Validators.required, SolidifyValidator]],
+      [this.formDefinition.isGeneric]: [licenses.isGeneric, [SolidifyValidator]],
+      [this.formDefinition.family]: [licenses.family, [SolidifyValidator]],
+      [this.formDefinition.domainContent]: [licenses.domainContent, [SolidifyValidator]],
+      [this.formDefinition.domainData]: [licenses.domainData, [SolidifyValidator]],
+      [this.formDefinition.domainSoftware]: [licenses.domainSoftware, [SolidifyValidator]],
+    });
+  }
+
+  protected treatmentBeforeSubmit(licenses: Licenses): Licenses {
+    return licenses;
+  }
+
+}
+
+class FormComponentFormDefinition extends BaseFormDefinition {
+  @PropertyName() title: string;
+  @PropertyName() openLicenseId: string;
+  @PropertyName() url: string;
+  @PropertyName() maintainer: string;
+  @PropertyName() odConformance: string;
+  @PropertyName() osdConformance: string;
+  @PropertyName() status: string;
+  @PropertyName() isGeneric: string;
+  @PropertyName() family: string;
+  @PropertyName() domainContent: string;
+  @PropertyName() domainData: string;
+  @PropertyName() domainSoftware: string;
+}
diff --git a/src/app/features/admin/components/routables/admin-home/admin-home.routable.ts b/src/app/features/admin/components/routables/admin-home/admin-home.routable.ts
index 3a62de645cdf2efbdbbea3a5972c80d4749c0c70..1e20a0f9613c5dd697dfc91d591095a236de4e2b 100644
--- a/src/app/features/admin/components/routables/admin-home/admin-home.routable.ts
+++ b/src/app/features/admin/components/routables/admin-home/admin-home.routable.ts
@@ -20,6 +20,12 @@ export class AdminHomeRoutable extends SharedAbstractPresentational {
       subtitleToTranslate: TRANSLATE("admin.submissionPolicy.home.subtitle"),
       path: RoutesEnum.adminSubmissionPolicy,
     },
+    {
+      avatarIcon: "arrow-alt-circle-down",
+      titleToTranslate: TRANSLATE("admin.license.home.title"),
+      subtitleToTranslate: TRANSLATE("admin.license.home.subtitle"),
+      path: RoutesEnum.adminLicense,
+    },
     {
       avatarIcon: "arrow-alt-circle-down",
       titleToTranslate: TRANSLATE("admin.preservationPolicy.home.title"),
diff --git a/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.html b/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.html
new file mode 100644
index 0000000000000000000000000000000000000000..7cdc861778d8a3a2d7ca7225f8a4e99ee2c0f52a
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.html
@@ -0,0 +1,3 @@
+<dlcm-admin-license-form #formPresentational
+                         (submitChange)="create($event)"
+></dlcm-admin-license-form>
diff --git a/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.ts b/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.ts
new file mode 100644
index 0000000000000000000000000000000000000000..89c65db76a0a23bfc531f8bd501fcc33b49a01ac
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-create/admin-license-create.routable.ts
@@ -0,0 +1,29 @@
+import {ChangeDetectionStrategy, Component, OnInit, ViewChild} from "@angular/core";
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {AdminLicenseStateModel} from "@app/features/admin/stores/license/admin-license.state";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractFormPresentational} from "@app/shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
+import {SharedAbstractCreateRoutable} from "@app/shared/components/routables/shared-abstract-create/shared-abstract-create.routable";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {OrgUnitAction} from "@app/shared/stores/organizational-unit/organizational-unit.action";
+import {Store} from "@ngxs/store";
+
+@Component({
+  selector: "dlcm-admin-license-create-routable",
+  templateUrl: "./admin-license-create.routable.html",
+  styleUrls: ["../../../../../shared/components/routables/shared-abstract-create/shared-abstract-create.routable.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseCreateRoutable extends SharedAbstractCreateRoutable<Licenses, AdminLicenseStateModel> implements OnInit {
+  @ViewChild("formPresentational", {static: false})
+  readonly formPresentational: SharedAbstractFormPresentational<Licenses>;
+
+  constructor(protected store: Store) {
+    super(store, LocalStateEnum.admin_license, adminLicenseActionNameSpace, LocalStateEnum.admin);
+  }
+
+  ngOnInit(): void {
+    super.ngOnInit();
+    this.store.dispatch(new OrgUnitAction.GetAll());
+  }
+}
diff --git a/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.html b/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.html
new file mode 100644
index 0000000000000000000000000000000000000000..24f55ebd3f5d984ac666fe8be4ca8f4b39097135
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.html
@@ -0,0 +1,25 @@
+<div class="button-toolbar">
+  <button mat-flat-button
+          color="primary"
+          (click)="edit()">
+    {{KEY_EDIT_BUTTON | translate}}
+  </button>
+  <button mat-flat-button
+          color="accent"
+          [disabled]="!(currentObs| async)"
+          (click)="delete()">
+    {{KEY_DELETE_BUTTON | translate}}
+  </button>
+</div>
+
+<div class="wrapper">
+  <div class="spinner-wrapper" *ngIf="isLoadingObs | async">
+    <mat-spinner></mat-spinner>
+  </div>
+
+  <dlcm-admin-license-form *ngIf="(currentObs| async) != null"
+                                     [model]="currentObs| async"
+                                     [readonly]="true"
+  ></dlcm-admin-license-form>
+
+</div>
diff --git a/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.ts b/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.ts
new file mode 100644
index 0000000000000000000000000000000000000000..64f20f146373e01f1534599547b640a5c191316d
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-detail/admin-license-detail.routable.ts
@@ -0,0 +1,31 @@
+import {ChangeDetectionStrategy, Component} from "@angular/core";
+import {MatDialog} from "@angular/material";
+import {ActivatedRoute} from "@angular/router";
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {AdminLicenseStateModel} from "@app/features/admin/stores/license/admin-license.state";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractDetailRoutable} from "@app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {Store} from "@ngxs/store";
+import {TRANSLATE} from "solidify-frontend";
+
+@Component({
+  selector: "dlcm-admin-license-detail-routable",
+  templateUrl: "./admin-license-detail.routable.html",
+  styleUrls: ["../../../../../shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseDetailRoutable extends SharedAbstractDetailRoutable<Licenses, AdminLicenseStateModel> {
+  readonly KEY_PARAM_NAME: string = "name";
+  readonly KEY_DELETE_BUTTON: string = TRANSLATE("admin.license.button.delete");
+  readonly KEY_EDIT_BUTTON: string = TRANSLATE("admin.license.button.edit");
+
+  constructor(protected store: Store,
+              protected route: ActivatedRoute,
+              public dialog: MatDialog) {
+    super(store, route, dialog, LocalStateEnum.admin_license, adminLicenseActionNameSpace, LocalStateEnum.admin);
+  }
+
+  getSubResourceWithParentId(id: string): void {
+  }
+}
diff --git a/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.html b/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.html
new file mode 100644
index 0000000000000000000000000000000000000000..57dc9253632ea41129244f7c0084efc2f85b817f
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.html
@@ -0,0 +1,8 @@
+<mat-spinner *ngIf="(isLoadingObs | async)"></mat-spinner>
+
+<div class="tab-content">
+  <dlcm-admin-license-form *ngIf="(currentObs | async)"
+                                     [model]="currentObs | async"
+                                     (submitChange)="update($event)"
+  ></dlcm-admin-license-form>
+</div>
diff --git a/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.ts b/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f6c1245882f74a73a25e03eadcaa947c01baf14c
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-edit/admin-license-edit.routable.ts
@@ -0,0 +1,30 @@
+import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core";
+import {ActivatedRoute} from "@angular/router";
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {AdminLicenseStateModel} from "@app/features/admin/stores/license/admin-license.state";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractEditRoutable} from "@app/shared/components/routables/shared-abstract-edit/shared-abstract-edit.routable";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {OrgUnitAction} from "@app/shared/stores/organizational-unit/organizational-unit.action";
+import {Store} from "@ngxs/store";
+
+@Component({
+  selector: "dlcm-admin-license-edit-routable",
+  templateUrl: "./admin-license-edit.routable.html",
+  styleUrls: ["../../../../../shared/components/routables/shared-abstract-edit/shared-abstract-edit.routable.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseEditRoutable extends SharedAbstractEditRoutable<Licenses, AdminLicenseStateModel> implements OnInit {
+  constructor(protected store: Store,
+              protected route: ActivatedRoute) {
+    super(store, route, LocalStateEnum.admin_license, adminLicenseActionNameSpace, LocalStateEnum.admin);
+  }
+
+  ngOnInit(): void {
+    super.ngOnInit();
+    this.store.dispatch(new OrgUnitAction.GetAll());
+  }
+
+  getSubResourceWithParentId(id: string): void {
+  }
+}
diff --git a/src/app/features/admin/components/routables/admin-license-list/admin-license-list.routable.ts b/src/app/features/admin/components/routables/admin-license-list/admin-license-list.routable.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2b34cb91ac3824eb77d3491cd54fcdbd5f6eaaeb
--- /dev/null
+++ b/src/app/features/admin/components/routables/admin-license-list/admin-license-list.routable.ts
@@ -0,0 +1,37 @@
+import {ChangeDetectionStrategy, Component} from "@angular/core";
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {AdminLicenseStateModel} from "@app/features/admin/stores/license/admin-license.state";
+import {Licenses} from "@app/generated-api";
+import {SharedAbstractListRoutable} from "@app/shared/components/routables/shared-abstract-list/shared-abstract-list.routable";
+import {FieldTypeEnum} from "@app/shared/enums/field-type.enum";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {Store} from "@ngxs/store";
+import {TRANSLATE} from "solidify-frontend";
+
+@Component({
+  selector: "dlcm-admin-license-list-routable",
+  templateUrl: "../../../../../shared/components/routables/shared-abstract-list/shared-abstract-list.routable.html",
+  styleUrls: ["../../../../../shared/components/routables/shared-abstract-list/shared-abstract-list.routable.scss"],
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class AdminLicenseListRoutable extends SharedAbstractListRoutable<Licenses, AdminLicenseStateModel> {
+  readonly KEY_CREATE_BUTTON: string = TRANSLATE("admin.license.button.new");
+  readonly KEY_REFRESH_BUTTON: string = TRANSLATE("admin.license.button.refresh");
+
+  constructor(protected store: Store) {
+    super(store, LocalStateEnum.admin_license, adminLicenseActionNameSpace, LocalStateEnum.admin);
+  }
+
+  defineColumns(): void {
+    this.columns = [
+      {
+        field: "title",
+        header: TRANSLATE("admin.license.table.header.name"),
+        type: FieldTypeEnum.string,
+        order: 0,
+        isFilterable: true,
+        isSortable: true,
+      },
+    ];
+  }
+}
diff --git a/src/app/features/admin/stores/admin.state.ts b/src/app/features/admin/stores/admin.state.ts
index bf2336baae47edc4a6ff95e670de973ea7c61a3d..d6e4992961e16bd9009327f43812cecbb39af5de 100644
--- a/src/app/features/admin/stores/admin.state.ts
+++ b/src/app/features/admin/stores/admin.state.ts
@@ -1,3 +1,4 @@
+import {AdminLicenseState} from "@app/features/admin/stores/license/admin-license.state";
 import {
   AdminSubmissionPolicyState,
   AdminSubmissionPolicyStateModel,
@@ -24,7 +25,8 @@ export interface AdminStateModel extends BaseState {
   },
   children: [
     AdminSubmissionPolicyState,
-    AdminPreservationPolicyState
+    AdminPreservationPolicyState,
+    AdminLicenseState,
   ],
 })
 export class AdminState {
diff --git a/src/app/features/admin/stores/license/admin-license.action.ts b/src/app/features/admin/stores/license/admin-license.action.ts
new file mode 100644
index 0000000000000000000000000000000000000000..637ac7c485613b7bc0c42353b94b9c2b37fe8b9f
--- /dev/null
+++ b/src/app/features/admin/stores/license/admin-license.action.ts
@@ -0,0 +1,86 @@
+import {Licenses} from "@app/generated-api";
+import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
+import {ResourceAction, ResourceNameSpace, TypeDefaultAction} from "solidify-frontend";
+
+const state = LocalStateEnum.admin_license;
+
+export namespace AdminLicenseAction {
+  @TypeDefaultAction(state)
+  export class LoadResource extends ResourceAction.LoadResource {
+  }
+
+  @TypeDefaultAction(state)
+  export class LoadResourceSuccess extends ResourceAction.LoadResourceSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class LoadResourceFail extends ResourceAction.LoadResourceFail {
+  }
+
+  @TypeDefaultAction(state)
+  export class ChangeQueryParameters extends ResourceAction.ChangeQueryParameters {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAll extends ResourceAction.GetAll {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllSuccess extends ResourceAction.GetAllSuccess<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetAllFail extends ResourceAction.GetAllFail<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetById extends ResourceAction.GetById {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdSuccess extends ResourceAction.GetByIdSuccess<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class GetByIdFail extends ResourceAction.GetByIdFail<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class Create extends ResourceAction.Create<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateSuccess extends ResourceAction.CreateSuccess<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class CreateFail extends ResourceAction.CreateFail<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class Update extends ResourceAction.Update<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateSuccess extends ResourceAction.UpdateSuccess<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class UpdateFail extends ResourceAction.UpdateFail<Licenses> {
+  }
+
+  @TypeDefaultAction(state)
+  export class Delete extends ResourceAction.Delete {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteSuccess extends ResourceAction.DeleteSuccess {
+  }
+
+  @TypeDefaultAction(state)
+  export class DeleteFail extends ResourceAction.DeleteFail {
+  }
+
+}
+
+export const adminLicenseActionNameSpace: ResourceNameSpace = AdminLicenseAction;
diff --git a/src/app/features/admin/stores/license/admin-license.state.ts b/src/app/features/admin/stores/license/admin-license.state.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e2108da7f80677d3b889457a0b4ad0a14f0a36d8
--- /dev/null
+++ b/src/app/features/admin/stores/license/admin-license.state.ts
@@ -0,0 +1,48 @@
+import {adminLicenseActionNameSpace} from "@app/features/admin/stores/license/admin-license.action";
+import {Licenses} from "@app/generated-api";
+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 {RoutesEnum} from "@app/shared/enums/routes.enum";
+import {Actions, State, Store} from "@ngxs/store";
+import {
+  ApiService,
+  defaultResourceStateInitValue, NotificationService, ResourceApiEnum, ResourceNameSpace,
+  ResourceState,
+  ResourceStateModel
+} from "solidify-frontend";
+import {environment} from "../../../../../environments/environment";
+
+export interface AdminLicenseStateModel extends ResourceStateModel<Licenses> {
+}
+
+@State<AdminLicenseStateModel>({
+  name: LocalStateEnum.admin_license,
+  defaults: {
+    ...defaultResourceStateInitValue,
+  },
+})
+export class AdminLicenseState extends ResourceState<Licenses> {
+  constructor(protected apiService: ApiService,
+              protected store: Store,
+              protected notificationService: NotificationService,
+              protected actions$: Actions) {
+    super(apiService, store, notificationService, actions$, RoutesEnum.adminLicense, environment);
+  }
+
+  defineState(): LocalStateEnum {
+    return LocalStateEnum.admin_license;
+  }
+
+  defineResourceNameSpace(): ResourceNameSpace {
+    return adminLicenseActionNameSpace;
+  }
+
+  defineSubResource(): ApiResourceNameEnum[] {
+    return [];
+  }
+
+  defineUrlResource(): ResourceApiEnum {
+    return AdminResourceApiEnum.licenses;
+  }
+}
diff --git a/src/app/shared/enums/license.enums.ts b/src/app/shared/enums/license.enums.ts
new file mode 100644
index 0000000000000000000000000000000000000000..608ad0d38de5e20455a0c4b821184aa98328ecc2
--- /dev/null
+++ b/src/app/shared/enums/license.enums.ts
@@ -0,0 +1,14 @@
+export enum odConformanceEnum {
+  empty = "",
+  approved = "approved",
+  rejected = "rejected",
+  not_reviewed = "not reviewed",
+}
+
+export enum osdConformanceEnum {
+  empty = "",
+  approved = "approved",
+  rejected = "rejected",
+  not_reviewed = "not reviewed",
+}
+
diff --git a/src/app/shared/enums/local-state.enum.ts b/src/app/shared/enums/local-state.enum.ts
index b9fb8d813d574b414a9d60d9143c44f9f557efa7..d0e3686ebca561ed7ea9ab78c4490abd6b66ff11 100644
--- a/src/app/shared/enums/local-state.enum.ts
+++ b/src/app/shared/enums/local-state.enum.ts
@@ -14,7 +14,8 @@ export enum LocalStateEnum {
   preservationPolicy = "preservationPolicy",
   submissionPolicy = "submissionPolicy",
   admin = "admin",
-  admin_submissionPolicy = "admin_submissionPolicy",
   admin_preservationPolicy = "admin_preservationPolicy",
+  admin_submissionPolicy = "admin_submissionPolicy",
+  admin_license = "admin_license",
 
 }
diff --git a/src/app/shared/enums/routes.enum.ts b/src/app/shared/enums/routes.enum.ts
index fb7e2c5e1de6e5b3800e83000f4c648c4abde88d..64f4c2ff17a46ee039f8e826df1745ebc87c9d20 100644
--- a/src/app/shared/enums/routes.enum.ts
+++ b/src/app/shared/enums/routes.enum.ts
@@ -39,6 +39,10 @@ export enum AdminRoutesEnum {
   preservationPolicyDetail = "detail",
   preservationPolicyCreate = "create",
   preservationPolicyEdit = "edit",
+  license = "license",
+  licenseCreate = "create",
+  licenseEdit = "edit",
+  licenseDetail = "detail",
 }
 
 export class RoutesEnum implements RoutesEnum {
@@ -64,4 +68,8 @@ export class RoutesEnum implements RoutesEnum {
   static adminPreservationPolicyCreate: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.preservationPolicy + urlSeparator + AdminRoutesEnum.preservationPolicyCreate;
   static adminPreservationPolicyDetail: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.preservationPolicy + urlSeparator + AdminRoutesEnum.preservationPolicyDetail;
   static adminPreservationPolicyEdit: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.preservationPolicy + urlSeparator + AdminRoutesEnum.preservationPolicyEdit;
+  static adminLicense: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.license;
+  static adminLicenseCreate: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.license + urlSeparator + AdminRoutesEnum.licenseCreate;
+  static adminLicenseDetail: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.license + urlSeparator + AdminRoutesEnum.licenseDetail;
+  static adminLicenseEdit: string = AppRoutesEnum.admin + urlSeparator + AdminRoutesEnum.license + urlSeparator + AdminRoutesEnum.licenseEdit;
 }
diff --git a/src/app/shared/utils/store-dialog.util.ts b/src/app/shared/utils/store-dialog.util.ts
index 82ebb933d6e47691d2cce7c605d958bfaa33b2d2..a7626eed0d0175ca070589e98b87950663c46d53 100644
--- a/src/app/shared/utils/store-dialog.util.ts
+++ b/src/app/shared/utils/store-dialog.util.ts
@@ -1,13 +1,14 @@
 import {Component} from "@angular/core";
+import {AdminLicenseDeleteDialog} from "@app/features/admin/components/dialogs/admin-license-delete/admin-license-delete.dialog";
+import {AdminPreservationPolicyDeleteDialog} from "@app/features/admin/components/dialogs/admin-preservation-policy-delete/admin-preservation-policy-delete.dialog";
 import {AdminSubmissionPolicyDeleteDialog} from "@app/features/admin/components/dialogs/admin-submission-policy-delete/admin-submission-policy-delete.dialog";
 import {DepositDeleteDialog as DepositDeleteDialog} from "@app/features/deposit/components/dialogs/deposit-delete/deposit-delete.dialog";
 import {OrgunitDeleteDialog as OrgUnitDeleteDialog} from "@app/features/organizational-unit/components/dialogs/orgunit-delete/orgunit-delete.dialog";
 import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
 import {StringUtil} from "solidify-frontend";
-import {AdminPreservationPolicyDeleteDialog} from "@app/features/admin/components/dialogs/admin-preservation-policy-delete/admin-preservation-policy-delete.dialog";
 
 export class StoreDialogUtil {
-  private static readonly messageNotFound: string = "There is no dialog declared for the state '{0}'.";
+  private static readonly messageNotFound: string = "There is no dialog for action '{0}' declared for the state '{1}'. Please add if statement into StoreDialogUtil static class.";
 
   static delete(state: LocalStateEnum): Component {
     if (state === LocalStateEnum.organizationalUnit) {
@@ -22,6 +23,9 @@ export class StoreDialogUtil {
     if (state === LocalStateEnum.admin_preservationPolicy) {
       return AdminPreservationPolicyDeleteDialog as Component;
     }
-    throw Error(StringUtil.format(StoreDialogUtil.messageNotFound, state));
+    if (state === LocalStateEnum.admin_license) {
+      return AdminLicenseDeleteDialog as Component;
+    }
+    throw Error(StringUtil.format(StoreDialogUtil.messageNotFound, "Delete", state));
   }
 }
diff --git a/src/app/shared/utils/store-route-local.util.ts b/src/app/shared/utils/store-route-local.util.ts
index d975f1dfc499717dc6aa97888f93044e9d363e46..4cb1ebe5105255fb937cf6206e2163db6889b1ed 100644
--- a/src/app/shared/utils/store-route-local.util.ts
+++ b/src/app/shared/utils/store-route-local.util.ts
@@ -3,7 +3,7 @@ import {StringUtil} from "solidify-frontend";
 import {LocalStateEnum} from "../enums/local-state.enum";
 
 export class StoreRouteLocalUtil {
-  private static readonly messageNotFound: string = "There is no route declared for the state '{0}'.";
+  private static readonly messageNotFound: string = "There is no route declared for '{0}' for the state '{1}'. Please add if statement into StoreRouteLocalUtil static class to manage this state.";
 
   static getDetailRoute(state: LocalStateEnum): RoutesEnum {
     if (state === LocalStateEnum.organizationalUnit) {
@@ -18,7 +18,10 @@ export class StoreRouteLocalUtil {
     if (state === LocalStateEnum.admin_preservationPolicy) {
       return RoutesEnum.adminPreservationPolicyDetail;
     }
-    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, state));
+    if (state === LocalStateEnum.admin_license) {
+      return RoutesEnum.adminLicenseDetail;
+    }
+    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, "Detail", state));
   }
 
   static getCreateRoute(state: LocalStateEnum): RoutesEnum {
@@ -34,7 +37,10 @@ export class StoreRouteLocalUtil {
     if (state === LocalStateEnum.admin_preservationPolicy) {
       return RoutesEnum.adminPreservationPolicyCreate;
     }
-    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, state));
+    if (state === LocalStateEnum.admin_license) {
+      return RoutesEnum.adminLicenseCreate;
+    }
+    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, "Create", state));
   }
 
   static getRootRoute(state: LocalStateEnum): RoutesEnum {
@@ -50,7 +56,10 @@ export class StoreRouteLocalUtil {
     if (state === LocalStateEnum.admin_preservationPolicy) {
       return RoutesEnum.adminPreservationPolicy;
     }
-    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, state));
+    if (state === LocalStateEnum.admin_license) {
+      return RoutesEnum.adminLicense;
+    }
+    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, "Root", state));
   }
 
   static getEditRoute(state: LocalStateEnum): RoutesEnum {
@@ -66,6 +75,9 @@ export class StoreRouteLocalUtil {
     if (state === LocalStateEnum.admin_preservationPolicy) {
       return RoutesEnum.adminPreservationPolicyEdit;
     }
-    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, state));
+    if (state === LocalStateEnum.admin_license) {
+      return RoutesEnum.adminLicenseEdit;
+    }
+    throw Error(StringUtil.format(StoreRouteLocalUtil.messageNotFound, "Edit", state));
   }
 }
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 7089871249fa8c213b998f2f34f31167aaf64413..a0f9af65cde2f21b1f7bc28f8263c3cebf05487d 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -1,70 +1,110 @@
 {
-  "access": {
-    "organizationalUnitNotFound": "Unable to get data",
-    "search": {
-      "scope": {
-        "all": "All",
-        "label": "Search filter",
-        "private": "Private",
-        "public": "Public"
-      }
-    },
-    "table": {
-      "header": {
-        "accessLevel": "Access Level",
-        "organizationalUnit": "Organizational Unit",
-        "title": "Title",
-        "yearPublicationDate": "Publication Year"
-      }
-    }
-  },
-  "admin": {
-    "home": {
-      "button": {
-        "edit": "Edit"
-      },
-      "title": "Administration"
-    },
-    "submissionPolicy": {
-      "button": {
-        "delete": "Delete",
-        "edit": "Edit",
-        "new": "Create new submission policy",
-        "refresh": "Refresh"
-      },
-      "dialog": {
-        "delete": {
-          "cancel": "Cancel",
-          "confirm": "Yes",
-          "message": "Are you sure you want to delete the submission policy '{{name}}'?",
-          "title": "Confirm deletion"
-        }
-      },
-      "form": {
-        "name": "Name",
-        "submissionApproval": "Submission Approval",
-        "submit": "Submit",
-        "timeToKeep": "Time To Keep"
-      },
-      "home": {
-        "subtitle": "Describe the submission policy for a deposit",
-        "title": "Submission Policy"
-      },
-      "table": {
-        "header": {
-          "creation": {
-            "when": "Created"
-          },
-          "lastUpdate": {
-            "when": "Last updated"
-          },
-          "name": "Name",
-          "submissionApproval": "Submission Approval",
-          "timeToKeep": "Time To Keep"
-        }
-      }
-    },
-    "preservationPolicy": {
+	"access": {
+		"organizationalUnitNotFound": "Unable to get data",
+		"search": {
+			"scope": {
+				"all": "All",
+				"label": "Search filter",
+				"private": "Private",
+				"public": "Public"
+			}
+		},
+		"table": {
+			"header": {
+				"accessLevel": "Access Level",
+				"organizationalUnit": "Organizational Unit",
+				"title": "Title",
+				"yearPublicationDate": "Publication Year"
+			}
+		}
+	},
+	"admin": {
+		"home": {
+			"button": {
+				"edit": "Edit"
+			},
+			"title": "Administration"
+		},
+		"license": {
+			"button": {
+				"delete": "Delete",
+				"edit": "Edit",
+				"new": "Create new license",
+				"refresh": "Refresh"
+			},
+			"dialog": {
+				"delete": {
+					"cancel": "Cancel",
+					"confirm": "Confirm",
+					"message": "Are you sure you want to delete this license?",
+					"title": "Confirm Deletion"
+				}
+			},
+			"form": {
+				"domainContent": "Domain Content",
+				"domainData": "Domain Data",
+				"domainSoftware": "Domain Software",
+				"family": "Family",
+				"isGeneric": "Is generic",
+				"maintainer": "Maintainer",
+				"odConformance": "Od Conformance",
+				"openLicenseId": "Open license ID",
+				"osdConformance": "Osd conformance",
+				"status": "Status",
+				"submit": "Submit",
+				"title": "Title",
+				"url": "URL"
+			},
+			"home": {
+				"subtitle": "",
+				"title": "License"
+			},
+			"table": {
+				"header": {
+					"name": "Licenses"
+				}
+			}
+		},
+		"submissionPolicy": {
+			"button": {
+				"delete": "Delete",
+				"edit": "Edit",
+				"new": "Create new submission policy",
+				"refresh": "Refresh"
+			},
+			"dialog": {
+				"delete": {
+					"cancel": "Cancel",
+					"confirm": "Yes",
+					"message": "Are you sure you want to delete the submission policy '{{name}}'?",
+					"title": "Confirm deletion"
+				}
+			},
+			"form": {
+				"name": "Name",
+				"submissionApproval": "Submission Approval",
+				"submit": "Submit",
+				"timeToKeep": "Time To Keep"
+			},
+			"home": {
+				"subtitle": "Describe the submission policy for a deposit",
+				"title": "Submission Policy"
+			},
+			"table": {
+				"header": {
+					"creation": {
+						"when": "Created"
+					},
+					"lastUpdate": {
+						"when": "Last updated"
+					},
+					"name": "Name",
+					"submissionApproval": "Submission Approval",
+					"timeToKeep": "Time To Keep"
+				}
+			}
+		},
+	"preservationPolicy": {
       "button": {
         "delete": "Delete",
         "edit": "Edit",
@@ -102,247 +142,251 @@
           "retention": "Retention"
         }
       }
-    }
-  },
-  "app": {
-    "toolbar": {
-      "admin": "Administration",
-      "deposit": "Deposits",
-      "home": "Home",
-      "login": "Log in",
-      "logout": "Log out",
-      "organizationalUnit": "Organizational Units"
-    }
-  },
-  "breadcrumb": {
-    "access": {
-      "detail": "Detail",
-      "root": "Archive",
-      "search": "Search"
-    },
-    "admin": {
-      "root": "Admin",
-      "submissionPolicy": {
-        "create": "Create submission policy",
-        "detail": "Detail submission policy",
-        "edit": "Edit submission policy",
-        "list": "List submission policy"
-      },
-      "preservationPolicy" : {
+    }},
+	"app": {
+		"toolbar": {
+			"admin": "Administration",
+			"deposit": "Deposits",
+			"home": "Home",
+			"login": "Log in",
+			"logout": "Log out",
+			"organizationalUnit": "Organizational Units"
+		}
+	},
+	"breadcrumb": {
+		"access": {
+			"detail": "Detail",
+			"root": "Archive",
+			"search": "Search"
+		},
+		"admin": {
+			"license": {
+				"create": "",
+				"detail": "",
+				"edit": "",
+				"list": ""
+			},
+			"root": "Admin",
+			"submissionPolicy": {
+				"create": "Create submission policy",
+				"detail": "Detail submission policy",
+				"edit": "Edit submission policy",
+				"list": "List submission policy"
+			},
+		"preservationPolicy" : {
         "create": "Create preservation policy",
         "detail": "Detail preservation policy",
         "edit": "Edit preservation policy",
         "list": "List preservation policy"
-      }
-    },
-    "deposit": {
-      "create": "Create",
-      "detail": "Detail",
-      "edit": "Edit",
-      "list": "List",
-      "root": "Deposits"
-    },
-    "home": "Home",
-    "organizationalUnit": {
-      "create": "Create",
-      "detail": "Detail",
-      "edit": "Edit",
-      "list": "List",
-      "root": "Organizational Units"
-    }
-  },
-  "deposit": {
-    "accessLevel": "Access Level",
-    "authors": "Authors",
-    "collectionBegin": "Data Collection Start Date",
-    "collectionEnd": "Data Collection End Date",
-    "delete": "Delete",
-    "description": "Description",
-    "dialog": {
-      "delete": {
-        "cancel": "Cancel",
-        "confirm": "Yes",
-        "message": "Are you sure you want to delete the deposit '{{name}}'?",
-        "title": "Confirm deletion"
-      }
-    },
-    "edit": "Edit",
-    "file": {
-      "button": {
-        "upload": "Upload files"
-      },
-      "detail": {
-        "data": {
-          "available": "Available",
-          "category": "Category",
-          "checksums": "Checksums",
-          "complianceLevel": "Compliance level",
-          "createDate": "Creation date",
-          "fileFormat": "File format",
-          "fileSize": "File size",
-          "initialPath": "Initial path",
-          "smartSize": "Smart size",
-          "status": "Status",
-          "statusMessage": "Status message",
-          "type": "Type",
-          "virusCheck": "Virus check"
-        }
-      },
-      "details": {
-        "close": "Close",
-        "title": "Details of file \"{{name}}\""
-      },
-      "inProgress": {
-        "noFile": "There is currently no file upload in progress."
-      },
-      "modal": {
-        "button": {
-          "addFile": "Add file to upload list",
-          "close": "Cancel",
-          "confirmUpload": "Confirm upload"
-        },
-        "form": {
-          "dataCategory": "Data category",
-          "dataType": "Data type",
-          "subDirectory": "Sub directory"
-        },
-        "title": {
-          "fileToUpload": "Files",
-          "main": "Upload files",
-          "metadatas": "Metadatas"
-        }
-      },
-      "title": {
-        "filesOfDeposit": "Files in deposit",
-        "inProgressUpload": "In progress upload"
-      },
-      "tree": {
-        "delete": "Delete",
-        "details": "Details",
-        "errorRetry": "The file is in error. Click to resume the process !",
-        "label": "List of files :",
-        "noFile": "There is currently no file for this deposit",
+      }},
+		"deposit": {
+			"create": "Create",
+			"detail": "Detail",
+			"edit": "Edit",
+			"list": "List",
+			"root": "Deposits"
+		},
+		"home": "Home",
+		"organizationalUnit": {
+			"create": "Create",
+			"detail": "Detail",
+			"edit": "Edit",
+			"list": "List",
+			"root": "Organizational Units"
+		}
+	},
+	"deposit": {
+		"accessLevel": "Access Level",
+		"authors": "Authors",
+		"collectionBegin": "Data Collection Start Date",
+		"collectionEnd": "Data Collection End Date",
+		"delete": "Delete",
+		"description": "Description",
+		"dialog": {
+			"delete": {
+				"cancel": "Cancel",
+				"confirm": "Yes",
+				"message": "Are you sure you want to delete the deposit '{{name}}'?",
+				"title": "Confirm deletion"
+			}
+		},
+		"edit": "Edit",
+		"file": {
+			"button": {
+				"upload": "Upload files"
+			},
+			"detail": {
+				"data": {
+					"available": "Available",
+					"category": "Category",
+					"checksums": "Checksums",
+					"complianceLevel": "Compliance level",
+					"createDate": "Creation date",
+					"fileFormat": "File format",
+					"fileSize": "File size",
+					"initialPath": "Initial path",
+					"smartSize": "Smart size",
+					"status": "Status",
+					"statusMessage": "Status message",
+					"type": "Type",
+					"virusCheck": "Virus check"
+				}
+			},
+			"details": {
+				"close": "Close",
+				"title": "Details of file \"{{name}}\""
+			},
+			"inProgress": {
+				"noFile": "There is currently no file upload in progress."
+			},
+			"modal": {
+				"button": {
+					"addFile": "Add file to upload list",
+					"close": "Cancel",
+					"confirmUpload": "Confirm upload"
+				},
+				"form": {
+					"dataCategory": "Data category",
+					"dataType": "Data type",
+					"subDirectory": "Sub directory"
+				},
+				"title": {
+					"fileToUpload": "Files",
+					"main": "Upload files",
+					"metadatas": "Metadatas"
+				}
+			},
+			"title": {
+				"filesOfDeposit": "Files in deposit",
+				"inProgressUpload": "In progress upload"
+			},
+			"tree": {
+				"delete": "Delete",
+				"details": "Details",
+				"errorRetry": "The file is in error. Click to resume the process !",
+				"label": "List of files :",
+				"noFile": "There is currently no file for this deposit",
         "refresh": "Refresh"
-      },
-      "upload": {
-        "cancel": "Cancel",
-        "notification": {
-          "error": "There was a problem with the upload of the file",
-          "info": {
-            "canceled": "The file upload has been cancelled with success"
-          },
-          "success": "File uploaded with success"
-        },
-        "retry": "Retry"
-      }
-    },
-    "hasEmbargo": "The deposit has an embargo",
-    "language": "Language",
-    "license": "License",
-    "new": "Create deposit",
-    "notification": {
+			},
+			"upload": {
+				"cancel": "Cancel",
+				"notification": {
+					"error": "There was a problem with the upload of the file",
+					"info": {
+						"canceled": "The file upload has been cancelled with success"
+					},
+					"success": "File uploaded with success"
+				},
+				"retry": "Retry"
+			}
+		},
+		"hasEmbargo": "The deposit has an embargo",
+
+		"language": "Language",
+		"license": "License",
+		"new": "Create deposit","notification": {
       "submit": {
         "fail": "There was an error when submitting the deposit",
         "success": "Deposit submitted"
       }
     },
-    "organizationUnit": "Organizational Unit",
-    "preservationPolicy": "Preservation Policy",
-    "publicationDate": "Publication Date",
-    "refresh": "Refresh",
-    "submissionPolicy": "Submission Policy",
-    "submit": "Submit",
-    "tab": {
-      "datafiles": "Data Files",
-      "details": "Details"
-    },
-    "table": {
-      "header": {
-        "creation": {
-          "when": "Created"
-        },
-        "lastUpdate": {
-          "when": "Last updated"
-        },
-        "publicationDate": "Publication date",
-        "status": "Status",
-        "title": "Title"
-      }
-    },
-    "title": "Title"
-  },
-  "error": {
-    "upload": {
-      "duplicateDataFiles": "You can't upload a file with the same name in the same directory"
-    }
-  },
-  "homePage": {
-    "archive": {
-      "detail": {
-        "DOI": "DOI",
-        "accessLevel": "Access level",
-        "authors": "Authors",
-        "description": "Description",
-        "licenses": "Licenses",
-        "orgUnit": "Organizational unit",
-        "publicationYear": "Publication year",
-        "title": "Title"
-      }
-    }
-  },
-  "notification": {
-    "resource": {
-      "create": "Resource created successfully",
-      "delete": "Resource deleted successfully",
-      "update": "Resource updated successfully"
-    }
-  },
-  "organizationalUnit": {
-    "closingDate": "Closing Date",
-    "delete": "Delete",
-    "description": "Description",
-    "dialog": {
-      "delete": {
-        "cancel": "Cancel",
-        "confirm": "Yes",
-        "message": "Are you sure you want to delete the organizational unit '{{name}}'?",
-        "title": "Confirm deletion"
-      }
-    },
-    "edit": "Edit",
-    "isEmpty": "Is Empty",
-    "name": "Name",
-    "new": "Create new organizational unit",
-    "open": "Open",
-    "openingDate": "Opening Date",
-    "refresh": "Refresh",
-    "submissionPolicy": "Submission policy",
-    "submit": "Submit",
-    "table": {
-      "header": {
-        "creation": {
-          "when": "Created"
-        },
-        "description": "Description",
-        "name": "Name"
-      }
-    }
-  },
-  "required": "This field is required",
-  "search": "Search",
-  "table": {
-    "nodata": "No data has been found",
-    "paginator": {
-      "firstPage": "First page",
-      "itemPerPage": "Items per page",
-      "lastPage": "Last page",
-      "nextPage": "Next page",
-      "ofLabel": "of",
-      "previousPage": "Previous page"
-    }
-  },
-  "tooltip": {
-    "other": "other",
-    "others": "others"
-  }
+		"organizationUnit": "Organizational Unit",
+		"preservationPolicy": "Preservation Policy",
+		"publicationDate": "Publication Date",
+		"refresh": "Refresh",
+		"submissionPolicy": "Submission Policy",
+		"submit": "Submit",
+		"tab": {
+			"datafiles": "Data Files",
+			"details": "Details"
+		},
+		"table": {
+			"header": {
+				"creation": {
+					"when": "Created"
+				},
+				"lastUpdate": {
+					"when": "Last updated"
+				},
+				"publicationDate": "Publication date",
+				"status": "Status",
+				"title": "Title"
+			}
+		},
+		"title": "Title"
+	},
+	"error": {
+		"upload": {
+			"duplicateDataFiles": "You can't upload a file with the same name in the same directory"
+		}
+	},
+	"homePage": {
+		"archive": {
+			"detail": {
+				"DOI": "DOI",
+				"accessLevel": "Access level",
+				"authors": "Authors",
+				"description": "Description",
+				"licenses": "Licenses",
+				"orgUnit": "Organizational unit",
+				"publicationYear": "Publication year",
+				"title": "Title"
+			}
+		}
+	},
+	"notification": {
+		"resource": {
+			"create": "Resource created successfully",
+			"delete": "Resource deleted successfully",
+			"update": "Resource updated successfully"
+		}
+	},
+	"organizationalUnit": {
+		"closingDate": "Closing Date",
+		"delete": "Delete",
+		"description": "Description",
+		"dialog": {
+			"delete": {
+				"cancel": "Cancel",
+				"confirm": "Yes",
+				"message": "Are you sure you want to delete the organizational unit '{{name}}'?",
+				"title": "Confirm deletion"
+			}
+		},
+		"edit": "Edit",
+		"isEmpty": "Is Empty",
+		"name": "Name",
+		"new": "Create new organizational unit",
+		"open": "Open",
+		"openingDate": "Opening Date",
+		"refresh": "Refresh",
+		"submissionPolicy": "Submission policy",
+		"submit": "Submit",
+		"table": {
+			"header": {
+				"creation": {
+					"when": "Created"
+				},
+				"description": "Description",
+				"name": "Name"
+			}
+		}
+	},
+	"required": "This field is required",
+	"search": "Search",
+	"table": {
+		"nodata": "No data has been found",
+		"paginator": {
+			"firstPage": "First page",
+			"itemPerPage": "Items per page",
+			"lastPage": "Last page",
+			"nextPage": "Next page",
+			"ofLabel": "of",
+			"previousPage": "Previous page"
+		}
+	},
+	"tooltip": {
+		"other": "other",
+		"others": "others"
+	}
 }
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 9fb0f23de85fdec87afe8331e5e0b621a9088faa..40acac24ab0977280e1e052377783083e19e9ebd 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -25,7 +25,47 @@
       },
       "title": "Administration"
     },
-    "submissionPolicy": {
+    "license": {
+			"button": {
+				"delete": "Delete",
+				"edit": "Edit",
+				"new": "Create new license",
+				"refresh": "Refresh"
+			},
+			"dialog": {
+				"delete": {
+					"cancel": "Cancel",
+					"confirm": "Confirm",
+					"message": "Are you sure you want to delete this license?",
+					"title": "Confirm Deletion"
+				}
+			},
+			"form": {
+				"domainContent": "Domain Content",
+				"domainData": "Domain Data",
+				"domainSoftware": "Domain Software",
+				"family": "Family",
+				"isGeneric": "Is generic",
+				"maintainer": "Maintainer",
+				"odConformance": "Od Conformance",
+				"openLicenseId": "Open license ID",
+				"osdConformance": "Osd conformance",
+				"status": "Status",
+				"submit": "Submit",
+				"title": "Title",
+				"url": "URL"
+			},
+			"home": {
+				"subtitle": "",
+				"title": "License"
+			},
+			"table": {
+				"header": {
+					"name": "Licenses"
+				}
+			}
+		},
+		"submissionPolicy": {
       "button": {
         "delete": "Delete",
         "edit": "Edit",
@@ -120,12 +160,18 @@
       "search": "Search"
     },
     "admin": {
-      "root": "Admin",
+      "license": {
+				"create": "Create license",
+				"detail": "License detail",
+				"edit": "Edit license",
+				"list": "List license"
+			},
+			"root": "Admin",
       "submissionPolicy": {
         "create": "Create submission policy",
         "detail": "Detail submission policy",
         "edit": "Edit submission policy",
-        "list": "List submission policy"
+        "list": "List Submission policy"
 			},
       "preservationPolicy" : {
         "create": "Create preservation policy",
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index d9bbfbb4fce40002ea8ace76a9608039a5def298..f738632f41ab325b08e2224baef75cc5ddc7dc0d 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -25,7 +25,47 @@
       },
       "title": "Administration"
     },
-    "submissionPolicy": {
+    "license": {
+			"button": {
+				"delete": "Supprimer",
+				"edit": "Modifier",
+				"new": "Créer licence",
+				"refresh": "Rafraichir"
+			},
+			"dialog": {
+				"delete": {
+					"cancel": "Annuler",
+					"confirm": "Oui",
+					"message": "Êtes-vous sûr de vouloir supprimer cette licence?",
+					"title": "Confirmer suppression"
+				}
+			},
+			"form": {
+				"domainContent": "Contenu du domaine",
+				"domainData": "Données de domaine",
+				"domainSoftware": "Logiciel de domaine",
+				"family": "Familles",
+				"isGeneric": "Est générique",
+				"maintainer": "Mainteneur",
+				"odConformance": "Confirmité od",
+				"openLicenseId": "Open licence ID",
+				"osdConformance": "Conformité osd",
+				"status": "Statut",
+				"submit": "Envoyer",
+				"title": "Titre",
+				"url": "URL"
+			},
+			"home": {
+				"subtitle": "",
+				"title": "Licence"
+			},
+			"table": {
+				"header": {
+					"name": "Licences"
+				}
+			}
+		},
+		"submissionPolicy": {
       "button": {
         "delete": "Supprimer",
         "edit": "Modifier",
@@ -37,7 +77,7 @@
           "cancel": "Annuler",
           "confirm": "Oui",
           "message": "Êtes-vous sûr de vouloir supprimer la politique de soumission '{{name}}'?",
-          "title": "Confirmer suppresion"
+          "title": "Confirmer suppression"
         }
       },
       "form": {
@@ -120,6 +160,12 @@
       "search": "Recherche"
     },
     "admin": {
+			"license": {
+				"create": "",
+				"detail": "",
+				"edit": "",
+				"list": ""
+			},
       "root": "Administration",
       "submissionPolicy": {
         "create": "Créer politique de soumission",
@@ -167,9 +213,9 @@
     "edit": "Modifier",
     "file": {
       "button": {
-        "upload": "Envoyer fichiers"
-      },
-      "detail": {
+				"upload": "Envoyer fichiers"
+			},
+			"detail": {
         "data": {
           "available": "Disponible",
           "category": "Catégorie",
@@ -191,29 +237,29 @@
         "title": "Détails du fichier \"{{name}}\""
       },
       "inProgress": {
-        "noFile": "Il n'y a pour l'instant aucun envoi de fichier en cours."
-      },
-      "modal": {
-        "button": {
-          "addFile": "Ajouter fichiers",
-          "close": "Fermer",
-          "confirmUpload": "Confirmer envoi"
-        },
-        "form": {
-          "dataCategory": "Catégorie de données",
-          "dataType": "Type de données",
-          "subDirectory": "Sous-dossier"
-        },
-        "title": {
-          "fileToUpload": "Fichier à envoyer",
-          "main": "Envoi de fichiers",
-          "metadatas": "Métadonnées"
-        }
-      },
-      "title": {
-        "filesOfDeposit": "Fichiers du dêpot",
-        "inProgressUpload": "Envoi en cours"
-      },
+				"noFile": "Il n'y a pour l'instant aucun envoi de fichier en cours."
+			},
+			"modal": {
+				"button": {
+					"addFile": "Ajouter fichiers",
+					"close": "Fermer",
+					"confirmUpload": "Confirmer envoi"
+				},
+				"form": {
+					"dataCategory": "Catégorie de données",
+					"dataType": "Type de données",
+					"subDirectory": "Sous-dossier"
+				},
+				"title": {
+					"fileToUpload": "Fichier à envoyer",
+					"main": "Envoi de fichiers",
+					"metadatas": "Métadonnées"
+				}
+			},
+			"title": {
+				"filesOfDeposit": "Fichiers du dêpot",
+				"inProgressUpload": "Envoi en cours"
+			},
       "tree": {
         "delete": "Supprimer",
         "details": "Détails",
@@ -223,16 +269,16 @@
         "refresh": "Rafraichir"
       },
       "upload": {
-        "cancel": "Annuler",
-        "notification": {
-          "error": "Il y a eu un problème avec l'envoi du fichier",
-          "info": {
-            "canceled": "L'envoi du fichier a été annulé avec succès"
-          },
-          "success": "Fichier envoyé avec succès"
-        },
-        "retry": "Réessayer"
-      }
+				"cancel": "Annuler",
+				"notification": {
+					"error": "Il y a eu un problème avec l'envoi du fichier",
+					"info": {
+						"canceled": "L'envoi du fichier a été annulé avec succès"
+					},
+					"success": "Fichier envoyé avec succès"
+				},
+				"retry": "Réessayer"
+			}
     },
     "hasEmbargo": "Le dépôt a un embargo",
     "language": "Langue",
@@ -268,11 +314,11 @@
       }
     },
     "title": "Titre"
-  },
-  "error": {
-    "upload": {
-      "duplicateDataFiles": "Vous ne pouvez pas uploader un fichier avec le même nom dans le même répertoire"
-    }
+	},
+	"error": {
+		"upload": {
+			"duplicateDataFiles": "Vous ne pouvez pas uploader un fichier avec le même nom dans le même répertoire"
+		}
   },
   "homePage": {
     "archive": {