diff --git a/app/code/Magento/Catalog/Block/Product/View.php b/app/code/Magento/Catalog/Block/Product/View.php
index 8157ab4de07f2a10c9bc5e34541944698f0ab71c..964a444a0aef8b924819598634a0eea36f7ba247 100644
--- a/app/code/Magento/Catalog/Block/Product/View.php
+++ b/app/code/Magento/Catalog/Block/Product/View.php
@@ -7,7 +7,6 @@ namespace Magento\Catalog\Block\Product;
 
 use Magento\Catalog\Api\ProductRepositoryInterface;
 use Magento\Catalog\Model\Category;
-use Magento\Catalog\Model\Product;
 
 /**
  * Product View block
@@ -29,6 +28,7 @@ class View extends AbstractProduct implements \Magento\Framework\DataObject\Iden
 
     /**
      * @var \Magento\Framework\Pricing\PriceCurrencyInterface
+     * @deprecated
      */
     protected $priceCurrency;
 
@@ -225,40 +225,34 @@ class View extends AbstractProduct implements \Magento\Framework\DataObject\Iden
             $config = [
                 'productId' => $product->getId(),
                 'priceFormat' => $this->_localeFormat->getPriceFormat()
-                ];
+            ];
             return $this->_jsonEncoder->encode($config);
         }
 
         $tierPrices = [];
         $tierPricesList = $product->getPriceInfo()->getPrice('tier_price')->getTierPriceList();
         foreach ($tierPricesList as $tierPrice) {
-            $tierPrices[] = $this->priceCurrency->convert($tierPrice['price']->getValue());
+            $tierPrices[] = $tierPrice['price']->getValue();
         }
         $config = [
-            'productId' => $product->getId(),
+            'productId'   => $product->getId(),
             'priceFormat' => $this->_localeFormat->getPriceFormat(),
-            'prices' => [
-                'oldPrice' => [
-                    'amount' => $this->priceCurrency->convert(
-                        $product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue()
-                    ),
+            'prices'      => [
+                'oldPrice'   => [
+                    'amount'      => $product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue(),
                     'adjustments' => []
                 ],
-                'basePrice' => [
-                    'amount' => $this->priceCurrency->convert(
-                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount()
-                    ),
+                'basePrice'  => [
+                    'amount'      => $product->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount(),
                     'adjustments' => []
                 ],
                 'finalPrice' => [
-                    'amount' => $this->priceCurrency->convert(
-                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getValue()
-                    ),
+                    'amount'      => $product->getPriceInfo()->getPrice('final_price')->getAmount()->getValue(),
                     'adjustments' => []
                 ]
             ],
-            'idSuffix' => '_clone',
-            'tierPrices' => $tierPrices
+            'idSuffix'    => '_clone',
+            'tierPrices'  => $tierPrices
         ];
 
         $responseObject = new \Magento\Framework\DataObject();
diff --git a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
index 1cc1cceefb39972cfc09d2c7f70463d2f3f76da7..51c68145b24cf5e72061a51647d4b311f39e60bf 100644
--- a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
@@ -92,6 +92,18 @@ class Configurable extends \Magento\Catalog\Block\Product\View\AbstractView
         );
     }
 
+    /**
+     * Get cache key informative items.
+     *
+     * @return array
+     */
+    public function getCacheKeyInfo()
+    {
+        $parentData = parent::getCacheKeyInfo();
+        $parentData[] = $this->priceCurrency->getCurrencySymbol();
+        return $parentData;
+    }
+
     /**
      * Get allowed attributes
      *
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/Product/CustomOptions.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/Product/CustomOptions.xml
index 3252f0178e24195e724b45a17021d0528990070a..09fda73b2a40455d7f144d5a0129e94da5e6f049 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/Product/CustomOptions.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/Product/CustomOptions.xml
@@ -358,5 +358,22 @@
                 </item>
             </field>
         </dataset>
+
+        <dataset name="not_required_text_option">
+            <field name="0" xsi:type="array">
+                <item name="title" xsi:type="string">Test1 option %isolation%</item>
+                <item name="is_require" xsi:type="string">No</item>
+                <item name="type" xsi:type="string">Text/Field</item>
+                <item name="options" xsi:type="array">
+                    <item name="0" xsi:type="array">
+                        <item name="price" xsi:type="string">10</item>
+                        <item name="price_type" xsi:type="string">Fixed</item>
+                        <item name="sku" xsi:type="string">sku1_%isolation%</item>
+                        <item name="max_characters" xsi:type="string">45</item>
+                    </item>
+                </item>
+            </field>
+        </dataset>
+        
     </repository>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f3cfc48cdd553fea81ef9681f24e5799273af5e
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\ConfigurableProduct\Test\Constraint;
+
+use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Magento\Cms\Test\Page\CmsIndex;
+use Magento\CurrencySymbol\Test\Fixture\CurrencySymbolEntity;
+use Magento\Mtf\Client\BrowserInterface;
+use Magento\Mtf\Constraint\AbstractConstraint;
+use Magento\Mtf\Fixture\InjectableFixture;
+
+/**
+ * Assert currency rate applied on configurable product page.
+ */
+class AssertCurrencyRateAppliedOnProductPage extends AbstractConstraint
+{
+    /**
+     * Assert currency rate applied on configurable product page.
+     *
+     * @param BrowserInterface $browser
+     * @param InjectableFixture $product
+     * @param CatalogProductView $view
+     * @param CmsIndex $cmsIndex
+     * @param CurrencySymbolEntity $baseCurrency
+     * @param array $configuredPrices
+     * @param string $basePrice
+     */
+    public function processAssert(
+        BrowserInterface $browser,
+        InjectableFixture $product,
+        CatalogProductView $view,
+        CmsIndex $cmsIndex,
+        CurrencySymbolEntity $baseCurrency,
+        array $configuredPrices,
+        $basePrice
+    ) {
+        $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
+        $this->assertPrice($view, $basePrice);
+
+        $view->getViewBlock()->configure($product);
+        $this->assertPrice($view, $configuredPrices['custom_currency']);
+
+        $cmsIndex->getCurrencyBlock()->switchCurrency($baseCurrency);
+        $view->getViewBlock()->configure($product);
+        $this->assertPrice($view, $configuredPrices['base_currency']);
+    }
+
+    /**
+     * Assert price.
+     *
+     * @param CatalogProductView $view
+     * @param string $price
+     * @param string $currency [optional]
+     */
+    public function assertPrice(CatalogProductView $view, $price, $currency = '')
+    {
+        \PHPUnit_Framework_Assert::assertEquals(
+            $price,
+            $view->getViewBlock()->getPriceBlock()->getPrice($currency),
+            'Wrong price is displayed on Product page.'
+        );
+    }
+
+    /**
+     * Returns a string representation of successful assertion.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return "Currency rate has been applied correctly on Configurable Product page.";
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/CreateCurrencyRateTest.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/CreateCurrencyRateTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6ba7729120ae909591f0703c36b83b51f2ea8aa0
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/CreateCurrencyRateTest.xml
@@ -0,0 +1,28 @@
+<?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/etc/variations.xsd">
+    <testCase name="Magento\Directory\Test\TestCase\CreateCurrencyRateTest" summary="Create Currency Rate" ticketId="MAGETWO-36824">
+        <variation name="CreateCurrencyRateTestVariation3">
+            <data name="currencyRate/data/currency_from" xsi:type="string">USD</data>
+            <data name="currencyRate/data/currency_to" xsi:type="string">UAH</data>
+            <data name="currencyRate/data/rate" xsi:type="number">2.000</data>
+            <data name="currencySymbol/dataSet" xsi:type="string">currency_symbols_uah</data>
+            <data name="product" xsi:type="string">configurableProduct::default</data>
+            <data name="config/dataset" xsi:type="string">config_base_currency_us_display_currency_uah</data>
+            <data name="baseCurrency/data/code" xsi:type="string">USD</data>
+            <data name="basePrice" xsi:type="string">â‚´80.00</data>
+            <data name="configuredPrices" xsi:type="array">
+                <item name="custom_currency" xsi:type="string">â‚´80.00</item>
+                <item name="base_currency" xsi:type="string">$40.00</item>
+            </data>
+            <data name="tag" xsi:type="string">test_type:acceptance_test</data>
+            <constraint name="Magento\Directory\Test\Constraint\AssertCurrencyRateSuccessSaveMessage" />
+            <constraint name="Magento\ConfigurableProduct\Test\Constraint\AssertCurrencyRateAppliedOnProductPage" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Repository/ConfigData.xml b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Repository/ConfigData.xml
index 9df42574840d692ced41a85979d63de6bf7c467f..3a099d79d370a97b9d75afb419bd36860e559a1a 100644
--- a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Repository/ConfigData.xml
+++ b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Repository/ConfigData.xml
@@ -48,6 +48,18 @@
                     <item name="US Dollar" xsi:type="string">USD</item>
                 </item>
             </field>
+            <field name="currency/options/base" xsi:type="array">
+                <item name="scope" xsi:type="string">currency</item>
+                <item name="label" xsi:type="string">US Dollar</item>
+                <item name="scope_id" xsi:type="number">1</item>
+                <item name="value" xsi:type="string">USD</item>
+            </field>
+            <field name="currency/options/default" xsi:type="array">
+                <item name="scope" xsi:type="string">currency</item>
+                <item name="label" xsi:type="string">US Dollar</item>
+                <item name="scope_id" xsi:type="number">1</item>
+                <item name="value" xsi:type="string">USD</item>
+            </field>
         </dataset>
 
         <dataset name="config_base_currency_ch">
diff --git a/dev/tests/functional/tests/app/Magento/Directory/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php b/dev/tests/functional/tests/app/Magento/Directory/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php
new file mode 100644
index 0000000000000000000000000000000000000000..4b8f3825df8bab870a272e3db20864118db25079
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Directory/Test/Constraint/AssertCurrencyRateAppliedOnProductPage.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Directory\Test\Constraint;
+
+use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Magento\Mtf\Client\BrowserInterface;
+use Magento\Mtf\Constraint\AbstractConstraint;
+use Magento\Mtf\Fixture\InjectableFixture;
+
+/**
+ * Assert currency rate applied on product page.
+ */
+class AssertCurrencyRateAppliedOnProductPage extends AbstractConstraint
+{
+    /**
+     * Assert currency rate applied on product page.
+     *
+     * @param BrowserInterface $browser
+     * @param InjectableFixture $product
+     * @param CatalogProductView $view
+     * @param string $basePrice
+     */
+    public function processAssert(
+        BrowserInterface $browser,
+        InjectableFixture $product,
+        CatalogProductView $view,
+        $basePrice
+    ) {
+        $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
+        $this->assertPrice($view, $basePrice);
+    }
+
+    /**
+     * Assert price.
+     *
+     * @param CatalogProductView $view
+     * @param string $price
+     * @param string $currency [optional]
+     */
+    public function assertPrice(CatalogProductView $view, $price, $currency = '')
+    {
+        \PHPUnit_Framework_Assert::assertEquals(
+            $price,
+            $view->getViewBlock()->getPriceBlock()->getPrice($currency),
+            'Wrong price is displayed on Product page.'
+        );
+    }
+
+    /**
+     * Returns a string representation of successful assertion.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return "Currency rate has been applied correctly on Product page.";
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Directory/Test/Repository/ConfigData.xml b/dev/tests/functional/tests/app/Magento/Directory/Test/Repository/ConfigData.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7046437a0f4e2916aaa21e7eca1b902794aa8b9d
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Directory/Test/Repository/ConfigData.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * 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\Config\Test\Repository\ConfigData">
+        <dataset name="config_base_currency_us_display_currency_uah">
+            <field name="currency/options/allow" xsi:type="array">
+                <item name="scope" xsi:type="string">currency</item>
+                <item name="scope_id" xsi:type="number">1</item>
+                <item name="value" xsi:type="array">
+                    <item name="Ukrainian Hryvnia" xsi:type="string">UAH</item>
+                    <item name="US Dollar" xsi:type="string">USD</item>
+                </item>
+            </field>
+            <field name="currency/options/base" xsi:type="array">
+                <item name="scope" xsi:type="string">currency</item>
+                <item name="label" xsi:type="string">US Dollar</item>
+                <item name="scope_id" xsi:type="number">1</item>
+                <item name="value" xsi:type="string">USD</item>
+            </field>
+            <field name="currency/options/default" xsi:type="array">
+                <item name="scope" xsi:type="string">currency</item>
+                <item name="label" xsi:type="string">Ukrainian Hryvnia</item>
+                <item name="scope_id" xsi:type="number">1</item>
+                <item name="value" xsi:type="string">UAH</item>
+            </field>
+        </dataset>
+    </repository>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
index bc40a2ab98f6d913b80736346c7c06ef6f1c7f9e..c7841934035cadcf40b55931f748948427504652 100644
--- a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
+++ b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
@@ -6,11 +6,12 @@
 
 namespace Magento\Directory\Test\TestCase;
 
+use Magento\Catalog\Test\TestStep\CreateProductsStep;
 use Magento\Config\Test\Fixture\ConfigData;
 use Magento\Mtf\TestCase\Injectable;
 use Magento\Directory\Test\Fixture\CurrencyRate;
-use Magento\Catalog\Test\Fixture\CatalogProductSimple;
 use Magento\CurrencySymbol\Test\Page\Adminhtml\SystemCurrencyIndex;
+use Magento\Mtf\TestStep\TestStepFactory;
 
 /**
  * Preconditions:
@@ -41,35 +42,48 @@ class CreateCurrencyRateTest extends Injectable
      */
     protected $currencyIndexPage;
 
+    /**
+     * Test step factory.
+     *
+     * @var TestStepFactory
+     */
+    private $stepFactory;
+
     /**
      * Inject data.
      *
      * @param SystemCurrencyIndex $currencyIndexPage
-     * @return void
+     * @param TestStepFactory $stepFactory
      */
-    public function __inject(SystemCurrencyIndex $currencyIndexPage)
+    public function __inject(SystemCurrencyIndex $currencyIndexPage, TestStepFactory $stepFactory)
     {
         $this->currencyIndexPage = $currencyIndexPage;
+        $this->stepFactory = $stepFactory;
     }
 
     /**
      * Create currency rate test.
      *
      * @param CurrencyRate $currencyRate
-     * @param CatalogProductSimple $product
-     * @param $config
-     * @return void
+     * @param ConfigData $config
+     * @param string $product
+     * @param array $productData [optional]
+     * @return array
      */
-    public function test(CurrencyRate $currencyRate, CatalogProductSimple $product, ConfigData $config)
+    public function test(CurrencyRate $currencyRate, ConfigData $config, $product, array $productData = [])
     {
         // Preconditions:
-        $product->persist();
+        $product = $this->stepFactory
+            ->create(CreateProductsStep::class, ['products' => [$product], 'data' => $productData])
+            ->run()['products'][0];
         $config->persist();
 
         // Steps:
         $this->currencyIndexPage->open();
         $this->currencyIndexPage->getCurrencyRateForm()->fill($currencyRate);
         $this->currencyIndexPage->getFormPageActions()->save();
+
+        return ['product' => $product];
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.xml b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.xml
index dd42950c18a78175ce51fb7cfce85fe7fbc85a0c..e984cad9ca327aa2a0896e44fc85e365e9f24503 100644
--- a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.xml
@@ -13,12 +13,25 @@
             <data name="currencyRate/data/currency_to" xsi:type="string">EUR</data>
             <data name="currencyRate/data/rate" xsi:type="number">0.8</data>
             <data name="currencySymbol/dataset" xsi:type="string">currency_symbols_eur</data>
-            <data name="product/dataset" xsi:type="string">simple_10_dollar</data>
+            <data name="product" xsi:type="string">catalogProductSimple::simple_10_dollar</data>
             <data name="config/dataset" xsi:type="string">config_currency_symbols_usd_and_eur</data>
             <data name="basePrice" xsi:type="string">$10.00</data>
             <data name="convertedPrice" xsi:type="string">€8.00</data>
             <constraint name="Magento\Directory\Test\Constraint\AssertCurrencyRateSuccessSaveMessage" />
             <constraint name="Magento\Directory\Test\Constraint\AssertCurrencyRateAppliedOnCatalogPage" />
         </variation>
+        <variation name="CreateCurrencyRateTestVariation2">
+            <data name="currencyRate/data/currency_from" xsi:type="string">USD</data>
+            <data name="currencyRate/data/currency_to" xsi:type="string">UAH</data>
+            <data name="currencyRate/data/rate" xsi:type="number">2.000</data>
+            <data name="currencySymbol/dataSet" xsi:type="string">currency_symbols_uah</data>
+            <data name="product" xsi:type="string">catalogProductSimple::simple_10_dollar</data>
+            <data name="productData/0/custom_options/dataset" xsi:type="string">not_required_text_option</data>
+            <data name="config/dataset" xsi:type="string">config_base_currency_us_display_currency_uah</data>
+            <data name="basePrice" xsi:type="string">â‚´20.00</data>
+            <data name="tag" xsi:type="string">test_type:acceptance_test</data>
+            <constraint name="Magento\Directory\Test\Constraint\AssertCurrencyRateSuccessSaveMessage" />
+            <constraint name="Magento\Directory\Test\Constraint\AssertCurrencyRateAppliedOnProductPage" />
+        </variation>
     </testCase>
 </config>