diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index f9b1e36b0ece9857c254da5a4c14e628fda41bb9..a3b96c6d9691b3b58cf15a5cf45ae7ac3e360ec0 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -1110,16 +1110,26 @@ def transform_ims_data(data):
                     node_pair_services[
                         f"{circ['equipment']}/{circ['other_end_equipment']}"
                     ][circ['id']] = circ
+                try:
+                    # get the physical port circuit, if it exists
+                    # https://jira.software.geant.org/browse/POL1-687
+                    port_circuit = next(
+                        c for c in circuits if c.get('port_type') == 'ports')
+                except StopIteration:
+                    port_circuit = None
 
                 sid = None
                 if circ['id'] in circuit_ids_and_sids:
                     sid = circuit_ids_and_sids[circ['id']]
-
                 elif 'sid' in details:
                     if len(circuits) > 1:
-                        # we don't know which circuit
-                        # to give the SID in this case, so skip
-                        continue
+                        if port_circuit != circ:
+                            # if this is not the physical port circuit
+                            # related to this port, then we don't want to
+                            # assign the SID to this circuit, so skip.
+                            continue
+
+                    # assign the SID from the port to this circuit
                     sid = details['sid']
 
                 if sid is None: