diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac216ee7cec55efbd7f169679b4e0eebad0f3950
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
@@ -0,0 +1,65 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* 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
+*
+*      http://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.
+*/
+
+package eu.teraflow.policy.monitoring.model;
+
+public class AlarmDescriptor {
+    private final String alarmDescription;
+    private final String name;
+    private final String kpiId;
+    private final KpiValueRange kpiValueRange;
+    private final String timestamp;
+
+    public AlarmDescriptor(
+            String alarmDescription,
+            String name,
+            String kpiId,
+            KpiValueRange kpiValueRange,
+            String timestamp) {
+        this.alarmDescription = alarmDescription;
+        this.name = name;
+        this.kpiId = kpiId;
+        this.kpiValueRange = kpiValueRange;
+        this.timestamp = timestamp;
+    }
+
+    public String getAlarmDescription() {
+        return alarmDescription;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getKpiId() {
+        return kpiId;
+    }
+
+    public KpiValueRange getKpiValueRange() {
+        return kpiValueRange;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "%s:{alarmDescription:\"%s\", name:\"%s\", kpiId:\"%s\", %s, timestamp:\"%s\"}",
+                getClass().getSimpleName(), alarmDescription, name, kpiId, kpiValueRange, timestamp);
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..4730c18d068e2372dffee9507d0d74f9208abae9
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
@@ -0,0 +1,49 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* 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
+*
+*      http://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.
+*/
+
+package eu.teraflow.policy.monitoring.model;
+
+public class AlarmResponse {
+
+    private final String alarmId;
+    private final String text;
+    private final KpiValue<?> kpiValue;
+
+    public AlarmResponse(String alarmId, String text, KpiValue<?> kpiValue) {
+        this.alarmId = alarmId;
+        this.text = text;
+        this.kpiValue = kpiValue;
+    }
+
+    public String getAlarmId() {
+        return alarmId;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public KpiValue getKpiValue() {
+        return kpiValue;
+    }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "%s:{alarmId:\"%s\", text:\"%s\", %s}",
+                getClass().getSimpleName(), alarmId, text, kpiValue);
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
index 4d84c29d4f32cd2605cf2d20a67b0fa41f801ab1..c042240298fdea49ca1509ac2563e849b16575c5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
@@ -20,9 +20,9 @@ public class Kpi {
 
     private final String kpiId;
     private final String timestamp;
-    private final String kpiValue;
+    private final KpiValue<?> kpiValue;
 
-    public Kpi(String kpiId, String timestamp, String kpiValue) {
+    public Kpi(String kpiId, String timestamp, KpiValue<?> kpiValue) {
         this.kpiId = kpiId;
         this.timestamp = timestamp;
         this.kpiValue = kpiValue;
@@ -36,14 +36,14 @@ public class Kpi {
         return timestamp;
     }
 
-    public String getKpiValue() {
+    public KpiValue getKpiValue() {
         return kpiValue;
     }
 
     @Override
     public String toString() {
         return String.format(
-                "%s:{kpiId:\"%s\", timeStamp:\"%s\", kpiValue:\"%s\"}",
+                "%s:{kpiId:\"%s\", timeStamp:\"%s\", %s}",
                 getClass().getSimpleName(), kpiId, timestamp, kpiValue);
     }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
index 85e09ce2e6f7ac297657e59c7868fbbd750675b8..107c1033549facafc843e182090c0d8cd95e51e5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
@@ -18,6 +18,7 @@ package eu.teraflow.policy.monitoring.model;
 
 import eu.teraflow.policy.context.model.EndPointId;
 import eu.teraflow.policy.context.model.ServiceId;
+import eu.teraflow.policy.context.model.SliceId;
 import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
 
 public class KpiDescriptor {
@@ -27,18 +28,21 @@ public class KpiDescriptor {
     private final String deviceId;
     private final EndPointId endPointId;
     private final ServiceId serviceId;
+    private final SliceId sliceId;
 
     public KpiDescriptor(
             String kpiDescription,
             KpiSampleType kpiSampleType,
             String deviceId,
             EndPointId endPointId,
-            ServiceId serviceId) {
+            ServiceId serviceId,
+            SliceId sliceId) {
         this.kpiDescription = kpiDescription;
         this.kpiSampleType = kpiSampleType;
         this.deviceId = deviceId;
         this.endPointId = endPointId;
         this.serviceId = serviceId;
+        this.sliceId = sliceId;
     }
 
     public String getKpiDescription() {
@@ -61,15 +65,20 @@ public class KpiDescriptor {
         return serviceId;
     }
 
+    public SliceId getSliceId() {
+        return sliceId;
+    }
+
     @Override
     public String toString() {
         return String.format(
-                "%s:{kpiDescription:\"%s\", kpiSampleType:\"%s\", deviceId:\"%s\", %s, %s}",
+                "%s:{kpiDescription:\"%s\", kpiSampleType:\"%s\", deviceId:\"%s\", %s, %s, %s}",
                 getClass().getSimpleName(),
                 kpiDescription,
                 kpiSampleType.toString(),
                 deviceId,
                 endPointId,
-                serviceId);
+                serviceId,
+                sliceId);
     }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
new file mode 100644
index 0000000000000000000000000000000000000000..baa7c32c4e59afc47f3c91c8c65691457b4c6df4
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
@@ -0,0 +1,41 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* 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
+*
+*      http://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.
+*/
+
+package eu.teraflow.policy.monitoring.model;
+
+public class KpiValueRange {
+
+    private final KpiValue<?> kpiMinValue;
+    private final KpiValue<?> kpiMaxValue;
+
+    public KpiValueRange(KpiValue<?> kpiMinValue, KpiValue<?> kpiMaxValue) {
+        this.kpiMinValue = kpiMinValue;
+        this.kpiMaxValue = kpiMaxValue;
+    }
+
+    public KpiValue getKpiMinValue() {
+        return kpiMinValue;
+    }
+
+    public KpiValue getKpiMaxValue() {
+        return kpiMaxValue;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("%s:{%s, %s}", getClass().getSimpleName(), kpiMinValue, kpiMaxValue);
+    }
+}
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..ced38b3f9f76239ee83687f14587da168dc7c320
--- /dev/null
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
@@ -0,0 +1,70 @@
+/*
+* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+*
+* 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
+*
+*      http://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.
+*/
+
+package eu.teraflow.policy.monitoring.model;
+
+public class SubsDescriptor {
+    private final String kpiId;
+    private final float samplingDurationS;
+    private final float samplingIntervalS;
+    private final String startDate;
+    private final String endDate;
+
+    public SubsDescriptor(
+            String kpiId,
+            float samplingDurationS,
+            float samplingIntervalS,
+            String startDate,
+            String endDate) {
+        this.kpiId = kpiId;
+        this.samplingDurationS = samplingDurationS;
+        this.samplingIntervalS = samplingIntervalS;
+        this.startDate = startDate;
+        this.endDate = endDate;
+    }
+
+    public String getKpiId() {
+        return kpiId;
+    }
+
+    public float getSamplingDurationS() {
+        return samplingDurationS;
+    }
+
+    public float getSamplingIntervalS() {
+        return samplingIntervalS;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "%s:{kpiId:\"%s\", samplingDurationS:\"%f\", samplingIntervalS:\"%f\", startDate:\"%s\", endDate:\"%s\"}",
+                getClass().getSimpleName(),
+                kpiId,
+                samplingDurationS,
+                samplingIntervalS,
+                startDate,
+                endDate);
+    }
+}
diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml
index 97929a86330aa71f708199fa3333764e0fd31e38..248fb6143f0203cf436f2cc666da9038f97d8d54 100644
--- a/src/policy/target/kubernetes/kubernetes.yml
+++ b/src/policy/target/kubernetes/kubernetes.yml
@@ -3,8 +3,8 @@ apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3
-    app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000
+    app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78
+    app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000
   labels:
     app.kubernetes.io/name: policyservice
     app: policyservice
@@ -25,8 +25,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3
-    app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000
+    app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78
+    app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000
   labels:
     app: policyservice
     app.kubernetes.io/name: policyservice
@@ -39,8 +39,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: cfe69c57feb1d488c2dda620021e3c62d67fc3d3
-        app.quarkus.io/build-timestamp: 2022-07-14 - 07:52:22 +0000
+        app.quarkus.io/commit-id: 4244298f2625d05dce3c62d8431b03f799506e78
+        app.quarkus.io/build-timestamp: 2022-07-21 - 11:54:42 +0000
       labels:
         app: policyservice
         app.kubernetes.io/name: policyservice
@@ -53,10 +53,10 @@ spec:
                   fieldPath: metadata.namespace
             - name: MONITORING_SERVICE_HOST
               value: monitoringservice
-            - name: SERVICE_SERVICE_HOST
-              value: serviceservice
             - name: CONTEXT_SERVICE_HOST
               value: contextservice
+            - name: SERVICE_SERVICE_HOST
+              value: serviceservice
           image: registry.gitlab.com/teraflow-h2020/controller/policy:0.1.0
           imagePullPolicy: Always
           livenessProbe: