diff --git a/proto/monitoring.proto b/proto/monitoring.proto
index 293eb982a758e9869d8310134bd65bca6c8dfd32..2c7b98d2ca3392906e0f42896907bb887b45e80b 100644
--- a/proto/monitoring.proto
+++ b/proto/monitoring.proto
@@ -19,27 +19,73 @@ import "context.proto";
 import "kpi_sample_types.proto";
 
 service MonitoringService {
-  rpc CreateKpi       (KpiDescriptor    ) returns (KpiId        ) {}
-  rpc GetKpiDescriptor(KpiId            ) returns (KpiDescriptor) {}
-  rpc IncludeKpi      (Kpi              ) returns (context.Empty) {}
-  rpc MonitorKpi      (MonitorKpiRequest) returns (context.Empty) {}
-  rpc GetStreamKpi    (KpiId            ) returns (stream Kpi   ) {}
-  rpc GetInstantKpi   (KpiId            ) returns (Kpi          ) {}
+  rpc CreateKpi                (KpiDescriptor        )     returns (KpiId            ) {}
+  rpc EditKpiDescriptor        (EditedKpiDescriptor  )     returns (context.Empty    ) {}
+  rpc DeleteKpi                (KpiId                )     returns (context.Empty    ) {}
+  rpc GetKpiDescriptorList     (context.Empty        )     returns (KpiDescriptorList) {}
+  rpc CreateBundleKpi          (BundleKpiDescriptor  )     returns (KpiId            ) {}
+  rpc GetKpiDescriptor         (KpiId                )     returns (KpiDescriptor    ) {}
+  rpc IncludeKpi               (Kpi                  )     returns (context.Empty    ) {}
+  rpc MonitorKpi               (MonitorKpiRequest    )     returns (context.Empty    ) {}
+  rpc QueryKpiData             (KpiQuery             )     returns (KpiList          ) {}
+  rpc SubscribeKpi             (SubsDescriptor       )     returns (stream KpiList   ) {}
+  rpc GetSubsDescriptor        (SubscriptionID       )     returns (SubsDescriptor   ) {}
+  rpc GetSubscriptions         (context.Empty        )     returns (SubsIDList       ) {}
+  rpc EditKpiSubscription      (SubsDescriptor       )     returns (context.Empty    ) {}
+  rpc CreateKpiAlarm           (AlarmDescriptor      )     returns ( AlarmID ) {}
+  rpc EditKpiAlarm             (AlarmDescriptor      )     returns (context.Empty    ) {}
+  rpc GetAlarms                (context.Empty        )     returns (AlarmIDList      ) {}
+  rpc GetAlarmDescriptor       (AlarmID              )     returns (AlarmDescriptor  ) {}
+  rpc GetAlarmResponseStream   (AlarmID              )     returns (stream AlarmResponse ) {}
+  //  rpc GetStreamKpi            (KpiId                )     returns (stream Kpi       ) {}
+  //  rpc GetInstantKpi           (KpiId                )     returns (KpiList          ) {}
 }
 
 message KpiDescriptor {
-  string kpi_description = 1;
-  kpi_sample_types.KpiSampleType kpi_sample_type = 2;
-  context.DeviceId device_id = 3;
-  context.EndPointId endpoint_id = 4;
-  context.ServiceId  service_id  = 5;
-//  context.SliceId    slice_id    = 6;
+  string kpi_description                          = 1;
+  kpi_sample_types.KpiSampleType kpi_sample_type  = 2;
+  context.DeviceId device_id                      = 3;
+  context.EndPointId endpoint_id                  = 4;
+  context.ServiceId  service_id                   = 5;
+  context.SliceId    slice_id                     = 6;
 }
 
