diff --git a/app/code/Magento/Downloadable/Observer/UpdateLinkPurchasedObserver.php b/app/code/Magento/Downloadable/Observer/UpdateLinkPurchasedObserver.php
new file mode 100644
index 0000000000000..db391ccda6866
--- /dev/null
+++ b/app/code/Magento/Downloadable/Observer/UpdateLinkPurchasedObserver.php
@@ -0,0 +1,80 @@
+scopeConfig = $scopeConfig;
+ $this->purchasedFactory = $purchasedFactory;
+ $this->objectCopyService = $objectCopyService;
+ }
+
+ /**
+ * Re-save order data after order update.
+ *
+ * @param \Magento\Framework\Event\Observer $observer
+ * @return $this
+ */
+ public function execute(\Magento\Framework\Event\Observer $observer)
+ {
+ $order = $observer->getEvent()->getOrder();
+
+ if (!$order->getId()) {
+ //order not saved in the database
+ return $this;
+ }
+
+ $purchasedLinks = $this->purchasedFactory->create()->addFieldToFilter(
+ 'order_id',
+ ['eq' => $order->getId()]
+ );
+
+ foreach ($purchasedLinks as $linkPurchased) {
+ $this->objectCopyService->copyFieldsetToTarget(
+ \downloadable_sales_copy_order::class,
+ 'to_downloadable',
+ $order,
+ $linkPurchased
+ );
+ $linkPurchased->save();
+ }
+
+ return $this;
+ }
+}
diff --git a/app/code/Magento/Downloadable/etc/events.xml b/app/code/Magento/Downloadable/etc/events.xml
index 5a985fc33802e..21cc50ddc9669 100644
--- a/app/code/Magento/Downloadable/etc/events.xml
+++ b/app/code/Magento/Downloadable/etc/events.xml
@@ -11,6 +11,7 @@
+