diff --git a/src/context/service/database/Topology.py b/src/context/service/database/Topology.py
index 210f497d1765a6088f555c8914c8f600a258040c..4440299b63f68613854e79998270872389d385cb 100644
--- a/src/context/service/database/Topology.py
+++ b/src/context/service/database/Topology.py
@@ -22,7 +22,9 @@ from common.proto.context_pb2 import ContextId, Topology, TopologyId
 from common.method_wrappers.ServiceExceptions import NotFoundException
 from common.tools.object_factory.Context import json_context_id
 from common.tools.object_factory.Topology import json_topology_id
-from .models.TopologyModel import TopologyModel
+from .models.DeviceModel import DeviceModel
+from .models.LinkModel import LinkModel
+from .models.TopologyModel import TopologyDeviceModel, TopologyLinkModel, TopologyModel
 from .uuids.Context import context_get_uuid
 from .uuids.Topology import topology_get_uuid
 
@@ -67,9 +69,10 @@ def topology_get_details(db_engine : Engine, request : TopologyId) -> Dict:
     _,topology_uuid = topology_get_uuid(request, allow_random=False)
     def callback(session : Session) -> Optional[Dict]:
         obj : Optional[TopologyModel] = session.query(TopologyModel)\
-            .options(selectinload(TopologyModel.topology_devices))\
-            .options(selectinload(TopologyModel.topology_links))\
+            .options(selectinload(TopologyModel.topology_devices, TopologyDeviceModel.device, DeviceModel.endpoints))\
+            .options(selectinload(TopologyModel.topology_links, TopologyLinkModel.link, LinkModel.link_endpoints))\
             .filter_by(topology_uuid=topology_uuid).one_or_none()
+            #.options(selectinload(DeviceModel.components))\
         return None if obj is None else obj.dump_details()
     obj = run_transaction(sessionmaker(bind=db_engine), callback)
     if obj is None:
diff --git a/src/context/service/database/models/LinkModel.py b/src/context/service/database/models/LinkModel.py
index e9fd9bc8742222e0934a76b6e0ffa4acb1b71f40..9c16da3c9146f28352e8b4f7a6f9ab85f870c8b7 100644
--- a/src/context/service/database/models/LinkModel.py
+++ b/src/context/service/database/models/LinkModel.py
@@ -50,8 +50,8 @@ class LinkEndPointModel(_Base):
     endpoint_uuid = Column(ForeignKey('endpoint.endpoint_uuid', ondelete='RESTRICT'), primary_key=True, index=True)
     position      = Column(Integer, nullable=False)
 
-    link     = relationship('LinkModel',     back_populates='link_endpoints', lazy='joined')
-    endpoint = relationship('EndPointModel', lazy='joined') # back_populates='link_endpoints'
+    link     = relationship('LinkModel',     back_populates='link_endpoints') #, lazy='selectin'
+    endpoint = relationship('EndPointModel', lazy='selectin') # back_populates='link_endpoints'
 
     __table_args__ = (
         CheckConstraint(position >= 0, name='check_position_value'),
diff --git a/src/context/service/database/models/TopologyModel.py b/src/context/service/database/models/TopologyModel.py
index ebeddcb76c6631b3415a9bcea0f13167d5ab36bd..0ed4a038bcf4426f4cf112bd03c5cb36cb42c822 100644
--- a/src/context/service/database/models/TopologyModel.py
+++ b/src/context/service/database/models/TopologyModel.py
@@ -46,11 +46,19 @@ class TopologyModel(_Base):
         }
 
     def dump_details(self) -> Dict:
+        devices = [
+            td.device.dump(include_config_rules=False, include_components=False)
+            for td in self.topology_devices
+        ]
+        links = [
+            tl.link.dump()
+            for tl in self.topology_links
+        ]
         return {
             'topology_id': self.dump_id(),
             'name'       : self.topology_name,
-            'devices'    : [td.device.dump() for td in self.topology_devices],
-            'links'      : [tl.link.dump()   for tl in self.topology_links  ],
+            'devices'    : devices,
+            'links'      : links,
         }
 
 class TopologyDeviceModel(_Base):