diff --git a/src/frontend/app/diffusions/diffusions-list.component.html b/src/frontend/app/diffusions/diffusions-list.component.html
index 4a8d0536d23726d451737e4b38ee99ce2e9d09d4..ba2c9c8337901a10209d73819dd04b6883b3d878 100644
--- a/src/frontend/app/diffusions/diffusions-list.component.html
+++ b/src/frontend/app/diffusions/diffusions-list.component.html
@@ -22,9 +22,9 @@
                         [class.fa-user]="diffusion.item_type === 'user_id' || diffusion.item_type === 'user'"
                         [class.fa-sitemap]="diffusion.item_type === 'entity_id' || diffusion.item_type === 'entity'"></mat-icon>
                     <div class="item-diffusion">
-                        <p mat-line [title]="diffusion.labelToDisplay">{{diffusion.labelToDisplay}}</p>
-                        <p mat-line class="subInfo" [title]="diffusion.descriptionToDisplay">
-                            {{diffusion.descriptionToDisplay}}</p>
+                        <p mat-line [title]="diffusion.itemLabel">{{diffusion.itemLabel}}</p>
+                        <p mat-line class="subInfo" [title]="diffusion.itemSubLabel">
+                            {{diffusion.itemSubLabel}}</p>
                     </div>
                     <div *ngIf="role.id === 'dest' && target === 'redirect' && adminMode" >
                         <button mat-icon-button (click)="loadDestUserList()" [matMenuTriggerFor]="menuDestUserList"
