Bulk API Product Update Unnecessarily Deletes & Re-adds Options
@Alexander-Khohklov is already working on this.
Since Sep 2, 2026.
- Dominant language
- PHP
- Stars
- 12.2k
- Forks
- 9.4k
- PR merge metrics
- No merged PRs in 30d
Description
### Preconditions and environment
Magento 2.4
### Steps to reproduce
When making a request to /rest/default/async/bulk/V1/products such as
```
[
{
"product": {
"sku": "12345",
"price": 20.00,
"options": [
{
"product_sku": "12345",
"title": "UOM",
"type": "radio",
"is_require": false,
"values": [
{
"title": "Pack of 10",
"sort_order": 1,
"price": 0,
"price_type": "fixed",
"sku": "PK"
},
{
"title": "Case of 100",
"sort_order": 2,
"price": 10.00,
"price_type": "fixed",
"sku": "CS"
}
]
}
]
}
}
]
```
If I make the exact same request twice, changing nothing about the product options, it will completely remove the existing catalog_product_option table entry(ies) and re-create them, rather than only updating the changed data, and resorting to completely re-creating the options only when strictly necessary
### Expected result
If I make a request to update a set of product options, it should preserve the options as much as possible & avoid affecting cart items with selected options
### Actual result
It completely replaces existing options, even when no changes are made
### Additional information
_No response_
### Release note
_No response_
### Triage and priority
- [ ] Severity: **S0** _- Affects critical data or functionality and leaves users without workaround._
- [x] Severity: **S1** _- Affects critical data or functionality and forces users to employ a workaround._
- [ ] Severity: **S2** _- Affects non-critical data or functionality and forces users to employ a workaround._
- [ ] Severity: **S3** _- Affects non-critical data or functionality and does not force users to employ a workaround._
- [ ] Severity: **S4** _- Affects aesthetics, professional look and feel, “quality” or “usability”._
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.