diff --git a/src/context/service/database/Device.py b/src/context/service/database/Device.py
index e40c28e699af539c8886986d18ed0aa477e00842..07d1c76061d8b228cf39ddc06d358190bfce48fd 100644
--- a/src/context/service/database/Device.py
+++ b/src/context/service/database/Device.py
@@ -136,23 +136,25 @@ def device_set(db_engine : Engine, request : Device) -> Tuple[Dict, bool]:
         created_at,updated_at = session.execute(stmt).fetchone()
         updated = updated_at > created_at
 
-        stmt = insert(EndPointModel).values(endpoints_data)
-        stmt = stmt.on_conflict_do_update(
-            index_elements=[EndPointModel.endpoint_uuid],
-            set_=dict(
-                name             = stmt.excluded.name,
-                endpoint_type    = stmt.excluded.endpoint_type,
-                kpi_sample_types = stmt.excluded.kpi_sample_types,
-                updated_at       = stmt.excluded.updated_at,
+        if len(endpoints_data) > 0:
+            stmt = insert(EndPointModel).values(endpoints_data)
+            stmt = stmt.on_conflict_do_update(
+                index_elements=[EndPointModel.endpoint_uuid],
+                set_=dict(
+                    name             = stmt.excluded.name,
+                    endpoint_type    = stmt.excluded.endpoint_type,
+                    kpi_sample_types = stmt.excluded.kpi_sample_types,
+                    updated_at       = stmt.excluded.updated_at,
+                )
             )
-        )
-        stmt = stmt.returning(EndPointModel.created_at, EndPointModel.updated_at)
-        endpoint_updates = session.execute(stmt).fetchall()
-        updated = updated or any([(updated_at > created_at) for created_at,updated_at in endpoint_updates])
-
-        session.execute(insert(TopologyDeviceModel).values(related_topologies).on_conflict_do_nothing(
-            index_elements=[TopologyDeviceModel.topology_uuid, TopologyDeviceModel.device_uuid]
-        ))
+            stmt = stmt.returning(EndPointModel.created_at, EndPointModel.updated_at)
+            endpoint_updates = session.execute(stmt).fetchall()
+            updated = updated or any([(updated_at > created_at) for created_at,updated_at in endpoint_updates])
+
+        if len(related_topologies) > 0:
+            session.execute(insert(TopologyDeviceModel).values(related_topologies).on_conflict_do_nothing(
+                index_elements=[TopologyDeviceModel.topology_uuid, TopologyDeviceModel.device_uuid]
+            ))
 
         configrule_updates = upsert_config_rules(session, config_rules, device_uuid=device_uuid)
         updated = updated or any([(updated_at > created_at) for created_at,updated_at in configrule_updates])
diff --git a/src/context/service/database/Link.py b/src/context/service/database/Link.py
index 2621e73dc62d70751c8040078968dbf4b2ad78d3..2d9e80894b47b1e935453e09820134181f5b936c 100644
--- a/src/context/service/database/Link.py
+++ b/src/context/service/database/Link.py
@@ -100,16 +100,18 @@ def link_set(db_engine : Engine, request : Link) -> Tuple[Dict, bool]:
         created_at,updated_at = session.execute(stmt).fetchone()
         updated = updated_at > created_at
 
-        # TODO: manage add/remove of endpoints; manage changes in relations with topology
-        stmt = insert(LinkEndPointModel).values(link_endpoints_data)
-        stmt = stmt.on_conflict_do_nothing(
-            index_elements=[LinkEndPointModel.link_uuid, LinkEndPointModel.endpoint_uuid]
-        )
-        session.execute(stmt)
+        if len(link_endpoints_data) > 0:
+            # TODO: manage add/remove of endpoints; manage changes in relations with topology
+            stmt = insert(LinkEndPointModel).values(link_endpoints_data)
+            stmt = stmt.on_conflict_do_nothing(
+                index_elements=[LinkEndPointModel.link_uuid, LinkEndPointModel.endpoint_uuid]
+            )
+            session.execute(stmt)
 
-        session.execute(insert(TopologyLinkModel).values(related_topologies).on_conflict_do_nothing(
-            index_elements=[TopologyLinkModel.topology_uuid, TopologyLinkModel.link_uuid]
-        ))
+        if len(related_topologies) > 0:
+            session.execute(insert(TopologyLinkModel).values(related_topologies).on_conflict_do_nothing(
+                index_elements=[TopologyLinkModel.topology_uuid, TopologyLinkModel.link_uuid]
+            ))
 
         return updated