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 d1089a65bd592189f56f310e8318a458136b43c6..365349ff4cdb201d242432efa2091a984a03953a 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
@@ -36,6 +36,7 @@ export class DoctypesAdministrationComponent implements OnInit {
     loading: boolean = false;
     creationMode: any = false;
     newSecondLevel: any = false;
+    newFirstLevel: any = false;
 
     displayedColumns = ['label','use', 'mandatory', 'column'];
     dataSource = new MatTableDataSource(this.currentType.indexes);
@@ -72,8 +73,35 @@ export class DoctypesAdministrationComponent implements OnInit {
                                 'name': 'proton',
                                 'responsive': true
                             },
+                            'multiple': false,
                             'data': this.doctypes,
-                            "check_callback": true
+                            "check_callback": function (operation: any, node: any, node_parent: any, node_position: any, more: any) {
+                                if (operation == 'move_node') {
+                                    if(typeof more.ref == "undefined"){
+                                        return true;
+                                    }
+                                    if(!isNaN(parseFloat(node.id)) && isFinite(node.id) && more.ref.id.indexOf("secondlevel_")==0){
+                                        // Doctype in secondLevel
+                                        return true;
+                                    } else if(node.id.indexOf("secondlevel_")==0 && more.ref.id.indexOf("firstlevel_")==0){
+                                        // SecondLevel in FirstLevel
+                                        return true;
+                                    } else {
+                                        return false;
+                                    }
+                                }
+                            }
+                        },
+                        "dnd": {
+                            is_draggable: function (nodes: any) {
+                                this.secondLevelSelected = nodes[0].id.replace("secondlevel_", "");
+                                if((!isNaN(parseFloat(this.secondLevelSelected)) && isFinite(this.secondLevelSelected)) ||
+                                    (!isNaN(parseFloat(nodes[0].id)) && isFinite(nodes[0].id))){
+                                    return true;
+                                } else {
+                                    return false;
+                                }
+                            }
                         },
                         "plugins": ["search", "dnd", "contextmenu"],
                     });
@@ -131,7 +159,7 @@ export class DoctypesAdministrationComponent implements OnInit {
                                     this.saveType();
                                 }
                             } else {
-                                alert(this.lang.cantMoveDoctype)
+                                alert(this.lang.cantMoveDoctype);
                             }
                         } else {
                             alert(this.lang.noDoctypeSelected);
@@ -147,9 +175,27 @@ export class DoctypesAdministrationComponent implements OnInit {
             this.currentFirstLevel  = false;
             this.currentType        = false;
             this.http.get(this.coreUrl + "rest/doctypes/secondLevel/" + data.node.original.doctypes_second_level_id )
-                .subscribe((data: any) => {
-                    this.currentSecondLevel = data['secondLevel'];
-                    this.firstLevels        = data['firstLevel'];
+                .subscribe((dataValue: any) => {
+                    this.currentSecondLevel = dataValue['secondLevel'];
+                    this.firstLevels        = dataValue['firstLevel'];
+
+                    if(move){
+                        if(this.currentSecondLevel){
+                            this.newFirstLevel = data.parent.replace("firstlevel_", "");
+                            // Is integer
+                            if(!isNaN(parseFloat(this.newFirstLevel)) && isFinite(this.newFirstLevel)){
+                                if (this.currentSecondLevel.doctypes_first_level_id != this.newFirstLevel) {
+                                    this.currentSecondLevel.doctypes_first_level_id = this.newFirstLevel;
+                                    this.saveSecondLevel();
+                                }
+                            } else {
+                                alert(this.lang.cantMoveFirstLevel);
+                            }
+                        } else {
+                            alert(this.lang.noFirstLevelSelected);
+                        }
+                    }
+
                 }, (err) => {
                     this.notify.error(err.error.errors);
                 });
@@ -391,4 +437,4 @@ export class DoctypesAdministrationRedirectModalComponent {
     constructor(public http: HttpClient, @Inject(MAT_DIALOG_DATA) public data: any, public dialogRef: MatDialogRef<DoctypesAdministrationRedirectModalComponent>) {
 
     }
-}
\ No newline at end of file
+}
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
index 95b736537297e1ce6ad0bf3a8ba5a333faac50d7..c0b9a2dd77bcf747b19c3bd766173b9d6fc5a515 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
@@ -373,6 +373,8 @@ export const LANG_EN = {
     "toolTipDeleteDoctype"              : "If mails are attached to this type of document, a reassignment screen will be displayed.",
     "cantMoveDoctype"                   : "The document type can only be moved in a sub-folder",
     "noDoctypeSelected"                 : "No document type selected",
+    "cantMoveFirstLevel"                : "Sub-folder can only be moved in folder",
+    "noFirstLevelSelected"              : "No sub-folder selected",
     "tooltipPriorityDelay"              : "Use this processing time instead of the one defined in the document type",
     "tooltipPriorityDefault"            : "Set this priority by default when saving a mail",
     "defaultPriority"                   : "Default priority",
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index 3fe94cdda8d301ff49161a13cd6c1e2f406d0c66..cb86a7a9c7a885f12fdecf420e15741109567b13 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -398,6 +398,8 @@ export const LANG_FR = {
     "toolTipDeleteDoctype"              : "Si des courriers sont rattachés à ce type de document, un écran de réaffectation s'affichera",
     "cantMoveDoctype"                   : "Le type de document peut uniquement être déplacé dans une sous-chemise",
     "noDoctypeSelected"                 : "Aucun type de document sélectionné",
+    "cantMoveFirstLevel"                : "La sous-chemise peut uniquement être déplacée dans une chemise",
+    "noFirstLevelSelected"              : "Aucune sous-chemise sélectionnée",
     "tooltipPriorityDelay"              : "Utiliser ce délai de traitement au lieu de celui défini dans le type document",
     "tooltipPriorityDefault"            : "Positionner cette priorité par défaut lors de l'enregistrement d'un courrier",
     "defaultPriority"                   : "Priorité par défaut",