diff --git a/deploy/crdb.sh b/deploy/crdb.sh
index 216339117d2156d0ae1beddb5a1d6a7ccbe33219..414de523d10f7d1edb99799e1f5889b340d8ad04 100755
--- a/deploy/crdb.sh
+++ b/deploy/crdb.sh
@@ -167,6 +167,11 @@ function crdb_drop_database_single() {
 }
 
 function crdb_deploy_cluster() {
+    echo "CockroachDB Operator Namespace"
+    echo ">>> Create CockroachDB Operator Namespace (if missing)"
+    kubectl apply -f "${CRDB_MANIFESTS_PATH}/pre_operator.yaml"
+    echo
+
     echo "Cockroach Operator CRDs"
     echo ">>> Apply Cockroach Operator CRDs (if they are missing)"
     cp "${CRDB_MANIFESTS_PATH}/crds.yaml" "${TMP_MANIFESTS_FOLDER}/crdb_crds.yaml"
diff --git a/manifests/cockroachdb/pre_operator.yaml b/manifests/cockroachdb/pre_operator.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..16718a77918491170502a5cbb864a6fda39c734a
--- /dev/null
+++ b/manifests/cockroachdb/pre_operator.yaml
@@ -0,0 +1,19 @@
+# Copyright 2022 The Cockroach Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+apiVersion: v1
+kind: Namespace
+metadata:
+  labels:
+    control-plane: cockroach-operator
+  name: cockroach-operator-system
diff --git a/manifests/contextservice.yaml b/manifests/contextservice.yaml
index 8655b275b43c05f6eace544416c88123bb4725f1..96735bf5f89f682f31131c123ee9884a1becbfdb 100644
--- a/manifests/contextservice.yaml
+++ b/manifests/contextservice.yaml
@@ -23,6 +23,8 @@ spec:
   #replicas: 1
   template:
     metadata:
+      annotations:
+        config.linkerd.io/skip-outbound-ports: "4222"
       labels:
         app: contextservice
     spec:
@@ -52,11 +54,11 @@ spec:
             command: ["/bin/grpc_health_probe", "-addr=:1010"]
         resources:
           requests:
-            cpu: 75m
-            memory: 64Mi
-          limits:
-            cpu: 100m
+            cpu: 250m
             memory: 128Mi
+          limits:
+            cpu: 1000m
+            memory: 1024Mi
 ---
 apiVersion: v1
 kind: Service
diff --git a/src/common/message_broker/backend/nats/NatsBackendThread.py b/src/common/message_broker/backend/nats/NatsBackendThread.py
index e59e4d6835ef662e4b0ed9f92d79a45c22954a6f..0bedd2b242f7eeaa1585d0eb41c5a0bd9efe07e5 100644
--- a/src/common/message_broker/backend/nats/NatsBackendThread.py
+++ b/src/common/message_broker/backend/nats/NatsBackendThread.py
@@ -12,10 +12,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import asyncio, nats, nats.errors, queue, threading
+import asyncio, logging, nats, nats.errors, queue, threading
 from typing import List
 from common.message_broker.Message import Message
 
+LOGGER = logging.getLogger(__name__)
+
 class NatsBackendThread(threading.Thread):
     def __init__(self, nats_uri : str) -> None:
         self._nats_uri = nats_uri
@@ -32,7 +34,9 @@ class NatsBackendThread(threading.Thread):
         self._tasks_terminated.set()
 
     async def _run_publisher(self) -> None:
+        LOGGER.info('[_run_publisher] NATS URI: {:s}'.format(str(self._nats_uri)))
         client = await nats.connect(servers=[self._nats_uri])
+        LOGGER.info('[_run_publisher] Connected!')
         while not self._terminate.is_set():
             try:
                 message : Message = await self._publish_queue.get()
@@ -47,8 +51,11 @@ class NatsBackendThread(threading.Thread):
     async def _run_subscriber(
         self, topic_name : str, timeout : float, out_queue : queue.Queue[Message], unsubscribe : threading.Event
     ) -> None:
+        LOGGER.info('[_run_subscriber] NATS URI: {:s}'.format(str(self._nats_uri)))
         client = await nats.connect(servers=[self._nats_uri])
+        LOGGER.info('[_run_subscriber] Connected!')
         subscription = await client.subscribe(topic_name)
+        LOGGER.info('[_run_subscriber] Subscribed!')
         while not self._terminate.is_set() and not unsubscribe.is_set():
             try:
                 message = await subscription.next_msg(timeout)
diff --git a/src/monitoring/service/MetricsDBTools.py b/src/monitoring/service/MetricsDBTools.py
index 6b98255411aa88ac18bd01474830b3bf268d3483..f928f07b94c71fb6f378161862e96d41af8bde7f 100644
--- a/src/monitoring/service/MetricsDBTools.py
+++ b/src/monitoring/service/MetricsDBTools.py
@@ -264,68 +264,65 @@ class MetricsDB():
                 for kpi in kpi_list:
                     alarm = False
                     kpi_value = kpi[2]
+                    kpiMinIsNone = ((kpiMinValue is None) or math.isnan(kpiMinValue))
+                    kpiMaxIsNone = ((kpiMaxValue is None) or math.isnan(kpiMaxValue))
                     if (kpiMinValue == kpi_value and kpiMaxValue == kpi_value and inRange):
                         alarm = True
-                    elif (
-                            inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and includeMaxValue):
+                    elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and includeMaxValue):
                         if (kpi_value >= kpiMinValue and kpi_value <= kpiMaxValue):
                             alarm = True
