diff --git a/voltha/adapters/adtran_onu/adtran_onu.py b/voltha/adapters/adtran_onu/adtran_onu.py
index b573137..c5288b0 100755
--- a/voltha/adapters/adtran_onu/adtran_onu.py
+++ b/voltha/adapters/adtran_onu/adtran_onu.py
@@ -41,8 +41,8 @@
                                                config=config,
                                                device_handler_class=AdtranOnuHandler,
                                                name='adtran_onu',
-                                               vendor='Adtran Inc.',
-                                               version='1.20',
+                                               vendor='ADTRAN, Inc.',
+                                               version='1.21',
                                                device_type='adtran_onu',
                                                vendor_id='ADTN',
                                                accepts_add_remove_flow_updates=False),  # TODO: Support flow-mods
diff --git a/voltha/adapters/adtran_onu/omci/adtn_mib_download_task.py b/voltha/adapters/adtran_onu/omci/adtn_mib_download_task.py
index 5b852a1..2b2853f 100644
--- a/voltha/adapters/adtran_onu/omci/adtn_mib_download_task.py
+++ b/voltha/adapters/adtran_onu/omci/adtn_mib_download_task.py
@@ -68,7 +68,7 @@
                                                   omci_agent,
                                                   handler.device_id,
                                                   priority=AdtnMibDownloadTask.task_priority,
-                                                  exclusive=True)
+                                                  exclusive=False)
         self._handler = handler
         self._onu_device = omci_agent.get_device(handler.device_id)
         self._local_deferred = None
@@ -270,13 +270,13 @@
             #
             # Set anything, this request will not be used when using Extended Vlan
 
-            # frame = VlanTaggingFilterDataFrame(
-            #     self._mac_bridge_port_ani_entity_id,  # Entity ID
-            #     vlan_tcis=[self._vlan_tcis_1],        # VLAN IDs
-            #     forward_operation=0x10
-            # ).create()
-            # results = yield omci_cc.send(frame)
-            # self.check_status_and_state(results, 'create-vlan-tagging-filter-data')
+            frame = VlanTaggingFilterDataFrame(
+                self._mac_bridge_port_ani_entity_id,  # Entity ID
+                vlan_tcis=[self._vlan_tcis_1],        # VLAN IDs
+                forward_operation=0x00
+            ).create()
+            results = yield omci_cc.send(frame)
+            self.check_status_and_state(results, 'create-vlan-tagging-filter-data')
 
             #############################################################
             # Create GalEthernetProfile - Once per ONU/PON interface
diff --git a/voltha/adapters/adtran_onu/omci/adtn_service_download_task.py b/voltha/adapters/adtran_onu/omci/adtn_service_download_task.py
index e2e6b54..209dcd8 100644
--- a/voltha/adapters/adtran_onu/omci/adtn_service_download_task.py
+++ b/voltha/adapters/adtran_onu/omci/adtn_service_download_task.py
@@ -56,6 +56,7 @@
     default_tpid = 0x8100                       # TODO: Move to a better location
     name = "ADTRAN Service Download Task"
     free_tcont_alloc_id = 0xFFFF
