diff --git a/src/device/service/__main__.py b/src/device/service/__main__.py
index 1f0adfa8f1dd8b3e307ed202967b1d5195171f11..5c9b41531e7bc579cbe5cc563f20b193f6bc5a90 100644
--- a/src/device/service/__main__.py
+++ b/src/device/service/__main__.py
@@ -34,7 +34,7 @@ def main():
     global LOGGER # pylint: disable=global-statement
 
     log_level = get_log_level()
-    logging.basicConfig(level=log_level)
+    logging.basicConfig(level=log_level, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s")
     logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
     logging.getLogger('apscheduler.scheduler').setLevel(logging.WARNING)
     logging.getLogger('monitoring-client').setLevel(logging.WARNING)
diff --git a/src/device/service/drivers/openconfig/templates/Interfaces.py b/src/device/service/drivers/openconfig/templates/Interfaces.py
index 33f977524c6f65655fbe17f6d2d95a7cfc223967..3f5b104f2de01137c2424e776dc60b8416088de6 100644
--- a/src/device/service/drivers/openconfig/templates/Interfaces.py
+++ b/src/device/service/drivers/openconfig/templates/Interfaces.py
@@ -37,6 +37,10 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
         #interface_type = xml_interface.find('oci:config/oci:type', namespaces=NAMESPACES)
         #add_value_from_tag(interface, 'type', interface_type)
 
+        interface_type = xml_interface.find('oci:config/oci:type', namespaces=NAMESPACES)
+        interface_type.text = interface_type.text.replace('ianaift:','')
+        add_value_from_tag(interface, 'type', interface_type)
+
         interface_mtu = xml_interface.find('oci:config/oci:mtu', namespaces=NAMESPACES)
         add_value_from_tag(interface, 'mtu', interface_mtu, cast=int)
 
@@ -49,12 +53,15 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
             subinterface = {}
 
             add_value_from_tag(subinterface, 'name', interface_name)
+            add_value_from_tag(subinterface, 'mtu', interface_mtu)
+            add_value_from_tag(subinterface, 'type', interface_type)
+
 
             subinterface_index = xml_subinterface.find('oci:index', namespaces=NAMESPACES)
             if subinterface_index is None or subinterface_index.text is None: continue
             add_value_from_tag(subinterface, 'index', subinterface_index, cast=int)
 
-            vlan_id = xml_subinterface.find('ocv:vlan/ocv:config/ocv:vlan-id', namespaces=NAMESPACES)
+            vlan_id = xml_subinterface.find('ocv:vlan/ocv:match/ocv:single-tagged/ocv:config/ocv:vlan-id', namespaces=NAMESPACES)
             add_value_from_tag(subinterface, 'vlan_id', vlan_id, cast=int)
 
             # TODO: implement support for multiple IP addresses per subinterface
diff --git a/src/device/service/drivers/openconfig/templates/NetworkInstances.py b/src/device/service/drivers/openconfig/templates/NetworkInstances.py
index b091a0d206195a6c2ce94008628071cd9e30944f..8b1587a0d59672ff08f777568feff776aa35cbd1 100644
--- a/src/device/service/drivers/openconfig/templates/NetworkInstances.py
+++ b/src/device/service/drivers/openconfig/templates/NetworkInstances.py
@@ -27,6 +27,9 @@ XPATH_NI_IIP_AP         = ".//ocni:inter-instance-policies/ocni:apply-policy"
 XPATH_NI_IIP_AP_IMPORT  = ".//ocni:config/ocni:import-policy"
 XPATH_NI_IIP_AP_EXPORT  = ".//ocni:config/ocni:export-policy"
 
+XPATH_NI_CPOINTS          = ".//ocni:connection-points/ocni:connection-point"
+XPATH_NI_CPOINTS_ENDPOINT = ".//ocni:endpoints/ocni:endpoint/ocni:remote/ocni:config"
+
 def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
     response = []
     for xml_network_instance in xml_data.xpath(XPATH_NETWORK_INSTANCES, namespaces=NAMESPACES):
@@ -39,10 +42,11 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
         add_value_from_tag(network_instance, 'name', ni_name)
 
         ni_type = xml_network_instance.find('ocni:config/ocni:type', namespaces=NAMESPACES)
+        ni_type.text = ni_type.text.replace('oc-ni-types:','')
         add_value_from_tag(network_instance, 'type', ni_type)
 
-        #ni_router_id = xml_network_instance.find('ocni:config/ocni:router-id', namespaces=NAMESPACES)
-        #add_value_from_tag(network_instance, 'router_id', ni_router_id)
+        ni_router_id = xml_network_instance.find('ocni:config/ocni:router-id', namespaces=NAMESPACES)
+        add_value_from_tag(network_instance, 'router_id', ni_router_id)
 
         ni_route_dist = xml_network_instance.find('ocni:config/ocni:route-distinguisher', namespaces=NAMESPACES)
         add_value_from_tag(network_instance, 'route_distinguisher', ni_route_dist)
@@ -53,6 +57,20 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
         if len(network_instance) == 0: continue
         response.append(('/network_instance[{:s}]'.format(network_instance['name']), network_instance))
 
+        for xml_cpoints in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES):
+            cpoint = {}
+            add_value_from_tag(cpoint, 'name', ni_name)
+
+            connection_point = xml_cpoints.find('ocni:connection-point-id', namespaces=NAMESPACES)
+            add_value_from_tag(cpoint, 'connection_point', connection_point)
+
+            for xml_endpoint in xml_cpoints.xpath(XPATH_NI_CPOINTS_ENDPOINT, namespaces=NAMESPACES):
+                remote_system = xml_endpoint.find('ocni:remote-system', namespaces=NAMESPACES)
+                add_value_from_tag(cpoint, 'remote_system', remote_system)
+
+                VC_ID = xml_endpoint.find('ocni:virtual-circuit-identifier', namespaces=NAMESPACES)
+                add_value_from_tag(cpoint, 'VC_ID', VC_ID)
+
         for xml_protocol in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES):
             #LOGGER.info('xml_protocol = {:s}'.format(str(ET.tostring(xml_protocol))))
 
