diff --git a/proto/openconfig_device.proto b/proto/optical_device.proto
similarity index 89%
rename from proto/openconfig_device.proto
rename to proto/optical_device.proto
index 7ecb591f7d1fb4e3a29e7a35cf61c7af19a09b0d..81147ee97af472615cbc1139bb2fda13ef6b0ff2 100644
--- a/proto/openconfig_device.proto
+++ b/proto/optical_device.proto
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 syntax = "proto3";
-package openconfig_device;
+package optical_device;
 
 import "context.proto";
 
@@ -21,4 +21,6 @@ service OpenConfigService {
   rpc AddOpenConfigDevice   (context.OpticalConfig) returns (context.OpticalConfigId) {}
   rpc ConfigureOpticalDevice(context.OpticalConfig) returns (context.Empty          ) {}
   rpc DisableOpticalDevice(context.OpticalConfig) returns (context.Empty          ) {}
+  rpc GetDeviceConfiguration(context.OpticalConfigList) returns (context.Empty) {}
+  
 }
diff --git a/src/device/client/DeviceClient.py b/src/device/client/DeviceClient.py
index 56c25e5673c6bc0dea7f74b80c2d15026bdfdb4b..8a0f16210c41e9ea000ca7ec4162a432dc897f0f 100644
--- a/src/device/client/DeviceClient.py
+++ b/src/device/client/DeviceClient.py
@@ -15,12 +15,12 @@
 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
+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.tools.client.RetryDecorator import retry, delay_exponential
 from common.tools.grpc.Tools import grpc_message_to_json_string
-from common.proto.openconfig_device_pb2_grpc import OpenConfigServiceStub
+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)
@@ -89,8 +89,16 @@ class DeviceClient:
         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/DeviceService.py b/src/device/service/DeviceService.py
index 0e1ce79f955607cceed2bb791e44ae547b5772f5..40508ccabed5a272d4f01a88de607fdfa91c31c2 100644
--- a/src/device/service/DeviceService.py
+++ b/src/device/service/DeviceService.py
@@ -16,7 +16,7 @@ import os
 from common.Constants import ServiceNameEnum
 from common.Settings import get_service_port_grpc
 from common.proto.device_pb2_grpc import add_DeviceServiceServicer_to_server
-from common.proto.openconfig_device_pb2_grpc import add_OpenConfigServiceServicer_to_server
+from common.proto.optical_device_pb2_grpc import add_OpenConfigServiceServicer_to_server
 from common.tools.service.GenericGrpcService import GenericGrpcService
 from device.Config import LOAD_ALL_DEVICE_DRIVERS
 from .driver_api.DriverInstanceCache import DriverInstanceCache
diff --git a/src/device/service/OpenConfigServicer.py b/src/device/service/OpenConfigServicer.py
index fa634eed85e0200885dc40028fc5dd51afdc6df2..affdf304a48088c74aae32f5f2dd2ffa2eb51076 100644
--- a/src/device/service/OpenConfigServicer.py
+++ b/src/device/service/OpenConfigServicer.py
@@ -16,7 +16,7 @@ import grpc, logging, json
 from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
 from common.method_wrappers.ServiceExceptions import NotFoundException
 from common.proto.context_pb2 import (
-    Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, OpticalConfig
+    Device, DeviceId, DeviceOperationalStatusEnum, Empty, OpticalConfig, OpticalConfig,OpticalConfigList
 )
 from common.proto.device_pb2_grpc import DeviceServiceServicer
 from common.tools.context_queries.Device import get_device
@@ -105,6 +105,42 @@ class OpenConfigServicer(DeviceServiceServicer):
         return Empty()
     
     
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetDeviceConfiguration (self, request : OpticalConfigList, context : grpc.ServicerContext) -> Empty:
+
+        for configs in request.opticalconfigs:
+
+            device_uuid = configs.device_id.device_uuid.uuid
+
+            LOGGER.info(f" Get DeviceConfigure  {device_uuid}")
+            try:
+                context_client = ContextClient()
+                device = get_device(
+                    context_client, device_uuid, rw_copy=True, include_endpoints=True, include_components=False,
+                    include_config_rules=False)
+         
+                if device is None:
+                    raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice')
+               
+                driver : _Driver = get_driver(self.driver_instance_cache, device)
+           
+                results = driver.GetConfig(resource_keys=[]) 
+                for resource_data in results :
+                    resource_key, resource_value = resource_data
+                           
+                    if resource_key.startswith('/opticalconfigs/opticalconfig/'):
+                        if 'opticalconfig' in resource_value:
+                                context_client.SetOpticalConfig(resource_value['opticalconfig'])
+
+                #TODO: add a control with the NETCONF get
+                #driver.GetConfig(resource_keys=filter_fields)
+            except Exception as e:
+                    LOGGER.info("error in configuring %s",e)    
+            return Empty()
+        
+    
+    
+    
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def DisableOpticalDevice (self, request : OpticalConfig, context : grpc.ServicerContext) -> Empty:
         
diff --git a/src/webui/service/base_optical/route.py b/src/webui/service/base_optical/route.py
index e3f37de51d7f17633867db9ab3c0128da39ffdf1..a07126819712cda6e59ea03b711d02d43fe6000a 100644
--- a/src/webui/service/base_optical/route.py
+++ b/src/webui/service/base_optical/route.py
@@ -14,16 +14,22 @@
 
 
 from flask import current_app, render_template, Blueprint, flash, session, redirect, url_for
-from common.proto.context_pb2 import Empty, OpticalLink, LinkId, OpticalLinkList
+from common.proto.context_pb2 import Empty, OpticalLink, LinkId, OpticalLinkList ,OpticalConfigList
 from common.tools.context_queries.EndPoint import get_endpoint_names
 from common.tools.context_queries.Link import get_link
 from common.tools.context_queries.Topology import get_topology
 from context.client.ContextClient import ContextClient
-
+from device.client.DeviceClient import DeviceClient
 
 base_optical = Blueprint('base_optical', __name__, url_prefix='/base_optical')
-
+device_client = DeviceClient()
+context_client = ContextClient()
 @base_optical.get('/')
 def home():
-    
+    context_client.connect()
+    opticalConfig_list:OpticalConfigList = context_client.GetOpticalConfig(Empty())
+    context_client.close()
+    device_client.connect()
+    device_client.GetDeviceConfiguration(opticalConfig_list)
+    device_client.close()
     return render_template("base_optical/home.html")
\ No newline at end of file