diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index 8ceb37459f053b154ee662e181d2defcc1b80308..6867d4ab520d058de6011af6eab5f311a13d80bc 100644
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -141,6 +141,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
     // Commands
     private JPanel /*main,*/ mainTop, commands/*, save, state*/, infos/*, outputs*/, cpuPanel, variablePanel;
     protected JPanelTransactions transactionPanel;
+    protected JPanelTaskTransactions taskTransactionPanel;
     private JCheckBox latex, debug, animate, diploids, update, openDiagram, animateWithInfo;
     private JTabbedPane commandTab, infoTab;
     protected JTextField paramMainCommand;
@@ -894,7 +895,13 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
           transactionPanel.add(jspTransactionInfo, BorderLayout.NORTH);
           updateTransactionInformationButton = new JButton(actions[InteractiveSimulationActions.ACT_UPDATE_TRANSACTIONS]);
           transactionPanel.add(updateTransactionInformationButton, BorderLayout.SOUTH);*/
+        if (tmap == null) {
+            taskTransactionPanel = new JPanelTaskTransactions(null, this,NB_OF_TRANSACTIONS);
+        } else {
+            taskTransactionPanel = new JPanelTaskTransactions(tmap.getTMLModeling(),this,NB_OF_TRANSACTIONS);
+        }
 
+        infoTab.addTab("Task Transactions", null, taskTransactionPanel, "Transactions of given Task");
         // CPUs
         cpuPanel = new JPanel();
         cpuPanel.setLayout(new BorderLayout());
@@ -2333,6 +2340,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
                 if (transactionPanel != null) {
                     transactionPanel.setData(trans);
                 }
+                if (taskTransactionPanel != null) {
+                    taskTransactionPanel.setData(trans);
+                }
                 if (latencyPanel !=null){
                     processLatency();
                 }
@@ -2867,6 +2877,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
         if (transactionPanel != null) {
             nb = transactionPanel.getNbOfTransactions();
         }
+        if (taskTransactionPanel != null) {
+            nb = taskTransactionPanel.getNbOfTransactions();
+        }
         sendCommand("lt " + nb);
     }
 
