diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
index 60ca65e..7233ac7 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
@@ -37,6 +37,10 @@
     ChannelgroupConfig, ChannelpartitionConfig, ChannelpairConfig, \
     ChannelterminationConfig, OntaniConfig, VOntaniConfig, VEnetConfig
 
+ASFVOLT_NNI_PORT = 50
+# ASFVOLT_NNI_PORT needs to be other than pon port value.
+# Edgecore OLT assigns PONport between 0 to 15, hence
+# having a value 50 for NNI port to avoid collision.
 # TODO: VLAN ID needs to come from some sort of configuration.
 PACKET_IN_VLAN = 4091
 is_inband_frame = BpfProgramFilter('(ether[14:2] & 0xfff) = 0x{:03x}'.format(
@@ -76,7 +80,7 @@
             device.serial_number = device.host_and_port
             self.adapter_agent.update_device(device)
 
-            self.add_port(port_no=1, port_type=Port.ETHERNET_NNI,
+            self.add_port(port_no=ASFVOLT_NNI_PORT, port_type=Port.ETHERNET_NNI,
                           label='NNI facing Ethernet port')
             self.logical_device_id = \
                 self.add_logical_device(device_id=device.id)
@@ -273,6 +277,19 @@
             self.log.exception('', exc=str(e))
         return
 
+    def handle_omci_ind(self, ind_info):
+        child_device = self.adapter_agent.get_child_device(self.device_id,
+                                                           onu_id=ind_info['onu_id'])
+        if child_device is None:
+            self.log.info('Onu is not configured',onu_id=ind_info['onu_id'])
+            return
+        try:
+            self.adapter_agent.receive_proxied_message(child_device.proxy_address,
+                                                       ind_info['packet'])
+        except Exception as e:
+                self.log.exception('', exc=str(e))
+        return
+
     def create_interface(self, data):
         try:
             if isinstance(data, ChannelterminationConfig):
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
index 6722bc6..61dfd15 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
@@ -317,15 +317,16 @@
         ind_info = dict()
         ind_info['_object_type'] = 'packet_in_indication'
         ind_info['_sub_group_type'] = 'omci_message'
+        ind_info['_device_id'] = device_id
         packet_data = request.balOmciResp.key.packet_send_dest
-        proxy_address = Device.ProxyAddress(
-            device_id=device_id,
-            channel_id=packet_data.itu_omci_channel.sub_term_id,
-            onu_id=packet_data.itu_omci_channel.sub_term_id,
-            onu_session_id=packet_data.itu_omci_channel.sub_term_id
-        )
-        self.adapter_agent.receive_proxied_message(proxy_address,
-                                                   request.balOmciResp.data.pkt.val)
+        ind_info['onu_id'] = packet_data.itu_omci_channel.sub_term_id
+        ind_info['packet'] = request.balOmciResp.data.pkt.val
+        self.log.info('ONU Id is',
+                     onu_id=packet_data.itu_omci_channel.sub_term_id)
+
+        reactor.callLater(0,
+                         self.adapter.devices_handlers[device_id].handle_omci_ind,
+                         ind_info)
         bal_err = bal_pb2.BalErr()
         bal_err.err = bal_errno_pb2.BAL_ERR_OK
         return bal_err
diff --git a/voltha/adapters/asfvolt16_olt/bal.py b/voltha/adapters/asfvolt16_olt/bal.py
index 95f389c..d8bccac 100644
--- a/voltha/adapters/asfvolt16_olt/bal.py
+++ b/voltha/adapters/asfvolt16_olt/bal.py
@@ -69,6 +69,8 @@
             obj.interface.key.intf_id = pon_port
             obj.interface.key.intf_type = bal_model_types_pb2.BAL_INTF_TYPE_PON
             obj.interface.data.admin_state = bal_model_types_pb2.BAL_STATE_UP
+            obj.interface.data.transceiver_type = \
+                bal_model_types_pb2.BAL_TRX_TYPE_XGPON_LTH_7226_PC
             yield self.stub.BalCfgSet(obj)
         except Exception as e:
             self.log.info('activating-pon-port in olt-exception', exc=str(e))
@@ -88,8 +90,9 @@
             obj.packet.key.packet_send_dest.type = \
                 bal_model_types_pb2.BAL_DEST_TYPE_ITU_OMCI_CHANNEL
             obj.packet.key.packet_send_dest.itu_omci_channel.sub_term_id = \
+                proxy_address.onu_id
+            obj.packet.key.packet_send_dest.itu_omci_channel.int_id = \
                 proxy_address.channel_id
-            obj.packet.key.packet_send_dest.itu_omci_channel.int_id = 0
             obj.packet.data.pkt = msg
             yield self.stub.BalCfgSet(obj)
         except Exception as e:
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
index f8152b0..2c44b3c 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
@@ -466,15 +466,14 @@
  */
 enum BalObjId
 {
-    BAL_OBJ_ID_INVALID                               = 0;    /**< INVALID */
-    BAL_OBJ_ID_ACCESS_TERMINAL                       = 1;    /**< BAL Access Terminal */
-    BAL_OBJ_ID_FLOW                                  = 2;    /**< BAL Flow */
-    BAL_OBJ_ID_GROUP                                 = 3;    /**< BAL Group */
-    BAL_OBJ_ID_INTERFACE                             = 4;    /**< BAL Interface */
-    BAL_OBJ_ID_PACKET                                = 5;    /**< packet */
-    BAL_OBJ_ID_SUBSCRIBER_TERMINAL                   = 6;    /**< BAL Subscriber Terminal */
-    BAL_OBJ_ID_TM_QUEUE                              = 7;    /**< tm_queue */
-    BAL_OBJ_ID_TM_SCHED                              = 8;    /**< tm_sched */
+    BAL_OBJ_ID_ACCESS_TERMINAL                       = 0;    /**< BAL Access Terminal */
+    BAL_OBJ_ID_FLOW                                  = 1;    /**< BAL Flow */
+    BAL_OBJ_ID_GROUP                                 = 2;    /**< BAL Group */
+    BAL_OBJ_ID_INTERFACE                             = 3;    /**< BAL Interface */
+    BAL_OBJ_ID_PACKET                                = 4;    /**< packet */
+    BAL_OBJ_ID_SUBSCRIBER_TERMINAL                   = 5;    /**< BAL Subscriber Terminal */
+    BAL_OBJ_ID_TM_QUEUE                              = 6;    /**< tm_queue */
+    BAL_OBJ_ID_TM_SCHED                              = 7;    /**< tm_sched */
 }
 
 /** Identifiers for all possible groups under all objects in the system.
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
index a56ff04..11a97aa 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
@@ -1091,7 +1091,7 @@
  */
 message BalPacketIeeeOamChannelRxData
 {
-    BalIdList pkt = 1;    /**< Packet Data. */
+    bytes pkt = 1;    /**< Packet Data. */
 }
 
 /** Transport message definition for "ieee_oam_channel_rx" group of "packet"
@@ -1111,7 +1111,7 @@
  */
 message BalPacketItuOmciChannelRxData
 {
-    BalIdList pkt = 1;    /**< Packet Data. */
+    bytes pkt = 1;    /**< Packet Data. */
 }
 
 /** Transport message definition for "itu_omci_channel_rx" group of "packet" object.
