diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java
index de1835932f86596a6d9097bacfed3e24bdd637fd..b78ae41f53b5deb05f05aa7689463b26c27d2b89 100644
--- a/src/main/java/ui/TDiagramPanel.java
+++ b/src/main/java/ui/TDiagramPanel.java
@@ -336,6 +336,10 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
 
     private FontMetrics savedFontMetrics = null;
 
+    public boolean changeOnComponent(TGComponent tgc, String oldValue, String newValue) {
+        return true;
+    }
+
     public int stringWidth(Graphics g, String str) {
         if (this.savedFontMetrics == null)
             this.savedFontMetrics = g.getFontMetrics(new Font(Font.SANS_SERIF, Font.PLAIN, this.getFontSize()));
diff --git a/src/main/java/ui/tmldd/TMLArchiBUSNode.java b/src/main/java/ui/tmldd/TMLArchiBUSNode.java
index 148a6a9e7605bb665c2bc14b25a16292eae6fe3e..45bb6ddd9f85c4cfeccc43da81ba118cf1a8abbf 100755
--- a/src/main/java/ui/tmldd/TMLArchiBUSNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiBUSNode.java
@@ -271,7 +271,9 @@ public class TMLArchiBUSNode extends TMLArchiCommunicationNode implements Swallo
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
@@ -378,6 +380,8 @@ public class TMLArchiBUSNode extends TMLArchiCommunicationNode implements Swallo
             return false;
         }
 
+
+
         return true;
     }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiBridgeNode.java b/src/main/java/ui/tmldd/TMLArchiBridgeNode.java
index 9b0d7fa71562b8d424f0151dd5f5cb0fd61bd257..b678716ec09bbaa71db1888ecfe50d100b7e3ace 100755
--- a/src/main/java/ui/tmldd/TMLArchiBridgeNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiBridgeNode.java
@@ -204,7 +204,9 @@ public class TMLArchiBridgeNode extends TMLArchiCommunicationNode implements Swa
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiCPNode.java b/src/main/java/ui/tmldd/TMLArchiCPNode.java
index 0f97175cf10775a1da6367c4e9f420d8302fb4d2..f90df583710091d583c518de96e6f03dc5ab179c 100755
--- a/src/main/java/ui/tmldd/TMLArchiCPNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiCPNode.java
@@ -279,7 +279,9 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow
                 errors += "Name of the node  ";
             }
             else        {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
index f65bac120b58a0e24b511192e2ed463f93584adc..ab9b166d8fa07ee2d0192d5b161391909b42d61a 100755
--- a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
@@ -411,4 +411,23 @@ public class TMLArchiCommunicationArtifact extends TGCWithoutInternalComponent i
     public String getAttributes() {
         return "Priority = " + priority;
     }
+
+    public void updateMappedElements(String oldName, String newName) {
+        //TraceManager.addDev("Old:" + oldName + " newName:" + newName);
+        String found = null;
+        int index = 0;
+        for(String s: mappedElements) {
+            if (s.compareTo(oldName) == 0) {
+                found = s;
+                break;
+            }
+            index ++;
+        }
+
+        if (found != null) {
+            //TraceManager.addDev("Found mapping to change");
+            mappedElements.remove(index);
+            mappedElements.add(index, newName);
+        }
+    }
 }
diff --git a/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java b/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java
index 34f7ec87936d62b49b8c4639994723b1083930da..d5772d6b2e2ec9452ed6deb67569e1fd9083510a 100755
--- a/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java
@@ -215,28 +215,13 @@ public class TMLArchiCrossbarNode extends TMLArchiCommunicationNode implements S
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
-            }
-        }
+                tdp.changeOnComponent(this, oldName, name);
 
