diff --git a/dev/tests/functional/etc/repository_replacer.xml b/dev/tests/functional/etc/repository_replacer.xml
index 793dffec4f35fb1bed159ecff027a9314cd6f46a..61046fbac44c4b6fdc85e9f75c3d4cb6105644f6 100644
--- a/dev/tests/functional/etc/repository_replacer.xml
+++ b/dev/tests/functional/etc/repository_replacer.xml
@@ -144,13 +144,4 @@
             <field name="id" xsi:type="number">1</field>
         </dataset>
     </repository>
-
-    <repository class="Magento\Braintree\Test\Repository\BraintreeSandboxCustomer">
-        <dataset name="braintree_sandbox_default">
-            <field name="environment" xsi:type="string">BRAINTREEE_ENVIRONMENT</field>
-            <field name="merchantId" xsi:type="string">BRAINTREEE_MERCHANT_ID</field>
-            <field name="publicKey" xsi:type="string">BRAINTREE_PUBLIC_KEY</field>
-            <field name="privateKey" xsi:type="string">BRAINTREE_PRIVATE_KEY</field>
-        </dataset>
-    </repository>
 </config>
diff --git a/dev/tests/functional/etc/repository_replacer_payments.xml b/dev/tests/functional/etc/repository_replacer_payments.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2045f3d02661bb46a5c4b834b749d03eb71ae589
--- /dev/null
+++ b/dev/tests/functional/etc/repository_replacer_payments.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../vendor/magento/mtf/Magento/Mtf/Repository/etc/repository.xsd">
+    <repository class="Magento\Braintree\Test\Repository\BraintreeSandboxCustomer">
+        <dataset name="braintree_sandbox_default">
+            <field name="environment" xsi:type="string">BRAINTREEE_ENVIRONMENT</field>
+            <field name="merchantId" xsi:type="string">BRAINTREEE_MERCHANT_ID</field>
+            <field name="publicKey" xsi:type="string">BRAINTREE_PUBLIC_KEY</field>
+            <field name="privateKey" xsi:type="string">BRAINTREE_PRIVATE_KEY</field>
+        </dataset>
+    </repository>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
index 2f14871eda96e102a51ed4ceefd4578af49967b8..c791dfb10b63d42ccfe360f1f96595554d177e49 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
@@ -11,10 +11,17 @@
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="products/1" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data>
             <data name="customer/dataset" xsi:type="string">default</data>
-            <data name="checkoutMethod" xsi:type="string">login</data>
+            <data name="checkoutMethod" xsi:type="string">guest</data>
             <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
-            <data name="refundedPrices" xsi:type="array">
-                <item name="0" xsi:type="string">139.90</item>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">139.90</item>
+                </item>
             </data>
             <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
@@ -22,7 +29,6 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
             <data name="paymentAction" xsi:type="string">sale</data>
-            <data name="data/items_data/0/qty" xsi:type="string">-</data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" />
@@ -31,10 +37,28 @@
         <variation name="CreateOnlineCreditMemoBraintreePaypalTestVariation2" summary="Partial refund of order placed within Braintree PayPal" ticketId="MAGETWO-48698">
             <data name="products/0" xsi:type="string">catalogProductSimple::simple_for_sales</data>
             <data name="customer/dataset" xsi:type="string">default</data>
-            <data name="checkoutMethod" xsi:type="string">login</data>
+            <data name="checkoutMethod" xsi:type="string">guest</data>
             <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
-            <data name="refundedPrices" xsi:type="array">
-                <item name="0" xsi:type="string">621.20</item>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                    <item name="items_data" xsi:type="array">
+                        <item name="0" xsi:type="array">
+                            <item name="qty" xsi:type="string">1</item>
+                        </item>
+                    </item>
+                </item>
+                <item name="1" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">621.20</item>
+                </item>
+                <item name="1" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">606.20</item>
+                </item>
             </data>
             <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
@@ -42,9 +66,6 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
             <data name="data/items_data/0/qty" xsi:type="string">2</data>
-            <data name="refundData/items_data/0/qty" xsi:type="string">1</data>
-            <data name="order/dataset" xsi:type="string">default</data>
-            <data name="isCreditMemoPartial" xsi:type="string">Yes</data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
index 8eeec7908c78d0d6822446fe643f259336907320..2c1deb13024e23d5b8e5e152373cadbcd873fa98 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreeTest.xml
@@ -28,14 +28,80 @@
             <data name="creditCard/data/payment_code" xsi:type="string">braintree</data>
             <data name="configData" xsi:type="string">braintree</data>
             <data name="status" xsi:type="string">Closed</data>
