diff --git a/apps/maarch_entreprise/Views/entities-administration.component.html b/apps/maarch_entreprise/Views/entities-administration.component.html
index fed0fa72c4392e29ed4c18c1e62e9c75338de822..38235a3177a86ace7334d9c1450d2e2537c3dff6 100644
--- a/apps/maarch_entreprise/Views/entities-administration.component.html
+++ b/apps/maarch_entreprise/Views/entities-administration.component.html
@@ -64,8 +64,9 @@
                                 <div class="col-sm-12">
                                     <mat-form-field>
                                         <mat-select id="parent_entity_id" name="parent_entity_id" title="{{lang.isLinkedTo}}" placeholder="{{lang.isLinkedTo}}" [(ngModel)]="currentEntity.parent_entity_id"
-                                            (change)="selectParentEntity(currentEntity.parent_entity_id)" required>
-                                            <mat-option *ngIf="entities.length == 0" value="">
+                                            (change)="selectParentEntity(currentEntity.parent_entity_id)">
+                                            <mat-option value="">
+                                                <i style="opacity:0.5;text-align:center;">- {{lang.noEntity}} -</i>
                                             </mat-option>
                                             <ng-container *ngFor="let entity of entities | sortBy : 'entity_label'">
                                                 <mat-option [value]="entity.entity_id" *ngIf="(!entity.state.disabled && entity.entity_id != currentEntity.entity_id) || currentEntity.parent_entity_id == entity.entity_id">
@@ -238,7 +239,7 @@
                                                     <p mat-line>{{template.labelToDisplay}}
                                                         <small style="opacity:0.5;">{{template.descriptionToDisplay}}</small>
                                                     </p>
-                                                    <button *ngIf="role.id != 'dest'" matTooltip="{{lang.delete}}" mat-icon-button color="warn" (click)="removeDiffList(i,role.id)">
+                                                    <button matTooltip="{{lang.delete}}" mat-icon-button color="warn" (click)="removeDiffList(i,role.id)">
                                                         <mat-icon class="fa fa-remove"></mat-icon>
                                                     </button>
                                                 </mat-list-item>
@@ -247,15 +248,21 @@
                                     </span>
                                 </mat-list>
                             </div>
+                            <div class="form-group" *ngIf="currentEntity.entity_id">
+                                <div class="col-md-12 text-center" style="padding:10px;">
+                                    <button mat-raised-button color="primary" (click)="saveDiffList()" [disabled]="!this.listDiffModified || (currentEntity.listTemplate.dest.length == 0 && currentEntity.listTemplate.cc.length > 0)">{{lang.save}}</button>
+                                    <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.listDiffModified">{{lang.cancel}}</button>
+                                </div>
+                            </div>
                         </div>
                     </mat-tab>
                     <mat-tab label="{{lang.visa}}" *ngIf="!creationMode">
-                        <div class="row" style="margin:0px;">
+                        <div class="row" style="margin:0px;" id="visaCircuitContent">
                             <div class="col-md-12">
                                 <mat-form-field>
-                                    <input #autocompleteFilter type="text" placeholder="{{lang.addVisaSignUser}}" matInput [matAutocomplete]="auto" [formControl]="userCtrl">
+                                    <input #autocompleteFilter type="text"  placeholder="{{lang.addVisaSignUser}}" matInput [matAutocomplete]="auto" [formControl]="userCtrl">
                                     <mat-autocomplete #auto="matAutocomplete">
-                                        <mat-option *ngFor="let elem of filteredUsers | async" [value]="elem.id" (click)="addElemListModelVisa(elem)">
+                                        <mat-option *ngFor="let elem of filteredUsers | async" [value]="elem.id" (click)="addElemListModelVisa(elem);autocompleteFilter.isOpen=true">
                                             <p mat-line *ngIf="elem.type == 'user'">
                                                 <span class="col-xm-1">
                                                     <mat-icon color="primary" class="fa fa-user fa-2x" style="margin-right:0px;"></mat-icon>
@@ -283,6 +290,12 @@
                                     </span>
                                 </mat-list>
                             </div>