@@ -71,6 +89,8 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
             if protocol['identifier'] == 'BGP':
                 bgp_as = xml_protocol.find('ocni:bgp/ocni:global/ocni:config/ocni:as', namespaces=NAMESPACES)
                 add_value_from_tag(protocol, 'as', bgp_as, cast=int)
+                bgp_id = xml_protocol.find('ocni:bgp/ocni:global/ocni:config/ocni:router-id', namespaces=NAMESPACES)
+                add_value_from_tag(protocol, 'router_id', bgp_id)
 
             resource_key = '/network_instance[{:s}]/protocols[{:s}]'.format(
                 network_instance['name'], protocol['identifier'])
@@ -94,7 +114,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]:
             add_value_from_tag(table_connection, 'address_family', address_family,
                                cast=lambda s: s.replace('oc-types:', ''))
 
-            default_import_policy = xml_table_connection.find('ocni:default-import-policy', namespaces=NAMESPACES)
+            default_import_policy = xml_table_connection.find('ocni:config/ocni:default-import-policy', namespaces=NAMESPACES)
             add_value_from_tag(table_connection, 'default_import_policy', default_import_policy)
 
             resource_key = '/network_instance[{:s}]/table_connections[{:s}][{:s}][{:s}]'.format(
diff --git a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml
index d266f819c41355ba8a30086415f2bba3b68f1f3d..17b7708fac6bd920bb6c6e01feb526d59f15f608 100644
--- a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml
+++ b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml
@@ -1,35 +1,41 @@
-<interfaces xmlns="http://openconfig.net/yang/interfaces">
+<interfaces xmlns="http://openconfig.net/yang/interfaces" 
+            xmlns:oc-ip="http://openconfig.net/yang/interfaces/ip" >
     <interface>
         <name>{{name}}</name>
-        {% if operation is not defined or operation != 'delete' %}
         <config>
             <name>{{name}}</name>
+        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:{{type}}</type>
+      {% if mtu is defined %}<mtu>{{mtu}}</mtu>{% endif%}
+      <enabled>true</enabled>
         </config>
-        {% endif %}
         <subinterfaces>
-            <subinterface{% if operation is defined %} xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="{{operation}}"{% endif %}>
+            <subinterface>
                 <index>{{index}}</index>
-                {% if operation is not defined or operation != 'delete' %}
                 <config>
                     <index>{{index}}</index>
-                    <enabled>true</enabled>
+                    <description>{{description}}</description>
                 </config>
                 <vlan xmlns="http://openconfig.net/yang/vlan">
-                    <config>
-                        <vlan-id>{{vlan_id}}</vlan-id>
-                    </config>
-                </vlan>
-                <ipv4 xmlns="http://openconfig.net/yang/interfaces/ip">
-                    <addresses>
-                        <address>
-                            <ip>{{address_ip}}</ip>
+                    <match>
+                        <single-tagged>
                             <config>
-                                <ip>{{address_ip}}</ip>
-                                <prefix-length>{{address_prefix}}</prefix-length>
+                                <vlan-id>{{vlan_id}}</vlan-id>
                             </config>
-                        </address>
-                    </addresses>
-                </ipv4>
+                        </single-tagged>
+                    </match>
+                </vlan>
+        {% if address_ip is defined %}
+                <oc-ip:ipv4>
+                    <oc-ip:addresses>
+                        <oc-ip:address>
+                            <oc-ip:ip>{{address_ip}}</oc-ip:ip>
+                            <oc-ip:config>
+                                <oc-ip:ip>{{address_ip}}</oc-ip:ip>
+                                <oc-ip:prefix-length>{{address_prefix}}</oc-ip:prefix-length>
+                            </oc-ip:config>
+                        </oc-ip:address>
+                    </oc-ip:addresses>
+                </oc-ip:ipv4>
                 {% endif %}
             </subinterface>
         </subinterfaces>
diff --git a/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60272e5fba4dd87c9bc48ef596197c2508b75e59
--- /dev/null
+++ b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml
@@ -0,0 +1,29 @@
+<network-instances xmlns="http://openconfig.net/yang/network-instance">
+    <network-instance>
+        <name>{{name}}</name>
+        <connection-points>
+            <connection-point>
+                <connection-point-id>{{connection_point}}</connection-point-id>
+                <config>
+                    <connection-point-id>{{connection_point}}</connection-point-id>
+                </config>
+                <endpoints>
+                    <endpoint>
+                        <endpoint-id>{{connection_point}}</endpoint-id>
+                        <config>
+                            <endpoint-id>{{connection_point}}</endpoint-id>
+                            <precedence>1</precedence>
+                            <type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:REMOTE</type>
+                        </config>
+                        <remote>
+                            <config>
+                                <virtual-circuit-identifier>{{VC_ID}}</virtual-circuit-identifier>
+                                <remote-system>{{remote_system}}</remote-system>
+                            </config>
+                        </remote>
+                    </endpoint>
+                </endpoints>
+            </connection-point>
+        </connection-points>
+    </network-instance>
+</network-instances>
diff --git a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml
index 9362c09c6cfebcd1f83b05002f58eda51724b911..1944778c6fc4fcee96e79f3ce93ce044869226e5 100644
--- a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml
+++ b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml
@@ -5,7 +5,8 @@
         <config>
             <name>{{name}}</name>
             <type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:{{type}}</type>
-            <description>{{description}}</description>
+            {% if type=='L3VRF' %}
+            {% if description is defined %}<description>{{description}}</description>{% endif %}
             {% if router_id is defined %}<router-id>{{router_id}}</router-id>{% endif %}
             <route-distinguisher>{{route_distinguisher}}</route-distinguisher>
             <enabled>true</enabled>
@@ -13,8 +14,29 @@
         <encapsulation>
             <config>
                 <encapsulation-type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:MPLS</encapsulation-type>
+                <label-allocation-mode xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:INSTANCE_LABEL</label-allocation-mode>
             </config>
         </encapsulation>
+            {% endif %}
+            {% if type=='L2VSI' %}
+            {% if description is defined %}<description>{{description}}</description>{% endif %}
+            <enabled>false</enabled>
+            <mtu>1500</mtu>
+        </config>
+        <encapsulation>
+            <config>
+                <encapsulation-type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:MPLS</encapsulation-type>
+            </config>
+        </encapsulation>
+        <fdb>
+            <config>
+                <mac-learning>true</mac-learning>
+                <maximum-entries>1000</maximum-entries>
+                <mac-aging-time>300</mac-aging-time>
+            </config>
+        </fdb>
+            {% endif %}
+
         {% endif %}
     </network-instance>
 </network-instances>