-            <data name="refundedPrices" xsi:type="array">
-                <item name="0" xsi:type="string">145.98</item>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">145.98</item>
+                </item>
+            </data>
+            <data name="transactions/refund" xsi:type="array">
+                <item name="transactionType" xsi:type="string">Refund</item>
+                <item name="statusIsClosed" xsi:type="string">Yes</item>
+            </data>
+            <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertTransactionStatus" />
+        </variation>
+        <variation name="CreateOnlineCreditMemoBraintreeTestVariation2" summary="Partial Refund an order placed through Braintree with Partial capture" ticketId="MAGETWO-38325">
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
+            <data name="products" xsi:type="array">
+                <item name="0" xsi:type="string">catalogProductSimple::product_10_dollar</item>
+                <item name="1" xsi:type="string">configurableProduct::with_one_option</item>
+                <item name="2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</item>
+            </data>
+            <data name="customer/dataset" xsi:type="string">default</data>
+            <data name="braintreeSandboxCustomer/dataset" xsi:type="string">braintree_sandbox_default</data>
+            <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
+            <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
+            <data name="checkoutMethod" xsi:type="string">guest</data>
+            <data name="shipping" xsi:type="array">
+                <item name="shipping_service" xsi:type="string">Flat Rate</item>
+                <item name="shipping_method" xsi:type="string">Fixed</item>
+            </data>
+            <data name="payment/method" xsi:type="string">braintree</data>
+            <data name="creditCard/dataset" xsi:type="string">visa_default</data>
+            <data name="creditCard/data/payment_code" xsi:type="string">braintree</data>
+            <data name="configData" xsi:type="string">braintree</data>
+            <data name="status" xsi:type="string">Processing</data>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                    <item name="items_data" xsi:type="array">
+                        <item name="1" xsi:type="array">
+                            <item name="qty" xsi:type="string">0</item>
+                        </item>
+                    </item>
+                </item>
+                <item name="1" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">134.07</item>
+                </item>
+                <item name="1" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">1.08</item>
+                </item>
             </data>
             <data name="transactions/refund" xsi:type="array">
                 <item name="transactionType" xsi:type="string">Refund</item>
                 <item name="statusIsClosed" xsi:type="string">Yes</item>
             </data>
-            <data name="data/items_data/0/qty" xsi:type="string">-</data>
+            <data name="transactions/capture" xsi:type="array">
+                <item name="transactionType" xsi:type="string">Capture</item>
+                <item name="statusIsClosed" xsi:type="string">Yes</item>
+            </data>
+            <data name="data/items_data" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="qty" xsi:type="string">0</item>
+                </item>
+            </data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
index d61e2fff6337a4ddc3c616bd9dbc1ad2c8e0540e..93b4ae77e7cbfcff418d7e186bfffc7a5fd266b6 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
@@ -11,47 +11,69 @@ use Magento\Checkout\Test\Page\CheckoutOnepage;
 use Magento\Checkout\Test\Page\CheckoutOnepageSuccess;
 use Magento\Mtf\Fixture\FixtureFactory;
 use Magento\Mtf\TestStep\TestStepInterface;
