diff --git a/voltha/adapters/openolt/openolt.py b/voltha/adapters/openolt/openolt.py
index a5cb3bb..612ba60 100644
--- a/voltha/adapters/openolt/openolt.py
+++ b/voltha/adapters/openolt/openolt.py
@@ -101,7 +101,26 @@
 
     def reconcile_device(self, device):
         log.info('reconcile-device', device=device)
-        raise NotImplementedError()
+        kwargs = {
+            'adapter_agent': self.adapter_agent,
+            'device': device,
+            'device_num': self.num_devices + 1,
+            'reconciliation': True
+        }
+        try:
+            reconciled_device = OpenoltDevice(**kwargs)
+            log.debug('reconciled-device-recreated', device_id=reconciled_device.device_id)
+            self.devices[device.id] = reconciled_device
+        except Exception as e:
+            log.error('Failed to reconcile OpenOLT device', error=e, exception_type=type(e).__name__)
+            del self.devices[device.id]
+            raise
+        else:
+            self.num_devices += 1
+            # Invoke the children reconciliation which would setup the
+            # basic children data structures
+            self.adapter_agent.reconcile_child_devices(device.id)
+            return device
 
     def abandon_device(self, device):
         log.info('abandon-device', device=device)
diff --git a/voltha/adapters/openolt/openolt_device.py b/voltha/adapters/openolt/openolt_device.py
index efbe641..e92d5df 100644
--- a/voltha/adapters/openolt/openolt_device.py
+++ b/voltha/adapters/openolt/openolt_device.py
@@ -64,18 +64,22 @@
         self.adapter_agent = kwargs['adapter_agent']
         self.device_num = kwargs['device_num']
         device = kwargs['device']
+        is_reconciliation = kwargs.get('reconciliation', False)
         self.device_id = device.id
         self.host_and_port = device.host_and_port
         self.log = structlog.get_logger(id=self.device_id, ip=self.host_and_port)
         self.nni_oper_state = dict() #intf_id -> oper_state
         self.proxy = registry('core').get_proxy('/')
 
-        # Update device
-        device.root = True
-        device.serial_number = self.host_and_port # FIXME
-        device.connect_status = ConnectStatus.REACHABLE
-        device.oper_status = OperStatus.ACTIVATING
-        self.adapter_agent.update_device(device)
+        # Device already set in the event of reconciliation
+        if not is_reconciliation:
+            # It is a new device
+            # Update device
+            device.root = True
+            device.serial_number = self.host_and_port # FIXME
+            device.connect_status = ConnectStatus.REACHABLE
+            device.oper_status = OperStatus.ACTIVATING
+            self.adapter_agent.update_device(device)
 
         # Initialize the OLT state machine
         self.machine = Machine(model=self, states=OpenoltDevice.states,
@@ -103,6 +107,9 @@
         self.heartbeat_signature = None
         self.heartbeat_thread.start()
 
+        self.log.debug('openolt-device-created', device_id=self.device_id)
+
+
     def process_indications(self):
 
         self.log.debug('starting-indications-thread')
diff --git a/voltha/core/core.py b/voltha/core/core.py
index c7dccea..8978034 100644
--- a/voltha/core/core.py
+++ b/voltha/core/core.py
@@ -133,13 +133,13 @@
             # handling the ONU should be present before the ONU reconciliation
             # occurs
             for device in devices:
-                if device.type.endswith("_onu"):
+                if device.type.endswith("onu"):
                     yield self._handle_reconcile_existing_device(
                         device=device, reconcile=False)
 
             # Then reconcile the OLT devices
             for device in devices:
-                if device.type.endswith("_olt"):
+                if device.type.endswith("olt"):
                     yield self._handle_reconcile_existing_device(
                         device=device, reconcile=True)
 
diff --git a/voltha/core/device_agent.py b/voltha/core/device_agent.py
index 7ad358f..a5f11bb 100644
--- a/voltha/core/device_agent.py
+++ b/voltha/core/device_agent.py
@@ -305,6 +305,7 @@
 
     @inlineCallbacks
     def update_device(self, device):
+        self.log.debug('updating-device', device=device.id)
         self.last_data = device  # so that we don't propagate back
         self.proxy.update('/', device)
         if device.admin_state == AdminState.ENABLED and \
