diff --git a/VERSION b/VERSION
index ca2d639..0bee604 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.3.3-dev
+2.3.3
diff --git a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
index 3f5871b..570a5c7 100644
--- a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
+++ b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
@@ -63,6 +63,7 @@
 from onu_tcont import OnuTCont
 from pon_port import PonPort
 from uni_port import UniPort, UniType
+from uni_port import RESERVED_TRANSPARENT_VLAN
 from pyvoltha.common.tech_profile.tech_profile import TechProfile
 from pyvoltha.adapters.extensions.omci.tasks.omci_test_request import OmciTestRequest
 from pyvoltha.adapters.extensions.omci.omci_entities import AniG
@@ -787,7 +788,10 @@
                             self.log.debug('field-type-tunnel-id')
 
                         elif field.type == fd.VLAN_VID:
-                            _vlan_vid = field.vlan_vid & 0xfff
+                            if field.vlan_vid == RESERVED_TRANSPARENT_VLAN and field.vlan_vid_mask == RESERVED_TRANSPARENT_VLAN:
+                                _vlan_vid = RESERVED_TRANSPARENT_VLAN
+                            else:
+                                _vlan_vid = field.vlan_vid & 0xfff
                             self.log.debug('field-type-vlan-vid',
                                            vlan=_vlan_vid)
 
@@ -865,10 +869,22 @@
                             self.log.error('unsupported-action-type',
                                            action_type=action.type, in_port=_in_port)
 
-                    if _set_vlan_vid is None or _set_vlan_vid == 0:
-                        self.log.warn('ignorning-flow-that-does-not-set-vlanid')
+                    # OMCI set vlan task can only filter and set on vlan header attributes.  Any other openflow
+                    # supported match and action criteria cannot be handled by omci and must be ignored.
+                    if (_set_vlan_vid is None or _set_vlan_vid == 0) and _vlan_vid != RESERVED_TRANSPARENT_VLAN:
+                        self.log.warn('ignoring-flow-that-does-not-set-vlanid', set_vlan_vid=_set_vlan_vid)
+                    elif (_set_vlan_vid is None or _set_vlan_vid == 0) and _vlan_vid == RESERVED_TRANSPARENT_VLAN:
+                        self.log.info('set-vlanid-any', uni_id=uni_id, uni_port=uni_port,
+                                                   _set_vlan_vid=_vlan_vid,
+                                                   _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
+                                                   tp_id=tp_id)
+                        self._add_vlan_filter_task(device, uni_id=uni_id, uni_port=uni_port,
+                                                   _set_vlan_vid=_vlan_vid,
+                                                   _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
+                                                   tp_id=tp_id)
                     else:
-                        self.log.info('set-vlanid', uni_id=uni_id, uni_port=uni_port, set_vlan_vid=_set_vlan_vid, vlan_vid=_vlan_vid,tp_id=tp_id)
+                        self.log.info('set-vlanid', uni_id=uni_id, uni_port=uni_port, match_vlan=_vlan_vid,
+                                      set_vlan_vid=_set_vlan_vid, _set_vlan_pcp=_set_vlan_pcp, ethType=_type)
                         self._add_vlan_filter_task(device, uni_id=uni_id, uni_port=uni_port,
                                                    _set_vlan_vid=_set_vlan_vid,
                                                    _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
@@ -963,7 +979,10 @@
                                        in_port=_port)
 
                     elif field.type == fd.VLAN_VID:
-                        _vlan_vid = field.vlan_vid & 0xfff
+                        if field.vlan_vid == RESERVED_TRANSPARENT_VLAN and field.vlan_vid_mask == RESERVED_TRANSPARENT_VLAN:
+                            _vlan_vid = RESERVED_TRANSPARENT_VLAN
+                        else:
+                            _vlan_vid = field.vlan_vid & 0xfff
                         self.log.debug('field-type-vlan-vid',
                                        vlan=_vlan_vid)
 
@@ -1002,6 +1021,7 @@
                         self.log.debug('field-type-tunnel-id',
                                        tunnel_id=_tunnel_id)
 
+
                     else:
                         raise NotImplementedError('field.type={}'.format(
                             field.type))
