diff --git a/vendor/magento/module-inventory-configurable-product/Plugin/InventoryApi/UpdateConfigurableProductParentStockStatus.php b/vendor/magento/module-inventory-configurable-product/Plugin/InventoryApi/UpdateConfigurableProductParentStockStatus.php
new file mode 100644
index 00000000000..f00507d738d
--- /dev/null
+++ b/vendor/magento/module-inventory-configurable-product/Plugin/InventoryApi/UpdateConfigurableProductParentStockStatus.php
@@ -0,0 +1,89 @@
+getProductIdsBySkus = $getProductIdsBySkus;
+ $this->changeParentStockStatus = $changeParentStockStatus;
+ $this->isSingleSourceMode = $isSingleSourceMode;
+ $this->storeManager = $storeManager;
+ }
+
+ /**
+ * Make configurable product out of stock if all its children out of stock
+ *
+ * @param SourceItemsSaveInterface $subject
+ * @param void $result
+ * @param SourceItemInterface[] $sourceItems
+ * @return void
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function afterExecute(SourceItemsSaveInterface $subject, $result, array $sourceItems): void
+ {
+ $productIds = [];
+ if ($this->isSingleSourceMode->execute() && $this->storeManager->hasSingleStore()) {
+ foreach ($sourceItems as $sourceItem) {
+ $sku = $sourceItem->getSku();
+ try {
+ $productIds[] = (int)$this->getProductIdsBySkus->execute([$sku])[$sku];
+ } catch (NoSuchEntityException $e) {
+ $productIds = [];
+ }
+ }
+ if ($productIds) {
+ $this->changeParentStockStatus->execute($productIds);
+ }
+ }
+ }
+}
diff --git a/vendor/magento/module-inventory-configurable-product/etc/di.xml b/vendor/magento/module-inventory-configurable-product/etc/di.xml
index 93313cc5fbc..95bb1f2c94a 100644
--- a/vendor/magento/module-inventory-configurable-product/etc/di.xml
+++ b/vendor/magento/module-inventory-configurable-product/etc/di.xml
@@ -35,4 +35,8 @@
+
+
+