diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
index ee0a9f4..462fe37 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
@@ -179,7 +179,6 @@
         self.adapter_agent.add_logical_port(logical_device_id, logical_port)
 
     def handle_access_term_ind(self, ind_info):
-        #import pdb; pdb.set_trace()
         device = self.adapter_agent.get_device(self.device_id)
         if ind_info['actv_status'] == 'success':
             self.log.info('successful access terminal Indication',
@@ -196,7 +195,6 @@
                #self.send_connect_olt(self.olt_id)
                port_no = 100
                self.add_port(port_no, port_type=Port.PON_OLT)
-               #import pdb; pdb.set_trace()
                self.bal.activate_pon_port(self.olt_id, port_no);
             except Exception as e:
                return
@@ -208,9 +206,13 @@
         return
 
     def handle_subscriber_term_ind(self, ind_info):
-        #import pdb; pdb.set_trace()
         self.log.info('To-DO Need to handle ONU Indication')
-       
+
+    def send_proxied_message(self, proxy_address, msg):
+        try:
+            self.bal.send_omci_request_message(proxy_address, msg)
+        except Exception as e:
+            return
 
 def disable(self):
         super(Asfvolt16Handler, self).disable()
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
index f23e66b..067d2fd 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
@@ -58,17 +58,23 @@
         self.log.info('Group indication is not implemented', device_id=device_id)
 
     def process_interface_ind(self, bal_indication, device_id):
-        self.log.info('Inteface Ind received', intf_id=bal_indication.balObjInfo.keyStr)
+        self.log.info('Inteface Ind received')
         self.log.info('Awaiting ONU discovery')
         return
 
     def process_packet_ind(self, bal_indication, device_id):
-        self.log.info('packet indication is not implemented', device_id=device_id)
+        self.log.info('received omci msg')
+        proxy_address=Device.ProxyAddress(
+                      device_id=device_id,
+                      channel_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id,  
+                      onu_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id,
+                      onu_session_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id
+        )
+        self.adapter_agent.receive_proxied_message(proxy_address, bal_indication.balOmciRespInfo.data.pkt.val)
 
     def process_subscriber_term_ind(self, bal_indication, device_id):
-        onu_data = bal_indication.balObjInfo.onuDiscoveryInfo
-        self.log.info('Subscriber termination message received',
-                              admin_state=onu_data.data.admin_state)
+        onu_data = bal_indication.terminal_disc
+        self.log.info('Subscriber termination message received')
         #     ind_info: {'object_type': <str>
         #                '_device_id': <str>
         #                '_pon_id' : <int>
@@ -85,10 +91,10 @@
         ind_info['_vendor_id'] = '4252434D'
         ind_info['_vendor_specific'] = onu_data.data.serial_number.vendor_specific
 
-        if(bal_model_types_pb2.BAL_STATE_DOWN == onu_data.data.admin_state):
-            ind_info['activation_successful']=False
-        elif(bal_model_types_pb2.BAL_STATE_UP == onu_data.data.admin_state):
-            ind_info['activation_successful']=True
+        #if(bal_model_types_pb2.BAL_STATE_DOWN == onu_data.data.admin_state):
+        #    ind_info['activation_successful']=False
+        #elif(bal_model_types_pb2.BAL_STATE_UP == onu_data.data.admin_state):
+        #    ind_info['activation_successful']=True
         reactor.callLater(0,
                           self.adapter.devices_handlers[device_id].handle_subscriber_term_ind, 
                           ind_info)
@@ -106,7 +112,7 @@
         #                'actv_status': <str>}
         ind_info = dict()
         ind_info['object_type'] = 'access_terminal'
-        if bal_indication.balObjInfo.status != bal_errno_pb2.BAL_ERR_OK:
+        if bal_indication.access_term_ind.data.admin_state != bal_model_ids_pb2.BAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE:
             ind_info['actv_status'] = 'failed'
         else:
             ind_info['actv_status'] = 'success'
@@ -129,12 +135,10 @@
     @twisted_async
     def BalIndInfo(self, request, context):
         self.log.info('get-device-info')
-        self.log.info('received indication for object type',obj_type=request.balObjInfo.objType)
-        #import pdb; pdb.set_trace()
-        #reactor.callFromThread(self.Baltest, request)
+        self.log.info('received indication for object type',obj_type=request.objType)
         device_id = request.device_id.decode('unicode-escape')
         try:
-            handler = self.ind_handlers.get(request.balObjInfo.objType)
+            handler = self.ind_handlers.get(request.objType)
             if handler:
                 handler(self, request, device_id)
         except Exception as e:
diff --git a/voltha/adapters/asfvolt16_olt/bal.py b/voltha/adapters/asfvolt16_olt/bal.py
index 25e3426..2c5c861 100644
--- a/voltha/adapters/asfvolt16_olt/bal.py
+++ b/voltha/adapters/asfvolt16_olt/bal.py
@@ -73,3 +73,26 @@
         except Exception as e:
             self.log.info('activating-pon-port in olt-exception', exc=str(e))
         return
+
+    @inlineCallbacks
+    def send_omci_request_message(self, proxy_address, msg):
+        if isinstance(msg, Packet):
+            msg = str(msg)
+
+        self.log.info('send_omci_request_message',
+                      proxy_address=proxy_address.channel_id,
+                      msg=msg)
+        try:
+            obj = bal_pb2.BalCfg()
+            #Fill Header details
+            obj.device_id = self.device_id.encode('ascii', 'ignore')
+            obj.hdr.obj_type = bal_model_ids_pb2.BAL_OBJ_ID_PACKET
+            #Fill packet Details
+            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.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:
+            self.log.info('send-proxied_message-exception', exc=str(e))
+        return
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal.proto b/voltha/adapters/asfvolt16_olt/protos/bal.proto
index f2091f8..885d0bf 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal.proto
@@ -61,12 +61,6 @@
     }
 }
 
