diff --git a/src/device/service/drivers/openconfig/templates/VPN/Interfaces_multivendor.py b/src/device/service/drivers/openconfig/templates/VPN/Interfaces_multivendor.py
index d6f72ee6556fd5ca5dc08c5349a41e0db736bd4d..12411bd8a5cbdd35bf9bf347abd3b015438d86d7 100644
--- a/src/device/service/drivers/openconfig/templates/VPN/Interfaces_multivendor.py
+++ b/src/device/service/drivers/openconfig/templates/VPN/Interfaces_multivendor.py
@@ -54,7 +54,8 @@ def create_If_SubIf(data,vendor, DEL):
                     with tag('enabled'):text('true')    
                 with tag('subinterfaces'):
                     with tag('subinterface'):
-                        if vendor == 'ADVA':
+                        # if vendor == 'ADVA':
+                        if True:
                             with tag('index'): text('0')
                         with tag('config'):
                             with tag('index'): text('0')
diff --git a/src/device/service/drivers/openconfig/templates/VPN/Network_instance_multivendor.py b/src/device/service/drivers/openconfig/templates/VPN/Network_instance_multivendor.py
index e36955a0d95e66f481289b7412ddaa327374e4ab..a8fc97cf9dffd9a65d5bbdaacef9cb09e334b11c 100644
--- a/src/device/service/drivers/openconfig/templates/VPN/Network_instance_multivendor.py
+++ b/src/device/service/drivers/openconfig/templates/VPN/Network_instance_multivendor.py
@@ -64,10 +64,14 @@ def create_NI(parameters,vendor,DEL):
                 elif "L3VRF" in parameters['type']: 
                     with tag('config'):
                         with tag('name'):text(parameters['name'])
-                        if vendor == "ADVA": 
+                        if "router_id" in parameters: 
+                            with tag('router-id'):text(parameters['router_id'])
+                        # if vendor == "ADVA": 
+                        if True:
                             with tag('type', 'xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types"'):text('oc-ni-types:',parameters['type'])
                             with tag('route-distinguisher'):text(parameters['route_distinguisher'])
-                    if vendor == "ADVA": 
+                    # if vendor == "ADVA": 
+                    if True:
                         with tag('encapsulation'):
                             with tag('config'):
                                 with tag('encapsulation-type', 'xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types"')  :text('oc-ni-types:MPLS')
@@ -116,9 +120,6 @@ def add_protocol_NI(parameters,vendor, DEL):
         else:
             with tag('network-instance'):
                 with tag('name'):text(parameters['name'])
-                with tag('config'):
-                    with tag('name'): text(parameters['name'])
-                    with tag('type', 'xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types"'): text('oc-ni-types:DEFAULT_INSTANCE')
                 with tag('protocols'):
                     with tag('protocol'):
                         with tag('identifier', 'xmlns:oc-pol-types="http://openconfig.net/yang/policy-types"'):text('oc-pol-types:',parameters['identifier'])
@@ -129,36 +130,25 @@ def add_protocol_NI(parameters,vendor, DEL):
                             with tag('enabled'): text('true')
                         if "BGP" in parameters['identifier']:
                             with tag('bgp'):
+                                with tag('name'): text(parameters['as'])
                                 with tag('global'):
-                                    with tag('afi-safis'):
-                                        with tag('afi-safi'):
-                                            with tag('afi-safi-name', 'xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"'): text('oc-bgp-types:IPV4_UNICAST')
-                                            with tag('config'):
-                                                with tag('afi-safi-name', 'xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"'): text('oc-bgp-types:IPV4_UNICAST')
-                                                with tag('enabled'): text('true')
                                     with tag('config'):
                                         with tag('as')       :text(parameters['as'])
-                                with tag('peer-groups'):
-                                    with tag('peer-group'):
-                                        with tag('peer-group-name'): text('IBGP')
-                                        with tag('config'):
-                                            with tag('peer-group-name'): text('IBGP')
-                                            with tag('peer-as'): text(parameters['protocol_name'])
-                                        with tag('afi-safis'):
-                                            with tag('afi-safi'):
-                                                with tag('afi-safi-name', 'xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"'): text('oc-bgp-types:IPV4_UNICAST')
-                                                with tag('config'):
-                                                    with tag('afi-safi-name', 'xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"'): text('oc-bgp-types:IPV4_UNICAST')
-                                                    with tag('enabled'): text('true')
-
+                                        if "router_id" in parameters: 
+                                            with tag('router-id'):text(parameters['router_id'])
                                 if 'neighbors' in parameters:
                                     with tag('neighbors'):
