diff --git a/proto/kpi_manager.proto b/proto/kpi_manager.proto
index f5769ed375ea37b5df70f94966467dda34776adf..ad48eb84ff7433d48ebcd5ebd902f0bea7d28504 100644
--- a/proto/kpi_manager.proto
+++ b/proto/kpi_manager.proto
@@ -19,27 +19,41 @@ import "context.proto";
 import "kpi_sample_types.proto";
 
 service KpiManagerService{
-  rpc SetKpi                (KpiDescriptor      ) returns (KpiId               ) {} // Stable not final
-  rpc DeleteKpi             (KpiId              ) returns (context.Empty       ) {} // Stable and final
-  rpc GetKpiDescriptor      (KpiId              ) returns (KpiDescriptor       ) {} // Stable and final
-  rpc GetKpiDescriptorList  (context.Empty      ) returns (KpiDescriptorList   ) {} // Stable and final
+  rpc SetKpiDescriptor    (KpiDescriptor      ) returns (KpiId               ) {} // Stable not final
+  rpc DeleteKpiDescriptor (KpiId              ) returns (context.Empty       ) {} // Stable and final
+  rpc GetKpiDescriptor    (KpiId              ) returns (KpiDescriptor       ) {} // Stable and final
+  rpc SelectKpiDescriptor (KpiDescriptorFilter) returns (KpiDescriptorList   ) {} // Stable and final
+}
+
+
+message KpiId {
+  context.Uuid kpi_id = 1;
 }
 
 message KpiDescriptor {
   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;
-  context.ConnectionId           connection_id   = 9;
-  context.LinkId                 link_id         = 10;
+  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;
+  context.ConnectionId           connection_id   = 8;
+  context.LinkId                 link_id         = 9;
 }
 
-message KpiId {
-  context.Uuid kpi_id = 1;
+message KpiDescriptorFilter {
+  // KPI Descriptors that fulfill the filter are those that match ALL the following fields.
+  // An empty list means: any value is accepted.
+  // All fields empty means: list all KPI Descriptors
+  repeated KpiId                          kpi_id          = 1;
+  repeated kpi_sample_types.KpiSampleType kpi_sample_type = 2;
+  repeated context.DeviceId               device_id       = 3;
+  repeated context.EndPointId             endpoint_id     = 4;
+  repeated context.ServiceId              service_id      = 5;
+  repeated context.SliceId                slice_id        = 6;
+  repeated context.ConnectionId           connection_id   = 7;
+  repeated context.LinkId                 link_id         = 8;
 }
 
 message KpiDescriptorList {