diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 7f5b4094b2bbd1fc39478e8028a765cfbf25cf18..ef9a1c66011ccaca49eca44b8418f9104f32b455 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -829,7 +829,7 @@ def transform_ims_data(data):
     port_id_services = data['port_id_services']
     circuit_ids_and_sids = data['circuit_ids_sids']
 
-    sid_circuits = defaultdict(list)
+    sid_services = defaultdict(list)
 
     def _get_circuit_contacts(c):
         customer_ids = {c['customerid']}
@@ -998,18 +998,19 @@ def transform_ims_data(data):
                         logger.info(f'SID ({sid}) Circuit ({circ["id"]})'
                                     f' not a service. IMS')
                     else:
-                        sid_circuits[sid].append(
-                            {
-                                'circuit_id': circ['id'],
-                                'sid': sid,
-                                'name': circ['name'],
-                                'speed': circ['calculated-speed'],
-                                'service_type': circ['service_type'],
-                                'project': circ['project'],
-                                'customer': circ['customer'],
-                                'equipment': circ['equipment'],
-                                'port': circ['port']
-                            })
+                        sid_info = {
+                            'circuit_id': circ['id'],
+                            'sid': sid,
+                            'name': circ['name'],
+                            'speed': circ['calculated-speed'],
+                            'service_type': circ['service_type'],
+                            'project': circ['project'],
+                            'customer': circ['customer'],
+                            'equipment': circ['equipment'],
+                            'port': circ['port']
+                        }
+                        if sid_info not in sid_services[sid]:
+                            sid_services[sid].append(sid_info)
 
         interface_services[k].extend(circuits)
 
@@ -1018,7 +1019,7 @@ def transform_ims_data(data):
         'interface_services': interface_services,
         'services_by_type': services_by_type,
         'node_pair_services': node_pair_services,
-        'sid_circuits': sid_circuits
+        'sid_services': sid_services
     }
 
 
@@ -1029,6 +1030,7 @@ def persist_ims_data(data, use_current=False):
     interface_services = data['interface_services']
     services_by_type = data['services_by_type']
     node_pair_services = data['node_pair_services']
+    sid_services = data['sid_services']
 
     if use_current:
         r = get_current_redis(InventoryTask.config)
@@ -1044,12 +1046,15 @@ def persist_ims_data(data, use_current=False):
             'ims:gws_indirect:*',
             'ims:node_pair_services:*'
         ]:
+
+            r.delete('ims:sid_services')
             rp = r.pipeline()
             for k in r.scan_iter(key_pattern, count=1000):
                 rp.delete(k)
     else:
         r = get_next_redis(InventoryTask.config)
 
+    r.set('ims:sid_services', json.dumps(sid_services))
     rp = r.pipeline()
     for h, d in locations.items():
         rp.set(f'ims:location:{h}', json.dumps([d]))
diff --git a/test/test_worker.py b/test/test_worker.py
index 7774c3f2e99bfd7a39bcc64a8408886e7a1a3cee..a70b22b1e2fba14f3ce65a491e30ec3b6f5783e2 100644
--- a/test/test_worker.py
+++ b/test/test_worker.py
@@ -325,7 +325,7 @@ def test_transform_ims_data():
     assert len(v[0]["fibre-routes"]) == 1
     assert v[0]["fibre-routes"][0]["id"] == "carrier_id_3"
 
-    assert len(res["sid_circuits"]['SID-01']) == 2
+    assert len(res["sid_services"]['SID-01']) == 2
 
     for x in [
         {
@@ -353,7 +353,7 @@ def test_transform_ims_data():
     ]:
         assert json.dumps(x, sort_keys=True) in [
             json.dumps(
-                y, sort_keys=True) for y in res["sid_circuits"]['SID-01']]
+                y, sort_keys=True) for y in res["sid_services"]['SID-01']]
 
 
 def test_persist_ims_data(mocker, data_config, mocked_redis):
@@ -402,6 +402,7 @@ def test_persist_ims_data(mocker, data_config, mocked_redis):
             "np1": {"id_1": "data for np1"},
             "np2": {"id_2": "data for np2"},
         },
+        "sid_services": {"SID-001": [{"k1": "data"}, {"k1": "data"}]},
         "services_by_type": {},
     }
     for k in r.keys("ims:*"):
@@ -426,6 +427,9 @@ def test_persist_ims_data(mocker, data_config, mocked_redis):
     assert [k.decode("utf-8") for k in r.keys("poller_cache:*")] == \
            ["poller_cache:eq1", "poller_cache:eq2"]
 
+    assert json.loads(r.get("ims:sid_services").decode("utf-8")) == \
+           data["sid_services"]
+
 
 def test_retrieve_and_persist_neteng_managed_device_list(
         mocker, data_config, mocked_redis):