diff --git a/pandora_console/include/javascript/pandora_visual_console.js b/pandora_console/include/javascript/pandora_visual_console.js
index 1163a2ccb2..4407a75bb0 100755
--- a/pandora_console/include/javascript/pandora_visual_console.js
+++ b/pandora_console/include/javascript/pandora_visual_console.js
@@ -162,7 +162,7 @@ function createVisualConsole(
       var item = e.item || {};
       var meta = item.meta || {};
 
-      if (meta.editMode && !meta.isUpdating) {
+      if ((meta.editMode || meta.lineMode) && !meta.isUpdating) {
         createOrUpdateVisualConsoleItem(
           visualConsole,
           asyncTaskManager,
@@ -1344,7 +1344,7 @@ function cleanupDOM() {
   $("#modalVCItemForm").empty();
 }
 /* Defined in operations/visual_console/view.php */
-/* global handleFormResponse,$,load_modal */
+/* global $, load_modal */
 function createOrUpdateVisualConsoleItem(
   visualConsole,
   asyncTaskManager,
@@ -1373,7 +1373,7 @@ function createOrUpdateVisualConsoleItem(
     form: ["itemForm-label", "itemForm-general", "itemForm-specific"],
     url: baseUrl + "ajax.php",
     ajax_callback: function(response) {
-      var data = JSON.parse(response); //handleFormResponse(response);
+      var data = JSON.parse(response);
 
       if (data == false) {
         // Error.
diff --git a/pandora_console/include/rest-api/index.php b/pandora_console/include/rest-api/index.php
index 230b4dd7a2..b053b3f164 100644
--- a/pandora_console/include/rest-api/index.php
+++ b/pandora_console/include/rest-api/index.php
@@ -17,7 +17,7 @@ $method = get_parameter('method');
 if ($method) {
     $viewer = new Viewer();
     try {
-        if (method_exists($viewer, $method)) {
+        if (method_exists($viewer, $method) === true) {
             echo $viewer->{$method}();
         }
     } catch (Exception $e) {
diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php
index 7883a9ee42..70c5b9a4d4 100644
--- a/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php
+++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Group.php
@@ -209,7 +209,7 @@ final class Group extends Item
             $agentsOk = \agents_get_agents(
                 [
                     'id_grupo' => $groupId,
-                    'status'   => AGENT_STATUS_OK,
+                    'status'   => AGENT_STATUS_NORMAL,
                 ],
                 ['COUNT(*) AS total'],
                 'AR',
diff --git a/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php b/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php
index 76841db53b..0a644bfd9a 100644
--- a/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php
+++ b/pandora_console/include/rest-api/models/VisualConsole/Items/Line.php
@@ -373,41 +373,45 @@ final class Line extends Model
      *
      * @param array $data Unknown input data structure.
      *
-     * @return boolean The modeled element data structure stored into the DB.
+     * @return integer The modeled element data structure stored into the DB.
      *
      * @overrides Model::save.
      */
-    public function save(array $data=[]): bool
+    public function save(array $data=[]): int
     {
-        $data_model = $this->encode($this->toArray());
-        $newData = $this->encode($data);
-
-        $save = \array_merge($data_model, $newData);
-
-        if (!empty($save)) {
-            if (empty($save['id'])) {
+        if (empty($data) === false) {
+            if (empty($data['id']) === true) {
                 // Insert.
+                $save = static::encode($data);
                 $result = \db_process_sql_insert('tlayout_data', $save);
+                if ($result !== false) {
+                    $item = static::fromDB(['id' => $result]);
+                    $item->setData($item->toArray());
+                }
             } else {
                 // Update.
-                $result = \db_process_sql_update('tlayout_data', $save, ['id' => $save['id']]);
+                $dataModelEncode = $this->encode($this->toArray());
+                $dataEncode = $this->encode($data);
+
+                $save = array_merge($dataModelEncode, $dataEncode);
+
+                $result = \db_process_sql_update(
+                    'tlayout_data',
+                    $save,
+                    ['id' => $save['id']]
+                );
+                // Invalidate the item's cache.
+                if ($result !== false && $result > 0) {
+                    $item = static::fromDB(['id' => $save['id']]);
+                    // Update the model.
+                    if (empty($item) === false) {
+                        $this->setData($item->toArray());
+                    }
+                }
             }
         }
 
-        // Update the model.
-        if ($result) {
-            if (empty($save['id'])) {
-                $item = static::fromDB(['id' => $result]);
-            } else {
-                $item = static::fromDB(['id' => $save['id']]);
-            }
-
-            if (!empty($item)) {
-                $this->setData($item->toArray());
-            }
-        }
-
-        return (bool) $result;
+        return $result;
     }
 
 
@@ -442,22 +446,43 @@ final class Line extends Model
     {
         $inputs = [];
 
-        switch ($values['tabSelected']) {
-            // Position.
-            case 'label':
-                // Label.
-                // TODO tinyMCE.
-                $inputs[] = [
-                    'label'     => __('Label'),
-                    'id'        => 'div-label',
-                    'arguments' => [
-                        'name'   => 'label',
-                        'type'   => 'text',
-                        'value'  => $values['label'],
-                        'return' => true,
-                    ],
-                ];
-            break;
+        if ($values['tabSelected'] === 'specific') {
+            // Width.
+            if ($values['borderWidth'] < 1) {
+                $values['borderWidth'] = 1;
+            }
+
+            $inputs[] = [
+                'label'     => __('Width'),
+                'arguments' => [
+                    'name'   => 'borderWidth',
+                    'type'   => 'number',
+                    'value'  => $values['borderWidth'],
+                    'return' => true,
+                ],
+            ];
+
+            // Color.
+            $inputs[] = [
+                'label'     => __('Color'),
+                'arguments' => [
+                    'name'   => 'borderColor',
+                    'type'   => 'color',
+                    'value'  => $values['borderColor'],
+                    'return' => true,
+                ],
+            ];
+
+            // Show on top.
+            $inputs[] = [
+                'label'     => __('Show on top'),
+                'arguments' => [
+                    'name'  => 'isOnTop',
+                    'id'    => 'isOnTop',
+                    'type'  => 'switch',
+                    'value' => $values['isOnTop'],
+                ],
+            ];
         }
 
         return $inputs;
diff --git a/pandora_console/include/rest-api/models/VisualConsole/View.php b/pandora_console/include/rest-api/models/VisualConsole/View.php
index 84859cb786..02d4d06606 100644
--- a/pandora_console/include/rest-api/models/VisualConsole/View.php
+++ b/pandora_console/include/rest-api/models/VisualConsole/View.php
@@ -92,6 +92,15 @@ class View extends \HTML
                     'img'  => 'pencil.png',
                 ],
             ];
+        } else if ($type === LINE_ITEM) {
+            $tabs = [
+                [
+                    'name' => __('Specific settings'),
+                    'id'   => 'tab-specific',
+                    'href' => $url.'&tabSelected=specific',
+                    'img'  => 'event_responses_col.png',
+                ],
+            ];
         }
 
         $result = html_print_tabs($tabs);
@@ -333,7 +342,9 @@ class View extends \HTML
             break;
 
             case LINE_ITEM:
-                // Nothing. no specific items.
+                $data['borderColor'] = \get_parameter('borderColor');
+                $data['borderWidth'] = \get_parameter('borderWidth');
+                $data['isOnTop'] = \get_parameter_switch('isOnTop');
             break;
 
             case AUTO_SLA_GRAPH:
diff --git a/visual_console_client/src/VisualConsole.ts b/visual_console_client/src/VisualConsole.ts
index 2d4c0f1dad..4f0bfe9c52 100644
--- a/visual_console_client/src/VisualConsole.ts
+++ b/visual_console_client/src/VisualConsole.ts
@@ -422,6 +422,9 @@ export default class VisualConsole {
         itemInstance.onLineMovementFinished(
           context.handleLineElementMovementFinished
         );
+        // TODO:Continue
+        //itemInstance.onClick(context.handleElementClick);
+        itemInstance.onDblClick(context.handleElementDblClick);
       } else {
         itemInstance.onClick(context.handleElementClick);
         itemInstance.onDblClick(context.handleElementDblClick);
diff --git a/visual_console_client/src/items/Line.ts b/visual_console_client/src/items/Line.ts
index 68339a4935..986d69b324 100644
--- a/visual_console_client/src/items/Line.ts
+++ b/visual_console_client/src/items/Line.ts
@@ -260,7 +260,8 @@ export default class Line extends Item<LineProps> {
     this.moveMode = newMetadata.editMode;
     super.setMeta({
       ...newMetadata,
-      editMode: false
+      editMode: false,
+      lineMode: true
     });
   }
 
@@ -409,6 +410,15 @@ export default class Line extends Item<LineProps> {
         : `-${this.circleRadius}px`;
 
       if (!this.isMoving) {
+        // Remove circles.
+        const circles = element.getElementsByClassName(
+          "visual-console-item-line-circle"
+        );
+        while (circles.length > 0) {
+          const circle = circles.item(0);
+          if (circle) circle.remove();
+        }
+
         element.appendChild(startCircle);
         element.appendChild(endCircle);
 
diff --git a/visual_console_client/src/lib/index.ts b/visual_console_client/src/lib/index.ts
index 50d2997a32..c287347696 100644
--- a/visual_console_client/src/lib/index.ts
+++ b/visual_console_client/src/lib/index.ts
@@ -278,7 +278,8 @@ export function itemMetaDecoder(data: UnknownObject): ItemMeta | never {
     isUpdating: false,
     isBeingMoved: false,
     isBeingResized: false,
-    isSelected: false
+    isSelected: false,
+    lineMode: false
   };
 }
 
diff --git a/visual_console_client/src/lib/spec.ts b/visual_console_client/src/lib/spec.ts
index e4042bc018..7d052ceb1f 100644
--- a/visual_console_client/src/lib/spec.ts
+++ b/visual_console_client/src/lib/spec.ts
@@ -135,7 +135,8 @@ describe("itemMetaDecoder function", () => {
       editMode: false,
       isBeingMoved: false,
       isBeingResized: false,
-      isSelected: false
+      isSelected: false,
+      lineMode: false
     });
   });
 
@@ -155,7 +156,8 @@ describe("itemMetaDecoder function", () => {
       editMode: true,
       isBeingMoved: false,
       isBeingResized: false,
-      isSelected: false
+      isSelected: false,
+      lineMode: false
     });
   });
 
diff --git a/visual_console_client/src/lib/types.ts b/visual_console_client/src/lib/types.ts
index 6f287a462e..a14472f258 100644
--- a/visual_console_client/src/lib/types.ts
+++ b/visual_console_client/src/lib/types.ts
@@ -59,4 +59,5 @@ export interface ItemMeta {
   isBeingMoved: boolean;
   isBeingResized: boolean;
   editMode: boolean;
+  lineMode: boolean;
 }