+use Magento\Sales\Test\Fixture\OrderInjectable;
 
 /**
- * Class PlaceOrderWithPaypalStep
+ * Place order with Paypal in one page checkout.
  */
 class PlaceOrderWithPaypalStep implements TestStepInterface
 {
     /**
+     * Onepage checkout page.
+     *
      * @var CheckoutOnepage
      */
     private $checkoutOnepage;
 
     /**
+     * Assert that Order Grand Total is correct on checkout page review block.
+     *
      * @var AssertGrandTotalOrderReview
      */
     private $assertGrandTotalOrderReview;
 
     /**
+     * Assert billing address is not present in selected payment method.
+     *
      * @var AssertBillingAddressAbsentInPayment
      */
     private $assertBillingAddressAbsentInPayment;
 
     /**
+     * One page checkout success page.
+     *
      * @var CheckoutOnepageSuccess
      */
     private $checkoutOnepageSuccess;
 
     /**
+     * Price array.
+     *
      * @var array
      */
     private $prices;
 
     /**
+     * Factory for fixtures.
+     *
      * @var FixtureFactory
      */
     private $fixtureFactory;
 
     /**
+     * Array of product entities.
+     *
      * @var array
      */
     private $products;
 
+    /**
+     * Fixture OrderInjectable.
+     *
+     * @var OrderInjectable
+     */
+    private $order;
+
     /**
      * @param CheckoutOnepage $checkoutOnepage
      * @param AssertGrandTotalOrderReview $assertGrandTotalOrderReview
@@ -59,7 +81,8 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
      * @param CheckoutOnepageSuccess $checkoutOnepageSuccess
      * @param FixtureFactory $fixtureFactory
      * @param array $products
-     * @param array $prices
+     * @param array|null $prices
+     * @param OrderInjectable|null $order
      */
     public function __construct(
         CheckoutOnepage $checkoutOnepage,
@@ -68,7 +91,8 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
         CheckoutOnepageSuccess $checkoutOnepageSuccess,
         FixtureFactory $fixtureFactory,
         array $products,
-        array $prices = []
+        array $prices = [],
+        OrderInjectable $order = null
     ) {
         $this->checkoutOnepage = $checkoutOnepage;
         $this->assertGrandTotalOrderReview = $assertGrandTotalOrderReview;
@@ -77,10 +101,13 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
         $this->fixtureFactory = $fixtureFactory;
         $this->products = $products;
         $this->prices = $prices;
+        $this->order = $order;
     }
 
     /**
-     * @inheritdoc
+     * Place order after checking order totals on review step.
+     *
+     * @return array
      */
     public function run()
     {
@@ -94,15 +121,15 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
             ->getSelectedPaymentMethodBlock()
             ->clickPayWithPaypal();
         $this->checkoutOnepage->getBraintreePaypalBlock()->process($parentWindow);
-        
+        $data = [
+            'entity_id' => ['products' => $this->products]
+        ];
+        $orderData = $this->order !== null ? $this->order->getData() : [];
         $order = $this->fixtureFactory->createByCode(
             'orderInjectable',
-            [
-                'data' => [
-                    'entity_id' => ['products' => $this->products]
-                ]
-            ]
+            ['data' => array_merge($data, $orderData)]
         );
+
         return [
             'orderId' => $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId(),
             'order' => $order
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
index 6b270efcb011e5ac23248c96031ab85e2e3ebe9c..4a30bee7265715fa1e9d615d82987fdd7412f7e4 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Fixture/Cart/Items.php
@@ -34,13 +34,6 @@ class Items extends DataSource
     {
         $this->params = $params;
         $this->products = isset($data['products']) ? $data['products'] : [];
-
-        foreach ($this->products as $product) {
-            $classItem = 'Magento\\' . $this->getModuleName($product) . '\Test\Fixture\Cart\Item';
-            $item = ObjectManager::getInstance()->create($classItem, ['product' => $product]);
-
-            $this->data[] = $item;
-        }
     }
 
     /**
@@ -55,6 +48,24 @@ class Items extends DataSource
         return isset($match[1]) ? $match[1] : '';
     }
 
+    /**
+     * Return prepared dataset.
+     *
+     * @param null|string $key
+     * @return array
+     */
+    public function getData($key = null)
+    {
+        foreach ($this->products as $product) {
+            $classItem = 'Magento\\' . $this->getModuleName($product) . '\Test\Fixture\Cart\Item';
+            $item = ObjectManager::getInstance()->create($classItem, ['product' => $product]);
+            $item->getData();
+            $this->data[] = $item;
+        }
+
+        return $this->data;
+    }
+
     /**
      * Get source products.
      *
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/PlaceOrderStep.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/PlaceOrderStep.php
index 8beada29036b8a3cf2ff367a0b30b59b78faf0e8..7da3383014c28479e5a9b42b09c195343f2f74c6 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/PlaceOrderStep.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/PlaceOrderStep.php
@@ -11,6 +11,7 @@ use Magento\Checkout\Test\Page\CheckoutOnepage;
 use Magento\Checkout\Test\Page\CheckoutOnepageSuccess;
 use Magento\Mtf\Fixture\FixtureFactory;
 use Magento\Mtf\TestStep\TestStepInterface;
+use Magento\Sales\Test\Fixture\OrderInjectable;
 
 /**
  * Place order in one page checkout.
@@ -59,19 +60,28 @@ class PlaceOrderStep implements TestStepInterface
      */
     private $products;
 
+    /**
+     * Fixture OrderInjectable.
+     *
+     * @var OrderInjectable
+     */
+    private $order;
+
     /**
      * @param CheckoutOnepage $checkoutOnepage
      * @param AssertGrandTotalOrderReview $assertGrandTotalOrderReview
      * @param CheckoutOnepageSuccess $checkoutOnepageSuccess
      * @param FixtureFactory $fixtureFactory
-     * @param array $products
-     * @param array $prices
+     * @param OrderInjectable|null $order
+     * @param array|null $products
+     * @param array|null $prices
      */
     public function __construct(
         CheckoutOnepage $checkoutOnepage,
         AssertGrandTotalOrderReview $assertGrandTotalOrderReview,
         CheckoutOnepageSuccess $checkoutOnepageSuccess,
         FixtureFactory $fixtureFactory,
+        OrderInjectable $order = null,
         array $products = [],
         array $prices = []
     ) {
@@ -79,6 +89,7 @@ class PlaceOrderStep implements TestStepInterface
         $this->assertGrandTotalOrderReview = $assertGrandTotalOrderReview;
         $this->checkoutOnepageSuccess = $checkoutOnepageSuccess;
         $this->fixtureFactory = $fixtureFactory;
+        $this->order = $order;
         $this->products = $products;
         $this->prices = $prices;
     }
@@ -95,14 +106,14 @@ class PlaceOrderStep implements TestStepInterface
         }
         $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->clickPlaceOrder();
         $orderId = $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId();
+        $data = [
+            'id' => $orderId,
+            'entity_id' => ['products' => $this->products]
+        ];
+        $orderData = $this->order !== null ? $this->order->getData() : [];
         $order = $this->fixtureFactory->createByCode(
             'orderInjectable',
-            [
-                'data' => [
-                    'id' => $orderId,
-                    'entity_id' => ['products' => $this->products],
-                ]
-            ]
+            ['data' => array_merge($data, $orderData)]
         );
 
         return [
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
index 664e1a070cbc2bc6f78291636f9ddf5a0ed4ebd3..215764edfb49d069a46856e45df141315c1a0c82 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateOnlineCreditMemoTest.xml
@@ -11,8 +11,15 @@
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
-            <data name="refundedPrices" xsi:type="array">
-                <item name="0" xsi:type="string">15.00</item>
+            <data name="order/data/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="invoiceId" xsi:type="string">0</item>
+                </item>
+            </data>
+            <data name="order/data/price/refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">15.00</item>
+                </item>
             </data>
             <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractForm.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractForm.php
index a309aa871934fc57ef53ec5f1b1a2bfd4817023d..8d93b7c18a7ca8279630695fe5907463bdc19239 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractForm.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractForm.php
@@ -68,8 +68,9 @@ abstract class AbstractForm extends Form
     {
         $data = $this->prepareData($data);
         if (isset($data['items_data']) && $products !== null) {
-            foreach ($products as $key => $product) {
-                $this->getItemsBlock()->getItemProductBlock($product)->fillProduct($data['items_data'][$key]);
+            foreach ($data['items_data'] as $key => $item) {
+                $productSku = $products[$key]->getData()['sku'];
+                $this->getItemsBlock()->getItemProductBlock($productSku)->fillProduct($item);
             }
         }
     }
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
index 38ad9139d4fdb2bf28c40d8420db890dcda77d3a..012cac3848a8ee75ac8e63e48b9fd3e0f68a0fbd 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItems.php
@@ -111,7 +111,7 @@ class AbstractItems extends Block
      * @param ElementInterface $item
      * @return null|int
      */
-    private function getQty(ElementInterface $item)
+    protected function getQty(ElementInterface $item)
     {
         $qty = null;
         $elements = $item->getElements($this->qty);
@@ -127,7 +127,7 @@ class AbstractItems extends Block
      * @param ElementInterface $item
      * @return string
      */
-    private function getSku(ElementInterface $item)
+    protected function getSku(ElementInterface $item)
     {
         $itemContent = $item->find($this->sku)->getText();
         $itemContent = preg_replace('/\n|\r/', '', $itemContent);
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItemsNewBlock.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItemsNewBlock.php
index 2ba8fe00f1e718b94e21f3a80b0a03a66150bfcc..981101ee74927b56487eb74fff0b299978b98111 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItemsNewBlock.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/AbstractItemsNewBlock.php
@@ -8,38 +8,36 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order;
 
 use Magento\Sales\Test\Block\Adminhtml\Order\AbstractForm\Product;
 use Magento\Mtf\Block\Block;
-use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
- * Class AbstractItemsNewBlock
- * Items block on Credit Memo, Invoice, Shipment new pages
+ * Items block on Credit Memo, Invoice, Shipment new pages.
  */
 abstract class AbstractItemsNewBlock extends Block
 {
     /**
-     * Item product row selector
+     * Item product row selector.
      *
      * @var string
      */
     protected $productItem = '//tr[contains(.,"%s")]';
 
     /**
-     * 'Update Qty's' button css selector
+     * 'Update Qty's' button css selector.
      *
      * @var string
      */
     protected $updateQty = '.update-button';
 
     /**
-     * Get item product block
+     * Get item product block.
      *
-     * @param FixtureInterface $product
+     * @param  string $productSku
      * @return Product
      */
-    abstract public function getItemProductBlock(FixtureInterface $product);
+    abstract public function getItemProductBlock($productSku);
 
     /**
-     * Click update qty button
+     * Click update qty button.
      *
      * @return void
      */
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Creditmemo/Form/Items.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Creditmemo/Form/Items.php
index 52ff585cc43d627db53fd6ba36523cc8c670a328..a01805e85c74e062cb5ecd23828059c50fb41bac 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Creditmemo/Form/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Creditmemo/Form/Items.php
@@ -9,7 +9,6 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\Creditmemo\Form;
 use Magento\Sales\Test\Block\Adminhtml\Order\Creditmemo\Form\Items\Product;
 use Magento\Mtf\Block\Block;
 use Magento\Mtf\Client\Locator;
-use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
  * Credit Memo Items block on Credit Memo new page.
@@ -33,12 +32,12 @@ class Items extends Block
     /**
      * Get item product block.
      *
-     * @param FixtureInterface $product
+     * @param string $productSku
      * @return Product
      */
-    public function getItemProductBlock(FixtureInterface $product)
+    public function getItemProductBlock($productSku)
     {
-        $selector = sprintf($this->productItems, $product->getSku());
+        $selector = sprintf($this->productItems, $productSku);
         return $this->blockFactory->create(
             \Magento\Sales\Test\Block\Adminhtml\Order\Creditmemo\Form\Items\Product::class,
             ['element' => $this->_rootElement->find($selector, Locator::SELECTOR_XPATH)]
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Invoice/Form/Items.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Invoice/Form/Items.php
index baee80abd72dfd04b11223d23f2186bb2589a5a8..bb41662eadd837db00a8c661376fb62d6529b50d 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Invoice/Form/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Invoice/Form/Items.php
@@ -9,23 +9,21 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\Invoice\Form;
 use Magento\Sales\Test\Block\Adminhtml\Order\AbstractItemsNewBlock;
 use Magento\Sales\Test\Block\Adminhtml\Order\Invoice\Form\Items\Product;
 use Magento\Mtf\Client\Locator;
-use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
- * Class Items
- * Block for items to invoice on new invoice page
+ * Block for items to invoice on new invoice page.
  */
 class Items extends AbstractItemsNewBlock
 {
     /**
-     * Get item product block
+     * Get item product block.
      *
-     * @param FixtureInterface $product
+     * @param string $productSku
      * @return Product
      */
-    public function getItemProductBlock(FixtureInterface $product)
+    public function getItemProductBlock($productSku)
     {
-        $selector = sprintf($this->productItem, $product->getSku());
+        $selector = sprintf($this->productItem, $productSku);
         return $this->blockFactory->create(
             \Magento\Sales\Test\Block\Adminhtml\Order\Invoice\Form\Items\Product::class,
             ['element' => $this->_rootElement->find($selector, Locator::SELECTOR_XPATH)]
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
index 0988649b5df2b21680196191d1317ff8f9e51eae..8ba05c57137ec41a05694b96f92ffddb0bb5ee9e 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Shipment/View/Items.php
@@ -9,13 +9,12 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\Shipment\View;
 use Magento\Sales\Test\Block\Adminhtml\Order\AbstractItems;
 
 /**
- * Class Items
- * Shipment Items block on Shipment view page
+ * Shipment Items block on Shipment view page.
  */
 class Items extends AbstractItems
 {
     /**
-     * Get items data
+     * Get items data.
      *
      * @return array
      */
@@ -27,8 +26,9 @@ class Items extends AbstractItems
         foreach ($items as $item) {
             $itemData = [];
 
-            $itemData += $this->parseProductName($item->find($this->product)->getText());
-            $itemData['qty'] = $item->find($this->qty)->getText();
+            $itemData['product'] = preg_replace('/\n|\r/', '', $item->find($this->title)->getText());
+            $itemData['sku'] = $this->getSku($item);
+            $itemData['qty'] = $this->getQty($item);
 
             $data[] = $itemData;
         }
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/CreditMemos/Grid.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/CreditMemos/Grid.php
index 1cfad8033bd5755df01975559682db88c4b26d61..495bd7bcdab29682659608cb68e2dd2bc0b60ff2 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/CreditMemos/Grid.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/CreditMemos/Grid.php
@@ -70,6 +70,7 @@ class Grid extends DataGrid
      */
     public function getCreditMemoId()
     {
+        $this->resetFilter();
         $this->waitForElementNotVisible($this->loader, Locator::SELECTOR_XPATH);
         return $this->_rootElement->find($this->creditMemoId)->getText();
     }
@@ -82,6 +83,7 @@ class Grid extends DataGrid
     public function getIds()
     {
         $result = [];
+        $this->resetFilter();
         $this->waitForElementNotVisible($this->loader, Locator::SELECTOR_XPATH);
         $creditMemoIds = $this->_rootElement->getElements($this->creditMemoId);
         foreach ($creditMemoIds as $creditMemoId) {
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
index 80ab8074410938752d02bc89d2dd415ba98ab42f..2b68473a7fba325385dd99f7b608e0b55b4a9417 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCommentsHistory.php
@@ -6,6 +6,7 @@
 
 namespace Magento\Sales\Test\Constraint;
 
+use Magento\Sales\Test\Fixture\OrderInjectable;
 use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
 use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
 use Magento\Mtf\Constraint\AbstractConstraint;
@@ -23,17 +24,17 @@ class AssertRefundInCommentsHistory extends AbstractConstraint
     /**
      * Assert that comment about refunded amount exists in Comments History section on order page in Admin.
      *
+     * @param OrderInjectable $order
      * @param SalesOrderView $salesOrderView
      * @param OrderIndex $salesOrder
      * @param string $orderId
-     * @param array $refundedPrices
      * @return void
      */
     public function processAssert(
+        OrderInjectable $order,
         SalesOrderView $salesOrderView,
         OrderIndex $salesOrder,
-        $orderId,
-        array $refundedPrices
+        $orderId
     ) {
         $salesOrder->open();
         $salesOrder->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]);
@@ -49,9 +50,10 @@ class AssertRefundInCommentsHistory extends AbstractConstraint
         }
         $comments = array_values($comments);
 
+        $refundedPrices = $order->getPrice()['refund'];
         foreach ($refundedPrices as $key => $refundedPrice) {
             \PHPUnit_Framework_Assert::assertRegExp(
-                sprintf(self::REFUNDED_AMOUNT_PATTERN, $refundedPrice),
+                sprintf(self::REFUNDED_AMOUNT_PATTERN, $refundedPrice['grand_creditmemo_total']),
                 $comments[$key]['comment'],
                 'Incorrect refunded amount value for the order #' . $orderId
             );
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCreditMemoTab.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCreditMemoTab.php
index f42e1de5ad13c98f40f1adff2f7c0efe99d262b4..67f023784c6fb6a955d0887639e6d1a4c9e6480a 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCreditMemoTab.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInCreditMemoTab.php
@@ -37,7 +37,7 @@ class AssertRefundInCreditMemoTab extends AbstractConstraint
         $salesOrderView->getOrderForm()->openTab('creditmemos');
         /** @var Grid $grid */
         $grid = $salesOrderView->getOrderForm()->getTab('creditmemos')->getGridBlock();
-        $amount = $order->getPrice();
+        $amount = $order->getPrice()['refund'];
         foreach ($ids['creditMemoIds'] as $key => $creditMemoId) {
             $filter = [
                 'id' => $creditMemoId,
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInRefundsGrid.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInRefundsGrid.php
index 5b63d92a17e8e0e20f60455306cba2dd713c8290..bf61d1018be038a69040e8f84145a86c19bd1e12 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInRefundsGrid.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundInRefundsGrid.php
@@ -11,13 +11,12 @@ use Magento\Sales\Test\Page\Adminhtml\CreditMemoIndex;
 use Magento\Mtf\Constraint\AbstractConstraint;
 
 /**
- * Class AssertRefundInRefundsGrid
- * Assert that refund is present in the 'Refunds' grid with correct ID, order ID, refunded amount
+ * Assert that refund is present in the 'Refunds' grid with correct ID, order ID, refunded amount.
  */
 class AssertRefundInRefundsGrid extends AbstractConstraint
 {
     /**
-     * Assert that refund is present in the 'Refunds' grid with correct ID, order ID, refunded amount
+     * Assert that refund is present in the 'Refunds' grid with correct ID, order ID, refunded amount.
      *
      * @param CreditMemoIndex $creditMemoIndex
      * @param OrderInjectable $order
@@ -27,7 +26,7 @@ class AssertRefundInRefundsGrid extends AbstractConstraint
     public function processAssert(CreditMemoIndex $creditMemoIndex, OrderInjectable $order, array $ids)
     {
         $creditMemoIndex->open();
-        $amount = $order->getPrice();
+        $amount = $order->getPrice()['refund'];
         $orderId = $order->getId();
         foreach ($ids['creditMemoIds'] as $key => $creditMemoId) {
             $filter = [
@@ -47,7 +46,7 @@ class AssertRefundInRefundsGrid extends AbstractConstraint
     }
 
     /**
-     * Returns a string representation of the object
+     * Returns a string representation of the object.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundNotInRefundsGrid.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundNotInRefundsGrid.php
index c754d6529c0ef04a1a6f4e307cd151de917eb871..ffd6e10e8aa0aa5c9770c611dead8b9091eb2a34 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundNotInRefundsGrid.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundNotInRefundsGrid.php
@@ -26,7 +26,7 @@ class AssertRefundNotInRefundsGrid extends AbstractConstraint
     public function processAssert(CreditMemoIndex $creditMemoIndex, OrderInjectable $order, array $ids)
     {
         $creditMemoIndex->open();
-        $amount = $order->getPrice();
+        $amount = $order->getPrice()['refund'];
         $orderId = $order->getId();
         foreach ($ids['creditMemoIds'] as $key => $creditMemoId) {
             $filter = [
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundedGrandTotalOnFrontend.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundedGrandTotalOnFrontend.php
index 83e6082f1054d71b2697aa40375ba53726d13bd6..a6437c64dfdaa970e91d1dff28a99e7f055eff84 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundedGrandTotalOnFrontend.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertRefundedGrandTotalOnFrontend.php
@@ -12,12 +12,12 @@ use Magento\Sales\Test\Page\OrderHistory;
 use Magento\Sales\Test\Page\CustomerOrderView;
 
 /**
- * Assert that refunded grand total is equal to data from fixture on My Account page
+ * Assert that refunded grand total is equal to data from fixture on My Account page.
  */
 class AssertRefundedGrandTotalOnFrontend extends AbstractAssertOrderOnFrontend
 {
     /**
-     * Assert that refunded grand total is equal to data from fixture on My Account page
+     * Assert that refunded grand total is equal to data from fixture on My Account page.
      *
      * @param OrderHistory $orderHistory
      * @param OrderInjectable $order
@@ -38,14 +38,14 @@ class AssertRefundedGrandTotalOnFrontend extends AbstractAssertOrderOnFrontend
         $customerOrderView->getOrderViewBlock()->openLinkByName('Refunds');
         foreach ($ids['creditMemoIds'] as $key => $creditMemoId) {
             \PHPUnit_Framework_Assert::assertEquals(
-                number_format($order->getPrice()[$key]['grand_creditmemo_total'], 2),
+                number_format($order->getPrice()['refund'][$key]['grand_creditmemo_total'], 2),
                 $creditMemoView->getCreditMemoBlock()->getItemBlock($creditMemoId)->getGrandTotal()
             );
         }
     }
 
     /**
-     * Returns a string representation of the object
+     * Returns a string representation of the object.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Fixture/OrderInjectable.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Fixture/OrderInjectable.xml
index 115ec14741abaf88a4035240ce7a8058db473762..056fcc7f9e6de9bf2f5e740c1c2c1cb134d7b227 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Fixture/OrderInjectable.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Fixture/OrderInjectable.xml
@@ -206,5 +206,6 @@
         <field name="gw_card_tax_refunded" is_required="" />
         <field name="id" />
         <field name="price" is_required="1" group="null" repository="Magento\Sales\Test\Repository\OrderInjectable\Price" />
+        <field name="refund" is_required="" />
     </fixture>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Repository/OrderInjectable/Price.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Repository/OrderInjectable/Price.xml
index 64e2f8808172492ca82dc8cb545f33a0554a3fc5..8c3f31343a9184e05cb5c26f490b8807b417a06b 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Repository/OrderInjectable/Price.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Repository/OrderInjectable/Price.xml
@@ -34,20 +34,27 @@
         </dataset>
 
         <dataset name="full_refund">
-            <field name="0" xsi:type="array">
-                <item name="grand_creditmemo_total" xsi:type="string">565</item>
+            <field name="refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">565</item>
+                </item>
             </field>
         </dataset>
 
         <dataset name="full_refund_with_zero_shipping_refund">
-            <field name="0" xsi:type="array">
-                <item name="grand_creditmemo_total" xsi:type="string">555</item>
+            <field name="refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">555</item>
+                </item>
             </field>
         </dataset>
 
+
         <dataset name="partial_refund">
-            <field name="0" xsi:type="array">
-                <item name="grand_creditmemo_total" xsi:type="string">110</item>
+            <field name="refund" xsi:type="array">
+                <item name="0" xsi:type="array">
+                    <item name="grand_creditmemo_total" xsi:type="string">110</item>
+                </item>
             </field>
         </dataset>
 
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
index 84491c1992e5d682c59a1848516fcf084ce42507..39c1caf03caa44e860fe294ecdb3d44d6b0788aa 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
@@ -6,6 +6,7 @@
 
 namespace Magento\Sales\Test\TestStep;
 
+use Magento\Checkout\Test\Fixture\Cart;
 use Magento\Mtf\TestStep\TestStepInterface;
 use Magento\Sales\Test\Fixture\OrderInjectable;
 use Magento\Sales\Test\Page\Adminhtml\OrderCreditMemoNew;
@@ -61,7 +62,14 @@ class CreateOnlineCreditMemoStep implements TestStepInterface
     private $orderInvoiceView;
 
     /**
-     * @construct
+     * Checkout Cart fixture.
+     *
+     * @var Cart
+     */
+    private $cart;
+
+    /**
+     * @param Cart $cart
      * @param OrderIndex $orderIndex
      * @param SalesOrderView $salesOrderView
      * @param OrderInjectable $order
@@ -70,6 +78,7 @@ class CreateOnlineCreditMemoStep implements TestStepInterface
      * @param array|null refundData [optional]
      */
     public function __construct(
+        Cart $cart,
         OrderIndex $orderIndex,
         SalesOrderView $salesOrderView,
         OrderInjectable $order,
@@ -77,12 +86,13 @@ class CreateOnlineCreditMemoStep implements TestStepInterface
         OrderCreditMemoNew $orderCreditMemoNew,
         $refundData = null
     ) {
+        $this->cart = $cart;
         $this->orderIndex = $orderIndex;
         $this->salesOrderView = $salesOrderView;
         $this->order = $order;
+        $this->orderInvoiceView = $orderInvoiceView;
         $this->orderCreditMemoNew = $orderCreditMemoNew;
         $this->refundData = $refundData;
-        $this->orderInvoiceView = $orderInvoiceView;
     }
 
     /**
@@ -94,19 +104,20 @@ class CreateOnlineCreditMemoStep implements TestStepInterface
     {
         $this->orderIndex->open();
         $this->orderIndex->getSalesOrderGrid()->searchAndOpen(['id' => $this->order->getId()]);
-        /** @var \Magento\Sales\Test\Block\Adminhtml\Order\View\Tab\Invoices\Grid $invoicesGrid */
-        $invoicesGrid = $this->salesOrderView->getOrderForm()->getTab('invoices')->getGridBlock();
-        $this->salesOrderView->getOrderForm()->openTab('invoices');
-        $invoicesGrid->viewInvoice();
-        $this->salesOrderView->getPageActions()->orderInvoiceCreditMemo();
-        if (!empty($this->refundData)) {
+        $refundsData = $this->order->getRefund();
+        foreach ($refundsData as $refundData) {
+            /** @var \Magento\Sales\Test\Block\Adminhtml\Order\View\Tab\Invoices\Grid $invoicesGrid */
+            $invoicesGrid = $this->salesOrderView->getOrderForm()->getTab('invoices')->getGridBlock();
+            $this->salesOrderView->getOrderForm()->openTab('invoices');
+            $invoicesGrid->viewInvoice();
+            $this->salesOrderView->getPageActions()->orderInvoiceCreditMemo();
             $this->orderCreditMemoNew->getFormBlock()->fillProductData(
-                $this->refundData,
-                $this->order->getEntityId()['products']
+                $refundData,
+                $this->cart->getItems()
             );
             $this->orderCreditMemoNew->getFormBlock()->updateQty();
+            $this->orderCreditMemoNew->getFormBlock()->submit();
         }
-        $this->orderCreditMemoNew->getFormBlock()->submit();
 
         return ['ids' => ['creditMemoIds' => $this->getCreditMemoIds()]];
     }
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
index 3967b6571baa6fb2255b4629db9b89ada1e5d04c..3390d579cc3a712fb283ecc95717f64df71abbf9 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
@@ -61,7 +61,6 @@ class SubmitOrderStep implements TestStepInterface
     private $products;
 
     /**
-     * @constructor
      * @param OrderCreateIndex $orderCreateIndex
      * @param SalesOrderView $salesOrderView
      * @param FixtureFactory $fixtureFactory
@@ -81,6 +80,7 @@ class SubmitOrderStep implements TestStepInterface
         $this->salesOrderView = $salesOrderView;
         $this->fixtureFactory = $fixtureFactory;
         $this->customer = $customer;
+        $this->products = $products;
         $this->billingAddress = $billingAddress;
         $this->products = $products;
     }
diff --git a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
index f46b812ef0def2477839e83c0e8c8d7635c1dc6a..38fcff9a1de6ab352b2ee67d0dcd686065be6c6c 100644
--- a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
+++ b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.php
@@ -74,7 +74,7 @@ class Form extends AbstractForm
         }
         if (isset($data['items_data']) && $products !== null) {
             foreach ($products as $key => $product) {
-                $this->getItemsBlock()->getItemProductBlock($product)->fillProduct($data['items_data'][$key]);
+                $this->getItemsBlock()->getItemProductBlock($product->getSku())->fillProduct($data['items_data'][$key]);
             }
         }
     }
diff --git a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form/Items.php b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form/Items.php
index 132c56c7d9c3ebd2101423fc2d2e049336996ddd..9ff65b75ffccee9c7409c6a6a2832798578c6937 100644
--- a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form/Items.php
+++ b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form/Items.php
@@ -9,7 +9,6 @@ namespace Magento\Shipping\Test\Block\Adminhtml\Form;
 use Magento\Sales\Test\Block\Adminhtml\Order\AbstractItemsNewBlock;
 use Magento\Shipping\Test\Block\Adminhtml\Form\Items\Product;
 use Magento\Mtf\Client\Locator;
-use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
  * Adminhtml items to ship block.
@@ -19,12 +18,12 @@ class Items extends AbstractItemsNewBlock
     /**
      * Get item product block.
      *
-     * @param FixtureInterface $product
+     * @param string $productSku
      * @return Product
      */
-    public function getItemProductBlock(FixtureInterface $product)
+    public function getItemProductBlock($productSku)
     {
-        $selector = sprintf($this->productItem, $product->getSku());
+        $selector = sprintf($this->productItem, $productSku);
         return $this->blockFactory->create(
             \Magento\Shipping\Test\Block\Adminhtml\Form\Items\Product::class,
             ['element' => $this->_rootElement->find($selector, Locator::SELECTOR_XPATH)]