diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index 7b8e523..4651bda 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -207,11 +207,13 @@
                 return backup_object.delete_backup()
             if backup["status"] in ("available"):
                 self.openstacksdk.delete_backup(backup_object.backup_id)
-                backup_object.delete_backup()
+                # Don't remove backup until it's officially removed from Cinder
+                # backup_object.delete_backup()
             elif backup["status"] in ("error", "error_restoring"):
                 # Try to remove it from cinder
                 self.openstacksdk.delete_backup(backup_object.backup_id)
-                backup_object.delete_backup()
+                # Don't remove backup until it's officially removed from Cinder
+                # backup_object.delete_backup()
             else:  # "deleting", "restoring"
                 LOG.info(
                     _(
@@ -259,22 +261,20 @@
                 )
                 return backup_object.delete_backup()
 
-            self.openstacksdk.delete_backup(uuid=backup_object.backup_id)
-            backup_object.delete_backup()
-
-            # TODO(ricolin) should check if backup delete completed
-
+            self.openstacksdk.delete_backup(uuid=backup_object.backup_id, force=True)
+            # Don't remove backup until it's officially removed from Cinder
+            # backup_object.delete_backup()
         except Exception as e:
             if skip_inc_err and "Incremental backups exist for this backup" in str(e):
-                pass
+                LOG.debug(str(e))
             else:
-                LOG.warn(
+                LOG.info(
                     _(
-                        f"Backup {backup_object.backup_id} deletion failed. "
-                        f"Please check into the exception: {str(e)}."
+                        f"Backup {backup_object.backup_id} deletion failed."
                         "Skip this backup from remove now and will retry later."
                     )
                 )
+                LOG.debug(f"deletion failed {str(e)}")
 
                 # Don't remove backup object, keep it and retry on next periodic task
                 # backup_object.delete_backup()
