diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java
index 4e559db924f60773a08d97aba8262b2a8f11afb6..e5ace4879d4f47b74d379b37d23cca72133bfead 100644
--- a/src/main/java/ui/ActionPerformer.java
+++ b/src/main/java/ui/ActionPerformer.java
@@ -978,6 +978,16 @@ public class ActionPerformer {
         	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_CLUSTER);
         } else if (command.equals(mgui.actions[TGUIAction.ELN_GENCODE].getActionCommand())){
             mgui.elnExecutableCodeGeneration();
+        } else if (command.equals(mgui.actions[TGUIAction.ELN_MODULE_PORT_DE].getActionCommand())){
+        	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_MODULE_PORT_DE);
+        } else if (command.equals(mgui.actions[TGUIAction.ELN_MODULE_PORT_TDF].getActionCommand())){
+        	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_MODULE_PORT_TDF);
+        } else if (command.equals(mgui.actions[TGUIAction.ELN_CLUSTER_TERMINAL].getActionCommand())){
+        	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_CLUSTER_TERMINAL);
+        } else if (command.equals(mgui.actions[TGUIAction.ELN_CLUSTER_PORT_DE].getActionCommand())){
+        	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_CLUSTER_PORT_DE);
+        } else if (command.equals(mgui.actions[TGUIAction.ELN_CLUSTER_PORT_TDF].getActionCommand())){
+        	mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.ELN_CLUSTER_PORT_TDF);
 
             // Attack Tree Diagrams
         } else if (command.equals(mgui.actions[TGUIAction.ATD_BLOCK].getActionCommand())) {
diff --git a/src/main/java/ui/TGComponentManager.java b/src/main/java/ui/TGComponentManager.java
index d738206b99ae36292bd5b72872a54b8f425e6641..14342d20b4d6f4a12c794c2514401b2917c85929 100644
--- a/src/main/java/ui/TGComponentManager.java
+++ b/src/main/java/ui/TGComponentManager.java
@@ -365,6 +365,11 @@ public class TGComponentManager {
     public static final int ELN_TDF_VOLTAGE_SOURCE = 1625;
     public static final int ELN_TDF_CURRENT_SOURCE = 1626;
     public static final int ELN_CLUSTER = 1627;
+    public static final int ELN_MODULE_PORT_DE = 1628;
+    public static final int ELN_MODULE_PORT_TDF = 1629;
+    public static final int ELN_CLUSTER_TERMINAL = 1630;
+    public static final int ELN_CLUSTER_PORT_DE = 1631;
+    public static final int ELN_CLUSTER_PORT_TDF = 1632;
     
     // SMD diagram
     public static final int PROSMD_START_STATE = 2000;
@@ -1343,6 +1348,21 @@ public class TGComponentManager {
             case ELN_CLUSTER: 
             	tgc = new ELNCluster(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
             	break;
+            case ELN_MODULE_PORT_DE: 
+            	tgc = new ELNModulePortDE(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            	break;
+            case ELN_MODULE_PORT_TDF: 
+            	tgc = new ELNModulePortTDF(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            	break;
+            case ELN_CLUSTER_TERMINAL: 
+            	tgc = new ELNClusterTerminal(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            	break;
+            case ELN_CLUSTER_PORT_DE: 
+            	tgc = new ELNClusterPortDE(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            	break;
+            case ELN_CLUSTER_PORT_TDF: 
+            	tgc = new ELNCLusterPortTDF(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            	break;
             // Communication patterns + SD
             case TMLCP_CHOICE:
                 tgc = new TMLCPChoice(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
@@ -1781,6 +1801,16 @@ public class TGComponentManager {
         	return ELN_TDF_CURRENT_SOURCE;
         } else if (tgc instanceof ELNCluster) {
         	return ELN_CLUSTER;
+        } else if (tgc instanceof ELNModulePortDE) {
+        	return ELN_MODULE_PORT_DE;
+        } else if (tgc instanceof ELNModulePortTDF) {
+        	return ELN_MODULE_PORT_TDF;
+        } else if (tgc instanceof ELNClusterTerminal) {
+        	return ELN_CLUSTER_TERMINAL;
+        } else if (tgc instanceof ELNClusterPortDE) {
+        	return ELN_CLUSTER_PORT_DE;
+        } else if (tgc instanceof ELNClusterPortTDF) {
+        	return ELN_CLUSTER_PORT_TDF;
         	
         	// Others
         } else if (tgc instanceof TADDeterministicDelay) {
diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java
index 6589974dd8028dee579bd7f52df072008dcb728d..c06631ce49bb99c4a3fa2c9707440d13a936a839 100644
--- a/src/main/java/ui/TGUIAction.java
+++ b/src/main/java/ui/TGUIAction.java
@@ -302,6 +302,11 @@ public class TGUIAction extends AbstractAction {
     public static final int ELN_TDF_CURRENT_SOURCE = 503;
     public static final int ELN_CLUSTER = 504;
     public static final int ELN_GENCODE = 505;
+    public static final int ELN_MODULE_PORT_DE = 506;
+    public static final int ELN_MODULE_PORT_TDF = 507;
+    public static final int ELN_CLUSTER_TERMINAL = 508;
+    public static final int ELN_CLUSTER_PORT_DE = 509;
+    public static final int ELN_CLUSTER_PORT_TDF = 510;
     
     public static final int EBRDD_EDIT = 271;
     public static final int EBRDD_CONNECTOR = 272;
@@ -657,7 +662,7 @@ public class TGUIAction extends AbstractAction {
     public static final int MOVE_ENABLED = 463;
     public static final int FIRST_DIAGRAM = 464;
     
-    public static final int NB_ACTION = 506;
+    public static final int NB_ACTION = 511;
 
     private static final TAction [] actions = new TAction[NB_ACTION];
 
@@ -1187,6 +1192,11 @@ public class TGUIAction extends AbstractAction {
         actions[ELN_TDF_CURRENT_SOURCE] = new TAction("eln-tdf-isource", "Add a current source driven by a TDF input signal", IconManager.imgic8034, IconManager.imgic8034, "Current source driven by a TDF input signal", "Add a current source driven by a TDF input signal to the currently opened ELN Diagram", 0);
         actions[ELN_CLUSTER] = new TAction("eln-cluster", "Add a cluster", IconManager.imgic8006, IconManager.imgic8006, "Cluster", "Add a cluster to the currently opened ELN Diagram", 0);
         actions[ELN_GENCODE] = new TAction("eln-gencode", "ELN code generation",IconManager.imgic94, IconManager.imgic94, "Generate ELN code", "ELN diagram without check syntax", 0);
+        actions[ELN_MODULE_PORT_DE] = new TAction("eln-module-port-DE", "Add a module port DE", IconManager.imgic8001, IconManager.imgic8001, "Module port DE", "Add a module port DE to the currently opened ELN Diagram", 0);
+        actions[ELN_MODULE_PORT_TDF] = new TAction("eln-module-port-TDF", "Add a module port TDF", IconManager.imgic8000, IconManager.imgic8000, "Module port TDF", "Add a module port TDF to the currently opened ELN Diagram", 0);
+        actions[ELN_CLUSTER_TERMINAL] = new TAction("eln-cluster-terminal", "Add a cluster terminal", IconManager.imgic8032, IconManager.imgic8032, "Cluster terminal", "Add a cluster terminal to the currently opened ELN Diagram", 0);
+        actions[ELN_CLUSTER_PORT_DE] = new TAction("eln-cluster-port-DE", "Add a cluster port DE", IconManager.imgic8001, IconManager.imgic8001, "Cluster port DE", "Add a cluster port DE to the currently opened ELN Diagram", 0);
+        actions[ELN_CLUSTER_PORT_TDF] = new TAction("eln-cluster-port-TDF", "Add a cluster port TDF", IconManager.imgic8000, IconManager.imgic8000, "Cluster port TDF", "Add a cluster port TDF to the currently opened ELN Diagram", 0);
 
         //ProActive State Machine Diagram
         actions[PROSMD_EDIT] = new TAction("edit-prosmd-diagram", "Edit ProActive state machine diagram", IconManager.imgic100, IconManager.imgic101, "Edit ProActive state machine diagram", "Make it possible to edit the currently opened ProActive state machine diagram", 0);