diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 2293ac11d1..6d99e8b22e 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -287,9 +287,8 @@ function show_filter() {
     $("#load-filter-select").dialog({
         resizable: true,
         draggable: true,
-        modal: true,
-        closeOnEscape: true,
-        open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
+        modal: false,
+        closeOnEscape: true
     });
 }
 
@@ -487,12 +486,29 @@ if ($save_filter_modal) {
     ?>
 <script type="text/javascript">
 function show_save_filter() {
+    $('#save_filter_row1').show();
+    $('#save_filter_row2').show();
+    $('#update_filter_row1').hide();
+    // Filter save mode selector
+    $("[name='filter_mode']").click(function() {
+        if ($(this).val() == 'new') {
+            $('#save_filter_row1').show();
+            $('#save_filter_row2').show();
+            $('#submit-save_filter').show();
+            $('#update_filter_row1').hide();
+        }
+        else {
+            $('#save_filter_row1').hide();
+            $('#save_filter_row2').hide();
+            $('#update_filter_row1').show();
+            $('#submit-save_filter').hide();
+        }
+    });
     $("#save-filter-select").dialog({
         resizable: true,
         draggable: true,
-        modal: true,
-        closeOnEscape: true,
-        open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
+        modal: false,
+        closeOnEscape: true
     });
 }
 
@@ -1110,7 +1126,7 @@ if ($get_extended_event) {
             $childrens_ids
         )))
     ) {
-        $responses = events_page_responses($event, $childrens_ids);
+        $responses = events_page_responses($event);
     } else {
         $responses = '';
     }
