diff --git a/voltha/adapters/simulated_olt/simulated_olt.py b/voltha/adapters/simulated_olt/simulated_olt.py
index 5a05fc9..1850afd 100644
--- a/voltha/adapters/simulated_olt/simulated_olt.py
+++ b/voltha/adapters/simulated_olt/simulated_olt.py
@@ -170,7 +170,8 @@
         raise NotImplementedError()
 
     def update_pm_config(self, device, pm_configs):
-        raise NotImplementedError()
+        #raise NotImplementedError()
+        log.info("adapter-update-pm-config", device=device, pm_configs=pm_configs)
 
     def _tmp_populate_stuff(self):
         """
@@ -315,53 +316,60 @@
         device.software_version = '1.0'
         device.serial_number = uuid4().hex
         device.connect_status = ConnectStatus.REACHABLE
-        device.pm_configs.default_freq=150
-        device.pm_configs.grouped = False
-        device.pm_configs.freq_override = False
-        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)])
+
         self.adapter_agent.update_device(device)
 
+        # Now set the initial PM configuration for this device
+        pm_configs = PmConfigs(
+            id=device.id,
+            default_freq=150,
+            grouped = False,
+            freq_override = False)
+
+        pm_configs.metrics.extend([PmConfig(name='tx_64',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_65_127',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_128_255',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_256_511',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_512_1023',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_1024_1518',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='tx_1519_9k',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_64',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_65_127',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_128_255',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_256_511',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_512_1023',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_1024_1518',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+        pm_configs.metrics.extend([PmConfig(name='rx_1519_9k',
+                                            type=PmConfig.COUNTER,
+                                            enabled=True)])
+
+        self.adapter_agent.update_device_pm_config(pm_configs,init=True)
         # then shortly after we create some ports for the device
         yield asleep(0.05)
         nni_port = Port(
diff --git a/voltha/core/adapter_agent.py b/voltha/core/adapter_agent.py
index 7ba382b..d6e32af 100644
--- a/voltha/core/adapter_agent.py
+++ b/voltha/core/adapter_agent.py
@@ -210,6 +210,17 @@
         device_agent = self.core.get_device_agent(device.id)
         device_agent.update_device(device)
 
+    def update_device_pm_config(self, device_pm_config, init=False):
+        assert isinstance(device_pm_config, PmConfigs)
+
+        # we run the update through the device_agent so that the change
+        # does not loop back to the adapter unnecessarily
+        device_agent = self.core.get_device_agent(device_pm_config.id)
+        device_agent.update_device_pm_config(device_pm_config,init)
+
+    def update_adapter_pm_config(self, device, device_pm_config):
+        self.adapter.update_pm_config(device, device_pm_config)
+
     def add_port(self, device_id, port):
         assert isinstance(port, Port)
 
diff --git a/voltha/core/device_agent.py b/voltha/core/device_agent.py
index 2cb56ec..ca402f6 100644
--- a/voltha/core/device_agent.py
+++ b/voltha/core/device_agent.py
@@ -37,6 +37,7 @@
         self.core = core
         self._tmp_initial_data = initial_data
         self.last_data = None
+        self.calback_data = None
 
         self.proxy = core.get_proxy('/devices/{}'.format(initial_data.id))
         self.flows_proxy = core.get_proxy(
@@ -44,6 +45,9 @@
         self.groups_proxy = core.get_proxy(
             '/devices/{}/flow_groups'.format(initial_data.id))
 
+        self.pm_config_proxy = core.get_proxy(
+            '/devices/{}/pm_configs'.format(initial_data.id))
+
         self.proxy.register_callback(
             CallbackType.PRE_UPDATE, self._validate_update)
         self.proxy.register_callback(
@@ -54,6 +58,9 @@
         self.groups_proxy.register_callback(
             CallbackType.POST_UPDATE, self._group_table_updated)
 
+        self.pm_config_proxy.register_callback(
+            CallbackType.POST_UPDATE, self._pm_config_updated)
+
         # to know device capabilities
         self.device_type = core.get_proxy(
             '/device_types/{}'.format(initial_data.type)).get()
@@ -161,6 +168,10 @@
         self.last_data = device  # so that we don't propagate back
         self.proxy.update('/', device)
 
+    def update_device_pm_config(self, device_pm_config, init=False):
+        self.callback_data = init# so that we don't push init data
+        self.pm_config_proxy.update('/', device_pm_config)
+
     def _propagate_change(self, device, dry_run=False):
         self.log.info('propagate-change', device=device, dry_run=dry_run)
         if device != self.last_data:
@@ -211,6 +222,16 @@
 
     }
 
+    ## <======================= PM CONFIG UPDATE HANDLING ====================
+
+    #@inlineCallbacks
+    def _pm_config_updated(self, pm_configs):
+        self.log.debug('pm-config-updated', pm_configs=pm_configs,
+                       callback_data=self.callback_data)
+        if not self.callback_data:
+            self.adapter_agent.update_adapter_pm_config(self.proxy.get('/'), pm_configs)
+        self.callback_data = None
+
     ## <======================= FLOW TABLE UPDATE HANDLING ====================
 
     @inlineCallbacks
diff --git a/voltha/core/local_handler.py b/voltha/core/local_handler.py
index 8466c4e..7360ca8 100644
--- a/voltha/core/local_handler.py
+++ b/voltha/core/local_handler.py
@@ -432,19 +432,36 @@
             return PmConfigs()
 
         try:
-            device = self.root.get('/devices/{}'.format(request.id))
-            log.info('device-for-pms',device=device)
-            return device.pm_configs
+            pm_configs = self.root.get('/devices/{}/pm_configs'.format(request.id))
+            pm_configs.id = request.id
+            log.info('device-for-pms',pm_configs=pm_configs)
+            return 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!')
+        log.info('grpc-request', request=request)
+
+        if '/' in request.id:
+            context.set_details(
+                'Malformed logical device id \'{}\''.format(request.id))
+            context.set_code(StatusCode.INVALID_ARGUMENT)
+            return Empty()
+
+        try:
+            device = self.root.get('/devices/{}'.format(request.id))
+            agent = self.core.get_device_agent(request.id)
+            agent.update_device_pm_config(request)
+            return Empty()
+        except KeyError:
+            context.set_details(
+                'Device \'{}\' not found'.format(request.id))
+            context.set_code(StatusCode.NOT_FOUND)
+            return Empty()
 
     @twisted_async
     def ListDeviceFlows(self, request, context):
diff --git a/voltha/protos/device.proto b/voltha/protos/device.proto
index d13b812..47deacd 100644
--- a/voltha/protos/device.proto
+++ b/voltha/protos/device.proto
@@ -49,13 +49,14 @@
 }
 
 message PmConfigs {
-    uint32 default_freq = 1; // Default sample rate
+    string id = 1; // To work around a chameleon POST bug
+    uint32 default_freq = 2; // Default sample rate
     // Forces group names and group semantics
-    bool grouped = 2 [(access) = READ_ONLY];
+    bool grouped = 3 [(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.
+    bool freq_override = 4 [(access) = READ_ONLY];
+    repeated PmGroupConfig groups = 5; // The groups if grouped is true
+    repeated PmConfig metrics = 6; // The metrics themselves if grouped is false.
 }
 
 message Port {
@@ -166,7 +167,7 @@
     openflow_13.FlowGroups flow_groups = 130 [(child_node) = {}];
     // PmConfigs will eventually converted to a child node of the
     // device to falicitata callbacks and to simplify manipulation.
-    PmConfigs pm_configs = 131;
+    PmConfigs pm_configs = 131 [(child_node) = {}];
 
 }
 
diff --git a/voltha/protos/voltha.proto b/voltha/protos/voltha.proto
index 89d379e..703f62b 100644
--- a/voltha/protos/voltha.proto
+++ b/voltha/protos/voltha.proto
@@ -248,7 +248,7 @@
     }
 
     // Update the pm config of a device
-    rpc UpdateDevicePmConfigs(ID) returns(PmConfigs) {
+    rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/pm_configs"
             body: "*"
@@ -464,7 +464,7 @@
     }
 
     // Update the pm config of a device
-    rpc UpdateDevicePmConfigs(ID) returns(PmConfigs) {
+    rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/api/v1/local/devices/{id}/pm_configs"
             body: "*"