diff --git a/src/frontend/app/diffusions/diffusions-list.component.ts b/src/frontend/app/diffusions/diffusions-list.component.ts
index c9c85a5bb96a581150570c6d250a5e3030aa79cf..5c1a4652b5ae10ac37638f023fae6f8a44581634 100644
--- a/src/frontend/app/diffusions/diffusions-list.component.ts
+++ b/src/frontend/app/diffusions/diffusions-list.component.ts
@@ -54,7 +54,7 @@ export class DiffusionsListComponent implements OnInit {
     /**
      * Ids of related allowed entities perimeters
      */
-    @Input('allowedEntities') allowedEntities: number[];
+    @Input('allowedEntities') allowedEntities: number[] = [];
 
     /**
      * Expand all roles
@@ -65,6 +65,7 @@ export class DiffusionsListComponent implements OnInit {
      * To load privilege of current list management
      * @param indexation
      * @param details
+     * @param process
      * @param redirect
      */
     @Input('target') target: string = '';
@@ -125,13 +126,8 @@ export class DiffusionsListComponent implements OnInit {
         this.removeAllItems();
 
         if (listTemplates.length > 0) {
-            listTemplates[0].items.forEach((element: any) => {
-                element.difflist_type = 'entity_id';
-                if (element.item_mode == 'cc') {
-                    this.diffList['copy'].items.push(element);
-                } else {
-                    this.diffList[element.item_mode].items.push(element);
-                }
+            listTemplates[0].forEach((element: any) => {
+                this.diffList[element.item_mode].items.push(element);
             });
         }
         if (this.resId !== null) {
@@ -142,10 +138,11 @@ export class DiffusionsListComponent implements OnInit {
                     if (element.item_mode == 'cc') {
                         element.item_mode = 'copy';
                     }
-                    if (this.keepRoles.indexOf(element.item_mode) > -1 && this.diffList[element.item_mode].items.map((e: any) => { return e.item_id; }).indexOf(element.item_id) == -1) {
+
+                    if (this.keepRoles.indexOf(element.item_mode) > -1 && this.diffList[element.item_mode].items.filter((item: any) => item.itemSerialId === element.itemSerialId && item.item_type === element.item_type).length === 0) {
                         this.diffList[element.item_mode].items.push(element);
                     }
-                    if (this.keepDestForRedirection && element.item_mode == "dest" && this.diffList["copy"].items.map((e: any) => { return e.item_id; }).indexOf(element.item_id) == -1) {
+                    if (this.keepDestForRedirection && element.item_mode == "dest" && this.diffList["copy"].items.filter((item: any) => item.itemSerialId === element.itemSerialId && item.item_type === element.item_type).length === 0) {
                         this.diffList["copy"].items.push(element);
                     }
                 });
@@ -163,9 +160,27 @@ export class DiffusionsListComponent implements OnInit {
     getListModel(entityId: number) {
         return new Promise((resolve, reject) => {
             this.http.get(`../../rest/listTemplates/entities/${entityId}?type=diffusionList`).pipe(
-                tap((data: any) => {
-
-                    resolve(data.listTemplates);
+                map((data: any) => {
+                    data.listTemplates = data.listTemplates.map((item: any) => item.items.map((item: any) => {
+                        const obj: any = {
+                            listmodel_id: item.id,
+                            listinstance_id: item.listinstance_id,
+                            item_mode: item.item_mode === 'cc' ? 'copy' : item.item_mode,
+                            item_type: item.item_type,
+                            itemSerialId: item.item_id,
+                            itemId: '',
+                            itemLabel: item.labelToDisplay,
+                            itemSubLabel: item.descriptionToDisplay,
+                            difflist_type: 'entity_id',
+                            process_date: null,
+                            process_comment: null,
+                        };
+                        return obj;
+                    }))
+                    return data.listTemplates;
+                }),
+                tap((templates: any) => {
+                    resolve(templates);
                 }),
                 catchError((err: any) => {
                     this.notify.handleSoftErrors(err);
@@ -178,8 +193,27 @@ export class DiffusionsListComponent implements OnInit {
     getListinstance(resId: number) {
         return new Promise((resolve, reject) => {
             this.http.get(`../../rest/resources/${resId}/listInstance`).pipe(
-                tap((data: any) => {
-                    resolve(data.listInstance);
+                map((data: any) => {
+                    data.listInstance = data.listInstance.map((item: any) => {
+
+                        const obj: any = {
+                            listinstance_id: item.listinstance_id,
+                            item_mode: item.item_mode === 'cc' ? 'copy' : item.item_mode,
+                            item_type: item.item_type === 'user_id' ? 'user' : 'entity',
+                            itemSerialId: item.item_type === 'user_id' ? item.userId : null,
+                            itemId: item.item_id,
+                            itemLabel: item.labelToDisplay,
+                            itemSubLabel: item.descriptionToDisplay,
+                            difflist_type: item.difflist_type,
+                            process_date: null,
+                            process_comment: null,
+                        }
+                        return obj;
+                    });
+                    return data.listInstance;
+                }),
+                tap((listInstance: any) => {
+                    resolve(listInstance);
                 }),
                 catchError((err: any) => {
                     this.notify.handleSoftErrors(err);
@@ -205,11 +239,7 @@ export class DiffusionsListComponent implements OnInit {
         const diffusions: any = await this.getListinstance(resId);
         this.removeAllItems();
         diffusions.forEach((element: any) => {
-            if (element.item_mode == 'cc') {
-                this.diffList['copy'].items.push(element);
-            } else {
-                this.diffList[element.item_mode].items.push(element);
-            }
+            this.diffList[element.item_mode].items.push(element);
         });
 
         if (diffusions.filter((elem: any) => elem.item_mode === 'dest').length === 0 && !this.availableRoles.filter(role => role.id === 'dest')[0].canUpdate && this.adminMode) {
@@ -302,11 +332,11 @@ export class DiffusionsListComponent implements OnInit {
             if (this.diffList[role].items.length > 0) {
                 this.diffList[role].items.forEach((element: any) => {
                     listInstanceFormatted.push({
-                        difflist_type: element.difflist_type !== undefined ? element.difflist_type : element.object_type,
-                        item_id: element.item_id,
-                        item_mode: role == 'copy' ? 'cc' : role,
+                        difflist_type: element.difflist_type,
+                        item_id: element.itemSerialId,
+                        item_mode: role === 'copy' ? 'cc' : role,
                         item_type: element.item_type,
-                        process_date: element.process_date !== undefined ? element.process_date : null,
+                        process_date: element.process_date,
                         process_comment: element.process_comment,
                     });
                 });
@@ -330,12 +360,16 @@ export class DiffusionsListComponent implements OnInit {
 
     changeDest(user: any) {
         this.diffList['dest'].items[0] = {
-            difflist_type: "entity_id",
-            item_type: "user",
-            item_id: user.id,
-            labelToDisplay: user.labelToDisplay,
-            descriptionToDisplay: user.descriptionToDisplay,
-            item_mode: "dest"
+            listinstance_id: null,
+            item_mode: 'dest',
+            item_type: 'user',
+            itemSerialId: user.id,
+            itemId: user.user_id,
+            itemLabel: user.labelToDisplay,
+            itemSubLabel: user.descriptionToDisplay,
+            difflist_type: 'entity_id',
+            process_date: null,
+            process_comment: null,
         };
     }
 
@@ -354,7 +388,7 @@ export class DiffusionsListComponent implements OnInit {
             item_mode = await this.isUserInCurrentEntity(element.serialId) && this.availableRoles.filter(role => role.id === 'dest')[0].canUpdate ? 'dest' : 'copy';
         }
 
-        if (this.diffList["copy"].items.map((e: any) => { return e.item_id; }).indexOf(element.id) == -1) {
+        if (this.diffList["copy"].items.map((e: any) => { return e.itemId; }).indexOf(element.id) == -1) {
             let itemType = '';
             if (element.type == 'user') {
                 itemType = 'user';
@@ -362,14 +396,17 @@ export class DiffusionsListComponent implements OnInit {
                 itemType = 'entity';
             }
 
-            const newElemListModel = {
-                userId: element.serialId,
-                difflist_type: "entity_id",
+            const newElemListModel: any = {
+                listinstance_id: null,
+                item_mode: item_mode,
                 item_type: itemType,
-                item_id: element.serialId,
-                labelToDisplay: element.idToDisplay,
-                descriptionToDisplay: element.descriptionToDisplay,
-                item_mode: item_mode
+                itemSerialId: element.serialId,
+                itemId: element.id,
+                itemLabel: element.idToDisplay,
+                itemSubLabel: element.descriptionToDisplay,
+                difflist_type: 'entity_id',
+                process_date: null,
+                process_comment: null,
             };
             this.diffList[item_mode].items.unshift(newElemListModel);
 
@@ -417,8 +454,6 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     changeRole(user: any, oldRole: any, newRole: any) {
-        console.log(newRole);
-        
         if (newRole.id === 'dest') {
             this.switchUserWithOldDest(user, oldRole);
 
@@ -439,8 +474,7 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     switchUserWithOldDest(user: any, oldRole: any) {
-
-        this.http.get("../../rest/users/" + user.userId + "/entities").pipe(
+        this.http.get("../../rest/users/" + user.itemSerialId + "/entities").pipe(
             map((data: any) => {
                 data.entities = data.entities.map((entity: any) => entity.id);
                 return data;
@@ -456,21 +490,30 @@ export class DiffusionsListComponent implements OnInit {
                         allowedEntitiesIds.push(data.entities[data.entities.indexOf(allowedEntity)]);
                     }
                 });
-                if (isAllowed) {
+                if (isAllowed || this.target === 'process' || this.target === 'details') {
                     if (this.diffList['dest'].items.length > 0) {
                         const destUser = this.diffList['dest'].items[0];
-                        indexFound = this.diffList[oldRole.id].items.map((item: any) => item.id).indexOf(destUser.id);
+
+                        this.diffList[oldRole.id].items.map((item: any) => item.id).
+                            indexFound = this.diffList[oldRole.id].items.map((item: any) => item.userId).indexOf(destUser.userId);
 
                         if (indexFound === -1) {
                             destUser.item_mode = oldRole.id;
                             this.diffList[oldRole.id].items.push(destUser);
                         }
                     }
-                    indexFound = this.diffList[oldRole.id].items.map((item: any) => item.id).indexOf(user.id);
 
-                    if (indexFound > -1) {
-                        this.diffList[oldRole.id].items.splice(indexFound, 1);
+                    const result = this.diffList[oldRole.id].items.map((item: any, index: number) => {
+                        return {
+                            ...item,
+                            index: index
+                        }
+                    }).filter((item: any) => item.itemSerialId === user.itemSerialId && item.item_type === user.item_type);
+
+                    if (result.length > 0) {
+                        this.diffList[oldRole.id].items.splice(result[0].index, 1);
                     }
+                    
                     user.item_mode = 'dest';
                     this.diffList['dest'].items[0] = user;
 
@@ -482,7 +525,7 @@ export class DiffusionsListComponent implements OnInit {
                         this.triggerEvent.emit(allowedEntitiesIds);
                     }
                 } else {
-                    this.dialog.open(AlertComponent, { autoFocus: false, disableClose: true, data: { title: this.lang.userUnauthorized, msg: "<b>" + user.labelToDisplay + "</b> " + this.lang.notInAuthorizedEntities } });
+                    this.dialog.open(AlertComponent, { autoFocus: false, disableClose: true, data: { title: this.lang.userUnauthorized, msg: "<b>" + user.itemLabel + "</b> " + this.lang.notInAuthorizedEntities } });
                 }
             }),
         ).subscribe();
@@ -491,7 +534,7 @@ export class DiffusionsListComponent implements OnInit {
     changeUserRole(user: any, oldRole: any, newRole: any) {
         let indexFound: number;
 
-        indexFound = this.diffList[oldRole.id].items.map((item: any) => item.id).indexOf(user.id);
+        indexFound = this.diffList[oldRole.id].items.map((item: any) => item.userId).indexOf(user.userId);
 
         if (indexFound > -1) {
             this.diffList[oldRole.id].items.splice(indexFound, 1);
@@ -509,7 +552,7 @@ export class DiffusionsListComponent implements OnInit {
             arrValues = arrValues.concat(
                 this.diffList[role].items.map((item: any) => {
                     return {
-                        id: item.item_id,
+                        id: item.itemId,
                         mode: role,
                         type: item.item_type === 'user' ? 'user' : 'entity'
                     }