diff --git a/staffeln/db/sqlalchemy/api.py b/staffeln/db/sqlalchemy/api.py
index d16766f..41cd483 100644
--- a/staffeln/db/sqlalchemy/api.py
+++ b/staffeln/db/sqlalchemy/api.py
@@ -109,7 +109,13 @@
         if filters is None:
             filters = {}
 
-        plain_fields = ["volume_id", "backup_id", "backup_completed", "instance_id"]
+        plain_fields = [
+            "volume_id",
+            "backup_id",
+            "backup_completed",
+            "instance_id",
+            "created_at",
+        ]
 
         return self._add_filters(
             query=query,
@@ -144,6 +150,7 @@
 
         for raw_fieldname, value in filters.items():
             fieldname, operator_ = self.__decompose_filter(raw_fieldname)
+
             if fieldname in plain_fields:
                 query = self.__add_simple_filter(
                     query, model, fieldname, value, operator_
@@ -161,7 +168,6 @@
         ):
             if not isinstance(value, datetime.datetime):
                 value = timeutils.parse_isotime(value)
-
         return query.filter(self.valid_operators[operator_](field, value))
 
     def __decompose_filter(self, raw_fieldname):
@@ -181,6 +187,7 @@
         query = query.filter(getattr(model, fieldname) == value)
 
         try:
+            # To avoid exception if the no result found in table.
             obj = query.one_or_none()
         except exc.NoResultFound:
             LOG.error("ResourceNotFound")
@@ -324,3 +331,9 @@
             )
         except:
             LOG.error("Backup resource not found.")
+
+    def soft_delete_backup(self, id):
+        try:
+            return self._soft_delete(models.Backup_data, id)
+        except:
+            LOG.error("Backup Not found.")
diff --git a/staffeln/objects/volume.py b/staffeln/objects/volume.py
index abe03ad..1a6c09d 100644
--- a/staffeln/objects/volume.py
+++ b/staffeln/objects/volume.py
@@ -27,7 +27,7 @@
         """
         db_backups = cls.dbapi.get_backup_list(context, filters=filters)
 
-        return [cls._from_db_object(cls(), obj) for obj in db_backups]
+        return [cls._from_db_object(cls(context), obj) for obj in db_backups]
 
     @base.remotable
     def create(self):
@@ -59,6 +59,11 @@
         current = self.get_by_uuid(backup_id=self.backup_id)
         self.obj_refresh(current)
 
+    @base.remotable
+    def delete_backup(self):
+        """Soft Delete the :class:`Queue_data` from the DB"""
+        db_obj = self.dbapi.soft_delete_backup(self.id)
+
     @base.remotable_classmethod
     def get_backup_by_backup_id(cls, context, backup_id):
         """Find a backup based on backup_id
