diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c
index 4fe5667c818342ed3f6140c6403174c166ce244c..e6c5d4ec5c187cdad207a1f0c813e72921f0a7eb 100644
--- a/common/utils/itti/intertask_interface.c
+++ b/common/utils/itti/intertask_interface.c
@@ -392,7 +392,7 @@ void itti_terminate_tasks(task_id_t task_id) {
 int itti_init(thread_id_t thread_max, MessagesIds messages_id_max, const char * const *threads_name,
               const message_info_t *messages_info, const char * const messages_definition_xml, const char * const dump_file_name) {
     int i;
-    itti_desc.message_number = 0;
+    itti_desc.message_number = 1;
 
     ITTI_DEBUG( "Init: %d threads, %d messages\n", thread_max, messages_id_max);
 
diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index c0362696c76684067652d852813daffa611e9170..788b7d4a5cef1aab9efb5b6dfe3ecddf797d66ca 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -55,7 +55,7 @@
 #include "intertask_interface.h"
 #include "intertask_interface_dump.h"
 
-#define SIGNAL_NAME_LENGTH  50
+#define SIGNAL_NAME_LENGTH  48
 
 /* Declared in intertask_interface.c */
 extern int itti_debug;
@@ -282,7 +282,6 @@ int itti_dump_queue_message(message_number_t message_number,
         fwrite (&header, sizeof(itti_socket_header_t), 1, dump_file);
         fwrite (&new->message_number, sizeof(new->message_number), 1, dump_file);
         fwrite (new->message_name, sizeof(new->message_name), 1, dump_file);
-        fwrite (&new->data_size, sizeof(new->data_size), 1, dump_file);
         fwrite (new->data, new->data_size, 1, dump_file);
     }
 
diff --git a/common/utils/itti_analyzer/common/itti_types.h b/common/utils/itti_analyzer/common/itti_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..acacbb2cada5da937a243fa5ac8ae25d68738814
--- /dev/null
+++ b/common/utils/itti_analyzer/common/itti_types.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 1991, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *  @(#)queue.h 8.5 (Berkeley) 8/20/94
+ */
+
+#ifndef _ITTI_TYPES_H_
+#define _ITTI_TYPES_H_
+
+/* Message sent is an intertask dump type */
+#define ITTI_DUMP_MESSAGE_TYPE      0x1
+#define ITTI_STATISTIC_MESSAGE_TYPE 0x2
+#define ITTI_DUMP_XML_DEFINITION    0x3
+
+/* Message header is the common part that should never change between
+ * remote process and this one.
+ */
+typedef struct {
+    /* The size of this structure */
+    uint32_t message_size;
+    uint32_t message_type;
+} itti_socket_header_t;
+
+#define SIGNAL_NAME_LENGTH  48
+
+typedef struct {
+    uint32_t message_number;
+    char     signal_name[SIGNAL_NAME_LENGTH];
+} itti_signal_header_t;
+
+#endif
diff --git a/common/utils/itti_analyzer/libbuffers/socket.c b/common/utils/itti_analyzer/libbuffers/socket.c
index 9d4a4bd11e5c6abd0082887e772dc4035e0c1fe8..11cf28a3250ff44df601677979585459f98417ef 100644
--- a/common/utils/itti_analyzer/libbuffers/socket.c
+++ b/common/utils/itti_analyzer/libbuffers/socket.c
@@ -9,6 +9,7 @@
 
 #include <gtk/gtk.h>
 
+#include "itti_types.h"
 #include "rc.h"
 
 #include "ui_interface.h"
@@ -23,20 +24,6 @@
 #define SOCKET_NB_SIGNALS_BEFORE_SIGNALLING 10
 #define SOCKET_MS_BEFORE_SIGNALLING         100
 
-/* Message header is the common part that should never change between
- * remote process and this one.
- */
-typedef struct {
-    /* The size of this structure */
-    uint32_t message_size;
-    uint32_t message_type;
-} itti_socket_header_t;
-
-typedef struct {
-    uint32_t message_number;
-    char     signal_name[50];
-} itti_signal_header_t;
-
 void *socket_thread_fct(void *arg);
 
 static ssize_t socket_read_data(socket_data_t *socket_data, void *buffer, size_t size, int flags)
@@ -196,13 +183,13 @@ static int socket_read(socket_data_t *socket_data)
         }
 
         switch(message_header.message_type) {
-            case 1:
+            case ITTI_DUMP_MESSAGE_TYPE:
                 socket_read_itti_message(socket_data, &message_header);
                 break;
-            case 3:
+            case ITTI_DUMP_XML_DEFINITION:
                 socket_read_xml_definition(socket_data, &message_header);
                 break;
-            case 2:
+            case ITTI_STATISTIC_MESSAGE_TYPE:
             default:
                 g_debug("Received unknow (or not implemented) message from socket type: %d",
                         message_header.message_type);
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.c b/common/utils/itti_analyzer/libui/ui_callbacks.c
index 0998dd20c12b38711667570886a710d91fa4831d..f4be4438e9d9bf737348a98131b3a42d1718275a 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.c
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.c
@@ -73,7 +73,6 @@ ui_callback_on_select_signal(GtkTreeSelection *selection,
     return TRUE;
 }
 
-static
 void ui_signal_add_to_list(gpointer data, gpointer user_data)
 {
     buffer_t *signal_buffer;
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.h b/common/utils/itti_analyzer/libui/ui_callbacks.h
index d565c85ae8e3434dc0738494a8aea8e4bb6a03d9..be3ccb9041419b014952a2966af2b9f58bade53f 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.h
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.h
@@ -9,6 +9,9 @@ gboolean ui_callback_on_about(GtkWidget *widget,
                               GdkEvent  *event,
                               gpointer   data);
 
+void ui_signal_add_to_list(gpointer data,
+                           gpointer user_data);
+
 gboolean ui_callback_on_connect(GtkWidget *widget,
                                 GdkEvent  *event,
                                 gpointer   data);
diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c
index 5a914e3f183e5e4c6ff07180cb5ab01cce400517..15caa49c89b1e07ab4140e26f38d825eeb448e05 100644
--- a/common/utils/itti_analyzer/libui/ui_notifications.c
+++ b/common/utils/itti_analyzer/libui/ui_notifications.c
@@ -1,22 +1,25 @@
+#include <fcntl.h>
 #include <stdlib.h>
 #include <stdint.h>
 #include <stdarg.h>
 
 #include <gtk/gtk.h>
 
+#include "itti_types.h"
 #include "rc.h"
 
 #include "ui_interface.h"
 #include "ui_main_screen.h"
 #include "ui_notifications.h"
+#include "ui_callbacks.h"
 
 #include "xml_parse.h"
 
 int ui_disable_connect_button(void)
 {
     /* Disable Connect button and enable disconnect button */
-    gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.connect), FALSE);
-    gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.disconnect), TRUE);
+    gtk_widget_set_sensitive (GTK_WIDGET (ui_main_data.connect), FALSE);
+    gtk_widget_set_sensitive (GTK_WIDGET (ui_main_data.disconnect), TRUE);
 
     return RC_OK;
 }