-message BalOmciReq {
-        uint32 olt_no = 1;/*OLT number*/
-        uint32 onu_id = 2;/*ONU number*/
-        bytes  omciMsg = 3;/*OMCI msg*/
-}
-
 service Bal {
     /**
      * Initialize the BAL Public API internal data structures
@@ -85,6 +79,4 @@
     rpc BalCfgSet(BalCfg) returns(BalErr) {}
     rpc BalCfgClear(BalKey) returns(BalErr) {}
     rpc BalCfgGet(BalKey) returns(BalCfg) {}
-
-    rpc BalOmciMsg(BalOmciReq) returns(BalErr){}
 }
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto b/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
index b4ee69b..8dd5fc3 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
@@ -17,178 +17,37 @@
 syntax = "proto3";
 
 import "bal_model_ids.proto";
-import "bal_errno.proto";
 import "bal_model_types.proto";
 import "bal.proto";
 
-enum BalAlarmIndStatus{
-    BAL_ALARM_IND_CLEARED = 0; //Alarm cleared
-    BAL_ALARM_IND_RAISED  = 1; //Alarm raised
-}
-
-//ONU alarm info
-message BalOnuAlarmInfo{
-    uint32  onu_id = 1;  //onu id
-    BalSerialNumber serial_number = 2; //serial number of the ONU
-    BalAlarmIndStatus onu_alarm_status = 3; //status of the alarm raised by ONU
-    string onu_alarm_name = 4; //name of the alarm raised by ONU
-}
-
-//OLT alarm info
-message BalOltAlarmInfo{
-    uint32  olt_no = 1; //olt number
-    uint32  deviceId = 2; //pon interface number of the corresponding OLT
-    BalAlarmIndStatus olt_alarm_status = 3; //status of the alarm raised by OLT
-    string olt_alarm_name = 4; //name of the alarm raised by OLT
-}
-
-//Alarms generated by the system
-message BalAlarmInfo{
-    uint32  NoOfAlarmsPresent = 1;  //number of alarms present in the BAL system currently
-    BalOnuAlarmInfo onuAlarmInfo = 2; //ONU alarm info
-    BalOltAlarmInfo oltAlarmInfo = 3; //OLT alarm info
-}
-
-//NNI statistics
-message BalNniStatsInfo{
-    uint32      nni_rx_frames_64 = 1;
-    uint32      nni_rx_frames_65_127 = 2;
-    uint32      nni_rx_frames_128_255 = 3;
-    uint32      nni_rx_frames_256_511 = 4;
-    uint32      nni_rx_frames_512_1023 = 5;
-    uint32      nni_rx_frames_1024_1518 = 6;
-    uint32      nni_rx_frames_1519_2047 = 7;
-    uint32      nni_rx_frames_2048_4095 = 8;
-    uint32      nni_rx_frames_4096_9216 = 9;
-    uint32      nni_rx_frames_9217_16383 = 10;
-    uint32      nni_rx_frames = 11;
-    uint32      nni_rx_bytes = 12;
-    uint32      nni_rx_good_frames = 13;
-    uint32      nni_rx_unicast_frames = 14;
-    uint32      nni_rx_multicast_frames = 15;
-    uint32      nni_rx_broadcast_frames = 16;
-    uint32      nni_rx_fcs_errors = 17;
-    uint32      nni_rx_control_frames = 18;
-    uint32      nni_rx_pause_frames = 19;
-    uint32      nni_rx_pfc_frames = 20;
-    uint32      nni_rx_unsupported_opcode = 21;
-    uint32      nni_rx_unsupported_da = 22;
-    uint32      nni_rx_alignment_errors = 23;
-    uint32      nni_rx_length_out_of_range = 24;
-    uint32      nni_rx_code_errors = 25;
-    uint32      nni_rx_oversized_frames = 26;
-    uint32      nni_rx_jabber_frames = 27;
-    uint32      nni_rx_mtu_check_errors = 28;
-    uint32      nni_rx_promiscuous_frames = 29;
-    uint32      nni_rx_vlan_frames = 30;
-    uint32      nni_rx_double_vlan_frames = 31;
-    uint32      nni_rx_truncated_frames = 32;
-    uint32      nni_rx_undersize_frames = 33;
-    uint32      nni_rx_fragmented_frames = 34;
-    uint32      nni_rx_runt_frames = 35;
-    uint32      nni_tx_frames_64 = 36;
-    uint32      nni_tx_frames_65_127 = 37;
-    uint32      nni_tx_frames_128_255 = 38;
-    uint32      nni_tx_frames_256_511 = 39;
-    uint32      nni_tx_frames_512_1023 = 40;
-    uint32      nni_tx_frames_1024_1518 = 41;
-    uint32      nni_tx_frames_1519_2047 = 42;
-    uint32      nni_tx_frames_2048_4095 = 44;
-    uint32      nni_tx_frames_4096_9216 = 45;
-    uint32      nni_tx_frames_9217_16383 = 46;
-    uint32      nni_tx_frames = 47;
-    uint32      nni_tx_bytes = 48;
-    uint32      nni_tx_good_frames = 49;
-    uint32      nni_tx_unicast_frames = 50;
-    uint32      nni_tx_multicast_frames = 51;
-    uint32      nni_tx_broadcast_frames = 52;
-    uint32      nni_tx_pause_frames = 53;
-    uint32      nni_tx_pfc_frames = 54;
-    uint32      nni_tx_jabber_frames = 55;
-    uint32      nni_tx_fcs_errors = 56;
-    uint32      nni_tx_control_frames = 57;
-    uint32      nni_tx_oversize_frames = 58;
-    uint32      nni_tx_fragmented_frames = 59;
-    uint32      nni_tx_error_frames = 60;
-    uint32      nni_tx_vlan_frames = 61;
-    uint32      nni_tx_double_vlan_frames = 62;
-    uint32      nni_tx_runt_frames = 63;
-    uint32      nni_tx_underrun_frames = 64;
-}
-
-//PON statistics
-message BalPonNiStatsInfo{
-    uint32       pon_ni_tx_packets = 1;
-    uint32       pon_ni_rx_omci = 2;
-    uint32       pon_ni_tx_omci = 3;
-    uint32       pon_ni_rx_xgem = 4;
-    uint32       pon_ni_tx_xgem = 5;
-}
-
-//Gem port based statistics
-message BalPonGemStatsInfo{
-    uint32       pon_gem_rx_packets = 1;
-    uint32       pon_gem_rx_bytes = 2;
-    uint32       pon_gem_tx_packets = 3;
-    uint32       pon_gem_tx_bytes = 4;
-}
-
-//ONU statistics
-message BalOnuStatsInfo{
-    uint32       onu_id = 1;
-    uint32       onu_rx_words = 2;
-    uint32       onu_rx_omci = 3;
-    uint32       onu_positive_drift = 4;
-    uint32       onu_negative_drift = 5;
-}
-
-enum BalIndStatsType{
-    BAL_IND_NNI_STATS     = 0;
-    BAL_IND_PON_STATS     = 1;
-    BAL_IND_PON_GEM_STATS = 2;
-    BAL_IND_ONU_STATS     = 3;
-}
-
-message BalIndStatsInfo{
-    uint32                device_id = 1; //OLT number
-    uint32                pon_ni = 2; //pon interface number of the corresponding OLT
-    BalIndStatsType       stats_type = 3; //type of statistics
-    BalNniStatsInfo       nni_stats = 4; //nni statistics info
-    BalPonNiStatsInfo     pon_ni_stats = 5; //pon based statistics
-    BalPonGemStatsInfo    pon_gem_stats = 6; //gem port based statistics
-    BalOnuStatsInfo       onu_stats = 7; //onu statistics
-}
-
-message BalOmciRespInfo{
-    bytes  balOmciResp = 1; //response msg
-    uint32 pon_ni = 2; //pon interface number
-    uint32 onu_id = 3; //onu id
-    uint32 port_id = 4; //port id
-    uint32 crc_ok = 5; //crc status
-}
-
-message BalObjInd{
-    BalObjId     objType = 1; //type of object for which the indications have been received
-    BalErrno     status  = 2; //status of the indication received from BAL utilities
-    string       keyStr  = 3; //key string containing additional data
-    oneof u {
-        BalSubscriberTerminalCfg onuDiscoveryInfo = 4; // ONU discovery info
-        bytes        pktData = 5; //raw packet in case of object type is PACKET
-	}
-}
-
 message BalIndications{
-    oneof u {
-          BalObjInd balObjInfo = 1; //raw packet in case of object type is PACKET
-          BalAlarmInfo balAlarmInfo = 2; //alarm info from BAL
-          BalIndStatsInfo balStatsInfo = 3; //statistics info from BAL
-          BalOmciRespInfo balOmciRespInfo = 4; // OMCI response
-    }
-    string device_id = 5; //Deviced Id
+   BalObjId     objType = 1; //type of object for which the indications have been received
+   oneof u {
+         BalAccessTerminalInd access_term_ind                        = 2;  // Access Terminal
+         BalAccessTerminalOperStatusChange access_term_ind_op_state  = 3;  // Access Terminal Operational State Change
+         BalFlowOperStatusChange flow_op_state                       = 4;  // Flow Operational State Change
+         BalFlowInd flow_ind                                         = 5;  // Flow
+         BalGroupInd group_ind                                       = 6;  // Group
+         BalInterfaceOperStatusChange interface_op_state             = 7;  // Interface Operational State Change
+         BalInterfaceLos interface_los                               = 8;  // OLT alarms
+         BalInterfaceInd interface_ind                               = 9;  // Interface
+         BalInterfaceStat interface_stats                            = 10; // NNI statistics
+         BalSubscriberTerminalOperStatusChange terminal_op_state     = 11; // Subscriber Terminal Operational State Change
+         BalSubscriberTerminalSubTermDisc terminal_disc              = 12; // Subscriber discovery
+         BalSubscriberTerminalSubTermAlarm terminal_alarm            = 13; // Subscriber alarm
+         BalSubscriberTerminalDgi terminal_dgi                       = 14; // Subscriber dgi
+         BalSubscriberTerminalInd terminal_ind                       = 15; // Subscriber
+         BalTmQueueInd tm_queue_Ind                                  = 16; // TmQueue Ind
+         BalTmSchedInd tm_sched_Ind                                  = 17; // TmScheduler Ind
+         BalPacketBearerChannelRx  pktData                           = 18; // packet data
+         BalPacketItuOmciChannelRx balOmciResp                       = 19; // OMCI response
+         BalPacketIeeeOamChannelRx balOamResp                        = 20; // PLOAM response
+      }
+      string device_id                                               = 21; //Deviced Id
 }
 
 service BalInd {
 
-    //Handling of bal indications from the device
-    rpc BalIndInfo(BalIndications) returns(BalErr) {}
+      //Handling of bal indications from the device
+      rpc BalIndInfo(BalIndications) returns(BalErr) {}
 }
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
index ca87dcd..f8152b0 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
@@ -16,32 +16,46 @@
 
 syntax = "proto3";
 
-/** Identifiers for all properties contained in the access_terminal_cfg group. 
+/** Identifiers for all properties contained in the access_terminal_cfg group.
  */
 enum BalAccessTerminalCfgId
 {
     BAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
     BAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS   = 1;    /**< Operational status. */
     BAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+    BAL_ACCESS_TERMINAL_CFG_ID_TOPOLOGY      = 3;    /**< Topology mode. */
+    BAL_ACCESS_TERMINAL_CFG_ID_SW_VERSION    = 4;    /**< Software version mode. */
 }
 
-/** Identifiers for all properties contained in the access_terminal_ind group. 
+/** Identifiers for all properties contained in the access_terminal_ind group.
  */
 enum BalAccessTerminalIndId
 {
     BAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
     BAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS   = 1;    /**< Operational status. */
     BAL_ACCESS_TERMINAL_IND_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+    BAL_ACCESS_TERMINAL_IND_ID_TOPOLOGY      = 3;    /**< Topology mode */
+    BAL_ACCESS_TERMINAL_IND_ID_SW_VERSION    = 4;    /**< Software version mode */
 }
 
-/** Identifiers for all properties contained in the access_terminal_key group. 
+/** Identifiers for all properties contained in the access_terminal_key group.
  */
 enum BalAccessTerminalKeyId
 {
     BAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID= 0;    /**< access_term_id. */
 }
 
-/** Identifiers for all properties contained in the flow_cfg group. 
+/** Identifiers for all properties contained in the
+   * access_terminal_oper_status_change group.
+   */
+enum BalOperStatusChangeId
+{
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS= 0;
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS= 1;
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_ADMIN_STATE    = 2;
+}
+
+/** Identifiers for all properties contained in the flow_cfg group.
  */
 enum BalFlowCfgId
 {
@@ -52,18 +66,17 @@
     BAL_FLOW_CFG_ID_SUB_TERM_ID              = 4;    /**< Subscriber Terminal ID. */
     BAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX         = 5;    /**< Subscriber Terminal uni port index. */
     BAL_FLOW_CFG_ID_SVC_PORT_ID              = 6;    /**< Service Port ID. */
-    BAL_FLOW_CFG_ID_AGG_PORT_ID              = 7;    /**< Aggregate port ID. */
-    BAL_FLOW_CFG_ID_RESOLVE_MAC              = 8;    /**< Resolve mac. */
-    BAL_FLOW_CFG_ID_CLASSIFIER               = 9;    /**< Classifier. */
-    BAL_FLOW_CFG_ID_ACTION                   = 10;   /**< Action. */
-    BAL_FLOW_CFG_ID_SLA                      = 11;   /**< SLA. */
-    BAL_FLOW_CFG_ID_COOKIE                   = 12;   /**< Cookie. */
-    BAL_FLOW_CFG_ID_PRIORITY                 = 13;   /**< Priority. */
-    BAL_FLOW_CFG_ID_GROUP_ID                 = 14;   /**< Group ID. */
-    BAL_FLOW_CFG_ID_QUEUE                    = 15;   /**< Egress queue. */
+    BAL_FLOW_CFG_ID_RESOLVE_MAC              = 7;    /**< Resolve mac. */
+    BAL_FLOW_CFG_ID_CLASSIFIER               = 8;    /**< Classifier. */
+    BAL_FLOW_CFG_ID_ACTION                   = 9;    /**< Action. */
+    BAL_FLOW_CFG_ID_COOKIE                   = 10;   /**< Cookie. */
+    BAL_FLOW_CFG_ID_PRIORITY                 = 11;   /**< Priority. */
+    BAL_FLOW_CFG_ID_GROUP_ID                 = 12;   /**< Group ID. */
+    BAL_FLOW_CFG_ID_QUEUE                    = 13;   /**< Egress queue. */
+    BAL_FLOW_CFG_ID_DBA_TM_SCHED_ID          = 14;   /**< Tm Sched. */
 }
 
-/** Identifiers for all properties contained in the flow_ind group. 
+/** Identifiers for all properties contained in the flow_ind group.
  */
 enum BalFlowIndId
 {
@@ -72,18 +85,19 @@
     BAL_FLOW_IND_ID_ACCESS_INT_ID            = 2;    /**< Access interface ID. */
     BAL_FLOW_IND_ID_NETWORK_INT_ID           = 3;    /**< Network Interface ID. */
     BAL_FLOW_IND_ID_SUB_TERM_ID              = 4;    /**< Subscriber terminal ID. */
-    BAL_FLOW_IND_ID_SVC_PORT_ID              = 5;    /**< Service port ID. */
-    BAL_FLOW_IND_ID_AGG_PORT_ID              = 6;    /**< Aggregate port ID. */
+    BAL_FLOW_IND_ID_SUB_TERM_UNI_IDX         = 5;    /**< Subscriber terminal UNI ID. */
+    BAL_FLOW_IND_ID_SVC_PORT_ID              = 6;    /**< Service port ID. */
     BAL_FLOW_IND_ID_RESOLVE_MAC              = 7;    /**< Resolve mac. */
-    BAL_FLOW_IND_ID_BASE_TC_ID               = 8;    /**< Base TCONT ID. */
-    BAL_FLOW_IND_ID_CLASSIFIER               = 9;    /**< Classifier. */
-    BAL_FLOW_IND_ID_ACTION                   = 10;   /**< Action. */
-    BAL_FLOW_IND_ID_SLA                      = 11;   /**< SLA. */
-    BAL_FLOW_IND_ID_COOKIE                   = 12;   /**< Cookie. */
-    BAL_FLOW_IND_ID_PRIORITY                 = 13;   /**< Priority. */
+    BAL_FLOW_IND_ID_CLASSIFIER               = 8;    /**< Classifier. */
+    BAL_FLOW_IND_ID_ACTION                   = 9;   /**< Action. */
+    BAL_FLOW_IND_ID_COOKIE                   = 10;   /**< Cookie. */
+    BAL_FLOW_IND_ID_PRIORITY                 = 11;   /**< Priority. */
+    BAL_FLOW_IND_ID_GROUP_ID                 = 12;   /**< Group ID. */
+    BAL_FLOW_IND_ID_QUEUE                    = 13;   /**< Egress queue. */
+    BAL_FLOW_IND_ID_DBA_TM_SCHED_ID          = 14;   /**< Tm Sched. */
 }
 
-/** Identifiers for all properties contained in the flow_key group. 
+/** Identifiers for all properties contained in the flow_key group.
  */
 enum BalFlowKeyId
 {
@@ -91,7 +105,19 @@
     BAL_FLOW_KEY_ID_FLOW_TYPE                = 1;    /**< Flow type. */
 }
 
-/** Identifiers for all properties contained in the flow_stat group. 
+/** Identifiers for all properties contained in the flow_oper_status_change group.
+    */
+enum BalFlowOperStatusChangeId
+{
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS           = 0;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS           = 1;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_ADMIN_STATE               = 2;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_SVC_PORT_ID               = 3;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_DBA_TM_SCHED_ID           = 4;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_COOKIE                    = 5;
+}
+
+/** Identifiers for all properties contained in the flow_stat group.
  */
 enum BalFlowStatId
 {
@@ -101,7 +127,7 @@
     BAL_FLOW_STAT_ID_TX_BYTES                = 3;    /**< Transmitted bytes. */
 }
 
-/** Identifiers for all properties contained in the group_cfg group. 
+/** Identifiers for all properties contained in the group_cfg group.
  */
 enum BalGroupCfgId
 {
@@ -112,14 +138,25 @@
     BAL_GROUP_CFG_ID_OWNER                   = 4;    /**< Owner of the group. */
 }
 
-/** Identifiers for all properties contained in the group_key group. 
+/** Identifiers for all properties contained in the group_ind group.
+    */
+enum BalGroupIndId
+{
+   BAL_GROUP_IND_ID_MEMBERS_CMD              = 0;
+   BAL_GROUP_IND_ID_MEMBERS                  = 1;
+   BAL_GROUP_IND_ID_COOKIE                   = 2;
+   BAL_GROUP_IND_ID_FLOWS                    = 3;
+   BAL_GROUP_IND_ID_OWNER                    = 4;
+}
+
+/** Identifiers for all properties contained in the group_key group.
  */
 enum BalGroupKeyId
 {
     BAL_GROUP_KEY_ID_GROUP_ID                = 0;    /**< Group ID. */
 }
 
-/** Identifiers for all properties contained in the interface_cfg group. 
+/** Identifiers for all properties contained in the interface_cfg group.
  */
 enum BalInterfaceCfgId
 {
@@ -150,9 +187,10 @@
     BAL_INTERFACE_IND_ID_FLOW_CONTROL        = 7;            /**< Flow control. */
     BAL_INTERFACE_IND_ID_DS_TM               = 8;            /**< Downstream scheduler and shaper. */
     BAL_INTERFACE_IND_ID_US_TM               = 9;            /**< Upstream scheduler and shaper. */
+    BAL_INTERFACE_IND_ID_SUB_TERM_ID_LIST    = 10;           /**< Sub term id list */
 }
 
-/** Identifiers for all properties contained in the interface_key group. 
+/** Identifiers for all properties contained in the interface_key group.
  */
 enum BalInterfaceKeyId
 {
@@ -160,17 +198,59 @@
     BAL_INTERFACE_KEY_ID_INTF_TYPE           = 1;            /**< intf_type. */
 }
 
-/** Identifiers for all properties contained in the interface_stat group. 
+/** Identifiers for all properties contained in the interface_los group
+    */
+enum BalInterfaceLosId
+{
+   BAL_INTERFACE_LOS_ID_STATUS                              = 0;
+}
+
+/** Identifiers for all properties contained in the interface_oper_stat
+   * group.
+   */
+enum BalInterfaceOperStatusChangeId
+{
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS      = 0;
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS      = 1;
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_ADMIN_STATE          = 2;
+}
+
+/** Identifiers for all properties contained in the interface_stat group.
  */
 enum BalInterfaceStatId
 {
-    BAL_INTERFACE_STAT_ID_RX_PACKETS         = 0;            /**< Recieved packets. */
-    BAL_INTERFACE_STAT_ID_RX_BYTES           = 1;            /**< Received bytes. */
-    BAL_INTERFACE_STAT_ID_TX_PACKETS         = 2;            /**< Transmitted packets. */
-    BAL_INTERFACE_STAT_ID_TX_BYTES           = 3;            /**< Transmitted bytes. */
+    BAL_INTERFACE_STAT_ID_RX_BYTES                           = 0;    /**< Received bytes. */
+    BAL_INTERFACE_STAT_ID_RX_PACKETS                         = 1;    /**< Recieved packets. */
+    BAL_INTERFACE_STAT_ID_RX_UCAST_PACKETS                   = 2;    /**< Received unicast packets. */
+    BAL_INTERFACE_STAT_ID_RX_MCAST_PACKETS                   = 3;    /**< Received multicast packets. */
+    BAL_INTERFACE_STAT_ID_RX_BCAST_PACKETS                   = 4;    /**< Received broadcast packets. */
+    BAL_INTERFACE_STAT_ID_RX_ERROR_PACKETS                   = 5;    /**< Received error packets. */
+    BAL_INTERFACE_STAT_ID_RX_UNKNOWN_PROTOS                  = 6;    /**< Received unknown-proto packets. */
+    BAL_INTERFACE_STAT_ID_TX_BYTES                           = 7;    /**< Transmitted bytes. */
+    BAL_INTERFACE_STAT_ID_TX_PACKETS                         = 8;    /**< Transmitted packets. */
+    BAL_INTERFACE_STAT_ID_TX_UCAST_PACKETS                   = 9;    /**< Transmitted unicast packets. */
+    BAL_INTERFACE_STAT_ID_TX_MCAST_PACKETS                   = 10;   /**< Transmitted multicast packets. */
+    BAL_INTERFACE_STAT_ID_TX_BCAST_PACKETS                   = 11;   /**< Transmitted broadcast packets. */
+    BAL_INTERFACE_STAT_ID_TX_ERROR_PACKETS                   = 12;   /**< Transmitted error packets. */
+    BAL_INTERFACE_STAT_ID_RX_CRC_ERRORS                      = 13;   /**< Received packets with CRC error. */
+    BAL_INTERFACE_STAT_ID_BIP_ERRORS                         = 14;   /**< Received bip errors (bip8 for gpon, bip32 for xgpon). */
 }
 
-/** Identifiers for all properties contained in the packet_cfg group. 
+/** Identifiers for all properties contained in the packet_bearer_channel_rx
+ * group.
+ */
+enum BalPacketBearerChannelRxId
+{
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_ID                  = 0;    /**< Flow Id. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_TYPE                = 1;    /**< Flow Type. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_INTF_ID                  = 2;    /**< Interface ID. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_INTF_TYPE                = 3;    /**< Interface Type. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_SVC_PORT                 = 4;    /**< Service Port. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_COOKIE              = 5;    /**< Flow Cookie. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_PKT                      = 6;    /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_cfg group.
  */
 enum BalPacketCfgId
 {
@@ -183,20 +263,21 @@
     BAL_PACKET_CFG_ID_PKT                    = 6;            /**< Packet Data. */
 }
 
-/** Identifiers for all properties contained in the packet_ind group. 
+/** Identifiers for all properties contained in the packet_ieee_oam_channel_rx group.
  */
-enum BalPacketIndId
+enum BalPacketIeeeOamChannelRxId
 {
-    BAL_PACKET_IND_ID_FLOW_ID                = 0;            /**< Flow Id. */
-    BAL_PACKET_IND_ID_FLOW_TYPE              = 1;            /**< Flow Type. */
-    BAL_PACKET_IND_ID_INTF_ID                = 2;            /**< Interface ID. */
-    BAL_PACKET_IND_ID_INTF_TYPE              = 3;            /**< Interface Type. */
-    BAL_PACKET_IND_ID_SVC_PORT               = 4;            /**< Service Port. */
-    BAL_PACKET_IND_ID_FLOW_COOKIE            = 5;            /**< Flow Cookie. */
-    BAL_PACKET_IND_ID_PKT                    = 6;            /**< Packet Data. */
+    BAL_PACKET_IEEE_OAM_CHANNEL_RX_ID_PKT                    = 0;    /**< Packet Data. */
 }
 
-/** Identifiers for all properties contained in the packet_key group. 
+/** Identifiers for all properties contained in the packet_itu_omci_channel_rx group.
+ */
+enum BalPacketItuOmciChannelRxId
+{
+    BAL_PACKET_ITU_OMCI_CHANNEL_RX_ID_PKT                    = 0;    /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_key group.
  */
 enum BalPacketKeyId
 {
@@ -204,8 +285,8 @@
     BAL_PACKET_KEY_ID_PACKET_SEND_DEST       = 1;            /**< Packet destination. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_cfg 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_cfg
+ * group.
  */
 enum BalSubscriberTerminalCfgId
 {
@@ -220,26 +301,38 @@
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST  = 9;    /**< svc_port_id list. */
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST  = 10;   /**< agg_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_SUB_TERM_RATE     = 11;   /**< sub_term_rate. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_ind 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_dgi
+ * group.
+ */
+enum BalSubscriberTerminalDgiId
+{
+    BAL_SUBSCRIBER_TERMINAL_DGI_ID_DGI_STATUS                = 0;    /**< dgi_status. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_ind
+ * group.
  */
 enum BalSubscriberTerminalIndId
 {
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE       = 0;    /**< Administrative state. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS       = 1;    /**< Operational status. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER     = 2;    /**< Serial number. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD          = 3;    /**< Password. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID   = 4;    /**< Registration id. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID       = 5;    /**< Service port ID. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS       = 6;    /**< MAC address. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM             = 7;    /**< Downstream scheduler and shaper. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE               = 0;    /**< Administrative state. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS               = 1;    /**< Operational status. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER             = 2;    /**< Serial number. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD                  = 3;    /**< Password. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID           = 4;    /**< Registration id. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID               = 5;    /**< Service port ID. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS               = 6;    /**< MAC address. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM                     = 7;    /**< Downstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM                     = 8;    /**< Upstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID_LIST          = 9;    /**< svc_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_AGG_PORT_ID_LIST          = 10;   /**< agg_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SUB_TERM_RATE             = 11;   /**< sub_term_rate. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_key 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_key
+ * group.
  */
 enum BalSubscriberTerminalKeyId
 {
@@ -247,8 +340,18 @@
     BAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID           = 1;    /**< intf_id. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_stat 
- * group. 
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_oper_status_change group.
+ */
+enum BalSubscriberTerminalOperStatusChangeId
+{
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS= 0;    /**< current oper status. */
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS= 1;    /**< old oper status. */
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_ADMIN_STATE    = 2;    /**< current admin state. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_stat
+ * group.
  */
 enum BalSubscriberTerminalStatId
 {
@@ -258,7 +361,23 @@
     BAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES         = 3;    /**< Transmitted bytes. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_cfg group. 
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_sub_term_alarm group.
+ */
+enum BalSubscriberTerminalSubTermAlarmId
+{
+    BCMBAL_SUBSCRIBER_TERMINAL_SUB_TERM_ALARM_ID_ALARM              = 0;    /**< Alarm. */
+}
+
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_sub_term_disc group.
+ */
+enum BalSubscriberTerminalSubTermDiscId
+{
+    BCMBAL_SUBSCRIBER_TERMINAL_SUB_TERM_DISC_ID_SERIAL_NUMBER       = 0;    /**< Serial number. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_cfg group.
  */
 enum BalTmQueueCfgId
 {
@@ -270,14 +389,19 @@
     BAL_TM_QUEUE_CFG_ID_REF_COUNT                    = 5;    /**< ref_count. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_ind group. 
+/** Identifiers for all properties contained in the tm_queue_ind group.
  */
 enum BalTmQueueIndId
 {
-    BAL_TM_QUEUE_IND_ID_RET                          = 0;    /**< ret. */
+    BAL_TM_QUEUE_IND_ID_PRIORITY                     = 0;    /**< priority. */
+    BAL_TM_QUEUE_IND_ID_WEIGHT                       = 1;    /**< weight. */
+    BAL_TM_QUEUE_IND_ID_RATE                         = 2;    /**< rate. */
+    BAL_TM_QUEUE_IND_ID_BAC                          = 3;    /**< bac. */
+    BAL_TM_QUEUE_IND_ID_CREATE_MODE                  = 4;    /**< create_mode. */
+    BAL_TM_QUEUE_IND_ID_REF_COUNT                    = 5;    /**< ref_count. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_key group. 
+/** Identifiers for all properties contained in the tm_queue_key group.
  */
 enum BalTmQueueKeyId
 {
@@ -286,7 +410,7 @@
     BAL_TM_QUEUE_KEY_ID_ID                           = 2;    /**< id. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_stat group. 
+/** Identifiers for all properties contained in the tm_queue_stat group.
  */
 enum BalTmQueueStatId
 {
@@ -296,30 +420,41 @@
     BAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED             = 3;    /**< bytes_discarded. */
 }
 
-/** Identifiers for all properties contained in the tmSched_cfg group. 
+/** Identifiers for all properties contained in the tm_sched_cfg group.
  */
 enum BalTmSchedCfgId
 {
-    BAL_TM_SCHED_CFG_ID_OWNER                        = 0;    /**< owner. */
-    BAL_TM_SCHED_CFG_ID_SCHED_TYPE                   = 1;    /**< type. */
-    BAL_TM_SCHED_CFG_ID_SCHED_PARENT                 = 2;    /**< parent. */
-    BAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE             = 3;    /**< child_type. */
-    BAL_TM_SCHED_CFG_ID_RATE                         = 4;    /**< rate. */
-    BAL_TM_SCHED_CFG_ID_TCONT_SLA                    = 5;    /**< tcont_sla. */
-    BAL_TM_SCHED_CFG_ID_CREATION_MODE                = 6;    /**< creation_mode. */
-    BAL_TM_SCHED_CFG_ID_QUEUES                       = 7;    /**< queues. */
-    BAL_TM_SCHED_CFG_ID_SUB_SCHEDS                   = 8;    /**< sub_scheds. */
-    BAL_TM_SCHED_CFG_ID_NUM_PRIORITIES               = 9;    /**< num_priorities. */
+    BAL_TM_SCHED_CFG_ID_OWNER                                    = 0;    /**< owner. */
+    BAL_TM_SCHED_CFG_ID_SCHED_TYPE                               = 1;    /**< type. */
+    BAL_TM_SCHED_CFG_ID_SCHED_PARENT                             = 2;    /**< parent. */
+    BAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE                         = 3;    /**< child_type. */
+    BAL_TM_SCHED_CFG_ID_NUM_PRIORITIES                           = 4;    /**< num_priorities. */
+    BAL_TM_SCHED_CFG_ID_RATE                                     = 5;    /**< rate. */
+    BAL_TM_SCHED_CFG_ID_EXT_ITU_DBA                              = 6;    /**< extended itu dba. */
+    BAL_TM_SCHED_CFG_ID_EXT_EPON_DBA                             = 7;    /**< extended epon dba. */
+    BAL_TM_SCHED_CFG_ID_CREATION_MODE                            = 8;    /**< creation_mode. */
+    BAL_TM_SCHED_CFG_ID_QUEUES                                   = 9;    /**< queues. */
+    BAL_TM_SCHED_CFG_ID_SUB_SCHEDS                               = 10;   /**< sub_scheds. */
 }
 
-/** Identifiers for all properties contained in the tm_sched_ind group. 
+/** Identifiers for all properties contained in the tm_sched_ind group.
  */
 enum BalTmSchedIndId
 {
-    BAL_TM_SCHED_IND_ID_RET                          = 0;    /**< ret. */
+    BAL_TM_SCHED_IND_ID_OWNER                                    = 0;    /**< owner. */
+    BAL_TM_SCHED_IND_ID_SCHED_TYPE                               = 1;    /**< type. */
+    BAL_TM_SCHED_IND_ID_SCHED_PARENT                             = 2;    /**< parent. */
+    BAL_TM_SCHED_IND_ID_SCHED_CHILD_TYPE                         = 3;    /**< child_type. */
+    BAL_TM_SCHED_IND_ID_NUM_PRIORITIES                           = 4;    /**< num_priorities. */
+    BAL_TM_SCHED_IND_ID_RATE                                     = 5;    /**< rate. */
+    BAL_TM_SCHED_IND_ID_EXT_ITU_DBA                              = 6;    /**< extended itu dba. */
+    BAL_TM_SCHED_IND_ID_EXT_EPON_DBA                             = 7;    /**< extended epon dba. */
+    BAL_TM_SCHED_IND_ID_CREATION_MODE                            = 8;    /**< creation_mode. */
+    BAL_TM_SCHED_IND_ID_QUEUES                                   = 9;    /**< queues. */
+    BAL_TM_SCHED_IND_ID_SUB_SCHEDS                               = 10;   /**< sub_scheds. */
 }
 
-/** Identifiers for all properties contained in the tm_sched_key group. 
+/** Identifiers for all properties contained in the tm_sched_key group.
  */
 enum BalTmSchedKeyId
 {
@@ -346,78 +481,106 @@
  */
 enum BalObjGroupId
 {
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_KEY             = 0;    /**< BAL Access Terminal - key */
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_CFG             = 1;    /**< BAL Access Terminal - cfg */
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_IND             = 2;    /**< BAL Access Terminal - Access Terminal Indication */
-    BAL_OBJ_GROUP_ID_FLOW_KEY                        = 3;    /**< BAL Flow - key */
-    BAL_OBJ_GROUP_ID_FLOW_CFG                        = 4;    /**< BAL Flow - cfg */
-    BAL_OBJ_GROUP_ID_FLOW_STAT                       = 5;    /**< BAL Flow - stat */
-    BAL_OBJ_GROUP_ID_FLOW_IND                        = 6;    /**< BAL Flow - Flow Indication */
-    BAL_OBJ_GROUP_ID_GROUP_KEY                       = 7;    /**< BAL Group - key */
-    BAL_OBJ_GROUP_ID_GROUP_CFG                       = 8;    /**< BAL Group - cfg */
-    BAL_OBJ_GROUP_ID_INTERFACE_KEY                   = 9;    /**< BAL Interface - key */
-    BAL_OBJ_GROUP_ID_INTERFACE_CFG                   = 10;   /**< BAL Interface - cfg */
-    BAL_OBJ_GROUP_ID_INTERFACE_STAT                  = 11;   /**< BAL Interface - stat */
-    BAL_OBJ_GROUP_ID_INTERFACE_IND                   = 12;   /**< BAL Interface - Interface Indication */
-    BAL_OBJ_GROUP_ID_PACKET_KEY                      = 13;   /**< packet - key */
-    BAL_OBJ_GROUP_ID_PACKET_CFG                      = 14;   /**< packet - cfg */
-    BAL_OBJ_GROUP_ID_PACKET_IND                      = 15;   /**< packet - Packet indication */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_KEY         = 16;   /**< BAL Subscriber Terminal - key */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_CFG         = 17;   /**< BAL Subscriber Terminal - cfg */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_STAT        = 18;   /**< BAL Subscriber Terminal - stat */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_IND         = 19;   /**< BAL Subscriber Terminal - Subscriber Terminal Indication */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_KEY                    = 20;   /**< tm_queue - key */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_CFG                    = 21;   /**< tm_queue - cfg */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_STAT                   = 22;   /**< tm_queue - stat */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_IND                    = 23;   /**< tm_queue - Tm Queue Indication */
-    BAL_OBJ_GROUP_ID_TM_SCHED_KEY                    = 24;   /**< tm_sched - key */
-    BAL_OBJ_GROUP_ID_TM_SCHED_CFG                    = 25;   /**< tm_sched - cfg */
-    BAL_OBJ_GROUP_ID_TM_SCHED_IND                    = 26;   /**< tm_sched - Tm Sched Indication */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_KEY                         = 0;    /**< BAL Access Terminal - key */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_CFG                         = 1;    /**< BAL Access Terminal - cfg */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_IND                         = 2;    /**< BAL Access Terminal - Access Terminal Indication */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_OPER_STATUS_CHANGE          = 3;    /**< BAL Access Terminal - Change of operational status */
+    BAL_OBJ_GROUP_ID_FLOW_KEY                                    = 4;    /**< BAL Flow - key */
+    BAL_OBJ_GROUP_ID_FLOW_CFG                                    = 5;    /**< BAL Flow - cfg */
+    BAL_OBJ_GROUP_ID_FLOW_STAT                                   = 6;    /**< BAL Flow - stat */
+    BAL_OBJ_GROUP_ID_FLOW_IND                                    = 7;    /**< BAL Flow - Flow Indication */
+    BAL_OBJ_GROUP_ID_FLOW_OPER_STATUS_CHANGE                     = 8;    /**< BAL Flow - Change of operational status */
+    BAL_OBJ_GROUP_ID_GROUP_KEY                                   = 9;    /**< BAL Group - key */
+    BAL_OBJ_GROUP_ID_GROUP_CFG                                   = 10;   /**< BAL Group - cfg */
+    BAL_OBJ_GROUP_ID_GROUP_IND                                   = 11;   /**< BAL Group - Group indication */
+    BAL_OBJ_GROUP_ID_INTERFACE_KEY                               = 12;   /**< BAL Interface - key */
+    BAL_OBJ_GROUP_ID_INTERFACE_CFG                               = 13;   /**< BAL Interface - cfg */
+    BAL_OBJ_GROUP_ID_INTERFACE_STAT                              = 14;   /**< BAL Interface - stat */
+    BAL_OBJ_GROUP_ID_INTERFACE_IND                               = 15;   /**< BAL Interface - Interface Indication */
+    BAL_OBJ_GROUP_ID_INTERFACE_LOS                               = 16;   /**< BAL Interface - LOS */
+    BAL_OBJ_GROUP_ID_INTERFACE_OPER_STATUS_CHANGE                = 17;   /**< BAL Interface - Change of operational status */
+    BAL_OBJ_GROUP_ID_PACKET_KEY                                  = 18;   /**< packet - key */
+    BAL_OBJ_GROUP_ID_PACKET_CFG                                  = 19;   /**< packet - cfg */
+    BAL_OBJ_GROUP_ID_PACKET_BEARER_CHANNEL_RX                    = 20;   /**< packet - Bearer channel rx packet indication */
+    BAL_OBJ_GROUP_ID_PACKET_IEEE_OAM_CHANNEL_RX                  = 21;   /**< packet - IEEE OAM channel rx packet indication */
+    BAL_OBJ_GROUP_ID_PACKET_ITU_OMCI_CHANNEL_RX                  = 22;   /**< packet - ITU OMCI channel rx packet indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_KEY                     = 23;   /**< BAL Subscriber Terminal - key */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_CFG                     = 24;   /**< BAL Subscriber Terminal - cfg */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_STAT                    = 25;   /**< BAL Subscriber Terminal - stat */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_DGI                     = 26;   /**< BAL Subscriber Terminal - Receive Dying-Gasp of subscriber terminal */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_IND                     = 27;   /**< BAL Subscriber Terminal - Subscriber Terminal Indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE      = 28;   /**< BAL Subscriber Terminal - Change of operational status */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_SUB_TERM_ALARM          = 29;   /**< BAL Subscriber Terminal - Subscriber Terminal Alarm Indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_SUB_TERM_DISC           = 30;   /**< BAL Subscriber Terminal - Subscriber Terminal Discovery Indication */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_KEY                                = 31;   /**< tm_queue - key */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_CFG                                = 32;   /**< tm_queue - cfg */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_STAT                               = 33;   /**< tm_queue - stat */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_IND                                = 34;   /**< tm_queue - tm queue indication */
+    BAL_OBJ_GROUP_ID_TM_SCHED_KEY                                = 35;   /**< tm_sched - key */
+    BAL_OBJ_GROUP_ID_TM_SCHED_CFG                                = 36;   /**< tm_sched - cfg */
+    BAL_OBJ_GROUP_ID_TM_SCHED_IND                                = 37;   /**< tm_sched - Tm Sched Indication */
 }
 
-/** List of all access_terminal groups of type auto. 
+/** List of all access_terminal groups of type auto.
  */
 enum BalAccessTerminalAutoId
 {
     BAL_ACCESS_TERMINAL_AUTO_ID_IND                  = 0;    /**< Access Terminal Indication. */
+    BAL_ACCESS_TERMINAL_AUTO_ID_OPER_STATUS_CHANGE   = 1;    /**< Change of operational status. */
 }
 
-/** List of all flow groups of type auto. 
+/** List of all flow groups of type auto.
  */
 enum BalFlowAutoId
 {
     BAL_FLOW_AUTO_ID_IND                             = 0;    /**< Flow Indication. */
+    BAL_FLOW_AUTO_ID_OPER_STATUS_CHANGE              = 1;    /**< Change of operational status. */
 }
 
-/** List of all interface groups of type auto. 
+/** List of all group groups of type auto.
+ */
+enum BalGroupAutoId
+{
+    BAL_GROUP_AUTO_ID_IND                        = 0;    /**< Group indication. */
+}
+
+/** List of all interface groups of type auto.
  */
 enum BalInterfaceAutoId
 {
-    BAL_INTERFACE_AUTO_ID_IND                        = 0;    /**< Interface Indication. */
+    BAL_INTERFACE_AUTO_ID_IND                    = 0;    /**< Interface Indication. */
+    BAL_INTERFACE_AUTO_ID_LOS                    = 1;    /**< LOS. */
+    BAL_INTERFACE_AUTO_ID_OPER_STATUS_CHANGE     = 2;    /**< Change of operational status. */
 }
 
-/** List of all packet groups of type auto. 
+/** List of all packet groups of type auto.
  */
 enum BalPacketAutoId
 {
-    BAL_PACKET_AUTO_ID_IND                           = 0;    /**< Packet indication. */
+    BAL_PACKET_AUTO_ID_BEARER_CHANNEL_RX         = 0;    /**< Bearer channel rx packet indication. */
+    BAL_PACKET_AUTO_ID_IEEE_OAM_CHANNEL_RX       = 1;    /**< IEEE OAM channel rx packet indication. */
+    BAL_PACKET_AUTO_ID_ITU_OMCI_CHANNEL_RX       = 2;    /**< ITU OMCI channel rx packet indication. */
 }
 
-/** List of all subscriber_terminal groups of type auto. 
+/** List of all subscriber_terminal groups of type auto.
  */
 enum BalSubscriberTerminalAutoId
 {
-    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_IND              = 0;    /**< Subscriber Terminal Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_DGI                 = 0;    /**< Receive Dying-Gasp of subscriber terminal. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_IND                 = 1;    /**< Subscriber Terminal Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_OPER_STATUS_CHANGE  = 2;    /**< Change of operational status. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_SUB_TERM_ALARM      = 3;    /**< Subscriber Terminal Alarm Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_SUB_TERM_DISC       = 4;    /**< Subscriber Terminal Discovery Indication. */
 }
 
-/** List of all tm_queue groups of type auto. 
+/** List of all tm_queue groups of type auto.
  */
 enum BalTmQueueAutoId
 {
     BAL_TM_QUEUE_AUTO_ID_IND                         = 0;    /**< Tm Queue Indication. */
 }
 
-/** List of all tm_sched groups of type auto. 
+/** List of all tm_sched groups of type auto.
  */
 enum BalTmSchedAutoId
 {
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
index 1a6da61..a56ff04 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
@@ -51,6 +51,15 @@
     BAL_ACTION_CMD_ID_TRAP_TO_HOST       = 0x1000;   /**< Not a valid action for a group object member */
 }
 
+/** alarm status.
+ */
+enum BalAlarmStatus
+{
+    BAL_ALARM_STATUS_OFF                 = 0;        /**< alarm status is off */
+    BAL_ALARM_STATUS_ON                  = 1;        /**< alarm status is on */
+    BAL_ALARM_STATUS_NO__CHANGE          = 2;        /**< alarm status should not be changed */
+}
+
 /** classifier ID.
  */
 enum BalClassifierId {
@@ -96,7 +105,9 @@
     BAL_DEST_TYPE_INVALID                = 0;
     BAL_DEST_TYPE_NNI                    = 1;        /**< for packets being sent to the NNI */
     BAL_DEST_TYPE_SUB_TERM               = 2;        /**< for packets being sent to a subscriber terminal */
-    BAL_DEST_TYPE_HOST                   = 3;        /**<  for packet indications received from NNI or SUB_TERM and being sent to the host */
+    BAL_DEST_TYPE_SVC_PORT               = 3;        /**< for packet being sent to the pon service port */
+    BAL_DEST_TYPE_ITU_OMCI_CHANNEL       = 4;        /**< for itu omci channel packets */
+    BAL_DEST_TYPE_IEEE_OAM_CHANNEL       = 5;        /**< for ieee oam channel packets */
 }
 
 /** Downstrean action for unknown packets.
@@ -105,7 +116,47 @@
     BAL_DS_MISS_MODE_DISCARD             = 0;        /**< Discard. */
     BAL_DS_MISS_MODE_BROADCAST           = 1;        /**< Broadcast. */
     BAL_DS_MISS_MODE_VID                 = 2;        /**< Vid. */
-    BAL_DS_MISS_MODE__NUM_OF             = 3;        /**< Number of enum entries, not an entry itself. */
+}
+/** extended epon dba ID.
+ */
+enum BalExtendedEponDbaId
+{
+    BAL_EXTENDED_EPON_DBA_ID_NONE                    = 0;
+    BAL_EXTENDED_EPON_DBA_ID_POLLING_INTERVAL_US     = 0x0001;   /**< The amount of time between when this LLID last reported upstream data and when it will next be polled (approximate: rounded down to the nearest 65.536 us). */
+    BAL_EXTENDED_EPON_DBA_ID_GRANT_THRESHOLD_TQ      = 0x0002;   /**< Used to determine the maximum grant size that will be issued to this LLID (in TQ; rounded up to the nearest 128TQ; 1TQ = 16ns = 2Bytes@1G or 20Bytes@10G). */
+    BAL_EXTENDED_EPON_DBA_ID_CIR_PRIORITY            = 0x0004;   /**< The priority of the CIR scheduling element. */
+    BAL_EXTENDED_EPON_DBA_ID_CIR_WEIGHT_TQ           = 0x0008;   /**< The weight of the CIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    BAL_EXTENDED_EPON_DBA_ID_PIR_PRIORITY            = 0x0010;   /**< The priority of the PIR scheduling element. */
+    BAL_EXTENDED_EPON_DBA_ID_PIR_WEIGHT_TQ           = 0x0020;   /**< The weight of the PIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    BAL_EXTENDED_EPON_DBA_ID_TDM_GRANT_SIZE_TQ       = 0x0040;   /**< Size of TDM grants (in TQ). */
+    BAL_EXTENDED_EPON_DBA_ID_TDM_GRANT_INTERVAL_US   = 0x0080;   /**< Interval between TDM grants (in us). */
+    BAL_EXTENDED_EPON_DBA_ID_ALL                     = 0x00FF;    /**< All fields */
+}
+
+/** Polling Interval.
+ */
+enum BalPollingInterval
+{
+    BAL_POLLING_INTERVAL_POLLING_DISABLED            = 0;        /**< No polling gates will be sent to this LLID. */
+    BAL_POLLING_INTERVAL_US_500                      = 500;      /**< 500 us. */
+    BAL_POLLING_INTERVAL_MS_1                        = 1000;     /**< 1 ms. */
+    BAL_POLLING_INTERVAL_MS_2                        = 2000;     /**< 2 ms. */
+    BAL_POLLING_INTERVAL_MS_4                        = 4000;     /**< 4 ms. */
+    BAL_POLLING_INTERVAL_MS_8                        = 8000;     /**< 8 ms. */
+    BAL_POLLING_INTERVAL_MS_16                       = 16000;     /**< 16 ms. */
+}
+
+/** extended itu dba ID.
+ */
+enum BalExtendedItuDbaId
+{
+    BAL_EXTENDED_ITU_DBA_ID_NONE                     = 0;
+    BAL_EXTENDED_ITU_DBA_ID_EXTRA_BW_ELIG            = 0x0001;   /**< Extra BW eligibility type */
+    BAL_EXTENDED_ITU_DBA_ID_NRT_CBR                  = 0x0002;   /**< NRT CBR */
+    BAL_EXTENDED_ITU_DBA_ID_RT_CBR                   = 0x0004;   /**< RT_CBR */
+    BAL_EXTENDED_ITU_DBA_ID_RT_PROFILE               = 0x0008;   /**< RT Profile */
+    BAL_EXTENDED_ITU_DBA_ID_NRT_PROFILE              = 0x0010;   /**< NRT Profile */
+    BAL_EXTENDED_ITU_DBA_ID_ALL                      = 0x001F;   /**< All fields */
 }
 
 /** Extra BW Eligibility Type
@@ -154,7 +205,8 @@
     BAL_INTF_TYPE_INVALID                    = 0;    /**< INVALID.*/
     BAL_INTF_TYPE_NNI                        = 1;    /**< NNI Interface. */
     BAL_INTF_TYPE_PON                        = 2;    /**< POIN Interface. */
-    BAL_INTF_TYPE__NUM_OF                    = 3;    /**< Number of enum entries, not an entry itself. */
+    BAL_INTF_TYPE_EPON_1G_PATH               = 3;    /**< EPON 1G Path. */
+    BAL_INTF_TYPE_EPON_10G_PATH              = 4;    /**< EPON 10G Path. */
 }
 
 /** Interworking Function Mode.
@@ -162,7 +214,25 @@
 enum BalIwfMode {
     BAL_IWF_MODE_DIRECT_MAPPING              = 0;    /**< Direct mapping. */
     BAL_IWF_MODE_PER_FLOW                    = 1;    /**< Per flow . */
-    BAL_IWF_MODE__NUM_OF                     = 2;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** The PON family
+ */
+enum BalPonFamily
+{
+    BAL_PON_FAMILY_GPON                      = 0;    /**< GPON family. */
+    BAL_PON_FAMILY_EPON                      = 1;    /**< EPON family. */
+    BAL_PON_FAMILY_INVALID                   = 2;    /**< INVALID . */
+}
+
+/** The PON sub-family
+ */
+enum BalPonSubFamily
+{
+    BAL_PON_SUB_FAMILY_GPON                  = 0;    /**< GPON. */
+    BAL_PON_SUB_FAMILY_XGPON                 = 1;    /**< XGPON. */
+    BAL_PON_SUB_FAMILY_EPON                  = 2;    /**< EPON. */
+    BAL_PON_SUB_FAMILY_INVALID               = 3;    /**< INVALID. */
 }
 
 /** SLA ID.
@@ -195,6 +265,24 @@
     BAL_STATUS_UNKNOWN                       = 6;        /**< Oper status unknown */
 }
 
+/** sub_term_rate.
+ */
+enum BalSubTermRate
+{
+    BAL_SUB_TERM_RATE_NONE                           = 0;        /**< none. */
+    BAL_SUB_TERM_RATE_RATE_10_G                      = 1;        /**< rate_10_g. */
+    BAL_SUB_TERM_RATE_RATE_2_5_G                     = 2;        /**< rate_2_5_g. */
+}
+
+/** The type of release version
+ */
+enum BalVersionType
+{
+    BAL_VERSION_TYPE_UNKNOWN                         = 0;    /**< illegal */
+    BAL_VERSION_TYPE_RELEASE                         = 1;    /**< released version */
+    BAL_VERSION_TYPE_DEVELOPMENT                     = 2;    /**< debug version */
+}
+
 /** Buffer Admission Control Type
  */
 enum BalTmBacType {
@@ -202,7 +290,6 @@
     BAL_TM_BAC_TYPE_WTAILDROP                = 1;        /**< Weighted taildrop */
     BAL_TM_BAC_TYPE_RED                      = 2;        /**< Random Early Discard */
     BAL_TM_BAC_TYPE_WRED                     = 3;        /**< Weighted Random Early Discard */
-    BAL_TM_BAC_TYPE__NUM_OF                  = 4;        /**< Number of enum entries, not an entry itself. */
 }
 
 /** TM Creation Mode
@@ -210,7 +297,6 @@
 enum BalTmCreationMode {
     BAL_TM_CREATION_MODE_MANUAL              = 0;            /**< tm object created manually */
     BAL_TM_CREATION_MODE_AUTO                = 1;            /**< tm object created automatically */
-    BAL_TM_CREATION_MODE__NUM_OF             = 2;            /**< Number of enum entries, not an entry itself. */
 }
 
 /** Scheduling Level for the Children TM
@@ -218,7 +304,6 @@
 enum BalTmSchedChildType {
     BAL_TM_SCHED_CHILD_TYPE_QUEUE            = 0;            /**< Queue-level scheduler */
     BAL_TM_SCHED_CHILD_TYPE_SCHED            = 1;            /**< Scheduler-level scheduler */
-    BAL_TM_SCHED_CHILD_TYPE__NUM_OF          = 2;            /**< Number of enum entries, not an entry itself. */
 }
 
 /** Traffic Direction
@@ -286,19 +371,6 @@
     BAL_TM_SHAPING_ID_ALL                        = 0x0007;   /**< All fields */
 }
 
-/** TmTcontSla ID.
- */
-enum BalTmTcontSlaId
-{
-    BAL_TM_TCONT_SLA_ID_NONE                     = 0;
-    BAL_TM_TCONT_SLA_ID_EXTRA_BW_ELIG            = 0x0001;   /**< Extra BW eligibility type */
-    BAL_TM_TCONT_SLA_ID_NRT_CBR                  = 0x0002;   /**< NRT CBR */
-    BAL_TM_TCONT_SLA_ID_RT_CBR                   = 0x0004;   /**< RT_CBR */
-    BAL_TM_TCONT_SLA_ID_RT_PROFILE               = 0x0008;   /**< RT Profile */
-    BAL_TM_TCONT_SLA_ID_NRT_PROFILE              = 0x0010;   /**< NRT Profile */
-    BAL_TM_TCONT_SLA_ID_ALL                      = 0x001F;   /**< All fields */
-}
-
 /** Transceiver types
  */
 enum BalTrxType
@@ -311,7 +383,7 @@
     BAL_TRX_TYPE_XGPON_LTH_7222_PC               = 5;        /**< xgpon_lth_7222_pc. */
     BAL_TRX_TYPE_XGPON_LTH_7226_PC               = 6;        /**< xgpon_lth_7226_pc. */
     BAL_TRX_TYPE_XGPON_LTH_5302_PC               = 7;        /**< xgpon_lth_5302_pc. */
-    BAL_TRX_TYPE__NUM_OF                         = 8;        /**< Number of enum entries, not an entry itself. */
+    BAL_TRX_TYPE_XGPON_LTH_7226_A_PC_PLUS        = 8;        /**< xgpon_lth_7226_a_pc_plus. */
 }
 
 /** action.
@@ -328,13 +400,6 @@
     uint32 i_tpid = 8;                    /**< Inner tpid. */
 }
 
-/** Variable-length list of aggregationPortId.
- */
-message BalAggregationPortIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
 /** classifier.
  */
 message BalClassifier
@@ -369,25 +434,67 @@
     uint32 int_id = 3;            /**< Interface ID. */
 }
 
+message BalDestSvcPort
+{
+    uint32 svc_port_id   = 1; /**< GEM ID or LLID.*/
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
+message BalItuOmciChannel
+{
+    uint32 sub_term_id   = 1; /**< Subscriber terminal*/
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
+message BalIeeeOamChannel
+{
+    bytes mac_address    = 1; /**< MAC address for this link. */
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
 message BalDest
 {
     BalDestType type = 1;              /**< packet destination type. */
     oneof u {
         BalDestNni nni = 2;
         BalDestSubTerm sub_term = 3;
+        BalDestSvcPort svc_port = 4;
+        BalItuOmciChannel itu_omci_channel = 5;
+        BalIeeeOamChannel ieee_oam_channel = 6;
     }
 }
 
-/** Variable-length list of flowId.
+/** extended epon dba.
  */
-message BalFlowIdList
+message BalExtendedEponDba
 {
-    repeated uint32 val = 1;    /**< List contents. */
+    BalExtendedEponDbaId presence_mask     = 1;      /**< Presence Mask. */
+    BalPollingInterval polling_interval_us = 2;    /**< The amount of time between when this LLID last reported upstream data and when it will next be polled (approximate: rounded down to the nearest 65.536 us). */
+    uint32 grant_threshold_tq              = 3;          /**< Used to determine the maximum grant size that will be issued to this LLID (in TQ; rounded up to the nearest 128TQ; 1TQ = 16ns = 2Bytes@1G or 20Bytes@10G). */
+    uint32 cir_priority                    = 4;                   /**< The priority of the CIR scheduling element. */
+    uint32 cir_weight_tq                   = 5;       /**< The weight of the CIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    uint32 pir_priority                     = 6;                   /**< The priority of the PIR scheduling element. */
+    uint32 pir_weight_tq                   = 7;       /**< The weight of the PIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    uint32 tdm_grant_size_tq               = 8;   /**< Size of TDM grants (in TQ). */
+    uint32 tdm_grant_interval_us           = 9;         /**< Interval between TDM grants (in us). */
 }
 
+/** Extended itu dba parameters
+ */
+message BalExtendedItuDba
+{
+    BalExtendedItuDbaId presence_mask      = 1; /**< Presence Mask. */
+    BalExtraBwEligibilityType extra_bw_elig= 2; /**< Extra BW eligibility type */
+    uint32 nrt_cbr                        = 3; /**< NRT CBR */
+    uint32 rt_cbr                         = 4; /**< RT_CBR */
+    uint32 rt_profile                     = 5; /**< RT Profile */
+    uint32  nrt_profile                    = 6;/**< NRT Profile */
+}
+
+
 /** Queue Reference
  */
-message BalTmQueue_ref
+message BalTmQueueRef
 {
     uint32 sched_id = 1;    /**< Scheduler (Tmsched) ID */
     uint32 queue_id = 2;    /**< Queue ID */
@@ -398,9 +505,9 @@
 message BalGroupMemberInfo
 {
     uint32 intf_id = 1;             /**< Access interface id for this member */
-    uint32 svc_port_id = 2; /**< The multicast "GEM" for this member */
+    uint32 svc_port_id = 2;         /**< GPON/XGPON - The multicast "GEM" for this member. EPON - The multicast link identifier. */ 
     BalAction action = 3;               /**< VLAN actions */
-    BalTmQueue_ref queue = 4;          /**< Egress queue */
+    BalTmQueueRef queue = 4;          /**< Egress queue */
 }
 
 /** Variable-length list of groupMemberInfo.
@@ -420,7 +527,7 @@
 
 /** Variable-length list of servicePortId.
  */
-message SvcPortIdList
+message BalIdList
 {
     repeated uint32 val = 1;    /**< List contents. */
 }
@@ -434,11 +541,26 @@
     uint32 max_rate = 3;              /**< The maximum rate for this flow, in kilobits per second (optional) */
 }
 
-/** Variable-length list of subId.
+/** Subscriber Terminal Alarms.
  */
-message SubTermIdList
+message BalSubscriberTerminalAlarms
 {
-    repeated uint32 val = 1; /**< List contents. */
+    BalAlarmStatus los           = 1;  /**< LOS. */
+    BalAlarmStatus lob           = 2;  /**< LOB. */
+    BalAlarmStatus lopc_miss     = 3;  /**< LOPC miss. */
+    BalAlarmStatus lopc_mic_error= 4;  /**< LOPC mic error. */
+}
+
+/** Software version information
+ */
+message BalSwVersion
+{
+    BalVersionType      version_type = 1;   /**< Release or debug version */
+    uint32 major_rev                 = 2;   /**< Major rev */
+    uint32 minor_rev                 = 3;   /**< Minor rev */
+    uint32 patch_rev                 = 4;   /**< Patch number */
+    uint32 om_version                = 5;   /**< BAL API Object Model version */
+    uint32 dev_point                 = 6;   /**< Development point - only valid for development versions, 0 otherwise */
 }
 
 /** Random Early Discard Configuration
@@ -477,20 +599,6 @@
     }
 }
 
-/** Variable-length list of TmQueueId.
- */
-message BalTmQueueIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
-/** Variable-length list of TmSchedId.
- */
-message BalTmSchedIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
 /** TM Scheduler Owner
  */
 message BalTmSchedOwnerInterface
@@ -552,21 +660,21 @@
 message BalTmShaping
 {
     BalTmShapingId presence_mask = 1; /**< Presence Mask. */
-    uint32 sbr = 2;                       /**< Sustained Bit Rate (kbps) */
-    uint32 pbr = 3;                       /**< Peak Bit Rate (kbps) */
-    uint32 burst = 4;                     /**< Max Burst Bytes at Peak Bit Rate */
+    uint32 cir                   = 2; /**< Committed Information Rate (kbps) */
+    uint32 pir                   = 3; /**< Peak Information Rate (kbps) */
+    uint32 burst                 = 4; /**< Max Burst Bytes at Peak Bit Rate */
 }
 
-/** ITU-PON Extended SLA Parameters
+/** BAL topology.
  */
-message BalTmTcontSla
+message BalTopology
 {
-    BalTmTcontSlaId presence_mask = 1;           /**< Presence Mask. */
-    BalExtraBwEligibilityType extra_bw_elig = 2; /**< Extra BW eligibility type */
-    uint32 nrt_cbr = 3;        /**< NRT CBR */
-    uint32 rt_cbr = 4;         /**< RT_CBR */
-    uint32 rt_profile = 5;     /**< RT Profile */
-    uint32 nrt_profile = 6;    /**< NRT Profile */
+    uint32 num_of_nni_ports        = 1; /**< The number of nni ports for the access_terminal */
+    uint32 num_of_pon_ports        = 2; /**< The number of pon ports for the access_terminal */
+    uint32 num_of_mac_devs         = 3; /**< The number of mac devices associated with this access_terminal */
+    uint32 num_of_pons_per_mac_dev = 4; /**< The number of pon ports per mac device in this access_terminal */
+    uint32 pon_family              = 5; /**< The PON family for the access_terminal */
+    uint32 pon_sub_family          = 6; /**< The PON sub-family for the access_terminal */
 }
 
 /** Structure definition for the "key" group of the "access_terminal" object.
@@ -600,6 +708,9 @@
     BalState admin_state = 1;   /**< Current administrative state */
     BalStatus oper_status = 2;  /**< Current operational status */
     BalIwfMode iwf_mode = 3;   /**< The interworking mode */
+    BalTopology topology = 4;       /**< Topology. */
+    BalSwVersion sw_version = 5;   /**< Software version information */
+
 }
 
 /** Transport message definition for "ind" group of "access_terminal" object.
@@ -611,6 +722,28 @@
     BalAccessTerminalIndData data = 3;   /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the
+ * "access_terminal" object.
+ *
+ * An indication of a change of operational status
+ */
+message BalAccessTerminalOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of
+ *  access_terminal object.
+ */
+message BalAccessTerminalOperStatusChange
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalAccessTerminalKey key = 2; /**< Object key. */
+    BalAccessTerminalOperStatusChangeData data = 3;    /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "flow" object.
  */
 message BalFlowKey
@@ -630,23 +763,23 @@
     uint32 sub_term_id = 5;              /**< The ID of the subsccriber terminal device */
     uint32 sub_term_uni_idx = 6;               /**< The index of the subsccriber terminal uni port the flow is related to */
     uint32 svc_port_id = 7;     /**< The ID of the service port (for GPON/XGPON - GEM ID) */
-    uint32 agg_port_id = 8; /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
-    bool resolve_mac = 9;                 /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
-    BalClassifier classifier = 10;           /**< The classifier for this flow */
-    BalAction action = 11;                   /**< The action associated with the flow */
-    BalSla sla = 12;             /**< SLA parameters for this flow */
-    uint64 cookie = 13;       /**< Application cookie */
-    uint32 priority = 14;          /**< Priority for this flow in case of multiple match. */
-    uint32 group_id = 15;   /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
-    BalTmQueue_ref queue = 16;  /**< Egress queue */
+    bool resolve_mac = 8;                 /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
+    BalClassifier classifier = 9;           /**< The classifier for this flow */
+    BalAction action = 10;                   /**< The action associated with the flow */
+    uint64 cookie = 11;       /**< Application cookie */
+    uint32 priority = 12;          /**< Priority for this flow in case of multiple match. */
+    uint32 group_id = 13;   /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
+    BalTmQueueRef queue = 14;  /**< Egress queue */
+    uint32 dba_tm_sched_id = 15; /**< A reference to an us tm_sched used for us dba for this flow */
 }
 
 /** Transport message definition for "cfg" group of "flow" object.
  */
 message BalFlowCfg
 {
-    BalFlowKey key = 1;        /**< Object key. */
-    BalFlowCfgData data = 2;  /**< All properties that must be set by the user. */
+    BalObj hdr = 1;            /**< Transport header. */
+    BalFlowKey key = 2;        /**< Object key. */
+    BalFlowCfgData data = 3;  /**< All properties that must be set by the user. */
 }
 
 /** Structure definition for the "stat" group of the "flow" object.
@@ -677,15 +810,17 @@
     uint32 access_int_id = 3;         /**< The ID of the subscriber side interface; i.e. PON */
     uint32 network_int_id = 4;        /**< The ID of the network side interface; i.e. NNI */
     uint32 sub_term_id = 5;           /**< The ID of the subsccriber terminal device */
-    uint32 svc_port_id = 6;           /**< The ID of the service port (for GPON/XGPON - GEM ID) */
-    uint32 agg_port_id = 7;           /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
+    uint32 sub_term_uni_idx = 6;           /**< The index of the subsccriber terminal uni port the flow is related to */
+    uint32 svc_port_id = 7;           /**< The ID of the service port (for GPON/XGPON - GEM ID) */
     bool resolve_mac = 8;         /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
-    uint32 base_tc_id = 9;            /**< The base index of the TC object(s) to be used for this flow */
-    BalClassifier classifier = 10;   /**< The classifier for this flow */
-    BalAction action = 11;           /**< The action associated with the flow */
-    BalSla sla = 12;                 /**< SLA parameters for this flow */
-    uint32 cookie = 13;                /**< Application cookie */
-    uint32 priority = 14;              /**< Priority for this flow in case of multiple match. */
+    BalClassifier classifier = 9;   /**< The classifier for this flow */
+    BalAction action = 10;           /**< The action associated with the flow */
+    uint32 cookie = 11;                /**< Application cookie */
+    uint32 priority = 12;              /**< Priority for this flow in case of multiple match. */
+    uint32 group_id = 13;           /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
+    BalTmQueueRef queue = 14;          /**< Egress queue */
+    uint32 dba_tm_sched_id = 15; /**< A reference to an us tm_sched used for us dba for this flow */
+
 }
 
 /** Transport message definition for "ind" group of "flow" object.
@@ -697,6 +832,31 @@
     BalFlowIndData data = 3;  /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the "flow"
+ * object.
+ *
+ * An indication of a change of operational status
+ */
+message BalFlowOperStatusChangeData
+{
+   BalStatus new_oper_status = 1;      /**< The current oper status */
+   BalStatus old_oper_status = 2;      /**< The previous oper status before this indication was reported */
+   BalState admin_state = 3;           /**< The current admin status */
+   uint32 svc_port_id = 4;               /**< The ID of the service port (for GPON/XGPON - GEM ID) */
+   uint32 dba_tm_sched_id = 5; /**< A reference to an us tm_sched used for us dba for this flow */
+   uint64 cookie = 6;               /**< Opaque application cookie associated with the flow (not interpreted by Maple) */
+}
+
+/** Transport message definition for "oper_status_change" group of "flow"
+ * object.
+ */
+message BalFlowOperStatusChange
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalFlowKey key = 2;    /**< Object key. */
+    BalFlowOperStatusChangeData data = 3;   /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "group" object.
  */
 message BalGroupKey
@@ -711,7 +871,7 @@
     BalGroupMemberCmd members_cmd = 1;        /**< Membership operation commands. */
     BalGroupMemberInfoList members = 2;  /**< The list of members associated with this group */
     uint64 cookie = 3;                       /**< Application cookie */
-    BalFlowIdList flows = 4;              /**< List of flows associated with this group */
+    BalIdList flows = 4;              /**< List of flows associated with this group */
     BalGroupOwner owner = 5;                   /**< Owner of the group. */
 }
 
@@ -723,6 +883,26 @@
     BalGroupCfgData data = 2; /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "ind" group of the "group" object.
+ */
+message BalGroupIndData
+{
+    BalGroupMemberCmd members_cmd = 1;        /**< Membership operation commands. */
+    BalGroupMemberInfoList members = 2;  /**< The list of members associated with this group */
+    uint64 cookie = 3;                       /**< Application cookie */
+    BalIdList flows = 4;              /**< List of flows associated with this group */
+    BalGroupOwner owner = 5;                   /**< Owner of the group. */
+}
+
+/** Transport message definition for "ind" group of "group" object.
+ */
+message BalGroupInd
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalGroupKey key = 2;       /**< Object key. */
+    BalGroupIndData data = 3; /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "interface" object.
  */
 message BalInterfaceKey
@@ -739,13 +919,13 @@
     BalStatus oper_status = 2;  /**< Operational status */
     uint32 min_data_agg_port_id = 3;    /**< The minimum agg_portId that is allowed in the system */
     uint32 min_data_svc_port_id = 4;        /**< The minimum svc_portId that is allowed in the system */
-    BalTrxType transceiver_type = 5;                   /**< The transceiver type used on an interface */
+    BalTrxType transceiver_type = 5;                   /**< The transceiver type used on an interface. N/A for EPON.*/
     BalDsMissMode ds_miss_mode = 6;                   /**< Defines the action to take for unknown downstream packets */
     uint32 mtu = 7;                   /**< The MTU for an interface */
     BalControl flow_control = 8;    /**< Flow control enable or disable */
     uint32 ds_tm = 9;       /**< Downstream scheduler and shaper */
     uint32 us_tm = 10;       /**< Upstream scheduler and shaper */
-    SubTermIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
+    BalIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
 }
 
 /** Transport message definition for "cfg" group of "interface" object.
@@ -760,10 +940,21 @@
  */
 message BalInterfaceStatData
 {
-    uint64 rx_packets = 1;    /**< Recieved packets. */
-    uint64 rx_bytes = 2;      /**< Received bytes. */
-    uint64 tx_packets = 3;    /**< Transmitted packets. */
-    uint64 tx_bytes = 4;      /**< Transmitted bytes. */
+    uint64 rx_bytes = 1;          /**< RFC 2233 */
+    uint64 rx_packets = 2;        /**< RFC 1213 ucast + none-ucast */
+    uint64 rx_ucast_packets = 3;  /**< RFC 2233 */
+    uint64 rx_mcast_packets = 4;  /**< RFC 2233 */
+    uint64 rx_bcast_packets = 5;  /**< RFC 2233 */
+    uint64 rx_error_packets = 6;  /**< RFC 1213 */
+    uint64 rx_unknown_protos = 7; /**< RFC 1213 */
+    uint64 tx_bytes = 8;          /**< RFC 2233 */
+    uint64 tx_packets = 9;        /**< RFC 1213 ucast + none-ucast */
+    uint64 tx_ucast_packets = 10;  /**< RFC 2233 */
+    uint64 tx_mcast_packets = 11;  /**< RFC 2233 */
+    uint64 tx_bcast_packets = 12;  /**< RFC 2233 */
+    uint64 tx_error_packets = 13;  /**< RFC 1213 */
+    uint64 rx_crc_errors = 14;     /**< Received packets with CRC error. */
+    uint64 bip_errors = 15;        /**< Received bip errors (bip8 for gpon, bip32 for xgpon). */
 }
 
 /** Transport message definition for "stat" group of "interface" object.
@@ -789,6 +980,7 @@
     BalControl flow_control = 8;        /**< Flow control enable or disable */
     uint32 ds_tm = 9;           /**< Downstream scheduler and shaper */
     uint32 us_tm = 10;           /**< Upstream scheduler and shaper */
+    BalIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
 }
 
 /** Transport message definition for "ind" group of "interface" object.
@@ -800,6 +992,46 @@
     BalInterfaceIndData data = 3; /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "los" group of the "interface" object.
+ *
+ * An indication of a change olt los alarm
+ */
+message BalInterfaceLosData
+{
+    BalAlarmStatus status = 1; /**< The current admin status */
+}
+
+/** Transport message definition for "los" group of "interface" object.
+ */
+message BalInterfaceLos
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalInterfaceKey key = 2;       /**< Object key. */
+    BalInterfaceLosData data = 3; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "oper_status_change" group of the "interface"
+ * object.
+ *
+ * An indication of a change of operational status
+ */
+message BalInterfaceOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of "interface"
+ * object.
+ */
+message BalInterfaceOperStatusChange
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalInterfaceKey key = 2;   /**< Object key. */
+    BalInterfaceOperStatusChangeData data = 3;  /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "packet" object.
  */
 message BalPacketKey
@@ -831,7 +1063,7 @@
 
 /** Structure definition for the "ind" group of the "packet" object.
  */
-message BalPacketIndData
+message BalPacketBearerChannelRxData
 {
     uint32 flow_id = 1;             /**< N/A for sending a packet */
     BalFlowType flow_type = 2;         /**< Flow Type. */
@@ -842,13 +1074,53 @@
     bytes pkt = 7;             /**< Packet Data. */
 }
 
-/** Transport message definition for "ind" group of "packet" object.
+/** Transport message definition for "bearer_channel_rx" group of "packet"
+ * object.
  */
-message BalPacketInd
+message BalPacketBearerChannelRx
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalPacketKey key = 2;  /**< Object key. */
+    BalPacketBearerChannelRxData data = 3;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ieee_oam_channel_rx" group of the "packet"
+ * object.
+ *
+ * Rx indication on the IEEE OAM channel
+ */
+message BalPacketIeeeOamChannelRxData
+{
+    BalIdList pkt = 1;    /**< Packet Data. */
+}
+
+/** Transport message definition for "ieee_oam_channel_rx" group of "packet"
+ * object.
+ */
+message BalPacketIeeeOamChannelRx
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalPacketKey key = 2;  /**< Object key. */
+    BalPacketIeeeOamChannelRxData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "itu_omci_channel_rx" group of the "packet"
+ * object.
+ *
+ * Rx indication on the ITU OMCI channel
+ */
+message BalPacketItuOmciChannelRxData
+{
+    BalIdList pkt = 1;    /**< Packet Data. */
+}
+
+/** Transport message definition for "itu_omci_channel_rx" group of "packet" object.
+ */
+message BalPacketItuOmciChannelRx
 {
     BalObj hdr = 1;                /**< Transport header. */
     BalPacketKey key = 2;          /**< Object key. */
-    BalPacketIndData data = 3;    /**< All properties that must be set by the user. */
+    BalPacketItuOmciChannelRxData data = 3;    /**< All properties that must be set by the user. */
 }
 
 /** Structure definition for the "key" group of the "subscriber_terminal"
@@ -874,8 +1146,9 @@
     bytes mac_address = 7;                          /**< The Ethernet MAC address of an EPON subscriber terminal */
     uint32 ds_tm = 8;                               /**< Downstream scheduler and shaper */
     uint32 us_tm = 9;                               /**< Upstream scheduler and shaper */
-    SvcPortIdList svc_port_id_list = 10;        /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
-    BalAggregationPortIdList agg_port_id_list = 11;    /**< A list of aggrPort_ids associated with this subscriber terminal */
+    BalIdList svc_port_id_list = 10;        /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
+    BalIdList agg_port_id_list = 11;    /**< A list of aggrPort_ids associated with this subscriber terminal */
+    BalSubTermRate sub_term_rate = 12;                     /**< sub_term_rate. */
 }
 
 /** Transport message definition for "cfg" group of "subscriber_terminal"
@@ -908,6 +1181,24 @@
     BalSubscriberTerminalStatData data = 3;  /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "dgi" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalDgiData
+{
+    BalAlarmStatus dgi_status = 1; /**< dgi_status. */
+}
+
+/** Transport message definition for "dgi" group of "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalDgi
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalDgiData data = 3;   /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "ind" group of the "subscriber_terminal"
  * object.
  */
@@ -922,6 +1213,8 @@
     bytes mac_address = 7;          /**< The Ethernet MAC address of an epon subscriber terminal */
     uint32 ds_tm = 8;               /**< Downstream scheduler and shaper */
     uint32 us_tm = 9;               /**< Upstream scheduler and shaper */
+    BalIdList agg_port_id_list = 10;    /**< A list of aggr_port_ids associated with this subscriber terminal */
+    BalSubTermRate sub_term_rate = 11;                     /**< sub_term_rate. */
 }
 
 /** Transport message definition for "ind" group of "subscriber_terminal"
@@ -934,6 +1227,64 @@
     BalSubscriberTerminalIndData data = 3;   /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the
+ * "subscriber_terminal" object.
+ *
+ * An indication of a change of operational status
+ */
+message BalSubscriberTerminalOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalOperStatusChange
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalOperStatusChangeData data = 4;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "sub_term_alarm" group of the
+ * "subscriber_terminal" object.
+ */
+message BalsubscriberTerminalSubTermAlarmData
+{
+    BalSubscriberTerminalAlarms alarm = 1;    /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+}
+
+/** Transport message definition for "sub_term_alarm" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermAlarm
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalsubscriberTerminalSubTermAlarmData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "sub_term_disc" group of the
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermDiscData
+{
+    BalSerialNumber serial_number = 1; /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+}
+
+/** Transport message definition for "sub_term_disc" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermDisc
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalSubTermDiscData data = 3; /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "TmQueue" object.
  */
 message BalTmQueueKey
