diff --git a/mod/box/box.h b/mod/box/box.h
index 8dd66e3c83febe4903bd076168406e095f2ef81d..5a8531fdf11d9a48418f963f8a5bd1a6862febbd 100644
--- a/mod/box/box.h
+++ b/mod/box/box.h
@@ -124,7 +124,8 @@ enum box_mode {
         _(SELECT_LIMIT, 15)			\
 	_(SELECT, 17)				\
 	_(UPDATE_FIELDS, 19)			\
-	_(DELETE, 20)
+	_(DELETE_OLD, 20)			\
+	_(DELETE, 21)
 
 ENUM(messages, MESSAGES);
 
diff --git a/mod/box/box.m b/mod/box/box.m
index 26721739199c0bb52a2b126044d679ee6dfe9389..c6a92be0212f90dffd650c08c40e206c3f4fc73d 100644
--- a/mod/box/box.m
+++ b/mod/box/box.m
@@ -771,7 +771,7 @@ txn_commit(struct box_txn *txn)
 
 		unlock_tuples(txn);
 
-		if (txn->op == DELETE)
+		if (txn->op == DELETE_OLD || txn->op == DELETE)
 			commit_delete(txn);
 		else
 			commit_replace(txn);
@@ -821,6 +821,8 @@ box_dispatch(struct box_txn *txn, struct tbuf *data)
 		break;
 
 	case DELETE:
+		txn->flags |= read_u32(data) & BOX_ALLOWED_REQUEST_FLAGS;
+	case DELETE_OLD:
 		key_len = read_u32(data);
 		if (key_len != 1)
 			tnt_raise(IllegalParams, :"key must be single valued");