diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py
index 0851fa3e0160ea570ff137308eb85c6bc06408e7..d4ef64ecf25928e8231642060993eef2e640418c 100644
--- a/inventory_provider/db/ims_data.py
+++ b/inventory_provider/db/ims_data.py
@@ -67,14 +67,20 @@ NODE_LOCATION_SCHEMA = {
 }
 
 
-def get_flex_ils_entities(ds: IMS):
-    for f in ds.get_all_entities('FLEXILS_SCHF_SUBINTERFACES'):
-        yield {
-            'circuit_id': f['circuitid'],
-            'node_name': f['nodename'],
-            'port_name': f['port'],
-            'full_port_name': f['port_ref']
-        }
+def get_flexils_by_circuitid(ds: IMS):
+    by_circuit = defaultdict(list)
+    found_keys = set()
+    for entity in ds.get_all_entities('FLEXILS_SCHF_SUBINTERFACES'):
+        k = f'{entity["nodename"]}:{entity["port_ref"]}'
+        if k in found_keys:
+            continue
+        found_keys.add(k)
+        by_circuit[entity['circuitid']].append({
+            'node_name': entity['nodename'],
+            'full_port_name': entity['port_ref'],
+            'key': k
+        })
+    return dict(by_circuit)
 
 
 def get_non_monitored_circuit_ids(ds: IMS):