+                            <div class="form-group" *ngIf="currentEntity.entity_id">
+                                <div class="col-md-12 text-center" style="padding:10px;">
+                                    <button mat-raised-button color="primary" (click)="saveDiffListVisa()" [disabled]="!this.listDiffModified || (currentEntity.listTemplate.dest.length == 0 && currentEntity.listTemplate.cc.length > 0)">{{lang.save}}</button>
+                                    <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.listDiffModified">{{lang.cancel}}</button>
+                                </div>
+                            </div>
                         </div>
                     </mat-tab>
                     <mat-tab label="{{lang.relatedUsers}}" *ngIf="!creationMode">
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 3a1c87a4d27f921099bce7c550dfcb3b6b653bbd..5021839f10195970ffe6cd27ed5d438e6c207b96 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
@@ -6,7 +6,7 @@ import { ConfirmModalComponent } from '../confirmModal.component';
 import { NotificationService } from '../notification.service';
 import { MatSidenav, MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogConfig, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
 
-import { SortPipe }  from '../../plugins/sorting.pipe';
+import { SortPipe } from '../../plugins/sorting.pipe';
 import { AutoCompletePlugin } from '../../plugins/autocomplete.plugin';
 
 declare function $j(selector: any): any;
@@ -19,25 +19,26 @@ declare var angularGlobals: any;
 })
 export class EntitiesAdministrationComponent extends AutoCompletePlugin implements OnInit {
 
-    private _mobileQueryListener    : () => void;
-    mobileQuery                     : MediaQueryList;
-    dialogRef                       : MatDialogRef<any>;
+    private _mobileQueryListener: () => void;
+    mobileQuery: MediaQueryList;
+    dialogRef: MatDialogRef<any>;
 
-    coreUrl                         : string;
-    lang                            : any       = LANG;
-    loading                         : boolean   = false;
+    coreUrl: string;
+    lang: any = LANG;
+    loading: boolean = false;
 
-    entities                        : any[]     = [];
-    listTemplateRoles               : any[]     = [];
-    entityTypeList                  : any[]     = [];
-    currentEntity                   : any       = {};
-    isDraggable                     : boolean   = true;
-    creationMode                    : boolean   = false;
-    idCircuitVisa                   : number;
-    config                          : any       = {};
+    entities: any[] = [];
+    listTemplateRoles: any[] = [];
+    entityTypeList: any[] = [];
+    currentEntity: any = {};
+    isDraggable: boolean = true;
+    creationMode: boolean = false;
+    listDiffModified: boolean = false;
+    idCircuitVisa: number = null;
+    config: any = {};
 
-    dataSource          = new MatTableDataSource(this.currentEntity.users);
-    displayedColumns    = ['firstname', 'lastname'];
+    dataSource = new MatTableDataSource(this.currentEntity.users);
+    displayedColumns = ['firstname', 'lastname'];
 
 
     @ViewChild('snav2') sidenav: MatSidenav;
@@ -98,13 +99,13 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                             'data': this.entities,
                             "check_callback": function (operation: any, node: any, node_parent: any, node_position: any, more: any) {
                                 if (operation == 'move_node') {
-                                    if (node_parent.id =='#') {
+                                    if (node_parent.id == '#') {
                                         return false;
                                     } else if (!node_parent.original.allowed) {
                                         return false;
                                     } else {
                                         return true;
-                                    }       
+                                    }
                                 }
                             }
                         },
@@ -169,6 +170,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     loadEntity(entity_id: any) {
+        this.listDiffModified = false;
         this.http.get(this.coreUrl + "rest/entities/" + entity_id + '/details')
             .subscribe((data: any) => {
                 this.currentEntity = data['entity'];
@@ -184,14 +186,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     addElemListModel(element: any) {
-        /* create listDiff struct */
-        var newDiffList = {
-            "object_id": this.currentEntity.entity_id,
-            "object_type": "entity_id",
-            "title": this.currentEntity.entity_id,
-            "description": this.currentEntity.entity_id,
-            "items": Array()
-        };
+        this.listDiffModified = true;
         var inListModel = false;
         var newElemListModel: any = {};
 
@@ -199,14 +194,6 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             if (role.available == true) {
                 if (this.currentEntity.listTemplate[role.id]) {
                     this.currentEntity.listTemplate[role.id].forEach((listModel: any) => {
-                        /* insert current diff list */
-                        newDiffList.items.push({
-                            "item_type": listModel.item_type,
-                            "item_mode": role.id,
-                            "item_id": listModel.item_id,
-                            "sequence": listModel.sequence
-                        });
-
                         if (listModel.item_id == element.id) {
                             inListModel = true;
                         }
@@ -225,12 +212,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                     "sequence": 0
                 };
                 this.currentEntity.listTemplate.dest.unshift(newElemListModel);
-                newDiffList.items.push({
-                    "item_type": "user_id",
-                    "item_mode": "dest",
-                    "item_id": newElemListModel.item_id,
-                    "sequence": newElemListModel.sequence
-                });
+
             } else {
                 var itemType = '';
                 if (element.type == 'user') {
@@ -248,42 +230,13 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                     "sequence": 0
                 };
                 this.currentEntity.listTemplate.cc.unshift(newElemListModel);
-                newDiffList.items.push({
-                    "item_type": newElemListModel.item_type,
-                    "item_mode": "cc",
-                    "item_id": newElemListModel.item_id,
-                    "sequence": 0
-                });
-            }
-            if (this.currentEntity.listTemplate.id) {
-                this.http.put(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id, newDiffList)
-                    .subscribe((data: any) => {
-                        this.currentEntity.listTemplate.id = data.id;
-                        this.notify.success(this.lang.diffusionModelUpdated);
-                    }, (err) => {
-                        this.notify.error(err.error.errors);
-                    });
-            } else {
-                this.http.post(this.coreUrl + "rest/listTemplates", newDiffList)
-                    .subscribe((data: any) => {
-                        this.currentEntity.listTemplate.id = data.id;
-                        this.notify.success(this.lang.diffusionModelUpdated);
-                    }, (err) => {
-                        this.notify.error(err.error.errors);
-                    });
             }
         }
         this.elementCtrl.setValue('');
     }
 
     addElemListModelVisa(element: any) {
-        var newDiffList = {
-            "object_id": this.currentEntity.entity_id,
-            "object_type": "VISA_CIRCUIT",
-            "title": this.currentEntity.entity_id,
-            "description": this.currentEntity.entity_id,
-            "items": Array()
-        };
+        this.listDiffModified = true;
         var newElemListModel = {
             "id": '',
             "item_type": 'user_id',
@@ -294,38 +247,9 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             "descriptionToDisplay": element.otherInfo
         };
 
-        this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => {
-            listModel.sequence = i;
-            listModel.item_mode = "visa";
-            newDiffList.items.push({
-                "id": listModel.id,
-                "item_id": listModel.item_id,
-                "item_type": "user_id",
-                "item_mode": listModel.item_mode,
-                "sequence": listModel.sequence
-            });
-        });
-
-        newDiffList.items.push(newElemListModel);
-
-        if (this.currentEntity.visaTemplate.length > 0) {
-            this.http.put(this.coreUrl + "rest/listTemplates/" + this.idCircuitVisa, newDiffList)
-                .subscribe((data: any) => {
-                    this.idCircuitVisa = data.id;
-                    this.currentEntity.visaTemplate.push(newElemListModel);
-                    this.notify.success(this.lang.diffusionModelUpdated);
-                }, (err) => {
-                    this.notify.error(err.error.errors);
-                });
-        } else {
-            this.http.post(this.coreUrl + "rest/listTemplates", newDiffList)
-                .subscribe((data: any) => {
-                    this.idCircuitVisa = data.id;
-                    this.currentEntity.visaTemplate.push(newElemListModel);
-                    this.notify.success(this.lang.diffusionModelUpdated);
-                }, (err) => {
-                    this.notify.error(err.error.errors);
-                });
+        this.currentEntity.visaTemplate.push(newElemListModel);
+        if (this.currentEntity.visaTemplate.length > 1) {
+            this.currentEntity.visaTemplate[this.currentEntity.visaTemplate.length-2].item_mode = 'visa';
         }
         this.userCtrl.setValue('');
     }
@@ -335,7 +259,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             this.currentEntity.parent_entity_id = '';
         }
 
-        if (this.creationMode) { 
+        if (this.creationMode) {
             this.http.post(this.coreUrl + "rest/entities", this.currentEntity)
                 .subscribe((data: any) => {
                     this.currentEntity.listTemplate = [];
@@ -373,7 +297,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
         this.creationMode = false;
         this.isDraggable = true;
         $j('#jstree').jstree('deselect_all');
-        if(this.currentEntity.parent_entity_id) {
+        if (this.currentEntity.parent_entity_id) {
             for (let i = 0; i < this.entities.length; i++) {
                 if (this.entities[i].entity_id == this.currentEntity.parent_entity_id) {
                     $j('#jstree').jstree('select_node', this.entities[i]);
@@ -385,7 +309,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
         }
     }
 
-    selectParentEntity(entity_id:any) {
+    selectParentEntity(entity_id: any) {
         if (this.creationMode) {
             $j('#jstree').jstree('deselect_all');
             $j('#jstree').jstree('select_node', entity_id);
@@ -397,8 +321,22 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             this.config = { data: { entity: this.currentEntity } };
             this.dialogRef = this.dialog.open(EntitiesAdministrationRedirectModalComponent, this.config);
             this.dialogRef.afterClosed().subscribe((result: any) => {
-                console.log(result);
                 if (result) {
+                    if (this.currentEntity.listTemplate.id) {
+                        this.http.delete(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id)
+                        .subscribe((data: any) => {
+                            this.currentEntity.listTemplate.id = data.id;
+                            this.http.get(this.coreUrl + "rest/listTemplates/types/entity_id/roles")
+                                .subscribe((data: any) => {
+                                    this.listTemplateRoles = data['roles'];
+                                }, (err) => {
+                                    this.notify.error(err.error.errors);
+                                });
+                        }, (err) => {
+                            this.notify.error(err.error.errors);
+                        });
+                    }
+                    
                     this.http.put(this.coreUrl + "rest/entities/" + result.entity_id + "/reassign/" + result.redirectEntity, {})
                         .subscribe((data: any) => {
                             this.entities = data['entities'];
@@ -406,7 +344,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                             $j('#jstree').jstree("refresh");
                             this.sidenav.close();
                             this.notify.success(this.lang.entityDeleted);
-                            
+
                         }, (err) => {
                             this.notify.error(err.error.errors);
                         });
@@ -417,6 +355,21 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             let r = confirm(this.lang.confirmAction + ' ' + this.lang.delete + ' « ' + this.currentEntity.entity_label + ' »');
 
             if (r) {
+                if (this.currentEntity.listTemplate.id) {
+                    this.http.delete(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id)
+                    .subscribe((data: any) => {
+                        this.currentEntity.listTemplate.id = data.id;
+                        this.http.get(this.coreUrl + "rest/listTemplates/types/entity_id/roles")
+                            .subscribe((data: any) => {
+                                this.listTemplateRoles = data['roles'];
+                            }, (err) => {
+                                this.notify.error(err.error.errors);
+                            });
+                    }, (err) => {
+                        this.notify.error(err.error.errors);
+                    });
+                }
+                
                 this.http.delete(this.coreUrl + "rest/entities/" + this.currentEntity.entity_id)
                     .subscribe((data: any) => {
                         this.entities = data['entities'];
@@ -466,14 +419,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     updateDiffList(template: any, role: any): any {
-        var newDiffList = {
-            "object_id": this.currentEntity.entity_id,
-            "object_type": "entity_id",
-            "title": this.currentEntity.entity_id,
-            "description": this.currentEntity.entity_id,
-            "items": Array()
-        };
-
+        this.listDiffModified = true;
         if (role == 'dest' && this.currentEntity.listTemplate.dest.length > 0) {
             this.currentEntity.listTemplate.dest.forEach((listModel: any) => {
                 if (listModel.item_id != template.item_id) {
@@ -482,6 +428,17 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             });
             this.currentEntity.listTemplate.dest = [template];
         }
+    }
+
+    saveDiffList() {
+        this.listDiffModified = false;
+        var newDiffList = {
+            "object_id": this.currentEntity.entity_id,
+            "object_type": "entity_id",
+            "title": this.currentEntity.entity_id,
+            "description": this.currentEntity.entity_id,
+            "items": Array()
+        };
 
         this.listTemplateRoles.forEach((role: any) => {
             if (role.available == true) {
@@ -497,7 +454,22 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                 }
             }
         });
-        if (this.currentEntity.listTemplate.id) {
+
+        if (newDiffList.items.length == 0) {
+            this.http.delete(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id)
+                .subscribe((data: any) => {
+                    this.currentEntity.listTemplate.id = null;
+                    this.http.get(this.coreUrl + "rest/listTemplates/types/entity_id/roles")
+                        .subscribe((data: any) => {
+                            this.listTemplateRoles = data['roles'];
+                        }, (err) => {
+                            this.notify.error(err.error.errors);
+                        });
+                    this.notify.success(this.lang.diffusionModelDeleted);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        } else if (this.currentEntity.listTemplate.id) {
             this.http.put(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id, newDiffList)
                 .subscribe((data: any) => {
                     this.currentEntity.listTemplate.id = data.id;
@@ -529,13 +501,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     updateDiffListVisa(template: any): any {
-        var newDiffList = {
-            "object_id": this.currentEntity.entity_id,
-            "object_type": "VISA_CIRCUIT",
-            "title": this.currentEntity.entity_id,
-            "description": this.currentEntity.entity_id,
-            "items": Array()
-        };
+        this.listDiffModified = true;
         this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => {
             listModel.sequence = i;
             if (i == (this.currentEntity.visaTemplate.length - 1)) {
@@ -543,74 +509,42 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
             } else {
                 listModel.item_mode = "visa";
             }
-            newDiffList.items.push({
-                "id": listModel.id,
-                "item_id": listModel.item_id,
-                "item_type": "user_id",
-                "item_mode": listModel.item_mode,
-                "sequence": listModel.sequence
-            });
         });
-        this.http.put(this.coreUrl + "rest/listTemplates/" + this.idCircuitVisa, newDiffList)
-            .subscribe((data: any) => {
-                this.idCircuitVisa = data.id;
-                this.notify.success(this.lang.diffusionModelUpdated);
-            }, (err) => {
-                this.notify.error(err.error.errors);
-            });
-
     }
 
-    removeDiffList(i: number, role: string): any {
-        this.currentEntity.listTemplate[role].splice(i, 1);
+    saveDiffListVisa() {
+        this.listDiffModified = false;
         var newDiffList = {
             "object_id": this.currentEntity.entity_id,
-            "object_type": "entity_id",
+            "object_type": "VISA_CIRCUIT",
             "title": this.currentEntity.entity_id,
             "description": this.currentEntity.entity_id,
             "items": Array()
         };
-        this.listTemplateRoles.forEach((role: any) => {
-            if (role.available == true) {
-                if (this.currentEntity.listTemplate[role.id]) {
-                    this.currentEntity.listTemplate[role.id].forEach((listModel: any) => {
-                        newDiffList.items.push({
-                            "item_id": listModel.item_id,
-                            "item_type": listModel.item_type,
-                            "item_mode": role.id,
-                            "sequence": listModel.sequence
-                        });
-                    });
+        if (this.idCircuitVisa == null) {
+            this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => {
+                listModel.sequence = i;
+                if (i == (this.currentEntity.visaTemplate.length - 1)) {
+                    listModel.item_mode = "sign";
+                } else {
+                    listModel.item_mode = "visa";
                 }
-            }
-        });
-        this.http.put(this.coreUrl + "rest/listTemplates/" + this.currentEntity.listTemplate.id, newDiffList)
-            .subscribe((data: any) => {
-                this.currentEntity.listTemplate.id = data.id;
-                this.http.get(this.coreUrl + "rest/listTemplates/types/entity_id/roles")
-                    .subscribe((data: any) => {
-                        this.listTemplateRoles = data['roles'];
-                    }, (err) => {
-                        this.notify.error(err.error.errors);
-                    });
-                this.notify.success(this.lang.diffusionModelUpdated);
-            }, (err) => {
-                this.notify.error(err.error.errors);
+                newDiffList.items.push({
+                    "id": listModel.id,
+                    "item_id": listModel.item_id,
+                    "item_type": "user_id",
+                    "item_mode": listModel.item_mode,
+                    "sequence": listModel.sequence
+                });
             });
-    }
-
-    removeDiffListVisa(template: any, i: number): any {
-        this.currentEntity.visaTemplate.splice(i, 1);
-
-        if (this.currentEntity.visaTemplate.length > 0) {
-            var newDiffList = {
-                "object_id": this.currentEntity.entity_id,
-                "object_type": "VISA_CIRCUIT",
-                "title": this.currentEntity.entity_id,
-                "description": this.currentEntity.entity_id,
-                "items": Array()
-            };
-
+            this.http.post(this.coreUrl + "rest/listTemplates", newDiffList)
+                .subscribe((data: any) => {
+                    this.idCircuitVisa = data.id;
+                    this.notify.success(this.lang.diffusionModelUpdated);
+                }, (err) => {
+                    this.notify.error(err.error.errors);
+                });
+        } else if (this.currentEntity.visaTemplate.length > 0) {
             this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => {
                 listModel.sequence = i;
                 if (i == (this.currentEntity.visaTemplate.length - 1)) {
@@ -619,13 +553,13 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                     listModel.item_mode = "visa";
                 }
                 newDiffList.items.push({
+                    "id": listModel.id,
                     "item_id": listModel.item_id,
                     "item_type": "user_id",
                     "item_mode": listModel.item_mode,
                     "sequence": listModel.sequence
                 });
             });
-
             this.http.put(this.coreUrl + "rest/listTemplates/" + this.idCircuitVisa, newDiffList)
                 .subscribe((data: any) => {
                     this.idCircuitVisa = data.id;
@@ -635,19 +569,40 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
                 });
         } else {
             this.http.delete(this.coreUrl + "rest/listTemplates/" + this.idCircuitVisa)
-                .subscribe(() => {
-                    this.idCircuitVisa = null;
-                    this.notify.success(this.lang.diffusionModelUpdated);
-                }, (err) => {
-                    this.notify.error(err.error.errors);
-                });
+            .subscribe(() => {
+                this.idCircuitVisa = null;
+                this.notify.success(this.lang.diffusionModelDeleted);
+            }, (err) => {
+                this.notify.error(err.error.errors);
+            });
+        }
+    }
+
+    removeDiffList(i: number, role: string): any {
+        this.listDiffModified = true;
+        this.currentEntity.listTemplate[role].splice(i, 1);
+    }
+
+    removeDiffListVisa(template: any, i: number): any {
+        this.listDiffModified = true;
+        this.currentEntity.visaTemplate.splice(i, 1);
+
+        if (this.currentEntity.visaTemplate.length > 0) {
+            this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => {
+                listModel.sequence = i;
+                if (i == (this.currentEntity.visaTemplate.length - 1)) {
+                    listModel.item_mode = "sign";
+                } else {
+                    listModel.item_mode = "visa";
+                }
+            });
         }
     }
 
     toggleRole(role: any) {
         console.log(role);
         if (role.usedIn.length > 0) {
-            this.config = { data: { msg: this.lang.confirmAction, warn: this.lang.roleUsedInTemplateInfo + " : <b>" + role.usedIn.join(',') + '</b><br/>'+this.lang.roleUsedInTemplateInfo2 } };
+            this.config = { data: { msg: this.lang.confirmAction, warn: this.lang.roleUsedInTemplateInfo + " : <b>" + role.usedIn.join(', ') + '</b><br/>' + this.lang.roleUsedInTemplateInfo2 } };
             let dialogRef = this.dialog.open(ConfirmModalComponent, this.config);
             dialogRef.afterClosed().subscribe(result => {
                 if (result === "ok") {
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
index 3b3a88b20828c70d4eee37ed32511ed6468bdb5a..149cd3f1aa536d914b95a3287efbc78e11990024 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
@@ -199,6 +199,7 @@ export const LANG_EN = {
     "newSignature"                      : "New signature",
     "no"                                : "No",
     "noAttachment"                      : "No attachment",
+    "noEntity"                          : "No entity",
     "noReplacement"                     : "No replacement",
     "notes"                             : "Notes",
     "notificationAdded"                 : "Notification added",
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index de6ff7860dab9097e73e233cc24b6538f0da9bc1..abf5a3cdb9e1f217cf884f784a4ac5e6bf8450a6 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -214,6 +214,7 @@ export const LANG_FR = {
     "next"                              : "Suivant",
     "no"                                : "Non",
     "noAttachment"                      : "Sans pièce jointe",
+    "noEntity"                          : "Aucune entité",
     "noRecord"                          : "Aucun élément",
     "noReplacement"                     : "Aucun remplacement",
     "noResult"                          : "Aucun résultat",