diff --git a/apps/maarch_entreprise/Views/doctypes-administration.component.html b/apps/maarch_entreprise/Views/doctypes-administration.component.html
index 38a73457aebfd69218280181f5aefc3ca7224883..bc8ed41225a0432386a61301a964efc46ad53932 100644
--- a/apps/maarch_entreprise/Views/doctypes-administration.component.html
+++ b/apps/maarch_entreprise/Views/doctypes-administration.component.html
@@ -31,7 +31,7 @@
             <mat-divider></mat-divider>
             <mat-nav-list>
                 <h3 mat-subheader>{{lang.tools}}</h3>
-                <a mat-list-item (click)="prepareEntityAdd()">
+                <a mat-list-item (click)="prepareDoctypeAdd()">
                     <mat-icon color="primary" mat-list-icon class="fa fa-plus"></mat-icon>
                     <p mat-line>
                         {{lang.add}}
@@ -58,9 +58,9 @@
 
             <mat-nav-list>
                 <mat-tab-group>
-                    <mat-tab label="{{lang.firstLevelDoctype}}" *ngIf="currentFirstLevel">
+                    <mat-tab label="{{lang.firstLevelDoctype}}" *ngIf="currentFirstLevel || creationMode">
                         <form class="form-horizontal" #firstLevelForm="ngForm" style="overflow:hidden;">
-                            <div class="form-group">
+                            <div class="form-group" *ngIf="!creationMode">
                                 <div class="col-sm-12">
                                     <mat-form-field>
                                         <input matInput [(ngModel)]="currentFirstLevel.doctypes_first_level_id" required name="doctypes_first_level_id" id="doctypes_first_level_id" title="{{lang.id}}" type="text"
@@ -85,8 +85,8 @@
                                 <div class="col-sm-12">
                                     <mat-form-field>
                                         <mat-select id="foldertypeList" name="foldertypeList" title="{{lang.folderTypeList}}" placeholder="{{lang.folderTypeList}}"
-                                            [(ngModel)]="currentFirstLevel.folderTypeSelected" multiple required>
-                                            <mat-option *ngFor="let folderType of FolderTypes" [value]="folderType.foldertype_id">
+                                            [(ngModel)]="currentFirstLevel.foldertype_id" multiple required>
+                                            <mat-option *ngFor="let folderType of folderTypes" [value]="folderType.foldertype_id">
                                                 {{folderType.foldertype_label}}
                                             </mat-option>
                                         </mat-select>
@@ -95,18 +95,18 @@
                             </div>
                             <div class="form-group">
                                 <div class="col-md-12 text-center" style="padding:10px;">
-                                    <button mat-raised-button [disabled]="!firstLevelForm.form.valid" color="primary" (click)="saveEntity()">{{lang.save}}</button>
-                                    <button mat-raised-button *ngIf="!creationMode" [disabled]="!firstLevelForm.form.valid"
-                                        color="warn" (click)="removeEntity()">{{lang.delete}}</button>
-                                    <button mat-raised-button *ngIf="creationMode" color="default" (click)="readMode()">{{lang.cancel}}</button>
+                                    <button mat-raised-button [disabled]="!firstLevelForm.form.valid" color="primary" (click)="saveFirstLevel()">{{lang.save}}</button>
+                                    <button type="button" mat-raised-button *ngIf="!creationMode" [disabled]="!firstLevelForm.form.valid"
+                                        color="warn" (click)="removeFirstLevel()">{{lang.delete}}</button>
+                                    <button type="button" mat-raised-button *ngIf="creationMode" color="default" (click)="readMode()">{{lang.cancel}}</button>
                                 </div>
                             </div>
                         </form>
                     </mat-tab>
 
-                    <mat-tab label="{{lang.secondLevelDoctype}}" *ngIf="currentSecondLevel">
+                    <mat-tab label="{{lang.secondLevelDoctype}}" *ngIf="currentSecondLevel || creationMode">
                         <form class="form-horizontal" #secondLevelForm="ngForm" style="overflow:hidden;">
-                            <div class="form-group">
+                            <div class="form-group" *ngIf="!creationMode">
                                 <div class="col-sm-12">
                                     <mat-form-field>
                                         <input matInput [(ngModel)]="currentSecondLevel.doctypes_second_level_id" required name="doctypes_second_level_id" id="doctypes_second_level_id" title="{{lang.id}}" type="text"
@@ -141,18 +141,18 @@
                             </div>
                             <div class="form-group">
                                 <div class="col-md-12 text-center" style="padding:10px;">
-                                    <button mat-raised-button [disabled]="!secondLevelForm.form.valid" color="primary" (click)="saveEntity()">{{lang.save}}</button>
+                                    <button mat-raised-button [disabled]="!secondLevelForm.form.valid" color="primary" (click)="saveSecondLevel()">{{lang.save}}</button>
                                     <button mat-raised-button *ngIf="!creationMode" [disabled]="!secondLevelForm.form.valid"
-                                        color="warn" (click)="removeEntity()">{{lang.delete}}</button>
+                                        color="warn" (click)="removeSecondLevel()">{{lang.delete}}</button>
                                     <button mat-raised-button *ngIf="creationMode" color="default" (click)="readMode()">{{lang.cancel}}</button>
                                 </div>
                             </div>
                         </form>
                     </mat-tab>
 
-                    <mat-tab label="{{lang.doctype}}" *ngIf="currentType">
+                    <mat-tab label="{{lang.doctype}}" *ngIf="currentType || creationMode">
                         <form class="form-horizontal" #typeForm="ngForm" style="overflow:hidden;">
-                            <div class="form-group">
+                            <div class="form-group" *ngIf="!creationMode">
                                 <div class="col-sm-12">
                                     <mat-form-field>
                                         <input matInput [(ngModel)]="currentType.type_id" required name="type_id" id="type_id" title="{{lang.id}}" type="text"
diff --git a/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.js b/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.js
index 1763cf800b272fc07667e09afd65e8537a5c3107..93ec8d8099ad3489242c9632b3a03e2d66a9419b 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.js
+++ b/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.js
@@ -1,14 +1,4 @@
 "use strict";
-var __extends = (this && this.__extends) || (function () {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-})();
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -24,31 +14,27 @@ var layout_1 = require("@angular/cdk/layout");
 var http_1 = require("@angular/common/http");
 var translate_component_1 = require("../translate.component");
 var notification_service_1 = require("../notification.service");
