diff --git a/mod/box/box.h b/mod/box/box.h
index 5560b742d006c1aa9a7f98b27f8776a18b91f5e3..49fc7359e6096e13a16ff28be192a09591b84a39 100644
--- a/mod/box/box.h
+++ b/mod/box/box.h
@@ -123,7 +123,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 420e0dd0678c7bfdbe1d2e6611e63b3fcc7a17b2..afb91ba229daf507cef3dd1c248b0f8ed269e1ab 100644
--- a/mod/box/box.m
+++ b/mod/box/box.m
@@ -773,7 +773,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);
@@ -823,6 +823,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");