diff --git a/voltha/extensions/omci/database/alarm_db_ext.py b/voltha/extensions/omci/database/alarm_db_ext.py
index c4054d3..699f9b7 100644
--- a/voltha/extensions/omci/database/alarm_db_ext.py
+++ b/voltha/extensions/omci/database/alarm_db_ext.py
@@ -233,9 +233,9 @@
         root_proxy = self._core.get_proxy('/')
 
         data = AlarmDeviceData(device_id=device_id,
-                             created=self._time_to_string(now),
-                             version=AlarmDbExternal.CURRENT_VERSION,
-                             last_alarm_sequence=0)
+                               created=self._time_to_string(now),
+                               version=AlarmDbExternal.CURRENT_VERSION,
+                               last_alarm_sequence=0)
         try:
             dev_proxy = self._device_proxy(device_id)
             found = True
@@ -408,7 +408,7 @@
             data.last_sync_time = self._time_to_string(value)
 
             # Update
-            self._root_proxy.update(MibDbExternal.DEVICE_PATH.format(device_id),
+            self._root_proxy.update(AlarmDbExternal.DEVICE_PATH.format(device_id),
                                     data)
             self._modified = now
             self.log.debug('save-sync-time-complete', device_id=device_id)
@@ -440,17 +440,16 @@
 
     def save_alarm_last_sync(self, device_id, value):
         """
-        Save the Last Sync time to the database in an easy location to access
+        Save the Last Alarm Sequence value to the database in an easy location to access
 
         :param device_id: (str) ONU Device ID
-        :param value: (DateTime) Value to save
+        :param value: (int) Value to save
         """
         self.log.debug('save-last-sync', device_id=device_id, seq=str(value))
 
         try:
-            if not isinstance(value, datetime):
-                raise TypeError('Expected a datetime object, got {}'.
-                                format(type(datetime)))
+            if not isinstance(value, int):
+                raise TypeError('Expected a integer, got {}'.format(type(value)))
 
             device_proxy = self._device_proxy(device_id)
             data = device_proxy.get(depth=0)
diff --git a/voltha/extensions/omci/me_frame.py b/voltha/extensions/omci/me_frame.py
index ce8f146..71cab33 100644
--- a/voltha/extensions/omci/me_frame.py
+++ b/voltha/extensions/omci/me_frame.py
@@ -346,6 +346,7 @@
         :return: (OmciFrame) OMCI Frame
         """
         self._check_operation(OP.GetAllAlarms)
+        assert 0 <= alarm_retrieval_mode <= 1, 'Alarm retrieval mode must be 0..1'
 
         return OmciFrame(
             transaction_id=None,
@@ -353,7 +354,7 @@
             omci_message=OmciGetAllAlarms(
                 entity_class=getattr(self.entity_class, 'class_id'),
                 entity_id=getattr(self, 'entity_id'),
-                alarm_retrieval_mode=self._entity_id.mask_for(alarm_retrieval_mode)
+                alarm_retrieval_mode=alarm_retrieval_mode
             ))
 
     def get_all_alarm_next(self, command_sequence_number):
diff --git a/voltha/extensions/omci/omci_cc.py b/voltha/extensions/omci/omci_cc.py
index c89aded..90b4b2a 100644
--- a/voltha/extensions/omci/omci_cc.py
+++ b/voltha/extensions/omci/omci_cc.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2017 the original author or authors.
+# Copyright 2017-present Open Networking Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -75,7 +75,6 @@
         OmciSetResponse.message_id: RxEvent.Set,
         OmciGetAllAlarmsResponse.message_id: RxEvent.Get_ALARM_Get,
         OmciGetAllAlarmsNextResponse.message_id: RxEvent.Get_ALARM_Get_Next
-
     }
 
     def __init__(self, adapter_agent, device_id, me_map=None,
@@ -661,10 +660,10 @@
         frame = OntGFrame().reboot()
         return self.send(frame, timeout)
 
-    def send_get_all_alarm(self, alarm_retrival_mode=0, timeout=DEFAULT_OMCI_TIMEOUT):
+    def send_get_all_alarm(self, alarm_retrieval_mode=0, timeout=DEFAULT_OMCI_TIMEOUT):
         self.log.debug('send_get_alarm')
 
-        frame = OntDataFrame().get_all_alarm(alarm_retrival_mode)
+        frame = OntDataFrame().get_all_alarm(alarm_retrieval_mode)
         return self.send(frame, timeout)
 
     def send_get_all_alarm_next(self, seq_no, timeout=DEFAULT_OMCI_TIMEOUT):
diff --git a/voltha/extensions/omci/onu_device_entry.py b/voltha/extensions/omci/onu_device_entry.py
index d3fd68b..c73ea99 100644
--- a/voltha/extensions/omci/onu_device_entry.py
+++ b/voltha/extensions/omci/onu_device_entry.py
@@ -53,7 +53,7 @@
     An ONU Device entry in the MIB
     """
     def __init__(self, omci_agent, device_id, adapter_agent, custom_me_map,
-                 mib_db, support_classes):
+                 mib_db, alarm_db, support_classes):
         """
         Class initializer
 
@@ -62,6 +62,7 @@
         :param adapter_agent: (AdapterAgent) Adapter agent for ONU
         :param custom_me_map: (dict) Additional/updated ME to add to class map
         :param mib_db: (MibDbApi) MIB Database reference
+        :param alarm_db: (MibDbApi) Alarm Table/Database reference
         :param support_classes: (dict) State machines and tasks for this ONU
         """
         self.log = structlog.get_logger(device_id=device_id)
