diff --git a/tests/utests/voltha/extensions/omci/test_mib_db_dict.py b/tests/utests/voltha/extensions/omci/test_mib_db_dict.py
index be42733..229809f 100644
--- a/tests/utests/voltha/extensions/omci/test_mib_db_dict.py
+++ b/tests/utests/voltha/extensions/omci/test_mib_db_dict.py
@@ -461,6 +461,25 @@
         self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
         self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
 
+    def test_list_field_serialization(self):
+        self.db.start()
+        self.db.add(_DEVICE_ID)
+
+        class_id = VlanTaggingFilterData.class_id
+        inst_id = 0
+        vlan_filter_list = [0] * 12
+        vlan_filter_list[0] = 0x1234
+
+        attributes = {
+            'vlan_filter_list': vlan_filter_list,        # FieldListField
+            'forward_operation': 0,
+            'number_of_entries': 1
+        }
+        self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
+        data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+        self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
+        self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
+
     def test_complex_json_serialization(self):
         self.db.start()
         self.db.add(_DEVICE_ID)
diff --git a/tests/utests/voltha/extensions/omci/test_mib_db_ext.py b/tests/utests/voltha/extensions/omci/test_mib_db_ext.py
index 725da65..f84a757 100644
--- a/tests/utests/voltha/extensions/omci/test_mib_db_ext.py
+++ b/tests/utests/voltha/extensions/omci/test_mib_db_ext.py
@@ -459,6 +459,24 @@
         self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
         self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
 
+    def test_list_field_serialization(self):
+        self.db.start()
+        self.db.add(_DEVICE_ID)
+
+        class_id = VlanTaggingFilterData.class_id
+        inst_id = 0
+        vlan_filter_list = [0] * 12
+        vlan_filter_list[0] = 0x1234
+
+        attributes = {
+            'vlan_filter_list': vlan_filter_list,        # FieldListField
+            'forward_operation': 0,
+            'number_of_entries': 1
+        }
+        self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
+        data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+        self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
+        self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
 
     def test_complex_json_serialization(self):
         self.db.start()
diff --git a/tests/utests/voltha/extensions/omci/test_omci.py b/tests/utests/voltha/extensions/omci/test_omci.py
index 496d493..dd5108e 100644
--- a/tests/utests/voltha/extensions/omci/test_omci.py
+++ b/tests/utests/voltha/extensions/omci/test_omci.py
@@ -1,3 +1,18 @@
+#
+# Copyright 2017 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
 from unittest import TestCase, main
 
 from voltha.extensions.omci.omci import *
@@ -374,6 +389,9 @@
         ref = '001F440A005421010400000000000000' \
               '00000000000000000000000000000000' \
               '100100000000000000000028'
+        vlan_filter_list = [0] * 12
+        vlan_filter_list[0] = 0x0400
+
         frame = OmciFrame(
             transaction_id=31,
             message_type=OmciCreate.message_id,
@@ -381,7 +399,7 @@
                 entity_class=VlanTaggingFilterData.class_id,
                 entity_id=0x2101,
                 data=dict(
-                    vlan_filter_0=0x0400,
+                    vlan_filter_list=vlan_filter_list,
                     forward_operation=0x10,
                     number_of_entries=1
                 )
diff --git a/voltha/adapters/broadcom_onu/broadcom_onu.py b/voltha/adapters/broadcom_onu/broadcom_onu.py
index 2811eb6..d72f9de 100644
--- a/voltha/adapters/broadcom_onu/broadcom_onu.py
+++ b/voltha/adapters/broadcom_onu/broadcom_onu.py
@@ -75,7 +75,7 @@
         self.descriptor = Adapter(
             id=self.name,
             vendor='Voltha project',
-            version='0.44',
+            version='0.45',
             config=AdapterConfig(log_level=LogLevel.INFO)
         )
         self.devices_handlers = dict()  # device_id -> BroadcomOnuHandler()
@@ -307,6 +307,7 @@
     def unsuppress_alarm(self, filter):
         raise NotImplementedError()
 
+
 class BroadcomOnuHandler(object):
 
     def __init__(self, adapter, device_id):
@@ -405,7 +406,6 @@
         # Handle next event
         reactor.callLater(0, self.handle_onu_events)
 
-
     def activate(self, device):
         self.log.info('activating')
 
@@ -921,6 +921,8 @@
                                              entity_id,
                                              vlan_id,
                                              fwd_operation):
