diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py
index 1efed024c1c9e8f5d0aad0494c4a1e4d51bebf0e..b9761298704f9e13e75ad7421370a7ce00349e82 100644
--- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py
+++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstance.py
@@ -108,6 +108,18 @@ class NetworkInstanceHandler(_Handler):
             entry_net_inst_key = '/network_instance[{:s}]'.format(ni_name)
             entries.append((entry_net_inst_key, _net_inst))
 
+            ni_interfaces = network_instance.get('interfaces', {}).get('interface', [])
+            for ni_interface in ni_interfaces:
+                #ni_if_id     = ni_interface['id']
+                ni_if_config = ni_interface['config']
+                ni_if_name   = ni_if_config['interface']
+                ni_sif_index = ni_if_config['subinterface']
+                ni_if_id     = '{:s}.{:d}'.format(ni_if_name, ni_sif_index)
+
+                _interface = {'name': ni_name, 'id': ni_if_id, 'if_name': ni_if_name, 'sif_index': ni_sif_index}
+                entry_interface_key = '{:s}/interface[{:s}]'.format(entry_net_inst_key, ni_if_id)
+                entries.append((entry_interface_key, _interface))
+
             ni_protocols = network_instance.get('protocols', {}).get('protocol', [])
             for ni_protocol in ni_protocols:
                 ni_protocol_id = ni_protocol['identifier'].split(':')[-1]
diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
index ab105c2b0e8f8fa086805b8485651891c12bfd5f..af2178fe9966b86bf5c7447cf5c7b76cd61e5664 100644
--- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
+++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
@@ -32,11 +32,7 @@ class NetworkInstanceInterfaceHandler(_Handler):
         ni_name   = get_str(resource_value, 'name'        ) # test-svc
         if_name   = get_str(resource_value, 'if_name'     ) # ethernet-1/1
         sif_index = get_int(resource_value, 'sif_index', 0) # 0
-        
-        if IS_CEOS:
-            if_id = if_name
-        else:
-            if_id = '{:s}.{:d}'.format(if_name, sif_index)
+        if_id     = '{:s}.{:d}'.format(if_name, sif_index)
 
         if delete:
             PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'
@@ -44,6 +40,8 @@ class NetworkInstanceInterfaceHandler(_Handler):
             str_data = json.dumps({})
             return str_path, str_data
 
+        if IS_CEOS: if_id = if_name
+
         str_path = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'.format(ni_name, if_id)
         #str_data = json.dumps({
         #    'id': if_id,