@@ -988,7 +1339,12 @@
  */
 message BalTmQueueIndData
 {
-    uint32 ret = 1;   /**< ret */
+    uint32 priority = 1;    /**< priority. */
+    uint32 weight = 2;        /**< weight. */
+    BalTmShaping rate = 3;         /**< rate. */
+    BalTmBac bac = 4;              /**< bac. */
+    BalTmCreationMode create_mode = 5;    /**< create_mode. */
+    uint32 ref_count = 6;                      /**< ref_count. */
 }
 
 /** Transport message definition for "ind" group of "TmQueue" object.
@@ -1012,16 +1368,17 @@
  */
 message BalTmSchedCfgData
 {
-    BalTmSchedOwner owner = 1;        /**< owner. */
+    BalTmSchedOwner owner = 1;        /**< The owner of the tm_sched object instance*/
     BalTmSchedType sched_type = 2;    /**< Scheduler type */
     BalTmSchedParent sched_parent = 3;            /**< Scheduling parameters for parent scheduler */
     BalTmSchedChildType sched_child_type = 4;    /**< Scheduling level for children tm  */
-    BalTmShaping rate = 5;                 /**< Rate shaping parameters */
-    BalTmTcontSla tcont_sla = 6;          /**< Additional SLA parameters for aggPort owner */
-    BalTmCreationMode creation_mode = 7;  /**< Creation mode */
-    BalTmQueueIdList queues = 8;      /**< Subsidiary queues */
-    BalTmSchedIdList sub_scheds = 9;  /**< Subsidiary schedulers */
-    uint32 num_priorities = 10;                 /**< Max number of strict priority scheduling elements */
+    uint32 num_priorities = 5;                 /**< Max number of strict priority scheduling elements */
+    BalTmShaping rate = 6;                 /**< Rate shaping parameters */
+    BalExtendedItuDba ext_itu_dba = 7;    /**< Extended itu dba parameters for an agg_port owned tm_sched */
+    BalExtendedEponDba ext_epon_dba = 8;  /**< epon dba parameters for an agg_port owned tm_sched */
+    BalTmCreationMode creation_mode = 9;  /**< Creation mode */
+    BalIdList queues = 10;      /**< Subsidiary queues */
+    BalIdList sub_scheds = 11;  /**< Subsidiary schedulers */
 }
 
 /** Transport message definition for "cfg" group of "Tmsched" object.
@@ -1038,7 +1395,17 @@
  */
 message BalTmSchedIndData
 {
-    uint32 ret = 1;   /**< ret */
+    BalTmSchedOwner owner = 1;        /**< The owner of the tm_sched object instance */
+    BalTmSchedType sched_type = 2;    /**< Scheduler type */
+    BalTmSchedParent sched_parent = 3;            /**< Scheduling parameters for parent scheduler */
+    BalTmSchedChildType sched_child_type= 4;    /**< Scheduling type of all child tm objects */
+    uint32 num_priorities = 5;                 /**< Max number of strict priority scheduling elements */
+    BalTmShaping rate = 6;                 /**< Rate shaping parameters */
+    BalExtendedItuDba ext_itu_dba = 7;    /**< Extended itu dba parameters for an agg_port owned tm_sched */
+    BalExtendedEponDba ext_epon_dba = 8;  /**< epon dba parameters for an agg_port owned tm_sched */
+    BalTmCreationMode creation_moden= 9;  /**< Creation mode */
+    BalIdList queues = 10;      /**< Subsidiary queues */
+    BalIdList sub_scheds = 11;  /**< Subsidiary schedulers */
 }
 
 /** Transport message definition for "ind" group of "TmSched" object.
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
index d528be3..9d4b169 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
@@ -28,13 +28,14 @@
 {
     uint32         version_major = 2;   /**< Header Major version number */
     uint32         version_minor = 3;   /**< Header Minor version number */