-                                      for neighbor in parameters['neighbors']:
-                                          with tag('neighbor'):
-                                              with tag('neighbor-address'): text(neighbor['ip_address'])
-                                              with tag('config'):
-                                                  with tag('neighbor-address'): text(neighbor['ip_address'])
-                                                  with tag('peer-group'): text('IBGP')
+                                        for neighbor in parameters['neighbors']:
+                                            with tag('neighbor'):
+                                                with tag('neighbor-address'): text(neighbor['ip_address'])
+                                                with tag('afi-safis'):
+                                                    with tag('afi-safi', 'xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"'):
+                                                        with tag('afi-safi-name'): text('oc-bgp-types:IPV4_UNICAST')
+                                                        with tag('enabled'): text('true')
+                                                with tag('config'):
+                                                    with tag('neighbor-address'): text(neighbor['ip_address'])
+                                                    with tag('enabled'): text('true')
+                                                    with tag('peer-as'): text(parameters['as'])
                 # if vendor == "ADVA": 
                 if True: 
                     with tag('tables'):
@@ -207,6 +197,9 @@ def associate_If_to_NI(parameters, DEL):
         else:
             with tag('network-instance'):
                 with tag('name'):text(parameters['name'])
+                with tag('config'):
+                    with tag('name'):text(parameters['name'])
+                    with tag('type', 'xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types"'):text('oc-ni-types:L3VRF')
                 with tag('interfaces'):
                     with tag('interface'):
                         with tag('id'):text(parameters['id'])
@@ -214,6 +207,25 @@ def associate_If_to_NI(parameters, DEL):
                             with tag('id')          :text(parameters['id'])
                             with tag('interface')   :text(parameters['interface'])
                             with tag('subinterface'):text(parameters['subinterface'])