diff --git a/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py
index 69b7a609ad40f6a3c57c315d3ef0a18a0e4bcdfc..47c8e1cdbd692749b7142bc706705cedc0074bb5 100644
--- a/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py
+++ b/src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig.py
@@ -141,7 +141,6 @@ def test_get_network_instances(
     num_diffs = len(diff_data)
     if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
     assert num_diffs == 0
-    raise Exception()
 
 
 def test_set_network_instances(
@@ -284,39 +283,80 @@ def test_add_interfaces_to_network_instance(
     results_setconfig = driver.SetConfig(resources_to_set)
     LOGGER.info('results_setconfig = {:s}'.format(str(results_setconfig)))
 
-    #interfaces = sorted(['Ethernet1', 'Ethernet10'])
-    #results = set(results_setconfig)
-    #assert len(results) == len(interfaces)
-    #for if_name in interfaces:
-    #    assert ('/interface[{:s}]'.format(if_name), True) in results
+    interfaces = sorted([
+        '{:s}.{:d}'.format(if_name, sif_index)
+        for if_name, sif_index, _, _, _ in NI_INTERFACES
+    ])
+    results = set(results_setconfig)
+    assert len(results) == len(interfaces)
+    for if_name in interfaces:
+        assert ('/network_instance[{:s}]/interface[{:s}]'.format(NI_NAME, if_name), True) in results
 
-    #expected_getconfig = get_expected_interface_config(storage)
-    #expected_getconfig.extend([
-    #    ('/interface[Ethernet1]/subinterface[0]/ipv4[192.168.1.1]', {
-    #        'ip': '192.168.1.1', 'origin': 'STATIC', 'prefix': 24
-    #    }),
-    #    ('/interface[Ethernet10]/subinterface[0]/ipv4[192.168.10.1]', {
-    #        'ip': '192.168.10.1', 'origin': 'STATIC', 'prefix': 24
-    #    })
-    #])
-
-    #permitted_retries = 5
-    #while permitted_retries > 0:
-    #    resources_to_get = [RESOURCE_INTERFACES]
-    #    LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get)))
-    #    results_getconfig = driver.GetConfig(resources_to_get)
-    #    LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
-    #
-    #    diff_data = deepdiff.DeepDiff(sorted(expected_getconfig), sorted(results_getconfig))
-    #    num_diffs = len(diff_data)
-    #    if num_diffs == 0: break
-    #    # let the device take some time to reconfigure
-    #    time.sleep(0.5)
-    #    permitted_retries -= 1
+    expected_getconfig = get_expected_interface_config(storage)
+    expected_getconfig.extend([
+        ('/interface[{:s}]/subinterface[{:d}]/ipv4[{:s}]'.format(if_name, sif_index, ipv4_addr), {
+            'ip': ipv4_addr, 'origin': 'STATIC', 'prefix': ipv4_prefix
+        })
+        for if_name, sif_index, ipv4_addr, ipv4_prefix, _ in NI_INTERFACES
+    ])
+    LOGGER.info('expected_getconfig = {:s}'.format(str(sorted(expected_getconfig))))
 
-    #if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
-    #assert num_diffs == 0
-    raise Exception()
+    permitted_retries = 5
+    while permitted_retries > 0:
+        resources_to_get = [RESOURCE_INTERFACES]
+        LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get)))
+        results_getconfig = driver.GetConfig(resources_to_get)
+        LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
+    
+        diff_data = deepdiff.DeepDiff(sorted(expected_getconfig), sorted(results_getconfig))
+        num_diffs = len(diff_data)
+        if num_diffs == 0: break
+        # let the device take some time to reconfigure
+        time.sleep(0.5)
+        permitted_retries -= 1
+
+    if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
+    assert num_diffs == 0
+
+    expected_getconfig = get_expected_network_instance_config(storage)
+    expected_getconfig.extend([
+        ('/network_instance[{:s}]'.format(NI_NAME), {
+            'name': NI_NAME, 'type': NI_TYPE
+        }),
+        ('/network_instance[{:s}]/protocol[DIRECTLY_CONNECTED]'.format(NI_NAME), {
+            'id': 'DIRECTLY_CONNECTED', 'name': 'DIRECTLY_CONNECTED'
+        }),
+        ('/network_instance[{:s}]/table[DIRECTLY_CONNECTED,IPV4]'.format(NI_NAME), {
+            'protocol': 'DIRECTLY_CONNECTED', 'address_family': 'IPV4'
+        }),
+        ('/network_instance[{:s}]/table[DIRECTLY_CONNECTED,IPV6]'.format(NI_NAME), {
+            'protocol': 'DIRECTLY_CONNECTED', 'address_family': 'IPV6'
+        })
+    ])
+    LOGGER.info('expected_getconfig = {:s}'.format(str(sorted(expected_getconfig))))
+
+    permitted_retries = 5
+    while permitted_retries > 0:
+        resources_to_get = [RESOURCE_NETWORK_INSTANCES]
+        LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get)))
+        results_getconfig = driver.GetConfig(resources_to_get)
+        LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
+
+        for resource_key, resource_value in results_getconfig:
+            match = re.match(r'^\/network\_instance\[([^\]]+)\]\/vlan\[([^\]]+)\]$', resource_key)
+            if match is None: continue
+            members = resource_value.get('members')
+            if len(members) > 0: resource_value['members'] = sorted(members)
+
+        diff_data = deepdiff.DeepDiff(sorted(expected_getconfig), sorted(results_getconfig))
+        num_diffs = len(diff_data)
+        if num_diffs == 0: break
+        # let the device take some time to reconfigure
+        time.sleep(0.5)
+        permitted_retries -= 1
+
+    if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
+    assert num_diffs == 0
 
 
 def test_set_network_instance_static_routes(
@@ -336,43 +376,45 @@ def test_set_network_instance_static_routes(
     results_setconfig = driver.SetConfig(resources_to_set)
     LOGGER.info('results_setconfig = {:s}'.format(str(results_setconfig)))
 
+    prefixes = sorted([
+        prefix
+        for prefix, _, _ in NI_STATIC_ROUTES
+    ])
+    results = set(results_setconfig)
+    assert len(results) == len(prefixes)
+    for prefix in prefixes:
+        assert ('/network_instance[{:s}]/static_route[{:s}]'.format(NI_NAME, prefix), True) in results
 
+    expected_getconfig = get_expected_network_instance_config(storage)
+    expected_getconfig.extend([
+        ('/network_instance[{:s}]/static_route[{:s}]'.format(NI_NAME, prefix), {
+            'name': NI_NAME, 'prefix': prefix, 'next_hop': gateway, 'next_hop_index': 0, 'metric': metric
+        })
+        for prefix, gateway, metric in NI_STATIC_ROUTES
+    ])
 
+    permitted_retries = 5
+    while permitted_retries > 0:
+        resources_to_get = [RESOURCE_NETWORK_INSTANCES]
+        LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get)))
+        results_getconfig = driver.GetConfig(resources_to_get)
+        LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
 
+        for resource_key, resource_value in results_getconfig:
+            match = re.match(r'^\/network\_instance\[([^\]]+)\]\/vlan\[([^\]]+)\]$', resource_key)
+            if match is None: continue
+            members = resource_value.get('members')
+            if len(members) > 0: resource_value['members'] = sorted(members)
 
-    #interfaces = sorted(['Ethernet1', 'Ethernet10'])
-    #results = set(results_setconfig)
-    #assert len(results) == len(interfaces)
-    #for if_name in interfaces:
-    #    assert ('/interface[{:s}]'.format(if_name), True) in results
+        diff_data = deepdiff.DeepDiff(sorted(expected_getconfig), sorted(results_getconfig))
+        num_diffs = len(diff_data)
+        if num_diffs == 0: break
+        # let the device take some time to reconfigure
+        time.sleep(0.5)
+        permitted_retries -= 1
 
-    #expected_getconfig = get_expected_interface_config(storage)
-    #expected_getconfig.extend([
-    #    ('/interface[Ethernet1]/subinterface[0]/ipv4[192.168.1.1]', {
-    #        'ip': '192.168.1.1', 'origin': 'STATIC', 'prefix': 24
-    #    }),
-    #    ('/interface[Ethernet10]/subinterface[0]/ipv4[192.168.10.1]', {
-    #        'ip': '192.168.10.1', 'origin': 'STATIC', 'prefix': 24
-    #    })
-    #])
-
-    #permitted_retries = 5
-    #while permitted_retries > 0:
-    #    resources_to_get = [RESOURCE_INTERFACES]
-    #    LOGGER.info('resources_to_get = {:s}'.format(str(resources_to_get)))
-    #    results_getconfig = driver.GetConfig(resources_to_get)
-    #    LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
-    #
-    #    diff_data = deepdiff.DeepDiff(sorted(expected_getconfig), sorted(results_getconfig))
-    #    num_diffs = len(diff_data)
-    #    if num_diffs == 0: break
-    #    # let the device take some time to reconfigure
-    #    time.sleep(0.5)
-    #    permitted_retries -= 1
-    #
-    #if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
-    #assert num_diffs == 0
-    raise Exception()
+    if num_diffs > 0: LOGGER.error('Differences[{:d}]:\n{:s}'.format(num_diffs, str(diff_data.pretty())))
+    assert num_diffs == 0
 
 
 def test_del_network_instance_static_routes(
@@ -429,16 +471,16 @@ def test_del_interfaces_from_network_instance(
     LOGGER.info('results_getconfig = {:s}'.format(str(results_getconfig)))
 
     resources_to_delete = [
-        network_instance_interface(NI_NAME, ni_if_name, ni_sif_index)
-        for ni_if_name, ni_sif_index in NI_INTERFACES
+        network_instance_interface(NI_NAME, if_name, sif_index)
+        for if_name, sif_index, _, _, _ in NI_INTERFACES
     ]
     LOGGER.info('resources_to_delete = {:s}'.format(str(resources_to_delete)))
     results_deleteconfig = driver.DeleteConfig(resources_to_delete)
     LOGGER.info('results_deleteconfig = {:s}'.format(str(results_deleteconfig)))
 
     interface_ids = sorted([
-        '{:s}.{:d}'.format(ni_if_name, ni_sif_index)
-        for ni_if_name, ni_sif_index in NI_INTERFACES
+        '{:s}.{:d}'.format(if_name, sif_index)
+        for if_name, sif_index, _, _, _ in NI_INTERFACES
     ])
     results = set(results_deleteconfig)
     assert len(results) == len(interface_ids)