diff --git a/voltha/adapters/interface.py b/voltha/adapters/interface.py
index c7016d1..9aef84f 100644
--- a/voltha/adapters/interface.py
+++ b/voltha/adapters/interface.py
@@ -150,6 +150,13 @@
         :return:
         """
 
+    #def update_pm_collection(device, pm_collection_config):
+        """
+        Called every time a request is made to change pm collection behavior
+        :param device: A Voltha.Device object
+        :param pm_collection_config: A Pms
+        """
+
     def send_proxied_message(proxy_address, msg):
         """
         Forward a msg to a child device of device, addressed by the given
diff --git a/voltha/adapters/simulated_olt/simulated_olt.py b/voltha/adapters/simulated_olt/simulated_olt.py
index b5a6c3f..067ab2f 100644
--- a/voltha/adapters/simulated_olt/simulated_olt.py
+++ b/voltha/adapters/simulated_olt/simulated_olt.py
@@ -35,7 +35,8 @@
 from voltha.core.flow_decomposer import *
 from voltha.core.logical_device_agent import mac_str_to_tuple
 from voltha.protos.adapter_pb2 import Adapter, AdapterConfig
-from voltha.protos.device_pb2 import DeviceType, DeviceTypes, Device, Port
+from voltha.protos.device_pb2 import DeviceType, DeviceTypes, Device, Port, \
+PmConfigs, PmConfig, PmGroupConfig
 from voltha.protos.events_pb2 import KpiEvent, KpiEventType, MetricValuePairs
 from voltha.protos.health_pb2 import HealthStatus
 from voltha.protos.common_pb2 import LogLevel, OperStatus, ConnectStatus, \
@@ -46,6 +47,7 @@
     OFPC_GROUP_STATS, OFPC_TABLE_STATS, OFPC_FLOW_STATS
 from voltha.protos.events_pb2 import AlarmEvent, AlarmEventType, \
     AlarmEventSeverity, AlarmEventState, AlarmEventCategory
+import sys
 
 log = structlog.get_logger()
 
@@ -330,6 +332,50 @@
             oper_status=OperStatus.ACTIVE
         ))
 
+        # then shortly after, add the supported pms for the device
+        yield asleep(0.05)
+        try:
+            log.info("Setting p")
+            p = PmsConfig(
+                default_freq=150,
+                grouped=False,
+                freq_override=False)
+            p.metrics.extend([PmConfig(name='tx_64',type=PmConfig.COUNTER,
+                                       enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_65_127',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_128_255',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_256_511',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_512_1023',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_1024_1518',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='tx_1519_9k',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_64',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_65_127',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_128_255',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_256_511',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_512_1023',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_1024_1518',
+                                       type=PmConfig.COUNTER,enabled=True)])
+            p.metrics.extend([PmConfig(name='rx_1519_9k',
+                                       type=PmConfig.COUNTER,enabled=True)])
+
+
+            #TODO Call the adapter agend to update the pm config
+            #self.adapter_agent.update_pms_config(device.id,p)
+        except:
+            e = sys.exec_info()
+            log.error("error", error=e)
+
         # then shortly after we create the logical device with one port
         # that will correspond to the NNI port
         yield asleep(0.05)
@@ -414,6 +460,12 @@
         vlan_id = seq + 100
         return vlan_id
 
+    #def update_pm_collection(self, device, pm_collection_config):
+        # This is where the metrics to be collected are configured and where
+        # the sampling frequency is set.
+        #TODO: Here.
+    #    pass
+
     def update_flows_bulk(self, device, flows, groups):
         log.debug('bulk-flow-update', device_id=device.id,
                   flows=flows, groups=groups)
diff --git a/voltha/core/adapter_agent.py b/voltha/core/adapter_agent.py
index 4859d27..7ba382b 100644
--- a/voltha/core/adapter_agent.py
+++ b/voltha/core/adapter_agent.py
@@ -34,10 +34,13 @@
 from voltha.protos.device_pb2 import Device, Port
 from voltha.protos.events_pb2 import KpiEvent, AlarmEvent, AlarmEventType, \
     AlarmEventSeverity, AlarmEventState, AlarmEventCategory
+from voltha.protos.device_pb2 import Device, Port, PmConfigs
+from voltha.protos.events_pb2 import KpiEvent
 from voltha.protos.voltha_pb2 import DeviceGroup, LogicalDevice, \
     LogicalPort, AdminState, OperStatus
 from voltha.registry import registry
 from voltha.core.flow_decomposer import OUTPUT
+import sys
 
 
 @implementer(IAdapterAgent)
@@ -177,6 +180,10 @@
         return self.update_flows_incrementally(
             device, flow_changes, group_changes)
 
+    #def update_pm_collection(self, device, pm_collection_config):
+    #    return self.adapter.update_pm_collection(device, pm_collection_config)
+
+
     # ~~~~~~~~~~~~~~~~~~~ Adapter-Facing Service ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     def get_device(self, device_id):
