diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a4f7a9518fd65b4624cc3ca6d9839f22fcc0360e..ccb56ae545d102f96e4cd9aa173197b038a0d957 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -36,7 +36,7 @@ include:
   #- local: '/src/policy/.gitlab-ci.yml'
   #- local: '/src/automation/.gitlab-ci.yml'
   #- local: '/src/forecaster/.gitlab-ci.yml'
-  #- local: '/src/webui/.gitlab-ci.yml'
+  - local: '/src/webui/.gitlab-ci.yml'
   #- local: '/src/l3_distributedattackdetector/.gitlab-ci.yml'
   #- local: '/src/l3_centralizedattackdetector/.gitlab-ci.yml'
   #- local: '/src/l3_attackmitigator/.gitlab-ci.yml'
diff --git a/src/opticalcontroller/OpticalController.py b/src/opticalcontroller/OpticalController.py
index 8b5818c773618cdbe62f8618edc6c71a99db777c..9168fe21f5464d5542d10f97c93195544ebf8571 100644
--- a/src/opticalcontroller/OpticalController.py
+++ b/src/opticalcontroller/OpticalController.py
@@ -12,18 +12,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import time
 from flask import Flask
 from flask import render_template
 from flask_restplus import Resource, Api
 from tools import *
 from variables import *
 from RSA import RSA
-import time , logging
-from common.proto.context_pb2 import TopologyId , OpticalLink
-import json
-from google.protobuf.message import Message
+from common.proto.context_pb2 import TopologyId
 from google.protobuf.json_format import MessageToDict
-from common.tools.object_factory.OpticalLink import order_dict
+
+
 global rsa
 global links_dict
 rsa = None
@@ -105,6 +104,8 @@ class AddFlexLightpath(Resource):
                     return rsa.optical_bands[optical_band_id], 200
         else:
             return "Error", 404
+
+
 # @optical.route('/DelFlexLightpath/<string:src>/<string:dst>/<int:bitrate>/<int:o_band_id>')
 @optical.route('/DelFlexLightpath/<string:src>/<string:dst>/<int:bitrate>/<int:o_band_id>')
 @optical.route('/DelFlexLightpath/<string:src>/<string:dst>/<int:bitrate>/<int:o_band_id>/<int:flow_id>')
@@ -147,17 +148,12 @@ class DelFLightpath(Resource):
                         return "flow {} not matching".format(flow_id), 404
                 else:
                     if match1:
-                      
                         # if delete_band !=0 and ob_id is not None:
                         #     print(f"delete_lightpath {delete_band} and ob_id {ob_id}")
                         #     if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0:
                         #         return "DELETE_NOT_ALLOWED" ,400
-                            
-
                         rsa.del_flow(flow,flow_id,ob_id)
-                        
-                    
-                    
+
                         if debug:
                             print(f"vor ob_id {ob_id} rsa.optical_bands  {rsa.optical_bands[ob_id]}")
                             print(f"rsa.links_dict {rsa.links_dict}")
@@ -166,9 +162,6 @@ class DelFLightpath(Resource):
                         return "flow {} not matching".format(flow_id), 404
             else:
                 return "flow id {} does not exist".format(flow_id), 404
-   
-            
-         
 
 
 @optical.route('/DelOpticalBand/<string:src>/<string:dst>/<int:o_band_id>',methods=['DELETE'])
@@ -225,11 +218,6 @@ class DelOpticalBand(Resource):
                     return "flow for ob_id {} not found".format(ob_id),400        
             else:
                 return "ob_id  {} does not exist".format(ob_id), 404
-   
-            
-         
-
-
 
 
 @optical.route('/DelLightpath/<int:flow_id>/<string:src>/<string:dst>/<int:bitrate>')
@@ -267,6 +255,7 @@ class GetFlows(Resource):
         except:
             return "Error", 404
 
+
 @optical.route('/GetOpticalBands')
 @optical.response(200, 'Success')
 @optical.response(404, 'Error, not found')
@@ -312,8 +301,8 @@ class GetFlows(Resource):
             return links, 200
         except:
             return "Error", 404
-        
-                
+
+
 @optical.route('/GetTopology/<path:context_id>/<path:topology_id>',methods=['GET'])
 @optical.response(200, 'Success')
 @optical.response(404, 'Error, not found')
