diff --git a/.gitignore b/.gitignore
index a7a6963..f2597c0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
 .tox
 coverage.xml
 nose2-results.xml
+.idea/
diff --git a/VERSION b/VERSION
index 7c8d436..21bb5e1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.2.5-dev
+2.2.5
diff --git a/ofagent/converter.py b/ofagent/converter.py
index 6280331..38ceb03 100755
--- a/ofagent/converter.py
+++ b/ofagent/converter.py
@@ -24,6 +24,7 @@
 import loxi.of13 as of13
 from protobuf_to_dict import protobuf_to_dict, TYPE_CALLABLE_MAP
 from voltha_protos import openflow_13_pb2 as pb2
+from utils import RESERVED_TRANSPARENT_VLAN
 
 
 type_callable_map = copy(TYPE_CALLABLE_MAP)
@@ -87,7 +88,6 @@
     assert oxm_field['oxm_class'] == pb2.OFPXMC_OPENFLOW_BASIC
     ofb_field = oxm_field['ofb_field']
     field_type = ofb_field.get('type', 0)
-
     if field_type == pb2.OFPXMT_OFB_ETH_TYPE:
         return (
             of13.oxm.eth_type(value=ofb_field['eth_type']))
@@ -101,8 +101,12 @@
             of13.oxm.ip_proto(value=ofb_field['ip_proto']))
 
     elif field_type == pb2.OFPXMT_OFB_VLAN_VID:
-        return (
-            of13.oxm.vlan_vid(value=ofb_field['vlan_vid']))
+        if ofb_field.get('vlan_vid') == RESERVED_TRANSPARENT_VLAN and ofb_field['vlan_vid_mask'] == RESERVED_TRANSPARENT_VLAN:
+           return (
+               of13.oxm.vlan_vid_masked(value=ofb_field['vlan_vid_mask'], value_mask=ofb_field['vlan_vid_mask']))
+        else:
+           return (
+               of13.oxm.vlan_vid(value=ofb_field['vlan_vid']))
 
     elif field_type == pb2.OFPXMT_OFB_VLAN_PCP:
         return (
@@ -478,6 +482,14 @@
             type=pb2.OFPXMT_OFB_METADATA,
             table_metadata=lo.value))
 
+def loxi_oxm_vlan_vid_masked_to_ofp_oxm(lo):
+    return pb2.ofp_oxm_field(
+        oxm_class=pb2.OFPXMC_OPENFLOW_BASIC,
+        ofb_field=pb2.ofp_oxm_ofb_field(
+            type=pb2.OFPXMT_OFB_VLAN_VID,
+            vlan_vid=lo.value,
+            vlan_vid_mask=lo.value))
+
 
 def loxi_apply_actions_to_ofp_instruction(lo):
     return pb2.ofp_instruction(
@@ -582,6 +594,7 @@
     of13.oxm.udp_src: loxi_oxm_udp_src_to_ofp_oxm,
     of13.oxm.udp_dst: loxi_oxm_udp_dst_to_ofp_oxm,
     of13.oxm.metadata: loxi_oxm_metadata_to_ofp_oxm,
+    of13.oxm.vlan_vid_masked: loxi_oxm_vlan_vid_masked_to_ofp_oxm,
 
     of13.instruction.apply_actions: loxi_apply_actions_to_ofp_instruction,
     of13.instruction.clear_actions: loxi_clear_actions_to_ofp_instruction,
diff --git a/ofagent/of_connection.py b/ofagent/of_connection.py
index a941111..8930472 100755
--- a/ofagent/of_connection.py
+++ b/ofagent/of_connection.py
@@ -98,7 +98,7 @@
         :return: None
         """
         assert self.connected
-
+        
         if msg.xid is None:
             msg.xid = self._gen_xid()
         buf = msg.pack()
diff --git a/ofagent/utils.py b/ofagent/utils.py
index 7e72bef..c73ecb1 100755
--- a/ofagent/utils.py
+++ b/ofagent/utils.py
@@ -17,6 +17,9 @@
 
 from loxi.pp import PrettyPrinter
 
+# ReservedVlan Transparent Vlan (Masked Vlan, VLAN_ANY in ONOS Flows)
+
+RESERVED_TRANSPARENT_VLAN = 4096
 
 def pp(obj):
     pp = PrettyPrinter(maxwidth=80)