@@ -1048,13 +1068,24 @@
 
                 # OMCI set vlan task can only filter and set on vlan header attributes.  Any other openflow
                 # supported match and action criteria cannot be handled by omci and must be ignored.
-                if _set_vlan_vid is None or _set_vlan_vid == 0:
-                    self.log.warn('ignoring-flow-that-does-not-set-vlanid')
+                if (_set_vlan_vid is None or _set_vlan_vid == 0) and _vlan_vid != RESERVED_TRANSPARENT_VLAN:
+                    self.log.warn('ignoring-flow-that-does-not-set-vlanid', set_vlan_vid=_set_vlan_vid)
+                elif (_set_vlan_vid is None or _set_vlan_vid == 0) and _vlan_vid == RESERVED_TRANSPARENT_VLAN:
+                    self.log.info('set-vlanid-any', uni_id=uni_id, uni_port=uni_port,
+                                                   _set_vlan_vid=_vlan_vid,
+                                                   _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
+                                                   tp_id=tp_id)
+                    self._add_vlan_filter_task(device, uni_id=uni_id, uni_port=uni_port,
+                                               _set_vlan_vid=_vlan_vid,
+                                               _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
+                                               tp_id=tp_id)
                 else:
-                    self.log.info('set-vlanid', uni_id=uni_id, uni_port=uni_port, match_vlan=_vlan_vid, set_vlan_vid=_set_vlan_vid, _set_vlan_pcp=_set_vlan_pcp, ethType=_type)
-                    self._add_vlan_filter_task(device, uni_id,
-                                              uni_port=uni_port, match_vlan=_vlan_vid,
-                                              _set_vlan_vid=_set_vlan_vid, _set_vlan_pcp=_set_vlan_pcp, tp_id=tp_id)
+                    self.log.info('set-vlanid', uni_id=uni_id, uni_port=uni_port, match_vlan=_vlan_vid,
+                                  set_vlan_vid=_set_vlan_vid, _set_vlan_pcp=_set_vlan_pcp, ethType=_type)
+                    self._add_vlan_filter_task(device, uni_id=uni_id, uni_port=uni_port,
+                                               _set_vlan_vid=_set_vlan_vid,
+                                               _set_vlan_pcp=_set_vlan_pcp, match_vlan=_vlan_vid,
+                                               tp_id=tp_id)
             except Exception as e:
                 self.log.exception('failed-to-install-flow', e=e, flow=flow)
 
diff --git a/python/adapters/brcm_openomci_onu/omci/brcm_vlan_filter_task.py b/python/adapters/brcm_openomci_onu/omci/brcm_vlan_filter_task.py
index 20ec8e8..484ed45 100644
--- a/python/adapters/brcm_openomci_onu/omci/brcm_vlan_filter_task.py
+++ b/python/adapters/brcm_openomci_onu/omci/brcm_vlan_filter_task.py
@@ -23,11 +23,11 @@
 from pyvoltha.adapters.extensions.omci.omci_me import \
     VlanTaggingOperation, VlanTaggingFilterDataFrame, ExtendedVlanTaggingOperationConfigurationDataFrame
 from uni_port import UniType
+from uni_port import RESERVED_TRANSPARENT_VLAN
 from pon_port import DEFAULT_TPID
 
 RC = ReasonCodes
 OP = EntityOperations
-RESERVED_TRANSPARENT_VLAN = 4095
 
 
 class BrcmVlanFilterException(Exception):
diff --git a/python/adapters/brcm_openomci_onu/uni_port.py b/python/adapters/brcm_openomci_onu/uni_port.py
index 045b8d3..7094022 100644
--- a/python/adapters/brcm_openomci_onu/uni_port.py
+++ b/python/adapters/brcm_openomci_onu/uni_port.py
@@ -27,6 +27,9 @@
     VEIP = 'VirtualEthernetInterfacePoint'
     # TODO: Add others as they become supported
 
+# ReservedVlan Transparent Vlan (Masked Vlan, VLAN_ANY in ONOS Flows)
+
+RESERVED_TRANSPARENT_VLAN = 4096
 
 class UniPort(object):
     """Wraps southbound-port(s) support for ONU"""
