diff --git a/src/load_generator/load_gen/RequestGenerator.py b/src/load_generator/load_gen/RequestGenerator.py
index e983f90dc998c60d8ed95641651ed882812a1519..b7b1432f4fde59fc093f6dc8b9c6590cbcd77e49 100644
--- a/src/load_generator/load_gen/RequestGenerator.py
+++ b/src/load_generator/load_gen/RequestGenerator.py
@@ -15,6 +15,7 @@
 import logging, json, random, threading
 from typing import Dict, Optional, Set, Tuple
 from common.proto.context_pb2 import Empty, TopologyId
+from common.tools.grpc.Tools import grpc_message_to_json
 from common.tools.object_factory.Constraint import json_constraint_custom
 from common.tools.object_factory.ConfigRule import json_config_rule_set
 from common.tools.object_factory.Device import json_device_id
@@ -41,6 +42,9 @@ class RequestGenerator:
         self._endpoint_ids_to_types : Dict[Tuple[str, str], str] = dict()
         self._endpoint_types_to_ids : Dict[str, Set[Tuple[str, str]]] = dict()
 
+        self._device_data : Dict[str, Dict] = dict()
+        self._device_endpoint_data : Dict[str, Dict[str, Dict]] = dict()
+
     def initialize(self) -> None:
         with self._lock:
             self._available_device_endpoints.clear()
@@ -55,9 +59,14 @@ class RequestGenerator:
             devices = context_client.ListDevices(Empty())
             for device in devices.devices:
                 device_uuid = device.device_id.device_uuid.uuid
+                self._device_data[device_uuid] = grpc_message_to_json(device)
+
                 _endpoints = self._available_device_endpoints.setdefault(device_uuid, set())
                 for endpoint in device.device_endpoints:
                     endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid
+                    endpoints = self._device_endpoint_data.setdefault(device_uuid, dict())
+                    endpoints[endpoint_uuid] = grpc_message_to_json(endpoint)
+
                     endpoint_type = endpoint.endpoint_type
                     _endpoints.add(endpoint_uuid)
                     self._endpoint_ids_to_types.setdefault((device_uuid, endpoint_uuid), endpoint_type)
@@ -191,7 +200,8 @@ class RequestGenerator:
         dst_endpoint_types = {dst_endpoint_type} if request_type in {RequestType.SERVICE_TAPI} else None
 
         # identify excluded destination devices
-        exclude_device_uuids = {} if request_type in {RequestType.SERVICE_TAPI, RequestType.SERVICE_MW} else {src_device_uuid}
+        REQUESTTYPES_REUSING_DEVICES = {RequestType.SERVICE_TAPI, RequestType.SERVICE_MW}
+        exclude_device_uuids = {} if request_type in REQUESTTYPES_REUSING_DEVICES else {src_device_uuid}
 
         # choose feasible destination endpoint
         dst = self._use_device_endpoint(
@@ -218,26 +228,33 @@ class RequestGenerator:
             ]
             vlan_id = num_request % 1000
             circuit_id = '{:03d}'.format(vlan_id)
-            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
+
+            src_device_name = self._device_data[src_device_uuid]['name']
+            src_router_id = '10.0.0.{:d}'.format(int(src_device_name.replace('R', '')))
+
+            dst_device_name = self._device_data[dst_device_uuid]['name']
+            dst_router_id = '10.0.0.{:d}'.format(int(dst_device_name.replace('R', '')))
+
             config_rules = [
                 json_config_rule_set('/settings', {
                     'mtu': 1512
                 }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
-                    'router_id': src_router_id,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id': vlan_id,
-                    'remote_router': dst_router_id,
-                    'circuit_id': circuit_id,
-                }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
-                    'router_id': dst_router_id,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id': vlan_id,
-                    'remote_router': src_router_id,
-                    'circuit_id': circuit_id,
-                }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
+                        'router_id': src_router_id,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id': vlan_id,
+                        'remote_router': dst_router_id,
+                        'circuit_id': circuit_id,
+                    }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
+                        'router_id': dst_router_id,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id': vlan_id,
+                        'remote_router': src_router_id,
+                        'circuit_id': circuit_id,
+                    }),
             ]
             return json_service_l2nm_planned(
                 request_uuid, endpoint_ids=endpoint_ids, constraints=constraints, config_rules=config_rules)
