diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index 3deff7f..8394187 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -180,7 +180,8 @@
 
         except OpenstackSDKException as e:
             reason = _("Backup %s deletion failed. %s" % (task.backup_id, str(e)[:64]))
-            LOG.info(reason)
+            log_msg = _("Backup %s deletion failed. %s" % (task.backup_id, str(e)))
+            LOG.warn(log_msg)
             task.reason = reason
             task.backup_status = constants.BACKUP_FAILED
             task.save()
@@ -217,7 +218,7 @@
                 )
 
         except OpenstackSDKException as e:
-            LOG.info(
+            LOG.warn(
                 _("Backup %s deletion failed." "%s" % (backup_object.backup_id, str(e)))
             )
             # TODO(Alex): Add it into the notification queue
@@ -249,8 +250,8 @@
             self.openstacksdk.delete_backup(uuid=backup_object.backup_id)
             backup_object.delete_backup()
 
-        except OpenstackSDKException as e:
-            LOG.info(
+        except Exception as e:
+            LOG.warn(
                 _(
                     "Backup %s deletion failed. Need to delete manually."
                     "%s" % (backup_object.backup_id, str(e))
@@ -467,21 +468,36 @@
                 task.backup_status = constants.BACKUP_WIP
                 task.save()
             except OpenstackSDKException as error:
-                reason = _(
-                    "Backup (name: %s) creation for the volume %s failled. %s"
-                    % (backup_name, task.volume_id, str(error)[:64])
-                )
-                LOG.info(reason)
-                task.reason = reason
-                task.backup_status = constants.BACKUP_FAILED
-                task.save()
+                inc_err_msg = "No backups available to do an incremental backup"
+                if inc_err_msg in str(error):
+                    LOG.info(
+                        "Retry to create full backup for volume %s instead of incremental."
+                        % task.volume_id
+                    )
+                    task.incremental = False
+                    task.save()
+                else:
+                    reason = _(
+                        "Backup (name: %s) creation for the volume %s failled. %s"
+                        % (backup_name, task.volume_id, str(error)[:64])
+                    )
+                    LOG.warn(
+                        "Backup (name: %s) creation for the volume %s failled. %s"
+                        % (backup_name, task.volume_id, str(error))
+                    )
+                    task.reason = reason
+                    task.backup_status = constants.BACKUP_FAILED
+                    task.save()
             # Added extra exception as OpenstackSDKException does not handle the keystone unauthourized issue.
             except Exception as error:
                 reason = _(
                     "Backup (name: %s) creation for the volume %s failled. %s"
                     % (backup_name, task.volume_id, str(error)[:64])
                 )
-                LOG.error(reason)
+                LOG.warn(
+                    "Backup (name: %s) creation for the volume %s failled. %s"
+                    % (backup_name, task.volume_id, str(error))
+                )
                 task.reason = reason
                 task.backup_status = constants.BACKUP_FAILED
                 task.save()
@@ -509,7 +525,7 @@
         try:
             self.openstacksdk.delete_backup(uuid=task.backup_id, force=True)
         except OpenstackHttpException as ex:
-            LOG.error(
+            LOG.warn(
                 _(
                     "Failed to delete volume backup %s. %s. Need to delete manually."
                     % (task.backup_id, str(ex))
diff --git a/staffeln/conductor/manager.py b/staffeln/conductor/manager.py
index a8d69a0..a105fc1 100755
--- a/staffeln/conductor/manager.py
+++ b/staffeln/conductor/manager.py
@@ -200,17 +200,17 @@
             self.controller.hard_remove_volume_backup(retention_backup)
 
     def is_retention(self, backup):
+        now = datetime.now()
+        backup_age = now.astimezone() - backup.created_at
         # see if need to be delete.
         if backup.instance_id in self.instance_retention_map:
-            now = datetime.now()
             retention_time = now - self.get_time_from_str(
                 self.instance_retention_map[backup.instance_id]
             )
-            backup_age = now - backup.created_at
             if backup_age > retention_time:
                 # Backup remain longer than retention, need to purge it.
                 return True
-        elif self.threshold_strtime.astimezone() < backup.created_at:
+        elif now - self.threshold_strtime < backup_age:
             return True
         return False
 
diff --git a/staffeln/conf/conductor.py b/staffeln/conf/conductor.py
index 4ac69c9..1032ab4 100755
--- a/staffeln/conf/conductor.py
+++ b/staffeln/conf/conductor.py
@@ -74,7 +74,7 @@
     ),
     cfg.IntOpt(
         "retention_service_period",
-        default=20,
+        default=1200,
         min=10,
         help=_("The period of the retention service, the unit is one second."),
     ),
