diff --git a/voltha/adapters/simulated_olt/simulated_olt.py b/voltha/adapters/simulated_olt/simulated_olt.py
index 0ab3962..28ece21 100644
--- a/voltha/adapters/simulated_olt/simulated_olt.py
+++ b/voltha/adapters/simulated_olt/simulated_olt.py
@@ -304,6 +304,7 @@
 
         # first we pretend that we were able to contact the device and obtain
         # additional information about it
+        #log.info("device-activation")
         device.root = True
         device.vendor = 'simulated'
         device.model = 'n/a'
@@ -312,6 +313,54 @@
         device.software_version = '1.0'
         device.serial_number = uuid4().hex
         device.connect_status = ConnectStatus.REACHABLE
+        #log.info("device-config",device=device)
+        device.pm_configs.default_freq=150
+        device.pm_configs.grouped = False
+        device.pm_configs.freq_override = False
+        #log.info("device-config",device=device)
+        device.pm_configs.metrics.extend([PmConfig(name='tx_64',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_65_127',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_128_255',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_256_511',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_512_1023',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_1024_1518',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='tx_1519_9k',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_64',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_65_127',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_128_255',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_256_511',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_512_1023',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_1024_1518',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        device.pm_configs.metrics.extend([PmConfig(name='rx_1519_9k',
+                                                   type=PmConfig.COUNTER,
+                                                   enabled=True)])
+        #log.info("device-config",device=device)
         self.adapter_agent.update_device(device)
 
         # then shortly after we create some ports for the device
@@ -332,49 +381,6 @@
             oper_status=OperStatus.ACTIVE
         ))
 
-        # then shortly after, add the supported pms for the device
-        yield asleep(0.05)
-        try:
-            log.info("Setting p")
-            p = PmConfigs(
-                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
diff --git a/voltha/core/global_handler.py b/voltha/core/global_handler.py
index eff422e..03a443a 100644
--- a/voltha/core/global_handler.py
+++ b/voltha/core/global_handler.py
@@ -372,7 +372,25 @@
     #TODO: create the global PM config query function
     @twisted_async
     def ListDevicePmConfigs(self, request, context):
-        raise NotImplementedError('Method not implemented!')
+        #raise NotImplementedError('Method not implemented!')
+        log.info('grpc-request', request=request)
+
+        try:
+            instance_id = self.dispatcher.instance_id_by_device_id(
+                request.id
+            )
+        except KeyError:
+            context.set_details(
+                'Device \'{}\' not found'.format(request.id))
+            context.set_code(StatusCode.NOT_FOUND)
+            return PmConfigs()
+
+        return self.dispatcher.dispatch(
+            instance_id,
+            VolthaLocalServiceStub,
+            'ListDevicePmConfigs',
+            request,
+            context)
 
     #TODO: create the global PM config update function.
     @twisted_async
diff --git a/voltha/core/local_handler.py b/voltha/core/local_handler.py
index a8800b9..e494bd6 100644
--- a/voltha/core/local_handler.py
+++ b/voltha/core/local_handler.py
@@ -29,6 +29,7 @@
     VolthaInstance, Adapters, LogicalDevices, LogicalDevice, Ports, \
     LogicalPorts, Devices, Device, DeviceType, \
     DeviceTypes, DeviceGroups, DeviceGroup, AdminState, OperStatus, ChangeEvent
+from voltha.protos.device_pb2 import PmConfigs
 from voltha.registry import registry
 
 log = structlog.get_logger()
@@ -420,12 +421,28 @@
             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!')
+        #raise NotImplementedError('Method not implemented!')
+        log.info('grpc-request', request=request)
 
-    #TODO: create the global PM config update function.
+        if '/' in request.id:
+            context.set_details(
+                'Malformed device id \'{}\''.format(request.id))
+            context.set_code(StatusCode.INVALID_ARGUMENT)
+            return PmConfigs()
+
+        try:
+            device = self.root.get('/devices/{}'.format(request.id))
+            log.info('device-for-pms',device=device)
+            return device.pm_configs
+        except KeyError:
+            context.set_details(
+                'Device \'{}\' not found'.format(request.id))
+            context.set_code(StatusCode.NOT_FOUND)
+            return PmConfigs()
+
+    #TODO: create the local PM config update function.
     @twisted_async
     def UpdateDevicePmConfigs(self, request, context):
         raise NotImplementedError('Method not implemented!')
diff --git a/voltha/protos/device.proto b/voltha/protos/device.proto
index 8cc22d4..d13b812 100644
--- a/voltha/protos/device.proto
+++ b/voltha/protos/device.proto
@@ -164,7 +164,9 @@
     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) = {}];
+    // PmConfigs will eventually converted to a child node of the
+    // device to falicitata callbacks and to simplify manipulation.
+    PmConfigs pm_configs = 131;
 
 }
 
