diff --git a/src/context/Dockerfile b/src/context/Dockerfile
index c39f39e8c082b30492283b7f7285876fbda08716..b5c3cdb860c3a8a51b890ef201d2d14c4abda6a3 100644
--- a/src/context/Dockerfile
+++ b/src/context/Dockerfile
@@ -15,12 +15,8 @@
 FROM python:3.9-slim
 
 # Install dependencies
-# RUN apt-get --yes --quiet --quiet update && \
-#     apt-get --yes --quiet --quiet install wget g++ git && \
-#     rm -rf /var/lib/apt/lists/*
-
-RUN apt-get --yes  update && \
-    apt-get --yes   install wget g++ git && \
+RUN apt-get --yes --quiet --quiet update && \
+    apt-get --yes --quiet --quiet install wget g++ git && \
     rm -rf /var/lib/apt/lists/*
 
 # Set Python to show logs as they occur
diff --git a/src/device/client/DeviceClient.py b/src/device/client/DeviceClient.py
index 3fea0276a8663e701239da12ce68257ea0c02f01..8397b89b8c43917a5a22dee2ed3ad5ec0d105aae 100644
--- a/src/device/client/DeviceClient.py
+++ b/src/device/client/DeviceClient.py
@@ -15,12 +15,16 @@
 import grpc, logging
 from common.Constants import ServiceNameEnum
 from common.Settings import get_service_host, get_service_port_grpc
-from common.proto.context_pb2 import Device, DeviceConfig, DeviceId, Empty,OpticalConfig,OpticalConfigId ,OpticalConfigList
+from common.proto.context_pb2 import (
+    Device, DeviceConfig, DeviceId, Empty,
+    OpticalConfig, OpticalConfigId, OpticalConfigList
+)
 from common.proto.device_pb2 import MonitoringSettings
 from common.proto.device_pb2_grpc import DeviceServiceStub
+from common.proto.optical_device_pb2_grpc import OpenConfigServiceStub
 from common.tools.client.RetryDecorator import retry, delay_exponential
 from common.tools.grpc.Tools import grpc_message_to_json_string
-from common.proto.optical_device_pb2_grpc import OpenConfigServiceStub
+
 LOGGER = logging.getLogger(__name__)
 MAX_RETRIES = 15
 DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0)
@@ -41,12 +45,13 @@ class DeviceClient:
     def connect(self):
         self.channel = grpc.insecure_channel(self.endpoint)
         self.stub = DeviceServiceStub(self.channel)
-        self.openconfig_stub=OpenConfigServiceStub(self.channel)
+        self.openconfig_stub = OpenConfigServiceStub(self.channel)
 
     def close(self):
         if self.channel is not None: self.channel.close()
         self.channel = None
         self.stub = None
+        self.openconfig_stub = None
 
     @RETRY_DECORATOR
     def AddDevice(self, request : Device) -> DeviceId:
@@ -82,23 +87,21 @@ class DeviceClient:
         response = self.stub.MonitorDeviceKpi(request)
         LOGGER.debug('MonitorDeviceKpi result: {:s}'.format(grpc_message_to_json_string(response)))
         return response
-    
+
     def ConfigureOpticalDevice(self, request : OpticalConfig) -> OpticalConfigId:
         LOGGER.debug('ConfigureOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request)))
         response = self.openconfig_stub.ConfigureOpticalDevice(request)
         LOGGER.debug('ConfigureOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response)))
         return response
-    
+
     def GetDeviceConfiguration(self, request : OpticalConfigList) -> Empty:
         LOGGER.debug('ConfigureOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request)))
         response = self.openconfig_stub.GetDeviceConfiguration(request)
         LOGGER.debug('ConfigureOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response)))
         return response
-    
+
     def DisableOpticalDevice(self, request : OpticalConfig) -> Empty:
         LOGGER.debug('DisableOpticalDevice request: {:s}'.format(grpc_message_to_json_string(request)))
         response = self.openconfig_stub.DisableOpticalDevice(request)
         LOGGER.debug('DisableOpticalDevice result: {:s}'.format(grpc_message_to_json_string(response)))
         return response
-    
-    
diff --git a/src/device/service/drivers/oc_driver/OCDriver.py b/src/device/service/drivers/oc_driver/OCDriver.py
index aa86acb559c3a65c52a0f2027a7ac6d1519834af..31c2b533fe57fbc9d97ebfddb08413a106f17c34 100644
--- a/src/device/service/drivers/oc_driver/OCDriver.py
+++ b/src/device/service/drivers/oc_driver/OCDriver.py
@@ -353,5 +353,3 @@ class OCDriver(_Driver):
             else:
                 results = edit_config(self.__netconf_handler, self.__logger, resources, delete=True,conditions=conditions)
         return results
-
-  
diff --git a/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py b/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py
index 0e5d924e1becc1d1c3961bf5c1c138e76329fb41..b8c3812f292270b63dbe1391d922cbd989415458 100644
--- a/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py
+++ b/src/device/service/drivers/oc_driver/templates/Interfaces/interfaces.py
@@ -14,6 +14,7 @@
 
 from yattag import Doc, indent
 import logging
+
 def interface_template (interface_data:dict) :
     data={"name":"eth0","ip":"192.168.1.1","prefix-length":'24'}
     doc, tag, text = Doc().tagtext()
@@ -31,13 +32,10 @@ def interface_template (interface_data:dict) :
                             with tag('config'):
                                 with tag('ip'):text(interface_data["ip"])
                                 with tag('prefix-length'):text(interface_data["prefix-length"])
-                            
+
     result = indent(
                 doc.getvalue(),
                 indentation = ' '*2,
                 newline = '\r\n'
             )        
-
-    return result           
-                    
-                    
\ No newline at end of file
+    return result
diff --git a/src/device/service/drivers/oc_driver/templates/Tools.py b/src/device/service/drivers/oc_driver/templates/Tools.py
index ba1a0c71faa958d2520e8755a2d7572bdecd551e..92607aca88c1581218c97484c7dfcc87831b5912 100644
--- a/src/device/service/drivers/oc_driver/templates/Tools.py
+++ b/src/device/service/drivers/oc_driver/templates/Tools.py
@@ -492,7 +492,3 @@ def extract_openroadm_info(xml_data:str):
             if (clli is not None):
                 roadm_info['clli']=clli.text
     return roadm_info                    
-
-
-    
-              
diff --git a/src/device/service/drivers/oc_driver/templates/VPN/common.py b/src/device/service/drivers/oc_driver/templates/VPN/common.py
index e4233da464f2ed2f7aa7f840505e8979dabba0ac..d84afc5563ad9cf1fbc7fda44800b90876ee302e 100644
--- a/src/device/service/drivers/oc_driver/templates/VPN/common.py
+++ b/src/device/service/drivers/oc_driver/templates/VPN/common.py
@@ -1,4 +1,3 @@
-
 # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,26 +13,6 @@
 # limitations under the License.
 
 
-from yattag import Doc, indent
-import logging
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 def seperate_port_config(resources:list,unwanted_keys=[])->list[list,dict,str]:
     config=[]
     ports={}
@@ -51,8 +30,6 @@ def seperate_port_config(resources:list,unwanted_keys=[])->list[list,dict,str]:
       
     return [config,ports,index]
 
-
-
 def extract_ports (resources:list):
     if len(resources) ==0 :return 
     ports=[]
@@ -60,10 +37,6 @@ def extract_ports (resources:list):
     if flow is not None:
         ports = flow['value']
     return ports 
-    
-
-
-
 
 def filter_config(resources:list,unwanted_keys=[])->list[list,dict,str]:
     config=[]
@@ -80,5 +53,3 @@ def filter_config(resources:list,unwanted_keys=[])->list[list,dict,str]:
     ports = extract_ports(resources=resources)
       
     return [config,ports,index]
-
-
diff --git a/src/device/service/drivers/oc_driver/templates/VPN/physical.py b/src/device/service/drivers/oc_driver/templates/VPN/physical.py
index 82526db067c8237e99ea49156a590620729ab43f..11e6df5d99f8d365eeaeec3960da52f28c717551 100644
--- a/src/device/service/drivers/oc_driver/templates/VPN/physical.py
+++ b/src/device/service/drivers/oc_driver/templates/VPN/physical.py
@@ -261,4 +261,4 @@ def edit_optical_channel (resources:list[dict]):
     if admin_state is None :        
         results.extend(create_optical_channel(resources=resources,ports=ports,config=config)  )
     
-    return results                  
\ No newline at end of file
+    return results
diff --git a/src/device/service/drivers/oc_driver/templates/VPN/roadms.py b/src/device/service/drivers/oc_driver/templates/VPN/roadms.py
index d4a0debbd6171e3de0c2ab71d0858498bfb51970..7e076588cc160cf22d773476119f8e91001a5053 100644
--- a/src/device/service/drivers/oc_driver/templates/VPN/roadms.py
+++ b/src/device/service/drivers/oc_driver/templates/VPN/roadms.py
@@ -354,4 +354,4 @@ def delete_optical_band (resources:list):
                 newline = ''
             )
     results.append(result)
-    return results                          
\ No newline at end of file
+    return results
diff --git a/src/device/service/drivers/oc_driver/templates/VPN/transponder.py b/src/device/service/drivers/oc_driver/templates/VPN/transponder.py
index 07706fe89397fbeed66412eeef77112a2ba787fb..a41c7e9a0853a371bf1f6d8d343913c52f9365ac 100644
--- a/src/device/service/drivers/oc_driver/templates/VPN/transponder.py
+++ b/src/device/service/drivers/oc_driver/templates/VPN/transponder.py
@@ -13,8 +13,6 @@
 # limitations under the License.
 
 
-
-
 from yattag import Doc, indent
 import logging
 
@@ -156,4 +154,4 @@ def edit_optical_channel (resources:list[dict]):
 
     results.extend(create_optical_channel(resources=resources,ports=ports,config=config)  )
     
-    return results                  
\ No newline at end of file
+    return results
diff --git a/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py b/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py
index b10ffde0e9f5689b7774896743e1222ad1c44612..e27fd923a4d3ec4a69b810667545d5bcae235269 100644
--- a/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py
+++ b/src/device/service/drivers/oc_driver/templates/descovery_tool/roadms.py
@@ -1,4 +1,3 @@
-  
 # Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,14 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import re,logging
-import json
+import re
 import lxml.etree as ET
-from typing import Collection, Dict, Any
-
-
-
-
 
 def extract_channel_xmlns (data_xml:str,is_opticalband:bool):
     xml_bytes = data_xml.encode("utf-8")
@@ -49,12 +42,8 @@ def extract_channel_xmlns (data_xml:str,is_opticalband:bool):
         if channels is not None: 
           optical_channel_namespace = channels.tag.replace("optical-bands", "")
           namespace=optical_channel_namespace.replace("{", "").replace("}", "")
-        
-   
     return namespace
 
-
-
 def extract_optical_bands (data_xml:str,namespace:str):
     namespaces={"oc":namespace}
     xml_bytes = data_xml.encode("utf-8")
@@ -64,10 +53,8 @@ def extract_optical_bands (data_xml:str,namespace:str):
 
     if optical_bands is not None :
         optical_bands_ele= optical_bands.findall('.//oc:optical-band',namespaces)
-     
-        
+
         for optical_band in optical_bands_ele:
-            
             band_ele=optical_band.find('.//oc:name',namespaces)
             lower_freq_ele=optical_band.find('.//oc:lower-frequency',namespaces)
             upper_freq_ele=optical_band.find('.//oc:upper-frequency',namespaces)
@@ -97,9 +84,7 @@ def extract_media_channels (data_xml:str):
     op_bands=[]
     if media_channels is not None :
         media_channels_ele= media_channels.findall('.//oc:channel',namespaces)
-
         for optical_band in media_channels_ele:
-            
             band_ele=optical_band.find('.//oc:name',namespaces)
             lower_freq_ele=optical_band.find('.//oc:lower-frequency',namespaces)
             upper_freq_ele=optical_band.find('.//oc:upper-frequency',namespaces)
@@ -119,62 +104,46 @@ def extract_media_channels (data_xml:str):
                 'channel_index':channel_index.text if channel_index is not None else None
             }
             op_bands.append(op_band_obj)
-        
+
     return op_bands
-              
-        
-  
 
 def extract_roadm_ports_old (xml_data:str):
-  
     ports =[]
     pattern = r'\bMG_ON_OPTICAL_PORT_WAVEBAND\b'
     xml_bytes = xml_data.encode("utf-8")
     root = ET.fromstring(xml_bytes)
     with open('xml.log', 'w') as f:
          print(xml_bytes, file=f)
-    
 
     namespace = {'oc': 'http://openconfig.net/yang/platform'}
     ports = []
     components = root.findall('.//oc:component',namespace)
     print(f"component {components}")
-    
-    
+
     for component  in components:
-       
         properties = component.find(".//oc:properties",namespace)
-       
         if (properties is not None):
             for property in properties :
                 value = property.find(".//oc:value",namespace)
-              
                 if (re.search(pattern,value.text)):
                     name_element= component.find(".//oc:name",namespace)
                     ports.append(name_element.text)
     return ports     
 
-
 def extract_roadm_ports (xml_data:str):
-  
     ports =[]
     pattern2=r'\bMG_ON_PORT_TYPE'
     pattern = r'\bMG_ON_OPTICAL_PORT_WAVEBAND\b'
     xml_bytes = xml_data.encode("utf-8")
     root = ET.fromstring(xml_bytes)
 
-    
-
     namespace = {'oc': 'http://openconfig.net/yang/platform'}
     ports = []
     components = root.findall('.//oc:component',namespace)
     #print(f"component {components}")
-    
-    
+
     for component  in components:
-       
         properties = component.find(".//oc:properties",namespace)
-       
         if (properties is not None):
             for property in properties :
                 value = property.find(".//oc:value",namespace)
@@ -184,50 +153,34 @@ def extract_roadm_ports (xml_data:str):
                    name_element= component.find(".//oc:name",namespace)
                    print('value',value.text)
                    ports.append((name_element.text,value.text))
-              
     return ports                
 
-
-  
 def roadm_values_extractor (data_xml:str,resource_keys:list,dic:dict):
-     ports_result=[]
-     ports = extract_roadm_ports(data_xml)
-     namespcae= extract_channel_xmlns(data_xml,True)
-     optical_bands=extract_optical_bands(data_xml=data_xml,namespace=namespcae)
-     media_cahannels=extract_media_channels(data_xml)
-     
-     
-     if len(ports)>0 :
-      for port in ports :
-        name,type=port
-        resource_key = '/endpoints/endpoint[{:s}]'.format(name)
-        resource_value = {'uuid': name, 'type':type}
-    
-        ports_result.append((resource_key, resource_value))
-      
-     return [ports_result,optical_bands,media_cahannels]   
- 
- 
- 
- #/////////////// OpenRoadm //////////////
- 
- 
+    ports_result=[]
+    ports = extract_roadm_ports(data_xml)
+    namespcae= extract_channel_xmlns(data_xml,True)
+    optical_bands=extract_optical_bands(data_xml=data_xml,namespace=namespcae)
+    media_cahannels=extract_media_channels(data_xml)
+    if len(ports)>0 :
+        for port in ports :
+            name,type=port
+            resource_key = '/endpoints/endpoint[{:s}]'.format(name)
+            resource_value = {'uuid': name, 'type':type}
+            ports_result.append((resource_key, resource_value))
+    return [ports_result,optical_bands,media_cahannels]   
+
+#/////////////// OpenRoadm //////////////
+
 def extract_roadm_circuits_pack (xml_data:str):
-  
-   
     xml_bytes = xml_data.encode("utf-8")
     root = ET.fromstring(xml_bytes)
     # with open('xml.log', 'w') as f:
     #      print(xml_bytes, file=f)
-    
-    
+
     namespace = {'oc': "http://org/openroadm/device"}
-    
     circuits = root.findall('.//oc:circuit-packs',namespace)
-  
     circuits_list =[]
     # print(f"component {components}")
-    
     if (circuits is not None):
         for circuit  in circuits:
             circuit_info ={}
@@ -240,20 +193,16 @@ def extract_roadm_circuits_pack (xml_data:str):
             slot= circuit.find("./oc:slot",namespace)
             shelf= circuit.find("./oc:shelf",namespace)
             ports = circuit.findall("./oc:ports",namespace)
-           
-            
+
             if (ports is not None):
-                
                 for port in ports :
                     port_info={}
                     port_name=port.find('./oc:port-name',namespace)
                     port_qual= port.find("./oc:port-qual",namespace)
-                   
                     if port_name is not None :
                         port_info["port_name"]=port_name.text
                     if port_qual is not None :
                         port_info["port_qual"]=port_qual.text
-    
                     circuit_ports.append(port_info)            
             if (circuit_name is not None):
                 circuit_info["circuit_name"]=circuit_name.text
@@ -269,17 +218,10 @@ def extract_roadm_circuits_pack (xml_data:str):
                 circuit_info["slot"]=slot.text
             if (shelf is not None):
                 circuit_info["shelf"]=shelf.text
-       
             circuit_info["ports"]=circuit_ports 
-                                   
             circuits_list.append(circuit_info)   
-          
-        
-   
     return circuits_list            
 
-
-
 def extract_openroadm_info(xml_data:str):
     roadm_info={"node-id":None,"node-number":None,"node-type":None,'clli':None}
     xml_bytes = xml_data.encode("utf-8")
@@ -300,7 +242,6 @@ def extract_openroadm_info(xml_data:str):
                 roadm_info['node-type']=node_type.text
             if (clli is not None):
                 roadm_info['clli']=clli.text
- 
     return roadm_info             
 
 def  openroadm_values_extractor (data_xml:str,resource_keys:list,dic:dict):
@@ -309,19 +250,11 @@ def  openroadm_values_extractor (data_xml:str,resource_keys:list,dic:dict):
     circuits_list = extract_roadm_circuits_pack(data_xml)
     dic["openroadm_info"]=openroadm_info
     dic["circuits"]=circuits_list
-    
+
     for circuit in circuits_list :
- 
         for port in circuit['ports']:
             if port is not None and  'port_name' in port :
                 resource_key = '/endpoints/endpoint[{:s}]'.format(port["port_name"])
                 resource_value = {'uuid': port["port_name"], 'type':port["port_qual"] if "port_qual" in port else None}
                 ports_result.append((resource_key, resource_value))
     return [dic,ports_result]            
-    
-    
-    
-    
-    
-    
-              
\ No newline at end of file
diff --git a/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py b/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py
index 2ad664b99443a7fca2e2e75b375d7b49748a16ba..e0ffc12ffd63f2e5b32ea4c7a813acee7d146c58 100644
--- a/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py
+++ b/src/device/service/drivers/oc_driver/templates/descovery_tool/transponders.py
@@ -299,4 +299,3 @@ def transponder_values_extractor(data_xml:str,resource_keys:list,dic:dict):
       
    
     return [transceivers_dic,optical_channels_params,channel_namespace,endpoints,ports_result]
-  
\ No newline at end of file