diff --git a/src/common/tools/object_factory/Link.py b/src/common/tools/object_factory/Link.py
index 624cbb8dcc868ce3575062e31ae3b0609c300637..9519335caf0a2cb9ae95894ba218194ae6887454 100644
--- a/src/common/tools/object_factory/Link.py
+++ b/src/common/tools/object_factory/Link.py
@@ -13,15 +13,21 @@
 # limitations under the License.
 
 import copy
-from typing import Dict, List
+from typing import Dict, List, Tuple
 
-def get_link_uuid(a_device_id : Dict, a_endpoint_id : Dict, z_device_id : Dict, z_endpoint_id : Dict) -> str:
+def get_link_uuid(a_endpoint_id : Dict, z_endpoint_id : Dict) -> str:
     return '{:s}/{:s}=={:s}/{:s}'.format(
-        a_device_id['device_uuid']['uuid'], a_endpoint_id['endpoint_uuid']['uuid'],
-        z_device_id['device_uuid']['uuid'], z_endpoint_id['endpoint_uuid']['uuid'])
+        a_endpoint_id['device_id']['device_uuid']['uuid'], a_endpoint_id['endpoint_uuid']['uuid'],
+        a_endpoint_id['device_id']['device_uuid']['uuid'], z_endpoint_id['endpoint_uuid']['uuid'])
 
-def json_link_id(link_uuid : str):
+def json_link_id(link_uuid : str) -> Dict:
     return {'link_uuid': {'uuid': link_uuid}}
 
-def json_link(link_uuid : str, endpoint_ids : List[Dict]):
+def json_link(link_uuid : str, endpoint_ids : List[Dict]) -> Dict:
     return {'link_id': json_link_id(link_uuid), 'link_endpoint_ids': copy.deepcopy(endpoint_ids)}
+
+def compose_link(endpoint_a, endpoint_z) -> Tuple[Dict, Dict]:
+    link_uuid = get_link_uuid(endpoint_a['endpoint_id'], endpoint_z['endpoint_id'])
+    link_id   = json_link_id(link_uuid)
+    link      = json_link(link_uuid, [endpoint_a['endpoint_id'], endpoint_z['endpoint_id']])
+    return link_id, link