-var autocomplete_plugin_1 = require("../../plugins/autocomplete.plugin");
-var DoctypesAdministrationComponent = /** @class */ (function (_super) {
-    __extends(DoctypesAdministrationComponent, _super);
+var DoctypesAdministrationComponent = /** @class */ (function () {
     function DoctypesAdministrationComponent(changeDetectorRef, media, http, notify) {
-        var _this = _super.call(this, http, ['usersAndEntities']) || this;
-        _this.http = http;
-        _this.notify = notify;
-        _this.lang = translate_component_1.LANG;
-        _this.doctypes = [];
-        _this.currentType = false;
-        _this.currentSecondLevel = false;
-        _this.currentFirstLevel = false;
-        _this.firstLevels = false;
-        _this.FolderTypes = false;
-        _this.secondLevels = false;
-        _this.processModes = false;
-        _this.models = false;
-        _this.indexes = false;
-        _this.loading = false;
-        _this.creationMode = false;
+        this.http = http;
+        this.notify = notify;
+        this.lang = translate_component_1.LANG;
+        this.doctypes = [];
+        this.currentType = false;
+        this.currentSecondLevel = false;
+        this.currentFirstLevel = false;
+        this.firstLevels = false;
+        this.folderTypes = false;
+        this.secondLevels = false;
+        this.processModes = false;
+        this.models = false;
+        this.indexes = false;
+        this.loading = false;
+        this.creationMode = false;
         $j("link[href='merged_css.php']").remove();
-        _this.mobileQuery = media.matchMedia('(max-width: 768px)');
-        _this._mobileQueryListener = function () { return changeDetectorRef.detectChanges(); };
-        _this.mobileQuery.addListener(_this._mobileQueryListener);
-        return _this;
+        this.mobileQuery = media.matchMedia('(max-width: 768px)');
+        this._mobileQueryListener = function () { return changeDetectorRef.detectChanges(); };
+        this.mobileQuery.addListener(this._mobileQueryListener);
     }
     DoctypesAdministrationComponent.prototype.updateBreadcrumb = function (applicationName) {
         if ($j('#ariane')[0]) {
@@ -114,12 +100,13 @@ var DoctypesAdministrationComponent = /** @class */ (function (_super) {
     };
     DoctypesAdministrationComponent.prototype.loadDoctype = function (data) {
         var _this = this;
+        this.creationMode = false;
         // Doctype
         if (data.original.type_id) {
+            this.currentFirstLevel = false;
+            this.currentSecondLevel = false;
             this.http.get(this.coreUrl + "rest/doctypes/types/" + data.original.type_id)
                 .subscribe(function (data) {
-                _this.currentFirstLevel = false;
-                _this.currentSecondLevel = false;
                 _this.currentType = data['doctype'];
                 _this.secondLevels = data['secondLevel'];
                 _this.processModes = data['processModes'];
@@ -131,24 +118,24 @@ var DoctypesAdministrationComponent = /** @class */ (function (_super) {
             // Second level
         }
         else if (data.original.doctypes_second_level_id) {
+            this.currentFirstLevel = false;
+            this.currentType = false;
             this.http.get(this.coreUrl + "rest/doctypes/secondLevel/" + data.original.doctypes_second_level_id)
                 .subscribe(function (data) {
-                _this.currentFirstLevel = false;
                 _this.currentSecondLevel = data['secondLevel'];
                 _this.firstLevels = data['firstLevel'];
-                _this.currentType = false;
             }, function (err) {
                 _this.notify.error(err.error.errors);
             });
             // First level
         }
         else {
+            this.currentSecondLevel = false;
+            this.currentType = false;
             this.http.get(this.coreUrl + "rest/doctypes/firstLevel/" + data.original.doctypes_first_level_id)
                 .subscribe(function (data) {
                 _this.currentFirstLevel = data['firstLevel'];
-                _this.FolderTypes = data['folderTypes'];
-                _this.currentSecondLevel = false;
-                _this.currentType = false;
+                _this.folderTypes = data['folderTypes'];
             }, function (err) {
                 _this.notify.error(err.error.errors);
             });
@@ -178,30 +165,58 @@ var DoctypesAdministrationComponent = /** @class */ (function (_super) {
     //         this.currentDoctype.listTemplate.cc.unshift(newElemListModel);
     //     }
     // }
-    // saveEntity() {
-    //     if (this.creationMode) {
-    //         this.http.post(this.coreUrl + "rest/entities", this.currentDoctype)
-    //             .subscribe((data: any) => {
-    //                 this.creationMode = false;
-    //                 this.doctypes.push(this.currentDoctype);
-    //                 $j('#jstree').jstree("refresh");
-    //                 this.notify.success(this.lang.entityAdded);
-    //             }, (err) => {
-    //                 this.notify.error(err.error.errors);
-    //             });
-    //     } else {
-    //         this.http.put(this.coreUrl + "rest/entities/" + this.currentDoctype.entity_id, this.currentDoctype)
-    //             .subscribe((data: any) => {
-    //                 console.log(data);
-    //                 this.doctypes = data['entities'];
-    //                 $j('#jstree').jstree(true).settings.core.data = this.doctypes;
-    //                 $j('#jstree').jstree("refresh");
-    //                 this.notify.success(this.lang.entityUpdated);
-    //             }, (err) => {
-    //                 this.notify.error(err.error.errors);
-    //             });
-    //     }
-    // }
+    DoctypesAdministrationComponent.prototype.saveFirstLevel = function () {
+        var _this = this;
+        if (this.creationMode) {
+            this.http.post(this.coreUrl + "rest/doctypes/firstLevel", this.currentFirstLevel)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.firstLevelAdded);
+                _this.creationMode = false;
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+        else {
+            this.http.put(this.coreUrl + "rest/doctypes/firstLevel/" + this.currentFirstLevel.doctypes_first_level_id, this.currentFirstLevel)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.firstLevelUpdated);
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+    };
+    DoctypesAdministrationComponent.prototype.saveSecondLevel = function () {
+        var _this = this;
+        if (this.creationMode) {
+            this.http.post(this.coreUrl + "rest/doctypes/secondLevel", this.currentSecondLevel)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.secondLevelAdded);
+                _this.creationMode = false;
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+        else {
+            this.http.put(this.coreUrl + "rest/doctypes/secondLevel/" + this.currentSecondLevel.doctypes_second_level_id, this.currentSecondLevel)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.secondLevelUpdated);
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+    };
     // moveEntity() {
     //     this.http.put(this.coreUrl + "rest/entities/" + this.currentDoctype.entity_id, this.currentDoctype)
     //             .subscribe((data: any) => {
@@ -215,6 +230,57 @@ var DoctypesAdministrationComponent = /** @class */ (function (_super) {
         $j('#jstree').jstree('deselect_all');
         $j('#jstree').jstree('select_node', this.doctypes[0]);
     };
+    DoctypesAdministrationComponent.prototype.removeFirstLevel = function () {
+        var _this = this;
+        var r = confirm(this.lang.confirmAction + ' ' + this.lang.delete + ' « ' + this.currentFirstLevel.doctypes_first_level_label + ' »');
+        if (r) {
+            this.http.delete(this.coreUrl + "rest/doctypes/firstLevel/" + this.currentFirstLevel.doctypes_first_level_id)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.firstLevelDeleted);
+                $j('#jstree').jstree('select_node', _this.doctypes[0]);
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+    };
+    DoctypesAdministrationComponent.prototype.removeSecondLevel = function () {
+        var _this = this;
+        var r = confirm(this.lang.confirmAction + ' ' + this.lang.delete + ' « ' + this.currentSecondLevel.doctypes_second_level_label + ' »');
+        if (r) {
+            this.http.delete(this.coreUrl + "rest/doctypes/secondLevel/" + this.currentSecondLevel.doctypes_second_level_id)
+                .subscribe(function (data) {
+                _this.doctypes = data['doctypeTree'];
+                $j('#jstree').jstree(true).settings.core.data = _this.doctypes;
+                $j('#jstree').jstree("refresh");
+                _this.notify.success(_this.lang.secondLevelDeleted);
+                $j('#jstree').jstree('select_node', _this.doctypes[0]);
+            }, function (err) {
+                _this.notify.error(err.error.errors);
+            });
+        }
+    };
+    DoctypesAdministrationComponent.prototype.prepareDoctypeAdd = function () {
+        var _this = this;
+        this.currentFirstLevel = {};
+        this.currentSecondLevel = {};
+        this.currentType = {};
+        $j('#jstree').jstree('deselect_all');
+        this.http.get(this.coreUrl + "rest/administration/doctypes/new")
+            .subscribe(function (data) {
+            _this.folderTypes = data['folderTypes'];
+            _this.firstLevels = data['firstLevel'];
+            _this.secondLevels = data['secondLevel'];
+            _this.processModes = data['processModes'];
+            _this.models = data['models'];
+            _this.indexes = data['models'];
+        }, function (err) {
+            _this.notify.error(err.error.errors);
+        });
+        this.creationMode = true;
+    };
     DoctypesAdministrationComponent = __decorate([
         core_1.Component({
             templateUrl: angularGlobals["doctypes-administrationView"],
@@ -223,5 +289,5 @@ var DoctypesAdministrationComponent = /** @class */ (function (_super) {
         __metadata("design:paramtypes", [core_1.ChangeDetectorRef, layout_1.MediaMatcher, http_1.HttpClient, notification_service_1.NotificationService])
     ], DoctypesAdministrationComponent);
     return DoctypesAdministrationComponent;
-}(autocomplete_plugin_1.AutoCompletePlugin));
+}());
 exports.DoctypesAdministrationComponent = DoctypesAdministrationComponent;
diff --git a/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.ts
index 6c97f7ae4a9e5f0c5123aaf0f58dcf03877e43fd..ffccc5c2d78ba61ed7b2e05ea0b2409c5e56a00b 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/doctypes-administration.component.ts
@@ -4,8 +4,6 @@ import { HttpClient } from '@angular/common/http';
 import { LANG } from '../translate.component';
 import { NotificationService } from '../notification.service';
 
-import { AutoCompletePlugin } from '../../plugins/autocomplete.plugin';
-
 declare function $j(selector: any): any;
 
 declare var angularGlobals: any;
@@ -16,7 +14,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 
-export class DoctypesAdministrationComponent extends AutoCompletePlugin implements OnInit {
+export class DoctypesAdministrationComponent implements OnInit {
     mobileQuery: MediaQueryList;
     private _mobileQueryListener: () => void;
     coreUrl: string;
@@ -27,7 +25,7 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
     currentSecondLevel: any = false;
     currentFirstLevel: any = false;
     firstLevels: any = false;
-    FolderTypes: any = false;
+    folderTypes: any = false;
     secondLevels: any = false;
     processModes: any = false;
     models: any = false;
@@ -38,7 +36,6 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
 
 
     constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
-        super(http, ['usersAndEntities']);
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -112,41 +109,43 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     loadDoctype(data: any) {
+        this.creationMode = false;
+
         // Doctype
         if(data.original.type_id){
+            this.currentFirstLevel  = false;
+            this.currentSecondLevel = false;
             this.http.get(this.coreUrl + "rest/doctypes/types/" + data.original.type_id )
                 .subscribe((data: any) => {
-                    this.currentFirstLevel  = false;
-                    this.currentSecondLevel = false;
-                    this.currentType        = data['doctype'];
-                    this.secondLevels       = data['secondLevel'];
-                    this.processModes       = data['processModes'];
-                    this.models             = data['models'];
-                    this.indexes            = data['indexes'];
+                    this.currentType  = data['doctype'];
+                    this.secondLevels = data['secondLevel'];
+                    this.processModes = data['processModes'];
+                    this.models       = data['models'];
+                    this.indexes      = data['indexes'];
                 }, (err) => {
                     this.notify.error(err.error.errors);
                 });
 
         // Second level
         } else if(data.original.doctypes_second_level_id) {
+            this.currentFirstLevel  = false;
+            this.currentType        = false;
             this.http.get(this.coreUrl + "rest/doctypes/secondLevel/" + data.original.doctypes_second_level_id )
                 .subscribe((data: any) => {
-                    this.currentFirstLevel  = false;
                     this.currentSecondLevel = data['secondLevel'];
                     this.firstLevels        = data['firstLevel'];
-                    this.currentType        = false;
                 }, (err) => {
                     this.notify.error(err.error.errors);
                 });
 
         // First level
         } else {
+            this.currentSecondLevel = false;
+            this.currentType        = false;
             this.http.get(this.coreUrl + "rest/doctypes/firstLevel/" + data.original.doctypes_first_level_id )
                 .subscribe((data: any) => {
                     this.currentFirstLevel  = data['firstLevel'];
-                    this.FolderTypes        = data['folderTypes'];
-                    this.currentSecondLevel = false;
-                    this.currentType        = false;
+                    this.folderTypes        = data['folderTypes'];
                 }, (err) => {
                     this.notify.error(err.error.errors);
                 });
@@ -180,31 +179,55 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
 
     // }
 
-    // saveEntity() {
-    //     if (this.creationMode) {
-    //         this.http.post(this.coreUrl + "rest/entities", this.currentDoctype)
-    //             .subscribe((data: any) => {
-    //                 this.creationMode = false;
-    //                 this.doctypes.push(this.currentDoctype);
-    //                 $j('#jstree').jstree("refresh");
-    //                 this.notify.success(this.lang.entityAdded);
-    //             }, (err) => {
-    //                 this.notify.error(err.error.errors);
-    //             });
-    //     } else {
-    //         this.http.put(this.coreUrl + "rest/entities/" + this.currentDoctype.entity_id, this.currentDoctype)
-    //             .subscribe((data: any) => {
-    //                 console.log(data);
-    //                 this.doctypes = data['entities'];
-    //                 $j('#jstree').jstree(true).settings.core.data = this.doctypes;
-    //                 $j('#jstree').jstree("refresh");
-    //                 this.notify.success(this.lang.entityUpdated);
-    //             }, (err) => {
-    //                 this.notify.error(err.error.errors);
-    //             });
-    //     }
-    // }
+    saveFirstLevel() {
+        if (this.creationMode) {
+            this.http.post(this.coreUrl + "rest/doctypes/firstLevel", this.currentFirstLevel)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.firstLevelAdded);
+                    this.creationMode = false;
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        } else {
+            this.http.put(this.coreUrl + "rest/doctypes/firstLevel/" + this.currentFirstLevel.doctypes_first_level_id, this.currentFirstLevel)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.firstLevelUpdated);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        }
+    }
 
+    saveSecondLevel() {
+        if (this.creationMode) {
+            this.http.post(this.coreUrl + "rest/doctypes/secondLevel", this.currentSecondLevel)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.secondLevelAdded);
+                    this.creationMode = false;
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        } else {
+            this.http.put(this.coreUrl + "rest/doctypes/secondLevel/" + this.currentSecondLevel.doctypes_second_level_id, this.currentSecondLevel)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.secondLevelUpdated);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        }
+    }
     // moveEntity() {
     //     this.http.put(this.coreUrl + "rest/entities/" + this.currentDoctype.entity_id, this.currentDoctype)
     //             .subscribe((data: any) => {
@@ -212,7 +235,6 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
     //             }, (err) => {
     //                 this.notify.error(err.error.errors);
     //             });
-
     // }
 
     readMode() {
@@ -221,40 +243,57 @@ export class DoctypesAdministrationComponent extends AutoCompletePlugin implemen
         $j('#jstree').jstree('select_node', this.doctypes[0]);
     }
 
-    // removeEntity() {
-    //     this.http.delete(this.coreUrl + "rest/entities/" + this.currentDoctype.entity_id)
-    //         .subscribe((data: any) => {
-    //             this.doctypes = data['entities'];
-    //             $j('#jstree').jstree("refresh");
-    //             this.notify.success(this.lang.entityDeleted);
-    //         }, (err) => {
-    //             this.notify.error(err.error.errors);
-    //         });
-    // }
+    removeFirstLevel() {
+        let r = confirm(this.lang.confirmAction + ' ' + this.lang.delete + ' « ' + this.currentFirstLevel.doctypes_first_level_label + ' »');
 
-    // prepareEntityAdd() {
-    //     $j('#jstree').jstree('deselect_all');
-    //     this.creationMode = true;
-    //     this.currentDoctype = {};
-    // }
+        if (r) {
+            this.http.delete(this.coreUrl + "rest/doctypes/firstLevel/" + this.currentFirstLevel.doctypes_first_level_id)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.firstLevelDeleted);
+                    $j('#jstree').jstree('select_node', this.doctypes[0]);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        }
+    }
 
+    removeSecondLevel() {
+        let r = confirm(this.lang.confirmAction + ' ' + this.lang.delete + ' « ' + this.currentSecondLevel.doctypes_second_level_label + ' »');
 
-    // updateStatus(entity: any, method: string) {
-    //     this.http.put(this.coreUrl + "rest/entities/" + entity['entity_id'] + "/status", { "method": method })
-    //         .subscribe((data: any) => {
-    //             this.notify.success("");
-    //         }, (err) => {
-    //             this.notify.error(err.error.errors);
-    //         });
-    // }
+        if (r) {
+            this.http.delete(this.coreUrl + "rest/doctypes/secondLevel/" + this.currentSecondLevel.doctypes_second_level_id)
+                .subscribe((data: any) => {
+                    this.doctypes = data['doctypeTree'];
+                    $j('#jstree').jstree(true).settings.core.data = this.doctypes;
+                    $j('#jstree').jstree("refresh");
+                    this.notify.success(this.lang.secondLevelDeleted);
+                    $j('#jstree').jstree('select_node', this.doctypes[0]);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        }
+    }
+
+    prepareDoctypeAdd() {
+        this.currentFirstLevel  = {};
+        this.currentSecondLevel = {};
+        this.currentType        = {};
+        $j('#jstree').jstree('deselect_all');
+        this.http.get(this.coreUrl + "rest/administration/doctypes/new")
+            .subscribe((data: any) => {
+                this.folderTypes  = data['folderTypes'];
+                this.firstLevels  = data['firstLevel'];
+                this.secondLevels = data['secondLevel'];
+                this.processModes = data['processModes'];
+                this.models       = data['models'];
+                this.indexes      = data['models'];
+            }, (err) => {
+                this.notify.error(err.error.errors);
+            });
+        this.creationMode = true;
+    }
 
-    // delete(entity: any) {
-    //     this.http.delete(this.coreUrl + "rest/entities/" + entity['entity_id'])
-    //         .subscribe((data: any) => {
-    //             this.notify.success(this.lang.entityDeleted);
-    //             this.doctypes = data['entities'];
-    //         }, (err) => {
-    //             this.notify.error(err.error.errors);
-    //         });
-    // }
 }
diff --git a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js
index 1e4ecc7e25c22cf7342f38cae7b459a69fbb65ef..6a92d253d8cc355976afa85a2900ee79c1c0dc8d 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js
+++ b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.js
@@ -32,7 +32,7 @@ var autocomplete_plugin_1 = require("../../plugins/autocomplete.plugin");
 var EntitiesAdministrationComponent = /** @class */ (function (_super) {
     __extends(EntitiesAdministrationComponent, _super);
     function EntitiesAdministrationComponent(changeDetectorRef, media, http, notify, dialog) {
-        var _this = _super.call(this, http, 'usersAndEntities') || this;
+        var _this = _super.call(this, http, ['usersAndEntities']) || this;
         _this.http = http;
         _this.notify = notify;
         _this.dialog = dialog;
@@ -346,7 +346,7 @@ exports.EntitiesAdministrationComponent = EntitiesAdministrationComponent;
 var EntitiesAdministrationRedirectModalComponent = /** @class */ (function (_super) {
     __extends(EntitiesAdministrationRedirectModalComponent, _super);
     function EntitiesAdministrationRedirectModalComponent(http, data, dialogRef) {
-        var _this = _super.call(this, http, 'entities') || this;
+        var _this = _super.call(this, http, ['entities']) || this;
         _this.http = http;
         _this.data = data;
         _this.dialogRef = dialogRef;
diff --git a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
index e9e1edc2f3da183097ea1a9b0c7a9750ea2fdd3b..884781b497f230d90e1c26c162483a08c6d9f6bb 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
@@ -47,7 +47,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
 
 
     constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, public dialog: MatDialog) {
-        super(http, 'usersAndEntities');
+        super(http, ['usersAndEntities']);
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -341,6 +341,6 @@ export class EntitiesAdministrationRedirectModalComponent extends AutoCompletePl
     lang: any = LANG;
 
     constructor(public http: HttpClient, @Inject(MAT_DIALOG_DATA) public data: any, public dialogRef: MatDialogRef<EntitiesAdministrationRedirectModalComponent>) {
-        super(http, 'entities');
+        super(http, ['entities']);
     }
 }
\ No newline at end of file
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.js b/apps/maarch_entreprise/js/angular/lang/lang-fr.js
index 3ecd083907bd0e471a7c6a9223f5de045f7d57c7..cd0f2afb0084963db04bd43f47aca94a317d71b1 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.js
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.js
@@ -304,4 +304,10 @@ exports.LANG_FR = {
     "generatedFile": "Fichier généré",
     "destruction": "Destruction",
     "conservation": "Conservation",
+    "firstLevelAdded": "Chemise créée",
+    "firstLevelUpdated": "Chemise mise à jour",
+    "firstLevelDeleted": "Chemise supprimée",
+    "secondLevelAdded": "Sous-chemise créée",
+    "secondLevelUpdated": "Sous-chemise mise à jour",
+    "secondLevelDeleted": "Sous-chemise supprimée",
 };
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index fc6ed5896384759a668be107d237063259f59d34..023926dfc2d11b8929f6d1c0e29326ce190f6da8 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -302,4 +302,10 @@ export const LANG_FR = {
     "generatedFile"                 : "Fichier généré",
     "destruction"                 : "Destruction",
     "conservation"                 : "Conservation",
+    "firstLevelAdded"                 : "Chemise créée",
+    "firstLevelUpdated"                 : "Chemise mise à jour",
+    "firstLevelDeleted"                 : "Chemise supprimée",
+    "secondLevelAdded"                 : "Sous-chemise créée",
+    "secondLevelUpdated"                 : "Sous-chemise mise à jour",
+    "secondLevelDeleted"                 : "Sous-chemise supprimée",
 };
\ No newline at end of file
diff --git a/core/Test/DoctypeControllerTest.php b/core/Test/DoctypeControllerTest.php
index 7daf03237aae233cec80f2d39aecc6cc92d296ff..c72d9dc59df6829a297a1d2f2a43c02c46425fd8 100755
--- a/core/Test/DoctypeControllerTest.php
+++ b/core/Test/DoctypeControllerTest.php
@@ -39,42 +39,22 @@ class DoctypeControllerTest extends TestCase
         $this->assertNotNull($responseBody->structure[0]->enabled);
     }
 
-    public function testinitFirstLevel()
+    public function testinitDoctypes()
     {
         $environment  = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request      = \Slim\Http\Request::createFromEnvironment($environment);
 
         $firstLevelController = new \Doctype\controllers\FirstLevelController();
-        $response          = $firstLevelController->initFirstLevel($request, new \Slim\Http\Response());
+        $response          = $firstLevelController->initDoctypes($request, new \Slim\Http\Response());
         $responseBody      = json_decode((string)$response->getBody());
 
-        $this->assertNotNull($responseBody->folderType);
-        $this->assertNotNull($responseBody->folderType[0]->foldertype_id);
-        $this->assertNotNull($responseBody->folderType[0]->foldertype_label);
-    }
-
-    public function testinitSecondLevel()
-    {
-        $environment  = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
-        $request      = \Slim\Http\Request::createFromEnvironment($environment);
-
-        $secondLevelController = new \Doctype\controllers\SecondLevelController();
-        $response          = $secondLevelController->initSecondLevel($request, new \Slim\Http\Response());
-        $responseBody      = json_decode((string)$response->getBody());
+        $this->assertNotNull($responseBody->folderTypes);
+        $this->assertNotNull($responseBody->folderTypes[0]->foldertype_id);
+        $this->assertNotNull($responseBody->folderTypes[0]->foldertype_label);
 
         $this->assertNotNull($responseBody->firstLevel);
         $this->assertNotNull($responseBody->firstLevel[0]->doctypes_first_level_id);
         $this->assertNotNull($responseBody->firstLevel[0]->doctypes_first_level_label);
-    }
-
-    public function testinitDoctype()
-    {
-        $environment  = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
-        $request      = \Slim\Http\Request::createFromEnvironment($environment);
-
-        $doctypeController = new \Doctype\controllers\DoctypeController();
-        $response          = $doctypeController->initDoctype($request, new \Slim\Http\Response());
-        $responseBody      = json_decode((string)$response->getBody());
 
         $this->assertNotNull($responseBody->secondLevel);
         $this->assertNotNull($responseBody->processModes);
@@ -105,7 +85,7 @@ class DoctypeControllerTest extends TestCase
         $response     = $firstLevelController->create($fullRequest, new \Slim\Http\Response());
         $responseBody = json_decode((string)$response->getBody());
 
-        self::$firstLevelId = $responseBody->firstLevel;
+        self::$firstLevelId = $responseBody->firstLevelId;
 
         $this->assertInternalType('int', self::$firstLevelId);
 
@@ -144,7 +124,7 @@ class DoctypeControllerTest extends TestCase
         $response     = $secondLevelController->create($fullRequest, new \Slim\Http\Response());
         $responseBody = json_decode((string)$response->getBody());
 
-        self::$secondLevelId = $responseBody->secondLevel;
+        self::$secondLevelId = $responseBody->secondLevelId;
 
         $this->assertInternalType('int', self::$secondLevelId);
 
@@ -245,10 +225,10 @@ class DoctypeControllerTest extends TestCase
         $response     = $firstLevelController->update($fullRequest, new \Slim\Http\Response(), ["id" => self::$firstLevelId]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame(self::$firstLevelId, $responseBody->firstLevel->doctypes_first_level_id);
-        $this->assertSame('testTUfirstlevelUPDATE', $responseBody->firstLevel->doctypes_first_level_label);
-        $this->assertSame('#7777', $responseBody->firstLevel->css_style);
-        $this->assertSame('Y', $responseBody->firstLevel->enabled);
+        $this->assertSame(self::$firstLevelId, $responseBody->firstLevelId->doctypes_first_level_id);
+        $this->assertSame('testTUfirstlevelUPDATE', $responseBody->firstLevelId->doctypes_first_level_label);
+        $this->assertSame('#7777', $responseBody->firstLevelId->css_style);
+        $this->assertSame('Y', $responseBody->firstLevelId->enabled);
 
         // UPDATE FAIL
         $aArgs = [
@@ -287,11 +267,11 @@ class DoctypeControllerTest extends TestCase
         $response     = $secondLevelController->update($fullRequest, new \Slim\Http\Response(), ["id" => self::$secondLevelId]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame(self::$secondLevelId, $responseBody->secondLevel->doctypes_second_level_id);
-        $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevel->doctypes_second_level_label);
-        $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id);
-        $this->assertSame('#7777', $responseBody->secondLevel->css_style);
-        $this->assertSame('Y', $responseBody->secondLevel->enabled);
+        $this->assertSame(self::$secondLevelId, $responseBody->secondLevelId->doctypes_second_level_id);
+        $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevelId->doctypes_second_level_label);
+        $this->assertSame(self::$firstLevelId, $responseBody->secondLevelId->doctypes_first_level_id);
+        $this->assertSame('#7777', $responseBody->secondLevelId->css_style);
+        $this->assertSame('Y', $responseBody->secondLevelId->enabled);
 
         // UPDATE FAIL
         $aArgs = [
@@ -387,7 +367,7 @@ class DoctypeControllerTest extends TestCase
         $this->assertSame('testTUfirstlevelUPDATE', $responseBody->firstLevel->doctypes_first_level_label);
         $this->assertSame('#7777', $responseBody->firstLevel->css_style);
         $this->assertSame(true, $responseBody->firstLevel->enabled);
-        $this->assertNotNull($responseBody->firstLevel->folderTypeSelected);
+        $this->assertNotNull($responseBody->firstLevel->foldertype_id);
         $this->assertNotNull($responseBody->folderTypes);
 
         // READ FIRST LEVEL FAIL
@@ -607,11 +587,11 @@ class DoctypeControllerTest extends TestCase
         $response     = $secondLevelController->delete($fullRequest, new \Slim\Http\Response(), ["id" => self::$secondLevelId]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame(self::$secondLevelId, $responseBody->secondLevel->doctypes_second_level_id);
-        $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id);
-        $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevel->doctypes_second_level_label);
-        $this->assertSame('#7777', $responseBody->secondLevel->css_style);
-        $this->assertSame('N', $responseBody->secondLevel->enabled);
+        $this->assertSame(self::$secondLevelId, $responseBody->secondLevelDeleted->doctypes_second_level_id);
+        $this->assertSame(self::$firstLevelId, $responseBody->secondLevelDeleted->doctypes_first_level_id);
+        $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevelDeleted->doctypes_second_level_label);
+        $this->assertSame('#7777', $responseBody->secondLevelDeleted->css_style);
+        $this->assertSame('N', $responseBody->secondLevelDeleted->enabled);
 
         //  DELETE FAIL
         $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
@@ -640,10 +620,10 @@ class DoctypeControllerTest extends TestCase
         $response     = $firstLevelController->delete($fullRequest, new \Slim\Http\Response(), ["id" => self::$firstLevelId]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame(self::$firstLevelId, $responseBody->firstLevel->doctypes_first_level_id);
-        $this->assertSame('testTUfirstlevelUPDATE', $responseBody->firstLevel->doctypes_first_level_label);
-        $this->assertSame('#7777', $responseBody->firstLevel->css_style);
-        $this->assertSame('N', $responseBody->firstLevel->enabled);
+        $this->assertSame(self::$firstLevelId, $responseBody->firstLevelDeleted->doctypes_first_level_id);
+        $this->assertSame('testTUfirstlevelUPDATE', $responseBody->firstLevelDeleted->doctypes_first_level_label);
+        $this->assertSame('#7777', $responseBody->firstLevelDeleted->css_style);
+        $this->assertSame('N', $responseBody->firstLevelDeleted->enabled);
 
         //  DELETE FAIL
         $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
diff --git a/package-lock.json b/package-lock.json
index d2c8814d4927e325e59d2ea42c2addc4a5173f49..3067bfa391109180085ce10f6bbd8ff2fa9858ef 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -128,7 +128,7 @@
     "@browserify/acorn5-object-spread": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/@browserify/acorn5-object-spread/-/acorn5-object-spread-5.0.1.tgz",
-      "integrity": "sha1-kumzf5e+rJ7EKaPMR53tOAKXVAw=",
+      "integrity": "sha512-sFCUPzgeEjdq3rinwy4TFXtak2YZdhqpj6MdNusxkdTFr9TXAUEYK4YQSamR8Joqt/yii1drgl5hk8q/AtJDKA==",
       "dev": true,
       "requires": {
         "acorn": "5.3.0"
@@ -137,7 +137,7 @@
         "acorn": {
           "version": "5.3.0",
           "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz",
-          "integrity": "sha1-dEbTlFnFT7SagObuZHgUm5QOyCI=",
+          "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==",
           "dev": true
         }
       }
@@ -145,7 +145,7 @@
     "@types/datatables.net": {
       "version": "1.10.8",
       "resolved": "https://registry.npmjs.org/@types/datatables.net/-/datatables.net-1.10.8.tgz",
-      "integrity": "sha1-La3k1KULWHq3l0px5J7Q654Y8wA=",
+      "integrity": "sha512-5RzUppTRNhVJhAtP1Pq+hFVJgFP7V7yNt8Tjob8cXFg1zo91mtCR6xZn4JJ1hT6fYM1w9Bz9Iy62ja1bbZx7ZA==",
       "dev": true,
       "requires": {
         "@types/jquery": "2.0.48"
@@ -154,13 +154,13 @@
     "@types/jquery": {
       "version": "2.0.48",
       "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.48.tgz",
-      "integrity": "sha1-PpDYzeLSkBXlWDAX94MMs5dbLu8=",
+      "integrity": "sha512-nNLzUrVjaRV/Ds1eHZLYTd7IZxs38cwwLSaqMJj8OTXY8xNUbxSK69bi9cMLvQ7dm/IBeQ1wHwQ0S1uYa0rd2w==",
       "dev": true
     },
     "@types/node": {
       "version": "7.0.55",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.55.tgz",
-      "integrity": "sha1-e7YhX/lCWh1xQQa+nw0+DiiCkog=",
+      "integrity": "sha512-diCxfWNT4g2UM9Y+BPgy4s3egcZ2qOXc0mXLauvbsBUq9SBKQfh0SmuEUEhJVFZt/p6UDsjg1s2EgfM6OSlp4g==",
       "dev": true
     },
     "JSONStream": {
@@ -248,7 +248,7 @@
     "anymatch": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
-      "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
       "dev": true,
       "requires": {
         "micromatch": "2.3.11",
@@ -283,7 +283,7 @@
     "arr-flatten": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
       "dev": true
     },
     "arr-union": {
@@ -331,7 +331,7 @@
     "asn1.js": {
       "version": "4.9.2",
       "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
-      "integrity": "sha1-gRfvT37YfNj4kES1v/l6wkOhbJo=",
+      "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
       "dev": true,
       "requires": {
         "bn.js": "4.11.8",
@@ -446,7 +446,7 @@
     "base64-js": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
-      "integrity": "sha1-qRlH2h9KUW6jjltOwOw3c2deCIY=",
+      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
       "dev": true
     },
     "bcrypt-pbkdf": {
@@ -477,7 +477,7 @@
     "bn.js": {
       "version": "4.11.8",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-      "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
       "dev": true
     },
     "boom": {
@@ -607,7 +607,7 @@
     "browser-pack": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.3.tgz",
-      "integrity": "sha1-kcqWUYWD71gKsGOjCd5i5Ad2ejk=",
+      "integrity": "sha512-Jo+RYsn8X8OhyP9tMXXg0ueR2fW696HUu1Hf3/DeiwNean1oGiPtdgGRNuUHBpPHzBH3x4n1kzAlgOgHSIq88g==",
       "dev": true,
       "requires": {
         "JSONStream": "1.3.2",
@@ -638,7 +638,7 @@
     "browserify": {
       "version": "15.2.0",
       "resolved": "https://registry.npmjs.org/browserify/-/browserify-15.2.0.tgz",
-      "integrity": "sha1-HhIbofpyz5/S2N8AL4Z0totF34k=",
+      "integrity": "sha512-IHYyFPm2XjJCL+VV0ZtFv8wn/sAHVOm83q3yfSn8YWbZ9jcybgPKxSDdiuMU+35jUL1914l74RnXXPD9Iyo9yg==",
       "dev": true,
       "requires": {
         "JSONStream": "1.3.2",
@@ -694,7 +694,7 @@
     "browserify-aes": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
-      "integrity": "sha1-OLerVe24Bv8tzaGn8WIHc6R3xJ8=",
+      "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
       "dev": true,
       "requires": {
         "buffer-xor": "1.0.3",
@@ -755,7 +755,7 @@
     "browserify-zlib": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
       "dev": true,
       "requires": {
         "pako": "1.0.6"
@@ -764,7 +764,7 @@
     "buffer": {
       "version": "5.0.8",
       "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz",
-      "integrity": "sha1-hNqlLnzy+ozkGVvFzw94CeCTCyQ=",
+      "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==",
       "dev": true,
       "requires": {
         "base64-js": "1.2.1",
@@ -886,7 +886,7 @@
     "cipher-base": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
       "dev": true,
       "requires": {
         "inherits": "2.0.3",
@@ -1051,7 +1051,7 @@
     "commander": {
       "version": "2.14.1",
       "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
-      "integrity": "sha1-IjUSPjevjKPGXfRbAm29NXsBuao=",
+      "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==",
       "dev": true
     },
     "component-emitter": {
@@ -1224,7 +1224,7 @@
     "crypto-browserify": {
       "version": "3.12.0",
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-      "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
       "dev": true,
       "requires": {
         "browserify-cipher": "1.0.0",
@@ -1374,7 +1374,7 @@
     "detective": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/detective/-/detective-5.0.2.tgz",
-      "integrity": "sha1-hOwuHFgedCEeKuT/zh7fUsMmP4Q=",
+      "integrity": "sha512-NUsLoezj4wb9o7vpxS9F3L5vcO87ceyRBcl48op06YFNwkyIEY997JpSCA5lDlDuDc6JxOtaL5qfK3muoWxpMA==",
       "dev": true,
       "requires": {
         "@browserify/acorn5-object-spread": "5.0.1",
@@ -1385,7 +1385,7 @@
         "acorn": {
           "version": "5.3.0",
           "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz",
-          "integrity": "sha1-dEbTlFnFT7SagObuZHgUm5QOyCI=",
+          "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==",
           "dev": true
         }
       }
@@ -1410,7 +1410,7 @@
     "domino": {
       "version": "1.0.30",
       "resolved": "https://registry.npmjs.org/domino/-/domino-1.0.30.tgz",
-      "integrity": "sha1-VKQVTsrpaGFmgPj+ujzt/zVccfQ=",
+      "integrity": "sha512-ikq8WiDSkICdkElud317F2Sigc6A3EDpWsxWBwIZqOl95km4p/Vc9Rj98id7qKgsjDmExj0AVM7JOd4bb647Xg==",
       "dev": true
     },
     "dot-prop": {
@@ -1507,7 +1507,7 @@
     "evp_bytestokey": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
       "dev": true,
       "requires": {
         "md5.js": "1.3.4",
@@ -2603,7 +2603,7 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
     },
     "gauge": {
@@ -2690,7 +2690,7 @@
     "glob": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
       "dev": true,
       "requires": {
         "fs.realpath": "1.0.0",
@@ -2885,7 +2885,7 @@
     "hash.js": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
-      "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=",
+      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
       "dev": true,
       "requires": {
         "inherits": "2.0.3",
@@ -3376,7 +3376,7 @@
     "jquery": {
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
-      "integrity": "sha1-lYzinoHJeQ8xvneS311NlfxX+8o="
+      "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
     },
     "jquery-typeahead": {
       "version": "2.10.4",
@@ -3745,7 +3745,7 @@
     "miller-rabin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
       "dev": true,
       "requires": {
         "bn.js": "4.11.8",
@@ -3782,7 +3782,7 @@
     "minimatch": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
       "dev": true,
       "requires": {
         "brace-expansion": "1.1.8"
@@ -3835,7 +3835,7 @@
     "module-deps": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-5.0.1.tgz",
-      "integrity": "sha1-O8R8FLCm2SWv8uxKF3tFapauA5Y=",
+      "integrity": "sha512-sigq/hm/L+Z5IGi1DDl0x2ptkw7S86aFh213QhPLD8v9Opv90IHzKIuWJrRa5bJ77DVKHco2CfIEuThcT/vDJA==",
       "dev": true,
       "requires": {
         "JSONStream": "1.3.2",
@@ -4570,7 +4570,7 @@
     "pako": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
-      "integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg=",
+      "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
       "dev": true
     },
     "parents": {
@@ -4696,7 +4696,7 @@
     "pbkdf2": {
       "version": "3.0.14",
       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
-      "integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=",
+      "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
       "dev": true,
       "requires": {
         "create-hash": "1.1.3",
@@ -4826,7 +4826,7 @@
     "randomatic": {
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
-      "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
+      "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
       "dev": true,
       "requires": {
         "is-number": "3.0.0",
@@ -4867,7 +4867,7 @@
     "randombytes": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
-      "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=",
+      "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
       "dev": true,
       "requires": {
         "safe-buffer": "5.1.1"
@@ -4876,7 +4876,7 @@
     "randomfill": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz",
-      "integrity": "sha1-uWt99YfwHdkXJsQY8wVTsUGOPWI=",
+      "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==",
       "dev": true,
       "requires": {
         "randombytes": "2.0.6",
@@ -4928,7 +4928,7 @@
     "readable-stream": {
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
-      "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=",
+      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
       "dev": true,
       "requires": {
         "core-util-is": "1.0.2",
@@ -4976,13 +4976,13 @@
     "reflect-metadata": {
       "version": "0.1.12",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz",
-      "integrity": "sha1-MRvwxrY814LyKKgavhRqK/qcVvI=",
+      "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==",
       "dev": true
     },
     "regex-cache": {
       "version": "0.4.4",
       "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
-      "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
       "dev": true,
       "requires": {
         "is-equal-shallow": "0.1.3"
@@ -5087,7 +5087,7 @@
     "resolve": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
-      "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=",
+      "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
       "dev": true,
       "requires": {
         "path-parse": "1.0.5"
@@ -5127,7 +5127,7 @@
     "rxjs": {
       "version": "5.5.6",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz",
-      "integrity": "sha1-4x+5bW/S/x/YS86orpwC0AcXnAI=",
+      "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==",
       "dev": true,
       "requires": {
         "symbol-observable": "1.0.1"
@@ -5144,7 +5144,7 @@
     "safe-buffer": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-      "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=",
+      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
       "dev": true
     },
     "safe-regex": {
@@ -5673,7 +5673,7 @@
     "stream-http": {
       "version": "2.8.0",
       "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz",
-      "integrity": "sha1-/YZUbaybHJGv+PxdKHuY+vtBvBA=",
+      "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==",
       "dev": true,
       "requires": {
         "builtin-status-codes": "3.0.0",
@@ -5707,7 +5707,7 @@
     "string_decoder": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
-      "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
       "dev": true,
       "requires": {
         "safe-buffer": "5.1.1"
@@ -5785,7 +5785,7 @@
     "systemjs": {
       "version": "0.20.19",
       "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.20.19.tgz",
-      "integrity": "sha1-wrnnnBn0vqU6GbHtP5dP+0Y76Uk=",
+      "integrity": "sha512-H/rKwNEEyej/+IhkmFNmKFyJul8tbH/muiPq5TyNoVTwsGhUjRsN3NlFnFQUvFXA3+GQmsXkCNXU6QKPl779aw==",
       "dev": true
     },
     "tar": {
@@ -6055,7 +6055,7 @@
     "tslib": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
-      "integrity": "sha1-43qG/ajLuvI6BX9HPJ9Nxk5fwug=",
+      "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
       "dev": true
     },
     "tty-browserify": {
@@ -6102,7 +6102,7 @@
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         }
       }
@@ -6646,7 +6646,7 @@
     "zone.js": {
       "version": "0.8.20",
       "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.20.tgz",
-      "integrity": "sha1-ohjEjbCUZLGf9vyPDUu1sQRuGF0="
+      "integrity": "sha512-FXlA37ErSXCMy5RNBcGFgCI/Zivqzr0D19GuvDxhcYIJc7xkFp6c29DKyODJu0Zo+EMyur/WPPgcBh1EHjB9jA=="
     }
   }
 }
diff --git a/rest/index.php b/rest/index.php
index 9610937375061d85119a3e17626637248153c712..0cd7e436397fce48f8e1fcbb79d1cb171f5589c5 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -272,20 +272,18 @@ $app->post('/doctypes/firstLevel', \Doctype\controllers\FirstLevelController::cl
 $app->get('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':getById');
 $app->put('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':update');
 $app->delete('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':delete');
-$app->get('/administration/doctypes/firstLevel/new', \Doctype\controllers\FirstLevelController::class . ':initFirstLevel');
+$app->get('/administration/doctypes/new', \Doctype\controllers\FirstLevelController::class . ':initDoctypes');
 
 $app->post('/doctypes/secondLevel', \Doctype\controllers\SecondLevelController::class . ':create');
 $app->get('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':getById');
 $app->put('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':update');
 $app->delete('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':delete');
-$app->get('/administration/doctypes/secondLevel/new', \Doctype\controllers\SecondLevelController::class . ':initSecondLevel');
 
 $app->post('/doctypes/types', \Doctype\controllers\DoctypeController::class . ':create');
 $app->get('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':getById');
 $app->put('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':update');
 $app->delete('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':delete');
 $app->delete('/doctypes/types/{id}/redirect', \Doctype\controllers\DoctypeController::class . ':deleteRedirect');
-$app->get('/administration/doctypes/types/new', \Doctype\controllers\DoctypeController::class . ':initDoctype');
 
 //Reports
 $app->get('/reports/groups', \Report\controllers\ReportController::class . ':getGroups');
diff --git a/src/app/doctype/controllers/DoctypeController.php b/src/app/doctype/controllers/DoctypeController.php
index e1d9db75add755ca35b5d834be579efb7a457111..f85bd0abf3eec2e177fe8b4913c327c29029a204 100644
--- a/src/app/doctype/controllers/DoctypeController.php
+++ b/src/app/doctype/controllers/DoctypeController.php
@@ -58,14 +58,6 @@ class DoctypeController
         return $response->withJson($obj);
     }
 
-    public function initDoctype(Request $request, Response $response)
-    {
-        $obj['secondLevel']  = SecondLevelModel::get(['select' => ['doctypes_second_level_id', 'doctypes_second_level_label']]);
-        $obj['processModes'] = DoctypeModel::getProcessMode();
-        $obj['models']       = TemplateModel::getByTarget(['select' => ['template_id', 'template_label', 'template_comment'], 'template_target' => 'doctypes']);
-        return $response->withJson($obj);
-    }
-
     public function create(Request $request, Response $response)
     {
         if (!ServiceModel::hasService(['id' => 'admin_architecture', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
diff --git a/src/app/doctype/controllers/FirstLevelController.php b/src/app/doctype/controllers/FirstLevelController.php
index 67a82a5a681268bfb2e0461de61da5c4ddf737f7..c0d7de75b9b8d7ee66d977300beea7fdf0da2467 100644
--- a/src/app/doctype/controllers/FirstLevelController.php
+++ b/src/app/doctype/controllers/FirstLevelController.php
@@ -20,10 +20,19 @@ use Folder\models\FolderTypeModel;
 use Core\Models\ServiceModel;
 use Slim\Http\Request;
 use Slim\Http\Response;
+use Template\models\TemplateModel;
+use Doctype\models\DoctypeIndexesModel;
 
 class FirstLevelController
 {
     public function getTree(Request $request, Response $response)
+    {
+        return $response->withJson([
+            'structure' => FirstLevelController::getTreeFunction(),
+        ]);
+    }
+
+    public function getTreeFunction()
     {
         $firstLevels  = FirstLevelModel::get();
         $secondLevels = SecondLevelModel::get();
@@ -50,9 +59,7 @@ class FirstLevelController
             array_push($structure, $doctypeValue);
         }
 
-        return $response->withJson([
-            'structure' => $structure,
-        ]);
+        return $structure;
     }
 
     public function getById(Request $request, Response $response, $aArgs)
@@ -73,20 +80,25 @@ class FirstLevelController
             }
 
             $folderTypesSelected = FolderTypeModel::getFolderTypeDocTypeFirstLevel(['doctypes_first_level_id' => $aArgs['id']]);
-            $arrFolderTypesSelected = [];
+            $aFolderTypesSelected = [];
             foreach ($folderTypesSelected as $folderType) {
-                $arrFolderTypesSelected[] = $folderType['foldertype_id'];
+                $aFolderTypesSelected[] = $folderType['foldertype_id'];
             }
-            $obj['firstLevel']['folderTypeSelected'] = $arrFolderTypesSelected;
+            $obj['firstLevel']['foldertype_id'] = $aFolderTypesSelected;
         }
   
         $obj['folderTypes'] = FolderTypeModel::get(['select' => ['foldertype_id', 'foldertype_label']]);
         return $response->withJson($obj);
     }
 
-    public function initFirstLevel(Request $request, Response $response)
+    public function initDoctypes(Request $request, Response $response)
     {
-        $obj['folderType'] = FolderTypeModel::get(['select' => ['foldertype_id', 'foldertype_label']]);
+        $obj['folderTypes']  = FolderTypeModel::get(['select' => ['foldertype_id', 'foldertype_label']]);
+        $obj['firstLevel']   = FirstLevelModel::get(['select' => ['doctypes_first_level_id', 'doctypes_first_level_label']]);
+        $obj['secondLevel']  = SecondLevelModel::get(['select' => ['doctypes_second_level_id', 'doctypes_second_level_label']]);
+        $obj['processModes'] = DoctypeModel::getProcessMode();
+        $obj['models']       = TemplateModel::getByTarget(['select' => ['template_id', 'template_label', 'template_comment'], 'template_target' => 'doctypes']);
+        $obj['indexes']      = DoctypeIndexesModel::getAllIndexes();
         return $response->withJson($obj);
     }
 
@@ -125,7 +137,8 @@ class FirstLevelController
 
         return $response->withJson(
             [
-            'firstLevel'  => $firstLevelId
+            'firstLevelId' => $firstLevelId,
+            'doctypeTree'   => FirstLevelController::getTreeFunction(),
             ]
         );
     }
@@ -170,7 +183,8 @@ class FirstLevelController
 
         return $response->withJson(
             [
-            'firstLevel'  => $obj
+            'firstLevelId' => $obj,
+            'doctypeTree'   => FirstLevelController::getTreeFunction(),
             ]
         );
     }
@@ -201,7 +215,10 @@ class FirstLevelController
             'info'      => _DOCTYPE_FIRSTLEVEL_DELETED. ' : ' . $firstLevel['doctypes_first_level_label']
         ]);
 
-        return $response->withJson(['firstLevel' => $firstLevel]);
+        return $response->withJson([
+            'firstLevelDeleted' => $firstLevel,
+            'doctypeTree' => FirstLevelController::getTreeFunction()
+        ]);
     }
 
     protected function control($aArgs, $mode)
@@ -229,7 +246,11 @@ class FirstLevelController
             $errors[] = 'Invalid foldertype_id';
         }
 
-        if (!Validator::notEmpty()->validate($aArgs['enabled']) || ($aArgs['enabled'] != 'Y' && $aArgs['enabled'] != 'N')) {
+        if (empty($aArgs['enabled'])) {
+            $aArgs['enabled'] = 'Y';
+        }
+
+        if ($aArgs['enabled'] != 'Y' && $aArgs['enabled'] != 'N') {
             $errors[]= 'Invalid enabled value';
         }
 
@@ -238,7 +259,7 @@ class FirstLevelController
 
     protected function manageValue($request)
     {
-        foreach ($request  as $key => $value) {
+        foreach ($request as $key => $value) {
             if (in_array($key, ['enabled'])) {
                 if (empty($value)) {
                     $request[$key] = 'N';
diff --git a/src/app/doctype/controllers/SecondLevelController.php b/src/app/doctype/controllers/SecondLevelController.php
index 66a12599042f7fd75a1fbbbfd9545dd1d47397e2..8c495e8f3c881e45abd17ad2f386543bded1762f 100644
--- a/src/app/doctype/controllers/SecondLevelController.php
+++ b/src/app/doctype/controllers/SecondLevelController.php
@@ -11,6 +11,7 @@
 
 namespace Doctype\controllers;
 
+use Doctype\controllers\FirstLevelController;
 use History\controllers\HistoryController;
 use Respect\Validation\Validator;
 use Doctype\models\FirstLevelModel;
@@ -44,12 +45,6 @@ class SecondLevelController
         return $response->withJson($obj);
     }
 
-    public function initSecondLevel(Request $request, Response $response)
-    {
-        $obj['firstLevel'] = FirstLevelModel::get(['select' => ['doctypes_first_level_id', 'doctypes_first_level_label']]);
-        return $response->withJson($obj);
-    }
-
     public function create(Request $request, Response $response)
     {
         if (!ServiceModel::hasService(['id' => 'admin_architecture', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
@@ -76,7 +71,8 @@ class SecondLevelController
 
         return $response->withJson(
             [
-            'secondLevel'  => $secondLevelId
+            'secondLevelId' => $secondLevelId,
+            'doctypeTree'   => FirstLevelController::getTreeFunction(),
             ]
         );
     }
@@ -111,7 +107,8 @@ class SecondLevelController
 
         return $response->withJson(
             [
-            'secondLevel'  => $data
+            'secondLevelId' => $data,
+            'doctypeTree'   => FirstLevelController::getTreeFunction(),
             ]
         );
     }
@@ -140,7 +137,10 @@ class SecondLevelController
             'info'      => _DOCTYPE_SECONDLEVEL_DELETED. ' : ' . $secondLevel['doctypes_second_level_label']
         ]);
 
-        return $response->withJson(['secondLevel' => $secondLevel]);
+        return $response->withJson([
+            'secondLevelDeleted' => $secondLevel,
+            'doctypeTree'        => FirstLevelController::getTreeFunction()
+        ]);
     }
 
     protected function control($aArgs, $mode)
@@ -169,7 +169,11 @@ class SecondLevelController
             $errors[] = 'Invalid doctypes_first_level_id';
         }
 
-        if (!Validator::notEmpty()->validate($aArgs['enabled']) || ($aArgs['enabled'] != 'Y' && $aArgs['enabled'] != 'N')) {
+        if (empty($aArgs['enabled'])) {
+            $aArgs['enabled'] = 'Y';
+        }
+
+        if ($aArgs['enabled'] != 'Y' && $aArgs['enabled'] != 'N') {
             $errors[]= 'Invalid enabled value';
         }
 
@@ -178,7 +182,7 @@ class SecondLevelController
 
     protected function manageValue($request)
     {
-        foreach ($request  as $key => $value) {
+        foreach ($request as $key => $value) {
             if (in_array($key, ['enabled'])) {
                 if (empty($value)) {
                     $request[$key] = 'N';
diff --git a/src/app/doctype/models/FirstLevelModelAbstract.php b/src/app/doctype/models/FirstLevelModelAbstract.php
index 21abdad83faa55a1d293cf6044ffee0f4f7b0c07..25fb1fb15c0093888f3f4049d75555cc2d9114c1 100644
--- a/src/app/doctype/models/FirstLevelModelAbstract.php
+++ b/src/app/doctype/models/FirstLevelModelAbstract.php
@@ -24,6 +24,8 @@ class FirstLevelModelAbstract
         $firstLevel = DatabaseModel::select([
             'select'   => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
             'table'    => ['doctypes_first_level'],
+            'where'    => ['enabled = ?'],
+            'data'     => ['Y'],
             'order_by' => ['doctypes_first_level_id asc']
         ]);
 
diff --git a/src/app/doctype/models/SecondLevelModelAbstract.php b/src/app/doctype/models/SecondLevelModelAbstract.php
index 270eaa96a7c644c86cd2b9d7c47f72c7ed7fdb0a..2a7e7d2290c49221800a293fff5f29fa7c1e604d 100644
--- a/src/app/doctype/models/SecondLevelModelAbstract.php
+++ b/src/app/doctype/models/SecondLevelModelAbstract.php
@@ -24,6 +24,8 @@ class SecondLevelModelAbstract
         $firstLevel = DatabaseModel::select([
             'select'   => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
             'table'    => ['doctypes_second_level'],
+            'where'    => ['enabled = ?'],
+            'data'     => ['Y'],
             'order_by' => ['doctypes_second_level_label asc']
         ]);