-                    elif (
-                            inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and not includeMaxValue):
+                    elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and not includeMaxValue):
                         if (kpi_value >= kpiMinValue and kpi_value < kpiMaxValue):
                             alarm = True
-                    elif (
-                            inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and includeMaxValue):
+                    elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and includeMaxValue):
                         if (kpi_value > kpiMinValue and kpi_value <= kpiMaxValue):
                             alarm = True
-                    elif (
-                            inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and not includeMaxValue):
+                    elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and not includeMaxValue):
                         if (kpi_value > kpiMinValue and kpi_value < kpiMaxValue):
                             alarm = True
-                    elif (
-                            not inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and includeMaxValue):
+                    elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and includeMaxValue):
                         if (kpi_value <= kpiMinValue or kpi_value >= kpiMaxValue):
                             alarm = True
-                    elif (
-                            not inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and not includeMaxValue):
+                    elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and not includeMaxValue):
                         if (kpi_value <= kpiMinValue or kpi_value > kpiMaxValue):
                             alarm = True
-                    elif (
-                            not inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and includeMaxValue):
+                    elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and includeMaxValue):
                         if (kpi_value < kpiMinValue or kpi_value >= kpiMaxValue):
                             alarm = True
-                    elif (
-                            not inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and not includeMaxValue):
+                    elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and not includeMaxValue):
                         if (kpi_value < kpiMinValue or kpi_value > kpiMaxValue):
                             alarm = True
-                    elif (inRange and kpiMinValue is not None and kpiMaxValue is None and includeMinValue):
+                    elif (inRange and not kpiMinIsNone and kpiMaxIsNone and includeMinValue):
                         if (kpi_value >= kpiMinValue):
                             alarm = True
-                    elif (inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue):
+                    elif (inRange and not kpiMinIsNone and kpiMaxIsNone and not includeMinValue):
                         if (kpi_value > kpiMinValue):
                             alarm = True
-                    elif (not inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue):
+                    elif (not inRange and not kpiMinIsNone and kpiMaxIsNone and includeMinValue):
                         if (kpi_value <= kpiMinValue):
                             alarm = True
-                    elif (not inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue):
-                        if (kpi_value <= kpiMinValue):
+                    elif (not inRange and not kpiMinIsNone and kpiMaxIsNone and not includeMinValue):
+                        if (kpi_value < kpiMinValue):
                             alarm = True
-                    elif (inRange and kpiMinValue is None and kpiMaxValue is not None and includeMaxValue):
+                    elif (inRange and kpiMinIsNone and not kpiMaxIsNone and includeMaxValue):
                         if (kpi_value <= kpiMaxValue):
                             alarm = True
-                    elif (inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue):
+                    elif (inRange and kpiMinIsNone and not kpiMaxIsNone and not includeMaxValue):
                         if (kpi_value < kpiMaxValue):
                             alarm = True
-                    elif (not inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue):
+                    elif (not inRange and kpiMinIsNone and not kpiMaxIsNone and includeMaxValue):
                         if (kpi_value >= kpiMaxValue):
                             alarm = True
-                    elif (not inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue):
-                        if (kpi_value >= kpiMaxValue):
+                    elif (not inRange and kpiMinIsNone and not kpiMaxIsNone and not includeMaxValue):
+                        if (kpi_value > kpiMaxValue):
                             alarm = True
                     if alarm:
                         valid_kpi_list.append(kpi)
