diff --git a/src/context/service/__main__.py b/src/context/service/__main__.py
index 154c8ff004640a67d283dbb779e74ce00f62ef93..937059202f65709840723544cdd383d2da213f4e 100644
--- a/src/context/service/__main__.py
+++ b/src/context/service/__main__.py
@@ -52,7 +52,7 @@ def main():
     start_http_server(metrics_port)
 
     # Get database instance
-    db_uri = 'cockroachdb://root@10.152.183.121:26257/defaultdb?sslmode=disable'
+    db_uri = 'cockroachdb://root@10.152.183.66:26257/defaultdb?sslmode=disable'
     LOGGER.debug('Connecting to DB: {}'.format(db_uri))
 
     # engine = create_engine(db_uri, echo=False)
diff --git a/src/context/service/database/TopologyModel.py b/src/context/service/database/TopologyModel.py
index 9f117c73c74dae9af7b127c792f0697e8ea397a0..ec8427b07f8ad3fab775f8a5fb1711b62b36d0ce 100644
--- a/src/context/service/database/TopologyModel.py
+++ b/src/context/service/database/TopologyModel.py
@@ -27,11 +27,11 @@ LOGGER = logging.getLogger(__name__)
 
 class TopologyModel(Base):
     __tablename__ = 'Topology'
-    context_fk = Column(UUID(as_uuid=False), ForeignKey("Context.context_uuid"), nullable=False)
-    topology_uuid = Column(UUID(as_uuid=False), primary_key=True, nullable=False)
+    context_uuid = Column(UUID(as_uuid=False), ForeignKey("Context.context_uuid"), primary_key=True)
+    topology_uuid = Column(UUID(as_uuid=False), primary_key=True)
 
     # Relationships
-    context = relationship("ContextModel", back_populates="topology", lazy="joined")
+    context = relationship("ContextModel", back_populates="topology", lazy="subquery")
 
     def dump_id(self) -> Dict:
         context_id = self.context.dump_id()
diff --git a/src/context/service/grpc_server/ContextServiceServicerImpl.py b/src/context/service/grpc_server/ContextServiceServicerImpl.py
index 9952444b7ac004a0c18748ad2921431ac012de6d..5439b6c068cb9ad624913bbfcea822185613d220 100644
--- a/src/context/service/grpc_server/ContextServiceServicerImpl.py
+++ b/src/context/service/grpc_server/ContextServiceServicerImpl.py
@@ -170,11 +170,10 @@ class ContextServiceServicerImpl(ContextServiceServicer):
 
     @safe_and_metered_rpc_method(METRICS, LOGGER)
     def ListTopologyIds(self, request: ContextId, context : grpc.ServicerContext) -> TopologyIdList:
-        with self.lock:
-            context_uuid = request.context_uuid.uuid
+        context_uuid = request.context_uuid.uuid
 
-            with self.session() as session:
-                result = session.query(ContextModel).options(selectinload(ContextModel.topology)).filter_by(context_uuid=context_uuid).one_or_none()
+        with self.session() as session:
+            result = session.query(ContextModel).options(selectinload(ContextModel.topology)).filter_by(context_uuid=context_uuid).one_or_none()
             if not result:
                 raise NotFoundException(ContextModel.__name__.replace('Model', ''), context_uuid)
 
@@ -188,11 +187,11 @@ class ContextServiceServicerImpl(ContextServiceServicer):
         with self.session() as session:
             result = session.query(ContextModel).options(selectinload(ContextModel.topology)).filter_by(
                 context_uuid=context_uuid).one_or_none()
-        if not result:
-            raise NotFoundException(ContextModel.__name__.replace('Model', ''), context_uuid)
+            if not result:
+                raise NotFoundException(ContextModel.__name__.replace('Model', ''), context_uuid)
 
-        db_topologies = result.topology
-        return TopologyList(topologies=[db_topology.dump() for db_topology in db_topologies])
+            db_topologies = result.topology
+            return TopologyList(topologies=[db_topology.dump() for db_topology in db_topologies])
 
     @safe_and_metered_rpc_method(METRICS, LOGGER)
     def GetTopology(self, request: TopologyId, context : grpc.ServicerContext) -> Topology:
@@ -213,22 +212,19 @@ class ContextServiceServicerImpl(ContextServiceServicer):
         context_uuid = request.topology_id.context_id.context_uuid.uuid
         topology_uuid = request.topology_id.topology_uuid.uuid
         with self.session() as session:
-            db_context: ContextModel = session.query(ContextModel).filter_by(context_uuid=context_uuid).one()
-
-            topology_add = TopologyModel(topology_uuid=topology_uuid, context_fk=context_uuid)
-            topology_add.context = db_context
+            topology_add = TopologyModel(topology_uuid=topology_uuid, context_uuid=context_uuid)
             updated = True
-            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).options(contains_eager(TopologyModel.context)).one_or_none()
-
+            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).one_or_none()
             if not result:
                 updated = False
             session.merge(topology_add)
             session.commit()
+            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).one_or_none()
 
-        event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE
-        dict_topology_id = topology_add.dump_id()
-        notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id})
-        return TopologyId(**dict_topology_id)
+            event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE
+            dict_topology_id = result.dump_id()
+            notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id})
+            return TopologyId(**dict_topology_id)
 
     @safe_and_metered_rpc_method(METRICS, LOGGER)
     def RemoveTopology(self, request: TopologyId, context : grpc.ServicerContext) -> Empty:
@@ -236,12 +232,12 @@ class ContextServiceServicerImpl(ContextServiceServicer):
         topology_uuid = request.topology_uuid.uuid
 
         with self.session() as session:
-            result = session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_fk=context_uuid).one_or_none()
+            result = session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_uuid=context_uuid).one_or_none()
             if not result:
                 return Empty()
             dict_topology_id = result.dump_id()
 
-            session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_fk=context_uuid).delete()
+            session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_uuid=context_uuid).delete()
             session.commit()
             event_type = EventTypeEnum.EVENTTYPE_REMOVE
             notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id})
diff --git a/src/context/tests/test_unitary.py b/src/context/tests/test_unitary.py
index b7a9cee926600e0371088b188e83ffc8fcbb86e5..e202de498253432676bb5acee304874c2161787c 100644
--- a/src/context/tests/test_unitary.py
+++ b/src/context/tests/test_unitary.py
@@ -84,7 +84,7 @@ def context_s_mb(request) -> Tuple[Session, MessageBroker]:
     msg = 'Running scenario {:s} db_session={:s}, mb_backend={:s}, mb_settings={:s}...'
     LOGGER.info(msg.format(str(name), str(db_session), str(mb_backend.value), str(mb_settings)))
 
-    db_uri = 'cockroachdb://root@10.152.183.121:26257/defaultdb?sslmode=disable'
+    db_uri = 'cockroachdb://root@10.152.183.66:26257/defaultdb?sslmode=disable'
     LOGGER.debug('Connecting to DB: {}'.format(db_uri))
 
     try: