diff -Nuar a/vendor/magento/module-sales/Model/Order/ItemRepository.php b/vendor/magento/module-sales/Model/Order/ItemRepository.php
index 6e029ac4683..345fffc414f 100644
--- a/vendor/magento/module-sales/Model/Order/ItemRepository.php
+++ b/vendor/magento/module-sales/Model/Order/ItemRepository.php
@@ -167,10 +167,7 @@ class ItemRepository implements OrderItemRepositoryInterface
     public function save(OrderItemInterface $entity)
     {
         if ($entity->getProductOption()) {
-            $request = $this->getBuyRequest($entity);
-            $productOptions = $entity->getProductOptions();
-            $productOptions['info_buyRequest'] = $request->toArray();
-            $entity->setProductOptions($productOptions);
+            $entity->setProductOptions($this->getItemProductOptions($entity));
         }
 
         $this->metadata->getMapper()->save($entity);
@@ -178,6 +175,23 @@ class ItemRepository implements OrderItemRepositoryInterface
         return $this->registry[$entity->getEntityId()];
     }
 
+    /**
+     * Return product options
+     *
+     * @param OrderItemInterface $entity
+     * @return array
+     */
+    private function getItemProductOptions(OrderItemInterface $entity): array
+    {
+        $request = $this->getBuyRequest($entity);
+        $productOptions = $entity->getProductOptions();
+        $productOptions['info_buyRequest'] = $productOptions && !empty($productOptions['info_buyRequest'])
+            ? array_merge($productOptions['info_buyRequest'], $request->toArray())
+            : $request->toArray();
+
+        return $productOptions;
+    }
+
     /**
      * Set parent item.
      *
