diff --git a/angular.json b/angular.json
index d05d01cfb0cfee412ca4cae02b69b637841e6519..0252135a34e071d3f408ab75268d57a310aa6eaf 100755
--- a/angular.json
+++ b/angular.json
@@ -13,6 +13,7 @@
         "build": {
           "builder": "@angular-devkit/build-angular:browser",
           "options": {
+            "aot": true,
             "outputPath": "dist/",
             "index": "./src/frontend/core/index.html",
             "main": "./src/frontend/core/main.ts",
@@ -33,6 +34,12 @@
           },
           "configurations": {
             "production": {
+              "budgets": [
+                {
+                  "type": "anyComponentStyle",
+                  "maximumWarning": "1mb"
+                }
+              ],
               "fileReplacements": [
                 {
                   "replace": "./src/frontend/core/environments/environment.ts",
diff --git a/browserslist b/browserslist
new file mode 100644
index 0000000000000000000000000000000000000000..80848532e47d58cc7a4b618f600b438960f9f045
--- /dev/null
+++ b/browserslist
@@ -0,0 +1,12 @@
+# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
+# For additional information regarding the format and rule options, please see:
+# https://github.com/browserslist/browserslist#queries
+
+# You can see what browsers were selected by your queries by running:
+#   npx browserslist
+
+> 0.5%
+last 2 versions
+Firefox ESR
+not dead
+not IE 9-11 # For IE 9-11 support, remove 'not'.
\ No newline at end of file
diff --git a/package.json b/package.json
index 808f112f9618ae4328f9b3224ac4b7efd1736258..147a6669a63b388edc7836dccfc1cfcad70675d3 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
   "homepage": "https://labs.maarch.org/maarch/MaarchParapheur",
   "scripts": {
     "ng": "ng",
+    "postinstall": "ngcc",
     "dep-list": "npm list --depth=0",
     "check-update": "ncu",
     "upgrade": "ncu -u",
@@ -21,52 +22,52 @@
   "author": "Maarch",
   "license": "GPL-3.0",
   "dependencies": {
-    "core-js": "2.6.5",
-    "zone.js": "0.8.29"
+    "core-js": "3.6.4",
+    "tslib": "^1.11.1",
+    "zone.js": "~0.10.2"
   },
   "devDependencies": {
-    "@angular-devkit/build-angular": "^0.13.9",
-    "@angular/animations": "^7.2.16",
-    "@angular/cdk": "^7.3.7",
-    "@angular/cli": "^7.3.9",
-    "@angular/common": "^7.2.16",
-    "@angular/compiler": "^7.2.16",
-    "@angular/compiler-cli": "^7.2.16",
-    "@angular/core": "^7.2.16",
-    "@angular/forms": "^7.2.16",
-    "@angular/http": "^7.2.16",
-    "@angular/language-service": "^7.2.16",
-    "@angular/material": "^7.3.7",
-    "@angular/platform-browser": "^7.2.16",
-    "@angular/platform-browser-dynamic": "^7.2.16",
-    "@angular/router": "^7.2.16",
-    "@biesbjerg/ngx-translate-extract": "^2.3.4",
+    "@angular-devkit/build-angular": "~0.901.0",
+    "@angular/animations": "^9.1.0",
+    "@angular/cdk": "^9.2.0",
+    "@angular/cli": "^9.1.0",
+    "@angular/common": "^9.1.0",
+    "@angular/compiler": "^9.1.0",
+    "@angular/compiler-cli": "^9.1.0",
+    "@angular/core": "^9.1.0",
+    "@angular/forms": "^9.1.0",
+    "@angular/language-service": "^9.1.0",
+    "@angular/material": "^9.2.0",
+    "@angular/platform-browser": "^9.1.0",
+    "@angular/platform-browser-dynamic": "^9.1.0",
+    "@angular/router": "^9.1.0",
+    "@biesbjerg/ngx-translate-extract": "^6.0.3",
     "@fortawesome/fontawesome-free": "^5.13.0",
-    "@ngrx/store": "^7.4.0",
-    "@ngrx/store-devtools": "^7.4.0",
-    "@ngx-translate/core": "^11.0.1",
+    "@ngrx/store": "^9.0.0",
+    "@ngrx/store-devtools": "^9.0.0",
+    "@ngx-translate/core": "^12.1.2",
     "@ngx-translate/http-loader": "^4.0.0",
     "@types/hammerjs": "^2.0.36",
     "@types/jasmine": "^3.5.10",
     "@types/jasminewd2": "^2.0.8",
     "@types/jquery": "^3.3.33",
-    "@types/node": "^11.15.7",
+    "@types/node": "^13.9.5",
     "angular2-draggable": "^2.3.2",
     "angular2-signaturepad": "^2.11.0",
-    "codelyzer": "~5.0.1",
+    "codelyzer": "^5.1.2",
     "exif-js": "^2.3.0",
     "hammerjs": "^2.0.8",
     "jquery": "^3.4.1",
-    "ngx-cookie-service": "^2.4.0",
+    "ngx-cookie-service": "^3.0.3",
     "ngx-pipes": "^2.7.3",
     "ngx-scroll-event": "^1.0.8",
     "node-sass": "^4.13.1",
-    "npm-check-updates": "^3.2.2",
+    "npm-check-updates": "^4.1.0",
     "rxjs": "^6.5.4",
     "stylus": "^0.54.7",
     "stylus-loader": "^3.0.2",
-    "tslint": "~5.15.0",
-    "typescript": "3.2.4",
+    "tslint": "~6.1.0",
+    "typescript": "3.8.3",
     "typescript-tools": "^0.3.1"
   },
   "repository": {}
diff --git a/src/frontend/app/administration/connection/connection.component.ts b/src/frontend/app/administration/connection/connection.component.ts
index 48fdff5fbe587bf6ea4d80a282ce95e65621d5ae..cd1918fdafd9ff9ba9d2a202c99893e2eb44b99a 100644
--- a/src/frontend/app/administration/connection/connection.component.ts
+++ b/src/frontend/app/administration/connection/connection.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
 import { ActivatedRoute, Router } from '@angular/router';
 import { TranslateService } from '@ngx-translate/core';
 import { finalize } from 'rxjs/operators';
diff --git a/src/frontend/app/administration/connection/ldap/ldap-list.component.ts b/src/frontend/app/administration/connection/ldap/ldap-list.component.ts
index 880293feef9824f90307ec885330e4666451a1e8..a41ac81dede1426f1e5ce11e31b6f76891a2971a 100644
--- a/src/frontend/app/administration/connection/ldap/ldap-list.component.ts
+++ b/src/frontend/app/administration/connection/ldap/ldap-list.component.ts
@@ -2,7 +2,10 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../../service/signatures.service';
 import { NotificationService } from '../../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatTableDataSource, MatPaginator, MatSort, MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTableDataSource } from '@angular/material/table';
 import { ConfirmComponent } from '../../../plugins/confirm.component';
 import { TranslateService } from '@ngx-translate/core';
 import { map, tap, finalize } from 'rxjs/operators';
@@ -28,8 +31,8 @@ export class LdapListComponent implements OnInit {
     displayedColumns: string[];
     loading: boolean = true;
 
-    @ViewChild(MatPaginator) paginator: MatPaginator;
-    @ViewChild(MatSort) sort: MatSort;
+    @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+    @ViewChild(MatSort, { static: true }) sort: MatSort;
 
     constructor(public http: HttpClient, private translate: TranslateService, private latinisePipe: LatinisePipe, public dialog: MatDialog, public signaturesService: SignaturesContentService, public notificationService: NotificationService, public authService: AuthService) {
 
diff --git a/src/frontend/app/administration/connection/ldap/ldap.component.ts b/src/frontend/app/administration/connection/ldap/ldap.component.ts
index 7e67d758142ddc1dfdbf21c0e550abd97f6d6c3c..f90523dc5ea3a75df6d4c74da00eefa15dc541cc 100644
--- a/src/frontend/app/administration/connection/ldap/ldap.component.ts
+++ b/src/frontend/app/administration/connection/ldap/ldap.component.ts
@@ -2,7 +2,8 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../../service/signatures.service';
 import { NotificationService } from '../../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatDialog, MatSidenav } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatSidenav } from '@angular/material/sidenav';
 import { map, finalize } from 'rxjs/operators';
 import { ActivatedRoute, Router } from '@angular/router';
 import { ConfirmComponent } from '../../../plugins/confirm.component';
@@ -44,7 +45,7 @@ export class LdapComponent implements OnInit {
     title: string = '';
 
     // tslint:disable-next-line:no-input-rename
-    @ViewChild('snavRight') snavRight: MatSidenav;
+    @ViewChild('snavRight', { static: true }) snavRight: MatSidenav;
 
     constructor(public http: HttpClient, private translate: TranslateService, private route: ActivatedRoute, private router: Router, public signaturesService: SignaturesContentService, public notificationService: NotificationService, public dialog: MatDialog, public authService: AuthService) {
     }
diff --git a/src/frontend/app/administration/group/group.component.ts b/src/frontend/app/administration/group/group.component.ts
index 5a65f36cde7fcce560be00b64bff058548bc2c72..78ad8b79c249ad6b183e4b0e7f2857ab4101e05a 100644
--- a/src/frontend/app/administration/group/group.component.ts
+++ b/src/frontend/app/administration/group/group.component.ts
@@ -2,7 +2,10 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatDialog, MatTableDataSource, MatPaginator, MatSort } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTableDataSource } from '@angular/material/table';
 import { map, tap, finalize, startWith } from 'rxjs/operators';
 import { ActivatedRoute, Router } from '@angular/router';
 import { ConfirmComponent } from '../../plugins/confirm.component';
diff --git a/src/frontend/app/administration/group/groups-list.component.ts b/src/frontend/app/administration/group/groups-list.component.ts
index 01478beaf43ab4dfa4acbd8403bfe089e7b78d1b..e14798ea25c10a8cba659530b5c05c503862579c 100644
--- a/src/frontend/app/administration/group/groups-list.component.ts
+++ b/src/frontend/app/administration/group/groups-list.component.ts
@@ -2,7 +2,10 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatTableDataSource, MatPaginator, MatSort, MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTableDataSource } from '@angular/material/table';
 import { ConfirmComponent } from '../../plugins/confirm.component';
 import { TranslateService } from '@ngx-translate/core';
 import { map, tap, finalize } from 'rxjs/operators';
@@ -27,8 +30,8 @@ export class GroupsListComponent implements OnInit {
     displayedColumns: string[];
     loading: boolean = true;
 
-    @ViewChild(MatPaginator) paginator: MatPaginator;
-    @ViewChild(MatSort) sort: MatSort;
+    @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+    @ViewChild(MatSort, { static: true }) sort: MatSort;
 
     constructor(public http: HttpClient, private translate: TranslateService, private latinisePipe: LatinisePipe, public dialog: MatDialog, public signaturesService: SignaturesContentService, public notificationService: NotificationService) {
         this.displayedColumns = ['label', 'actions'];
diff --git a/src/frontend/app/administration/sendmail/sendmail.component.ts b/src/frontend/app/administration/sendmail/sendmail.component.ts
index 19ced2d721c3d3300d7dd74c741976f6c018ea77..3be7b2d63221cf48196ac846229c9db2f8034c4b 100644
--- a/src/frontend/app/administration/sendmail/sendmail.component.ts
+++ b/src/frontend/app/administration/sendmail/sendmail.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
 import { map, finalize } from 'rxjs/operators';
 import { ActivatedRoute, Router } from '@angular/router';
 import { TranslateService } from '@ngx-translate/core';
diff --git a/src/frontend/app/administration/user/user.component.ts b/src/frontend/app/administration/user/user.component.ts
index 59c3b736f9921d2fb7cc1db07e6fb07d450fba31..bfb8a00f20ae6edfc849196b08cc5e9ac779f678 100644
--- a/src/frontend/app/administration/user/user.component.ts
+++ b/src/frontend/app/administration/user/user.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient, HttpHeaders } from '@angular/common/http';
-import { MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
 import { map, tap, finalize } from 'rxjs/operators';
 import { ActivatedRoute, Router } from '@angular/router';
 import { ConfirmComponent } from '../../plugins/confirm.component';
diff --git a/src/frontend/app/administration/user/users-list.component.ts b/src/frontend/app/administration/user/users-list.component.ts
index b63def4372b454411727d2df7040dd9cd53f17b9..3d1589be844c29836e5e93d7fcddd5162d65b2a8 100644
--- a/src/frontend/app/administration/user/users-list.component.ts
+++ b/src/frontend/app/administration/user/users-list.component.ts
@@ -2,7 +2,10 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { NotificationService } from '../../service/notification.service';
 import { HttpClient } from '@angular/common/http';
-import { MatTableDataSource, MatPaginator, MatSort, MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatPaginator } from '@angular/material/paginator';
+import { MatSort } from '@angular/material/sort';
+import { MatTableDataSource } from '@angular/material/table';
 import { ConfirmComponent } from '../../plugins/confirm.component';
 import { TranslateService } from '@ngx-translate/core';
 import { map, tap, finalize } from 'rxjs/operators';
@@ -32,8 +35,8 @@ export class UsersListComponent implements OnInit {
     displayedColumns: string[];
     loading: boolean = true;
 
-    @ViewChild(MatPaginator) paginator: MatPaginator;
-    @ViewChild(MatSort) sort: MatSort;
+    @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
+    @ViewChild(MatSort, { static: true }) sort: MatSort;
 
     constructor(public http: HttpClient, private translate: TranslateService, private latinisePipe: LatinisePipe, public dialog: MatDialog, public signaturesService: SignaturesContentService, public notificationService: NotificationService, public authService: AuthService) {
         if (this.signaturesService.smartphoneMode) {
diff --git a/src/frontend/app/app-material.module.ts b/src/frontend/app/app-material.module.ts
index 01a7f910dff5d0fff97abd0cf2336eaa451a1767..9eb7f8b9e267cc7028da316962d1124c74b76666 100755
--- a/src/frontend/app/app-material.module.ts
+++ b/src/frontend/app/app-material.module.ts
@@ -1,30 +1,27 @@
 import { NgModule } from '@angular/core';
 
-import {
-  MatSidenavModule,
-  MatListModule,
-  MatDialogModule,
-  MatBottomSheetModule,
-  MatRippleModule,
-  MatSnackBarModule,
-  MatButtonModule,
-  MatIconModule,
-  MatProgressSpinnerModule,
-  MatCardModule,
-  MatInputModule,
-  MatExpansionModule,
-  MatTabsModule,
-  MatSliderModule,
-  MatSelectModule,
-  MatSlideToggleModule,
-  MatBadgeModule,
-  MatTableModule,
-  MatPaginatorModule,
-  MatSortModule,
-  MatPaginatorIntl,
-  MatAutocompleteModule,
-  MatCheckboxModule
-} from '@angular/material';
+import { MatAutocompleteModule } from '@angular/material/autocomplete';
+import { MatBadgeModule } from '@angular/material/badge';
+import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
+import { MatButtonModule } from '@angular/material/button';
+import { MatCardModule } from '@angular/material/card';
+import { MatCheckboxModule } from '@angular/material/checkbox';
+import { MatRippleModule } from '@angular/material/core';
+import { MatDialogModule } from '@angular/material/dialog';
+import { MatExpansionModule } from '@angular/material/expansion';
+import { MatIconModule } from '@angular/material/icon';
+import { MatInputModule } from '@angular/material/input';
+import { MatListModule } from '@angular/material/list';
+import { MatPaginatorModule, MatPaginatorIntl } from '@angular/material/paginator';
+import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
+import { MatSelectModule } from '@angular/material/select';
+import { MatSidenavModule } from '@angular/material/sidenav';
+import { MatSlideToggleModule } from '@angular/material/slide-toggle';
+import { MatSliderModule } from '@angular/material/slider';
+import { MatSnackBarModule } from '@angular/material/snack-bar';
+import { MatSortModule } from '@angular/material/sort';
+import { MatTableModule } from '@angular/material/table';
+import { MatTabsModule } from '@angular/material/tabs';
 
 import { MatMenuModule } from '@angular/material/menu';
 
diff --git a/src/frontend/app/app.component.ts b/src/frontend/app/app.component.ts
index 09e40191b13e39d35989ddb5eaf63617dd260c0b..ea21a1daed120554b1ae9e35d24b990cf81be8d6 100755
--- a/src/frontend/app/app.component.ts
+++ b/src/frontend/app/app.component.ts
@@ -5,7 +5,8 @@ import { HttpClient } from '@angular/common/http';
 import { NotificationService } from './service/notification.service';
 import { DomSanitizer } from '@angular/platform-browser';
 import { TranslateService } from '@ngx-translate/core';
-import { MatDialog, MatIconRegistry } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatIconRegistry } from '@angular/material/icon';
 import { AlertComponent } from './plugins/alert.component';
 import { AuthService } from './service/auth.service';
 import { LocalStorageService } from './service/local-storage.service';
diff --git a/src/frontend/app/app.module.ts b/src/frontend/app/app.module.ts
index b4529d48065cf4e8719bcfa0c773b2ca8c2a052b..e5a955484cee1ef4a76d1b0e4175ddb041ad700b 100755
--- a/src/frontend/app/app.module.ts
+++ b/src/frontend/app/app.module.ts
@@ -1,8 +1,8 @@
-import { BrowserModule } from '@angular/platform-browser';
+import { BrowserModule, HammerModule } from '@angular/platform-browser';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
-import { NgModule } from '@angular/core';
+import { NgModule, Injectable } from '@angular/core';
 import { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
 
 import { AuthInterceptor } from './service/auth-interceptor.service';
@@ -11,6 +11,7 @@ import { AuthInterceptor } from './service/auth-interceptor.service';
 import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
 import { TranslateHttpLoader } from '@ngx-translate/http-loader';
 
+@Injectable()
 export class CustomHammerConfig extends HammerGestureConfig {
   overrides = <any>{
     'pinch': { enable: false },
@@ -138,6 +139,7 @@ import { SortPipe } from './plugins/sorting.pipe';
     AngularDraggableModule,
     AppMaterialModule,
     AppRoutingModule,
+    HammerModule,
   ],
   entryComponents: [
     CustomSnackbarComponent,
diff --git a/src/frontend/app/document/document-list/document-list.component.ts b/src/frontend/app/document/document-list/document-list.component.ts
index 43e1b41d9299baa2db428be8dcba4a6c40fabf6c..5522820fed20a77143f3d3183dec137c711d693b 100644
--- a/src/frontend/app/document/document-list/document-list.component.ts
+++ b/src/frontend/app/document/document-list/document-list.component.ts
@@ -1,5 +1,5 @@
 import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
-import { MatSidenav } from '@angular/material';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { HttpClient } from '@angular/common/http';
 import { DomSanitizer } from '@angular/platform-browser';
diff --git a/src/frontend/app/document/document.component.ts b/src/frontend/app/document/document.component.ts
index a070a0bcb896e116401a0a5df821cad6d517509b..7c68d9fb98b89dd4e6189a67aea8e60ac169bdd0 100755
--- a/src/frontend/app/document/document.component.ts
+++ b/src/frontend/app/document/document.component.ts
@@ -1,7 +1,9 @@
 import { Component, OnInit, ViewChild, ElementRef, Input, HostListener } from '@angular/core';
 import { SignaturesContentService } from '../service/signatures.service';
 import { DomSanitizer } from '@angular/platform-browser';
-import { MatDialog, MatBottomSheet, MatBottomSheetConfig, MatSidenav } from '@angular/material';
+import { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';
+import { MatDialog } from '@angular/material/dialog';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesComponent } from '../signatures/signatures.component';
 import { ActivatedRoute, Router } from '@angular/router';
 import { HttpClient } from '@angular/common/http';
@@ -120,8 +122,8 @@ export class DocumentComponent implements OnInit {
 
     expandedNote: boolean = true;
 
-    @ViewChild('snav') snav: MatSidenav;
-    @ViewChild('snavRight') snavRight: MatSidenav;
+    @ViewChild('snav', { static: true }) snav: MatSidenav;
+    @ViewChild('snavRight', { static: true }) snavRight: MatSidenav;
     @ViewChild('dragElem') dragElem: any;
     @ViewChild('appDocumentNotePad') appDocumentNotePad: DocumentNotePadComponent;
     @ViewChild('appDocumentList') appDocumentList: DocumentListComponent;
diff --git a/src/frontend/app/document/main-document-detail/main-document-detail.component.ts b/src/frontend/app/document/main-document-detail/main-document-detail.component.ts
index a33cdd61f1f5b17e19a7432b5934048dcc522ecb..0c2260cab76be54b69d928c801c0a3f89ca9a8c7 100644
--- a/src/frontend/app/document/main-document-detail/main-document-detail.component.ts
+++ b/src/frontend/app/document/main-document-detail/main-document-detail.component.ts
@@ -1,5 +1,5 @@
 import { Component, Input, OnInit } from '@angular/core';
-import { MatSidenav } from '@angular/material';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesContentService } from '../../service/signatures.service';
 
 @Component({
diff --git a/src/frontend/app/document/visa-workflow/visa-workflow.component.ts b/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
index d7acc144bdc20b38f38bf19730b77f68a2150d93..8a754ab4c7988cf2eddd6aa7b1a4097ab6771d54 100644
--- a/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
+++ b/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
@@ -1,5 +1,5 @@
 import { Component, Input, OnInit } from '@angular/core';
-import { MatSidenav } from '@angular/material';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { HttpClient } from '@angular/common/http';
 import { AuthService } from '../../service/auth.service';
diff --git a/src/frontend/app/documentSignList/document-sign-list.component.ts b/src/frontend/app/documentSignList/document-sign-list.component.ts
index 0c31d6d680bb36a51928f72974e1920e27a5bdec..7dda44dc7a6707a2bc98ad40e00ec46c3a5c32e7 100644
--- a/src/frontend/app/documentSignList/document-sign-list.component.ts
+++ b/src/frontend/app/documentSignList/document-sign-list.component.ts
@@ -1,8 +1,7 @@
 import { Component, OnInit, ViewChild, Input, ElementRef } from '@angular/core';
 import { SignaturesContentService } from '../service/signatures.service';
-import {
-    MatMenuTrigger, MatDialog,
-} from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
+import { MatMenuTrigger } from '@angular/material/menu';
 import { NotificationService } from '../service/notification.service';
 import { DomSanitizer } from '@angular/platform-browser';
 import { TranslateService } from '@ngx-translate/core';
diff --git a/src/frontend/app/login/forgotPassword/forgotPassword.component.ts b/src/frontend/app/login/forgotPassword/forgotPassword.component.ts
index 4e359507c2d99de012f1d30181d053f750466588..a9821baa3a78c1b01a7a7aec324203bbceecff51 100644
--- a/src/frontend/app/login/forgotPassword/forgotPassword.component.ts
+++ b/src/frontend/app/login/forgotPassword/forgotPassword.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit } from '@angular/core';
 import { DomSanitizer } from '@angular/platform-browser';
-import { MatIconRegistry } from '@angular/material';
+import { MatIconRegistry } from '@angular/material/icon';
 import { HttpClient } from '@angular/common/http';
 import { Router } from '@angular/router';
 import { NotificationService } from '../../service/notification.service';
diff --git a/src/frontend/app/login/login.component.ts b/src/frontend/app/login/login.component.ts
index 8845a945fdda4a3af2d8925683a0af45e5623f7a..e3e357c868901197b4c4c3cd12226dbeb7282bf8 100644
--- a/src/frontend/app/login/login.component.ts
+++ b/src/frontend/app/login/login.component.ts
@@ -1,6 +1,6 @@
 import { Component, AfterViewInit, OnInit } from '@angular/core';
 import { trigger, transition, style, animate } from '@angular/animations';
-import { MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
 import { HttpClient } from '@angular/common/http';
 import { Router } from '@angular/router';
 import { SignaturesContentService } from '../service/signatures.service';
diff --git a/src/frontend/app/login/updatePassword/updatePassword.component.ts b/src/frontend/app/login/updatePassword/updatePassword.component.ts
index 6d4ec943cc08567de4d6d18d7033de8c2b50d4e2..51bcf37384baecd5fe118f937309fd53cc29d1bc 100644
--- a/src/frontend/app/login/updatePassword/updatePassword.component.ts
+++ b/src/frontend/app/login/updatePassword/updatePassword.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit } from '@angular/core';
 import { DomSanitizer } from '@angular/platform-browser';
-import { MatIconRegistry } from '@angular/material';
+import { MatIconRegistry } from '@angular/material/icon';
 import { HttpClient } from '@angular/common/http';
 import { Router, ActivatedRoute } from '@angular/router';
 import { NotificationService } from '../../service/notification.service';
diff --git a/src/frontend/app/modal/confirm-modal.component.ts b/src/frontend/app/modal/confirm-modal.component.ts
index d999e84e755cee70a10f083c95d3f2121fcb95e4..a9e0eeda0167f17ef3a5b7cdd3952512fc77be40 100644
--- a/src/frontend/app/modal/confirm-modal.component.ts
+++ b/src/frontend/app/modal/confirm-modal.component.ts
@@ -1,5 +1,5 @@
 import { Component, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { SignaturesContentService } from '../service/signatures.service';
 import { NotificationService } from '../service/notification.service';
 import { HttpClient } from '@angular/common/http';
diff --git a/src/frontend/app/modal/reject-info.component.ts b/src/frontend/app/modal/reject-info.component.ts
index 2182bce35bbf935d4d7d4a6c8eb2d5999d45cdee..4e701be946bde4126149c6ebdddabaa8137d5d57 100644
--- a/src/frontend/app/modal/reject-info.component.ts
+++ b/src/frontend/app/modal/reject-info.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
 import { SignaturesContentService } from '../service/signatures.service';
-import { MatBottomSheetRef } from '@angular/material';
+import { MatBottomSheetRef } from '@angular/material/bottom-sheet';
 import { TranslateService } from '@ngx-translate/core';
 import { AuthService } from '../service/auth.service';
 import { FiltersService } from '../service/filters.service';
diff --git a/src/frontend/app/modal/success-info-valid.component.ts b/src/frontend/app/modal/success-info-valid.component.ts
index 628f4e53253dbf5aaed261567dd0aff6ca6c73c2..e862b66f7ca02839b76e665501779c7a75576bd3 100644
--- a/src/frontend/app/modal/success-info-valid.component.ts
+++ b/src/frontend/app/modal/success-info-valid.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
 import { SignaturesContentService } from '../service/signatures.service';
-import { MatBottomSheetRef } from '@angular/material';
+import { MatBottomSheetRef } from '@angular/material/bottom-sheet';
 import { TranslateService } from '@ngx-translate/core';
 import { AuthService } from '../service/auth.service';
 import { FiltersService } from '../service/filters.service';
diff --git a/src/frontend/app/modal/warn-modal.component.ts b/src/frontend/app/modal/warn-modal.component.ts
index 3863e7fd936af1adc8075edc1944ac5e6806062e..c5fc263e97df6d7482bb65e4ca2402c706f29b1c 100644
--- a/src/frontend/app/modal/warn-modal.component.ts
+++ b/src/frontend/app/modal/warn-modal.component.ts
@@ -1,6 +1,6 @@
 
 import { Component, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { SignaturesContentService } from '../service/signatures.service';
 import { NotificationService } from '../service/notification.service';
 import { HttpClient } from '@angular/common/http';
diff --git a/src/frontend/app/plugins/alert.component.ts b/src/frontend/app/plugins/alert.component.ts
index eec3c7f3884f031ffc95655975a10d2287b90eb9..6e3ae07ddc820ff9ac2237ad262ea510d4ea0392 100644
--- a/src/frontend/app/plugins/alert.component.ts
+++ b/src/frontend/app/plugins/alert.component.ts
@@ -1,5 +1,5 @@
 import { Component, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { TranslateService } from '@ngx-translate/core';
 
 @Component({
diff --git a/src/frontend/app/plugins/autocomplete/autocomplete.component.scss b/src/frontend/app/plugins/autocomplete/autocomplete.component.scss
index e87d6df21e42314122a2e031adef6420e21fb9ea..f4030329bbf4b98fa84c553eaccee38e5e7150bd 100644
--- a/src/frontend/app/plugins/autocomplete/autocomplete.component.scss
+++ b/src/frontend/app/plugins/autocomplete/autocomplete.component.scss
@@ -4,11 +4,11 @@
     font-size: 11px;
     width: 100%;
 }
-/deep/.mat-form-field-appearance-outline .mat-form-field-outline-thick {
+::ng-deep.mat-form-field-appearance-outline .mat-form-field-outline-thick {
     color: $primary;
 }
 
-/deep/.mat-form-field-prefix {
+::ng-deep.mat-form-field-prefix {
     top: 0px !important;
 }
 .mat-option {
diff --git a/src/frontend/app/plugins/autocomplete/autocomplete.component.ts b/src/frontend/app/plugins/autocomplete/autocomplete.component.ts
index 6ebe5eed14959f6c93973a7183ad56bf8a6c1321..a2c5deea7fd953c0b8cf922650eceb91bffd3685 100644
--- a/src/frontend/app/plugins/autocomplete/autocomplete.component.ts
+++ b/src/frontend/app/plugins/autocomplete/autocomplete.component.ts
@@ -35,7 +35,7 @@ export class PluginAutocompleteComponent implements OnInit {
     // tslint:disable-next-line:no-output-rename
     @Output('triggerEvent') selectedOpt = new EventEmitter();
 
-    @ViewChild('autoCompleteInput') autoCompleteInput: ElementRef;
+    @ViewChild('autoCompleteInput', { static: true }) autoCompleteInput: ElementRef;
 
     filteredOptions: Observable<string[]>;
 
diff --git a/src/frontend/app/plugins/confirm.component.ts b/src/frontend/app/plugins/confirm.component.ts
index 1fe93725b0061359c14d05245c03b454dd4790da..e1d79030b0576b2825dcfe06c7545cf73d1c3461 100644
--- a/src/frontend/app/plugins/confirm.component.ts
+++ b/src/frontend/app/plugins/confirm.component.ts
@@ -1,5 +1,5 @@
 import { Component, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { TranslateService } from '@ngx-translate/core';
 
 @Component({
diff --git a/src/frontend/app/plugins/paginator-fr-intl.ts b/src/frontend/app/plugins/paginator-fr-intl.ts
index 854d163136f0eecd306623c75f706dca40136f6e..8f97c587f246501f2c55870e8b264f0c7b3a6cfa 100644
--- a/src/frontend/app/plugins/paginator-fr-intl.ts
+++ b/src/frontend/app/plugins/paginator-fr-intl.ts
@@ -1,4 +1,4 @@
-import { MatPaginatorIntl } from '@angular/material';
+import { MatPaginatorIntl } from '@angular/material/paginator';
 
 
 const frenchRangeLabel = (page: number, pageSize: number, length: number) => {
diff --git a/src/frontend/app/profile/profile.component.scss b/src/frontend/app/profile/profile.component.scss
index b4140e6e787180fca793d6673c7f1607edccef6f..1a39a54eafd66022a9cfd2a5976ea4610d4bcba6 100644
--- a/src/frontend/app/profile/profile.component.scss
+++ b/src/frontend/app/profile/profile.component.scss
@@ -201,11 +201,11 @@ legend {
 
 .selectedSubstitute {
     width: 100%;
-    /deep/.mat-input-element {
+    ::ng-deep.mat-input-element {
         cursor: default;
     }
 
-    /deep/.mat-form-field-suffix {
+    ::ng-deep.mat-form-field-suffix {
         top: 0;
         display: flex;
     }
diff --git a/src/frontend/app/profile/profile.component.ts b/src/frontend/app/profile/profile.component.ts
index a749f688f539b8e63ff49d863425bb8b0c759b05..64a5fe62f274917bdcb30c4a174ce4507eb083c9 100644
--- a/src/frontend/app/profile/profile.component.ts
+++ b/src/frontend/app/profile/profile.component.ts
@@ -1,6 +1,8 @@
 import { Component, OnInit, Input, ViewChild, Renderer2, ElementRef } from '@angular/core';
 import { DomSanitizer } from '@angular/platform-browser';
-import { MatSidenav, MatExpansionPanel, MatTabGroup } from '@angular/material';
+import { MatExpansionPanel } from '@angular/material/expansion';
+import { MatSidenav } from '@angular/material/sidenav';
+import { MatTabGroup } from '@angular/material/tabs';
 import { HttpClient, HttpHeaders } from '@angular/common/http';
 import { SignaturesContentService } from '../service/signatures.service';
 import { NotificationService } from '../service/notification.service';
diff --git a/src/frontend/app/service/auth.guard.ts b/src/frontend/app/service/auth.guard.ts
index 4b789fec7c8a25da949f9846d921ce407fb17437..21789d95e61477d3703f6b5efc2603cd3cb2677f 100644
--- a/src/frontend/app/service/auth.guard.ts
+++ b/src/frontend/app/service/auth.guard.ts
@@ -10,7 +10,7 @@ import { map } from 'rxjs/operators';
 import { Observable } from 'rxjs';
 import { LocalStorageService } from './local-storage.service';
 import { AlertComponent } from '../plugins/alert.component';
-import { MatDialog } from '@angular/material';
+import { MatDialog } from '@angular/material/dialog';
 
 @Injectable({
     providedIn: 'root'
diff --git a/src/frontend/app/service/notification.service.ts b/src/frontend/app/service/notification.service.ts
index 569b071725fdd398d3c9083d6cd8cf4030d4e848..0e09726cd5adfa4672c4f5472148744057a4d6b5 100644
--- a/src/frontend/app/service/notification.service.ts
+++ b/src/frontend/app/service/notification.service.ts
@@ -1,6 +1,6 @@
-import { MatSnackBar } from '@angular/material';
+import { MatSnackBar } from '@angular/material/snack-bar';
 import { Injectable, Component, Inject } from '@angular/core';
-import { MAT_SNACK_BAR_DATA } from '@angular/material';
+import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
 import { Router } from '@angular/router';
 import { TranslateService } from '@ngx-translate/core';
 
diff --git a/src/frontend/app/sidebar/administration/admin-sidebar.component.ts b/src/frontend/app/sidebar/administration/admin-sidebar.component.ts
index 58b5a284605ddeeba32a51dcb61295ec1dedb675..1fc913895c09ce6e5b2c9f9b7b24348472ee7d48 100644
--- a/src/frontend/app/sidebar/administration/admin-sidebar.component.ts
+++ b/src/frontend/app/sidebar/administration/admin-sidebar.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit, Input } from '@angular/core';
 import { Router, ActivatedRoute } from '@angular/router';
-import { MatSidenav } from '@angular/material';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesContentService } from '../../service/signatures.service';
 import { AuthService } from '../../service/auth.service';
 
diff --git a/src/frontend/app/sidebar/sidebar.component.ts b/src/frontend/app/sidebar/sidebar.component.ts
index 24b27df57c9c5d1e33cc7e10d03666fb26c93948..c86216ca213c7606a7ca3c171c22ac9ecf1971f2 100755
--- a/src/frontend/app/sidebar/sidebar.component.ts
+++ b/src/frontend/app/sidebar/sidebar.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, ElementRef, ViewChild, Input } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Router, ActivatedRoute } from '@angular/router';
 import { ScrollEvent } from 'ngx-scroll-event';
-import { MatSidenav } from '@angular/material';
+import { MatSidenav } from '@angular/material/sidenav';
 import { SignaturesContentService } from '../service/signatures.service';
 import { NotificationService } from '../service/notification.service';
 import { FormControl } from '@angular/forms';
diff --git a/src/frontend/app/signatures/signatures.component.ts b/src/frontend/app/signatures/signatures.component.ts
index 832bd8a6fd63e73f5694c9f82340b1947b34c93a..8ab2ff686263382df20159842aaa15d7afc3ac77 100755
--- a/src/frontend/app/signatures/signatures.component.ts
+++ b/src/frontend/app/signatures/signatures.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit, Renderer2 } from '@angular/core';
-import { MatBottomSheet, MatBottomSheetConfig } from '@angular/material';
+import { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';
 import { SignaturesContentService } from '../service/signatures.service';
 import { DomSanitizer } from '@angular/platform-browser';
 import * as $ from 'jquery';
diff --git a/src/frontend/core/main.ts b/src/frontend/core/main.ts
index 8187df70827077fc7f132d87cae3d2763e9b3988..7edaa3e11c4d6a99427ae3cbc00a119251c48714 100644
--- a/src/frontend/core/main.ts
+++ b/src/frontend/core/main.ts
@@ -4,6 +4,8 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
 import { AppModule } from '../app/app.module';
 import { environment } from './environments/environment';
 
+import 'hammerjs';
+
 if (environment.production) {
   enableProdMode();
 }
diff --git a/src/frontend/core/polyfills.ts b/src/frontend/core/polyfills.ts
index c72206ce6b22f1b109206012eaeb16d7c3bb5965..d066a6e52079ad4c63de1287c71a419fde6dd058 100644
--- a/src/frontend/core/polyfills.ts
+++ b/src/frontend/core/polyfills.ts
@@ -43,7 +43,7 @@
 
 /** Evergreen browsers require these. **/
 // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
-import 'core-js/es7/reflect';
+// import 'core-js/es7/reflect';
 
 
 /**
@@ -78,4 +78,4 @@ import 'zone.js/dist/zone';  // Included with Angular CLI.
 /***************************************************************************************************
  * APPLICATION IMPORTS
  */
-import 'hammerjs';
+
diff --git a/src/frontend/core/tsconfig.app.json b/src/frontend/core/tsconfig.app.json
index f0cb5b3b96163ea5d633f9617ad308fecd3f2259..29d9693ca94dac3328f698abf5dadca5bf755852 100644
--- a/src/frontend/core/tsconfig.app.json
+++ b/src/frontend/core/tsconfig.app.json
@@ -4,8 +4,11 @@
     "outDir": "../out-tsc/app",
     "types": ["node"]
   },
-  "exclude": [
-    "./test.ts",
-    "**/*.spec.ts"
+  "files": [
+    "main.ts",
+    "polyfills.ts"
+  ],
+  "include": [
+    "src/**/*.d.ts"
   ]
 }
diff --git a/tsconfig.json b/tsconfig.json
index 916247e4cb29ef8666bebd0f7e9a4abed8bbf928..575aabd99f9d38e33b2495d373ebed60120fa8fd 100755
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,14 +2,15 @@
   "compileOnSave": false,
   "compilerOptions": {
     "baseUrl": "./",
+    "downlevelIteration": true,
     "outDir": "./dist/out-tsc",
     "sourceMap": true,
     "declaration": false,
-    "module": "es2015",
+    "module": "esnext",
     "moduleResolution": "node",
     "emitDecoratorMetadata": true,
     "experimentalDecorators": true,
-    "target": "es5",
+    "target": "es2015",
     "typeRoots": [
       "node_modules/@types"
     ],
diff --git a/tslint.json b/tslint.json
index 7dd2e08806d1b655120cd54884e778a19706c0f8..309b50fa80d1829013acbb9e668637c0404bd9eb 100755
--- a/tslint.json
+++ b/tslint.json
@@ -117,11 +117,11 @@
       "check-type"
     ],
     "no-output-on-prefix": true,
-    "use-input-property-decorator": true,
-    "use-output-property-decorator": true,
-    "use-host-property-decorator": true,
+    "no-inputs-metadata-property": true,
+    "no-outputs-metadata-property": true,
+    "no-host-metadata-property": true,
     "no-output-rename": true,
-    "use-life-cycle-interface": true,
+    "use-lifecycle-interface": true,
     "use-pipe-transform-interface": true,
     "component-class-suffix": true,
     "directive-class-suffix": true