@@ -329,56 +318,45 @@ class GetTopology(Resource):
         topog_id.topology_uuid.uuid=topology_id
         topog_id.context_id.context_uuid.uuid=context_id
         
-        try: 
-                links_dict={"optical_links":[]}
-                node_dict = {}
-                topo , nodes = readTopologyDataFromContext(topog_id)
-
-                for link in topo: 
-                      link_dict_type = MessageToDict(link, preserving_proto_field_name=True)
-                      
-                      if "c_slots" in link_dict_type["optical_details"] : 
-                          link_dict_type["optical_details"]["c_slots"]=order_dict(link_dict_type["optical_details"]["c_slots"])
-                          
-                      if "l_slots" in link_dict_type["optical_details"] : 
-                          link_dict_type["optical_details"]["l_slots"]=order_dict(link_dict_type["optical_details"]["l_slots"])
-                          
-                      if "s_slots" in link_dict_type["optical_details"] : 
-                          link_dict_type["optical_details"]["s_slots"]=order_dict(link_dict_type["optical_details"]["s_slots"])
-                          
-                      links_dict["optical_links"].append(link_dict_type)
-                    
-                    
-                
-                for device in nodes :
-                    dev_dic = {}
-                    dev_dic = {
-                            "id":device.device_id.device_uuid.uuid,
-                            #"ip":f"10.30.2.{207+i}",
-                            #"port":"50001",
-                            "type":"OC-ROADM" if device.device_type =="optical-roadm" else "OC-TP",
-                            "driver": "OpticalOC"
-                        }
-                    node_dict[device.name]=dev_dic
-                    #i+=1
-                    #print(f"refresh_optical controller optical_links_dict= {links_dict}")    
-                    #print(f"refresh_optical controller node_dict  {node_dict}") 
-      
-                rsa = RSA(node_dict, links_dict)
-                if debug:
-                    print(rsa.init_link_slots2(testing))
-            
-            
-                return  "ok" ,200
+        try:
+            links_dict = {"optical_links": []}
+            node_dict = {}
+            topo, nodes = readTopologyDataFromContext(topog_id)
+
+            for link in topo: 
+                link_dict_type = MessageToDict(link, preserving_proto_field_name=True)
+
+                if "c_slots" in link_dict_type["optical_details"]:
+                    link_dict_type["optical_details"]["c_slots"] = link_dict_type["optical_details"]["c_slots"]
+
+                if "l_slots" in link_dict_type["optical_details"]:
+                    link_dict_type["optical_details"]["l_slots"] = link_dict_type["optical_details"]["l_slots"]
+
+                if "s_slots" in link_dict_type["optical_details"]:
+                    link_dict_type["optical_details"]["s_slots"] = link_dict_type["optical_details"]["s_slots"]
+
+                links_dict["optical_links"].append(link_dict_type)
+
+            for device in nodes :
+                dev_dic = {
+                    "id":device.device_id.device_uuid.uuid,
+                    #"ip":f"10.30.2.{207+i}",
+                    #"port":"50001",
+                    "type":"OC-ROADM" if device.device_type =="optical-roadm" else "OC-TP",
+                    "driver": "OpticalOC"
+                }
+                node_dict[device.name] = dev_dic
+                #i+=1
+                #print(f"refresh_optical controller optical_links_dict= {links_dict}")
+                #print(f"refresh_optical controller node_dict  {node_dict}")
+
+            rsa = RSA(node_dict, links_dict)
+            if debug:
+                print(rsa.init_link_slots2(testing))
+            return "ok", 200
         except Exception as e:
             print(f"err {e}")
             return "Error", 400
-        
 
-
-    
 if __name__ == '__main__':
-    
-
-    
     app.run(host='0.0.0.0', port=10060)
diff --git a/src/tests/ofc24/.gitlab-ci.yml b/src/tests/ofc24/.gitlab-ci.yml
index d7bda488689abe88b8abba9a054307fcf377af46..af4e1aaa6b98beb21a85a4746f61cf9d4916dba7 100644
--- a/src/tests/ofc24/.gitlab-ci.yml
+++ b/src/tests/ofc24/.gitlab-ci.yml
@@ -138,6 +138,7 @@ end2end_test ofc24:
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
+    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/webuiservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/opticalcontrollerservice -c server
     - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi
 
