diff --git a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable.php
index 8dda060c4f75ff4428bb4ebede6985265c61def2..6eb76c83d0a1b104c70acf47b9d6121941ad7609 100644
--- a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable.php
@@ -62,7 +62,10 @@ class Configurable extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
     {
         $isProductInstance = false;
         if ($mainProduct instanceof \Magento\Catalog\Model\Product) {
-            $mainProductId = $mainProduct->getId();
+            $mainProductId = $mainProduct->getData(
+                $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField()
+            );
+
             $isProductInstance = true;
         }
         $old = [];
@@ -88,9 +91,9 @@ class Configurable extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
             }
             $this->getConnection()->insertMultiple($this->getMainTable(), $data);
         }
-        $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
+
         // configurable product relations should be added to relation table
-        $this->_catalogProductRelation->processRelations($mainProduct->getData($linkField), $productIds);
+        $this->_catalogProductRelation->processRelations($mainProductId, $productIds);
 
         return $this;
     }