-    BalMsgType  msg_type = 4;        /**< Request / Response / Ack / Indication */
+    BalMsgType     msg_type = 4;        /**< Request / Response / Ack / Indication */
     uint32         msg_id = 5;          /**< Message ID – the ID of the message (subID under the message type) */
     uint32         ex_id = 6;           /**< Exchange ID for message tracking between endpoints */
-    BalSubsystem    sender = 7;          /**< Sender subsystem - used for additional validation */
+    BalSubsystem   sender = 7;          /**< Sender subsystem - used for additional validation */
     uint32         timestamp = 8;       /**< Timestamp when the message was sent */
-    uint64            scratchpad = 10;      /**< Scratchpad used for inter-thread communication */
-    bytes          payload = 11;       /**< Payload follows the header */
+    uint64         scratchpad = 10;     /**< Scratchpad used for inter-thread communication */
+    uint32         access_term_id = 11; /**< Access Term Id for this BAL message */
+    bytes          payload = 12;        /**< Payload follows the header */
 }
 
 /** Helper type to determine what the data format of a message should look like */
@@ -68,12 +69,12 @@
 message BalObj
 {
     Bal_comm_msg_hdr     comm_hdr = 1;      /**< Communication header */
-    uint32    version = 2;       /**< Version of the Object definition/messageure */
-    BalObjId        obj_type = 3;      /**< An enumerated ID associated with the object being specified */
-    Bal_mgt_group     group = 4;         /**< Management group */
-    uint32             subgroup = 5;      /**< Subgroup for indications */
-    BalObj_msg_type  type = 6;          /**< Type (e.g. get / set / clear)  */
-    BalObj_msg_dir   dir = 7;           /**< Direction - request / response */
-    BalErrno		     status = 8;        /**< BAL status code (BCM_ERR_OK–success, error code otherwise) */
-    uint64 presence_mask = 9; /**< Indicates which attribute parameters are present */
+    uint32               om_version = 2;    /**< Version of the Object Model definition/messageure */
+    BalObjId             obj_type = 3;      /**< An enumerated ID associated with the object being specified */
+    Bal_mgt_group        group = 4;         /**< Management group */
+    uint32               subgroup = 5;      /**< Subgroup for indications */
+    BalObj_msg_type      type = 6;          /**< Type (e.g. get / set / clear)  */
+    BalObj_msg_dir       dir = 7;           /**< Direction - request / response */
+    BalErrno		 status = 8;        /**< BAL status code (BCM_ERR_OK–success, error code otherwise) */
+    uint64               presence_mask = 9; /**< Indicates which attribute parameters are present */
 }
