diff --git a/src/context/service/database/Device.py b/src/context/service/database/Device.py
index c51a88368d27a02d73fa85fa3ee0689108056f4c..3e106bc158ab804c7eada7284e9d1b883eb66264 100644
--- a/src/context/service/database/Device.py
+++ b/src/context/service/database/Device.py
@@ -171,7 +171,9 @@ def device_set(db_engine : Engine, request : Device) -> Tuple[Dict, bool]:
             endpoint_updates = session.execute(stmt).fetchall()
             updated_endpoints = any([(updated_at > created_at) for created_at,updated_at in endpoint_updates])
 
-        if len(related_topologies) > 0:
+        if not updated or len(related_topologies) > 1:
+            # Only update topology-device relations when device is created (not updated) or when endpoints are
+            # modified (len(related_topologies) > 1).
             session.execute(insert(TopologyDeviceModel).values(related_topologies).on_conflict_do_nothing(
                 index_elements=[TopologyDeviceModel.topology_uuid, TopologyDeviceModel.device_uuid]
             ))