-	/*      arbitrationPolicy = dialog.getArbitrationPolicy();
-        privacy = dialog.getPrivacy();
-        if (arbitrationPolicy == HwBus.BASIC_ROUND_ROBIN) {
-            stereotype = "BUS-RR";
-        }
-
-        if (arbitrationPolicy == HwBus.PRIORITY_BASED) {
-            stereotype = "BUS-PB";
-        }
-
-        if (arbitrationPolicy == HwBus.CAN) {
-            stereotype = "BUS-CAN";
+            }
         }
 
-        if (arbitrationPolicy == HwBus.CROSSBAR) {
-            stereotype = "CROSSBAR";
-	    }*/
-
 	// DG we need only data size
 
         if (dialog.getByteDataSize().length() != 0) {
diff --git a/src/main/java/ui/tmldd/TMLArchiDMANode.java b/src/main/java/ui/tmldd/TMLArchiDMANode.java
index 28ea0cec3ae5d747124e9cfc2e1fd201ada2d544..2e96f0152cbada6485fae3e0b67cad940840b7d3 100755
--- a/src/main/java/ui/tmldd/TMLArchiDMANode.java
+++ b/src/main/java/ui/tmldd/TMLArchiDMANode.java
@@ -208,7 +208,9 @@ public class TMLArchiDMANode extends TMLArchiCommunicationNode implements Swallo
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java
index 0a43ea411a76d5c07dbc0112a3951c59c8049f1a..1ce1806d7c26c3302140193ee97b91d0cd22c80d 100755
--- a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java
+++ b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java
@@ -79,6 +79,9 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib
 
     @Override
     public boolean actionOnDoubleClick(TGComponent tgc) {
+
+        TraceManager.addDev("Change on tgc=" + tgc);
+
         //
         /*if (tgc instanceof TCDTClass) {
           TCDTClass t = (TCDTClass)tgc;
@@ -98,6 +101,8 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib
         return false;
     }
 
+
+
     @Override
     public boolean actionOnAdd(TGComponent tgc) {
         /*if (tgc instanceof TCDTClass) {
@@ -185,10 +190,29 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib
         /*if (tgc instanceof TCDTClass) {
           return actionOnDoubleClick(tgc);
           }*/
+
+
         listOfCP = getListOfCPNodes();
         return false;
     }
 
+    public boolean changeOnComponent(TGComponent tgc, String oldData, String newData) {
+
+        if (tgc instanceof TMLArchiCommunicationNode) {
+            // This change of name may induce mapping problems -> we do the refactoring
+            // We have to find all comm artifacts, and update their multi-mapping
+            //TraceManager.addDev("Change on comm node name");
+            for(TGComponent artifact: getAllComponentList()) {
+                if (artifact instanceof TMLArchiCommunicationArtifact) {
+                    //TraceManager.addDev("Artifact found: " + artifact.getName() + " " + artifact.getValue());
+                    ((TMLArchiCommunicationArtifact)artifact).updateMappedElements(oldData, newData);
+                }
+            }
+        }
+
+        return true;
+    }
+
     public int getMasterClockFrequency() {
         return masterClockFrequency;
     }
diff --git a/src/main/java/ui/tmldd/TMLArchiFirewallNode.java b/src/main/java/ui/tmldd/TMLArchiFirewallNode.java
index 22d941c68e98ab16659758345f51a952c5465d89..757263ca72996edfe74171a5537a8fbf39adbd23 100644
--- a/src/main/java/ui/tmldd/TMLArchiFirewallNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiFirewallNode.java
@@ -213,7 +213,9 @@ public class TMLArchiFirewallNode extends TMLArchiCommunicationNode implements S
                 error = true;
 				errors += "Name of the node  ";
 			 } else {
-				 name = tmpName;
+                 String oldName = name;
+                 name = tmpName;
+                 tdp.changeOnComponent(this, oldName, name);
 			 }
 		}
 		latency = Integer.valueOf(dialog.getLatency());
