diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index a3b96c6d9691b3b58cf15a5cf45ae7ac3e360ec0..5bf37c27067b3a543bfd3d1d1f3c314f50a6311b 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -691,11 +691,22 @@ def snmp_refresh_peerings_chorded(
     update_callback(f'snmp peering info loaded from {hostname}')
 
 
+def cache_extracted_ims_data(extracted_data, use_current=False):
+    if use_current:
+        r = get_current_redis(InventoryTask.config)
+    else:
+        r = get_next_redis(InventoryTask.config)
+    
+    for k, v in extracted_data.items():
+        r.set(f'ims:cache:{k}', json.dumps(v))
+
+
 @app.task(base=InventoryTask, bind=True, name='ims_task')
 @log_task_entry_and_exit
 def ims_task(self, use_current=False):
     try:
         extracted_data = extract_ims_data()
+        cache_extracted_ims_data(extracted_data)
         transformed_data = transform_ims_data(extracted_data)
         transformed_data['locations'] = extracted_data['locations']
         transformed_data['lg_routers'] = extracted_data['lg_routers']