diff --git a/python/adapters/openolt/openolt_alarms.py b/python/adapters/openolt/openolt_alarms.py
index 932855c..84bd7b8 100644
--- a/python/adapters/openolt/openolt_alarms.py
+++ b/python/adapters/openolt/openolt_alarms.py
@@ -36,7 +36,7 @@
 
 class OpenOltAlarmMgr(object):
     def __init__(self, log, adapter_agent, device_id, logical_device_id,
-                 platform):
+                 platform, serial_number):
         """
         20180711 -  Addition of adapter_agent and device_id
             to facilitate alarm processing and kafka posting
@@ -49,6 +49,7 @@
         self.device_id = device_id
         self.logical_device_id = logical_device_id
         self.platform = platform
+        self.serial_number = serial_number
         """
         The following is added to reduce the continual posting of OLT LOS alarming
         to Kafka.   Set enable_alarm_suppress = true to enable  otherwise the
@@ -58,7 +59,7 @@
         self.enable_alarm_suppress = True
         self.alarm_suppress = {"olt_los_clear": 0, "onu_disc_raised": []}  # Keep count of alarms to limit.
         try:
-            self.alarms = AdapterAlarms(self.adapter_agent, self.device_id, self.logical_device_id)
+            self.alarms = AdapterAlarms(self.adapter_agent, self.device_id, self.logical_device_id, self.serial_number)
             self.simulator = AdapterAlarmSimulator(self.alarms)
         except Exception as initerr:
             self.log.exception("alarmhandler-init-error", errmsg=initerr.message)
@@ -139,7 +140,7 @@
             try:
                 """
                 Get the specific onu device information for the onu generating the alarm.
-                Extract the id.   In the future extract the serial number as well
+                Extract the id.
                 """
                 onu_device_id = "unresolved"
                 onu_serial_number = "unresolved"
@@ -150,10 +151,10 @@
 
                 if dying_gasp_ind.status == 1 or dying_gasp_ind.status == "on":
                     OnuDyingGaspAlarm(self.alarms, dying_gasp_ind.intf_id,
-                                      onu_device_id).raise_alarm()
+                                      onu_device_id, serial_number=onu_serial_number).raise_alarm()
                 else:
                     OnuDyingGaspAlarm(self.alarms, dying_gasp_ind.intf_id,
-                                      onu_device_id).clear_alarm()
+                                      onu_device_id, serial_number=onu_serial_number).clear_alarm()
             except Exception as alarm_err:
                 self.log.exception('dying-gasp-indication', errmsg=alarm_err.message)
 
@@ -187,7 +188,7 @@
             try:
                 """
                     Get the specific onu device information for the onu generating the alarm.
-                    Extract the id.   In the future extract the serial number as well
+                    Extract the id.
                 """
                 onu_device_id = "unresolved"
                 serial_number = "unresolved"
@@ -197,30 +198,30 @@
                     serial_number = onu_device.serial_number
 
                 if onu_alarm_ind.los_status == 1 or onu_alarm_ind.los_status == "on":
-                    OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm()
+                    OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).raise_alarm()
                 elif onu_alarm_ind.los_status == 0 or onu_alarm_ind.los_status == "off":
-                    OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm()
+                    OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).clear_alarm()
                 else:     # No Change
                     pass
 
                 if onu_alarm_ind.lopc_miss_status == 1 or onu_alarm_ind.lopc_miss_status == "on":
-                    OnuLopcMissAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm()
+                    OnuLopcMissAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).raise_alarm()
                 elif (onu_alarm_ind.lopc_miss_status == 0 or onu_alarm_ind.lopc_miss_status == "off"):
-                    OnuLopcMissAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm()
+                    OnuLopcMissAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).clear_alarm()
                 else:     # No Change
                     pass
 
                 if onu_alarm_ind.lopc_mic_error_status == 1 or onu_alarm_ind.lopc_mic_error_status == "on":
-                    OnuLopcMicErrorAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm()
+                    OnuLopcMicErrorAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).raise_alarm()
                 elif onu_alarm_ind.lopc_mic_error_status == 0 or onu_alarm_ind.lopc_mic_error_status == "off":
-                    OnuLopcMicErrorAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm()
+                    OnuLopcMicErrorAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).clear_alarm()
                 else:     # No Change
                     pass
 
                 if onu_alarm_ind.lob_status == 1 or onu_alarm_ind.lob_status == "on":
-                    OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm()
+                    OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).raise_alarm()
                 elif onu_alarm_ind.lob_status == 0 or onu_alarm_ind.lob_status == "off":
-                    OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm()
+                    OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id, serial_number=serial_number).clear_alarm()
                 else:     # No Change
                     pass
             except Exception as alarm_err:
@@ -246,10 +247,18 @@
             label = "onu-startup-failure-indication"
             self.log.debug(label + " received", onu_startup_fail_ind=ind, int_id=ind.intf_id, onu_id=ind.onu_id, status=ind.status)
             try:
+                """
+                    Get the specific onu device information for the onu generating the alarm.
+                """
+                serial_number = "unresolved"
+                onu_device = self.resolve_onu_id(ind.onu_id,  port_intf_id=ind.intf_id)
+                if onu_device != None:
+                    serial_number = onu_device.serial_number
+                    
                 if ind.status == 1 or ind.status == "on":
-                    OnuStartupAlarm(self.alarms, intf_id=ind.intf_id,onu_id=ind.onu_id).raise_alarm()
+                    OnuStartupAlarm(self.alarms, intf_id=ind.intf_id,onu_id=ind.onu_id, serial_number=serial_number).raise_alarm()
                 else:
-                    OnuStartupAlarm(self.alarms, intf_id=ind.intf_id, onu_id=ind.onu_id).clear_alarm()
+                    OnuStartupAlarm(self.alarms, intf_id=ind.intf_id, onu_id=ind.onu_id, serial_number=serial_number).clear_alarm()
             except Exception as alarm_err:
                 self.log.exception(label, errmsg=alarm_err.message)
 
@@ -278,12 +287,21 @@
                            inverse_bit_error_rate=ind.inverse_bit_error_rate,
                            status=ind.status)
             try:
+                """
+                    Get the specific onu device information for the onu generating the alarm.
+                    Extract the id.   In the future extract the serial number as well
+                """
+                serial_number = "unresolved"
+                onu_device = self.resolve_onu_id(ind.onu_id,  port_intf_id=ind.intf_id)
+                if onu_device != None:
+                    serial_number = onu_device.serial_number
+
                 if ind.status == 1 or ind.status == "on":
                     OnuSignalDegradeAlarm(self.alarms, intf_id=ind.intf_id, onu_id=ind.onu_id,
-                                          inverse_bit_error_rate=ind.inverse_bit_error_rate).raise_alarm()
+                                          inverse_bit_error_rate=ind.inverse_bit_error_rate, serial_number=serial_number).raise_alarm()
                 else:
                     OnuSignalDegradeAlarm(self.alarms, intf_id=ind.intf_id, onu_id=ind.onu_id,
-                                          inverse_bit_error_rate=ind.inverse_bit_error_rate).clear_alarm()
+                                          inverse_bit_error_rate=ind.inverse_bit_error_rate, serial_number=serial_number).clear_alarm()
             except Exception as alarm_err:
                 self.log.exception(label, errmsg=alarm_err.message)
 
@@ -324,12 +342,14 @@
                     OnuWindowDriftAlarm(self.alarms, intf_id=ind.intf_id,
                            onu_id=onu_device_id,
                            drift=ind.drift,
-                           new_eqd=ind.new_eqd).raise_alarm()
+                           new_eqd=ind.new_eqd,
+                           serial_number=onu_serial_number).raise_alarm()
                 else:
                     OnuWindowDriftAlarm(self.alarms, intf_id=ind.intf_id,
                            onu_id=onu_device_id,
                            drift=ind.drift,
-                           new_eqd=ind.new_eqd).clear_alarm()
+                           new_eqd=ind.new_eqd,
+                           serial_number=onu_serial_number).clear_alarm()
             except Exception as alarm_err:
                 self.log.exception(label, errmsg=alarm_err.message)
 
@@ -371,11 +391,13 @@
                 if ind.status == 1 or ind.status == "on":
                     OnuSignalFailAlarm(self.alarms, intf_id=ind.intf_id,
                            onu_id=onu_device_id,
-                           inverse_bit_error_rate=ind.inverse_bit_error_rate).raise_alarm()
+                           inverse_bit_error_rate=ind.inverse_bit_error_rate,
+                           serial_number=onu_serial_number).raise_alarm()
                 else:
                     OnuSignalFailAlarm(self.alarms, intf_id=ind.intf_id,
                            onu_id=onu_device_id,
-                           inverse_bit_error_rate=ind.inverse_bit_error_rate).clear_alarm()
+                           inverse_bit_error_rate=ind.inverse_bit_error_rate,
+                           serial_number=onu_serial_number).clear_alarm()
             except Exception as alarm_err:
                 self.log.exception(label, errmsg=alarm_err.message)
 
@@ -409,7 +431,7 @@
             try:
 
                 OnuActivationFailAlarm(self.alarms, intf_id=ind.intf_id,
-                       onu_id=onu_device_id).raise_alarm()
+                       onu_id=onu_device_id, serial_number=onu_serial_number).raise_alarm()
             except Exception as alarm_err:
                 self.log.exception(label, errmsg=alarm_err.message)
 