diff --git a/src/main/java/ui/tmldd/TMLArchiMemoryNode.java b/src/main/java/ui/tmldd/TMLArchiMemoryNode.java
index 36c7c6cfc0b67c152476b9c9d705e7927da74102..7d43e3ccce5747d50f0f9d302930d4857d1e2322 100755
--- a/src/main/java/ui/tmldd/TMLArchiMemoryNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiMemoryNode.java
@@ -219,7 +219,9 @@ public class TMLArchiMemoryNode extends TMLArchiCommunicationNode implements Swa
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiRouterNode.java b/src/main/java/ui/tmldd/TMLArchiRouterNode.java
index d9ea2d11cccb2d59adf05ee524f5ed764cc53d35..e25a95c7d947a6a04c4b5574af1f6c19de6b526e 100755
--- a/src/main/java/ui/tmldd/TMLArchiRouterNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiRouterNode.java
@@ -209,7 +209,9 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
diff --git a/src/main/java/ui/tmldd/TMLArchiVGMNNode.java b/src/main/java/ui/tmldd/TMLArchiVGMNNode.java
index fb8a79651d5633329a34c2c82d991de0798f3d32..87320dd5928cc2d3bb3e57e4643dd540cbdaa80f 100755
--- a/src/main/java/ui/tmldd/TMLArchiVGMNNode.java
+++ b/src/main/java/ui/tmldd/TMLArchiVGMNNode.java
@@ -232,28 +232,13 @@ public class TMLArchiVGMNNode extends TMLArchiCommunicationNode implements Swall
                 error = true;
                 errors += "Name of the node  ";
             } else {
+                String oldName = name;
                 name = tmpName;
+                tdp.changeOnComponent(this, oldName, name);
             }
         }
 
-	/*      arbitrationPolicy = dialog.getArbitrationPolicy();
-        privacy = dialog.getPrivacy();
-        if (arbitrationPolicy == HwBus.BASIC_ROUND_ROBIN) {
-            stereotype = "BUS-RR";
-        }
-
-        if (arbitrationPolicy == HwBus.PRIORITY_BASED) {
-            stereotype = "BUS-PB";
-        }
 
-        if (arbitrationPolicy == HwBus.CAN) {
-            stereotype = "BUS-CAN";
-        }
-
-        if (arbitrationPolicy == HwBus.CROSSBAR) {
-            stereotype = "CROSSBAR";
-	    }*/
-	//DG we need only data size
         if (dialog.getByteDataSize().length() != 0) {
             try {
                 tmp = byteDataSize;
@@ -269,50 +254,6 @@ public class TMLArchiVGMNNode extends TMLArchiCommunicationNode implements Swall
             }
         }
 
-	/*       if (dialog.getSliceTime().length() != 0) {
-            try {
-                tmp = sliceTime;
-                sliceTime = Integer.decode(dialog.getSliceTime()).intValue();
-                if (sliceTime <= 0) {
-                    sliceTime = tmp;
-                    error = true;
-                    errors += "Slice time  ";
-                }
-            } catch (Exception e) {
-                error = true;
-                errors += "Slice time  ";
-            }
-        }
-
-        if (dialog.getPipelineSize().length() != 0) {
-            try {
-                tmp = pipelineSize;
-                pipelineSize = Integer.decode(dialog.getPipelineSize()).intValue();
-                if (pipelineSize <= 0) {
-                    pipelineSize = tmp;
-                    error = true;
-                    errors += "Pipeline size  ";
-                }
-            } catch (Exception e) {
-                error = true;
-                errors += "Pipeline size  ";
-            }
-        }
-
-        if (dialog.getClockRatio().length() != 0) {
-            try {
-                tmp = clockRatio;
-                clockRatio = Integer.decode(dialog.getClockRatio()).intValue();
-                if (clockRatio <= 0) {
-                    clockRatio = tmp;
-                    error = true;
-                    errors += "Clock diviser  ";
-                }
-            } catch (Exception e) {
-                error = true;
-                errors += "Clock diviser  ";
-            }
-        }*/
 
         if (error) {
             JOptionPane.showMessageDialog(frame,