diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java
index 6f45749f49355327c61b2517ad2395594007f234..c6ead34eba5b63aa85b43e8c2f55b456012d1656 100644
--- a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java
+++ b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java
@@ -146,6 +146,10 @@ public class AvatarSpecificationSimulation {
         return allTransactions;
     }
 
+    public void removeAllTransactions() {
+        allTransactions.removeAll(allTransactions);
+    }
+
     public long getClockValue() {
         return clockValue;
     }
diff --git a/src/main/java/ui/avatarinteractivesimulation/AvatarInteractiveSimulationActions.java b/src/main/java/ui/avatarinteractivesimulation/AvatarInteractiveSimulationActions.java
index 12b41f0ebdc26dabafcc4982e5df2a3d5a20348c..ae9950ed37186e9eb5f037c0e9a73c965886efdb 100755
--- a/src/main/java/ui/avatarinteractivesimulation/AvatarInteractiveSimulationActions.java
+++ b/src/main/java/ui/avatarinteractivesimulation/AvatarInteractiveSimulationActions.java
@@ -103,7 +103,8 @@ public class AvatarInteractiveSimulationActions extends AbstractAction {
     public static final int ACT_UP_ASYNC_MSG = 33;
     public static final int ACT_DOWN_ASYNC_MSG = 34;
     public static final int ACT_ADD_LATENCY = 35;
-    public static final int NB_ACTION = 36;
+    public static final int ACT_REMOVE_ALL_TRANS = 36;
+    public static final int NB_ACTION = 37;
 
 
     private static final TAction[] actions = new TAction[NB_ACTION];
@@ -149,6 +150,7 @@ public class AvatarInteractiveSimulationActions extends AbstractAction {
         actions[ACT_RUN_TO_TIME] = new TAction("run-to-time", "Run to time x", IconManager.imgic1304, IconManager.imgic1304, "Run to time x", "Run simulation until time x is reached. Works only if the simulator is \"ready\"", 'R');
         actions[ACT_RUN_X_TRANSACTIONS] = new TAction("run-x-transactions", "Run x transactions", IconManager.imgic1306, IconManager.imgic1306, "Run x transactions", "Run simulation for x transactions. Works only if the simulator is \"ready\"", 'R');
         actions[ACT_RUN_X_COMMANDS] = new TAction("run-x-commands", "x Step-by-Step", IconManager.imgic1330, IconManager.imgic1330, "x Step-by-Step", "Run simulation for x commands. Works only if the simulator is \"ready\"", 'R');
+        actions[ACT_REMOVE_ALL_TRANS] = new TAction("remove-all-trans","Remove all transactions",IconManager.imgic337, IconManager.imgic337,"Remove all transactions", "Remove all the transactions stored in transaction list", 'R');
 
         actions[ACT_BACK_ONE] = new TAction("back-one", "Back one transaction", IconManager.imgic47, IconManager.imgic47, "Back one transaction", "Go one transaction backward", 'B');
 
diff --git a/src/main/java/ui/avatarinteractivesimulation/AvatarMainCommandsToolBar.java b/src/main/java/ui/avatarinteractivesimulation/AvatarMainCommandsToolBar.java
index 004d0e29f28af9adad965dab91f6519b2d19a3fc..8e85491cf542a0187cbbc614928a7b472b5686cd 100755
--- a/src/main/java/ui/avatarinteractivesimulation/AvatarMainCommandsToolBar.java
+++ b/src/main/java/ui/avatarinteractivesimulation/AvatarMainCommandsToolBar.java
@@ -75,6 +75,7 @@ public class AvatarMainCommandsToolBar extends AvatarInteractiveSimulationBar {
         jfais.actions[AvatarInteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(b);
         jfais.actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(b);
         jfais.actions[AvatarInteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(b);
+        jfais.actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b);
 
 
 
@@ -86,6 +87,9 @@ public class AvatarMainCommandsToolBar extends AvatarInteractiveSimulationBar {
         button = this.add(jfais.actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU]);
         button.addMouseListener(jfais.mouseHandler);
 
+        button = this.add(jfais.actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS]);
+        button.addMouseListener(jfais.mouseHandler);
+
         this.addSeparator();
 
         button = this.add(jfais.actions[AvatarInteractiveSimulationActions.ACT_BACK_ONE]);
diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
index 26b722873b67a8974fd87d667edaa0577616aa49..060fd547cd80d8c57ae55b58676278637bffd57c 100755
--- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
+++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java
@@ -1247,6 +1247,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
                 actions[AvatarInteractiveSimulationActions.ACT_BACK_ONE].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(true);
+                actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(false);
 
                 b = true;
@@ -1257,6 +1258,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
                 actions[AvatarInteractiveSimulationActions.ACT_BACK_ONE].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(false);
+                actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(true);
                 b = false;
                 break;
@@ -1265,6 +1267,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
                 actions[AvatarInteractiveSimulationActions.ACT_BACK_ONE].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(true);
+                actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(false);
                 b = true;
                 break;
@@ -1275,6 +1278,7 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
                 actions[AvatarInteractiveSimulationActions.ACT_BACK_ONE].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(false);
                 actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(true);
+                actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(true);
                 actions[AvatarInteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(false);
                 b = true;
                 break;
@@ -2103,6 +2107,10 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements AvatarS
         } else if (command.equals(actions[AvatarInteractiveSimulationActions.ACT_RESET_SIMU].getActionCommand())) {
             resetSimulation();
 
+        } else if  (command.equals(actions[AvatarInteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].getActionCommand())) {
+            if (ass != null) {
+                ass.removeAllTransactions();
+            }
         } else if (command.equals(actions[AvatarInteractiveSimulationActions.ACT_STOP_AND_CLOSE_ALL].getActionCommand())) {
             close();
             return;
diff --git a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java
index a8f1487f8e64f5ad8fa97a510c8eae99eaa9bc6b..ed9ed4ee53a70e55db846fcfc7dbdf93fbe583d6 100755
--- a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java
+++ b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java
@@ -159,7 +159,7 @@ public class InteractiveSimulationActions extends AbstractAction {
         actions[ACT_RUN_TO_TIME] = new TAction("run-to-time", "Run to time x", IconManager.imgic1304, IconManager.imgic1304, "Run to time x", "Run simulation until time x is reached. Works only if the simulator is \"ready\"", 'R');
         actions[ACT_RUN_X_TRANSACTIONS] = new TAction("run-x-transactions", "Run x transactions", IconManager.imgic1306, IconManager.imgic1306, "Run x transactions", "Run simulation for x transactions. Works only if the simulator is \"ready\"", 'R');
         actions[ACT_RUN_X_COMMANDS] = new TAction("run-x-commands", "Run x commands", IconManager.imgic1308, IconManager.imgic1308, "Run x commands", "Run simulation for x commands. Works only if the simulator is \"ready\"", 'R');
-        actions[ACT_REMOVE_ALL_TRANS] = new TAction("remove-all-trans","Remove all transactions",IconManager.imgic337, IconManager.imgic337,"Remove all transactions", "Remove all the transactions stored before", 'R');
+        actions[ACT_REMOVE_ALL_TRANS] = new TAction("remove-all-trans","Remove all transactions",IconManager.imgic337, IconManager.imgic337,"Remove all transactions", "Remove all the transactions stored in transaction list", 'R');
 
         actions[ACT_RUN_EXPLORATION] = new TAction("run-exploration", "Run exploration", IconManager.imgic1326, IconManager.imgic1326, "Run exploration", "Explore branches of the simulation", 'R');
         actions[ACT_RUN_TO_NEXT_BUS_TRANSFER] = new TAction("run-until-bus-transfer", "Run until bus transfer", IconManager.imgic1316, IconManager.imgic1316, "Run until transfer on bus", "Run until a transfer on the indicated bus is performed. Works only if the simulator is \"ready\"", 'R');
diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index de314c73b8c472a896e029df72509e6804bc2441..4ce4bc45976665028e780d359def98453ffccad7 100644
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -2359,8 +2359,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
                                         TMLArchiCPUNode tmpcpu = (TMLArchiCPUNode) tg;
                                         for (int i = 0; i < trans.size(); i++) {
                                             String temp = trans.get(i).deviceName;
-                                            temp = temp.substring(0, temp.indexOf("_"));
-                                            if (tg.getName().equals(temp)) {
+                                            if (temp.contains(tg.getName())) {
                                                 _trans.add(trans.elementAt(i));
                                             }
                                         }
@@ -3481,7 +3480,6 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
             askForUpdate();
         } else if (command.equals(actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].getActionCommand())) {
             sendCommand("rmat 1");
-            updateTransactions();
 
             if(taskTransactionPanel != null) {
                 taskTransactionPanel.resetTable();
@@ -3507,7 +3505,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
                     break;
                 }
             }
-
+            updateTransactions();
         } else if (command.equals(actions[InteractiveSimulationActions.ACT_STOP_SIMU].getActionCommand())) {
             sendCommand("stop");
         } else if (command.equals(actions[InteractiveSimulationActions.ACT_UPDATE_VARIABLES].getActionCommand())) {
diff --git a/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java b/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java
index 182c04d3a02a7eb8294c3ccdb00df6dbdb4a807a..9712dd4fdefc6744149cc432b290bfb675dca2a2 100644
--- a/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java
+++ b/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java
@@ -80,16 +80,19 @@ public class TaskTransactionTableModel extends AbstractTableModel  {
     }
 
     public synchronized void setData(Vector<SimulationTransaction> _trans, String taskName) {
-        data = new SimulationTransaction[_trans.size()];
-        int t = 0;
-        for(int i=0; i<_trans.size(); i++) {
-            if (_trans.get(i).taskName.equals(taskName)){
-                data[t] = _trans.get(i);
-                t++;
-            }
+        if(_trans != null) {
+            data = new SimulationTransaction[_trans.size()];
+            int t = 0;
+            for(int i=0; i<_trans.size(); i++) {
+                if (_trans.get(i).taskName.equals(taskName)){
+                    data[t] = _trans.get(i);
+                    t++;
+                }
 
+            }
+            fireTableStructureChanged();
         }
-        fireTableStructureChanged();
+
     }
 
 }
diff --git a/ttool/src/test/java/tmltranslator/RemoveAllTransactionsTests.java b/ttool/src/test/java/tmltranslator/RemoveAllTransactionsTests.java
index a9830670690a978e1dda63273962793351d3cbff..402dcff46463c68e61b9e7634401a71e2389e5ab 100644
--- a/ttool/src/test/java/tmltranslator/RemoveAllTransactionsTests.java
+++ b/ttool/src/test/java/tmltranslator/RemoveAllTransactionsTests.java
@@ -2,9 +2,8 @@ package tmltranslator;
 
 import common.ConfigurationTTool;
 import common.SpecConfigTTool;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.select.Elements;
+import graph.AUTGraph;
+import myutil.FileUtils;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -29,6 +28,8 @@ public class RemoveAllTransactionsTests extends AbstractUITest {
     final String DIR_GEN = "test_diplo_simulator/";
     final String [] MODELS_PARSE_HTML = {"parseFPGA_HTML"};
     final static String EXPECTED_FILE_REMOVE_ALL_TRANS = getBaseResourcesDir() + "tmltranslator/expected/expected_remove_all_trans.txt";
+    final int [] FULL_DATA_TRANSACTION = {21, 20, 1179, 1179};
+    final int [] REMOVE_DATA_TRANSACTION = {8, 7, 1179, 1179};
     private String SIM_DIR;
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
@@ -157,7 +158,7 @@ public class RemoveAllTransactionsTests extends AbstractUITest {
                 //list 100 recent transactions on TransacList to check it is empty or not
                 //run again next 100 time units
                 // save trace file and check the transactions displayed on the trace.
-                params[2] = "26 1;1 6 100; 26 1;22 100; 1 6 100; 7 2 " + graphPath +"_save.txt";
+                params[2] = "26 1;1 6 100; 26 1;22 100; 1 6 100; 7 2 " + graphPath + "_save.txt" + "; 1 0; 1 7 100 100 " + graphPath + "_save";
                 proc = Runtime.getRuntime().exec(params);
                 proc_in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                 monitorError(proc);
@@ -169,6 +170,23 @@ public class RemoveAllTransactionsTests extends AbstractUITest {
                         out.append(str + "\n");
                     }
                 }
+
+                params = new String[3];
+
+                params[0] = "./" + SIM_DIR + "run.x";
+                params[1] = "-cmd";
+                params[2] = "1 0; 1 7 100 100 " + graphPath + "_full";
+                proc = Runtime.getRuntime().exec(params);
+                //proc = Runtime.getRuntime().exec("./" + SIM_DIR + "run.x -explo -gname testgraph_" + s);
+                proc_in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+
+                monitorError(proc);
+
+                while ((str = proc_in.readLine()) != null) {
+                    // TraceManager.addDev( "Sending " + str + " from " + port + " to client..." );
+                    System.out.println("executing: " + str);
+                }
+
             } catch (Exception e) {
                 // Probably make is not installed
                 System.out.println("FAILED: executing simulation");
@@ -215,6 +233,59 @@ public class RemoveAllTransactionsTests extends AbstractUITest {
             }
             reader1.close();
             reader2.close();
+
+            //compare number of states
+            //Non remove trans check
+            File graphFile = new File(graphPath + "_full.aut");
+            String graphData = "";
+            try {
+                graphData = FileUtils.loadFileData(graphFile);
+            } catch (Exception e) {
+                assertTrue(false);
+            }
+
+            AUTGraph graph = new AUTGraph();
+            graph.buildGraph(graphData);
+            // States and transitions
+            System.out.println("executing: nb states of " + s + " " + graph.getNbOfStates());
+            assertTrue(FULL_DATA_TRANSACTION[0] == graph.getNbOfStates());
+            System.out.println("executing: nb transitions of " + s + " " + graph.getNbOfTransitions());
+            assertTrue(FULL_DATA_TRANSACTION[1] == graph.getNbOfTransitions());
+
+            // Min and max cycles
+            int minValue = graph.getMinValue("allCPUsFPGAsTerminated");
+            System.out.println("executing: minvalue of " + s + " " + minValue);
+            assertTrue(FULL_DATA_TRANSACTION[2] == minValue);
+
+            int maxValue = graph.getMaxValue("allCPUsFPGAsTerminated");
+            System.out.println("executing: maxvalue of " + s + " " + maxValue);
+            assertTrue(FULL_DATA_TRANSACTION[3] == maxValue);
+
+            //Remove trans check
+            graphFile = new File(graphPath + "_save.aut");
+            graphData = "";
+            try {
+                graphData = FileUtils.loadFileData(graphFile);
+            } catch (Exception e) {
+                assertTrue(false);
+            }
+
+            graph = new AUTGraph();
+            graph.buildGraph(graphData);
+            // States and transitions
+            System.out.println("executing: nb states of remove transactions " + s + " " + graph.getNbOfStates());
+            assertTrue(REMOVE_DATA_TRANSACTION[0] == graph.getNbOfStates());
+            System.out.println("executing: nb transitions of remove transactions " + s + " " + graph.getNbOfTransitions());
+            assertTrue(REMOVE_DATA_TRANSACTION[1] == graph.getNbOfTransitions());
+
+            // Min and max cycles
+            minValue = graph.getMinValue("allCPUsFPGAsTerminated");
+            System.out.println("executing: minvalue of remove transactions " + s + " " + minValue);
+            assertTrue(REMOVE_DATA_TRANSACTION[2] == minValue);
+
+            maxValue = graph.getMaxValue("allCPUsFPGAsTerminated");
+            System.out.println("executing: maxvalue of remove transactions " + s + " " + maxValue);
+            assertTrue(REMOVE_DATA_TRANSACTION[3] == maxValue);
         }
     }
 }