diff --git a/vendor/magento/module-inventory-catalog/Model/IsSingleSourceModeCache.php b/vendor/magento/module-inventory-catalog/Model/IsSingleSourceModeCache.php
new file mode 100644
index 00000000000..f37456045e0
--- /dev/null
+++ b/vendor/magento/module-inventory-catalog/Model/IsSingleSourceModeCache.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright Â© Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\InventoryCatalog\Model;
+
+use Magento\InventoryCatalogApi\Model\IsSingleSourceModeInterface;
+
+/**
+ * @inheritdoc
+ */
+class IsSingleSourceModeCache implements IsSingleSourceModeInterface
+{
+    /**
+     * @var IsSingleSourceMode
+     */
+    private $isSingleSourceMode;
+
+    /**
+     * @var bool
+     */
+    private $cacheValue;
+
+    /**
+     * @param IsSingleSourceMode $isSingleSourceMode
+     */
+    public function __construct(IsSingleSourceMode $isSingleSourceMode)
+    {
+        $this->isSingleSourceMode = $isSingleSourceMode;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function execute(): bool
+    {
+        if ($this->cacheValue === null) {
+            $this->cacheValue = $this->isSingleSourceMode->execute();
+        }
+
+        return $this->cacheValue;
+    }
+}
diff --git a/vendor/magento/module-inventory-catalog/etc/di.xml b/vendor/magento/module-inventory-catalog/etc/di.xml
index 7a598862cb6..dd5a114eb5f 100644
--- a/vendor/magento/module-inventory-catalog/etc/di.xml
+++ b/vendor/magento/module-inventory-catalog/etc/di.xml
@@ -12,7 +12,7 @@
     <preference for="Magento\InventoryCatalogApi\Model\GetProductTypesBySkusInterface" type="Magento\InventoryCatalog\Model\ResourceModel\GetProductTypesBySkusCache" />
     <preference for="Magento\InventoryCatalogApi\Model\GetSkusByProductIdsInterface" type="Magento\InventoryCatalog\Model\GetSkusByProductIdsCache"/>
     <preference for="Magento\InventoryCatalogApi\Model\GetParentSkusOfChildrenSkusInterface" type="Magento\InventoryCatalog\Model\GetParentSkusOfChildrenSkus"/>
-    <preference for="Magento\InventoryCatalogApi\Model\IsSingleSourceModeInterface" type="Magento\InventoryCatalog\Model\IsSingleSourceMode"/>
+    <preference for="Magento\InventoryCatalogApi\Model\IsSingleSourceModeInterface" type="Magento\InventoryCatalog\Model\IsSingleSourceModeCache"/>
     <preference for="Magento\InventoryCatalogApi\Model\SourceItemsProcessorInterface" type="Magento\InventoryCatalog\Model\SourceItemsProcessor"/>
     <type name="Magento\InventoryApi\Api\StockRepositoryInterface">
         <plugin name="prevent_default_stock_deleting"
diff --git a/vendor/magento/module-inventory-indexer/Model/ResourceModel/GetStockItemData.php b/vendor/magento/module-inventory-indexer/Model/ResourceModel/GetStockItemData.php
index ddc4917c671..a31a63d09fc 100644
--- a/vendor/magento/module-inventory-indexer/Model/ResourceModel/GetStockItemData.php
+++ b/vendor/magento/module-inventory-indexer/Model/ResourceModel/GetStockItemData.php
@@ -7,13 +7,17 @@ declare(strict_types=1);

 namespace Magento\InventoryIndexer\Model\ResourceModel;

+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\App\ResourceConnection;
 use Magento\Framework\Exception\LocalizedException;
-use Magento\InventoryIndexer\Model\StockIndexTableNameResolverInterface;
-use Magento\InventorySalesApi\Model\GetStockItemDataInterface;
-use Magento\InventoryIndexer\Indexer\IndexStructure;
 use Magento\InventoryCatalogApi\Api\DefaultStockProviderInterface;
 use Magento\InventoryCatalogApi\Model\GetProductIdsBySkusInterface;
+use Magento\InventoryCatalogApi\Model\IsSingleSourceModeInterface;
+use Magento\InventoryConfigurationApi\Model\IsSourceItemManagementAllowedForSkuInterface;
+use Magento\InventoryIndexer\Indexer\IndexStructure;
+use Magento\InventoryIndexer\Model\StockIndexTableNameResolverInterface;
+use Magento\InventorySalesApi\Model\GetStockItemDataInterface;
+

 /**
  * @inheritdoc
@@ -40,22 +44,41 @@ class GetStockItemData implements GetStockItemDataInterface
      */
     private $getProductIdsBySkus;

+    /**
+     * @var IsSingleSourceModeInterface
+     */
+    private $isSingleSourceMode;
+
+    /**
+     * @var IsSourceItemManagementAllowedForSkuInterface
+     */
+    private $isSourceItemManagementAllowedForSku;
+
     /**
      * @param ResourceConnection $resource
      * @param StockIndexTableNameResolverInterface $stockIndexTableNameResolver
      * @param DefaultStockProviderInterface $defaultStockProvider
      * @param GetProductIdsBySkusInterface $getProductIdsBySkus
+     * @param IsSingleSourceModeInterface|null $isSingleSourceMode
+     * @param IsSourceItemManagementAllowedForSkuInterface|null $isSourceItemManagementAllowedForSku
      */
     public function __construct(
         ResourceConnection $resource,
         StockIndexTableNameResolverInterface $stockIndexTableNameResolver,
         DefaultStockProviderInterface $defaultStockProvider,
-        GetProductIdsBySkusInterface $getProductIdsBySkus
+        GetProductIdsBySkusInterface $getProductIdsBySkus,
+        ?IsSingleSourceModeInterface $isSingleSourceMode = null,
+        ?IsSourceItemManagementAllowedForSkuInterface $isSourceItemManagementAllowedForSku = null
     ) {
         $this->resource = $resource;
         $this->stockIndexTableNameResolver = $stockIndexTableNameResolver;
         $this->defaultStockProvider = $defaultStockProvider;
         $this->getProductIdsBySkus = $getProductIdsBySkus;
+        $this->isSingleSourceMode = $isSingleSourceMode
+            ?: ObjectManager::getInstance()->get(IsSingleSourceModeInterface::class);
+        $this->isSourceItemManagementAllowedForSku = $isSourceItemManagementAllowedForSku
+            ?: ObjectManager::getInstance()->get(IsSourceItemManagementAllowedForSkuInterface::class);
+
     }

     /**
@@ -68,31 +91,77 @@ class GetStockItemData implements GetStockItemDataInterface

         if ($this->defaultStockProvider->getId() === $stockId) {
             $productId = current($this->getProductIdsBySkus->execute([$sku]));
-            $stockItemTableName = $this->resource->getTableName('cataloginventory_stock_status');
             $select->from(
-                $stockItemTableName,
+                $this->resource->getTableName('cataloginventory_stock_status'),
                 [
                     GetStockItemDataInterface::QUANTITY => 'qty',
                     GetStockItemDataInterface::IS_SALABLE => 'stock_status',
                 ]
-            )->where('product_id = ?', $productId);
-
-            return $connection->fetchRow($select) ?: null;
+            )->where(
+                'product_id = ?',
+                $productId
+            );
         } else {
-            $stockItemTableName = $this->stockIndexTableNameResolver->execute($stockId);
             $select->from(
-                $stockItemTableName,
+                $this->stockIndexTableNameResolver->execute($stockId),
                 [
                     GetStockItemDataInterface::QUANTITY => IndexStructure::QUANTITY,
                     GetStockItemDataInterface::IS_SALABLE => IndexStructure::IS_SALABLE,
                 ]
-            )->where(IndexStructure::SKU . ' = ?', $sku);
+            )->where(
+                IndexStructure::SKU . ' = ?',
+                $sku
+            );
+        }

-            try {
-                    return $connection->fetchRow($select) ?: null;
-            } catch (\Exception $e) {
-                throw new LocalizedException(__('Could not receive Stock Item data'), $e);
+        try {
+            $stockItemRow = $connection->fetchRow($select) ?: null;
+            /**
+             * Fallback to the legacy cataloginventory_stock_item table.
+             * Caused by data absence in legacy cataloginventory_stock_status table
+             * for disabled products assigned to the default stock.
+             */
+            if ($stockItemRow === null) {
+                $stockItemRow = $this->getStockItemDataFromStockItemTable($sku, $stockId);
             }
+        } catch (\Exception $e) {
+            throw new LocalizedException(__('Could not receive Stock Item data'), $e);
+        }
+
+        return $stockItemRow;
+    }
+
+    /**
+     * Retrieve stock item data for product assigned to the default stock.
+     *
+     * @param string $sku
+     * @param int $stockId
+     * @return array|null
+     */
+    private function getStockItemDataFromStockItemTable(string $sku, int $stockId): ?array
+    {
+        if ($this->defaultStockProvider->getId() !== $stockId
+            || $this->isSingleSourceMode->execute()
+            || !$this->isSourceItemManagementAllowedForSku->execute($sku)
+        ) {
+            return null;
         }
+
+        $productId = current($this->getProductIdsBySkus->execute([$sku]));
+        $connection = $this->resource->getConnection();
+        $select = $connection->select();
+
+        $select->from(
+            $this->resource->getTableName('cataloginventory_stock_item'),
+            [
+                GetStockItemDataInterface::QUANTITY => 'qty',
+                GetStockItemDataInterface::IS_SALABLE => 'is_in_stock',
+            ]
+        )->where(
+            'product_id = ?',
+            $productId
+        );
+
+        return $connection->fetchRow($select) ?: null;
     }
 }
