diff --git a/src/frontend/app/diffusions/diffusions-list.component.ts b/src/frontend/app/diffusions/diffusions-list.component.ts
index 88766b7eb4e2619becce9cd988e05c172c91d4d2..c9c85a5bb96a581150570c6d250a5e3030aa79cf 100644
--- a/src/frontend/app/diffusions/diffusions-list.component.ts
+++ b/src/frontend/app/diffusions/diffusions-list.component.ts
@@ -136,7 +136,7 @@ export class DiffusionsListComponent implements OnInit {
         }
         if (this.resId !== null) {
             const listInstance: any = await this.getListinstance(this.resId);
-            
+
             if (listInstance !== undefined) {
                 listInstance.forEach((element: any) => {
                     if (element.item_mode == 'cc') {
@@ -190,6 +190,16 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     async loadListinstance(resId: number) {
+        this.http.get(`../../rest/resources/${resId}/fields/destination?alt=true`).pipe(
+            tap((data: any) => {
+                this.currentEntityId = data.field;
+            }),
+            catchError((err: any) => {
+                this.notify.handleSoftErrors(err);
+                return of(false);
+            })
+        ).subscribe();
+
         this.loading = true;
 
         const diffusions: any = await this.getListinstance(resId);
@@ -202,7 +212,7 @@ export class DiffusionsListComponent implements OnInit {
             }
         });
 
-        if (diffusions.filter((elem: any) => elem.item_mode === 'dest').length === 0 && this.adminMode) {
+        if (diffusions.filter((elem: any) => elem.item_mode === 'dest').length === 0 && !this.availableRoles.filter(role => role.id === 'dest')[0].canUpdate && this.adminMode) {
             this.adminMode = false;
             this.hasNoDest = true;
         }
@@ -215,29 +225,33 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     saveListinstance() {
-        return new Promise((resolve, reject) => {
-            const listInstance: any[] = [
-                {
-                    resId: this.resId,
-                    listInstances: this.getCurrentListinstance()
-                }
-            ];
-            this.http.put('../../rest/listinstances', listInstance).pipe(
-                tap((data: any) => {
-                    if (data && data.errors != null) {
-                        this.notify.error(data.errors);
-                    } else {
-                        this.listinstanceClone = JSON.parse(JSON.stringify(this.getCurrentListinstance()));
-                        this.notify.success(this.lang.diffusionListUpdated);
-                        resolve(true);
+        if (!this.hasEmptyDest()) {
+            return new Promise((resolve, reject) => {
+                const listInstance: any[] = [
+                    {
+                        resId: this.resId,
+                        listInstances: this.getCurrentListinstance()
                     }
-                }),
-                catchError((err: any) => {
-                    this.notify.handleErrors(err);
-                    return of(false);
-                })
-            ).subscribe();
-        });
+                ];
+                this.http.put('../../rest/listinstances', listInstance).pipe(
+                    tap((data: any) => {
+                        if (data && data.errors != null) {
+                            this.notify.error(data.errors);
+                        } else {
+                            this.listinstanceClone = JSON.parse(JSON.stringify(this.getCurrentListinstance()));
+                            this.notify.success(this.lang.diffusionListUpdated);
+                            resolve(true);
+                        }
+                    }),
+                    catchError((err: any) => {
+                        this.notify.handleErrors(err);
+                        return of(false);
+                    })
+                ).subscribe();
+            });
+        } else {
+            this.notify.error(this.lang.noDest);
+        }
     }
 
     initRoles() {
@@ -337,7 +351,7 @@ export class DiffusionsListComponent implements OnInit {
         let item_mode: any = 'copy';
 
         if (this.diffList["dest"].items.length === 0) {
-            item_mode = await this.isUserInCurrentEntity(element.serialId) ? 'dest' : 'copy';
+            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) {
@@ -403,6 +417,8 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     changeRole(user: any, oldRole: any, newRole: any) {
+        console.log(newRole);
+        
         if (newRole.id === 'dest') {
             this.switchUserWithOldDest(user, oldRole);
 
@@ -423,6 +439,7 @@ export class DiffusionsListComponent implements OnInit {
     }
 
     switchUserWithOldDest(user: any, oldRole: any) {
+
         this.http.get("../../rest/users/" + user.userId + "/entities").pipe(
             map((data: any) => {
                 data.entities = data.entities.map((entity: any) => entity.id);
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index df23bcc1c7fdcaf516cbba5c5729a9360c73be12..101e9a756e8d0c47d3257dbc0b4b2e9843a2cc3e 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1587,5 +1587,6 @@ export const LANG_EN = {
     "opinionCircuit" : "Opinion circuit",    
     "visaCircuit" : "Visa circuit",
     "shippingUnavailable" : "<b>Warning </b> Shipping is not activated. Check the configuration file mailevaConfig.xml",
-    "diffNoDestmsg" : "No <b>assignee</b> defined, you <b>can't</b> modify the diffusion list.", 
+    "diffNoDestmsg" : "No <b>assignee</b> defined, you <b>can't</b> modify the diffusion list.",
+    "noDest" : "No <b>assignee</b> defined",    
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 77c1dd4b696c809ffe2c7b0f9698d07cb0d086ef..16139a08807e3b03c64f860e0615a83c90ccf396 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1627,4 +1627,5 @@ export const LANG_FR = {
     "visaCircuit" : "Circuit de visa",
     "shippingUnavailable" : "<b>Attention !</b> Maileva n'est pas activé. Veuillez vérifier le fichier de configuration mailevaConfig.xml",
     "diffNoDestmsg" : "Aucun <b>atttributaire</b> défini, modification de la liste <b>impossible</b>.",    
+    "noDest" : "Aucun <b>atttributaire</b> défini",    
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 9ce015a36cfe8975b616293bb96c9f80c2637dda..83644773dc29a75d2f5b92ac65e29203bb0394ee 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1613,4 +1613,5 @@ export const LANG_NL = {
     "visaCircuit" : "Visa circuit",  //_TO_TRANSLATE
     "shippingUnavailable" : "<b>Warning </b> Shipping is not activated. Check the configuration file mailevaConfig.xml", //_TO_TRANSLATE
     "diffNoDestmsg" : "No <b>assignee</b> defined, you <b>can't</b> modify the diffusion list.", //_TO_TRANSLATE
+    "noDest" : "No <b>assignee</b> defined",
 };