@@ -458,7 +480,6 @@
                 parent_port_no=self.platform.intf_id_to_port_no(
                     port_intf_id, device_pb2.Port.PON_OLT),
                 onu_id=onu_id)
-            onu_device_id = onu_device.id
         except Exception as inner:
             self.log.exception('resolve-onu-id', errmsg=inner.message)
 
diff --git a/python/adapters/openolt/openolt_device.py b/python/adapters/openolt/openolt_device.py
index 3242839..d7f9c1c 100644
--- a/python/adapters/openolt/openolt_device.py
+++ b/python/adapters/openolt/openolt_device.py
@@ -88,7 +88,7 @@
         self.core_proxy = kwargs['core_proxy']
         self.adapter_proxy = kwargs['adapter_proxy']
         self.device_num = kwargs['device_num']
-        device = kwargs['device']
+        self.device = kwargs['device']
 
         self.platform_class = kwargs['support_classes']['platform']
         self.resource_mgr_class = kwargs['support_classes']['resource_mgr']
@@ -101,9 +101,9 @@
         self.stub = None
         self.connected = False
         is_reconciliation = kwargs.get('reconciliation', False)
-        self.device_id = device.id
-        self.host_and_port = device.host_and_port
-        self.extra_args = device.extra_args
+        self.device_id = self.device.id
+        self.host_and_port = self.device.host_and_port
+        self.extra_args = self.device.extra_args
         self.device_info = None
         self.log = structlog.get_logger(id=self.device_id,
                                         ip=self.host_and_port)
@@ -119,16 +119,14 @@
             self.log.info('updating-device')
             # It is a new device
             # Update device
-            device.root = True
-            device.connect_status = ConnectStatus.UNREACHABLE
-            device.oper_status = OperStatus.ACTIVATING
-            # TODO NEW CORE. need to move this, cant have a constructor be a generator (yield)
-            #self.adapter_agent.device_update(device)
+            self.device.root = True
+            self.device.connect_status = ConnectStatus.UNREACHABLE
+            self.device.oper_status = OperStatus.ACTIVATING
 
         # If logical device does exist use it, else create one after connecting to device
-        if device.parent_id:
+        if self.device.parent_id:
             # logical device already exists
-            self.logical_device_id = device.parent_id
+            self.logical_device_id = self.device.parent_id
             if is_reconciliation:
                 self.adapter_agent.reconcile_logical_device(
                     self.logical_device_id)
@@ -242,9 +240,6 @@
     def do_state_connected(self, event):
         self.log.debug("do_state_connected")
         
-        device = yield self.core_proxy.get_device(self.device_id)
-
-
         self.stub = openolt_pb2_grpc.OpenoltStub(self.channel)
 
         delay = 1
@@ -269,28 +264,26 @@
         self.log.info('Device connected', device_info=self.device_info)
 
         # self.create_logical_device(device_info)
-        self.logical_device_id = 0
+        self.logical_device_id = '0'
 
         serial_number = self.device_info.device_serial_number
         if serial_number is None: 
             serial_number = self.serial_number
-        device.serial_number = serial_number
+        self.device.serial_number = serial_number
         
         self.serial_number = serial_number
-
-        device.root = True
-        device.vendor = self.device_info.vendor
-        device.model = self.device_info.model
-        device.hardware_version = self.device_info.hardware_version
-        device.firmware_version = self.device_info.firmware_version
+        
+        self.device.root = True
+        self.device.vendor = self.device_info.vendor
+        self.device.model = self.device_info.model
+        self.device.hardware_version = self.device_info.hardware_version
+        self.device.firmware_version = self.device_info.firmware_version
 
         # TODO: check for uptime and reboot if too long (VOL-1192)
 
-        device.connect_status = ConnectStatus.REACHABLE
-        # TODO NEW CORE: Gather this from DeviceInfo proto from openolt agent
-        device.mac_address = "AA:BB:CC:DD:EE:FF"
-        yield self.core_proxy.device_update(device)
-        
+        self.device.connect_status = ConnectStatus.REACHABLE
+        self.device.mac_address = "AA:BB:CC:DD:EE:FF"
+        yield self.core_proxy.device_update(self.device)
 
         self.resource_mgr = self.resource_mgr_class(self.device_id,
                                                     self.host_and_port,
@@ -301,11 +294,12 @@
                                             self.stub, self.device_id,
                                             self.logical_device_id,
                                             self.platform, self.resource_mgr)
-
+        
         self.alarm_mgr = self.alarm_mgr_class(self.log, self.core_proxy,
                                               self.device_id,
                                               self.logical_device_id,
-                                              self.platform)
+                                              self.platform,
+                                              self.serial_number)
         self.stats_mgr = self.stats_mgr_class(self, self.log, self.platform)
         self.bw_mgr = self.bw_mgr_class(self.log, self.core_proxy)
         