+        vlan_filter_list = [0] * 12
+        vlan_filter_list[0] = vlan_id
         frame = OmciFrame(
             transaction_id=self.get_tx_id(),
             message_type=OmciCreate.message_id,
@@ -928,7 +930,7 @@
                 entity_class=VlanTaggingFilterData.class_id,
                 entity_id=entity_id,
                 data=dict(
-                    vlan_filter_0=vlan_id,
+                    vlan_filter_list=vlan_filter_list,
                     forward_operation=fwd_operation,
                     number_of_entries=1
                 )
@@ -939,8 +941,10 @@
     def send_set_vlan_tagging_filter_data(self,
                                           entity_id,
                                           vlan_id):
+        vlan_filter_list = [0] * 12
+        vlan_filter_list[0] = vlan_id
         data = dict(
-            vlan_filter_0=vlan_id,
+            vlan_filter_list=vlan_filter_list,
             forward_operation=0x10,
             number_of_entries=1
         )
@@ -1459,8 +1463,6 @@
         self.send_set_multicast_operations_profile_ds_igmp_mcast_tci(0x201, 4, cvid)
         yield self.wait_for_response()
 
-
-
     def add_uni_port(self, device, parent_logical_device_id,
                      name, parent_port_num=None):
         self.log.info('adding-logical-port', device_id=device.id,
@@ -1526,7 +1528,6 @@
         self.adapter_agent.delete_logical_port_by_id(parent_logical_device_id,
                                                      'uni-{}'.format(port_no))
 
-
     @inlineCallbacks
     def delete_v_ont_ani(self, data):
         self.log.info('deleting-v_ont_ani')
diff --git a/voltha/extensions/omci/database/mib_db_ext.py b/voltha/extensions/omci/database/mib_db_ext.py
index 832a821..c0eebab 100644
--- a/voltha/extensions/omci/database/mib_db_ext.py
+++ b/voltha/extensions/omci/database/mib_db_ext.py
@@ -17,7 +17,7 @@
 from voltha.protos.omci_mib_db_pb2 import MibInstanceData, MibClassData, \
     MibDeviceData, MibAttributeData
 from voltha.extensions.omci.omci_entities import *
-from scapy.fields import StrField
+from scapy.fields import StrField, FieldListField
 
 
 class MibDbExternal(MibDbApi):
@@ -126,6 +126,9 @@
                 #
                 str_value = str(value)
 
+            elif isinstance(field, FieldListField):
+                str_value = json.dumps(value, separators=(',', ':'))
+
             else:
                 self.log.warning('default-conversion', type=type(field),
                                  class_id=class_id, attribute=attr_name, value=str(value))
@@ -180,6 +183,9 @@
             elif isinstance(field, BitField):
                 value = long(str_value)
 
+            elif isinstance(field, FieldListField):
+                value = json.loads(str_value)
+
             else:
                 self.log.warning('default-conversion', type=type(field),
                                  class_id=class_id, attribute=attr_name, value=str_value)
diff --git a/voltha/extensions/omci/omci_entities.py b/voltha/extensions/omci/omci_entities.py
index a7cec7d..1a29ecf 100644
--- a/voltha/extensions/omci/omci_entities.py
+++ b/voltha/extensions/omci/omci_entities.py
@@ -19,7 +19,7 @@
 from binascii import hexlify
 import json
 from scapy.fields import ByteField, ShortField, MACField, BitField, IPField
-from scapy.fields import IntField, StrFixedLenField, LongField
+from scapy.fields import IntField, StrFixedLenField, LongField, FieldListField
 from scapy.packet import Packet
 
 from voltha.extensions.omci.omci_defs import OmciUninitializedFieldError, \
@@ -424,18 +424,9 @@
     class_id = 84
     attributes = [
         ECA(ShortField("managed_entity_id", None), {AA.R, AA.SBC}),
-        ECA(ShortField("vlan_filter_0", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_1", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_2", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_3", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_4", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_5", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_6", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_7", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_8", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_9", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_10", None), {AA.R, AA.W, AA.SBC}),
-        ECA(ShortField("vlan_filter_11", None), {AA.R, AA.W, AA.SBC}),
+        ECA(FieldListField("vlan_filter_list", None,
+                           ShortField('', 0), count_from=lambda _: 12),
+            {AA.R, AA.W, AA.SBC}),
         ECA(ByteField("forward_operation", None), {AA.R, AA.W, AA.SBC},
             range_check=lambda x: 0x00 <= x <= 0x21),
         ECA(ByteField("number_of_entries", None), {AA.R, AA.W, AA.SBC})
diff --git a/voltha/extensions/omci/omci_me.py b/voltha/extensions/omci/omci_me.py
index 431ea41..1e7c183 100644
--- a/voltha/extensions/omci/omci_me.py
+++ b/voltha/extensions/omci/omci_me.py
@@ -627,17 +627,23 @@
             data = dict()
 
             if vlan_tcis is not None:
+                num_tcis = len(vlan_tcis)
+
+                assert 0 <= num_tcis <= 12, 'Number of VLAN TCI values is 0..12'
                 assert all(isinstance(tci, int) and 0 <= tci <= 0xFFFF
                            for tci in vlan_tcis), "VLAN TCI's are 0..0xFFFF"
-                assert 1 <= len(vlan_tcis) <= 12, 'Number of VLAN TCI values is 1..12'
 
-                for index in range(0, len(vlan_tcis)):
-                    data['vlan_filter_{}'.format(index)] = vlan_tcis[index]
+                if num_tcis > 0:
+                    vlan_filter_list = [0] * 12
+                    for index in range(0, num_tcis):
+                        vlan_filter_list[index] = vlan_tcis[index]
 
-                data['number_of_entries'] = len(vlan_tcis)
+                    data['vlan_filter_list'] = vlan_filter_list
+                data['number_of_entries'] = num_tcis
 
             if forward_operation is not None:
-                assert 0 <= forward_operation <= 0x21, 'forwarding_operation must be 0x00..0x21'
+                assert 0 <= forward_operation <= 0x21, \
+                    'forwarding_operation must be 0x00..0x21'
                 data['forward_operation'] = forward_operation
 
         super(VlanTaggingFilterDataFrame, self).__init__(VlanTaggingFilterData,