@@ -251,32 +268,41 @@ class RequestGenerator:
             bgp_as = 60000 + (num_request % 10000)
             bgp_route_target = '{:5d}:{:03d}'.format(bgp_as, 333)
             route_distinguisher = '{:5d}:{:03d}'.format(bgp_as, vlan_id)
-            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            src_address_ip = '.'.join([src_device_uuid.replace('R', ''), '0'] + src_endpoint_uuid.split('/'))
-            dst_address_ip = '.'.join([dst_device_uuid.replace('R', ''), '0'] + dst_endpoint_uuid.split('/'))
+
+            src_device_name = self._device_data[src_device_uuid]['name']
+            src_endpoint_name = self._device_endpoint_data[src_device_uuid][src_endpoint_uuid]['name']
+            src_router_id = '10.0.0.{:d}'.format(int(src_device_name.replace('R', '')))
+            src_address_ip = '.'.join([src_device_name.replace('R', ''), '0'] + src_endpoint_name.split('/'))
+
+            dst_device_name = self._device_data[dst_device_uuid]['name']
+            dst_endpoint_name = self._device_endpoint_data[dst_device_uuid][dst_endpoint_uuid]['name']
+            dst_router_id = '10.0.0.{:d}'.format(int(dst_device_name.replace('R', '')))
+            dst_address_ip = '.'.join([dst_device_name.replace('R', ''), '0'] + dst_endpoint_name.split('/'))
+
             config_rules = [
                 json_config_rule_set('/settings', {
                     'mtu'             : 1512,
                     'bgp_as'          : bgp_as,
                     'bgp_route_target': bgp_route_target,
                 }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
-                    'router_id'          : src_router_id,
-                    'route_distinguisher': route_distinguisher,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id'            : vlan_id,
-                    'address_ip'         : src_address_ip,
-                    'address_prefix'     : 16,
-                }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
-                    'router_id'          : dst_router_id,
-                    'route_distinguisher': route_distinguisher,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id'            : vlan_id,
-                    'address_ip'         : dst_address_ip,
-                    'address_prefix'     : 16,
-                }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
+                        'router_id'          : src_router_id,
+                        'route_distinguisher': route_distinguisher,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id'            : vlan_id,
+                        'address_ip'         : src_address_ip,
+                        'address_prefix'     : 16,
+                    }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
+                        'router_id'          : dst_router_id,
+                        'route_distinguisher': route_distinguisher,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id'            : vlan_id,
+                        'address_ip'         : dst_address_ip,
+                        'address_prefix'     : 16,
+                    }),
             ]
             return json_service_l3nm_planned(
                 request_uuid, endpoint_ids=endpoint_ids, constraints=constraints, config_rules=config_rules)
@@ -313,7 +339,8 @@ class RequestGenerator:
         src_device_uuid,src_endpoint_uuid = src
 
         # identify excluded destination devices
-        exclude_device_uuids = {} if request_type in {RequestType.SERVICE_TAPI, RequestType.SERVICE_MW} else {src_device_uuid}
+        REQUESTTYPES_REUSING_DEVICES = {RequestType.SERVICE_TAPI, RequestType.SERVICE_MW}
+        exclude_device_uuids = {} if request_type in REQUESTTYPES_REUSING_DEVICES else {src_device_uuid}
 
         # choose feasible destination endpoint
         dst = self._use_device_endpoint(request_uuid, request_type, exclude_device_uuids=exclude_device_uuids)
@@ -338,26 +365,33 @@ class RequestGenerator:
         if request_type == RequestType.SLICE_L2NM:
             vlan_id = num_request % 1000
             circuit_id = '{:03d}'.format(vlan_id)