@@ -106,12 +107,12 @@
 
             # ONU ALARM Synchronization state machine
             self._alarm_db_in_sync = False
-            alarm_synchronizer_info = support_classes.get('alarm-syncronizer')
+            alarm_synchronizer_info = support_classes.get('alarm-synchronizer')
             advertise = alarm_synchronizer_info['advertise-events']
             self._alarm_sync_sm = alarm_synchronizer_info['state-machine'](self._omci_agent,
                                                                            device_id,
                                                                            alarm_synchronizer_info['tasks'],
-                                                                           mib_db,
+                                                                           alarm_db,
                                                                            advertise_events=advertise)
         except Exception as e:
             self.log.exception('state-machine-create-failed', e=e)
@@ -191,7 +192,6 @@
         Set PM interval configuration
 
         :param pm_config: (OnuPmIntervalMetrics) PM Interval configuration
-        :return:
         """
         self._pm_intervals_sm.set_pm_config(pm_config)
 
diff --git a/voltha/extensions/omci/openomci_agent.py b/voltha/extensions/omci/openomci_agent.py
index 76a8076..c7f3eca 100644
--- a/voltha/extensions/omci/openomci_agent.py
+++ b/voltha/extensions/omci/openomci_agent.py
@@ -65,17 +65,17 @@
             'delete-pm': OmciDeletePMRequest,
         },
     },
-     'alarm-syncronizer': {
-         'state-machine': AlarmSynchronizer,    # Implements the Alarm sync state machine
-         'database': AlarmDbExternal,           # For any State storage needs
-         'advertise-events': True,             # Advertise events on OpenOMCI event bus
-         'tasks': {
-             'alarm-sync': AlarmSyncDataTask,
-             'alarm-check': AlarmDataTask,
-             'alarm-resync': AlarmResyncTask,
-             'alarm-audit': AlarmDataTask
-         }
-     }
+    'alarm-synchronizer': {
+        'state-machine': AlarmSynchronizer,    # Implements the Alarm sync state machine
+        'database': AlarmDbExternal,           # For any State storage needs
+        'advertise-events': True,              # Advertise events on OpenOMCI event bus
+        'tasks': {
+            'alarm-sync': AlarmSyncDataTask,
+            'alarm-check': AlarmDataTask,
+            'alarm-resync': AlarmResyncTask,
+            'alarm-audit': AlarmDataTask
+        }
+    }
 }
 
 
@@ -106,9 +106,9 @@
         self._mib_db = None
         self._mib_database_cls = support_classes['mib-synchronizer']['database']
 
-        # Alarm Synchronization Database # TODO: Stretch goal for VOLTHA v1.3.0
+        # Alarm Synchronization Database
         self._alarm_db = None
-        self._alarm_database_cls = support_classes['alarm-syncronizer']['database']
+        self._alarm_database_cls = support_classes['alarm-synchronizer']['database']
 
     @property
     def core(self):
@@ -136,7 +136,6 @@
             if self._mib_db is None:
                 self._mib_db = self._mib_database_cls(self)
 
-            # TODO Alarm DB
             if self._alarm_db is None:
                 self._alarm_db = self._alarm_database_cls(self)
 
@@ -216,7 +215,7 @@
 
         if device is None:
             device = OnuDeviceEntry(self, device_id, adapter_agent, custom_me_map,
-                                    self._mib_db, support_classes)
+                                    self._mib_db, self._alarm_db, support_classes)
 
             self._devices[device_id] = device
 
diff --git a/voltha/extensions/omci/state_machines/Alarm_sync.py b/voltha/extensions/omci/state_machines/Alarm_sync.py
index 6ad46c9..15c06d0 100644
--- a/voltha/extensions/omci/state_machines/Alarm_sync.py
+++ b/voltha/extensions/omci/state_machines/Alarm_sync.py
@@ -81,7 +81,7 @@
 
         :param agent: (OpenOmciAgent) Agent
         :param device_id: (str) ONU Device ID
-        :param db: (MibDbVolatileDict) MIB/Alarm Database
+        :param db: (MibDbApi) MIB/Alarm Database
         :param advertise_events: (bool) Advertise events on OpenOMCI Event Bus
         :param alarm_sync_tasks: (dict) Tasks to run
         :param states: (list) List of valid states
@@ -176,10 +176,11 @@
         return self._last_alarm_sequence_value
 
     @last_alarm_sequence.setter
-    def last_alarm_seuence(self, value):
-        self._last_alarm_sequence_value = value
-        if self._database is not None:
-            self._database.save_alarm_last_sync(self.device_id, value)
+    def last_alarm_sequence(self, value):
+        if self._last_alarm_sequence_value != value:
+            self._last_alarm_sequence_value = value
+            if self._database is not None:
+                self._database.save_alarm_last_sync(self.device_id, value)
 
     @property
     def last_alarm_sync_time(self):
@@ -251,7 +252,7 @@
                 except KeyError:
                     # Device already is in database
                     self.log.debug('seed-db-exist', device_id=self._device_id)
-                    self.last_alarm_sequence = \
+                    self._last_alarm_sequence_value = \
                         self._database.get_alarm_last_sync(self._device_id)
 
                 self._device_in_db = True
@@ -284,9 +285,9 @@
         except Exception as e:
             self.log.exception('dev-subscription-setup', e=e)
 
+        # Determine if this ONU has ever synchronized
         if self.is_updated_alarm:
             self._deferred = reactor.callLater(0, self.update_alarm)
-        # Determine if this ONU has ever synchronized
         else:
             self._deferred = reactor.callLater(0, self.sync_alarm)
 
@@ -300,8 +301,7 @@
             self.log.debug('alarm-update-success', results='the sequence_number is {}'.
                                                            format(results))
             self._current_task = None
-            # The new ONU is up, save the first updated alarm sequence number
-            self.last_alarm_sequence = results
+            # The new ONU is up
             self._deferred = reactor.callLater(0, self.success)
 
         def failure(reason):
@@ -320,8 +320,6 @@
         """
         self.advertise(AlarmOpenOmciEventType.state_change, self.state)
 
