diff --git a/voltha/adapters/openolt/openolt_device.py b/voltha/adapters/openolt/openolt_device.py
index 43bbc75..4af9cc6 100644
--- a/voltha/adapters/openolt/openolt_device.py
+++ b/voltha/adapters/openolt/openolt_device.py
@@ -818,6 +818,29 @@
 
         return port_no, label
 
+    def delete_logical_port(self, child_device_id):
+        logical_ports = self.proxy.get('/logical_devices/{}/ports'.format(
+            self.logical_device_id))
+        for logical_port in logical_ports:
+            if logical_port.device_id == child_device_id:
+                self.log.debug('delete-logical-port',
+                               onu_device_id=child_device_id,
+                               logical_port=logical_port)
+                self.adapter_agent.delete_logical_port(
+                    self.logical_device_id, logical_port)
+                return
+    def delete_port(self, child_serial_number):
+        ports = self.proxy.get('/devices/{}/ports'.format(
+            self.device_id))
+        for port in ports:
+            if port.label == child_serial_number:
+                self.log.debug('delete-port',
+                               onu_serial_number=child_serial_number,
+                               port=port)
+                self.adapter_agent.delete_port(self.device_id, port)
+                return
+
+
     def new_onu_id(self, intf_id):
         onu_id = None
         onu_devices = self.adapter_agent.get_child_devices(self.device_id)
@@ -959,6 +982,19 @@
                        olt_device_id=self.device_id,
                        onu_device=child_device,
                        onu_serial_number=child_device.serial_number)
+        try:
+            self.adapter_agent.delete_child_device(self.device_id,
+                                               child_device.id, child_device)
+        except Exception as e:
+            self.log.error('adapter_agent error', error=e)
+        try:
+            self.delete_logical_port(child_device.id)
+        except Exception as e:
+            self.log.error('logical_port delete error', error=e)
+        try:
+            self.delete_port(child_device.serial_number)
+        except Exception as e:
+            self.log.error('port delete error', error=e)
         vendor_id = child_device.vendor_id.encode('hex')
         vendor_specific = child_device.serial_number.replace(
             child_device.vendor_id, '').encode('hex')
diff --git a/voltha/core/adapter_agent.py b/voltha/core/adapter_agent.py
index e3d05f6..ad38d5a 100644
--- a/voltha/core/adapter_agent.py
+++ b/voltha/core/adapter_agent.py
@@ -409,12 +409,17 @@
     def _del_peer_reference(self, device_id, port):
         me_as_peer = Port.PeerPort(device_id=device_id, port_no=port.port_no)
         for peer in port.peers:
-            peer_port_path = '/devices/{}/ports/{}'.format(
-                peer.device_id, peer.port_no)
-            peer_port = self.root_proxy.get(peer_port_path)
-            if me_as_peer in peer_port.peers:
-                peer_port.peers.remove(me_as_peer)
-            self.root_proxy.update(peer_port_path, peer_port)
+            try:
+                peer_port_path = '/devices/{}/ports/{}'.format(
+                    peer.device_id, peer.port_no)
+                peer_port = self.root_proxy.get(peer_port_path)
+                if me_as_peer in peer_port.peers:
+                    peer_port.peers.remove(me_as_peer)
+                self.root_proxy.update(peer_port_path, peer_port)
+            except Exception:
+                # if the device on the other side was already remove
+                # the key cannot be found under /devices/<device_id>
+                pass
 
     def add_port(self, device_id, port):
         assert isinstance(port, Port)
@@ -820,9 +825,12 @@
             self._make_up_to_date(
                 '/devices', device.id, device)
 
-    def delete_child_device(self, parent_device_id, child_device_id):
-        onu_device = self.root_proxy.get('/devices/{}'.format(child_device_id))
+    def delete_child_device(self, parent_device_id, child_device_id,
+                            onu_device=None):
+        if onu_device is None:
+            onu_device = self.root_proxy.get('/devices/{}'.format(child_device_id))
         if onu_device is not None:
+            assert isinstance(onu_device, Device)
             if onu_device.parent_id == parent_device_id:
                 self.log.debug('deleting-child-device',
                                parent_device_id=parent_device_id,
@@ -831,7 +839,10 @@
                     onu_device.proxy_address)
                 self.event_bus.unsubscribe(self._tx_event_subscriptions[topic])
                 del self._tx_event_subscriptions[topic]
-                self._remove_node('/devices', child_device_id)
+                try:
+                    self._remove_node('/devices', child_device_id)
+                except Exception:
+                    pass
 
     def _gen_rx_proxy_address_topic(self, proxy_address):
         """Generate unique topic name specific to this proxy address for rx"""
