diff --git a/src/tm_mad/vcenter/delete b/src/tm_mad/vcenter/delete
index e968d6694c..aaa901432d 100755
--- a/src/tm_mad/vcenter/delete
+++ b/src/tm_mad/vcenter/delete
@@ -216,6 +216,17 @@ else
 
         vm.poweroff_hard if vm.is_powered_on?
 
+        # If the VM has snapshots the TM could not detach disks so we
+        # will try to detach persistent disks once we have removed all snapshots
+        # that way they won't be removed
+        if vm.has_snapshots?
+            vm.remove_all_snapshots
+            disks = one_vm.retrieve_xmlelements("TEMPLATE/DISK[PERSISTENT=\"YES\"]")
+            disks.each do |d|
+                vm.detach_disk(d)
+            end
+        end
+
         vm.destroy
     rescue Exception => e
         STDERR.puts "Error unregistering vm #{vmid} (#{vm_ref})."\
diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb
index 42faf147f2..f395c240ff 100644
--- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb
+++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb
@@ -2312,6 +2312,10 @@ class VirtualMachine < Template
         @item.PowerOffVM_Task.wait_for_completion
     end
 
+    def remove_all_snapshots
+        @item.RemoveAllSnapshots_Task.wait_for_completion
+    end
+
     def set_running(state)
         value = state ? "yes" : "no"