-        self.last_alarm_sequence = self._database.get_alarm_last_sync(self._device_id) or 0
-
         def success(sequence):
             self.log.debug('sync-alarm-success', sequence_value=sequence)
             self._current_task = None
@@ -347,8 +345,10 @@
         Schedule a tick to occur to in the future to request an audit
         """
         self.advertise(AlarmOpenOmciEventType.state_change, self.state)
-        self.last_alarm_sync_time = datetime.utcnow()
-        self._device.alarm_db_in_sync = True
+
+        if not self._device.alarm_db_in_sync:
+            self.last_alarm_sync_time = datetime.utcnow()
+            self._device.alarm_db_in_sync = True
 
         if self._audit_delay > 0:
             self._deferred = reactor.callLater(self._audit_delay, self.audit_alarm)
@@ -463,7 +463,7 @@
 
     def on_alarm_update_next_response(self, _topic, msg):
         """
-        Process a Alarm update Next response
+        Process a Get All Alarm Next response
 
         :param _topic: (str) OMCI-RX topic
         :param msg: (dict) Dictionary with 'rx-response' and 'tx-request' (if any)
@@ -507,7 +507,7 @@
 
     def on_alarm_update_response(self, _topic, msg):
         """
-        Process a Set response
+        Process a Get All Alarms response
 
         :param _topic: (str) OMCI-RX topic
         :param msg: (dict) Dictionary with 'rx-response' and 'tx-request' (if any)
@@ -523,22 +523,16 @@
                 omci_msg = response.fields['omci_message'].fields
                 class_id = omci_msg['entity_class']
                 entity_id = omci_msg['entity_id']
-                number_of_commands = omci_msg.fields['number_of_commands']
+                number_of_commands = omci_msg['number_of_commands']
 
-
-                self.last_alarm_sequence = number_of_commands
+                # ONU will reset its last alarm sequence number to 0 on receipt of the
+                # Get All Alarms request
+                self.last_alarm_sequence = 0
 
                 self.log.info('received alarm response',
                               class_id=class_id,
                               instance_id=entity_id,
                               number_of_commands=number_of_commands)
 
-                if class_id == OntData.class_id:
-                    return
-
-                # Save to the database
-                self._database.set(self._device_id, class_id, entity_id, number_of_commands)
-
-
-            except KeyError:
-                pass  # NOP
\ No newline at end of file
+            except Exception as e:
+                self.log.exception('upload-alarm-failure', e=e)
diff --git a/voltha/extensions/omci/tasks/alarm_check_task.py b/voltha/extensions/omci/tasks/alarm_check_task.py
index 9539996..d62d6ee 100644
--- a/voltha/extensions/omci/tasks/alarm_check_task.py
+++ b/voltha/extensions/omci/tasks/alarm_check_task.py
@@ -41,10 +41,10 @@
         :param entity_id: (int) ME entity ID
         """
         super(AlarmDataTask, self).__init__(AlarmDataTask.name,
-                                               omci_agent,
-                                               device_id,
-                                               priority=AlarmDataTask.task_priority,
-                                               exclusive=False)
+                                            omci_agent,
+                                            device_id,
+                                            priority=AlarmDataTask.task_priority,
+                                            exclusive=False)
         self._local_deferred = None
         self._class_id = class_id
         self._entity_id = entity_id
