{"data":{"id":"magento2-38926","source":"github-pr","sourceRef":"magento/magento2#38926","title":"Issue at product import when provided with custom options-type: file (Created Product does not contain price for custom-option and show only the first file type extension provided)","pr":{"number":38926,"url":"https://github.com/magento/magento2/pull/38926","author":"yaroslav-kozar","mergedAt":"2024-09-05T13:38:34Z","mergeCommit":"16f40c1feedbfa487299df16289d1ea7bec2c44d","headCommit":"a4eab4cd6cebe6170dca81ef0202da310aa9c2d7","baseRef":"2.4-develop","diffSha256":"033f10ed07e28d9d74f5d4a0f558b8536ddc3005af23a72acbd45248e18c6e8c"},"issues":[{"number":38805,"url":"https://github.com/magento/magento2/issues/38805","title":"Issue at product import when provided with custom options-type: file (Created Product does not contain price for custom-option and show only the first file type extension provided)","labels":["Area: Import / Export","Component: ImportExport","Issue: Confirmed","Priority: P2","Progress: done","Reported on 2.4.7","Reproduced on 2.4.x"],"kind":"human"}],"fixedIn":"2.4.8","containingTags":["2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5","2.4.9"],"reportedOn":"2.4.7","codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"conflict","2.4.8-p1":"conflict","2.4.8-p2":"conflict","2.4.8-p3":"conflict","2.4.8-p4":"conflict","2.4.8-p5":"conflict","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10"],"components":["magento/module-catalog-import-export"],"files":[{"path":"app/code/Magento/CatalogImportExport/Model/Import/Product/Option.php","change":"modified","package":"magento/module-catalog-import-export"}],"stripped":{"tests":["app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Type/OptionTest.php"],"docs":[],"outsideCode":[]},"linesChanged":20,"mergeBatched":false,"excluded":null,"sections":{"description":"![Screenshot from 2024-06-06 16-33-41](https://github.com/magento/magento2/assets/171928821/7ebdf0a5-bbd9-4142-93cc-cd521aaf2630)","stepsToReproduce":"1. Create a CSV file for product import.\n2. Add the necessary data for the product along with custom_options.\n3. Add the type: file and other data for the custom_options column. Make sure to add more than one file_extension attribute.\n4. Navigate to System>Import.\n5. Choose Entity type: Products and Import behaviors: Add/Update. Leave the remaining settings as default. (separators: \",\")\n6. Validate and Import the Product.\n7. Check the created product customization options section on the edit product page. The price is missing and file extension show only the first extension provided in the CSV.","expectedResult":"![Screenshot from 2024-06-06 16-01-46](https://github.com/magento/magento2/assets/171928821/14caa7f9-1f08-4a31-b20f-34b431f00056)","actualResult":"![Screenshot from 2024-06-06 16-33-41](https://github.com/magento/magento2/assets/171928821/7ebdf0a5-bbd9-4142-93cc-cd521aaf2630)","source":"issue"},"signatures":[],"labels":{"area":["Import / Export"],"component":["ImportExport"],"priority":"P2","severity":null,"reportedOn":["2.4.7"]},"categories":["Import/Export"],"triage":{"model":"@cf/cloudflare/clef","requestHash":"aa417ee40c665f3709cffa142ca8f093dd53e5c0bc198142fc2eb95f723d3c61","isBugfix":0.9797,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.9724,"feature":0.0061,"refactor":0.0068,"tests_only":0.0086,"docs_only":0.0029,"dependency":0.0032},"confidence":0.935},"scope":{"score":0.6626,"probabilities":{"0":0.4368,"1":0.4638,"2":0.0994},"confidence":0.1237},"risk":{"score":0.1821,"probabilities":{"0":0.8552,"1":0.1076,"2":0.0372},"confidence":0.6164},"area":{"choice":"catalog","probabilities":{"catalog":0.6436,"checkout":0.0163,"customer":0.0137,"admin":0.1542,"graphql_api":0.0138,"framework":0.03,"frontend":0.0165,"other":0.1119},"confidence":0.374},"securityRelevant":0.006,"reportedVersion":{"choice":"2.4.7","probabilities":{"2.4.0":0.0021,"2.4.0-p1":0.0021,"2.4.1":0.0018,"2.4.1-p1":0.002,"2.4.2":0.0023,"2.4.2-p1":0.0022,"2.4.2-p2":0.0027,"2.4.3":0.0029,"2.4.3-p1":0.0029,"2.4.3-p2":0.0034,"2.4.3-p3":0.0031,"2.4.4":0.0026,"2.4.4-p1":0.0026,"2.4.4-p10":0.0031,"2.4.4-p11":0.0032,"2.4.4-p12":0.0028,"2.4.4-p13":0.0032,"2.4.4-p14":0.0031,"2.4.4-p15":0.0028,"2.4.4-p16":0.0027,"2.4.4-p17":0.0028,"2.4.4-p18":0.0025,"2.4.4-p2":0.002,"2.4.4-p3":0.0021,"2.4.4-p4":0.0022,"2.4.4-p5":0.0026,"2.4.4-p6":0.0027,"2.4.4-p7":0.0032,"2.4.4-p8":0.0029,"2.4.4-p9":0.0024,"2.4.5":0.0029,"2.4.5-p1":0.0026,"2.4.5-p10":0.0023,"2.4.5-p11":0.0028,"2.4.5-p12":0.0036,"2.4.5-p13":0.0027,"2.4.5-p14":0.0035,"2.4.5-p15":0.0025,"2.4.5-p16":0.0026,"2.4.5-p17":0.0029,"2.4.5-p2":0.0021,"2.4.5-p3":0.0025,"2.4.5-p4":0.0024,"2.4.5-p5":0.0028,"2.4.5-p6":0.0035,"2.4.5-p7":0.0031,"2.4.5-p8":0.0028,"2.4.5-p9":0.0023,"2.4.6":0.0118,"2.4.6-p1":0.0148,"2.4.6-p10":0.0063,"2.4.6-p11":0.008,"2.4.6-p12":0.0073,"2.4.6-p13":0.0072,"2.4.6-p14":0.006,"2.4.6-p15":0.0048,"2.4.6-p2":0.0025,"2.4.6-p3":0.0046,"2.4.6-p4":0.0056,"2.4.6-p5":0.0052,"2.4.6-p6":0.006,"2.4.6-p7":0.0071,"2.4.6-p8":0.0044,"2.4.6-p9":0.0031,"2.4.7":0.5846,"2.4.7-p1":0.0215,"2.4.7-p10":0.0078,"2.4.7-p2":0.0104,"2.4.7-p3":0.0128,"2.4.7-p4":0.0144,"2.4.7-p5":0.0115,"2.4.7-p6":0.015,"2.4.7-p7":0.0147,"2.4.7-p8":0.0113,"2.4.7-p9":0.0065,"2.4.8":0.0066,"2.4.8-p1":0.0067,"2.4.8-p2":0.0066,"2.4.8-p3":0.0064,"2.4.8-p4":0.0059,"2.4.8-p5":0.0056,"2.4.9":0.0058,"unspecified":0.0123},"confidence":0.3371},"backportWorthy":{"score":1.5367,"probabilities":{"0":0.1025,"1":0.2583,"2":0.6392},"confidence":0.2287}},"curated":{"title":"Fixes file-type custom options losing price and extensions on product import","description":"After a product import with custom options of type file, the created product does not contain the price for the custom option and only the first file_extension provided is kept. In the CatalogImportExport Option model, _parseCustomOptions now matches the file_extension value with preg_match so the multiple value separator in it does not split it, and price is in the list for the file type.","categories":["Import/Export"],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":{"2.4.7-p10":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T09:29:17.076Z","releaseCommit":"72561bf80652f57cc642a03e2c9a51d74a285b14","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-06T09:29:17.076Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-38926 details"}