diff --git a/app/models/ems_refresh/save_inventory_physical_infra.rb b/app/models/ems_refresh/save_inventory_physical_infra.rb
index 5de5dc9e415..228cafeb911 100644
--- a/app/models/ems_refresh/save_inventory_physical_infra.rb
+++ b/app/models/ems_refresh/save_inventory_physical_infra.rb
@@ -101,7 +101,7 @@ def save_physical_storages_inventory(ems, hashes, target = nil)
       h[:physical_chassis_id] = h.delete(:physical_chassis).try(:[], :id)
     end
 
-    child_keys = %i(computer_system asset_detail physical_disks canister)
+    child_keys = %i(computer_system asset_detail physical_disks canisters)
     save_inventory_multi(ems.physical_storages, hashes, deletes, [:ems_ref], child_keys)
     store_ids_for_new_records(ems.physical_storages, hashes, :ems_ref)
   end
@@ -129,11 +129,18 @@ def save_physical_disks_inventory(physical_storage, hashes)
   end
 
   #
-  # Saves the canister information of a storage
+  # Saves the canisters information of a storage
   #
-  def save_canister_inventory(physical_storage, hash)
-    return if hash.nil?
-    save_inventory_single(:canister, physical_storage, hash)
+  def save_canisters_inventory(physical_storage, hashes)
+    return if hashes.nil?
+
+    # Update the associated ids
+    hashes.each do |h|
+      h[:physical_storage_id] = h.delete(:physical_storage).try(:[], :id)
+    end
+
+    child_keys = %i(computer_system)
+    save_inventory_multi(physical_storage.canisters, hashes, :use_association, [:physical_storage_id], child_keys)
   end
 
   def save_physical_network_ports_inventory(guest_device, hashes, target = nil)