diff --git a/voltha/extensions/omci/tasks/alarm_sync_data.py b/voltha/extensions/omci/tasks/alarm_sync_data.py
index ed079dd..115ef9e 100644
--- a/voltha/extensions/omci/tasks/alarm_sync_data.py
+++ b/voltha/extensions/omci/tasks/alarm_sync_data.py
@@ -40,10 +40,10 @@
         :param device_id: (str) ONU Device ID
         """
         super(AlarmSyncDataTask, self).__init__(AlarmSyncDataTask.name,
-                                           omci_agent,
-                                           device_id,
-                                           priority=AlarmSyncDataTask.task_priority,
-                                           exclusive=False)
+                                                omci_agent,
+                                                device_id,
+                                                priority=AlarmSyncDataTask.task_priority,
+                                                exclusive=False)
         self._local_deferred = None
 
     def cancel_deferred(self):
@@ -88,8 +88,8 @@
 
             #########################################
             # ONU Data (ME #2)
-            # alarm_retrival_mode=1, time=DEFAULT_OMCI_TIMEOUT
-            results = yield device.omci_cc.send_get_all_alarm(alarm_retrival_mode=1)
+            # alarm_retrieval_mode=1, time=DEFAULT_OMCI_TIMEOUT
+            results = yield device.omci_cc.send_get_all_alarm(alarm_retrieval_mode=1)
             self.stop_if_not_running()
             command_sequence_number = results.fields['omci_message'].fields['number_of_commands']
 
@@ -114,7 +114,7 @@
                                       command_sequence_number=command_sequence_number)
                         if retry >= 2:
                             raise AlarmSyncDataFailure('Alarm timeout failure on req {} of {}'.
-                                                   format(seq_no + 1, command_sequence_number))
+                                                       format(seq_no + 1, command_sequence_number))
                         yield asleep(0.3)
                         self.stop_if_not_running()
 