diff --git a/src/webui/service/optical_link/routes.py b/src/webui/service/optical_link/routes.py
index dfb85c439e435e80dfae94eea31c2132785e3020..bc4ed8c6a14d31512398341984029f07fc2bcc6c 100644
--- a/src/webui/service/optical_link/routes.py
+++ b/src/webui/service/optical_link/routes.py
@@ -16,11 +16,8 @@
 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.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 common.tools.object_factory.OpticalLink import order_dict
 from context.client.ContextClient import ContextClient
-import logging
 
 optical_link = Blueprint('optical_link', __name__, url_prefix='/optical_link')
 context_client = ContextClient()
@@ -42,16 +39,17 @@ def home():
     if grpc_topology is None:
         flash('Context({:s})/Topology({:s}) not found'.format(str(context_uuid), str(topology_uuid)), 'danger')
     else:
-        topo_link_uuids = {link_id.link_uuid.uuid for link_id in grpc_topology.link_ids}
-        grpc_links: OpticalLinkList = context_client.GetOpticalLinkList(Empty())
+        grpc_links : OpticalLinkList = context_client.GetOpticalLinkList(Empty())
         for link_ in grpc_links.optical_links:
-           
             links.append(link_)
             endpoint_ids.extend(link_.link_endpoint_ids)
         device_names, endpoints_data = get_endpoint_names(context_client, endpoint_ids)
     context_client.close()
 
-    return render_template('optical_link/home.html', links=links, device_names=device_names, endpoints_data=endpoints_data)
+    return render_template(
+        'optical_link/home.html', links=links, device_names=device_names,
+        endpoints_data=endpoints_data
+    )
 
 
 @optical_link.route('detail/<path:link_uuid>', methods=('GET', 'POST'))
@@ -68,22 +66,21 @@ def detail(link_uuid: str):
         device_names, endpoints_data = dict(), dict()
     else:
         device_names, endpoints_data = get_endpoint_names(context_client, link_obj.link_endpoint_ids)
-        c_slots= order_dict( link_obj.optical_details.c_slots)
-        l_slots= order_dict( link_obj.optical_details.l_slots)
-        s_slots= order_dict( link_obj.optical_details.s_slots)
-        
+        c_slots = link_obj.optical_details.c_slots
+        l_slots = link_obj.optical_details.l_slots
+        s_slots = link_obj.optical_details.s_slots
+
     context_client.close()
-    
-    return render_template('optical_link/detail.html',link=link_obj, device_names=device_names, endpoints_data=endpoints_data
-                           ,c_slots=c_slots,l_slots=l_slots,s_slots=s_slots)
+
+    return render_template(
+        'optical_link/detail.html', link=link_obj, device_names=device_names,
+        endpoints_data=endpoints_data, c_slots=c_slots, l_slots=l_slots, s_slots=s_slots
+    )
 
 
 @optical_link.get('<path:link_uuid>/delete')
 def delete(link_uuid):
     try:
-
-       
-
         request = LinkId()
         request.link_uuid.uuid = link_uuid # pylint: disable=no-member
         context_client.connect()
@@ -98,16 +95,14 @@ def delete(link_uuid):
 
 
 @optical_link.get("delete_all")
-def delete_all () :
-    
-    try : 
+def delete_all():
+    try:
         context_client.connect()
-        optical_link_list:OpticalLinkList = context_client.GetOpticalLinkList(Empty())
+        optical_link_list : OpticalLinkList = context_client.GetOpticalLinkList(Empty())
         for optical_link in optical_link_list.optical_links:
-            
             context_client.DeleteOpticalLink(optical_link.link_id)
-        context_client.close()    
-        flash(f"All Optical Link Deleted Successfully",'success')    
-    except Exception as e :
-        flash(f"Problem in delete all optical link  => {e}",'danger')    
-    return redirect(url_for('optical_link.home'))    
+        context_client.close()
+        flash(f"All Optical Link Deleted Successfully",'success')
+    except Exception as e:
+        flash(f"Problem in delete all optical link  => {e}",'danger')
+    return redirect(url_for('optical_link.home'))