diff --git a/staffeln/common/openstack.py b/staffeln/common/openstack.py
index 4d4827e..0e639e1 100644
--- a/staffeln/common/openstack.py
+++ b/staffeln/common/openstack.py
@@ -102,6 +102,7 @@
         # conn.block_storage.delete_backup(
         #     project_id=project_id, backup_id=uuid,
         # )
+        LOG.debug(f"Start deleting backup {uuid} in OpenStack.")
         try:
             self.conn.delete_volume_backup(uuid, force=force)
             # TODO(Alex): After delete the backup generator, need to set the volume status again
diff --git a/staffeln/common/time.py b/staffeln/common/time.py
index 2fd8cc0..3c0b57b 100644
--- a/staffeln/common/time.py
+++ b/staffeln/common/time.py
@@ -1,4 +1,5 @@
 import re
+
 from dateutil.relativedelta import relativedelta
 from oslo_utils import timeutils
 
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index f3deff4..0a330a7 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -299,7 +299,7 @@
             if backup is None:
                 LOG.info(
                     _(
-                        "Backup %s is not existing in Openstack."
+                        "Backup %s is not existing in Openstack. "
                         "Or cinder-backup is not existing in the cloud."
                         "Start removing backup object from Staffeln."
                         % backup_object.backup_id
diff --git a/staffeln/conductor/manager.py b/staffeln/conductor/manager.py
index 9720650..a8419cc 100755
--- a/staffeln/conductor/manager.py
+++ b/staffeln/conductor/manager.py
@@ -7,10 +7,10 @@
 from futurist import periodics
 from oslo_log import log
 from oslo_utils import timeutils
+from staffeln import objects
 from staffeln.common import constants, context, lock
 from staffeln.common import time as xtime
 from staffeln.conductor import backup as backup_controller
-from staffeln import objects
 from staffeln.i18n import _
 from tooz import coordination
 
@@ -144,7 +144,9 @@
             self.controller.publish_backup_result(purge_on_success=True)
 
             # Purge records that live longer than 10 report cycles
-            threshold_strtime = timeutils.utcnow() - timedelta(seconds=report_period*10)
+            threshold_strtime = timeutils.utcnow() - timedelta(
+                seconds=report_period * 10
+            )
             filters = {"created_at__lt": threshold_strtime.astimezone(timezone.utc)}
             old_report_tss = objects.ReportTimestamp.list(  # pylint: disable=E1120
                 context=self.ctx, filters=filters
diff --git a/staffeln/conductor/result.py b/staffeln/conductor/result.py
index bfcbf8e..6557621 100644
--- a/staffeln/conductor/result.py
+++ b/staffeln/conductor/result.py
@@ -3,9 +3,9 @@
 import staffeln.conf
 from oslo_log import log
 from oslo_utils import timeutils
+from staffeln import objects
 from staffeln.common import constants, email
 from staffeln.common import time as xtime
-from staffeln import objects
 from staffeln.i18n import _
 
 CONF = staffeln.conf.CONF
@@ -80,8 +80,11 @@
             raise
 
     def create_report_record(self):
-        sender = CONF.notification.sender_email \
-            if CONF.notification.sender_email else "RecordInLog"
+        sender = (
+            CONF.notification.sender_email
+            if CONF.notification.sender_email
+            else "RecordInLog"
+        )
         report_ts = objects.ReportTimestamp(self.backup_mgt.ctx)
         report_ts.sender = sender
         report_ts.created_at = timeutils.utcnow()
@@ -155,8 +158,9 @@
         )
         self.content += html
         subject = f"Staffeln Backup result: {project_id}"
-        reported = self.send_result_email(project_id, subject=subject,
-                                          project_name=project_name)
+        reported = self.send_result_email(
+            project_id, subject=subject, project_name=project_name
+        )
         if reported:
             # Record success report
             self.create_report_record()
diff --git a/staffeln/db/sqlalchemy/alembic/versions/5b2e78435231_add_report_timestamp.py b/staffeln/db/sqlalchemy/alembic/versions/5b2e78435231_add_report_timestamp.py
index e6107eb..293de1a 100644
--- a/staffeln/db/sqlalchemy/alembic/versions/5b2e78435231_add_report_timestamp.py
+++ b/staffeln/db/sqlalchemy/alembic/versions/5b2e78435231_add_report_timestamp.py
@@ -1,3 +1,7 @@
+import sqlalchemy as sa
+from alembic import op
+from oslo_log import log
+
 """add report timestamp
 
 Revision ID: 5b2e78435231
@@ -7,34 +11,26 @@
 """
 
 # revision identifiers, used by Alembic.
-revision = '5b2e78435231'
-down_revision = '2b2b9df199bd'
-
-from alembic import op
-import sqlalchemy as sa
-
-from oslo_log import log
-
+revision = "5b2e78435231"
+down_revision = "2b2b9df199bd"
 
 LOG = log.getLogger(__name__)
 
 
 def upgrade():
     op.create_table(
-        'report_timestamp',
-        sa.Column('id', sa.String(36), primary_key=True, nullable=False),
-        sa.Column('created_at', sa.DateTime),
-        sa.Column('updated_at', sa.DateTime),
-        sa.Column('sender', sa.String(length=255), nullable=True),
-
-        mysql_engine='InnoDB',
-        mysql_charset='utf8')
-
+        "report_timestamp",
+        sa.Column("id", sa.String(36), primary_key=True, nullable=False),
+        sa.Column("created_at", sa.DateTime),
+        sa.Column("updated_at", sa.DateTime),
+        sa.Column("sender", sa.String(length=255), nullable=True),
+        mysql_engine="InnoDB",
+        mysql_charset="utf8",
+    )
 
 
 def downgrade():
     try:
-        op.drop_table('report_timestamp')
+        op.drop_table("report_timestamp")
     except Exception:
         LOG.exception("Error Dropping 'report_timestamp' table.")
-
diff --git a/staffeln/db/sqlalchemy/api.py b/staffeln/db/sqlalchemy/api.py
index 50615bc..6d9325f 100644
--- a/staffeln/db/sqlalchemy/api.py
+++ b/staffeln/db/sqlalchemy/api.py
@@ -112,7 +112,7 @@
 
         return self._add_filters(
             query=query,
-            model=models.Backup_data,
+            model=models.Report_timestamp,
             filters=filters,
             plain_fields=plain_fields,
         )
diff --git a/staffeln/objects/__init__.py b/staffeln/objects/__init__.py
index 8e097a4..2af8df0 100755
--- a/staffeln/objects/__init__.py
+++ b/staffeln/objects/__init__.py
@@ -1,6 +1,6 @@
 from .queue import Queue  # noqa: F401
-from .volume import Volume  # noqa: F401
 from .report import ReportTimestamp  # noqa: F401
+from .volume import Volume  # noqa: F401
 
 
 def register_all():
diff --git a/staffeln/objects/queue.py b/staffeln/objects/queue.py
index ea88b4d..c6b1177 100644
--- a/staffeln/objects/queue.py
+++ b/staffeln/objects/queue.py
@@ -1,5 +1,4 @@
 from oslo_versionedobjects import fields as ovoo_fields
-
 from staffeln.db import api as db_api
 from staffeln.objects import base
 from staffeln.objects import fields as sfeild
diff --git a/staffeln/objects/report.py b/staffeln/objects/report.py
index 954ca66..e851a93 100644
--- a/staffeln/objects/report.py
+++ b/staffeln/objects/report.py
@@ -1,5 +1,4 @@
 from oslo_versionedobjects import fields as ovoo_fields
-
 from staffeln.db import api as db_api
 from staffeln.objects import base
 from staffeln.objects import fields as sfeild