@@ -24,8 +27,8 @@ int ui_disable_connect_button(void)
 int ui_enable_connect_button(void)
 {
     /* Disable Disconnect button and enable connect button */
-    gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.connect), TRUE);
-    gtk_widget_set_sensitive(GTK_WIDGET(ui_main_data.disconnect), FALSE);
+    gtk_widget_set_sensitive (GTK_WIDGET (ui_main_data.connect), TRUE);
+    gtk_widget_set_sensitive (GTK_WIDGET (ui_main_data.disconnect), FALSE);
 
     return RC_OK;
 }
@@ -33,25 +36,105 @@ int ui_enable_connect_button(void)
 int ui_file_chooser(void)
 {
     GtkWidget *filechooser;
+    int result = RC_OK;
 
-    filechooser = gtk_file_chooser_dialog_new(
-        "Select file", GTK_WINDOW(ui_main_data.window),
-        GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
-        GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);
+    filechooser = gtk_file_chooser_dialog_new ("Select file", GTK_WINDOW (ui_main_data.window),
+                                               GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+                                               GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);
 
     /* Process the response */
     if (gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT)
     {
         char *filename;
+        int source;
+        int read_data = 0;
+        void *input_data = NULL;
+        size_t input_data_length = 0;
 
         filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-        xml_parse_file(filename);
-        g_free(filename);
+
+        source = open (filename, O_RDONLY);
+        if (source >= 0)
+        {
+            itti_socket_header_t message_header;
+
+            do
+            {
+                read_data = read (source, &message_header, sizeof(itti_socket_header_t));
+
+                if (read_data == -1)
+                {
+                    g_warning ("Failed to read from file \"%s\": %s", filename, g_strerror (errno));
+                    result = RC_FAIL;
+                    break;
+                }
+
+                if (read_data > 0)
+                {
+                    input_data_length = message_header.message_size - sizeof(itti_socket_header_t);
+
+                    // g_debug ("%x, %x ,%x\n", message_header.message_type, message_header.message_size, input_data_length);
+
+                    /* Checking for non-header part */
+                    if (input_data_length > 0)
+                    {
+                        input_data = malloc (input_data_length);
+
+                        if (read (source, input_data, input_data_length) < 0)
+                        {
+                            g_warning ("Failed to read from file \"%s\": %s", filename, g_strerror (errno));
+                            result = RC_FAIL;
+                            break;
+                        }
+                    }
+
+                    switch (message_header.message_type)
+                    {
+                        case ITTI_DUMP_MESSAGE_TYPE:
+                        {
+                            itti_signal_header_t *itti_signal_header = input_data;
+                            buffer_t *buffer;
+
+                            /* Create the new buffer */
+                            if (buffer_new_from_data (&buffer, input_data + sizeof(itti_signal_header_t),
+                                                      input_data_length - sizeof(itti_signal_header_t), 0) != RC_OK)
+                            {
+                                g_error ("Failed to create new buffer");
+                                g_assert_not_reached ();
+                            }
+
+                            buffer->message_number = itti_signal_header->message_number;
+
+                            ui_signal_add_to_list (buffer, NULL);
+                            break;
+                        }
+
+                        case ITTI_DUMP_XML_DEFINITION:
+                            xml_parse_buffer (input_data, input_data_length);
+                            break;
+
+                        case ITTI_STATISTIC_MESSAGE_TYPE:
+                        default:
+                            g_debug ("Received unknow (or not implemented) message from socket type: %d",
+                                     message_header.message_type);
+                            break;
+                    }
+
+                    free (input_data);
+                }
+            } while (read_data > 0);
+
+            g_debug ("Read %d message from file \"%s\"\n", ui_main_data.nb_message_received, filename);
+
+            close (source);
+        }
+
+        g_free (filename);
     }
 
     gtk_widget_destroy (filechooser);
 
-    return RC_OK;
+    return result;
 }
 
 int ui_progress_bar_set_fraction(double fraction)