diff --git a/voltha/core/global_handler.py b/voltha/core/global_handler.py
index 7d52d29..eff422e 100644
--- a/voltha/core/global_handler.py
+++ b/voltha/core/global_handler.py
@@ -369,6 +369,16 @@
             request,
             context)
 
+    #TODO: create the global PM config query function
+    @twisted_async
+    def ListDevicePmConfigs(self, request, context):
+        raise NotImplementedError('Method not implemented!')
+
+    #TODO: create the global PM config update function.
+    @twisted_async
+    def UpdateDevicePmConfigs(self, request, context):
+        raise NotImplementedError('Method not implemented!')
+
     @twisted_async
     def ListDeviceFlows(self, request, context):
         log.info('grpc-request', request=request)
diff --git a/voltha/core/local_handler.py b/voltha/core/local_handler.py
index e7a4912..a8800b9 100644
--- a/voltha/core/local_handler.py
+++ b/voltha/core/local_handler.py
@@ -420,6 +420,16 @@
             context.set_code(StatusCode.NOT_FOUND)
             return Ports()
 
+    #TODO: create the global PM config query function
+    @twisted_async
+    def ListDevicePmConfigs(self, request, context):
+        raise NotImplementedError('Method not implemented!')
+
+    #TODO: create the global PM config update function.
+    @twisted_async
+    def UpdateDevicePmConfigs(self, request, context):
+        raise NotImplementedError('Method not implemented!')
+
     @twisted_async
     def ListDeviceFlows(self, request, context):
         log.info('grpc-request', request=request)
diff --git a/voltha/protos/device.proto b/voltha/protos/device.proto
index b4d3c46..8cc22d4 100644
--- a/voltha/protos/device.proto
+++ b/voltha/protos/device.proto
@@ -29,6 +29,35 @@
     repeated DeviceType items = 1;
 }
 
+message PmConfig {
+    enum PmType {
+    	COUNTER = 0;
+	GUAGE = 1;
+	STATE = 2;
+    }
+    string name = 1;
+    PmType type = 2;
+    bool enabled = 3; // Whether or not this metric makes it to Kafka
+    uint32 sample_freq = 4; // Sample rate in 10ths of a second
+}
+
+message PmGroupConfig {
+    string group_name = 1;
+    uint32 group_freq = 2; // Frequency applicable to the grop
+    bool enabled = 3; // Enable/disable group level only
+    repeated PmConfig metrics = 4;
+}
+
+message PmConfigs {
+    uint32 default_freq = 1; // Default sample rate
+    // Forces group names and group semantics
+    bool grouped = 2 [(access) = READ_ONLY];
+    // Allows Pm to set an individual sample frequency
+    bool freq_override = 3 [(access) = READ_ONLY];
+    repeated PmGroupConfig groups = 4; // The groups if grouped is true
+    repeated PmConfig metrics = 5; // The metrics themselves if grouped is false.
+}
+
 message Port {
     option (voltha.yang_child_rule) = MOVE_TO_PARENT_LEVEL;
 
@@ -135,6 +164,7 @@
     repeated Port ports = 128  [(child_node) = {key: "port_no"}];
     openflow_13.Flows flows = 129 [(child_node) = {}];
     openflow_13.FlowGroups flow_groups = 130 [(child_node) = {}];
+    PmConfigs kpis = 131 [(child_node) = {}];
 
 }
 
diff --git a/voltha/protos/voltha.proto b/voltha/protos/voltha.proto
index db98c2a..911dfb8 100644
--- a/voltha/protos/voltha.proto
+++ b/voltha/protos/voltha.proto
@@ -240,6 +240,21 @@
         option (voltha.yang_xml_tag).xml_tag = 'ports';
     }
 
+    // List pm config of a device
+    rpc ListDevicePmConfigs(ID) returns(PmConfigs) {
+        option (google.api.http) = {
+            get: "/api/v1/devices/{id}/pm_configs"
+        };
+    }
+
+    // Update the pm config of a device
+    rpc UpdateDevicePmConfigs(ID) returns(PmConfigs) {
+        option (google.api.http) = {
+            post: "/api/v1/devices/{id}/pm_configs"
+            body: "*"
+        };
+    }
+
     // List all flows of a device
     rpc ListDeviceFlows(ID) returns(openflow_13.Flows) {
         option (google.api.http) = {
@@ -441,6 +456,21 @@
         option (voltha.yang_xml_tag).xml_tag = 'ports';
     }
 
+    // List pm config of a device
+    rpc ListDevicePmConfigs(ID) returns(PmConfigs) {
+        option (google.api.http) = {
+            get: "/api/v1/local/devices/{id}/pm_configs"
+        };
+    }
+
+    // Update the pm config of a device
+    rpc UpdateDevicePmConfigs(ID) returns(PmConfigs) {
+        option (google.api.http) = {
+            post: "/api/v1/local/devices/{id}/pm_configs"
+            body: "*"
+        };
+    }
+
     // List all flows of a device
     rpc ListDeviceFlows(ID) returns(openflow_13.Flows) {
         option (google.api.http) = {