+    free_gpon_tcont_alloc_id = 0xFF
 
     def __init__(self, omci_agent, handler):
         """
@@ -68,7 +69,7 @@
                                                       omci_agent,
                                                       handler.device_id,
                                                       priority=AdtnServiceDownloadTask.task_priority,
-                                                      exclusive=True)
+                                                      exclusive=False)
         self._handler = handler
         self._onu_device = omci_agent.get_device(handler.device_id)
         self._local_deferred = None
@@ -213,17 +214,21 @@
 
             for tcont in self._pon.tconts.itervalues():
                 if tcont.entity_id is None:
+                    free_ids = {AdtnServiceDownloadTask.free_tcont_alloc_id,
+                                AdtnServiceDownloadTask.free_gpon_tcont_alloc_id}
+
                     free_entity_id = next((k for k, v in tcont_idents.items()
                                            if isinstance(k, int) and
-                                           v.get('attributes', {}).get('alloc_id', 0) ==
-                                           AdtnServiceDownloadTask.free_tcont_alloc_id), None)
+                                           v.get('attributes', {}).get('alloc_id', 0) in
+                                           free_ids), None)
 
                     if free_entity_id is None:
                         self.log.error('no-available-tconts')
                         raise ServiceResourcesFailure('No Available TConts')
 
                     try:
-                        yield tcont.add_to_hardware(omci_cc, free_entity_id)
+                        prev_alloc_id = tcont_idents[free_entity_id].get('attributes').get('alloc_id')
+                        yield tcont.add_to_hardware(omci_cc, free_entity_id, prev_alloc_id=prev_alloc_id)
 
                     except Exception as e:
                         self.log.exception('tcont-set', e=e, eid=free_entity_id)
diff --git a/voltha/adapters/adtran_onu/omci/omci.py b/voltha/adapters/adtran_onu/omci/omci.py
index a72a991..6690aba 100644
--- a/voltha/adapters/adtran_onu/omci/omci.py
+++ b/voltha/adapters/adtran_onu/omci/omci.py
@@ -86,6 +86,10 @@
         self._subscribe_to_events()
         self._onu_omci_device.start()
 
+        device = self._handler.adapter_agent.get_device(self._handler.device_id)
+        device.reason = 'Performing MIB Upload'
+        self._handler.adapter_agent.update_device(device)
+
         if self._onu_omci_device.mib_db_in_sync:
             self._deferred = reactor.callLater(0, self._mib_in_sync)
 
@@ -175,7 +179,7 @@
         device = self._handler.adapter_agent.get_device(self._handler.device_id)
         device.oper_status = OperStatus.ACTIVE
         device.connect_status = ConnectStatus.REACHABLE
-        device.reason = 'MIB Synchronization complete'
+        device.reason = ''
         self._handler.adapter_agent.update_device(device)
 
         omci_dev = self._onu_omci_device
@@ -325,6 +329,10 @@
             self._mib_download_task = None
 
             def success(_results):
+                device = self._handler.adapter_agent.get_device(self._handler.device_id)
+                device.reason = ''
+                self._handler.adapter_agent.update_device(device)
+
                 if self._mib_downloaded:
                     self._service_downloaded = True
                 else:
@@ -337,13 +345,21 @@
             def failure(reason):
                 self.log.error('mib-download-failure', reason=reason)
                 self._mib_download_task = None
+                device = self._handler.adapter_agent.get_device(self._handler.device_id)
+                self._handler.adapter_agent.update_device(device)
                 self._mib_download_deferred = reactor.callLater(_STARTUP_RETRY_WAIT,
                                                                 self.capabilities_handler,
                                                                 None, None)
             if not self._mib_downloaded:
+                device = self._handler.adapter_agent.get_device(self._handler.device_id)
+                device.reason = 'Initial MIB Download'
+                self._handler.adapter_agent.update_device(device)
                 self._mib_download_task = AdtnMibDownloadTask(self.omci_agent,
                                                               self._handler)
             elif not self._service_downloaded:
+                device = self._handler.adapter_agent.get_device(self._handler.device_id)
+                device.reason = 'Initial Service Download'
+                self._handler.adapter_agent.update_device(device)
                 self._mib_download_task = AdtnServiceDownloadTask(self.omci_agent,
                                                                   self._handler)
             if self._mib_download_task is not None:
diff --git a/voltha/adapters/adtran_onu/onu_tcont.py b/voltha/adapters/adtran_onu/onu_tcont.py
index f89829f..1f24b76 100644
--- a/voltha/adapters/adtran_onu/onu_tcont.py
+++ b/voltha/adapters/adtran_onu/onu_tcont.py
@@ -26,12 +26,14 @@
     Adtran ONU specific implementation
     """
     free_tcont_alloc_id = 0xFFFF
+    free_gpon_tcont_alloc_id = 0xFF     # SFU may use this to indicate a free TCONT
 
     def __init__(self, handler, alloc_id, traffic_descriptor, name=None):
         super(OnuTCont, self).__init__(alloc_id, traffic_descriptor, name=name)
         self._handler = handler
         self._entity_id = None
         self.log = structlog.get_logger(device_id=handler.device_id, alloc_id=alloc_id)
+        self._free_alloc_id = OnuTCont.free_tcont_alloc_id
 
     @property
     def entity_id(self):
@@ -44,7 +46,7 @@
         return OnuTCont(handler, tcont['alloc-id'], td, name=tcont['name'])
 
     @inlineCallbacks
-    def add_to_hardware(self, omci, tcont_entity_id):
+    def add_to_hardware(self, omci, tcont_entity_id, prev_alloc_id=OnuTCont.free_tcont_alloc_id):
         self.log.debug('add-to-hardware', tcont_entity_id=tcont_entity_id)
 
         if self._entity_id == tcont_entity_id:
@@ -54,6 +56,7 @@
             raise KeyError('TCONT already assigned: {}'.format(self.entity_id))
 
         try:
+            self._free_alloc_id = prev_alloc_id
             frame = TcontFrame(tcont_entity_id, self.alloc_id).set()
             results = yield omci.send(frame)
 
@@ -78,7 +81,7 @@
     def remove_from_hardware(self, omci):
         self.log.debug('remove-from-hardware', tcont_entity_id=self.entity_id)
         try:
-            frame = TcontFrame(self.entity_id, OnuTCont.free_tcont_alloc_id).set()
+            frame = TcontFrame(self.entity_id, self._free_alloc_id).set()
             results = yield omci.send(frame)
 
             status = results.fields['omci_message'].fields['success_code']