-message MonitorKpiRequest{
-  KpiId kpi_id = 1;
-  float sampling_duration_s = 2;
-  float sampling_interval_s = 3;
+message BundleKpiDescriptor {
+  string kpi_description                          = 1;
+  repeated KpiId kpi_id_list                      = 2;
+  kpi_sample_types.KpiSampleType kpi_sample_type  = 3;
+  context.DeviceId device_id                      = 4;
+  context.EndPointId endpoint_id                  = 5;
+  context.ServiceId  service_id                   = 6;
+  context.SliceId    slice_id                     = 7;
+}
+
+message EditedKpiDescriptor {
+  KpiId kpi_id                                    = 1;
+  string kpi_description                          = 2;
+  repeated KpiId kpi_id_list                      = 3;
+  kpi_sample_types.KpiSampleType kpi_sample_type  = 4;
+  context.DeviceId device_id                      = 5;
+  context.EndPointId endpoint_id                  = 6;
+  context.ServiceId  service_id                   = 7;
+  context.SliceId    slice_id                     = 8;
+}
+
+message MonitorKpiRequest {
+  KpiId kpi_id              = 1;
+  float monitoring_window_s = 2;
+  float sampling_rate_s     = 3;
+  // Pending add field to reflect Available Device Protocols
+}
+
+message KpiQuery {
+  repeated KpiId kpi_id     = 1;
+  float monitoring_window_s = 2;
+  float sampling_rate_s     = 3;
+  uint32 last_n_samples     = 4;  // used when you want something like "get the last N many samples
+  string start_date         = 5;  // used when you want something like "get the samples since X date/time"
+  string end_date           = 6;  // used when you want something like "get the samples until X date/time"
+  // Pending add field to reflect Available Device Protocols
 }
 
 message KpiId {
@@ -47,20 +93,73 @@ message KpiId {
 }
 
 message Kpi {
-  KpiId kpi_id = 1;
-  string timestamp = 2;
-  KpiValue kpi_value = 4;
+  KpiId kpi_id        = 1;
+  string timestamp    = 2;
+  KpiValue kpi_value  = 3;
+}
+
+message KpiValueRange {
+  KpiValue kpiMinValue = 1;
+  KpiValue kpiMaxValue = 2;
 }
 
 message KpiValue {
   oneof value {
-    uint32 intVal = 1;
-    float floatVal = 2;
-    string stringVal = 3;
-    bool boolVal = 4;
+    uint32 intVal     = 1;
+    float floatVal    = 2;
+    string stringVal  = 3;
+    bool boolVal      = 4;
   }
 }
 
 message KpiList {
-  repeated Kpi kpi_list = 1;
+    repeated Kpi kpi_list = 1;
+}
+
+message KpiDescriptorList {
+    repeated KpiDescriptor kpi_descriptor_list = 1;
+}
+
+message SubsDescriptor{
+  KpiId kpi_id              = 1;
+  float sampling_duration_s = 2;
+  float sampling_interval_s = 3;
+  string start_date         = 4;  // used when you want something like "get the samples since X date/time"
+  string end_date           = 5;  // used when you want something like "get the samples until X date/time"
+  // Pending add field to reflect Available Device Protocols
+}
+
+message SubscriptionID {
+  context.Uuid subs_id = 1;
+}
+
+message SubsResponse {
+  SubscriptionID subs_id    = 1;
+  repeated KpiList kpi_list = 2;
+}
+
+message SubsIDList {
+    repeated SubscriptionID subs_list = 1;
+}
+
+message AlarmDescriptor {
+  string alarm_description      = 1;
+  string name                   = 2;
+  KpiId kpi_id                  = 3;
+  KpiValueRange kpi_value_range = 4;
+  string timestamp              = 5;
+}
+
+message AlarmID{
+  context.Uuid alarm_id = 1;
+}
+
+message AlarmResponse {
+  AlarmID alarm_id    = 1;
+  string text         = 2;
+  KpiValue kpi_value  = 3;
+}
+
+message AlarmIDList {
+    repeated AlarmID alarm_list = 1;
 }