diff --git a/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java b/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java
new file mode 100644
index 0000000000000000000000000000000000000000..fac00133b88f6bc7706bd1709298177cb319ef9f
--- /dev/null
+++ b/src/main/java/ui/interactivesimulation/JPanelTaskTransactions.java
@@ -0,0 +1,136 @@
+package ui.interactivesimulation;
+
+import myutil.TableSorter;
+import tmltranslator.TMLModeling;
+import ui.TGComponent;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Vector;
+
+public class JPanelTaskTransactions extends JPanel {
+    private JFrameInteractiveSimulation jfis;
+    private TaskTransactionTableModel ttm;
+    private JButton updateTransactionInformationButton;
+    private JScrollPane jspTransactionInfo;
+    private JComboBox<String> tasks;
+    private Vector<SimulationTransaction> _trans;
+    private TMLModeling<TGComponent> tmlm;
+
+    private JTextField nbOfTransactions;
+    private int defaultNbOfTransactions;
+
+
+
+
+    public JPanelTaskTransactions(TMLModeling<TGComponent> _tmlm,JFrameInteractiveSimulation _jfis, int _defaultNbOfTransactions) {
+        super();
+        tmlm = _tmlm;
+        jfis = _jfis;
+        defaultNbOfTransactions = _defaultNbOfTransactions;
+
+        makeComponents();
+        setComponents();
+    }
+
+    public void makeComponents() {
+        TableSorter sorterPI;
+        JTable jtablePI;
+
+        GridBagLayout gridbag2 = new GridBagLayout();
+        GridBagConstraints c2 = new GridBagConstraints();
+        setLayout(gridbag2);
+        setBorder(new javax.swing.border.TitledBorder("Managing transactions of Tasks"));
+
+        ttm = new TaskTransactionTableModel(jfis);
+        sorterPI = new TableSorter(ttm);
+        jtablePI = new JTable(sorterPI);
+        sorterPI.setTableHeader(jtablePI.getTableHeader());
+        ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(100);
+        ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(200);
+        ((jtablePI.getColumnModel()).getColumn(2)).setPreferredWidth(150);
+        ((jtablePI.getColumnModel()).getColumn(3)).setPreferredWidth(100);
+        ((jtablePI.getColumnModel()).getColumn(4)).setPreferredWidth(100);
+        ((jtablePI.getColumnModel()).getColumn(5)).setPreferredWidth(100);
+        ((jtablePI.getColumnModel()).getColumn(6)).setPreferredWidth(100);
+        jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        jspTransactionInfo = new JScrollPane(jtablePI);
+        jspTransactionInfo.setWheelScrollingEnabled(true);
+        jspTransactionInfo.getVerticalScrollBar().setUnitIncrement(10);
+        jspTransactionInfo.setPreferredSize(new Dimension(500, 300));
+
+
+        c2.gridwidth = GridBagConstraints.REMAINDER; //end row
+        c2.fill = GridBagConstraints.BOTH;
+        c2.gridheight = 5;
+        c2.weighty = 10.0;
+        c2.weightx = 10.0;
+        add(jspTransactionInfo, c2);
+
+        // 2nd line panel2
+        c2.weighty = 1.0;
+        c2.weightx = 1.0;
+        c2.fill = GridBagConstraints.BOTH;
+        c2.gridheight = 1;
+        add(new JLabel(""), c2);
+        add(new JLabel("# of transactions per node:"), c2);
+
+        c2.gridwidth = GridBagConstraints.REMAINDER; //end row
+        c2.fill = GridBagConstraints.HORIZONTAL;
+
+        nbOfTransactions = new JTextField(Integer.toString(defaultNbOfTransactions), defaultNbOfTransactions);
+        add(nbOfTransactions, c2);
+
+        add(new JLabel(" "), c2);
+        tasks = new JComboBox<>();
+        if(tmlm != null){
+            for (int k = 0; k < tmlm.getTasks().size(); k++){
+                tasks.addItem(tmlm.getTasks().get(k).getName());
+            }
+        }
+
+        tasks.setSelectedIndex(0);
+        add(tasks, c2);
+//        updateTransactionInformationButton = new JButton(jfis.actions[InteractiveSimulationActions.ACT_UPDATE_TRANSACTIONS]);
+//        add(updateTransactionInformationButton, c2);
+        tasks.addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                if (e.getStateChange() == ItemEvent.SELECTED) {
+                    System.out.println("levan" + tasks.getSelectedItem().toString());
+                    if (ttm != null) {
+                        ttm.setData(_trans,tasks.getSelectedItem().toString());
+                    }
+                }
+            }
+        });
+    }
+
+    public void setComponents() {
+
+    }
+
+    public TaskTransactionTableModel getTableModel() {
+        return ttm;
+    }
+
+    public int getNbOfTransactions() {
+
+        try {
+            defaultNbOfTransactions = Integer.decode(nbOfTransactions.getText()).intValue();
+        } catch (Exception e) {
+            //TraceManager.addDev(nbOfTransactions.getText());
+            //TraceManager.addDev("Invalid default transaction");
+            defaultNbOfTransactions = 0;
+        }
+        return defaultNbOfTransactions;
+    }
+
+
+    public void setData(Vector<SimulationTransaction> _trans) {
+      this._trans = _trans;
+    }
+
+}
diff --git a/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java b/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..182c04d3a02a7eb8294c3ccdb00df6dbdb4a807a
--- /dev/null
+++ b/src/main/java/ui/interactivesimulation/TaskTransactionTableModel.java
@@ -0,0 +1,95 @@
+package ui.interactivesimulation;
+
+import javax.swing.table.AbstractTableModel;
+import java.util.ArrayList;
+import java.util.Vector;
+
+public class TaskTransactionTableModel extends AbstractTableModel  {
+    private JFrameInteractiveSimulation jfis;
+    private int nbOfRows;
+    private SimulationTransaction data[];
+
+
+    //private String [] names;
+    public TaskTransactionTableModel(JFrameInteractiveSimulation _jfis) {
+        jfis = jfis;
+        data = null;
+    }
+
+    // From AbstractTableModel
+    public synchronized int getRowCount() {
+        //Vector<SimulationTransaction> tr = jfis.getListOfRecentTransactions();
+        if (data == null) {
+            return 0;
+        }
+        return data.length;
+    }
+
+    public int getColumnCount() {
+        return 7;
+    }
+
+    public synchronized Object getValueAt(int row, int column) {
+        if (data == null) {
+            return "";
+        }
+
+        if (row >= data.length) {
+            return "";
+        }
+
+        SimulationTransaction st = data[row];
+
+        switch(column) {
+            case 0:
+                return st.deviceName;
+            case 1:
+                return st.taskName;
+            case 2:
+                return st.command;
+            case 3:
+                return st.startTime;
+            case 4:
+                return st.endTime;
+            case 5:
+                return st.length;
+            case 6:
+                return st.channelName;
+        }
+        return "unknown";
+    }
+
+    public String getColumnName(int columnIndex) {
+        switch(columnIndex) {
+            case 0:
+                return "Node";
+            case 1:
+                return "Task";
+            case 2:
+                return "Command";
+            case 3:
+                return "Start";
+            case 4:
+                return "End";
+            case 5:
+                return "Length";
+            case 6:
+                return "Channel";
+        }
+        return "unknown";
+    }
+
+    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++;
+            }
+
+        }
+        fireTableStructureChanged();
+    }
+
+}