-                alarm_queue.put_nowait(valid_kpi_list)
-                LOGGER.debug(f"Alarm of KPI {kpi_id} triggered -> kpi_value:{kpi[2]}, timestamp:{kpi[1]}")
+                if valid_kpi_list:
+                    alarm_queue.put_nowait(valid_kpi_list)
+                    LOGGER.debug(f"Alarm of KPI {kpi_id} triggered -> kpi_value:{kpi[2]}, timestamp:{kpi[1]}")
+                else:
+                    LOGGER.debug(f"No new alarms triggered for the alarm of KPI {kpi_id}")
             else:
                 LOGGER.debug(f"No new data for the alarm of KPI {kpi_id}")
         except (Exception) as e:
diff --git a/src/monitoring/service/MonitoringServiceServicerImpl.py b/src/monitoring/service/MonitoringServiceServicerImpl.py
index f408734df40c1bc5c16b7e108e3ce5a211165f71..62adcf465d49de782e17ee587d6ce67724d44b38 100644
--- a/src/monitoring/service/MonitoringServiceServicerImpl.py
+++ b/src/monitoring/service/MonitoringServiceServicerImpl.py
@@ -407,8 +407,8 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
             alarm_description = request.alarm_description
             alarm_name = request.name
             kpi_id = request.kpi_id.kpi_id.uuid
-            kpi_min_value = request.kpi_value_range.kpiMinValue.floatVal
-            kpi_max_value = request.kpi_value_range.kpiMaxValue.floatVal
+            kpi_min_value = float(request.kpi_value_range.kpiMinValue.floatVal)
+            kpi_max_value = float(request.kpi_value_range.kpiMaxValue.floatVal)
             in_range = request.kpi_value_range.inRange
             include_min_value = request.kpi_value_range.includeMinValue
             include_max_value = request.kpi_value_range.includeMaxValue
diff --git a/src/tests/ofc22/descriptors_emulated.json b/src/tests/ofc22/descriptors_emulated.json
index aa76edecd116ee7336fc1a2621d2bc3ae95080ce..b68b9636d58d9c80c4774e4ade557f83796ac5b5 100644
--- a/src/tests/ofc22/descriptors_emulated.json
+++ b/src/tests/ofc22/descriptors_emulated.json
@@ -97,6 +97,35 @@
                 {"device_id": {"device_uuid": {"uuid": "R4-EMU"}}, "endpoint_uuid": {"uuid": "13/0/0"}},
                 {"device_id": {"device_uuid": {"uuid": "O1-OLS"}}, "endpoint_uuid": {"uuid": "50296d99-58cc-5ce7-82f5-fc8ee4eec2ec"}}
             ]
+        },
+
+        {
+            "link_id": {"link_uuid": {"uuid": "O1-OLS==R1-EMU/13/0/0/aade6001-f00b-5e2f-a357-6a0a9d3de870"}},
+            "link_endpoint_ids": [
+                {"device_id": {"device_uuid": {"uuid": "O1-OLS"}}, "endpoint_uuid": {"uuid": "aade6001-f00b-5e2f-a357-6a0a9d3de870"}},
+                {"device_id": {"device_uuid": {"uuid": "R1-EMU"}}, "endpoint_uuid": {"uuid": "13/0/0"}}
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "O1-OLS==R2-EMU/13/0/0/eb287d83-f05e-53ec-ab5a-adf6bd2b5418"}},
+            "link_endpoint_ids": [
+                {"device_id": {"device_uuid": {"uuid": "O1-OLS"}}, "endpoint_uuid": {"uuid": "eb287d83-f05e-53ec-ab5a-adf6bd2b5418"}},
+                {"device_id": {"device_uuid": {"uuid": "R2-EMU"}}, "endpoint_uuid": {"uuid": "13/0/0"}}
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "O1-OLS==R3-EMU/13/0/0/0ef74f99-1acc-57bd-ab9d-4b958b06c513"}},
+            "link_endpoint_ids": [
+                {"device_id": {"device_uuid": {"uuid": "O1-OLS"}}, "endpoint_uuid": {"uuid": "0ef74f99-1acc-57bd-ab9d-4b958b06c513"}},
+                {"device_id": {"device_uuid": {"uuid": "R3-EMU"}}, "endpoint_uuid": {"uuid": "13/0/0"}}
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "O1-OLS==R4-EMU/13/0/0/50296d99-58cc-5ce7-82f5-fc8ee4eec2ec"}},
+            "link_endpoint_ids": [
+                {"device_id": {"device_uuid": {"uuid": "O1-OLS"}}, "endpoint_uuid": {"uuid": "50296d99-58cc-5ce7-82f5-fc8ee4eec2ec"}},
+                {"device_id": {"device_uuid": {"uuid": "R4-EMU"}}, "endpoint_uuid": {"uuid": "13/0/0"}}
+            ]
         }
     ]
 }
\ No newline at end of file