-            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
+
+            src_device_name = self._device_data[src_device_uuid]['name']
+            src_router_id = '10.0.0.{:d}'.format(int(src_device_name.replace('R', '')))
+
+            dst_device_name = self._device_data[dst_device_uuid]['name']
+            dst_router_id = '10.0.0.{:d}'.format(int(dst_device_name.replace('R', '')))
+
             config_rules = [
                 json_config_rule_set('/settings', {
                     'mtu': 1512
                 }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
-                    'router_id': src_router_id,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id': vlan_id,
-                    'remote_router': dst_router_id,
-                    'circuit_id': circuit_id,
-                }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
-                    'router_id': dst_router_id,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id': vlan_id,
-                    'remote_router': src_router_id,
-                    'circuit_id': circuit_id,
-                }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
+                        'router_id': src_router_id,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id': vlan_id,
+                        'remote_router': dst_router_id,
+                        'circuit_id': circuit_id,
+                    }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
+                        'router_id': dst_router_id,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id': vlan_id,
+                        'remote_router': src_router_id,
+                        'circuit_id': circuit_id,
+                    }),
             ]
 
         elif request_type == RequestType.SLICE_L3NM:
@@ -365,32 +399,41 @@ class RequestGenerator:
             bgp_as = 60000 + (num_request % 10000)
             bgp_route_target = '{:5d}:{:03d}'.format(bgp_as, 333)
             route_distinguisher = '{:5d}:{:03d}'.format(bgp_as, vlan_id)
-            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
-            src_address_ip = '.'.join([src_device_uuid.replace('R', ''), '0'] + src_endpoint_uuid.split('/'))
-            dst_address_ip = '.'.join([dst_device_uuid.replace('R', ''), '0'] + dst_endpoint_uuid.split('/'))
+
+            src_device_name = self._device_data[src_device_uuid]['name']
+            src_endpoint_name = self._device_endpoint_data[src_device_uuid][src_endpoint_uuid]['name']
+            src_router_id = '10.0.0.{:d}'.format(int(src_device_name.replace('R', '')))
+            src_address_ip = '.'.join([src_device_name.replace('R', ''), '0'] + src_endpoint_name.split('/'))
+
+            dst_device_name = self._device_data[dst_device_uuid]['name']
+            dst_endpoint_name = self._device_endpoint_data[dst_device_uuid][dst_endpoint_uuid]['name']
+            dst_router_id = '10.0.0.{:d}'.format(int(dst_device_name.replace('R', '')))
+            dst_address_ip = '.'.join([dst_device_name.replace('R', ''), '0'] + dst_endpoint_name.split('/'))
+
             config_rules = [
                 json_config_rule_set('/settings', {
                     'mtu'             : 1512,
                     'bgp_as'          : bgp_as,
                     'bgp_route_target': bgp_route_target,
                 }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
-                    'router_id'          : src_router_id,
-                    'route_distinguisher': route_distinguisher,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id'            : vlan_id,
-                    'address_ip'         : src_address_ip,
-                    'address_prefix'     : 16,
-                }),
-                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
-                    'router_id'          : dst_router_id,
-                    'route_distinguisher': route_distinguisher,
-                    'sub_interface_index': vlan_id,
-                    'vlan_id'            : vlan_id,
-                    'address_ip'         : dst_address_ip,
-                    'address_prefix'     : 16,
-                }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
+                        'router_id'          : src_router_id,
+                        'route_distinguisher': route_distinguisher,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id'            : vlan_id,
+                        'address_ip'         : src_address_ip,
+                        'address_prefix'     : 16,
+                    }),
+                json_config_rule_set(
+                    '/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
+                        'router_id'          : dst_router_id,
+                        'route_distinguisher': route_distinguisher,
+                        'sub_interface_index': vlan_id,
+                        'vlan_id'            : vlan_id,
+                        'address_ip'         : dst_address_ip,
+                        'address_prefix'     : 16,
+                    }),
             ]
 
         return json_slice(