@@ -1147,7 +1163,7 @@ if ($get_extended_event) {
 
     $general = events_page_general($event);
 
-    $comments = events_page_comments($event, $childrens_ids);
+    $comments = events_page_comments($event);
 
     $notifications = '<div id="notification_comment_error" style="display:none">'.ui_print_error_message(__('Error adding comment'), '', true).'</div>';
     $notifications .= '<div id="notification_comment_success" style="display:none">'.ui_print_success_message(__('Comment added successfully'), '', true).'</div>';
diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php
index b9feaf5d40..effc674289 100644
--- a/pandora_console/include/constants.php
+++ b/pandora_console/include/constants.php
@@ -147,7 +147,7 @@ define('COL_UNKNOWN', '#B2B2B2');
 define('COL_DOWNTIME', '#976DB1');
 define('COL_IGNORED', '#DDD');
 define('COL_ALERTFIRED', '#FFA631');
-define('COL_MINOR', '#F099A2');
+define('COL_MINOR', '#B2B2B2');
 define('COL_MAJOR', '#C97A4A');
 define('COL_INFORMATIONAL', '#E4E4E4');
 define('COL_MAINTENANCE', '#4a83f3');
diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 4fad541ee7..6055e0fdad 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -492,7 +492,7 @@ function events_get_all(
 
     if (isset($filter['id_agent']) && $filter['id_agent'] > 0) {
         $sql_filters[] = sprintf(
-            ' AND id_agente = %d ',
+            ' AND te.id_agente = %d ',
             $filter['id_agent']
         );
     }
@@ -4249,34 +4249,49 @@ function events_page_general($event)
 /**
  * Generate 'comments' page for event viewer.
  *
- * @param array $event         Event.
- * @param array $childrens_ids Children ids.
+ * @param array $event Event.
  *
  * @return string HTML.
  */
-function events_page_comments($event, $childrens_ids=[])
+function events_page_comments($event)
 {
     // Comments.
     global $config;
 
+    $comments = '';
+
+    $comments = $event['user_comment'];
+    if (isset($event['comments'])) {
+        $comments = $event['comments'];
+    }
+
     $table_comments = new stdClass;
     $table_comments->width = '100%';
     $table_comments->data = [];
     $table_comments->head = [];
     $table_comments->class = 'table_modal_alternate';
 
-    $event_comments = $event['user_comment'];
-    $event_comments = str_replace(["\n", '&#x0a;'], '<br>', $event_comments);
+    $comments = str_replace(["\n", '&#x0a;'], '<br>', $comments);
 
     // If comments are not stored in json, the format is old.
-    $event_comments_array = json_decode($event_comments, true);
-
-    // Show the comments more recent first.
-    if (is_array($event_comments_array)) {
-        $event_comments_array = array_reverse($event_comments_array);
+    $comments_array = json_decode(io_safe_output($comments), true);
+    if (json_last_error() != JSON_ERROR_NONE) {
+        $comments_array = [
+            [
+                'comment'    => 'Error retrieving comments',
+                'action'     => 'Internal message',
+                'id_user'    => 'SYSTEM',
+                'utimestamp' => time(),
+            ],
+        ];
     }
 
-    if (empty($event_comments_array)) {
+    // Show the comments more recent first.
+    if (is_array($comments_array)) {
+        $comments_array = array_reverse($comments_array);
+    }
+
+    if (empty($comments_array)) {
         $comments_format = 'old';
     } else {
         $comments_format = 'new';
@@ -4284,7 +4299,7 @@ function events_page_comments($event, $childrens_ids=[])
 
     switch ($comments_format) {
         case 'new':
-            if (empty($event_comments_array)) {
+            if (empty($comments_array)) {
                 $table_comments->style[0] = 'text-align:center;';
                 $table_comments->colspan[0][0] = 2;
                 $data = [];
@@ -4292,10 +4307,10 @@ function events_page_comments($event, $childrens_ids=[])
                 $table_comments->data[] = $data;
             }
 
-            if (isset($event_comments_array) === true
-                && is_array($event_comments_array) === true
+            if (isset($comments_array) === true
+                && is_array($comments_array) === true
             ) {
-                foreach ($event_comments_array as $c) {
+                foreach ($comments_array as $c) {
                     $data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>';
                     $data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>';
                     $data[1] = $c['comment'];
@@ -4305,7 +4320,7 @@ function events_page_comments($event, $childrens_ids=[])
         break;
 
         case 'old':
-            $comments_array = explode('<br>', $event_comments);
+            $comments_array = explode('<br>', $comments);
 
             // Split comments and put in table.
             $col = 0;
diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php
index 4f3dd76663..dda9fa3f0e 100755
--- a/pandora_console/include/functions_ui.php
+++ b/pandora_console/include/functions_ui.php
@@ -3167,8 +3167,21 @@ function ui_print_datatable(array $parameters)
                 type: "POST",
                 dataSrc: function (json) {
                     if (json.error) {
-                        console.log(error);
-                        alert(error);
+                        console.log(json.error);
+                        $("#error-'.$table_id.'").html(json.error);
+                        $("#error-'.$table_id.'").dialog({
+                            title: "Filter failed",
+                            width: 630,
+                            resizable: true,
+                            draggable: true,
+                            modal: false,
+                            closeOnEscape: true,
+                            buttons: {
+                                "Ok" : function () {
+                                    $(this).dialog("close");
+                                }
+                            }
+                        }).parent().addClass("ui-state-error");
                     } else {';
     if (isset($parameters['ajax_postprocess'])) {
         $js .= '
diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js
index a2180668f9..11ec207380 100644
--- a/pandora_console/include/javascript/pandora_events.js
+++ b/pandora_console/include/javascript/pandora_events.js
@@ -515,7 +515,7 @@ function event_change_owner() {
 }
 
 // Save a comment into an event
-function event_comment() {
+function event_comment(e) {
   var event_id = $("#hidden-id_event").val();
   var comment = $("#textarea_comment").val();
   var meta = $("#hidden-meta").val();
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 0c7b604d3c..68c6553f26 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -115,76 +115,95 @@ if (is_ajax()) {
     $length = get_parameter('length', $config['block_size']);
 
     if ($get_events) {
-        $order = get_datatable_order(true);
+        try {
+            ob_start();
+            $order = get_datatable_order(true);
 
-        $events = events_get_all(
-            [
-                'te.id_evento',
-                'te.id_agente',
-                'te.id_usuario',
-                'te.id_grupo',
-                'te.estado',
-                'te.timestamp',
-                'te.evento',
-                'te.utimestamp',
-                'te.event_type',
-                'te.id_agentmodule',
-                'te.id_alert_am',
-                'te.criticity',
-                'te.user_comment',
-                'te.tags',
-                'te.source',
-                'te.id_extra',
-                'te.critical_instructions',
-                'te.warning_instructions',
-                'te.unknown_instructions',
-                'te.owner_user',
-                'te.ack_utimestamp',
-                'te.custom_data',
-                'te.data',
-                'te.module_status',
-                'ta.alias as agent_name',
-                'tg.nombre as group_name',
-            ],
-            $filter,
-            // Offset.
-            $start,
-            // Limit.
-            $length,
-            // Order.
-            $order['direction'],
-            // Sort field.
-            $order['field']
-        );
-        $count = events_get_all(
-            'count',
-            $filter
-        );
+            $events = events_get_all(
+                [
+                    'te.id_evento',
+                    'te.id_agente',
+                    'te.id_usuario',
+                    'te.id_grupo',
+                    'te.estado',
+                    'te.timestamp',
+                    'te.evento',
+                    'te.utimestamp',
+                    'te.event_type',
+                    'te.id_agentmodule',
+                    'te.id_alert_am',
+                    'te.criticity',
+                    'te.user_comment',
+                    'te.tags',
+                    'te.source',
+                    'te.id_extra',
+                    'te.critical_instructions',
+                    'te.warning_instructions',
+                    'te.unknown_instructions',
+                    'te.owner_user',
+                    'te.ack_utimestamp',
+                    'te.custom_data',
+                    'te.data',
+                    'te.module_status',
+                    'ta.alias as agent_name',
+                    'tg.nombre as group_name',
+                ],
+                $filter,
+                // Offset.
+                $start,
+                // Limit.
+                $length,
+                // Order.
+                $order['direction'],
+                // Sort field.
+                $order['field']
+            );
+            $count = events_get_all(
+                'count',
+                $filter
+            );
 
-        if ($count !== false) {
-            $count = $count['0']['nitems'];
-        }
+            if ($count !== false) {
+                $count = $count['0']['nitems'];
+            }
 
-        if ($events) {
-            $data = array_reduce(
-                $events,
-                function ($carry, $item) {
-                    $tmp = (object) $item;
-                    $tmp->evento = io_safe_output($tmp->evento);
-                    $carry[] = $tmp;
-                    return $carry;
-                }
+            if ($events) {
+                $data = array_reduce(
+                    $events,
+                    function ($carry, $item) {
+                        $tmp = (object) $item;
+                        $tmp->evento = io_safe_output($tmp->evento);
+                        $carry[] = $tmp;
+                        return $carry;
+                    }
+                );
+            }
+
+            // RecordsTotal && recordsfiltered resultados totales.
+            echo json_encode(
+                [
+                    'data'            => $data,
+                    'recordsTotal'    => $count,
+                    'recordsFiltered' => $count,
+                ]
+            );
+            $response = ob_get_clean();
+        } catch (Exception $e) {
+            echo json_encode(
+                ['error' => $e->getMessage()]
             );
         }
 
-        // RecordsTotal && recordsfiltered resultados totales.
-        echo json_encode(
-            [
-                'data'            => $data,
-                'recordsTotal'    => $count,
-                'recordsFiltered' => $count,
-            ]
-        );
+        // If not valid it will throw an exception.
+        json_decode($response);
+        if (json_last_error() == JSON_ERROR_NONE) {
+            // If valid dump.
+            echo $response;
+        } else {
+            echo json_encode(
+                ['error' => $response]
+            );
+        }
     }
 
     // AJAX section ends.
@@ -1279,6 +1298,7 @@ html_print_input_hidden(
 echo "<div id='event_details_window'></div>";
 echo "<div id='event_response_window'></div>";
 echo "<div id='event_response_command_window' title='".__('Parameters')."'></div>";
+echo "<div id='error-".$table_id."'></div>";
 
 // Load filter div for dialog.
 echo '<div id="load-modal-filter" style="display: none"></div>';
@@ -1422,7 +1442,7 @@ function process_datatables_item(item) {
     evn += '<div><a href="javascript:" onclick="show_event_dialog(\'';
     evn += btoa(JSON.stringify(item))+'\','+$("#group_rep").val()+');">';
     // Grouped events.
-    if(item.event_rep) {
+    if(item.event_rep && item.event_rep > 1) {
         evn += '('+item.event_rep+') ';
     }
     evn += item.evento+'</a></div>';