+    with tag('interfaces', 'xmlns="http://openconfig.net/yang/interfaces"'):
+        with tag('interface'):
+            with tag('name'):text(parameters['interface'])
+            with tag('config'):
+                with tag('name'):text(parameters['interface'])
+            with tag('subinterfaces'):
+                with tag('subinterface'):
+                    with tag('index'): text(parameters['subinterface'])
+                    with tag('config'):
+                        with tag('index'): text(parameters['subinterface'])
+                    with tag('ipv4',  'xmlns="http://openconfig.net/yang/interfaces/ip"'):
+                        with tag('config'):
+                            with tag('mtu'): text('1500')
+                        with tag('addresses'):
+                            with tag('address'):
+                                with tag('ip'):text(parameters['address_ip'])
+                                with tag('config'):
+                                    with tag('ip'):text(parameters['address_ip'])
+                                    with tag('prefix-length'):text(parameters['address_prefix'])
                             
     result = indent(
         doc.getvalue(),
@@ -356,6 +368,7 @@ def create_table_conns(parameters,DEL):
                         with tag('src-protocol','xmlns:oc-pol-types="http://openconfig.net/yang/policy-types"'):   text('oc-pol-types:',parameters['src_protocol'])
                         with tag('dst-protocol','xmlns:oc-pol-types="http://openconfig.net/yang/policy-types"'):   text('oc-pol-types:',parameters['dst_protocol'])
                         with tag('address-family', 'xmlns:oc-types="http://openconfig.net/yang/openconfig-types"'):text('oc-types:',parameters['address_family'])    
+                        with tag('dst-instance', 'xmlns="http://www.ipinfusion.com/yang/ocnos/ipi-oc-ni-augments"'):text('65000')
                         if len(parameters['default_import_policy']) != 0:
                             with tag('default-import-policy'):text(parameters['default_import_policy'])
     result = indent(
diff --git a/src/device/service/drivers/openconfig/templates/VPN/Routing_policy.py b/src/device/service/drivers/openconfig/templates/VPN/Routing_policy.py
index 54e6c1c013fe0b0c84af0483def8dc944b4568a8..e1287f9f8542638fcb17cef37ba8d2b7ba019c5c 100644
--- a/src/device/service/drivers/openconfig/templates/VPN/Routing_policy.py
+++ b/src/device/service/drivers/openconfig/templates/VPN/Routing_policy.py
@@ -40,6 +40,7 @@ def create_rp_statement(data, DEL):
     RP_statement_name       = data['statement_name']
     RP_policy_result        = data['policy_result']
     RP_ext_comm_set_name    = data['ext_community_set_name']
+    RP_sequence_id          = data['sequence_id']
     
 
     with tag('routing-policy', xmlns="http://openconfig.net/yang/routing-policy"):
@@ -55,9 +56,9 @@ def create_rp_statement(data, DEL):
                         with tag('name'):text(RP_policy_name)
                     with tag('statements'):
                         with tag('statement'):
-                            with tag('name'):text(RP_statement_name)
+                            with tag('name'):text(RP_sequence_id)
                             with tag('config'):
-                                with tag('name'):text(RP_statement_name)
+                                with tag('name'):text(RP_sequence_id)
                             with tag('conditions'):
                                 with tag('config'):
                                     with tag('install-protocol-eq', **{'xmlns:openconfig-policy-types': 'http://openconfig.net/yang/policy-types'}):text('openconfig-policy-types:DIRECTLY_CONNECTED')
@@ -133,14 +134,14 @@ data_2 =    {'ext_community_member'     : '65001:101',
             'ext_community_set_name'    : 'set_srv_101_a'}
 
 print('\nRouting Policy Statement - CREATE\n')
-print(rp_statement(data_1, False))
+print(create_rp_statement(data_1, False))
 print('\nRouting Policy Statement - DELETE\n')
-print(rp_statement(data_1, True))
+print(create_rp_statement(data_1, True))
 
 print('\nRouting Policy Defined Set - CREATE\n')
-print(rp_defined_set(data_2, False))
+print(create_rp_def(data_2, False))
 print('\nRouting Policy Defined Set - DELETE\n')
-print(rp_defined_set(data_2, True))
+print(create_rp_def(data_2, True))
 '''
 
 '''
diff --git a/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py b/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
index 3c5d4b5e646dcdae14b9268db4152a169507e5fd..4b7ee7b39ec9ed1133aa0e7846d174436c33dc09 100644
--- a/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
+++ b/src/nbi/service/rest_server/nbi_plugins/etsi_bwm/Tools.py
@@ -38,8 +38,9 @@ ALLOCATION_DIRECTION_DESCRIPTIONS = {
 VLAN_TAG = 0
 PREFIX_LENGTH = 24
 BGP_AS = 65000
-policy_AZ = 'srv_{:d}_a'.format(VLAN_TAG)
-policy_ZA = 'srv_{:d}_b'.format(VLAN_TAG)
+POLICY_AZ = 'srv_{:d}_a'.format(VLAN_TAG)
+POLICY_ZA = 'srv_{:d}_b'.format(VLAN_TAG)
+BGP_NETWORK_CIDR = '192.168.150.0/24'
 
 def service_2_bwInfo(service: Service) -> dict:
     response = {}
@@ -102,7 +103,6 @@ def bwInfo_2_service(client, bw_info: dict) -> Service:
         devices = client.ListDevices(Empty()).devices
         router_id_counter = 1
         for device in devices:
-
             device_endpoint_uuids = {ep.name:ep.endpoint_id.endpoint_uuid.uuid for ep in device.device_endpoints}
             for cr in device.device_config.config_rules:
                 if cr.WhichOneof('config_rule') != 'custom':
@@ -118,41 +118,42 @@ def bwInfo_2_service(client, bw_info: dict) -> Service:
                 ep_id.endpoint_uuid.uuid = device_endpoint_uuids[port_name]
                 ep_id.device_id.device_uuid.uuid = device.device_id.device_uuid.uuid
                 service.service_endpoint_ids.append(ep_id)
-
                 # add interface config rules
                 endpoint_settings_key = ENDPOINT_SETTINGS_KEY.format(device.name, port_name, VLAN_TAG)
                 if address_ip == a_ip:
                     field_updates = {
                     'address_ip': (address_ip, True),
-                    # 'router_id': ('.'.join([str(router_id_counter)]*4), True),
                     'router_id': ('200.1.1.1', True),
                     'neighbor_address_ip': ('192.168.150.2', True),
+                    'self_bgp_interface_name': ('xe5', True),
+                    'self_bgp_interface_address_ip': ('192.168.150.1', True),
+                    'self_bgp_interface_address_prefix': (PREFIX_LENGTH, True),
+                    'self_bgp_sub_interface_index': (0, True),
                     'route_distinguisher': (route_distinguisher, True),
                     'sub_interface_index': (0, True),
-                    'vlan_id'            : (VLAN_TAG, True),
-                    # 'bgp_as': (BGP_AS+router_id_counter, True),
                     'bgp_as': (BGP_AS, True),
                     'ip_address': (address_ip, True),
                     'prefix_length': (PREFIX_LENGTH, True),
-                    'policy_AZ'           : (policy_AZ, True),
-                    'policy_ZA'           : (policy_ZA, True),
+                    'policy_AZ'           : (POLICY_AZ, True),
+                    'policy_ZA'           : (POLICY_ZA, True),
                     'address_prefix'     : (PREFIX_LENGTH, True),
                         }
                 elif address_ip == z_ip:
                     field_updates = {
                     'address_ip': (address_ip, True),
-                    # 'router_id': ('.'.join([str(router_id_counter)]*4), True),
                     'router_id': ('200.1.1.2', True),
                     'neighbor_address_ip': ('192.168.150.1', True),
+                    'self_bgp_interface_name': ('xe5', True),
+                    'self_bgp_interface_address_ip': ('192.168.150.2', True),
+                    'self_bgp_interface_address_prefix': (PREFIX_LENGTH, True),
+                    'self_bgp_sub_interface_index': (0, True),
                     'route_distinguisher': (route_distinguisher, True),
                     'sub_interface_index': (0, True),
-                    'vlan_id'            : (VLAN_TAG, True),
-                    # 'bgp_as': (BGP_AS+router_id_counter, True),
                     'bgp_as': (BGP_AS, True),
                     'ip_address': (address_ip, True),
                     'prefix_length': (PREFIX_LENGTH, True),
-                    'policy_AZ'           : (policy_ZA, True),
-                    'policy_ZA'           : (policy_AZ, True),
+                    'policy_AZ'           : (POLICY_ZA, True),
+                    'policy_ZA'           : (POLICY_AZ, True),
                     'address_prefix'     : (PREFIX_LENGTH, True),
                         }
                 router_id_counter += 1
diff --git a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py
index 0369d6207ff659f381db76ac0742579a9eb7703f..2f518d56a39e806a9ac12af87ceab77cf3c25300 100644
--- a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py
+++ b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py
@@ -47,11 +47,14 @@ def setup_config_rules(
     network_subinterface_desc = json_endpoint_settings.get('subif_description','')
     #service_short_uuid       = service_uuid.split('-')[-1]
     #network_instance_name    = '{:s}-NetInst'.format(service_short_uuid)
-    # network_instance_name     = json_endpoint_settings.get('ni_name',          service_uuid.split('-')[-1])  #ELAN-AC:1
-    network_instance_name = 'default'
+    network_instance_name     = json_endpoint_settings.get('ni_name',          service_uuid.split('-')[-1])  #ELAN-AC:1
 
-    '''
-    # if_subif_name       = '{:s}.{:d}'.format(endpoint_name, vlan_id)
+    bgp_if_name = json_endpoint_settings.get('self_bgp_interface_name','')
+    bgp_address_ip = json_endpoint_settings.get('self_bgp_interface_address_ip','')
+    bgp_address_prefix = json_endpoint_settings.get('self_bgp_interface_address_prefix','')
+    bgp_sub_interface_index = json_endpoint_settings.get('self_bgp_sub_interface_index', 0        )
+
+    # if_subif_name       = '{:s}.{:d}'.format(endpoint_name, 0)
     if_subif_name       = '{:s}'.format(endpoint_name[5:])
 
     json_config_rules = [
@@ -70,7 +73,7 @@ def setup_config_rules(
                 'description': network_interface_desc, 
                 'type': 'L3VRF',
                 'route_distinguisher': route_distinguisher,
-                #'router_id': router_id,
+                'router_id': router_id,
                 #'address_families': address_families,
         }),
 
@@ -78,12 +81,12 @@ def setup_config_rules(
         json_config_rule_set(
             '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), {
                 'name': network_instance_name, 
-                # 'protocol_name': 'BGP', 
                 'protocol_name': bgp_as, 
                 'identifier': 'BGP', 
-                # 'identifier': bgp_as, 
+                'type': 'L3VRF',
                 'as': bgp_as,
                 'router_id': router_id, 
+                'neighbors': [{'ip_address': neighbor_address_ip, 'remote_as': bgp_as}]
         }),
 
         #Add DIRECTLY CONNECTED protocol to network instance
@@ -107,7 +110,6 @@ def setup_config_rules(
         json_config_rule_set(
             '/interface[{:s}]/subinterface[{:d}]'.format(if_subif_name, sub_interface_index), {
                 'name'          : if_subif_name,
-                # 'type'          :'l3ipvlan',
                 'type'          :'ethernetCsmacd',
                 'mtu'           : mtu,
                 'index'         : sub_interface_index,
@@ -124,6 +126,18 @@ def setup_config_rules(
                 'id'          : if_subif_name, 
                 'interface'   : if_subif_name,
                 'subinterface': sub_interface_index,
+                'address_ip'    : address_ip, 
+                'address_prefix': address_prefix,
+        }), 
+
+        json_config_rule_set(
+            '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, bgp_if_name), {
+                'name'        : network_instance_name, 
+                'id'          : bgp_if_name, 
+                'interface'   : bgp_if_name,
+                'subinterface': bgp_sub_interface_index,
+                'address_ip'    : bgp_address_ip, 
+                'address_prefix': bgp_address_prefix,
         }), 
 
         #Create routing policy
@@ -139,6 +153,7 @@ def setup_config_rules(
                 'statement_name'        : 'stm_{:s}'.format(policy_import),
                 'ext_community_set_name': 'set_{:s}'.format(policy_import),
                 'policy_result'         : 'ACCEPT_ROUTE',
+                'sequence_id'           : '10'
         }),
 
         #Associate routing policy to network instance
@@ -161,6 +176,7 @@ def setup_config_rules(
                 'statement_name'        : 'stm_{:s}'.format(policy_export),
                 'ext_community_set_name': 'set_{:s}'.format(policy_export),
                 'policy_result'         : 'ACCEPT_ROUTE',
+                'sequence_id'           : '10'
         }),
 
         #Associate routing policy to network instance
@@ -189,39 +205,6 @@ def setup_config_rules(
                 'default_import_policy': 'ACCEPT_ROUTE',
         }),
 
-    ]
-    '''
-    if_subif_name       = '{:s}'.format(endpoint_name[5:])
-
-    json_config_rules = [
-
-        #Add DIRECTLY CONNECTED protocol to network instance
-        json_config_rule_set(
-            '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(network_instance_name), {
-                'name': network_instance_name, 
-                'identifier': 'DIRECTLY_CONNECTED', 
-                'protocol_name': 'DIRECTLY_CONNECTED',
-        }),
-
-        # Add BGP neighbors
-        json_config_rule_set(
-            '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), {
-                'name': network_instance_name, 
-                'protocol_name': bgp_as, 
-                'identifier': 'BGP', 
-                'as': bgp_as,
-                'router_id': router_id, 
-                'neighbors': [{'ip_address': neighbor_address_ip, 'remote_as': bgp_as}]
-        }),
-        json_config_rule_set(
-            '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(network_instance_name), {
-                'name'                 : network_instance_name,
-                'src_protocol'         : 'DIRECTLY_CONNECTED',
-                'dst_protocol'         : 'BGP',
-                'address_family'       : 'IPV4',
-                'default_import_policy': 'ACCEPT_ROUTE',
-        }),
-
     ]
 
     for res_key, res_value in endpoint_acls: