diff --git a/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java b/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java
index 083bb78420b820bcee22d8f133ee6e87e39c3886..94047747b4d24b4ff091d462b3e4cfe68a46e806 100644
--- a/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java
+++ b/src/main/java/syscamstranslator/SysCAMSTBlockTDF.java
@@ -55,6 +55,7 @@ import javax.swing.DefaultListModel;
 public class SysCAMSTBlockTDF extends SysCAMSTComponent {
 	private String name;
 	private double period;
+    	private Boolean dynamic;
 	private String time;
 	private String processCode;
     private String constructorCode;
@@ -73,9 +74,10 @@ public class SysCAMSTBlockTDF extends SysCAMSTComponent {
     private int n;
     private boolean isTimestepPropagated;
 	
-	public SysCAMSTBlockTDF(String _name, double _period, String _time, String _processCode, String _constructorCode, DefaultListModel<String> _listStruct, String _nameTemplate, String _typeTemplate, String _valueTemplate, DefaultListModel<String> _listTypedef, SysCAMSTCluster _cluster) {
+    public SysCAMSTBlockTDF(String _name, double _period, Boolean _dynamic, String _time, String _processCode, String _constructorCode, DefaultListModel<String> _listStruct, String _nameTemplate, String _typeTemplate, String _valueTemplate, DefaultListModel<String> _listTypedef, SysCAMSTCluster _cluster) {
 		name = _name;
 		period = _period;
+		dynamic = _dynamic;
 		time = _time;
 		processCode = _processCode;
         constructorCode = _constructorCode;
@@ -103,6 +105,14 @@ public class SysCAMSTBlockTDF extends SysCAMSTComponent {
     public void setPeriod(double _period) {
 		period = _period;
 	}
+
+    	public Boolean getDynamic() {
+		return dynamic;
+	}
+    
+    public void setDynamic(double _dynamic) {
+		dynamic = _dynamic;
+	}
 	
 	public String getTime() {
 		return time;
diff --git a/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java b/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java
index 76e2bc879fec98467d24370c5c9d2042f95e768c..cbcb8d6448c37dc9674fcbdfe702b13a7e1fee24 100644
--- a/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java
+++ b/src/main/java/syscamstranslator/toSysCAMS/PrimitiveCode.java
@@ -321,7 +321,11 @@ public class PrimitiveCode {
 					} 
 				}
 			}
-
+			if(tdf.getDynamic().equals(true)){
+			    corpsPrimitiveTDF = corpsPrimitiveTDF+"allow_dynamic_tfd();"+CR;
+			    cpt2++;
+			}
+			    
 			if (cpt2 > 0) {
 				corpsPrimitiveTDF = corpsPrimitiveTDF + "\t}" + CR2;
 			}
diff --git a/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java b/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java
index 55d16f53e55a43b42b9097acac559afe7e5bf5f4..d504c399b1e443a85ef90d6b30759aff861dd597 100644
--- a/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java
+++ b/src/main/java/syscamstranslator/toSysCAMSCluster/PrimitiveCodeCluster.java
@@ -330,6 +330,11 @@ public class PrimitiveCodeCluster {
 				}
 			}
 
+			if(tdf.getDynamic().equals(true)){
+			    corpsPrimitiveTDF = corpsPrimitiveTDF+"allow_dynamic_tfd();"+CR;
+			    cpt2++;
+			}
+
 			if (cpt2 > 0) {
 				corpsPrimitiveTDF = corpsPrimitiveTDF + "\t}" + CR2;
 			}
diff --git a/src/main/java/ui/SysCAMSPanelTranslator.java b/src/main/java/ui/SysCAMSPanelTranslator.java
index 9d5480832f9a3bab6c8130d651bc6c91c7bb9767..448f0e5aef573d21f9f7091f2e5dacfac2f90217 100644
--- a/src/main/java/ui/SysCAMSPanelTranslator.java
+++ b/src/main/java/ui/SysCAMSPanelTranslator.java
@@ -201,6 +201,7 @@ public class SysCAMSPanelTranslator {
 
 					String blockTDFName = blockTDF.getValue();
 					double periodBlock = blockTDF.getPeriod();
+					Boolean dynamicBlock = blockTDF.getDynamic();
 					String timeBlock = blockTDF.getTime();
                     if (timeBlock.equals("s")) {
                         timeBlock = timeBlock + "ec";
@@ -215,7 +216,7 @@ public class SysCAMSPanelTranslator {
                     String valueTemplate = blockTDF.getValueTemplate();
 					DefaultListModel<String> listTypedef = blockTDF.getListTypedef();
 
-					SysCAMSTBlockTDF syscamsBlockTDF = new SysCAMSTBlockTDF(blockTDFName, periodBlock, timeBlock, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef, syscamsCluster);				
+					SysCAMSTBlockTDF syscamsBlockTDF = new SysCAMSTBlockTDF(blockTDFName, periodBlock, dynamicBlock,  timeBlock, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef, syscamsCluster);				
 
 					List<SysCAMSPortTDF> portsTDF = blockTDF.getAllInternalPortsTDF();
 					for (int j = 0; j < portsTDF.size(); j++) {
diff --git a/src/main/java/ui/syscams/SysCAMSBlockTDF.java b/src/main/java/ui/syscams/SysCAMSBlockTDF.java
index 34f00f5abe17cfdaeac98db15951f8729d6965c5..d96f53ef4ae0da56dab06af3937c4d2b83bad2ad 100644
--- a/src/main/java/ui/syscams/SysCAMSBlockTDF.java
+++ b/src/main/java/ui/syscams/SysCAMSBlockTDF.java
@@ -60,13 +60,14 @@ import java.util.LinkedList;
 
 public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements SwallowTGComponent, SwallowedTGComponent {
 	private double period;
+    	private Boolean dynamic;
 	private String time;
 	private String processCode;
-    private String constructorCode;
+        private String constructorCode;
 	private DefaultListModel<String> listStruct;
 	private String nameTemplate;
 	private String typeTemplate;
-    private String valueTemplate;
+        private String valueTemplate;
 	private DefaultListModel<String> listTypedef;
 
 	private int maxFontSize = 14;
@@ -107,15 +108,15 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
 		value = tdp.findSysCAMSPrimitiveComponentName("blockTDF");
 		oldValue = value;
 		name = "Primitive component - Block TDF";
-
+		setDynamic(false);
 		setPeriod(-1);
 		setTime("");
 		setProcessCode("void processing() {\n\n}");
-        setConstructorCode("");
+		setConstructorCode("");
 		setListStruct(new DefaultListModel<String>());
 		setNameTemplate("");
 		setTypeTemplate("");
-        setValueTemplate("");
+		setValueTemplate("");
 		setListTypedef(new DefaultListModel<String>());
 
 		myImageIcon = IconManager.imgic1202;
@@ -318,6 +319,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
 	protected String translateExtraParam() {
 		StringBuffer sb = new StringBuffer("<extraparam>\n");
 		sb.append("<Attribute period=\"" + getPeriod());
+		sb.append("\" dynamic=\"" + getDynamic());
 		sb.append("\" time=\"" + getTime());
 		sb.append("\" processCode=\"" + encode(getProcessCode()));
                 sb.append("\" constructorCode=\"" + encode(getConstructorCode()));
@@ -452,7 +454,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
 			NodeList nli;
 			Node n1, n2;
 			Element elt;
-
+			Boolean dynamic;
 			double period;
 			String time, processCode, constructorCode, listStruct, nameTemplate, typeTemplate, valueTemplate, listTypedef;
 
@@ -466,6 +468,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
 							elt = (Element) n2;
 							if (elt.getTagName().equals("Attribute")) {
 								period = Double.valueOf(elt.getAttribute("period")).doubleValue();
+								dynamic = Boolean.valueOf(elt.getAttribute("dynamic")).booleanValue();
 								time = elt.getAttribute("time");
 								processCode = elt.getAttribute("processCode");
                                 constructorCode = elt.getAttribute("constructorCode");
@@ -475,6 +478,7 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
                                 valueTemplate = elt.getAttribute("valueTemplate");
 								listTypedef = elt.getAttribute("listTypedef");
 								setPeriod(period);
+								setDynamic(dynamic);
 								setTime(time);
 								processCode = decode(processCode).toString();
 								setProcessCode(processCode);
@@ -587,6 +591,14 @@ public class SysCAMSBlockTDF extends TGCScalableWithInternalComponent implements
 		period = _period;
 	}
 
+    	public Boolean getDynamic() {
+		return dynamic;
+	}
+
+	public void setDynamic(Boolean _dynamic) {
+		dynamic =  _dynamic;
+	}
+
 	public String getTime() {
 		return time;
 	}
diff --git a/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java b/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java
index c88b695fd874c058ccdefdf3d8582b2b2db58451..7df0519231828a321fc165ad022a9d6301b6e117 100644
--- a/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java
+++ b/src/main/java/ui/window/JDialogSysCAMSBlockTDF.java
@@ -90,10 +90,14 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L
 
 	private JTextArea processCodeTextArea;
 	private String finalString;
-    private JTextArea constructorCodeTextArea;
+        private JTextArea constructorCodeTextArea;
 
 	private SysCAMSBlockTDF block;
-
+        private JRadioButton dynamicRadioButton;
+    //private String listDynamicString[];
+    //private JComboBox<String> dynamicComboBoxString;
+    
+    
 	public JDialogSysCAMSBlockTDF(SysCAMSBlockTDF block) {
 		this.setTitle("Setting TDF Block Attributes");
 		this.setLocationRelativeTo(null);
@@ -265,9 +269,50 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L
 		gridBag.setConstraints(periodComboBoxString, constraints);
 		attributesBoxPanel.add(periodComboBoxString);
 
+
+		JPanel dynamicPanel = new JPanel(new FlowLayout());
+
+		dynamicRadioButton = new JRadioButton();
+		dynamicRadioButton.setActionCommand("Dynamic");
+		dynamicRadioButton.setSelected(block.getDynamic());
+		dynamicRadioButton.addActionListener(this);
+		dynamicPanel.add(dynamicRadioButton);
+		JLabel dynamicLabel = new JLabel("Dynamic");
+		dynamicPanel.add(dynamicLabel);
+		constraints = new GridBagConstraints(0, 4, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+			       new Insets(15, 10, 5, 10), 0, 0);
+		gridBag.setConstraints(dynamicPanel, constraints);
+		attributesBoxPanel.add(dynamicPanel);
+
+
+		/*	listDynamicString = new String[3];
+		listDynamicString[0] = "";
+        listDynamicString[1] = "";
+		listDynamicString[2] = "accepts attribute changes";
+		dynamicComboBoxString = new JComboBox<String>(listDynamicString);
+		if (block.getClockSensitivityMethod().equals("")) {
+			dynamicComboBoxString.setSelectedIndex(0);
+        } else if (block.getClockSensitivityMethod().equals("changes attributes")) {
+            dynamicComboBoxString.setSelectedIndex(1);
+		} else if (block.getClockSensitivityMethod().equals("accepts attribute changes")) {
+			dynamicComboBoxString.setSelectedIndex(2);
+		}
+		dynamicComboBoxString.setActionCommand("Dynamic_method");
+		dynamicComboBoxString.setEnabled(block.getDynamic());
+		dynamicComboBoxString.addActionListener(this);
+		constraints = new GridBagConstraints(1, 2, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+				new Insets(15, 10, 5, 10), 0, 0);
+		gridBag.setConstraints(dynamicComboBoxString, constraints);
+		//boxPanel.add(dynamicComboBoxString);
+		attributesBoxPanel.add(dynamicComboBoxString);*/
+
+
+		
+		
 		attributesBox.add(attributesBoxPanel); 
 		attributesMainPanel.add(attributesBox, BorderLayout.NORTH); 
 
+		
 		// --- Parameters ---//
 		parametersMainPanel.setLayout(new BorderLayout());
 
@@ -688,6 +733,15 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L
 	}
 
 	public void actionPerformed(ActionEvent e) {
+	    /*if ("Dynamic".equals(e.getActionCommand())) {
+			if (dynamicRadioButton.isSelected() == true) {
+				dynamicComboBoxString.setEnabled(true);
+			} else {
+				dynamicComboBoxString.setEnabled(false);
+			}
+			}*/
+
+	    
 		if ("OK".equals(e.getActionCommand())) {
 			nameTypedefTextField.setEditable(true);
 			typeTypedefComboBoxString.setEnabled(true);
@@ -989,6 +1043,9 @@ public class JDialogSysCAMSBlockTDF extends JDialog implements ActionListener, L
 		if ("Save_Close".equals(e.getActionCommand())) {
 			block.setValue(new String(nameTextField.getText()));
 
+			block.setDynamic(dynamicRadioButton.isSelected());
+			//block.setDynamicMethod((String) dynamicComboBoxString.getSelectedItem());
+			
 			if (!(periodTextField.getText().isEmpty())) {
 				Boolean periodValueInteger = false;
 				try {