diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py
index 13b09358751d4b1c8304273bda473daecc4f3699..df940fc0e5a80930758a153506b21ef55a515c0f 100644
--- a/invenio_utilities_tuw/cli/drafts.py
+++ b/invenio_utilities_tuw/cli/drafts.py
@@ -364,19 +364,34 @@ def remove_files(filekeys, pid, pid_type, user):
     recid = convert_to_recid(pid, pid_type)
     identity = get_identity_for_user(user)
     file_service = service.draft_files
+    draft = service.read_draft(id_=recid, identity=identity)._record
 
-    for file_key in filekeys:
-        try:
-            file_service.delete_file(id_=recid, file_key=file_key, identity=identity)
-            click.secho(file_key, fg="red")
+    bucket_was_locked = draft.files.bucket.locked
+    draft.files.bucket.locked = False
+    uow = UnitOfWork(db.session)
+    try:
+        for file_key in filekeys:
+            try:
+                file_service.delete_file(
+                    id_=recid, file_key=file_key, identity=identity, uow=uow
+                )
+                click.secho(file_key, fg="red")
 
-        except KeyError as err:
-            click.secho(f"error: {err}", fg="yellow", err=True)
+            except KeyError as err:
+                click.secho(f"error: {err}", fg="yellow", err=True)
 
-    draft = service.read_draft(id_=recid, identity=identity)._record
-    if not draft.files.entries:
-        draft.files.enabled = False
-        draft.commit()
+        if not draft.files.entries:
+            draft.files.enabled = False
+            draft.commit()
+
+        uow.commit()
+
+    except Exception as e:
+        uow.rollback()
+        click.secho(f"aborted due to error: {e}", fg="red", err=True)
+
+    finally:
+        draft.files.bucket.locked = bucket_was_locked
         db.session.commit()