diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/AjaxMarkAsRead.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/AjaxMarkAsRead.php
index 793cbe2252531cd6f554f3d4d16b99d8b93ae9d5..53f8a7fc3ae44811e1262a266851c37a5d8ffd8a 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/AjaxMarkAsRead.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/AjaxMarkAsRead.php
@@ -13,7 +13,7 @@ class AjaxMarkAsRead extends \Magento\AdminNotification\Controller\Adminhtml\Not
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->getPostValue()) {
             return;
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Index.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Index.php
index 15b88e4c2b6eeb75745da7aeab6e28a0fbcf7c99..df4b3465ad9e85c6992883678dc9a6856931b626 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Index.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\AdminNotification\Controller\Adminhtml\Notification
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu(
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php
index bcf66825edf6bdc85f27680298c2129b2cb46d02..fe11c65da690e2d0c92d71710d285b0bd495fef8 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php
@@ -11,7 +11,7 @@ class MarkAsRead extends \Magento\AdminNotification\Controller\Adminhtml\Notific
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $notificationId = (int)$this->getRequest()->getParam('id');
         if ($notificationId) {
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php
index 78090163aa6a2a7f1a8637026c19aa70ffdc5b5b..3f923e05797a3ffe49af9ab5405420aad5a29f9f 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php
@@ -11,7 +11,7 @@ class MassMarkAsRead extends \Magento\AdminNotification\Controller\Adminhtml\Not
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $ids = $this->getRequest()->getParam('notification');
         if (!is_array($ids)) {
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php
index 4b0068520ba3e0c4f69116dc9d04de411cc0783f..fd73d3cece48da321c906e62b52e7b54f01205d2 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php
@@ -11,7 +11,7 @@ class MassRemove extends \Magento\AdminNotification\Controller\Adminhtml\Notific
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $ids = $this->getRequest()->getParam('notification');
         if (!is_array($ids)) {
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php
index b4fe7e0e29596d2bd81fae0ec3430e1a3f545e77..81a62e76134837d7fe35e6616041cd5a13c6e54e 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php
@@ -11,7 +11,7 @@ class Remove extends \Magento\AdminNotification\Controller\Adminhtml\Notificatio
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($id = $this->getRequest()->getParam('id')) {
             $model = $this->_objectManager->create('Magento\AdminNotification\Model\Inbox')->load($id);
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
index 4bf51c2df29028bc4db7247efa59dcad9840897c..e173f1df1022d53ae6d2607c1bffe5c8fee373f3 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
@@ -38,7 +38,7 @@ class ListAction extends \Magento\Backend\App\AbstractAction
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $severity = $this->getRequest()->getParam('severity');
         if ($severity) {
diff --git a/app/code/Magento/AdminNotification/Test/Unit/Model/System/Message/Media/Synchronization/SuccessTest.php b/app/code/Magento/AdminNotification/Test/Unit/Model/System/Message/Media/Synchronization/SuccessTest.php
deleted file mode 100644
index a33e8800f2eceb6c9f86c5e6c134721fc39e7234..0000000000000000000000000000000000000000
--- a/app/code/Magento/AdminNotification/Test/Unit/Model/System/Message/Media/Synchronization/SuccessTest.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\AdminNotification\Test\Unit\Model\System\Message\Media\Synchronization;
-
-class SuccessTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_syncFlagMock;
-
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_fileStorage;
-
-    /**
-     * @var \Magento\AdminNotification\Model\System\Message\Media\Synchronization\Success
-     */
-    protected $_model;
-
-    protected function setUp()
-    {
-        $this->_syncFlagMock = $this->getMock(
-            'Magento\MediaStorage\Model\File\Storage\Flag',
-            ['getState', 'getFlagData', 'setState', '__sleep', '__wakeup', 'save'],
-            [],
-            '',
-            false
-        );
-
-        $this->_fileStorage = $this->getMock('Magento\MediaStorage\Model\File\Storage\Flag', [], [], '', false);
-        $this->_fileStorage->expects($this->any())->method('loadSelf')->will($this->returnValue($this->_syncFlagMock));
-
-        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-        $arguments = ['fileStorage' => $this->_fileStorage];
-        $this->_model = $objectManagerHelper->getObject(
-            'Magento\AdminNotification\Model\System\Message\Media\Synchronization\Success',
-            $arguments
-        );
-    }
-
-    public function testGetText()
-    {
-        $messageText = 'Synchronization of media storages has been completed';
-
-        $this->assertContains($messageText, (string)$this->_model->getText());
-    }
-
-    /**
-     * @param bool $expectedFirstRun
-     * @param array $data
-     * @param int|bool $state
-     * @return void
-     * @dataProvider isDisplayedDataProvider
-     */
-    public function testIsDisplayed($expectedFirstRun, $data, $state)
-    {
-        $arguments = ['fileStorage' => $this->_fileStorage];
-        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-
-        $this->_syncFlagMock->expects($this->any())->method('getState')->will($this->returnValue($state));
-        $this->_syncFlagMock->expects($this->any())->method('getFlagData')->will($this->returnValue($data));
-
-        // create new instance to ensure that it hasn't been displayed yet (var $this->_isDisplayed is unset)
-        /** @var $model \Magento\AdminNotification\Model\System\Message\Media\Synchronization\Success */
-        $model = $objectManagerHelper->getObject(
-            'Magento\AdminNotification\Model\System\Message\Media\Synchronization\Success',
-            $arguments
-        );
-        //check first call
-        $this->assertEquals($expectedFirstRun, $model->isDisplayed());
-        //check second call
-        $this->assertEquals($expectedFirstRun, $model->isDisplayed());
-    }
-
-    public function isDisplayedDataProvider()
-    {
-        return [
-            [false, ['has_errors' => 1], \Magento\MediaStorage\Model\File\Storage\Flag::STATE_FINISHED],
-            [false, ['has_errors' => true], false],
-            [true, [], \Magento\MediaStorage\Model\File\Storage\Flag::STATE_FINISHED],
-            [false, ['has_errors' => 0], \Magento\MediaStorage\Model\File\Storage\Flag::STATE_RUNNING],
-            [true, ['has_errors' => 0], \Magento\MediaStorage\Model\File\Storage\Flag::STATE_FINISHED]
-        ];
-    }
-
-    public function testGetIdentity()
-    {
-        $this->assertEquals('MEDIA_SYNCHRONIZATION_SUCCESS', $this->_model->getIdentity());
-    }
-
-    public function testGetSeverity()
-    {
-        $severity = \Magento\Framework\Notification\MessageInterface::SEVERITY_MAJOR;
-        $this->assertEquals($severity, $this->_model->getSeverity());
-    }
-}
diff --git a/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php b/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php
index 945c25b67b96133640a6cd4cb4b2259b118480f2..d41f9c69c2a52d9be7a2bc05c077bc7e822e5389 100644
--- a/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php
+++ b/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php
@@ -17,7 +17,7 @@ class GetFilter extends ExportController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getParams();
         if ($this->getRequest()->isXmlHttpRequest() && $data) {
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
index 3da7f100f75b5e95460a30a5c2ab744e49a05eb5..2934f7a00ccd84f5f06734dbc45793e28fc16c6d 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
@@ -51,7 +51,7 @@ class Place extends \Magento\Sales\Controller\Adminhtml\Order\Create
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
      */
-    public function execute()
+    public function executeInternal()
     {
         $paymentParam = $this->getRequest()->getParam('payment');
         $controller = $this->getRequest()->getParam('controller');
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
index d147c3d91e1ff1b829d9e4cee9160e59ac0d61ec..2387a1bf5b7c14f35c60341e7f1e3d238a1bcf4e 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
@@ -90,7 +90,7 @@ class Redirect extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $redirectParams = $this->getRequest()->getParams();
         $params = [];
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
index 7ac7153fecf4b9530677dc01627bb916ac912b5c..ae85af3ad689b39d1d89b3570062ed8504507337 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
@@ -31,7 +31,7 @@ class ReturnQuote extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_returnQuote();
         $this->getResponse()->representJson(
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
index 6f0696fbf9d1e883f39a129c8a47b6d2fd007615..5dc96c39a91e95e99d283a803ce61e4e08ad0a60 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
@@ -14,7 +14,7 @@ class BackendResponse extends \Magento\Authorizenet\Controller\Directpost\Paymen
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_responseAction('adminhtml');
     }
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
index 2cb3ea542105450eb75085c56ec6972f4a0dc0cb..7a13d0ba6c0a80d90bf4a4957c851479cb16fbc2 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
@@ -71,7 +71,7 @@ class Place extends Payment
      *
      * @return string
      */
-    public function execute()
+    public function executeInternal()
     {
         $paymentParam = $this->getRequest()->getParam('payment');
         $controller = $this->getRequest()->getParam('controller');
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
index 0a0fc1a99066842bd1f581897718898058bacd89..421e4f04fe13eee2fd92b56e6d55011a87b278a5 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
@@ -15,7 +15,7 @@ class Redirect extends \Magento\Authorizenet\Controller\Directpost\Payment
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $helper = $this->dataFactory->create('frontend');
 
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
index 7a25db11b46f627a6119add42650d8d3c887b503..541571db6d9cc3232aa74f576f7b1e521a941ba6 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
@@ -14,7 +14,7 @@ class Response extends \Magento\Authorizenet\Controller\Directpost\Payment
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_responseAction('frontend');
     }
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
index 1cef3b032864d0a2a5b7caa61b61940b62cec0b2..b90112bca7f932212d57816fb319c9890cf78942 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
@@ -13,7 +13,7 @@ class ReturnQuote extends \Magento\Authorizenet\Controller\Directpost\Payment
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_returnCustomerQuote();
         $this->getResponse()->representJson(
diff --git a/app/code/Magento/Authorizenet/Test/Unit/Controller/Adminhtml/Authorizenet/Directpost/Payment/RedirectTest.php b/app/code/Magento/Authorizenet/Test/Unit/Controller/Adminhtml/Authorizenet/Directpost/Payment/RedirectTest.php
index ad7bb7b5c0245be5122b03c3a9c68eca22afc715..ff31be443710cec29c1608b1cd3609ca37148254 100644
--- a/app/code/Magento/Authorizenet/Test/Unit/Controller/Adminhtml/Authorizenet/Directpost/Payment/RedirectTest.php
+++ b/app/code/Magento/Authorizenet/Test/Unit/Controller/Adminhtml/Authorizenet/Directpost/Payment/RedirectTest.php
@@ -96,6 +96,11 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
      */
     protected $helperMock;
 
+    /**
+     * @var Redirect|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $controller;
+
     protected function setUp()
     {
         $this->directpostSessionMock = $this->getMockBuilder('Magento\Authorizenet\Model\Directpost\Session')
@@ -196,7 +201,7 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function testExecuteErrorMsgWithoutCancelOrder()
+    public function testExecuteInternalErrorMsgWithoutCancelOrder()
     {
         $params = ['success' => 0, 'error_msg' => 'Error message'];
         $incrementId = 1;
@@ -238,10 +243,10 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
             ->method('register')
             ->with(Iframe::REGISTRY_KEY);
 
-        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->execute());
+        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->executeInternal());
     }
 
-    public function testExecuteErrorMsgWithCancelOrder()
+    public function testExecuteInternalErrorMsgWithCancelOrder()
     {
         $params = ['success' => 0, 'error_msg' => 'Error message', 'x_invoice_num' => 1];
         $incrementId = 1;
@@ -273,10 +278,10 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
             ->method('register')
             ->with(Iframe::REGISTRY_KEY);
 
-        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->execute());
+        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->executeInternal());
     }
 
-    public function testExecuteSuccess()
+    public function testExecuteInternalSuccess()
     {
         $params = ['success' => 1, 'controller_action_name' => 'action', 'x_invoice_num' => 1];
         $this->requestMock->expects($this->once())
@@ -307,6 +312,6 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
             ->method('register')
             ->with(Iframe::REGISTRY_KEY);
 
-        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->execute());
+        $this->assertInstanceOf('\Magento\Framework\View\Result\Layout', $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Authorizenet/Test/Unit/Controller/Directpost/Payment/PlaceTest.php b/app/code/Magento/Authorizenet/Test/Unit/Controller/Directpost/Payment/PlaceTest.php
index 517b9e41f7db78c7293fc805d45049191dc2f72f..a80b7b41420efe99bdefbcfe50cac8a1455ecb9a 100644
--- a/app/code/Magento/Authorizenet/Test/Unit/Controller/Directpost/Payment/PlaceTest.php
+++ b/app/code/Magento/Authorizenet/Test/Unit/Controller/Directpost/Payment/PlaceTest.php
@@ -205,7 +205,7 @@ class PlaceTest extends \PHPUnit_Framework_TestCase
             ->method('jsonEncode')
             ->with($result);
 
-        $this->placeOrderController->execute();
+        $this->placeOrderController->executeInternal();
     }
 
     /**
@@ -243,7 +243,7 @@ class PlaceTest extends \PHPUnit_Framework_TestCase
             ->method('jsonEncode')
             ->with($result);
 
-        $this->placeOrderController->execute();
+        $this->placeOrderController->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Backend/App/AbstractAction.php b/app/code/Magento/Backend/App/AbstractAction.php
index c41338591d3449d6826e14a0c9eb8a409522765b..e84bee226d2ab5fdc9eff6161b8c8adafe9e03ef 100644
--- a/app/code/Magento/Backend/App/AbstractAction.php
+++ b/app/code/Magento/Backend/App/AbstractAction.php
@@ -200,10 +200,10 @@ abstract class AbstractAction extends \Magento\Framework\App\Action\Action
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(\Magento\Framework\App\RequestInterface $request)
+    public function execute(\Magento\Framework\App\RequestInterface $request)
     {
         if (!$this->_processUrlKeys()) {
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         if ($request->isDispatched() && $request->getActionName() !== 'denied' && !$this->_isAllowed()) {
@@ -223,7 +223,7 @@ abstract class AbstractAction extends \Magento\Framework\App\Action\Action
 
         $this->_processLocaleSettings();
 
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Backend/App/Action/Plugin/Authentication.php b/app/code/Magento/Backend/App/Action/Plugin/Authentication.php
index bf8d90b931ef9b379404d8f36fd8e063678a9fc9..02cc404d4fc818adf6978b2ed3320bbbc809909d 100644
--- a/app/code/Magento/Backend/App/Action/Plugin/Authentication.php
+++ b/app/code/Magento/Backend/App/Action/Plugin/Authentication.php
@@ -101,7 +101,7 @@ class Authentication
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Backend\App\AbstractAction $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Backend/App/Action/Plugin/MassactionKey.php b/app/code/Magento/Backend/App/Action/Plugin/MassactionKey.php
index 767163afc6d30d498ef8ce0a70fe51fb110e480e..9e1f5c713ea10f3d286010ec99cc8cd0d9dcf73a 100644
--- a/app/code/Magento/Backend/App/Action/Plugin/MassactionKey.php
+++ b/app/code/Magento/Backend/App/Action/Plugin/MassactionKey.php
@@ -19,7 +19,7 @@ class MassactionKey
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Backend\App\AbstractAction $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Backend/Block/Page/Locale.php b/app/code/Magento/Backend/Block/Page/Locale.php
deleted file mode 100644
index d6d279ac760f4684973c8d687b329383c7fe2dad..0000000000000000000000000000000000000000
--- a/app/code/Magento/Backend/Block/Page/Locale.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * Backend locale switcher block
- *
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Backend\Block\Page;
-
-use Magento\Framework\App\ActionInterface;
-
-class Locale extends \Magento\Backend\Block\Template
-{
-    /**
-     * Path to template file in theme
-     *
-     * @var string
-     */
-    protected $_template = 'page/locale.phtml';
-
-    /**
-     * @var \Magento\Framework\Locale\ListsInterface
-     */
-    protected $_localeLists;
-
-    /**
-     * @var \Magento\Framework\Locale\ResolverInterface
-     */
-    protected $_localeResolver;
-
-    /**
-     * @var \Magento\Framework\Url\Helper\Data
-     */
-    protected $_urlHelper;
-
-    /**
-     * @param \Magento\Backend\Block\Template\Context $context
-     * @param \Magento\Framework\Locale\ListsInterface $localeLists
-     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
-     * @param \Magento\Framework\Url\Helper\Data $urlHelper
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Backend\Block\Template\Context $context,
-        \Magento\Framework\Locale\ListsInterface $localeLists,
-        \Magento\Framework\Locale\ResolverInterface $localeResolver,
-        \Magento\Framework\Url\Helper\Data $urlHelper,
-        array $data = []
-    ) {
-        $this->_localeLists = $localeLists;
-        $this->_localeResolver = $localeResolver;
-        $this->_urlHelper = $urlHelper;
-        parent::__construct($context, $data);
-    }
-
-    /**
-     * Prepare URL for change locale
-     *
-     * @return string
-     */
-    public function getChangeLocaleUrl()
-    {
-        return $this->getUrl('adminhtml/index/changeLocale');
-    }
-
-    /**
-     * Prepare current URL for referer
-     *
-     * @return string
-     */
-    public function getUrlForReferer()
-    {
-        return ActionInterface::PARAM_NAME_URL_ENCODED . '/' . $this->_urlHelper->getEncodedUrl();
-    }
-
-    /**
-     * Retrieve locale select element
-     *
-     * @return string
-     */
-    public function getLocaleSelect()
-    {
-        $html = $this->getLayout()->createBlock('Magento\Framework\View\Element\Html\Select')
-            ->setName('locale')
-            ->setId('footer_interface_locale')
-            ->setTitle(__('Interface Language'))
-            ->setClass('admin__control-select')
-            ->setValue($this->_localeResolver->getLocale())
-            ->setOptions($this->_localeLists->getTranslatedOptionLocales())
-            ->getHtml();
-
-        return $html;
-    }
-}
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php b/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
index 143b12d06c3c933884219888577c3e06e856869c..c8e72073581b45f003c3daa03bb25a9faba25853 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
@@ -40,7 +40,7 @@ class Translate extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $translate = (array)$this->getRequest()->getPost('translate');
 
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
index 08f81426145a3ef429755bfa12dfa9d9ee68e3fb..42836b603d0aabe3a6e28772dae5035539136bd9 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
@@ -41,7 +41,7 @@ class DeniedIframe extends \Magento\Backend\Controller\Adminhtml\Auth
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
         $resultRaw = $this->resultRawFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
index 43062aa6908a3bf411201bee43ecf28852e14d19..bd2d215007638eb3b5fc3a9ab49e8a06f386974c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
@@ -43,7 +43,7 @@ class DeniedJson extends \Magento\Backend\Controller\Adminhtml\Auth
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
index 6aed5e22c5282ed4e72790170da1323c3fbce78d..e29183357ea74f77621ede6fdcc067e14320af8f 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
@@ -32,7 +32,7 @@ class Login extends \Magento\Backend\Controller\Adminhtml\Auth
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_auth->isLoggedIn()) {
             if ($this->_auth->getAuthStorage()->isFirstPageAfterLogin()) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
index 098022bed0a8d7c764c9cf5fc66409f222bc6369..a8b3973595e4fbd1dfdf1e90f952095df9eb819e 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
@@ -13,7 +13,7 @@ class Logout extends \Magento\Backend\Controller\Adminhtml\Auth
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_auth->logout();
         $this->messageManager->addSuccess(__('You have logged out.'));
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/BackendApp/Redirect.php b/app/code/Magento/Backend/Controller/Adminhtml/BackendApp/Redirect.php
index f622e39e4917e6eab56cd3cd18ae6ab6779fb889..6ac1f14d193cbef1b8964a693930a6416f835f1a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/BackendApp/Redirect.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/BackendApp/Redirect.php
@@ -39,7 +39,7 @@ class Redirect extends AbstractAction
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if ($this->getRequest()->getParam('app')) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
index 2cb699549bd124201a086b5dc9d5e0efb38645ce..75ea9ccaa84a3538eb13a9c09fbf650002087e3c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
@@ -16,7 +16,7 @@ class CleanImages extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_objectManager->create('Magento\Catalog\Model\Product\Image')->clearCache();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
index 41174c3c1f2f9d4f0c49b148b96e2fbcd089ef4f..553e22810c1db0022f8bdf689efd8b127c5caf1c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
@@ -16,7 +16,7 @@ class CleanMedia extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_objectManager->get('Magento\Framework\View\Asset\MergeService')->cleanMergedJsCss();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php
index 4ca025b3ec57fabc68dfa4814de74f68afc38608..29529085927401f515263784ebe01342123db9ea 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php
@@ -15,7 +15,7 @@ class CleanStaticFiles extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_objectManager->get('Magento\Framework\App\State\CleanupFiles')->clearMaterializedViewFiles();
         $this->_eventManager->dispatch('clean_static_files_cache_after');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
index 049f5fa3cb3062f7d2eaccd83c2cbdfa0e44f642..2bdddc1048c8d46047632dee63d302352554d9db 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
@@ -13,7 +13,7 @@ class FlushAll extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_eventManager->dispatch('adminhtml_cache_flush_all');
         /** @var $cacheFrontend \Magento\Framework\Cache\FrontendInterface */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
index bdd099206ed5205b8df8d467f20fbef1bab6ce8e..35885a93ee963605f093d073b0b854639d472ae4 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
@@ -13,7 +13,7 @@ class FlushSystem extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var $cacheFrontend \Magento\Framework\Cache\FrontendInterface */
         foreach ($this->_cacheFrontendPool as $cacheFrontend) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
index 1078cdf7201bed08c3b32961a741aab2f37bcef1..2d0fd902112788acf3659ef7eb2575d52fd63772 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
index 98703f0bfa1394c117e644bd0902de25353c0e41..5ed4d74b9e68d60fadf52ca2d2aaaec304de70b4 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
@@ -16,7 +16,7 @@ class MassDisable extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $types = $this->getRequest()->getParam('types');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
index 3fd92bc70775c41517a2f88700eaf686cebdabc7..361e4c12a7eb1a2c76f742dde03c5250e07b67e1 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
@@ -16,7 +16,7 @@ class MassEnable extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $types = $this->getRequest()->getParam('types');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
index 420d8757e5bb28ef796b24cbac0eea2b9ea69657..d44b99964296a12211975818a33b3dba927b8e3c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
@@ -16,7 +16,7 @@ class MassRefresh extends \Magento\Backend\Controller\Adminhtml\Cache
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $types = $this->getRequest()->getParam('types');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
index e51999e6fc961e6fe230fab188e271a220037e9c..b5823437cd868ce38dcd49c85f3606f905115fa0 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
@@ -36,7 +36,7 @@ class AjaxBlock extends \Magento\Backend\Controller\Adminhtml\Dashboard
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $output = '';
         $blockTab = $this->getRequest()->getParam('block');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
index 16f345f31fd93f6336568845323d6e2ae08d13ef..6a942ca15f0d380e4a0c1c79412f6a9b93699a17 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
@@ -13,7 +13,7 @@ class CustomersMost extends AjaxBlock
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $output = $this->layoutFactory->create()
             ->createBlock('Magento\Backend\Block\Dashboard\Tab\Customers\Most')
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
index d1d460971fb2e11bcb2c1f1c0d73d4b9e352386e..1e531683a7499d8ed9e2548a2716ecee0fc6205e 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
@@ -13,7 +13,7 @@ class CustomersNewest extends AjaxBlock
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $output = $this->layoutFactory->create()
             ->createBlock('Magento\Backend\Block\Dashboard\Tab\Customers\Newest')
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
index 4b6474bfee4b34ab683473651bf78701e63e677a..1c3098e82bca73ae220a48375b3bf99ec8a6fb0f 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
@@ -28,7 +28,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\Dashboard
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
index 8d5862fcc22e3b6f31c6cc8bc88c07136b0292b9..1931f7284d406ebae5428325e0c414aa1982763a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
@@ -13,7 +13,7 @@ class ProductsViewed extends AjaxBlock
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $output = $this->layoutFactory->create()
             ->createBlock('Magento\Backend\Block\Dashboard\Tab\Products\Viewed')
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php
index e9e51cd3f1daf81060a600bc5f81cdab04a2fcbc..943e8e0d2f6c45a0af1e48d394963599b9963969 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php
@@ -27,7 +27,7 @@ class RefreshStatistics extends \Magento\Reports\Controller\Adminhtml\Report\Sta
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $collectionsNames = array_values($this->reportTypes);
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
index f738be1e83a31a0d23ebc8ed05a6213b061515a1..b4e624b09435aee7c847c9cd347dc5db07a56ec7 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
@@ -36,7 +36,7 @@ class Tunnel extends \Magento\Backend\Controller\Adminhtml\Dashboard
      *
      * @return  \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $error = __('invalid request');
         $httpCode = 400;
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Denied.php b/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
index c77bb09fb00548f52a0ad58f72c62acdb16d520b..478cfa7bca0912f015d785b969212bd4acae1194 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
@@ -28,7 +28,7 @@ class Denied extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_auth->isLoggedIn()) {
             /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
index 9505f4b1d6d2f33094558dfc448f664b201a3046..cdb9fa361c3811c2ec72660166326f8d5348c530 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
@@ -13,7 +13,7 @@ class ChangeLocale extends \Magento\Backend\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $redirectResult = $this->resultRedirectFactory->create();
         $redirectResult->setRefererUrl();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
index afa3019cfd67c03376d34c4a4d38e3f6ec6baf84..8e69d2bc6a2ceb1a84f4c32558eae0cf4c714864 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
@@ -40,7 +40,7 @@ class GlobalSearch extends \Magento\Backend\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $items = [];
 
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
index 0298a2b9d36b7c8dd7110cb24b34a8b71c17abfc..0fc32f759c1fa814f877d6d6fb662c0d255fa05b 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
@@ -14,7 +14,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
index a11957e1b7d3749f94bbc4a7c5819e9d32dc6e1f..6f8101396f7155aa455b1a77fbbd7c664511dd6a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
@@ -30,7 +30,7 @@ class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
index 950b72df2df489940f45d0ac36dac41f2bd125cd..4c63db63ef395f405ad7539e96ecd5661431b269 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
@@ -28,7 +28,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\System\Account
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->prepend(__('My Account'));
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
index 4607cd6127401989c6552d9318601d5b4a8d4089..31f60ebc84d5f2e5edb1343fe7c71db2c5f35efa 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
@@ -18,7 +18,7 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Account
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $userId = $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->getUser()->getId();
         $password = (string)$this->getRequest()->getParam('password');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
index cec54abf608784ceea036b2493ecfd3904d7917e..a1cdb07d9f5e70001e45adb28a8bb016be2473c6 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
@@ -11,7 +11,7 @@ class Delete extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         if ($id) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
index 7d3445f51d1366ccdda98c0e0041c3c7bf844eda..afac63a56c6e2c7d8424bf9ca258e413b8bc6fa5 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
@@ -11,7 +11,7 @@ class Edit extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
index 1c8dca8b4254bdb15ebc45d4f346e5aecdbb755b..b0d9594e04a10f17947135d81cb00cad5c914341 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
@@ -11,7 +11,7 @@ class Grid extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
index b153800392604099571b9c0904c16cede6dd1cc2..0df909829220f8f332ce065540ceaa68fabd0dc8 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
index 3734ef53d733f12522550619d82049e93d54f0ff..6521aa114f72043b060ad879cea53337a494e646 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
@@ -11,7 +11,7 @@ class NewAction extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
index 1d6cc8c6c23fb8be1a10765700f0b0a701bbc6b5..7e52e57ecadcd576b43aa2f0de0bdc6463297f11 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
@@ -28,7 +28,7 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Design
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
index 4af63776d2482a21511034721220790fa805a459..0203351b8882986bc73aff2714f2bf2bc5968ee8 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
@@ -28,7 +28,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\System
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/SetStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/SetStore.php
index a53452ec15893fcf271d5c56a4cd5a08921edd58..962a4b882d9183324b8a2c6e4b7903e37e433add 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/SetStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/SetStore.php
@@ -11,7 +11,7 @@ class SetStore extends \Magento\Backend\Controller\Adminhtml\System
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeId = (int)$this->getRequest()->getParam('store');
         if ($storeId) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
index 3604948ee6bf0a021904e6a346adbb8c0b35c37e..e6066ce3d2a40c72de4486b6e76365cd4d74c783 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
@@ -11,7 +11,7 @@ class DeleteGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id', null);
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Group')->load($itemId))) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
index fe67adeca9055e33ad77871332ffeea20b6f37aa..28557917199f12a67700890beeca32d998647f40 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
@@ -13,7 +13,7 @@ class DeleteGroupPost extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id');
 
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
index 826f8493fa0723926b8e3a81275275ac138f6a32..824866867528b20a132cff33ee2fe4b399f7bfaf 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
@@ -11,7 +11,7 @@ class DeleteStore extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id', null);
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Store')->load($itemId))) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
index c7764a1b20489c19f8689809ebf5808ce004986f..589be3238e50c54001156a29ff23028f6056508c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
@@ -15,7 +15,7 @@ class DeleteStorePost extends \Magento\Backend\Controller\Adminhtml\System\Store
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id');
 
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
index ea67a101763020bf9ba931b68f3e14fc2446eb73..b2c88101d370a165b7a5c0718e51710064fde095 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
@@ -11,7 +11,7 @@ class DeleteWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id', null);
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Website')->load($itemId))) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
index 6951bc3b3a9af1eef09520b35d79a33bc74ea719..dc705339dddf92a1ae214cfbc6b4af92c3b9fadd 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
@@ -13,7 +13,7 @@ class DeleteWebsitePost extends \Magento\Backend\Controller\Adminhtml\System\Sto
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('item_id');
         $model = $this->_objectManager->create('Magento\Store\Model\Website');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
index f7403c9eaa20d64731a62f9198d6fdc3452789ef..4e591b0b106d7c049b7abd752735c42bc94e7354 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
@@ -11,7 +11,7 @@ class EditGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register('store_type', 'group');
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
index f6521a418f4bd2559e21b0f968ac30c604997a4d..0d9465c4b8d3f3ea5cf4dbb3e1b572fdfc9de594 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
@@ -13,7 +13,7 @@ class EditStore extends \Magento\Backend\Controller\Adminhtml\System\Store
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_getSession()->getPostData()) {
             $this->_coreRegistry->register('store_post_data', $this->_getSession()->getPostData());
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
index 1fe94f981734df467b600c91cbf57da32949ada9..b26692e6f544827269e541a2b93f6bcdce1fbb1c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
@@ -11,7 +11,7 @@ class EditWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register('store_type', 'website');
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
index b1f9cf6730948baa7cee8012e3787de267eeccd8..a91d61bfb20b1978c3c0d6ec07156d8016a9309a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->prepend(__('Stores'));
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
index 70f9d8b726b072e1ffa16b02c5369e483dd05b1f..f020762e613c2a19336773afcb8b9a07289a53c0 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
@@ -11,7 +11,7 @@ class NewGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register('store_type', 'group');
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
index 817c67c8be9bd6aa4964234dd7cb5e24d630e9db..b59df090433f8aa0468a6a7c272fdaaa19aa5117 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
@@ -11,7 +11,7 @@ class NewStore extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_coreRegistry->registry('store_type')) {
             $this->_coreRegistry->register('store_type', 'store');
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
index 65bdd1ee1ede13feafd6b8496266969764f94606..cf514c49d02b0c7ccbabe4f53d4f910e80c5d295 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
@@ -11,7 +11,7 @@ class NewWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register('store_type', 'website');
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
index 7f2152e1e89c81c5789c93f01886753537e9f127..de1d131eaf8e4130ef05d0f9775bdf1c1f1adab3 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Store
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
         $redirectResult = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/AuthenticationTest.php b/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/AuthenticationTest.php
index 476f6ca0310e19d9416ba75923a58d65ec55a032..052db1d9ae9887f428308ad83a28a8c7690991bf 100644
--- a/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/AuthenticationTest.php
+++ b/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/AuthenticationTest.php
@@ -45,7 +45,7 @@ class AuthenticationTest extends \PHPUnit_Framework_TestCase
         $this->plugin = null;
     }
 
-    public function testAroundDispatchProlongStorage()
+    public function testAroundExecuteProlongStorage()
     {
         $subject = $this->getMock('Magento\Backend\Controller\Adminhtml\Index', [], [], '', false);
         $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false);
@@ -82,11 +82,11 @@ class AuthenticationTest extends \PHPUnit_Framework_TestCase
             return $expectedResult;
         };
 
-        $this->assertEquals($expectedResult, $this->plugin->aroundDispatch($subject, $proceed, $request));
+        $this->assertEquals($expectedResult, $this->plugin->aroundExecute($subject, $proceed, $request));
     }
 
     /**
-     * Calls aroundDispatch to access protected method _processNotLoggedInUser
+     * Calls aroundExecute to access protected method _processNotLoggedInUser
      *
      * Data provider supplies different possibilities of request parameters and properties
      * @dataProvider processNotLoggedInUserDataProvider
@@ -103,7 +103,7 @@ class AuthenticationTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        // Stubs to control the flow of execution in aroundDispatch
+        // Stubs to control the flow of execution in aroundExecute
         $this->auth->expects($this->any())->method('getAuthStorage')->will($this->returnValue($storage));
         $request->expects($this->once())->method('getActionName')->will($this->returnValue('non/open/action/name'));
         $this->auth->expects($this->any())->method('getUser')->willReturn(false);
@@ -146,7 +146,7 @@ class AuthenticationTest extends \PHPUnit_Framework_TestCase
         $proceed = function ($request) use ($expectedResult) {
             return $expectedResult;
         };
-        $this->assertEquals($expectedResult, $this->plugin->aroundDispatch($subject, $proceed, $request));
+        $this->assertEquals($expectedResult, $this->plugin->aroundExecute($subject, $proceed, $request));
     }
 
     public function processNotLoggedInUserDataProvider()
diff --git a/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/MassactionKeyTest.php b/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/MassactionKeyTest.php
index 87dad8b6edd4152ab5fba42b1ef5a06986c59e78..48ec3a9a592c3b582d79d534a1e7e6aa0d9a6b83 100644
--- a/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/MassactionKeyTest.php
+++ b/app/code/Magento/Backend/Test/Unit/App/Action/Plugin/MassactionKeyTest.php
@@ -49,13 +49,13 @@ class MassactionKeyTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Backend\App\Action\Plugin\MassactionKey::aroundDispatch
+     * @covers \Magento\Backend\App\Action\Plugin\MassactionKey::aroundExecute
      *
      * @param $postData array|string
      * @param array $convertedData
-     * @dataProvider aroundDispatchDataProvider
+     * @dataProvider aroundExecuteDataProvider
      */
-    public function testAroundDispatchWhenMassactionPrepareKeyRequestExists($postData, $convertedData)
+    public function testAroundExecuteWhenMassactionPrepareKeyRequestExists($postData, $convertedData)
     {
         $this->requestMock->expects($this->at(0))
             ->method('getPost')
@@ -71,11 +71,11 @@ class MassactionKeyTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(
             'Expected',
-            $this->plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 
-    public function aroundDispatchDataProvider()
+    public function aroundExecuteDataProvider()
     {
         return [
             'post_data_is_array' => [['key'], ['key']],
@@ -84,9 +84,9 @@ class MassactionKeyTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Backend\App\Action\Plugin\MassactionKey::aroundDispatch
+     * @covers \Magento\Backend\App\Action\Plugin\MassactionKey::aroundExecute
      */
-    public function testAroundDispatchWhenMassactionPrepareKeyRequestNotExists()
+    public function testAroundExecuteWhenMassactionPrepareKeyRequestNotExists()
     {
         $this->requestMock->expects($this->once())
             ->method('getPost')
@@ -97,7 +97,7 @@ class MassactionKeyTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(
             'Expected',
-            $this->plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 }
diff --git a/app/code/Magento/Backend/Test/Unit/App/Action/Stub/ActionStub.php b/app/code/Magento/Backend/Test/Unit/App/Action/Stub/ActionStub.php
index fa8eb043b33a063c2bee51c2c262c84b828d6d28..d8a8df5bc17120cdac6349ff50b2f2ec5674386b 100644
--- a/app/code/Magento/Backend/Test/Unit/App/Action/Stub/ActionStub.php
+++ b/app/code/Magento/Backend/Test/Unit/App/Action/Stub/ActionStub.php
@@ -8,7 +8,7 @@ namespace Magento\Backend\Test\Unit\App\Action\Stub;
 
 class ActionStub extends \Magento\Backend\App\Action
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php
index 36db725f9a90709cd88fd3db044721d664b10e08..1e6619c6f8df721aeaeb891fda29d0b09993fcf9 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php
@@ -10,7 +10,7 @@ namespace Magento\Backend\Test\Unit\Controller\Adminhtml\Cache;
 
 class CleanMediaTest extends \PHPUnit_Framework_TestCase
 {
-    public function testExecute()
+    public function testExecuteInternal()
     {
         // Wire object with mocks
         $response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false);
@@ -62,6 +62,7 @@ class CleanMediaTest extends \PHPUnit_Framework_TestCase
         $context->expects($this->once())->method('getMessageManager')->willReturn($messageManager);
         $context->expects($this->once())->method('getResultFactory')->willReturn($resultFactory);
 
+        /** @var \Magento\Backend\Controller\Adminhtml\Cache\CleanMedia $controller */
         $controller = $helper->getObject(
             'Magento\Backend\Controller\Adminhtml\Cache\CleanMedia',
             [
@@ -90,6 +91,6 @@ class CleanMediaTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
 
         // Run
-        $controller->execute();
+        $controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php
index 0e78f533c85256eb48534c6ac877a4c31fd7e967..dfc5059ec47633efe82ef92d6866f5cdb655c34f 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php
@@ -94,6 +94,6 @@ class CleanStaticFilesTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
 
         // Run
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php
index 986658d715336eb9a3dd6f8d542638b8f0ed45f5..3e67b8311628e7d66194c3426b1b5aa77142a9fa 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php
@@ -19,7 +19,7 @@ class AbstractTestCase extends \PHPUnit_Framework_TestCase
      * @param $controllerName
      * @param $blockName
      */
-    protected function assertExecute($controllerName, $blockName)
+    protected function assertExecuteInternal($controllerName, $blockName)
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $outPut = "data";
@@ -47,7 +47,7 @@ class AbstractTestCase extends \PHPUnit_Framework_TestCase
                 'layoutFactory' => $layoutFactoryMock
             ]
         );
-        $result = $controller->execute();
+        $result = $controller->executeInternal();
         $this->assertInstanceOf('Magento\Framework\Controller\Result\Raw', $result);
     }
 }
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersMostTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersMostTest.php
index bb7cb6ff15ed48a13e6c240d61e8fb923ea30221..f60a0fc93072cb4fc827ffad9b679beaeb5c0c94 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersMostTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersMostTest.php
@@ -15,7 +15,7 @@ class CustomersMostTest extends AbstractTestCase
 {
     public function testExecute()
     {
-        $this->assertExecute(
+        $this->assertExecuteInternal(
             'Magento\Backend\Controller\Adminhtml\Dashboard\CustomersMost',
             'Magento\Backend\Block\Dashboard\Tab\Customers\Most'
         );
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersNewestTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersNewestTest.php
index d9fdd7366ef0d64f81d1f2ae5ded8d796da847b3..6d229559e588b1aac30b05ba9b902d3a85cdf9d0 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersNewestTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/CustomersNewestTest.php
@@ -15,7 +15,7 @@ class CustomersNewestTest extends AbstractTestCase
 {
     public function testExecute()
     {
-        $this->assertExecute(
+        $this->assertExecuteInternal(
             'Magento\Backend\Controller\Adminhtml\Dashboard\CustomersNewest',
             'Magento\Backend\Block\Dashboard\Tab\Customers\Newest'
         );
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/ProductsViewedTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/ProductsViewedTest.php
index 145a8a14077d4797a69045b2a61fb08f6a8bbdec..4efdf2c4edf435e69c31779913e081f7a45b9e78 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/ProductsViewedTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/ProductsViewedTest.php
@@ -15,7 +15,7 @@ class ProductsViewedTest extends AbstractTestCase
 {
     public function testExecute()
     {
-        $this->assertExecute(
+        $this->assertExecuteInternal(
             'Magento\Backend\Controller\Adminhtml\Dashboard\ProductsViewed',
             'Magento\Backend\Block\Dashboard\Tab\Products\Viewed'
         );
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php
index 76d670fef543e0c13d0f1671a5116eff05b670a7..a224583fe5a963dcef216b87a4cf607670da7391 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php
@@ -128,7 +128,7 @@ class RefreshStatisticsTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->refreshStatisticsController->execute()
+            $this->refreshStatisticsController->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/TunnelTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/TunnelTest.php
index 2e5cd51547eee22243ccaeff09f9164dc3ee49d9..cae77b8ad3cc96ed668ebd7dea8b1379dacf64b7 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/TunnelTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/TunnelTest.php
@@ -92,7 +92,7 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
             ->with('success_msg')
             ->willReturnSelf();
 
-        $controller->execute();
+        $controller->executeInternal();
         $this->assertEquals('success_msg', $controller->getResponse()->getBody());
     }
 
@@ -112,7 +112,7 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
             ->with('Service unavailable: invalid request')
             ->willReturnSelf();
 
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     public function testTunnelAction503()
@@ -164,7 +164,7 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
             ->with('Service unavailable: see error log for details')
             ->willReturnSelf();
 
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php
index b36c9a59ab9d42e65bb20e0d337b9bf1f53ccd2d..d86dd0eb5e1bcb67bcaf594eb3fc4ad3c8b8563b 100644
--- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php
@@ -197,6 +197,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->userMock->setUserId($userId);
         $this->requestMock->setParams($requestParams);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/default.xml b/app/code/Magento/Backend/view/adminhtml/layout/default.xml
index f960316fcc92933bc64b33f9457f50335ec8eb46..216934514bcc56a027f62da5c01b76c72a33d61e 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/default.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/default.xml
@@ -53,15 +53,18 @@
             <block class="Magento\Framework\View\Element\Template" name="page.actions.toolbar" template="Magento_Backend::pageactions.phtml" after="-"/>
         </referenceContainer>
         <referenceContainer name="footer">
-            <block class="Magento\Backend\Block\Page\Locale" name="locale.switcher" template="Magento_Backend::page/locale.phtml"/>
-            <container name="legal" htmlTag="div" htmlClass="footer-legal col-m-6 col-m-offset-1">
-                <block class="Magento\Backend\Block\Page\Footer" name="version" as="version" />
-                <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright" />
-                <block class="Magento\Framework\View\Element\Template" name="report" as="report" template="Magento_Backend::page/report.phtml">
-                    <arguments>
-                        <argument name="bugreport_url" xsi:type="string">https://github.com/magento/magento2/issues</argument>
-                    </arguments>
-                </block>
+            <container name="legal" htmlTag="div" htmlClass="footer-legal">
+                <container name="legal.copyright" htmlTag="p" htmlClass="copyright col-m-6">
+                    <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright" />
+                </container>
+                <container name="legal.system" htmlTag="div" htmlClass="footer-legal-system col-m-6">
+                    <block class="Magento\Backend\Block\Page\Footer" name="version" as="version" />
+                    <block class="Magento\Framework\View\Element\Template" name="report" as="report" template="Magento_Backend::page/report.phtml">
+                        <arguments>
+                            <argument name="bugreport_url" xsi:type="string">https://github.com/magento/magento2/issues</argument>
+                        </arguments>
+                    </block>
+                </container>
             </container>
         </referenceContainer>
         <referenceContainer name="backend.page">
diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml
index 5612ab20661793683670a0b2d35fc7a9684b48bd..41781c9d1287fcbabaca8e259939424f85697bb7 100644
--- a/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml
+++ b/app/code/Magento/Backend/view/adminhtml/templates/page/copyright.phtml
@@ -7,7 +7,5 @@
 // @codingStandardsIgnoreFile
 
 ?>
-<p class="copyright">
-    <a class="link-copyright" href="http://magento.com" target="_blank" title="<?php /* @escapeNotVerified */ echo __('Magento') ?>"></a>
-    <?php /* @escapeNotVerified */ echo __('Copyright &copy; %1 Magento. All rights reserved.', date('Y')) ?>
-</p>
+<a class="link-copyright" href="http://magento.com" target="_blank" title="<?php /* @escapeNotVerified */ echo __('Magento') ?>"></a>
+<?php /* @escapeNotVerified */ echo __('Copyright &copy; %1 Magento. All rights reserved.', date('Y')) ?>
diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml
deleted file mode 100644
index 03347fbcbe6953245b1b14cc3534c1894d173049..0000000000000000000000000000000000000000
--- a/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-// @codingStandardsIgnoreFile
-
-?>
-<div class="locale-switcher col-m-5">
-    <label class="label" for="footer_interface_locale"><span><?php /* @escapeNotVerified */ echo __('Interface Locale'); ?></span></label>
-    <?php /* @escapeNotVerified */ echo $block->getLocaleSelect(); ?>
-    <script>
-        require([
-                'mage/validation/url'
-            ],
-            function (urlValidator) {
-                'use strict';
-
-                var elem = document.getElementById('footer_interface_locale');
-
-                function onChange() {
-                    urlValidator.redirect('<?php /* @escapeNotVerified */ echo $block->getChangeLocaleUrl() ?>locale/' +
-                    elem.value +
-                    '/<?php /* @escapeNotVerified */ echo $block->getUrlForReferer() ?>');
-                }
-
-                elem.addEventListener('change', onChange);
-            });
-    </script>
-</div>
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Create.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Create.php
index abfd789889b8339939d5b202e29197b2aac889ea..caa8da583a6f3b2bbf3afe313061682498a77c2b 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Create.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Create.php
@@ -17,7 +17,7 @@ class Create extends \Magento\Backup\Controller\Adminhtml\Index
      * @return void|\Magento\Backend\App\Action
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->isAjax()) {
             return $this->_redirect('*/*/index');
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Download.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Download.php
index c9fe2c5758624b59d19f5a8ec8deba05bcb6c11a..a5ea380d2b671f87b4aebc23994ba2a8eae5a986 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Download.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Download.php
@@ -49,7 +49,7 @@ class Download extends \Magento\Backup\Controller\Adminhtml\Index
      *
      * @return void|\Magento\Backend\App\Action
      */
-    public function execute()
+    public function executeInternal()
     {
         /* @var $backup \Magento\Backup\Model\Backup */
         $backup = $this->_backupModelFactory->create(
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
index 0b9321033825562391fe32f168a6becd278ceacb..f1b60948461c7e168c098605a93adb866784e4ea 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Backup\Controller\Adminhtml\Index
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Index.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Index.php
index 6d3e4f75f4a84b93c09042eaa4995c7d3853a909..5335d40f9a8125ab84530edfb48ce81624fc8ce8 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Index.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Backup\Controller\Adminhtml\Index
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/MassDelete.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/MassDelete.php
index b0c1af3a1f4db1ba8980fd43ad927729fea2d7b4..c9958e65d66d71ba95f323a94b9dae0ca5ec1db6 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/MassDelete.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/MassDelete.php
@@ -13,7 +13,7 @@ class MassDelete extends \Magento\Backup\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\App\Action
      */
-    public function execute()
+    public function executeInternal()
     {
         $backupIds = $this->getRequest()->getParam('ids', []);
 
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index/Rollback.php b/app/code/Magento/Backup/Controller/Adminhtml/Index/Rollback.php
index fdb4714f0ac8c57a484a241b74443bd47d6bf9e4..bd80aff5febf4c06ed83905ff662a76f768e7d52 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index/Rollback.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index/Rollback.php
@@ -19,7 +19,7 @@ class Rollback extends \Magento\Backup\Controller\Adminhtml\Index
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_objectManager->get('Magento\Backup\Helper\Data')->isRollbackAllowed()) {
             $this->_forward('denied');
diff --git a/app/code/Magento/Backup/Model/Config/Backend/Cron.php b/app/code/Magento/Backup/Model/Config/Backend/Cron.php
index 133e6ad8636ae2dfdcf36f92f067dbd470b49eb7..d7deeebccdea94d8464ff7ec6acb8a2dd7ac4b01 100644
--- a/app/code/Magento/Backup/Model/Config/Backend/Cron.php
+++ b/app/code/Magento/Backup/Model/Config/Backend/Cron.php
@@ -32,6 +32,7 @@ class Cron extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -42,6 +43,7 @@ class Cron extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
@@ -50,13 +52,13 @@ class Cron extends \Magento\Framework\App\Config\Value
     ) {
         $this->_runModelPath = $runModelPath;
         $this->_configValueFactory = $configValueFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Cron settings after save
      *
-     * @return void
+     * @return $this
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function afterSave()
@@ -102,5 +104,6 @@ class Cron extends \Magento\Framework\App\Config\Value
         } catch (\Exception $e) {
             throw new \Magento\Framework\Exception\LocalizedException(__('We can\'t save the Cron expression.'));
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Backup/Test/Unit/Controller/Adminhtml/Index/DownloadTest.php b/app/code/Magento/Backup/Test/Unit/Controller/Adminhtml/Index/DownloadTest.php
index 21d27ef0c5a347c9098906b7f63f19abb665e81a..6d2c6d515f11ef472f6b56691a96525f616b1bd1 100644
--- a/app/code/Magento/Backup/Test/Unit/Controller/Adminhtml/Index/DownloadTest.php
+++ b/app/code/Magento/Backup/Test/Unit/Controller/Adminhtml/Index/DownloadTest.php
@@ -143,7 +143,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Backup\Controller\Adminhtml\Index\Download::execute
+     * @covers \Magento\Backup\Controller\Adminhtml\Index\Download::executeInternal
      */
     public function testExecuteBackupFound()
     {
@@ -201,11 +201,11 @@ class DownloadTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($this->resultRawMock);
 
-        $this->assertSame($this->resultRawMock, $this->downloadController->execute());
+        $this->assertSame($this->resultRawMock, $this->downloadController->executeInternal());
     }
 
     /**
-     * @covers \Magento\Backup\Controller\Adminhtml\Index\Download::execute
+     * @covers \Magento\Backup\Controller\Adminhtml\Index\Download::executeInternal
      * @param int $time
      * @param bool $exists
      * @param int $existsCount
@@ -240,7 +240,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($this->resultRedirectMock);
 
-        $this->assertSame($this->resultRedirectMock, $this->downloadController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->downloadController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/AjaxSave.php b/app/code/Magento/Braintree/Controller/Creditcard/AjaxSave.php
index 0177988ea45ab3754d00528e7f4d5e1b3064f2da..c5d284c62cd775aa4c69fef91a2203ede3c153ac 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/AjaxSave.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/AjaxSave.php
@@ -14,7 +14,7 @@ class AjaxSave extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->vault->processNonce(
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/Delete.php b/app/code/Magento/Braintree/Controller/Creditcard/Delete.php
index 2dd4c4f9b136b356ac6de35218d9c1c8bedeaecb..a1f8d5e55a95c151d0cc6b7217e0aa8c3b29188f 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/Delete.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/Delete.php
@@ -12,7 +12,7 @@ class Delete extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\View\Result\Page|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->hasToken()) {
             if (!$this->vault->storedCard($this->hasToken())) {
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/DeleteConfirm.php b/app/code/Magento/Braintree/Controller/Creditcard/DeleteConfirm.php
index bef7c62f781895173744abc0ccd2e7e47f2c15cc..20102ff5c36a654a7e5fa3b85cf2f4e91b5a520e 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/DeleteConfirm.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/DeleteConfirm.php
@@ -29,7 +29,7 @@ class DeleteConfirm extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($token = $this->hasToken()) {
             $result = $this->vault->deleteCard($token);
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/Edit.php b/app/code/Magento/Braintree/Controller/Creditcard/Edit.php
index 864d53f55639bcad696e7ca7035c920af7ca52db..7e88faeeeedf11f3f929ac108befca019f1bdcc0 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/Edit.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/Edit.php
@@ -12,7 +12,7 @@ class Edit extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\View\Result\Page|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->hasToken()) {
             if (!$this->vault->storedCard($this->hasToken())) {
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/Generate.php b/app/code/Magento/Braintree/Controller/Creditcard/Generate.php
index 7bfcdfde5b99270582a0dbeb798f89dee906fa60..41c13f08cdadecfa7167196e0da77eb8eb701d16 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/Generate.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/Generate.php
@@ -19,7 +19,7 @@ class Generate extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             if ($this->hasToken()) {
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/Index.php b/app/code/Magento/Braintree/Controller/Creditcard/Index.php
index db240cda6fcc7c2f077c5263b5461981cc22b2e5..9e94ccdb307ce4e1a2bf923da510c01b9b82423e 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/Index.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/NewCard.php b/app/code/Magento/Braintree/Controller/Creditcard/NewCard.php
index 000ba39e0ab21c4bfd5f26fec25745b2dce71591..1ac92a741d17beb9c847cedeb259b6be5171f249 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/NewCard.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/NewCard.php
@@ -12,7 +12,7 @@ class NewCard extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Braintree/Controller/Creditcard/Save.php b/app/code/Magento/Braintree/Controller/Creditcard/Save.php
index d51c3de282860c48a2d40be82794040015d0b5e6..9080a2a3b65d6c8cad09ad8824839828dfaa8a3f 100644
--- a/app/code/Magento/Braintree/Controller/Creditcard/Save.php
+++ b/app/code/Magento/Braintree/Controller/Creditcard/Save.php
@@ -12,7 +12,7 @@ class Save extends \Magento\Braintree\Controller\MyCreditCards
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->messageManager->addError(__('There was error during saving card data'));
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Braintree/Controller/MyCreditCards.php b/app/code/Magento/Braintree/Controller/MyCreditCards.php
index 122edc79ca2a0697bddbe08f4a0c787039dce6c9..04ff04202bc09448ec1293e72ec0ab7c69d53858 100644
--- a/app/code/Magento/Braintree/Controller/MyCreditCards.php
+++ b/app/code/Magento/Braintree/Controller/MyCreditCards.php
@@ -68,7 +68,7 @@ abstract class MyCreditCards extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $loginUrl = $this->customerUrl->getLoginUrl();
         if (!$this->customerSession->authenticate($loginUrl)) {
@@ -82,7 +82,7 @@ abstract class MyCreditCards extends \Magento\Framework\App\Action\Action
             return $resultRedirect;
         }
 
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Braintree/Controller/PayPal.php b/app/code/Magento/Braintree/Controller/PayPal.php
index e24bd47e8d322c64938c7ea82684d9b59d08c189..b85b605c9ef8d0f890cfd992192622e150978661 100644
--- a/app/code/Magento/Braintree/Controller/PayPal.php
+++ b/app/code/Magento/Braintree/Controller/PayPal.php
@@ -77,7 +77,7 @@ abstract class PayPal extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->braintreePayPalConfig->isActive() || !$this->braintreePayPalConfig->isShortcutCheckoutEnabled()) {
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
@@ -87,7 +87,7 @@ abstract class PayPal extends \Magento\Framework\App\Action\Action
             return $resultRedirect;
         }
 
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Braintree/Controller/PayPal/GetButtonData.php b/app/code/Magento/Braintree/Controller/PayPal/GetButtonData.php
index 4d070aa489d2cd0a0c944156625d175f9eca4950..4be1d5aaebd5440f432fef25e01d5c8fec28a52e 100644
--- a/app/code/Magento/Braintree/Controller/PayPal/GetButtonData.php
+++ b/app/code/Magento/Braintree/Controller/PayPal/GetButtonData.php
@@ -37,7 +37,7 @@ class GetButtonData extends \Magento\Framework\App\Action\Action
      * @return ResultInterface
      * @throws LocalizedException
      */
-    public function execute()
+    public function executeInternal()
     {
         $isAjax = $this->_request->getParam('isAjax');
 
diff --git a/app/code/Magento/Braintree/Controller/PayPal/PlaceOrder.php b/app/code/Magento/Braintree/Controller/PayPal/PlaceOrder.php
index 45041a25ef04eca3ba2ddee4e4b56f957c07cd8c..febdcf06fed58c3062906ea733b5b26e04235c50 100644
--- a/app/code/Magento/Braintree/Controller/PayPal/PlaceOrder.php
+++ b/app/code/Magento/Braintree/Controller/PayPal/PlaceOrder.php
@@ -48,7 +48,7 @@ class PlaceOrder extends \Magento\Braintree\Controller\PayPal
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             if (!$this->agreementsValidator->isValid(array_keys($this->getRequest()->getPost('agreement', [])))) {
diff --git a/app/code/Magento/Braintree/Controller/PayPal/Review.php b/app/code/Magento/Braintree/Controller/PayPal/Review.php
index ef01f89b38e11dc78fe6895dd87e5370bb856eb0..48634e9fe7ba8f317187ba1d2e9e6644a32bbb5e 100644
--- a/app/code/Magento/Braintree/Controller/PayPal/Review.php
+++ b/app/code/Magento/Braintree/Controller/PayPal/Review.php
@@ -49,7 +49,7 @@ class Review extends \Magento\Braintree\Controller\PayPal
     /**
      * @return $this|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $paymentMethodNonce = $this->getRequest()->getParam('payment_method_nonce');
         $details = $this->getRequest()->getParam('details');
diff --git a/app/code/Magento/Braintree/Controller/PayPal/SaveShippingMethod.php b/app/code/Magento/Braintree/Controller/PayPal/SaveShippingMethod.php
index d8041b7186ea4bb786a7827cd3e34595f6aaf5ba..6ec5b0c18e21fcbd83a9ef38a1ca46e6ac37d0eb 100644
--- a/app/code/Magento/Braintree/Controller/PayPal/SaveShippingMethod.php
+++ b/app/code/Magento/Braintree/Controller/PayPal/SaveShippingMethod.php
@@ -15,7 +15,7 @@ class SaveShippingMethod extends \Magento\Braintree\Controller\PayPal
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $isAjax = $this->getRequest()->getParam('isAjax');
diff --git a/app/code/Magento/Braintree/Model/System/Config/Backend/Countrycreditcard.php b/app/code/Magento/Braintree/Model/System/Config/Backend/Countrycreditcard.php
index 7e234209d001fe8b21439b3f755f2434e791678c..73b1c40112ec7c408332f9eda97da6fafd1f862a 100644
--- a/app/code/Magento/Braintree/Model/System/Config/Backend/Countrycreditcard.php
+++ b/app/code/Magento/Braintree/Model/System/Config/Backend/Countrycreditcard.php
@@ -16,6 +16,7 @@ class Countrycreditcard extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Math\Random $mathRandom
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -25,13 +26,14 @@ class Countrycreditcard extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Math\Random $mathRandom,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->mathRandom = $mathRandom;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/AjaxSaveTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/AjaxSaveTest.php
index 53e070f5843a81ac46817a4e96067d2bd5b7dbf4..ff09bdb9e322fd741f2edc6e6ed00c14dd49df95 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/AjaxSaveTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/AjaxSaveTest.php
@@ -88,8 +88,8 @@ class AjaxSaveTest extends \PHPUnit_Framework_TestCase
             ->method('addSuccess')
             ->with($phrase);
 
-
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\AjaxSave $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\AjaxSave',
             [
                 'request' => $this->request,
@@ -98,7 +98,7 @@ class AjaxSaveTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultJson, $notification->execute());
+        $this->assertSame($this->resultJson, $controller->executeInternal());
     }
 
     /**
@@ -124,7 +124,8 @@ class AjaxSaveTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\AjaxSave $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\AjaxSave',
             [
                 'request' => $this->request,
@@ -134,6 +135,6 @@ class AjaxSaveTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultJson, $notification->execute());
+        $this->assertSame($this->resultJson, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteConfirmTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteConfirmTest.php
index a3047c7cac4437e36a750f67dd3b6458c2b80db2..13029d4d144b369a8de4a57cabb2b528eb5809ab 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteConfirmTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteConfirmTest.php
@@ -66,7 +66,7 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts successfully deleted
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('Credit card successfully deleted');
@@ -93,7 +93,8 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ->method('addSuccess')
             ->with($phrase);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\DeleteConfirm $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\DeleteConfirm',
             [
                 'request' => $this->request,
@@ -103,13 +104,13 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirect for non valid token param
      */
-    public function testExecuteNoTokenRedirect()
+    public function testExecuteInternalNoTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
 
@@ -128,7 +129,8 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ->method('setPath')
             ->willReturnSelf();
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Edit $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Edit',
             [
                 'request' => $this->request,
@@ -137,13 +139,13 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirects for can't delete card logic
      */
-    public function testExecuteNonExistingTokenRedirect()
+    public function testExecuteInternalNonExistingTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('a,b,c');
@@ -172,7 +174,8 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\DeleteConfirm $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\DeleteConfirm',
             [
                 'request' => $this->request,
@@ -182,13 +185,13 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts failed deletion
      */
-    public function testExecuteSaveFail()
+    public function testExecuteInternalSaveFail()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('There was error deleting the credit card');
@@ -214,7 +217,8 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\DeleteConfirm $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\DeleteConfirm',
             [
                 'request' => $this->request,
@@ -224,6 +228,6 @@ class DeleteConfirmTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteTest.php
index 504c186ad11773a7e3b7739ac95d9946e4151b74..76c7fa5b7528ab6b9350c029d7f0e473d7799932 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/DeleteTest.php
@@ -106,7 +106,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
 
@@ -138,8 +138,8 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->method('getConfig')
             ->willReturn($this->pageConfig);
 
-
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Delete $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Delete',
             [
                 'request' => $this->request,
@@ -148,13 +148,13 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultPage, $notification->execute());
+        $this->assertSame($this->resultPage, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirect for non valid token param
      */
-    public function testExecuteNoTokenRedirect()
+    public function testExecuteInternalNoTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
 
@@ -176,7 +176,8 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->method('setPath')
             ->willReturnSelf();
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Delete $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Delete',
             [
                 'request' => $this->request,
@@ -186,13 +187,13 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirects for non existing logic
      */
-    public function testExecuteNonExistingTokenRedirect()
+    public function testExecuteInternalNonExistingTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('Credit card does not exist');
@@ -224,8 +225,8 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Delete $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Delete',
             [
                 'request' => $this->request,
@@ -236,6 +237,6 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/EditTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/EditTest.php
index cd14d7181346d491c424dde2e5f2301965cc8c98..7742f863e16a87dc1df0e22a0b938b4af7ef2cc3 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/EditTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/EditTest.php
@@ -106,7 +106,7 @@ class EditTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
 
@@ -138,8 +138,8 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ->method('getConfig')
             ->willReturn($this->pageConfig);
 
-
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Edit $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Edit',
             [
                 'request' => $this->request,
@@ -148,13 +148,13 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultPage, $notification->execute());
+        $this->assertSame($this->resultPage, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirect for non valid token param
      */
-    public function testExecuteNoTokenRedirect()
+    public function testExecuteInternalNoTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
 
@@ -176,7 +176,8 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ->method('setPath')
             ->willReturnSelf();
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Edit $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Edit',
             [
                 'request' => $this->request,
@@ -186,13 +187,13 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts with redirects for non existing logic
      */
-    public function testExecuteNonExistingTokenRedirect()
+    public function testExecuteInternalNonExistingTokenRedirect()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('Credit card does not exist');
@@ -224,8 +225,8 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Edit $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Edit',
             [
                 'request' => $this->request,
@@ -236,6 +237,6 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/GenerateTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/GenerateTest.php
index 40540bb9da8c0dafe14ffbbf70bf209aff6cfc7c..8f000251d18c7ed39a8171493bc0d83cc21a91dd 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/GenerateTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/GenerateTest.php
@@ -72,7 +72,7 @@ class GenerateTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManager($this);
         $this->resultJson->expects($this->once())
@@ -87,7 +87,8 @@ class GenerateTest extends \PHPUnit_Framework_TestCase
             ->method('getParam')
             ->willReturn(true);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Generate $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Generate',
             [
                 'request' => $this->request,
@@ -96,13 +97,13 @@ class GenerateTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultJson, $notification->execute());
+        $this->assertSame($this->resultJson, $controller->executeInternal());
     }
 
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecuteLocalizedException()
+    public function testExecuteInternalLocalizedException()
     {
         $phrase = new \Magento\Framework\Phrase('Something went wrong while processing.');
         $objectManager = new ObjectManager($this);
@@ -126,7 +127,8 @@ class GenerateTest extends \PHPUnit_Framework_TestCase
             ->method('getParam')
             ->willReturn(true);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Generate $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Generate',
             [
                 'request' => $this->request,
@@ -136,6 +138,6 @@ class GenerateTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultJson, $notification->execute());
+        $this->assertSame($this->resultJson, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/IndexTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/IndexTest.php
index 7f8e3861a48dee3ba83c8f0e19136950781c0c24..38e88b0586e88ab1f04a181ae6cc63956001008f 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/IndexTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/IndexTest.php
@@ -86,17 +86,18 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Index $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Index',
             [
                 'resultPageFactory' => $this->resultPageFactory,
             ]
         );
 
-        $this->assertSame($this->resultPage, $notification->execute());
+        $this->assertSame($this->resultPage, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/NewCardTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/NewCardTest.php
index ee655fe49b0834a6d249bad099a50c819ef8329d..23607cc3839854ef4071de1eeaf19ccc63aa8fea 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/NewCardTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/NewCardTest.php
@@ -94,7 +94,7 @@ class NewCardTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
         $customerId = 1;
@@ -103,7 +103,8 @@ class NewCardTest extends \PHPUnit_Framework_TestCase
             ->method('getCustomerId')
             ->willReturn($customerId);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\NewCard $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\NewCard',
             [
                 'resultPageFactory' => $this->resultPageFactory,
@@ -111,6 +112,6 @@ class NewCardTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultPage, $notification->execute());
+        $this->assertSame($this->resultPage, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/SaveTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/SaveTest.php
index ff42e7e7c6e0e98ad4e6a2d0c2b25c4eae8b2469..512dbb4d07c253f01831dec3c976855772b65105 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/SaveTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Creditcard/SaveTest.php
@@ -58,7 +58,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManagerHelper($this);
         $phrase = new \Magento\Framework\Phrase('There was error during saving card data');
@@ -84,7 +84,8 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with($phrase);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Braintree\Controller\Creditcard\Save $controller */
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Controller\Creditcard\Save',
             [
                 'request' => $this->request,
@@ -93,6 +94,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->execute());
+        $this->assertSame($this->resultRedirect, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/MyCreditCardsTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/MyCreditCardsTest.php
index 39f70eb0ce2ae317a337397b6c045731d7be8402..657d83e1f7ae0786de1faf18b7bf2348e3ec47c7 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/MyCreditCardsTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/MyCreditCardsTest.php
@@ -113,7 +113,7 @@ class MyCreditCardsTest extends \PHPUnit_Framework_TestCase
         $requestInterface= $this->getMockBuilder('\Magento\Framework\App\RequestInterface')
             ->getMock();
 
-        $notification = $objectManager->getObject(
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Test\Unit\Controller\Stub\MyCreditCardsStub',
             [
                 'customerSession' => $this->customerSession,
@@ -123,7 +123,7 @@ class MyCreditCardsTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->resultRedirect, $notification->dispatch($requestInterface));
+        $this->assertSame($this->resultRedirect, $controller->execute($requestInterface));
     }
 
     /**
@@ -156,7 +156,7 @@ class MyCreditCardsTest extends \PHPUnit_Framework_TestCase
             ->getMock();
 
 
-        $notification = $objectManager->getObject(
+        $controller = $objectManager->getObject(
             'Magento\Braintree\Test\Unit\Controller\Stub\MyCreditCardsStub',
             [
                 'customerSession' => $this->customerSession,
@@ -167,6 +167,6 @@ class MyCreditCardsTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $this->assertSame($this->_response, $notification->dispatch($requestInterface));
+        $this->assertSame($this->_response, $controller->execute($requestInterface));
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/GetButtonDataTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/GetButtonDataTest.php
index 75718aa2f9c35289a65a7230161848539d2db14b..ee314f710e26ca732fe74b644089aed3d95ab0db 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/GetButtonDataTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/GetButtonDataTest.php
@@ -85,7 +85,7 @@ class GetButtonDataTest extends \PHPUnit_Framework_TestCase
             ->willReturn($data['currency']);
 
         $getButtonData = new GetButtonData($this->contextMock, $this->checkoutSessionMock);
-        $getButtonData->execute();
+        $getButtonData->executeInternal();
     }
 
     /**
@@ -168,7 +168,7 @@ class GetButtonDataTest extends \PHPUnit_Framework_TestCase
         ->method('getQuote');
 
         $getButtonData = new GetButtonData($this->contextMock, $this->checkoutSessionMock);
-        $getButtonData->execute();
+        $getButtonData->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/PlaceOrderTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/PlaceOrderTest.php
index e27de2bedd42cc30865b3db67b6b44f9a7c1dbcc..1d4fb2a241b7815a79b17b7d4c1835b73ec07059 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/PlaceOrderTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/PlaceOrderTest.php
@@ -204,7 +204,7 @@ class PlaceOrderTest extends \PHPUnit_Framework_TestCase
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
 
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecuteException()
@@ -234,6 +234,6 @@ class PlaceOrderTest extends \PHPUnit_Framework_TestCase
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
 
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/ReviewTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/ReviewTest.php
index bac4378b974a62f6be1313f2abce623867822ab6..c7fc1da8662620f2681e92cb6ae1ccb6bf18d087 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/ReviewTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/ReviewTest.php
@@ -253,7 +253,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->with($paymentMethodNonce, ['email' => $email]);
         $resultPageMock = $this->setupReviewPage($quoteMock);
 
-        $this->assertEquals($resultPageMock, $this->controller->execute());
+        $this->assertEquals($resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteWithBillingAddress()
@@ -285,7 +285,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->with($paymentMethodNonce, $details);
         $resultPageMock = $this->setupReviewPage($quoteMock);
 
-        $this->assertEquals($resultPageMock, $this->controller->execute());
+        $this->assertEquals($resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteRefresh()
@@ -296,7 +296,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->willReturn(\Magento\Braintree\Model\PaymentMethod\PayPal::METHOD_CODE);
         $resultPageMock = $this->setupReviewPage($quoteMock);
 
-        $this->assertEquals($resultPageMock, $this->controller->execute());
+        $this->assertEquals($resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteNoPayment()
@@ -328,7 +328,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecuteIncorrectPaymentMathod()
@@ -352,7 +352,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecuteValidationFailure()
@@ -400,7 +400,7 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecuteException()
@@ -447,6 +447,6 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
             ->willReturn($resultRedirect);
-        $this->assertEquals($resultRedirect, $this->controller->execute());
+        $this->assertEquals($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/SaveShippingMethodTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/SaveShippingMethodTest.php
index 38d61187310a6a6146435c7d6c55e62870398ab8..c1c5da115fcfacce48ee662e9b24bf87ff74a26e 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/SaveShippingMethodTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/PayPal/SaveShippingMethodTest.php
@@ -198,7 +198,7 @@ class SaveShippingMethodTest extends \PHPUnit_Framework_TestCase
             ->with(ResultFactory::TYPE_PAGE)
             ->willReturn($responsePageMock);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteException()
@@ -236,6 +236,6 @@ class SaveShippingMethodTest extends \PHPUnit_Framework_TestCase
             ->method('setBody')
             ->with($html);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/PayPalTest.php b/app/code/Magento/Braintree/Test/Unit/Controller/PayPalTest.php
index b20831f92fe1d2be7ba0bb66aa61d0b86733a6c5..f9d3db87e6d6f9310b9273104084a10b1c8b822a 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/PayPalTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/PayPalTest.php
@@ -125,7 +125,7 @@ class PayPalTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($resultRedirect);
 
-        $this->assertEquals($resultRedirect, $this->controller->dispatch($this->requestMock));
+        $this->assertEquals($resultRedirect, $this->controller->execute($this->requestMock));
         $this->assertEquals('noRoute', $resultRedirect->getPath()) ;
     }
 
@@ -146,7 +146,7 @@ class PayPalTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($resultRedirect);
 
-        $this->assertEquals($resultRedirect, $this->controller->dispatch($this->requestMock));
+        $this->assertEquals($resultRedirect, $this->controller->execute($this->requestMock));
         $this->assertEquals('noRoute', $resultRedirect->getPath()) ;
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Stub/MyCreditCardsStub.php b/app/code/Magento/Braintree/Test/Unit/Controller/Stub/MyCreditCardsStub.php
index 971edb13bfa61df570c7afcfe5edbe928dde988d..b8abdda7eb05ff49cff58fbcfd6d4250d75a3814 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Stub/MyCreditCardsStub.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Stub/MyCreditCardsStub.php
@@ -8,7 +8,7 @@ namespace Magento\Braintree\Test\Unit\Controller\Stub;
 
 class MyCreditCardsStub extends \Magento\Braintree\Controller\MyCreditCards
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/app/code/Magento/Braintree/Test/Unit/Controller/Stub/PayPalStub.php b/app/code/Magento/Braintree/Test/Unit/Controller/Stub/PayPalStub.php
index b0b5a3dc3188418129fa7e00d7a6baef20e8aa9e..ca9248d5e6b509097efb39e3068879879b9edff4 100644
--- a/app/code/Magento/Braintree/Test/Unit/Controller/Stub/PayPalStub.php
+++ b/app/code/Magento/Braintree/Test/Unit/Controller/Stub/PayPalStub.php
@@ -8,7 +8,7 @@ namespace Magento\Braintree\Test\Unit\Controller\Stub;
 
 class PayPalStub extends \Magento\Braintree\Controller\PayPal
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Form.php b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Form.php
index 8323781a07c9406ddd61b0338f48ffcc37fd0d7c..2f6f5061a79e701902cef6d3d2a1a7d9892cdf38 100644
--- a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Form.php
+++ b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Form.php
@@ -33,7 +33,7 @@ class Form extends \Magento\Catalog\Controller\Adminhtml\Product
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $product = $this->initializationHelper->initialize($this->productBuilder->build($this->getRequest()));
         $this->getResponse()->setBody(
diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Grid.php b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Grid.php
index 684eb43e4ad6019b28243f9ef932f74d4e7f16e9..359f69c72e012b3e0a0bb00ebdc39fd7a1fd7284 100644
--- a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Grid.php
+++ b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Grid.php
@@ -11,7 +11,7 @@ class Grid extends \Magento\Backend\App\Action
     /**
      * @return mixed
      */
-    public function execute()
+    public function executeInternal()
     {
         $index = $this->getRequest()->getParam('index');
         if (!preg_match('/^[a-z0-9_.]*$/i', $index)) {
diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Search.php b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Search.php
index 46c2fae16f490ce78ecfeca2070d56784f7801bc..6101d8b9593a2f4c0a803525830c97e71de45245 100644
--- a/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Search.php
+++ b/app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Selection/Search.php
@@ -11,7 +11,7 @@ class Search extends \Magento\Backend\App\Action
     /**
      * @return mixed
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->getResponse()->setBody(
             $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Bundle/Setup/InstallData.php b/app/code/Magento/Bundle/Setup/InstallData.php
index 0df0acd57343b9129ee933c707b98f537dd62076..57a3ab0851e78c3b70903d606f9cef214d8d3347 100644
--- a/app/code/Magento/Bundle/Setup/InstallData.php
+++ b/app/code/Magento/Bundle/Setup/InstallData.php
@@ -86,7 +86,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => true,
                 'required' => true,
                 'user_defined' => false,
@@ -112,7 +112,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
@@ -137,7 +137,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
@@ -164,7 +164,7 @@ class InstallData implements InstallDataInterface
                 'input' => 'select',
                 'class' => '',
                 'source' => 'Magento\Bundle\Model\Product\Attribute\Source\Price\View',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => true,
                 'required' => true,
                 'user_defined' => false,
@@ -190,7 +190,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
diff --git a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Product/Edit/FormTest.php b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Product/Edit/FormTest.php
index 34f249ca2cdd33ba6b30010489b0f66fafbf8a46..75a14fd13a66b66cbd88ea89f8c1ebb95d6f7ac2 100644
--- a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Product/Edit/FormTest.php
+++ b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Product/Edit/FormTest.php
@@ -112,6 +112,6 @@ class FormTest extends \PHPUnit_Framework_TestCase
         $layout->expects($this->once())->method('createBlock')->willReturn($block);
         $block->expects($this->once())->method('toHtml')->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/GridTest.php b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/GridTest.php
index c0a7342f8249fe51452f5b762116455f814a9581..49a6c22704ee9c467f3bda12fba478c7bead4c15 100644
--- a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/GridTest.php
+++ b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/GridTest.php
@@ -88,7 +88,7 @@ class GridTest extends \PHPUnit_Framework_TestCase
         $block->expects($this->once())->method('setIndex')->willReturnSelf();
         $block->expects($this->once())->method('toHtml')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->controller->execute());
+        $this->assertEquals($this->response, $this->controller->executeInternal());
     }
 
     /**
@@ -99,6 +99,6 @@ class GridTest extends \PHPUnit_Framework_TestCase
     {
         $this->request->expects($this->once())->method('getParam')->with('index')->willReturn('<index"');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/SearchTest.php b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/SearchTest.php
index 2ef224ab717151321a373d05bd6531f59a346633..7f03eeccfd156cec22fc183bf5ba99ccc3a428f1 100644
--- a/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/SearchTest.php
+++ b/app/code/Magento/Bundle/Test/Unit/Controller/Adminhtml/Bundle/Selection/SearchTest.php
@@ -87,6 +87,6 @@ class SearchTest extends \PHPUnit_Framework_TestCase
         $block->expects($this->once())->method('setFirstShow')->with(true)->willReturnSelf();
         $block->expects($this->once())->method('toHtml')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->controller->execute());
+        $this->assertEquals($this->response, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/BundleImportExport/Model/Export/RowCustomizer.php b/app/code/Magento/BundleImportExport/Model/Export/RowCustomizer.php
index 5c8f89c8982d9d0e4cfbc55ca1d67ab15337aa31..227a7d0fc9f0c3b002daf25be16bd0912e70082b 100644
--- a/app/code/Magento/BundleImportExport/Model/Export/RowCustomizer.php
+++ b/app/code/Magento/BundleImportExport/Model/Export/RowCustomizer.php
@@ -10,6 +10,7 @@ use Magento\CatalogImportExport\Model\Export\RowCustomizerInterface;
 use Magento\CatalogImportExport\Model\Import\Product as ImportProductModel;
 use Magento\Bundle\Model\ResourceModel\Selection\Collection as SelectionCollection;
 use Magento\ImportExport\Controller\Adminhtml\Import;
+use Magento\ImportExport\Model\Import as ImportModel;
 
 /**
  * Class RowCustomizer
@@ -90,12 +91,13 @@ class RowCustomizer implements RowCustomizerInterface
      * Prepare data for export
      *
      * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
-     * @param int $productIds
+     * @param int[] $productIds
      * @return $this
      */
     public function prepareData($collection, $productIds)
     {
-        $collection->addAttributeToFilter(
+        $productCollection = clone $collection;
+        $productCollection->addAttributeToFilter(
             'entity_id',
             ['in' => $productIds]
         )->addAttributeToFilter(
@@ -103,7 +105,7 @@ class RowCustomizer implements RowCustomizerInterface
             ['eq' => \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE]
         );
 
-        return $this->populateBundleData($collection);
+        return $this->populateBundleData($productCollection);
     }
 
     /**
@@ -214,9 +216,9 @@ class RowCustomizer implements RowCustomizerInterface
                 'price_type' => $this->getPriceTypeValue($selection->getSelectionPriceType())
             ];
             $bundleData .= $optionValues
-                . ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+                . ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
                 . implode(
-                    ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
+                    ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
                     array_map(
                         function ($value, $key) {
                             return $key . ImportProductModel::PAIR_NAME_VALUE_SEPARATOR . $value;
@@ -240,9 +242,9 @@ class RowCustomizer implements RowCustomizerInterface
     protected function getFormattedOptionValues($option)
     {
         return 'name' . ImportProductModel::PAIR_NAME_VALUE_SEPARATOR
-        . $option->getTitle() . ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+        . $option->getTitle() . ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
         . 'type' . ImportProductModel::PAIR_NAME_VALUE_SEPARATOR
-        . $option->getType() . ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+        . $option->getType() . ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
         . 'required' . ImportProductModel::PAIR_NAME_VALUE_SEPARATOR
         . $option->getRequired();
     }
@@ -290,7 +292,7 @@ class RowCustomizer implements RowCustomizerInterface
     {
         if (!empty($dataRow['additional_attributes'])) {
             $additionalAttributes = explode(
-                ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
+                ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
                 $dataRow['additional_attributes']
             );
             $dataRow['additional_attributes'] = $this->getNotBundleAttributes($additionalAttributes);
@@ -314,10 +316,10 @@ class RowCustomizer implements RowCustomizerInterface
                 $cleanedAdditionalAttributes .= $attributeCode
                     . ImportProductModel::PAIR_NAME_VALUE_SEPARATOR
                     . $attributeValue
-                    . ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR;
+                    . ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR;
             }
         }
 
-        return rtrim($cleanedAdditionalAttributes, ImportProductModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR);
+        return rtrim($cleanedAdditionalAttributes, ImportModel::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR);
     }
 }
diff --git a/app/code/Magento/Captcha/Controller/Adminhtml/Refresh/Refresh.php b/app/code/Magento/Captcha/Controller/Adminhtml/Refresh/Refresh.php
index 2c6ad98a280c7b601ac4cb54364c1ac1c0c2d44d..7dd6846a3fda634baefa26471c50ed3adcdeb508 100644
--- a/app/code/Magento/Captcha/Controller/Adminhtml/Refresh/Refresh.php
+++ b/app/code/Magento/Captcha/Controller/Adminhtml/Refresh/Refresh.php
@@ -13,7 +13,7 @@ class Refresh extends \Magento\Backend\App\Action
     /**
      * {@inheritdoc}
      */
-    public function execute()
+    public function executeInternal()
     {
         $formId = $this->getRequest()->getPost('formId');
         $captchaModel = $this->_objectManager->get('Magento\Captcha\Helper\Data')->getCaptcha($formId);
diff --git a/app/code/Magento/Captcha/Controller/Refresh/Index.php b/app/code/Magento/Captcha/Controller/Refresh/Index.php
index f12d17afaa99b04b9ad0ce094fb29fea6615732b..6e4a78090bd6c57ad8093e609bca9925445d70a3 100644
--- a/app/code/Magento/Captcha/Controller/Refresh/Index.php
+++ b/app/code/Magento/Captcha/Controller/Refresh/Index.php
@@ -30,7 +30,7 @@ class Index extends \Magento\Framework\App\Action\Action
     /**
      * {@inheritdoc}
      */
-    public function execute()
+    public function executeInternal()
     {
         $formId = $this->_request->getPost('formId');
         if (null === $formId) {
diff --git a/app/code/Magento/Captcha/Model/Customer/Plugin/AjaxLogin.php b/app/code/Magento/Captcha/Model/Customer/Plugin/AjaxLogin.php
index 9f1dcff38b658c5aedaa0b9f9ed1527d676dab33..4cc0d629b0100b7f0f69bcec11f9701bf3ebb898 100644
--- a/app/code/Magento/Captcha/Model/Customer/Plugin/AjaxLogin.php
+++ b/app/code/Magento/Captcha/Model/Customer/Plugin/AjaxLogin.php
@@ -57,7 +57,7 @@ class AjaxLogin
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function aroundExecute(
+    public function aroundExecuteInternal(
         \Magento\Customer\Controller\Ajax\Login $subject,
         \Closure $proceed
     ) {
diff --git a/app/code/Magento/Captcha/Test/Unit/Controller/Refresh/IndexTest.php b/app/code/Magento/Captcha/Test/Unit/Controller/Refresh/IndexTest.php
index fd47b19ea9038c553c8183b13066421b94236cfa..55f33af2161a8235f3ef6439d52b096e54fb5e5c 100644
--- a/app/code/Magento/Captcha/Test/Unit/Controller/Refresh/IndexTest.php
+++ b/app/code/Magento/Captcha/Test/Unit/Controller/Refresh/IndexTest.php
@@ -100,7 +100,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->responseMock->expects($this->once())->method('representJson')->with(json_encode(['imgSrc' => 'source']));
         $this->flagMock->expects($this->once())->method('set')->with('', 'no-postDispatch', true);
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Captcha/Test/Unit/Model/Customer/Plugin/AjaxLoginTest.php b/app/code/Magento/Captcha/Test/Unit/Model/Customer/Plugin/AjaxLoginTest.php
index 7a79969f8ef4f17c760547f7b7496821b18e9fec..3d92086223ca9eea6062a43c991f490db9cac72e 100644
--- a/app/code/Magento/Captcha/Test/Unit/Model/Customer/Plugin/AjaxLoginTest.php
+++ b/app/code/Magento/Captcha/Test/Unit/Model/Customer/Plugin/AjaxLoginTest.php
@@ -82,7 +82,7 @@ class AjaxLoginTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function testAroundExecute()
+    public function testAroundExecuteInternal()
     {
         $username = 'name';
         $captchaString = 'string';
@@ -102,10 +102,10 @@ class AjaxLoginTest extends \PHPUnit_Framework_TestCase
         $closure = function () {
             return 'result';
         };
-        $this->assertEquals('result', $this->model->aroundExecute($this->loginControllerMock, $closure));
+        $this->assertEquals('result', $this->model->aroundExecuteInternal($this->loginControllerMock, $closure));
     }
 
-    public function testAroundExecuteIncorrectCaptcha()
+    public function testAroundExecuteInternalIncorrectCaptcha()
     {
         $username = 'name';
         $captchaString = 'string';
@@ -131,15 +131,15 @@ class AjaxLoginTest extends \PHPUnit_Framework_TestCase
 
         $closure = function () {
         };
-        $this->assertEquals('response', $this->model->aroundExecute($this->loginControllerMock, $closure));
+        $this->assertEquals('response', $this->model->aroundExecuteInternal($this->loginControllerMock, $closure));
     }
 
     /**
-     * @dataProvider aroundExecuteCaptchaIsNotRequired
+     * @dataProvider aroundExecuteInternalCaptchaIsNotRequired
      * @param string $username
      * @param array $requestContent
      */
-    public function testAroundExecuteCaptchaIsNotRequired($username, $requestContent)
+    public function testAroundExecuteInternalCaptchaIsNotRequired($username, $requestContent)
     {
         $this->requestMock->expects($this->once())->method('getContent')->will($this->returnValue($requestContent));
 
@@ -151,13 +151,13 @@ class AjaxLoginTest extends \PHPUnit_Framework_TestCase
         $closure = function () {
             return 'result';
         };
-        $this->assertEquals('result', $this->model->aroundExecute($this->loginControllerMock, $closure));
+        $this->assertEquals('result', $this->model->aroundExecuteInternal($this->loginControllerMock, $closure));
     }
 
     /**
      * @return array
      */
-    public function aroundExecuteCaptchaIsNotRequired()
+    public function aroundExecuteInternalCaptchaIsNotRequired()
     {
         return [
             [
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Edit/Tab/Advanced.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Edit/Tab/Advanced.php
index 5ed9016a59f6a799258ad17cee50c43c614ead97..db69fe00f5cfb6651bb3068d5aa08528c915caa4 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Edit/Tab/Advanced.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Edit/Tab/Advanced.php
@@ -213,14 +213,14 @@ class Advanced extends Generic
         }
 
         $scopes = [
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE => __('Store View'),
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE => __('Website'),
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL => __('Global'),
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE => __('Store View'),
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE => __('Website'),
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL => __('Global'),
         ];
 
         if ($attributeObject->getAttributeCode() == 'status' || $attributeObject->getAttributeCode() == 'tax_class_id'
         ) {
-            unset($scopes[\Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE]);
+            unset($scopes[\Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE]);
         }
 
         $fieldset->addField(
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Grid.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Grid.php
index b2619647601b92b935951d8b2aae10959d89ea6b..575a12c430826baad1dc6114ac5893832b17015f 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Grid.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Grid.php
@@ -83,9 +83,9 @@ class Grid extends AbstractGrid
                 'index' => 'is_global',
                 'type' => 'options',
                 'options' => [
-                    \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE => __('Store View'),
-                    \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE => __('Web Site'),
-                    \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL => __('Global'),
+                    \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE => __('Store View'),
+                    \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE => __('Web Site'),
+                    \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL => __('Global'),
                 ],
                 'align' => 'center'
             ],
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
index 5cd9fffd001c469ca9276a706a71105206b70d1d..9860f99b8267d72062f0f9f78e909d3461dda954 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
@@ -30,7 +30,7 @@ class Add extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->unsActiveTabId();
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
index 6f9cf5cc6e551509bb3eb6c33dbb55f90032761d..21c4c2fddbdc0dfc57d1483d542e381c6ed488ca 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
@@ -38,7 +38,7 @@ class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('expand_all')) {
             $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->setIsTreeWasExpanded(true);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
index cc0e60a82a3918825367c4a4b166c0bb0477c216..7590c92887c703e4611b0cfbc345c49c54c39ebc 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
@@ -28,7 +28,7 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
index 3c308d5deeafa0464ad48da3f6e398ceaffe9a64..4c8f0e0be64b64be576f0940ba637798e4b2c5ca 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
@@ -40,7 +40,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeId = (int)$this->getRequest()->getParam('store');
         $parentId = (int)$this->getRequest()->getParam('parent');
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
index fdecd7c3922901e0a4288d146219eeaadbd76e12..6f389e87de6f8afafc758226499a1a173d736286 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
@@ -39,7 +39,7 @@ class Grid extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $category = $this->_initCategory(true);
         if (!$category) {
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
index 1b0bbf347f509d852ee2ee713513a58de1e185a3..7fb6ab9e9561eed6880c14956bc1bad671f8e8d2 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
@@ -30,7 +30,7 @@ class Index extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
index fb0d48aacc43c37800cf9f4745a777909eb6e44d..28f7d43bec6008aa45e38ffc6d1898af7d4fd592 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
@@ -46,7 +46,7 @@ class Move extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         /**
          * New parent category identifier
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
index 150b0194664890a4de8f33bd33c82eaa9eddeb2e..5441e16587445ecfc52b593182bf099ac336d9f5 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
@@ -30,7 +30,7 @@ class RefreshPath extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $categoryId = (int)$this->getRequest()->getParam('id');
         if ($categoryId) {
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
index ac0b303f18d4d676f2ac418db1dd795d24cc3067..014bea2cfa3ee061ea4fbaf550c9236b11dc09b0 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
@@ -70,7 +70,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
index 94c8010cc39809e7383ca98384e3c019a93304b0..6fbed45cc7662c74bfaeae0b9441077bab35b0e0 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
@@ -38,7 +38,7 @@ class SuggestCategories extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
index 9acd075bc827602e5839bfbf30ba2f1a1e00ab3c..1eee483d716f6fbb954ad696ffcb36358dfe2d58 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
@@ -39,7 +39,7 @@ class Tree extends \Magento\Catalog\Controller\Adminhtml\Category
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeId = (int)$this->getRequest()->getParam('store');
         $categoryId = (int)$this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
index 329f786314fb2f972cdc769f08ef68305c0d469b..953daaa46074a944f9198070e677924b1ae4ee10 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
@@ -42,7 +42,7 @@ class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category\Widg
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $categoryId = (int)$this->getRequest()->getPost('id');
         if ($categoryId) {
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
index fa9b2ab95b233597c4bf350467063a83f33f3933..f65912621ce8956e4d8f6c11cfb9260f2f576421 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
@@ -32,7 +32,7 @@ class Chooser extends \Magento\Catalog\Controller\Adminhtml\Category\Widget
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
         $resultRaw = $this->resultRawFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
index 29f30ad573f032622b55758995f48b01d701e264..e83384f5f355f7def1785f4d0b8045b10e00b420 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
@@ -51,7 +51,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
         $this->attributeHelper->setProductIds($collection->getAllIds());
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
index 3661567d5fa0001cc9a0a051145f1c0b69e3f100..c77b65c71a2ee4d118325657c1aa05aa712f04ed 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
@@ -85,7 +85,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_validateProducts()) {
             return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['_current' => true]);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
index a7f2da5776206d6abe400f94c8b65cc852d9c7a6..1b3c6e2ad17a9d5af5279f83beaaaae8d4bcc124 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
@@ -40,7 +40,7 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attr
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = $this->_objectManager->create('Magento\Framework\DataObject');
         $response->setError(false);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
index 26fea5b4039fdcf5b10dc72f2bd17f9ef501ac3e..623c1d0bd3b83a9bdf12c866254271b35fc70054 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
@@ -31,7 +31,7 @@ class AddAttributeToTemplate extends \Magento\Catalog\Controller\Adminhtml\Produ
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $request = $this->getRequest();
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
index b865313f943f872423fdd77e15e6f5c96f8c3075..e8b34dde057e048a8366e0ddf170d0ba623042dd 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
@@ -14,7 +14,7 @@ class AlertsPriceGrid extends AbstractProductGrid
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
index dc4a3f14470112900cc8df672f757a0211c77bb8..e6324f21714528f9b28a59989307a61246063458 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
@@ -39,7 +39,7 @@ class AlertsStockGrid extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
index 6d444009f5a7730079598e257bf5eabeaa7484a4..d2bc262e1a80996bd8f1bfdf3b08877b8370d6f3 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
@@ -62,14 +62,14 @@ abstract class Attribute extends \Magento\Backend\App\Action
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(\Magento\Framework\App\RequestInterface $request)
+    public function execute(\Magento\Framework\App\RequestInterface $request)
     {
         $this->_entityTypeId = $this->_objectManager->create(
             'Magento\Eav\Model\Entity'
         )->setType(
             \Magento\Catalog\Model\Product::ENTITY
         )->getTypeId();
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
index aa99a78945e65f2e10b31ddfa1299b1fff2e5656..be13157399e319d8065d2734d664b6c6df2594f2 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
@@ -11,7 +11,7 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('attribute_id');
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
index bfe598b3d9b37de359ab4cf2a15d1e48bf766beb..14baeaa2461a946a5f2c1276bde87620ea5b1a74 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
@@ -12,7 +12,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
      * @return \Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('attribute_id');
         /** @var $model \Magento\Catalog\Model\ResourceModel\Eav\Attribute */
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
index bb264940f4af9f69397b950d77936565cf51fc8c..b2caa1c521966e2b797c06c485c5112e40a8988c 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->createActionPage();
         $resultPage->addContent(
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
index 08e6e33b32fba61c8dba20de58ce5aa5373aa360..97886d735b71a18923aacac9afb5101689de8f2b 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
@@ -34,7 +34,7 @@ class NewAction extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultForwardFactory->create()->forward('edit');
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
index 2d57b6148e5532fdd1fe15415c694c05452084f4..17bed1b247b9c62e2829b9f2a8c7306f1a7ffd05 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
@@ -86,7 +86,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
index bb870c3f8ef06db3a297831bf26eda8cdb758a14..7a529343b1faf1a3ea7af2218b4e20760f3e9bb5 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
@@ -44,7 +44,7 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         $response->setError(false);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
index 202f41cda59331eb1ef1ca4416f0d1b71e287073..f62dc494341e694bc9e02d337f3a898c70555849 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
@@ -32,7 +32,7 @@ class Categories extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         return $this->resultPageFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
index 298dd38b0655443b34b535ab0b36b076d266cac4..a39e81bcb5dbc8cacbb9db9813962801e3adc382 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
@@ -32,7 +32,7 @@ class Crosssell extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
index 7dd03b84c0993384c5d0e4dc39397e8df9b76b55..06213df4acd58c67431a85a2aa671ad505cce9cd 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
@@ -32,7 +32,7 @@ class CrosssellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
index cc5dde10f1a3960ba5c6726b15afd358661fe29c..23546bfe57dd2642a5b50d7cc3f519cc2656b7d6 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
@@ -45,7 +45,7 @@ class CustomOptions extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->registry->register('import_option_products', $this->getRequest()->getPost('products'));
         return $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Datafeeds/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Datafeeds/Index.php
index f51fb90425adb7534a92425af0df1a34515e1454..0abe6282eee29b470e4ee227f459b4a3a0a1c642 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Datafeeds/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Datafeeds/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Backend\App\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
index d335b898f71ce1b455608d81f85f186f9d7af435..fa68907d14c788ae7aa62a6f82978547fbd72bd6 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
@@ -35,7 +35,7 @@ class Duplicate extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
index 30e1299ca1749c93a6274425d0e2a3a1f3343637..123117c22a798670d307ac190b7d44ae93549d12 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
@@ -39,7 +39,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int) $this->getRequest()->getParam('id');
         $product = $this->productBuilder->build($this->getRequest());
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
index fb6511ec6bb0d0bf2bc2a9d36640ba6ba36aacff..6e41eed07bb5d4d27093f2cfbab9a1f734fb1452 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
@@ -38,7 +38,7 @@ class Upload extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $uploader = $this->_objectManager->create(
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
index fdda822206b73669f2de6d038a701a2386809160..a9536e615d0b5ae3d5375d95276969c01bbf9e50 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
@@ -32,7 +32,7 @@ class Grid extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultPageFactory->create();
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
index 0732fd041b9501e40e847edc5ec2de399a02713c..f489d581fe354809cee1890cc2dd6dc3d9e77045 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
@@ -39,7 +39,7 @@ class GridOnly extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Products'));
 
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Group/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Group/Save.php
index 9c4ba567e04538b0a6bf084c0e5e2cc2735a8644..810fa031ba9554c589f5972802ba6033c3d0ad8a 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Group/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Group/Save.php
@@ -19,7 +19,7 @@ class Save extends \Magento\Backend\App\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $model = $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute\Group');
 
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
index 2edf364aa668afb544a460dfa801071b0a3b9a0a..89051652951c2b7370a49f475a169f87713c47df 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
@@ -32,7 +32,7 @@ class Index extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
index 831fb79fc5f46e3318510609b21d7f1e91e7dc77..2140d25e25061a502814c286bb174ef856d2720a 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
@@ -46,7 +46,7 @@ class MassDelete extends \Magento\Catalog\Controller\Adminhtml\Product
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
         $productDeleted = 0;
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
index 04f37fda61f14339ecb128f17306e9953943519a..913a1be34b5137464dd3e7d16f2065815ed159fe 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
@@ -75,7 +75,7 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
         $productIds = $collection->getAllIds();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
index 47c42d49e3adfcd82016ff4a320cf492555b48fd..d22b64ee03e5ca1c4f7088376225775382f0b810 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
@@ -51,7 +51,7 @@ class NewAction extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->getParam('set')) {
             return $this->resultForwardFactory->create()->forward('noroute');
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
index 2fcd0dcf96126e4b6203a665480569323a4a37d0..3bd0b5eab8e60e02ad83cf5b93cb6b3dd9cc5991 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
@@ -32,7 +32,7 @@ class Options extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         return $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
index a2b2dbda990ec622394d0d0ddb67171339361c70..2958d8fb965b88574b0aee4d432f73c770da2c2c 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
@@ -13,7 +13,7 @@ class OptionsImportGrid extends AbstractProductGrid
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
index d503a79ff3a67c436ed7cdbb37c1b561791adeb5..98bc500a023251bfbe6e9444bc5e313cb6fc039e 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
@@ -31,7 +31,7 @@ class Related extends \Magento\Catalog\Controller\Adminhtml\Product
     /**
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
index f37bc324c56b2b6badd5ef21d23d712d529afe88..d09ce170e4c21204f88a6e7e62984cb983716f9b 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
@@ -53,7 +53,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeId = $this->getRequest()->getParam('store');
         $redirectBack = $this->getRequest()->getParam('back', false);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
index 7e4bee7a769130c5bee46b3ec708192811e79d7b..e90f47343d0d972a3a3a61a0f7a12032f83b04ce 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
@@ -30,7 +30,7 @@ class Add extends \Magento\Catalog\Controller\Adminhtml\Product\Set
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_setTypeId();
 
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
index 9585bce699f5faa9b579089f3fbbd8313344b346..eeaeb920af3c22159416b020a043f7880f77f090 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
@@ -30,7 +30,7 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Product\Set
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $setId = $this->getRequest()->getParam('id');
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
index 8f7dafbf28892ece98cc1c430d81d92f3ab536cf..e10b3391c2dd11631c3d15988c4ee4f270efa511 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
@@ -30,7 +30,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Set
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_setTypeId();
         $attributeSet = $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute\Set')
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
index 2e1e1a4b642f660595911445bc12a35777f82cf4..61da929908d3098fb223e9ded7bfae6436aeefdc 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
@@ -30,7 +30,7 @@ class Index extends \Magento\Catalog\Controller\Adminhtml\Product\Set
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_setTypeId();
 
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
index 480a079d53d7ee70d77f3f7f0c048a31d2cdaac6..5f36ab3bea0f0477927b276ebdb3fed167596dd1 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
@@ -57,7 +57,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
      * @return \Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $entityTypeId = $this->_getEntityTypeId();
         $hasError = false;
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
index d58fa4a600a89c61c47779a7ac75628876669b2b..13a7440a7a70dad166699efa988fa256a996449d 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
@@ -30,7 +30,7 @@ class SetGrid extends \Magento\Catalog\Controller\Adminhtml\Product\Set
     /**
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_setTypeId();
         return $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/ShowUpdateResult.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/ShowUpdateResult.php
index d7e4db8dbb7e57c408a913e4327866b66b1dafde..c5bda8da562a1eea741927a99073b237463e74a7 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/ShowUpdateResult.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/ShowUpdateResult.php
@@ -35,7 +35,7 @@ class ShowUpdateResult extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $layout = false;
         if ($this->_session->hasCompositeProductResult()
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributeSets.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributeSets.php
index 456a579c6191d9a284e0cf7f5f16a99d38e317d3..7eb906bfa89c25d8ccefdeb8a8d6851f8a4b6a71 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributeSets.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributeSets.php
@@ -38,7 +38,7 @@ class SuggestAttributeSets extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultJson = $this->resultJsonFactory->create();
         $resultJson->setData(
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
index 6b60c4f74810fc5cc445384205066ba752efe4a5..b5db6ac5e0797d74b3a46aa4b69cd6e0cf65c5b2 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
@@ -40,7 +40,7 @@ class SuggestAttributes extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultJson = $this->resultJsonFactory->create();
         $resultJson->setData(
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
index 4c11f14d9f998acee84841a889e574c7c07661e9..09ef399f3ce66e4fa871c8980238276ed04154a2 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
@@ -32,7 +32,7 @@ class Upsell extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
index 171a1e4694a9e8e75dffa1989d9b914be0938808..b4a6a42d94fe60a91313b3af886a0d6b68719e7c 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
@@ -32,7 +32,7 @@ class UpsellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->productBuilder->build($this->getRequest());
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
index 82e68cd1c943a729ca3517413fb0c3aaa3ac5f53..be1d2b5b962df9deb9e09c0aa03386e929cf5b30 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
@@ -72,7 +72,7 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         $response->setError(false);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
index 1c883ea7989d7278d7c9f95cf5375002642e2f4a..eeb41e0bea55b4df68693c3ad3efc034051f2c67 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
@@ -38,7 +38,7 @@ class Chooser extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $uniqId = $this->getRequest()->getParam('uniq_id');
         $massAction = $this->getRequest()->getParam('use_massaction', false);
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
index f0f0b5274a66745f3cd6ea50960b853a0697f59d..98daec96d7347662f7306e1e774d2c39b7f20c76 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
@@ -40,7 +40,7 @@ class Wysiwyg extends \Magento\Catalog\Controller\Adminhtml\Product
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $elementId = $this->getRequest()->getParam('element_id', md5(microtime()));
         $storeId = $this->getRequest()->getParam('store_id', 0);
diff --git a/app/code/Magento/Catalog/Controller/Category/View.php b/app/code/Magento/Catalog/Controller/Category/View.php
index b0684d90546f184c3e185c44d8d5e8e711be7f2f..bcdea75c74cb3f50537bb4d5d454b27b7bae52cc 100644
--- a/app/code/Magento/Catalog/Controller/Category/View.php
+++ b/app/code/Magento/Catalog/Controller/Category/View.php
@@ -150,7 +150,7 @@ class View extends \Magento\Framework\App\Action\Action
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_request->getParam(\Magento\Framework\App\ActionInterface::PARAM_NAME_URL_ENCODED)) {
             return $this->resultRedirectFactory->create()->setUrl($this->_redirect->getRedirectUrl());
diff --git a/app/code/Magento/Catalog/Controller/Index/Index.php b/app/code/Magento/Catalog/Controller/Index/Index.php
index 5ea3a57caf483b4ad09f26d56ec28602a7c292fd..d6890855f14f8873260d78c59a36ff7bd0264750 100644
--- a/app/code/Magento/Catalog/Controller/Index/Index.php
+++ b/app/code/Magento/Catalog/Controller/Index/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Framework\App\Action\Action
      *
      * @return $this
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         return $resultRedirect->setPath('/');
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
index 995f51e23ecb8ce7918455ef04cdec762905bec5..99dccd664dfbeed5e8c55c3ec54e381441fec55a 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
@@ -15,7 +15,7 @@ class Add extends \Magento\Catalog\Controller\Product\Compare
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php b/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
index 40525ddb90fbaca8d2f8e22b0d857295ca4fe76c..085013b86a4b6ef13b6c0681262c42a09828acb6 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
@@ -15,7 +15,7 @@ class Clear extends \Magento\Catalog\Controller\Product\Compare
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Catalog\Model\ResourceModel\Product\Compare\Item\Collection $items */
         $items = $this->_itemCollectionFactory->create();
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Index.php b/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
index a8e79afa1c047271497454f371253374fd356d3a..5808e737e5daafdbef45349b310f85748aed100b 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
@@ -71,7 +71,7 @@ class Index extends \Magento\Catalog\Controller\Product\Compare
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $items = $this->getRequest()->getParam('items');
 
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php b/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
index b710c3a066de0158d4393f425affcb2c1e1d928c..00db1446bdac81de69d2db4a4143796aa392bee9 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
@@ -15,7 +15,7 @@ class Remove extends \Magento\Catalog\Controller\Product\Compare
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int)$this->getRequest()->getParam('product');
         if ($productId) {
diff --git a/app/code/Magento/Catalog/Controller/Product/Gallery.php b/app/code/Magento/Catalog/Controller/Product/Gallery.php
index b4e9c7480ba1de468cf4eb08f11d8478d91eb1a1..32411c663db8d285f21f0f82d6fa225e778c7730 100644
--- a/app/code/Magento/Catalog/Controller/Product/Gallery.php
+++ b/app/code/Magento/Catalog/Controller/Product/Gallery.php
@@ -44,7 +44,7 @@ class Gallery extends \Magento\Catalog\Controller\Product
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = null;
         if (!$this->_initProduct()) {
diff --git a/app/code/Magento/Catalog/Controller/Product/View.php b/app/code/Magento/Catalog/Controller/Product/View.php
index aed317633da4bfb9bc0a8407fe23c1e899b02b1e..b50819ecb9861ed5da109657a98bcb822bfe5a68 100644
--- a/app/code/Magento/Catalog/Controller/Product/View.php
+++ b/app/code/Magento/Catalog/Controller/Product/View.php
@@ -69,7 +69,7 @@ class View extends \Magento\Catalog\Controller\Product
      *
      * @return \Magento\Framework\Controller\Result\Forward|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         // Get initial data from request
         $categoryId = (int) $this->getRequest()->getParam('category', false);
diff --git a/app/code/Magento/Catalog/Model/Attribute/Source/Scopes.php b/app/code/Magento/Catalog/Model/Attribute/Source/Scopes.php
index f471a47432063fc2e2dfe56031d97266a6fd01cd..62e02652527d2fdb3d4885d40ba9e38d050a6ea9 100644
--- a/app/code/Magento/Catalog/Model/Attribute/Source/Scopes.php
+++ b/app/code/Magento/Catalog/Model/Attribute/Source/Scopes.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Catalog\Model\Attribute\Source;
 
-use \Magento\Catalog\Model\ResourceModel\Eav\Attribute;
+use \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
 
 class Scopes implements \Magento\Framework\Data\OptionSourceInterface
 {
@@ -16,15 +16,15 @@ class Scopes implements \Magento\Framework\Data\OptionSourceInterface
     {
         return [
             [
-                'value' => Attribute::SCOPE_STORE,
+                'value' => ScopedAttributeInterface::SCOPE_STORE,
                 'label' => __('Store View'),
             ],
             [
-                'value' => Attribute::SCOPE_WEBSITE,
+                'value' => ScopedAttributeInterface::SCOPE_WEBSITE,
                 'label' => __('Web Site'),
             ],
             [
-                'value' => Attribute::SCOPE_GLOBAL,
+                'value' => ScopedAttributeInterface::SCOPE_GLOBAL,
                 'label' => __('Global'),
             ],
         ];
diff --git a/app/code/Magento/Catalog/Model/Config/Backend/Category.php b/app/code/Magento/Catalog/Model/Config/Backend/Category.php
index 9634b182bd4b25bb05a0be3af3b0cef28fcad5ab..306f334266fd52011bc03a569f8166a5276627cf 100644
--- a/app/code/Magento/Catalog/Model/Config/Backend/Category.php
+++ b/app/code/Magento/Catalog/Model/Config/Backend/Category.php
@@ -25,6 +25,7 @@ class Category extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Catalog\Model\Category $catalogCategory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -34,13 +35,14 @@ class Category extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Catalog\Model\Category $catalogCategory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_catalogCategory = $catalogCategory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -67,6 +69,6 @@ class Category extends \Magento\Framework\App\Config\Value
                 $this->_catalogCategory->setStoreId($storeId)->save();
             }
         }
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Catalog/Model/Config/CatalogClone/Media/Image.php b/app/code/Magento/Catalog/Model/Config/CatalogClone/Media/Image.php
index 2f0c8f4e2eefe51aeaff11820d53fb793265ea3e..7458441f437fc046742a7fc66f3229308f464332 100644
--- a/app/code/Magento/Catalog/Model/Config/CatalogClone/Media/Image.php
+++ b/app/code/Magento/Catalog/Model/Config/CatalogClone/Media/Image.php
@@ -30,6 +30,7 @@ class Image extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeCollectionFactory
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -40,6 +41,7 @@ class Image extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeCollectionFactory,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -48,7 +50,7 @@ class Image extends \Magento\Framework\App\Config\Value
     ) {
         $this->_attributeCollectionFactory = $attributeCollectionFactory;
         $this->_eavConfig = $eavConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Indexer/Category/Flat/System/Config/Mode.php b/app/code/Magento/Catalog/Model/Indexer/Category/Flat/System/Config/Mode.php
index e72004991e87503b23d9b565a534fcf00a72e4ca..69852a7afd101896d67956ba32f12c3e093c3747 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Category/Flat/System/Config/Mode.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Category/Flat/System/Config/Mode.php
@@ -20,6 +20,7 @@ class Mode extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry
      * @param \Magento\Indexer\Model\Indexer\State $indexerState
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -30,13 +31,14 @@ class Mode extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
         \Magento\Indexer\Model\Indexer\State $indexerState,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->indexerRegistry = $indexerRegistry;
         $this->indexerState = $indexerState;
     }
@@ -49,7 +51,7 @@ class Mode extends \Magento\Framework\App\Config\Value
     public function afterSave()
     {
         $this->_getResource()->addCommitCallback([$this, 'processValue']);
-        return $this;
+        return parent::afterSave();
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/System/Config/Mode.php b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/System/Config/Mode.php
index 1db9aae1325cc819a2639b53194bab135cf8552b..400e2d01c0dded3a9ecf027bf30ce1b02aafc575 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/System/Config/Mode.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/System/Config/Mode.php
@@ -24,6 +24,7 @@ class Mode extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor
      * @param \Magento\Indexer\Model\Indexer\State $indexerState
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -34,6 +35,7 @@ class Mode extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor,
         \Magento\Indexer\Model\Indexer\State $indexerState,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -42,7 +44,7 @@ class Mode extends \Magento\Framework\App\Config\Value
     ) {
         $this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;
         $this->indexerState = $indexerState;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -53,7 +55,7 @@ class Mode extends \Magento\Framework\App\Config\Value
     public function afterSave()
     {
         $this->_getResource()->addCommitCallback([$this, 'processValue']);
-        return $this;
+        return parent::afterSave();
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/System/Config/PriceScope.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/System/Config/PriceScope.php
index 148b5b7a99af73a355ec694df00a636156096fdf..3bb9265b3d6f65aef5bffbcefdd893f161d1d2db 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/System/Config/PriceScope.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/System/Config/PriceScope.php
@@ -17,6 +17,7 @@ class PriceScope extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -26,24 +27,25 @@ class PriceScope extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->indexerRegistry = $indexerRegistry;
     }
 
     /**
      * Set after commit callback
      *
-     * @return \Magento\Catalog\Model\Indexer\Product\Price\System\Config\PriceScope
+     * @return $this
      */
     public function afterSave()
     {
         $this->_getResource()->addCommitCallback([$this, 'processValue']);
-        return $this;
+        return parent::afterSave();
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Price.php b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Price.php
index ed6612507d290071d86c4cee485126edf4a8e7b9..9dc0dce6f518b43d23bd8a8d92e2baab20b15760 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Price.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Price.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Catalog\Model\Product\Attribute\Backend;
 
+use \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
+
 /**
  * Catalog product price attribute backend model
  *
@@ -91,9 +93,9 @@ class Price extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
     public function setScope($attribute)
     {
         if ($this->_helper->isPriceGlobal()) {
-            $attribute->setIsGlobal(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL);
+            $attribute->setIsGlobal(ScopedAttributeInterface::SCOPE_GLOBAL);
         } else {
-            $attribute->setIsGlobal(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE);
+            $attribute->setIsGlobal(ScopedAttributeInterface::SCOPE_WEBSITE);
         }
 
         return $this;
@@ -118,7 +120,7 @@ class Price extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
             return $this;
         }
 
-        if ($this->getAttribute()->getIsGlobal() == \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE) {
+        if ($this->getAttribute()->getIsGlobal() == ScopedAttributeInterface::SCOPE_WEBSITE) {
             $baseCurrency = $this->_config->getValue(
                 \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE,
                 'default'
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Attribute.php b/app/code/Magento/Catalog/Model/ResourceModel/Attribute.php
index dd522da5888643ed495a7c2e1039d828400cc04c..ec7bfafeee1dd3f01464ed24d41c2329737c2300 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Attribute.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Attribute.php
@@ -86,7 +86,7 @@ class Attribute extends \Magento\Eav\Model\ResourceModel\Entity\Attribute
 
         if ($object->isScopeGlobal() && isset(
             $origData['is_global']
-        ) && \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL != $origData['is_global']
+        ) && \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL != $origData['is_global']
         ) {
             $attributeStoreIds = array_keys($this->_storeManager->getStores());
             if (!empty($attributeStoreIds)) {
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
index 2f4d6769131bda05483460e194fbffa9b8be0083..cde304b004ac497e35502954291fda86a499533e 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
@@ -32,14 +32,8 @@ use Magento\Framework\Stdlib\DateTime\DateTimeFormatterInterface;
  * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
  */
 class Attribute extends \Magento\Eav\Model\Entity\Attribute implements
-    \Magento\Catalog\Api\Data\ProductAttributeInterface
+    \Magento\Catalog\Api\Data\ProductAttributeInterface, \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface
 {
-    const SCOPE_STORE = 0;
-
-    const SCOPE_GLOBAL = 1;
-
-    const SCOPE_WEBSITE = 2;
-
     const MODULE_NAME = 'Magento_Catalog';
 
     const ENTITY = 'catalog_eav_attribute';
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Setup/PropertyMapper.php b/app/code/Magento/Catalog/Model/ResourceModel/Setup/PropertyMapper.php
index b7d5bbb301efd0db69682ace00f57077fbf6dec6..2f2814b5affaaad086da30d27e26c1c654506483 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Setup/PropertyMapper.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Setup/PropertyMapper.php
@@ -26,7 +26,7 @@ class PropertyMapper extends PropertyMapperAbstract
             'is_global' => $this->_getValue(
                 $input,
                 'global',
-                \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL
+                \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL
             ),
             'is_visible' => $this->_getValue($input, 'visible', 1),
             'is_searchable' => $this->_getValue($input, 'searchable', 0),
diff --git a/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php b/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
index de1649851c6699987abb434a987843748b1f3e7d..2ff610190d43095a16b8ad5bd35217b6bedb2644 100644
--- a/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
+++ b/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
@@ -39,12 +39,13 @@ class Suffix extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
-     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\UrlRewrite\Helper\UrlRewrite $urlRewriteHelper
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
-     * @param \Magento\Framework\App\ResourceConnection $appResource
+     * @param ResourceConnection $appResource
      * @param \Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder
+     * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
+     * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
      * @param array $data
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -52,6 +53,7 @@ class Suffix extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\UrlRewrite\Helper\UrlRewrite $urlRewriteHelper,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Framework\App\ResourceConnection $appResource,
@@ -60,7 +62,7 @@ class Suffix extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->urlRewriteHelper = $urlRewriteHelper;
         $this->connection = $appResource->getConnection();
         $this->urlFinder = $urlFinder;
diff --git a/app/code/Magento/Catalog/Setup/CategorySetup.php b/app/code/Magento/Catalog/Setup/CategorySetup.php
index 0efc0ac08375a2ba5b35e5d88601d75e729ec1f4..c0dddb276cb1dbc23de18432d5d943a08485502a 100644
--- a/app/code/Magento/Catalog/Setup/CategorySetup.php
+++ b/app/code/Magento/Catalog/Setup/CategorySetup.php
@@ -78,7 +78,7 @@ class CategorySetup extends EavSetup
                         'label' => 'Name',
                         'input' => 'text',
                         'sort_order' => 1,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'is_active' => [
@@ -87,7 +87,7 @@ class CategorySetup extends EavSetup
                         'input' => 'select',
                         'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Boolean',
                         'sort_order' => 2,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'description' => [
@@ -96,7 +96,7 @@ class CategorySetup extends EavSetup
                         'input' => 'textarea',
                         'required' => false,
                         'sort_order' => 4,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'wysiwyg_enabled' => true,
                         'is_html_allowed_on_front' => true,
                         'group' => 'General Information',
@@ -108,7 +108,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Category\Attribute\Backend\Image',
                         'required' => false,
                         'sort_order' => 5,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'meta_title' => [
@@ -117,7 +117,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'required' => false,
                         'sort_order' => 6,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'meta_keywords' => [
@@ -126,7 +126,7 @@ class CategorySetup extends EavSetup
                         'input' => 'textarea',
                         'required' => false,
                         'sort_order' => 7,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'meta_description' => [
@@ -135,7 +135,7 @@ class CategorySetup extends EavSetup
                         'input' => 'textarea',
                         'required' => false,
                         'sort_order' => 8,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'display_mode' => [
@@ -145,7 +145,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Catalog\Model\Category\Attribute\Source\Mode',
                         'required' => false,
                         'sort_order' => 10,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Display Settings',
                     ],
                     'landing_page' => [
@@ -155,7 +155,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Catalog\Model\Category\Attribute\Source\Page',
                         'required' => false,
                         'sort_order' => 20,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Display Settings',
                     ],
                     'is_anchor' => [
@@ -211,7 +211,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Theme\Model\Theme\Source\Theme',
                         'required' => false,
                         'sort_order' => 10,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'custom_design_from' => [
@@ -221,7 +221,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Startdate',
                         'required' => false,
                         'sort_order' => 30,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'custom_design_to' => [
@@ -231,7 +231,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\Datetime',
                         'required' => false,
                         'sort_order' => 40,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'page_layout' => [
@@ -241,7 +241,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Catalog\Model\Category\Attribute\Source\Layout',
                         'required' => false,
                         'sort_order' => 50,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'custom_layout_update' => [
@@ -251,7 +251,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Customlayoutupdate',
                         'required' => false,
                         'sort_order' => 60,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'level' => [
@@ -278,7 +278,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Category\Attribute\Backend\Sortby',
                         'sort_order' => 40,
                         'input_renderer' => 'Magento\Catalog\Block\Adminhtml\Category\Helper\Sortby\Available',
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Display Settings',
                     ],
                     'default_sort_by' => [
@@ -289,7 +289,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Category\Attribute\Backend\Sortby',
                         'sort_order' => 50,
                         'input_renderer' => 'Magento\Catalog\Block\Adminhtml\Category\Helper\Sortby\DefaultSortby',
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Display Settings',
                     ],
                     'include_in_menu' => [
@@ -299,7 +299,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Boolean',
                         'default' => '1',
                         'sort_order' => 10,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'General Information',
                     ],
                     'custom_use_parent_settings' => [
@@ -309,7 +309,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Boolean',
                         'required' => false,
                         'sort_order' => 5,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'custom_apply_to_products' => [
@@ -319,7 +319,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Eav\Model\Entity\Attribute\Source\Boolean',
                         'required' => false,
                         'sort_order' => 6,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Custom Design',
                     ],
                     'filter_price_range' => [
@@ -329,7 +329,7 @@ class CategorySetup extends EavSetup
                         'required' => false,
                         'sort_order' => 51,
                         'input_renderer' => 'Magento\Catalog\Block\Adminhtml\Category\Helper\Pricestep',
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Display Settings',
                     ],
                 ],
@@ -347,7 +347,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'frontend_class' => 'validate-length maximum-length-255',
                         'sort_order' => 1,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'searchable' => true,
                         'visible_in_advanced_search' => true,
                         'used_in_product_listing' => true,
@@ -370,7 +370,7 @@ class CategorySetup extends EavSetup
                         'label' => 'Description',
                         'input' => 'textarea',
                         'sort_order' => 3,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'searchable' => true,
                         'comparable' => true,
                         'wysiwyg_enabled' => true,
@@ -382,7 +382,7 @@ class CategorySetup extends EavSetup
                         'label' => 'Short Description',
                         'input' => 'textarea',
                         'sort_order' => 4,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'searchable' => true,
                         'comparable' => true,
                         'wysiwyg_enabled' => true,
@@ -399,7 +399,7 @@ class CategorySetup extends EavSetup
                         'input' => 'price',
                         'backend' => 'Magento\Catalog\Model\Product\Attribute\Backend\Price',
                         'sort_order' => 1,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'searchable' => true,
                         'filterable' => true,
                         'visible_in_advanced_search' => true,
@@ -415,7 +415,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Product\Attribute\Backend\Price',
                         'required' => false,
                         'sort_order' => 3,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'used_in_product_listing' => true,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
@@ -430,7 +430,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Startdate',
                         'required' => false,
                         'sort_order' => 4,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'used_in_product_listing' => true,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
@@ -445,7 +445,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\Datetime',
                         'required' => false,
                         'sort_order' => 5,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'used_in_product_listing' => true,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
@@ -461,7 +461,7 @@ class CategorySetup extends EavSetup
                         'required' => false,
                         'user_defined' => true,
                         'sort_order' => 6,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
                         'is_used_in_grid' => true,
@@ -501,7 +501,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'required' => false,
                         'sort_order' => 20,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Meta Information',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -513,7 +513,7 @@ class CategorySetup extends EavSetup
                         'input' => 'textarea',
                         'required' => false,
                         'sort_order' => 30,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Meta Information',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -527,7 +527,7 @@ class CategorySetup extends EavSetup
                         'note' => 'Maximum 255 chars',
                         'class' => 'validate-length maximum-length-255',
                         'sort_order' => 40,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Meta Information',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -541,7 +541,7 @@ class CategorySetup extends EavSetup
                         'input_renderer' => 'Magento\Catalog\Block\Adminhtml\Product\Helper\Form\BaseImage',
                         'required' => false,
                         'sort_order' => 0,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'used_in_product_listing' => true,
                         'group' => 'General',
                     ],
@@ -552,7 +552,7 @@ class CategorySetup extends EavSetup
                         'frontend' => 'Magento\Catalog\Model\Product\Attribute\Frontend\Image',
                         'required' => false,
                         'sort_order' => 2,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'used_in_product_listing' => true,
                         'group' => 'Images',
                     ],
@@ -563,7 +563,7 @@ class CategorySetup extends EavSetup
                         'frontend' => 'Magento\Catalog\Model\Product\Attribute\Frontend\Image',
                         'required' => false,
                         'sort_order' => 3,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'used_in_product_listing' => true,
                         'group' => 'Images',
                     ],
@@ -584,7 +584,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Product\Attribute\Backend\Tierprice',
                         'required' => false,
                         'sort_order' => 7,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
                     ],
@@ -610,7 +610,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Startdate',
                         'required' => false,
                         'sort_order' => 7,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'used_in_product_listing' => true,
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -623,7 +623,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\Datetime',
                         'required' => false,
                         'sort_order' => 8,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'used_in_product_listing' => true,
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -643,7 +643,7 @@ class CategorySetup extends EavSetup
                         'input' => 'select',
                         'source' => 'Magento\Catalog\Model\Product\Attribute\Source\Status',
                         'sort_order' => 9,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'searchable' => true,
                         'used_in_product_listing' => true,
                     ],
@@ -653,7 +653,7 @@ class CategorySetup extends EavSetup
                         'input' => 'price',
                         'required' => false,
                         'sort_order' => 8,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'visible' => false,
                         'apply_to' => 'simple,virtual',
                         'group' => 'Prices',
@@ -665,7 +665,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Catalog\Model\Product\Visibility',
                         'default' => '4',
                         'sort_order' => 12,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                     ],
                     'custom_design' => [
                         'type' => 'varchar',
@@ -674,7 +674,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Theme\Model\Theme\Source\Theme',
                         'required' => false,
                         'sort_order' => 1,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -687,7 +687,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Startdate',
                         'required' => false,
                         'sort_order' => 2,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -700,7 +700,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\Datetime',
                         'required' => false,
                         'sort_order' => 3,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -713,7 +713,7 @@ class CategorySetup extends EavSetup
                         'backend' => 'Magento\Catalog\Model\Attribute\Backend\Customlayoutupdate',
                         'required' => false,
                         'sort_order' => 4,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                     ],
                     'page_layout' => [
@@ -723,7 +723,7 @@ class CategorySetup extends EavSetup
                         'source' => 'Magento\Catalog\Model\Product\Attribute\Source\Layout',
                         'required' => false,
                         'sort_order' => 5,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                         'is_used_in_grid' => true,
                         'is_visible_in_grid' => false,
@@ -732,7 +732,7 @@ class CategorySetup extends EavSetup
                     'category_ids' => [
                         'type' => 'static',
                         'label' => 'Categories',
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                         'backend' => 'Magento\Catalog\Model\Product\Attribute\Backend\Category',
                         'input_renderer' => 'Magento\Catalog\Block\Adminhtml\Product\Helper\Form\Category',
                         'required' => false,
@@ -748,7 +748,7 @@ class CategorySetup extends EavSetup
                         'required' => false,
                         'default' => 'container2',
                         'sort_order' => 6,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'group' => 'Design',
                     ],
                     'required_options' => [
@@ -772,7 +772,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'required' => false,
                         'sort_order' => 16,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'visible' => false,
                         'used_in_product_listing' => true,
                     ],
@@ -782,7 +782,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'required' => false,
                         'sort_order' => 17,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'visible' => false,
                         'used_in_product_listing' => true,
                     ],
@@ -792,7 +792,7 @@ class CategorySetup extends EavSetup
                         'input' => 'text',
                         'required' => false,
                         'sort_order' => 18,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                         'visible' => false,
                         'used_in_product_listing' => true,
                     ],
@@ -816,7 +816,7 @@ class CategorySetup extends EavSetup
                         'input' => 'select',
                         'source' => 'Magento\Catalog\Model\Product\Attribute\Source\Countryofmanufacture',
                         'required' => false,
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                         'visible' => true,
                         'user_defined' => false,
                         'searchable' => false,
@@ -837,8 +837,8 @@ class CategorySetup extends EavSetup
                         'label' => 'Quantity',
                         'input' => 'select',
                         'input_renderer' => 'Magento\CatalogInventory\Block\Adminhtml\Form\Field\Stock',
-                        'source' => 'Magento\\CatalogInventory\\Model\\Source\\Stock',
-                        'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                        'source' => 'Magento\CatalogInventory\Model\Source\Stock',
+                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                         'default' => \Magento\CatalogInventory\Model\Stock::STOCK_IN_STOCK,
                         'user_defined' => false,
                         'visible' => true,
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/DeleteTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/DeleteTest.php
index bec5548f8bbc374a6b7631d984f6517da430bcbc..203f49495c8cd9f4b3a9bf0b7e9c4cd25eccbcb7 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/DeleteTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/DeleteTest.php
@@ -122,7 +122,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('catalog/*/', ['_current' => true, 'id' => null]);
         $this->categoryRepository->expects($this->never())->method('get');
 
-        $this->unit->execute();
+        $this->unit->executeInternal();
     }
 
     public function testDelete()
@@ -138,6 +138,6 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
         $this->resultRedirect->expects($this->once())->method('setPath')
             ->with('catalog/*/', ['_current' => true, 'id' => $parentId]);
 
-        $this->unit->execute();
+        $this->unit->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
index 09cad210ad80cf1e510c7057799c5210fed0e5fe..b4e61882ee51d5bf04c04daa7f3d9cdda5c0db7c 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
@@ -550,7 +550,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             )
             ->will($this->returnValue('result-execute'));
 
-        $this->assertEquals('result-execute', $this->save->execute());
+        $this->assertEquals('result-execute', $this->save->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
index 26b7598e03b0f7609ea78634148aa01d4a227799..e1ae3110fed8d4ae979dce898990481481f4ae52 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
@@ -141,6 +141,6 @@ class CategoriesJsonTest extends \PHPUnit_Framework_TestCase
         $testHtml = '<div>Some test html</div>';
         $this->chooserBlockMock->expects($this->once())->method('getTreeJson')->will($this->returnValue($testHtml));
         $this->resultJson->expects($this->once())->method('setJsonData')->with($testHtml)->willReturnSelf();
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/ChooserTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/ChooserTest.php
index f61c31a66208bf1f64d2a55bd6ec1358baceec31..ec55fc8616193b0d856a4dcdcad327a7b9c01e85 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/ChooserTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Widget/ChooserTest.php
@@ -123,6 +123,6 @@ class ChooserTest extends \PHPUnit_Framework_TestCase
         $testHtml = '<div>Some test html</div>';
         $this->chooserBlockMock->expects($this->once())->method('toHtml')->will($this->returnValue($testHtml));
         $this->resultRaw->expects($this->once())->method('setContents')->with($testHtml);
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
index b83afa0e6361f9fbad7576e272ebfb75477391f7..db88d451374f8b30979c23f80e1fe65f922060c9 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
@@ -274,6 +274,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->never())->method('addError');
         $this->messageManager->expects($this->never())->method('addException');
 
-        $this->object->execute();
+        $this->object->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Attribute/EditTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Attribute/EditTest.php
index f8cf08f5474944f81af73ecf0565e9cc6672e9e9..480f84e43b8b62e5153bacc8b2e8537aab7a206c 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Attribute/EditTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Attribute/EditTest.php
@@ -199,7 +199,7 @@ class EditTest extends \PHPUnit_Framework_TestCase
 
         $this->blockTemplate->expects($this->any())->method('setIsPopup')->willReturnSelf();
 
-        $this->assertSame($this->resultPage, $this->editController->execute());
+        $this->assertSame($this->resultPage, $this->editController->executeInternal());
     }
 
     public function testExecuteNoPopup()
@@ -250,6 +250,6 @@ class EditTest extends \PHPUnit_Framework_TestCase
 
         $this->blockTemplate->expects($this->any())->method('setIsPopup')->willReturnSelf();
 
-        $this->assertSame($this->resultPage, $this->editController->execute());
+        $this->assertSame($this->resultPage, $this->editController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php
index 47dd99f5ce0230e7cbb8d9598b7381ff4d0da820..9a66cfdd37ec32f85e6ef8b7d80828cfddd6e766 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php
@@ -80,6 +80,6 @@ class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Pro
     public function testMassStatusAction()
     {
         $this->priceProcessor->expects($this->once())->method('reindexList');
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/NewActionTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/NewActionTest.php
index 215be1b4d16dab3f97d5135ffd6f6729d4c81a48..8dd5602000f859be53207a26963ef55d38b57d23 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/NewActionTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/NewActionTest.php
@@ -76,7 +76,7 @@ class NewActionTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Prod
         $this->action->getRequest()->expects($this->any())->method('getParam')->willReturn(true);
         $this->action->getRequest()->expects($this->any())->method('getFullActionName')
             ->willReturn('catalog_product_new');
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testExecuteObtainsProductDataFromSession()
@@ -90,6 +90,6 @@ class NewActionTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Prod
 
         $this->product->expects($this->once())->method('addData')->with(['name' => 'test-name', 'stock_data' => null]);
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/SaveTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/SaveTest.php
index 17a99b3ab8f5210ca601190541b362d510372123..4a9d892060a27c2bc116738abfcc86e882687ad3 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/SaveTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/SaveTest.php
@@ -120,7 +120,7 @@ class SaveTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\ProductTe
         $this->session->expects($this->once())->method('setProductData')->with($productData);
         $this->resultRedirect->expects($this->once())->method('setPath')->with('catalog/*/new');
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ShowUpdateResultTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ShowUpdateResultTest.php
index c9209c3f0a793492697d6e2962d1bbd30f8e23dc..e5c1e4f425f4a1dbc2fdaa2274589384e22d93cc 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ShowUpdateResultTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ShowUpdateResultTest.php
@@ -146,6 +146,6 @@ class ShowUpdateResultTest extends \PHPUnit_Framework_TestCase
 
         /** @var \Magento\Catalog\Controller\Adminhtml\Product\ShowUpdateResult $controller */
         $controller = new ShowUpdateResult($context, $productBuilder, $productCompositeHelper);
-        $controller->execute();
+        $controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ValidateTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ValidateTest.php
index 9c58d09dfe4434cef1a398214de2a3fb6082dc06..709cd8db94148761a91e2f82ed9ade547344b542 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ValidateTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/ValidateTest.php
@@ -132,7 +132,7 @@ class ValidateTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Produ
         $this->request->expects($this->any())->method('getPost')->willReturnMap([['set', null, 9]]);
         $this->product->expects($this->once())->method('setAttributeSetId')->with(9);
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testAttributeSetIsObtainedFromGetWhenThereIsNoOneInPost()
@@ -141,6 +141,6 @@ class ValidateTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Produ
         $this->request->expects($this->any())->method('getPost')->willReturnMap([['set', null, null]]);
         $this->product->expects($this->once())->method('setAttributeSetId')->with(4);
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Category/ViewTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Category/ViewTest.php
index 735c13b0483115a6013d9e6a45eff449c58747c7..eacdcc133285311e11860294119a8942c6e8821c 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Category/ViewTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Category/ViewTest.php
@@ -197,6 +197,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->catalogDesign->expects($this->any())->method('getDesignSettings')->will($this->returnValue($settings));
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Product/Compare/IndexTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Product/Compare/IndexTest.php
index 134776df35391e9a3a9bcc466d382dc438165f87..da0c0c7bea7b15372ba22e1b3c4c8e515e469664 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Product/Compare/IndexTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Product/Compare/IndexTest.php
@@ -154,7 +154,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
         $this->listCompareMock->expects($this->never())->method('addProducts');
         $this->redirectFactoryMock->expects($this->never())->method('create');
-        $this->index->execute();
+        $this->index->executeInternal();
     }
 
     public function testExecuteWithItems()
@@ -180,6 +180,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->redirectFactoryMock->expects($this->once())
             ->method('create')
             ->willReturn($redirect);
-        $this->index->execute();
+        $this->index->executeInternal();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/ReaderTest.php b/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/ReaderTest.php
index 3121a3036b9206ee95938e1c6ce7dca9e61ea27f..eceaee7d0dc29820609f4dffbf50d07fd09e31e4 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/ReaderTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/ReaderTest.php
@@ -73,7 +73,9 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         $this->_schemaLocator = new \Magento\Catalog\Model\Attribute\Config\SchemaLocator($moduleReader);
 
         $this->_validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $this->_validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $this->_validationState->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_model = new \Magento\Catalog\Model\Attribute\Config\Reader(
             $this->_fileResolverMock,
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/XsdTest.php b/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/XsdTest.php
index 033cd5038928fa41488ae0838cda7896ab01efee..da8c9b003331ff48b9b8018e6df3e290a0fefc2d 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/XsdTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/Attribute/Config/XsdTest.php
@@ -27,7 +27,10 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     public function testExemplarXml($fixtureXml, array $expectedErrors)
     {
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, '%message%');
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, '%message%');
         $actualResult = $dom->validate($this->_schemaFile, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Eav/AttributeTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Eav/AttributeTest.php
index ab8d0328ca6091522c1180ee7f3533936962a3ad..38e97bbc1087700505cc54efc3501074a5c1d6d5 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Eav/AttributeTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Eav/AttributeTest.php
@@ -8,8 +8,6 @@
 
 namespace Magento\Catalog\Test\Unit\Model\ResourceModel\Eav;
 
-use \Magento\Catalog\Model\ResourceModel\Eav\Attribute;
-
 class AttributeTest extends \PHPUnit_Framework_TestCase
 {
     /**
@@ -131,9 +129,9 @@ class AttributeTest extends \PHPUnit_Framework_TestCase
     {
         $this->_processor->expects($this->once())->method('markIndexerAsInvalid');
 
-        $this->_model->setOrigData('is_global', \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE);
+        $this->_model->setOrigData('is_global', \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE);
         $this->_model->setOrigData('used_in_product_listing', 1);
-        $this->_model->setIsGlobal(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL);
+        $this->_model->setIsGlobal(\Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL);
         $this->_model->afterSave();
     }
 
@@ -172,7 +170,7 @@ class AttributeTest extends \PHPUnit_Framework_TestCase
                 'indexerEavProcessor' => $this->_eavProcessor,
                 'resource' => $this->resourceMock,
                 'data' => [
-                    'is_global' => Attribute::SCOPE_GLOBAL
+                    'is_global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL
                 ]
             ]
         );
@@ -190,7 +188,7 @@ class AttributeTest extends \PHPUnit_Framework_TestCase
                 'indexerEavProcessor' => $this->_eavProcessor,
                 'resource' => $this->resourceMock,
                 'data' => [
-                    'is_global' => Attribute::SCOPE_WEBSITE
+                    'is_global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE
                 ]
             ]
         );
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/product/product.css b/app/code/Magento/Catalog/view/adminhtml/web/product/product.css
index 153a6d488fee30b287ea2540d0c63a61d6180ee2..620c87f55b94daa11e4ad9d2abfec7dd6eb7617d 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/product/product.css
+++ b/app/code/Magento/Catalog/view/adminhtml/web/product/product.css
@@ -207,11 +207,13 @@
 }
 
 /* action in fieldset wrapper */
-.admin__scope-old #group-fields-product-details-wrapper .attribute-selector {
+.admin__scope-old .admin__collapsible-block-wrapper .attribute-selector {
+    height: 0;
     visibility: hidden;
 }
 
-.admin__scope-old #group-fields-product-details-wrapper.opened .attribute-selector {
+.admin__scope-old .admin__collapsible-block-wrapper.opened .attribute-selector {
+    height: auto;
     visibility: visible;
 }
 
diff --git a/app/code/Magento/CatalogImportExport/Model/Export/Product.php b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
index 5ba8ed055cd25afb032289d36d94856909e3ff07..30451fbbf94e7e0ed0bfb604bcf7ecda7f5efba9 100644
--- a/app/code/Magento/CatalogImportExport/Model/Export/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\CatalogImportExport\Model\Export;
 
+use Magento\ImportExport\Model\Import;
 use \Magento\Store\Model\Store;
 use \Magento\CatalogImportExport\Model\Import\Product as ImportProduct;
 
@@ -638,7 +639,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
             }
             $categories[] = $categoryPath;
         }
-        $dataRow[self::COL_CATEGORY] = implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $categories);
+        $dataRow[self::COL_CATEGORY] = implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $categories);
         unset($rowCategories[$productId]);
 
         return true;
@@ -672,7 +673,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                     self::COL_ATTR_SET,
                     self::COL_TYPE,
                     self::COL_CATEGORY,
-                    '_product_websites',
+                    self::COL_PRODUCT_WEBSITES,
                 ],
                 $this->_getExportMainAttrCodes(),
                 [self::COL_ADDITIONAL_ATTRIBUTES],
@@ -683,7 +684,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                     'crosssell_skus',
                     'upsell_skus',
                 ],
-                ['additional_images', 'additional_image_labels']
+                ['additional_images', 'additional_image_labels', 'hide_from_product_page']
             );
             // have we merge custom options columns
             if ($customOptionsData) {
@@ -901,7 +902,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
 
                 if (!empty($additionalAttributes)) {
                     $data[$itemId][$storeId][self::COL_ADDITIONAL_ATTRIBUTES] =
-                        implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalAttributes);
+                        implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalAttributes);
                 } else {
                     unset($data[$itemId][$storeId][self::COL_ADDITIONAL_ATTRIBUTES]);
                 }
@@ -981,7 +982,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
     protected function collectMultiselectValues($item, $attrCode, $storeId)
     {
         $attrValue = $item->getData($attrCode);
-        $optionIds = explode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $attrValue);
+        $optionIds = explode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $attrValue);
         $options = array_intersect_key(
             $this->_attributeValues[$attrCode],
             array_flip($optionIds)
@@ -1040,21 +1041,28 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                 foreach ($multiRawData['rowWebsites'][$productId] as $productWebsite) {
                     $websiteCodes[] = $this->_websiteIdToCode[$productWebsite];
                 }
-                $dataRow['_product_websites'] =
-                    implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $websiteCodes);
+                $dataRow[self::COL_PRODUCT_WEBSITES] =
+                    implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $websiteCodes);
                 $multiRawData['rowWebsites'][$productId] = [];
             }
             if (!empty($multiRawData['mediaGalery'][$productId])) {
                 $additionalImages = [];
                 $additionalImageLabels = [];
+                $additionalImageIsDisabled = [];
                 foreach ($multiRawData['mediaGalery'][$productId] as $mediaItem) {
                     $additionalImages[] = $mediaItem['_media_image'];
                     $additionalImageLabels[] = $mediaItem['_media_label'];
+
+                    if ($mediaItem['_media_is_disabled'] == true) {
+                        $additionalImageIsDisabled[] = $mediaItem['_media_image'];
+                    }
                 }
                 $dataRow['additional_images'] =
-                    implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImages);
+                    implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImages);
                 $dataRow['additional_image_labels'] =
-                    implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImageLabels);
+                    implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImageLabels);
+                $dataRow['hide_from_product_page'] =
+                    implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImageIsDisabled);
                 $multiRawData['mediaGalery'][$productId] = [];
             }
             foreach ($this->_linkTypeProvider->getLinkTypes() as $linkTypeName => $linkId) {
@@ -1074,7 +1082,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                     $multiRawData['linksRows'][$productId][$linkId] = [];
                     asort($associations);
                     $dataRow[$colPrefix . 'skus'] =
-                        implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, array_keys($associations));
+                        implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, array_keys($associations));
                 }
             }
             $dataRow = $this->rowCustomizer->addData($dataRow, $productId);
@@ -1085,7 +1093,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
             foreach (array_keys($this->collectedMultiselectsData[$storeId][$productId]) as $attrKey) {
                 if (!empty($this->collectedMultiselectsData[$storeId][$productId][$attrKey])) {
                     $dataRow[$attrKey] = implode(
-                        ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
+                        Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
                         $this->collectedMultiselectsData[$storeId][$productId][$attrKey]
                     );
                 }
@@ -1161,7 +1169,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
             $result[] = $key . ImportProduct::PAIR_NAME_VALUE_SEPARATOR . $value;
         }
 
-        return implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $result);
+        return implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $result);
     }
 
     /**
diff --git a/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizer/Composite.php b/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizer/Composite.php
index 1997d39b47efcb9b81c712a22180ab86d97d84a0..ab96bf9f3545f53accd86477dffe605b1cd0814a 100644
--- a/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizer/Composite.php
+++ b/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizer/Composite.php
@@ -34,7 +34,7 @@ class Composite implements RowCustomizerInterface
      * Prepare data for export
      *
      * @param mixed $collection
-     * @param int $productIds
+     * @param int[] $productIds
      * @return mixed|void
      */
     public function prepareData($collection, $productIds)
diff --git a/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizerInterface.php b/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizerInterface.php
index 6723dbc24afe1d86083ad3a759e359c309c956f8..240284ed32018edae5d3e653ada920d2a0523cb2 100644
--- a/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizerInterface.php
+++ b/app/code/Magento/CatalogImportExport/Model/Export/RowCustomizerInterface.php
@@ -14,7 +14,7 @@ interface RowCustomizerInterface
      * Prepare data for export
      *
      * @param mixed $collection
-     * @param int $productIds
+     * @param int[] $productIds
      * @return mixed
      */
     public function prepareData($collection, $productIds);
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
index 24475736833f8cbcbda2528614e5f3d3573b2e53..066e0cf166ee184f43dbea1d6125c1a3393a73bf 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
@@ -13,6 +13,7 @@ use Magento\CatalogImportExport\Model\Import\Product\RowValidatorInterface as Va
 use Magento\Framework\Model\ResourceModel\Db\TransactionManagerInterface;
 use Magento\Framework\Model\ResourceModel\Db\ObjectRelationProcessor;
 use Magento\Framework\Stdlib\DateTime;
+use Magento\ImportExport\Model\Import;
 use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError;
 use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface;
 
@@ -36,11 +37,6 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
      */
     const ATTRIBUTE_DELETE_BUNCH = 1000;
 
-    /**
-     * default delimiter for several values in one cell
-     */
-    const DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR = ',';
-
     /**
      * Pseudo multi line separator in one cell.
      *
@@ -228,7 +224,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         ValidatorInterface::ERROR_SUPER_PRODUCTS_SKU_NOT_FOUND => 'Product with specified super products SKU not found',
         ValidatorInterface::ERROR_MEDIA_DATA_INCOMPLETE => 'Media data is incomplete',
         ValidatorInterface::ERROR_EXCEEDED_MAX_LENGTH => 'Attribute %s exceeded max length',
-        ValidatorInterface::ERROR_INVALID_ATTRIBUTE_TYPE => 'Value for \'%s\' attribute contains incorrect value, acceptable values are in %s format',
+        ValidatorInterface::ERROR_INVALID_ATTRIBUTE_TYPE => 'Value for \'%s\' attribute contains incorrect value',
         ValidatorInterface::ERROR_ABSENT_REQUIRED_ATTRIBUTE => 'Attribute %s is required',
         ValidatorInterface::ERROR_INVALID_ATTRIBUTE_OPTION => 'Value for \'%s\' attribute contains incorrect value, see acceptable values on settings specified for Admin',
         ValidatorInterface::ERROR_DUPLICATE_UNIQUE_ATTRIBUTE => 'Duplicated unique attribute',
@@ -247,12 +243,11 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     protected $_fieldsMap = [
         'image' => 'base_image',
         'image_label' => "base_image_label",
-        'image' => 'base_image',
-        'image_label' => 'base_image_label',
         'thumbnail' => 'thumbnail_image',
         'thumbnail_label' => 'thumbnail_image_label',
         self::COL_MEDIA_IMAGE => 'additional_images',
         '_media_image_label' => 'additional_image_labels',
+        '_media_is_disabled' => 'hide_from_product_page',
         Product::COL_STORE => 'store_view_code',
         Product::COL_ATTR_SET => 'attribute_set_code',
         Product::COL_TYPE => 'product_type',
@@ -332,7 +327,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         self::COL_MEDIA_IMAGE,
         '_media_label',
         '_media_position',
-        '_media_is_disabled',
+        '_media_is_disabled'
     ];
 
     /**
@@ -711,26 +706,26 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
-     * Retrieve instance of product custom options import entity
      *
-     * @return \Magento\CatalogImportExport\Model\Import\Product\Option
+     * Multiple value separator getter.
+     * @return string
      */
-    public function getOptionEntity()
+    public function getMultipleValueSeparator()
     {
-        return $this->_optionEntity;
+        if (!empty($this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR])) {
+            return $this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR];
+        }
+        return Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR;
     }
 
     /**
-     * Multiple value separator getter.
+     * Retrieve instance of product custom options import entity
      *
-     * @return string
+     * @return \Magento\CatalogImportExport\Model\Import\Product\Option
      */
-    public function getMultipleValueSeparator()
+    public function getOptionEntity()
     {
-        if (!empty($this->_parameters[\Magento\ImportExport\Model\Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR])) {
-            return $this->_parameters[\Magento\ImportExport\Model\Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR];
-        }
-        return self::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR;
+        return $this->_optionEntity;
     }
 
     /**
@@ -781,7 +776,10 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
      */
     public function deleteProductsForReplacement()
     {
-        $this->setParameters(array('behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_DELETE));
+        $this->setParameters(array_merge(
+            $this->getParameters(),
+            ['behavior' => Import::BEHAVIOR_DELETE]
+        ));
         $this->_deleteProducts();
 
         return $this;
@@ -837,9 +835,9 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     protected function _importData()
     {
         $this->_validatedRows = null;
-        if (\Magento\ImportExport\Model\Import::BEHAVIOR_DELETE == $this->getBehavior()) {
+        if (Import::BEHAVIOR_DELETE == $this->getBehavior()) {
             $this->_deleteProducts();
-        } elseif (\Magento\ImportExport\Model\Import::BEHAVIOR_REPLACE == $this->getBehavior()) {
+        } elseif (Import::BEHAVIOR_REPLACE == $this->getBehavior()) {
             $this->_replaceFlag = true;
             $this->_replaceProducts();
         } else {
@@ -859,7 +857,10 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         $this->deleteProductsForReplacement();
         $this->_oldSku = $this->skuProcessor->reloadOldSkus()->getOldSkus();
         $this->_validatedRows = null;
-        $this->setParameters(array('behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND));
+        $this->setParameters(array_merge(
+            $this->getParameters(),
+            ['behavior' => Import::BEHAVIOR_APPEND]
+        ));
         $this->_saveProductsData();
 
         return $this;
@@ -975,7 +976,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
 
         static $lastSku = null;
 
-        if (\Magento\ImportExport\Model\Import::BEHAVIOR_DELETE == $this->getBehavior()) {
+        if (Import::BEHAVIOR_DELETE == $this->getBehavior()) {
             return $rowData;
         }
 
@@ -1092,7 +1093,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     }
                 }
             }
-            if (\Magento\ImportExport\Model\Import::BEHAVIOR_APPEND != $this->getBehavior() && $productIds) {
+            if (Import::BEHAVIOR_APPEND != $this->getBehavior() && $productIds) {
                 $this->_connection->delete(
                     $mainTable,
                     $this->_connection->quoteInto('product_id IN (?)', array_unique($productIds))
@@ -1186,7 +1187,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     $categoriesIn[] = ['product_id' => $productId, 'category_id' => $categoryId, 'position' => 1];
                 }
             }
-            if (\Magento\ImportExport\Model\Import::BEHAVIOR_APPEND != $this->getBehavior()) {
+            if (Import::BEHAVIOR_APPEND != $this->getBehavior()) {
                 $this->_connection->delete(
                     $tableName,
                     $this->_connection->quoteInto('product_id IN (?)', $delProductId)
@@ -1241,39 +1242,43 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     /**
      * Retrieving images from all columns and rows
      *
-     * @param $bunch
+     * @param array $bunch
      * @return array
      */
-    protected function _getAllBunchImages($bunch)
+    protected function getBunchImages($bunch)
     {
-        $allImagesFromBunch = [];
-        foreach ($bunch as $rowData) {
-            $rowData = $this->_customFieldsMapping($rowData);
-            foreach ($this->_imagesArrayKeys as $image) {
-                if (empty($rowData[$image])) {
+        $images = [];
+        foreach ($bunch as $row) {
+            $row = $this->_customFieldsMapping($row);
+            foreach ($this->_imagesArrayKeys as $imageColumn) {
+                if (empty($row[$imageColumn])) {
                     continue;
                 }
-                $dispersionPath =
-                    \Magento\Framework\File\Uploader::getDispretionPath($rowData[$image]);
-                $importImages = explode($this->getMultipleValueSeparator(), $rowData[$image]);
-                foreach ($importImages as $importImage) {
-                    $imageSting = mb_strtolower(
-                        $dispersionPath . '/' . preg_replace('/[^a-z0-9\._-]+/i', '', $importImage)
-                    );
-                    $allImagesFromBunch[$importImage] = $imageSting;
+
+                $rowImages = explode($this->getMultipleValueSeparator(), $row[$imageColumn]);
+                foreach ($rowImages as $rowImage) {
+                    $destinationPath = str_replace('\\', '/', $rowImage);
+                    $destinationPath = explode('/', $destinationPath);
+                    $destinationPath = array_pop($destinationPath);
+                    $destinationPath = preg_replace('/[^a-z0-9\._-]+/i', '', $destinationPath);
+
+                    $dispersion = \Magento\Framework\File\Uploader::getDispretionPath($destinationPath);
+                    $destinationPath = mb_strtolower($dispersion . '/' . $destinationPath);
+
+                    $images[$rowImage] = $destinationPath;
                 }
             }
         }
-        return $allImagesFromBunch;
+        return $images;
     }
 
     /**
      * Prepare all media files
      *
-     * @param $allImagesFromBunch
+     * @param array $images
      * @return array
      */
-    protected function _prepareAllMediaFiles($allImagesFromBunch)
+    protected function getExistingImages($images)
     {
         static $productMediaGalleryTableName = null;
         static $resource = null;
@@ -1292,22 +1297,54 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
             ['entity_id' => 'mgvte.entity_id']
         )->where(
             'mg.value IN(?)',
-            $allImagesFromBunch
+            $images
         );
         $allMedia = $this->_connection->fetchAll($select);
-        $result = array();
+        $result = [];
         foreach ($allMedia as $image) {
-            $result[$image['value']] = [];
+            if (!isset($result[$image['value']])){
+                $result[$image['value']] = [];
+            }
             foreach ($this->_oldSku as $sku => $oldSkuData) {
-                if ($oldSkuData['entity_id'] != $image['entity_id']) {
-                    continue;
+                if ($oldSkuData['entity_id'] == $image['entity_id']) {
+                    $result[$image['value']][$image['entity_id']] = $sku;
                 }
-                $result[$image['value']][] = $sku;
             }
         }
         return $result;
     }
 
+    /**
+     * @param array $rowData
+     * @return array
+     */
+    public function getImagesFromRow(array $rowData)
+    {
+        $images = [];
+        $labels = [];
+        foreach ($this->_imagesArrayKeys as $column) {
+            $images[$column] = [];
+            $labels[$column] = [];
+            if (!empty($rowData[$column])) {
+                $images[$column] = array_unique(
+                    explode($this->getMultipleValueSeparator(), $rowData[$column])
+                );
+            }
+
+            if (!empty($rowData[$column . '_label'])) {
+                $labels[$column] = explode($this->getMultipleValueSeparator(), $rowData[$column . '_label']);
+            }
+
+            if (count($labels[$column]) > count($images[$column])) {
+                $labels[$column] = array_slice($labels[$column], 0, count($images[$column]));
+            } elseif (count($labels[$column]) < count($images[$column])) {
+                $labels[$column] = array_pad($labels[$column], count($images[$column]), '');
+            }
+        }
+
+        return [$images, $labels];
+    }
+
     /**
      * Gather and save information about product entities.
      *
@@ -1319,8 +1356,6 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
      */
     protected function _saveProducts()
     {
-        /** @var $resource \Magento\CatalogImportExport\Model\Import\Proxy\Product\ResourceModel */
-        $resource = $this->_resourceFactory->create();
         $priceIsGlobal = $this->_catalogData->isPriceGlobal();
         $productLimit = null;
         $productsQty = null;
@@ -1333,11 +1368,11 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
             $this->categoriesCache = [];
             $tierPrices = [];
             $mediaGallery = [];
-            $uploadedGalleryFiles = [];
+            $uploadedImages = [];
             $previousType = null;
             $prevAttributeSet = null;
-            $allImagesFromBunch = $this->_getAllBunchImages($bunch);
-            $existingImages = $this->_prepareAllMediaFiles($allImagesFromBunch);
+            $bunchImages = $this->getBunchImages($bunch);
+            $existingImages = $this->getExistingImages($bunchImages);
 
             foreach ($bunch as $rowNum => $rowData) {
                 if (!$this->validateRow($rowData, $rowNum)) {
@@ -1387,7 +1422,9 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     }
                 }
 
-                $this->websitesCache[$rowSku] = [];
+                if (!array_key_exists($rowSku, $this->websitesCache)) {
+                    $this->websitesCache[$rowSku] = [];
+                }
                 // 2. Product-to-Website phase
                 if (!empty($rowData[self::COL_PRODUCT_WEBSITES])) {
                     $websiteCodes = explode($this->getMultipleValueSeparator(), $rowData[self::COL_PRODUCT_WEBSITES]);
@@ -1398,12 +1435,12 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                 }
 
                 // 3. Categories phase
-                $categoriesString = empty($rowData[self::COL_CATEGORY]) ? '' : $rowData[self::COL_CATEGORY];
-                $this->categoriesCache[$rowSku] = [];
-                if (!empty($categoriesString)) {
-                    foreach ($this->categoryProcessor->upsertCategories($categoriesString) as $categoryId) {
-                        $this->categoriesCache[$rowSku][$categoryId] = true;
-                    }
+                if (!array_key_exists($rowSku, $this->categoriesCache)) {
+                    $this->categoriesCache[$rowSku] = [];
+                }
+                $categoryIds = $this->processRowCategories($rowData);
+                foreach ($categoryIds as $id) {
+                    $this->categoriesCache[$rowSku][$id] = true;
                 }
 
                 // 4.1. Tier prices phase
@@ -1424,95 +1461,52 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                 }
 
                 // 5. Media gallery phase
-                $mediaGalleryImages = array();
-                $mediaGalleryLabels = array();
-                if (!empty($rowData[self::COL_MEDIA_IMAGE])) {
-                    $mediaGalleryImages =
-                        explode($this->getMultipleValueSeparator(), $rowData[self::COL_MEDIA_IMAGE]);
-                    if (isset($rowData['_media_image_label'])) {
-                        $mediaGalleryLabels =
-                            explode($this->getMultipleValueSeparator(), $rowData['_media_image_label']);
-                    } else {
-                        $mediaGalleryLabels = [];
-                    }
-                    if (count($mediaGalleryLabels) > count($mediaGalleryImages)) {
-                        $mediaGalleryLabels = array_slice($mediaGalleryLabels, 0, count($mediaGalleryImages));
-                    } elseif (count($mediaGalleryLabels) < count($mediaGalleryImages)) {
-                        $mediaGalleryLabels = array_pad($mediaGalleryLabels, count($mediaGalleryImages), '');
-                    }
-                }
-
-                foreach ($this->_imagesArrayKeys as $imageCol) {
-                    if (!empty($rowData[$imageCol])
-                        && ($imageCol != self::COL_MEDIA_IMAGE)
-                        && !in_array($rowData[$imageCol], $mediaGalleryImages)
-                    ) {
-                        $mediaGalleryImages[] = $rowData[$imageCol];
-                        if (isset($mediaGalleryLabels)) {
-                            $mediaGalleryLabels[] = isset($rowData[$imageCol . '_label'])
-                                ? $rowData[$imageCol . '_label']
-                                : '';
-                        } else {
-                            $mediaGalleryLabels[] = '';
-                        }
-                    }
+                $disabledImages = [];
+                list($rowImages, $rowLabels) = $this->getImagesFromRow($rowData);
+                if (isset($rowData['_media_is_disabled'])) {
+                    $disabledImages = array_flip(
+                        explode($this->getMultipleValueSeparator(), $rowData['_media_is_disabled'])
+                    );
                 }
-                $rowData[self::COL_MEDIA_IMAGE] = array();
-                foreach ($mediaGalleryImages as $mediaImage) {
-                    $imagePath = $allImagesFromBunch[$mediaImage];
-                    if (isset($existingImages[$imagePath]) && in_array($rowSku, $existingImages[$imagePath])) {
-                        if (!array_key_exists($mediaImage, $uploadedGalleryFiles)) {
-                            $uploadedFile = $this->_uploadMediaFiles(
-                                trim($mediaImage),
-                                true
-                            );
+                $rowData[self::COL_MEDIA_IMAGE] = [];
+                foreach ($rowImages as $column => $columnImages) {
+                    foreach ($columnImages as $position => $columnImage) {
+                        if (!isset($uploadedImages[$columnImage])) {
+                            $uploadedFile = $this->uploadMediaFiles(trim($columnImage), true);
                             if ($uploadedFile) {
-                                $uploadedGalleryFiles[$mediaImage] = $uploadedFile;
+                                $uploadedImages[$columnImage] = $uploadedFile;
                             } else {
-                                $this->addRowError(ValidatorInterface::ERROR_MEDIA_URL_NOT_ACCESSIBLE, $rowNum, null, null, ProcessingError::ERROR_LEVEL_NOT_CRITICAL);
+                                $this->addRowError(
+                                    ValidatorInterface::ERROR_MEDIA_URL_NOT_ACCESSIBLE,
+                                    $rowNum,
+                                    null,
+                                    null,
+                                    ProcessingError::ERROR_LEVEL_NOT_CRITICAL
+                                );
                             }
+                        } else {
+                            $uploadedFile = $uploadedImages[$columnImage];
                         }
-                    } elseif (!isset($existingImages[$imagePath])) {
-                        if (!array_key_exists($mediaImage, $uploadedGalleryFiles)) {
-                            $uploadedFile = $this->_uploadMediaFiles(
-                                trim($mediaImage),
-                                true
-                            );
-                            if ($uploadedFile) {
-                                $uploadedGalleryFiles[$mediaImage] = $uploadedFile;
-                                $newImagePath = $uploadedGalleryFiles[$mediaImage];
-                                $existingImages[$newImagePath][] = $rowSku;
-                            } else {
-                                $this->addRowError(ValidatorInterface::ERROR_MEDIA_URL_NOT_ACCESSIBLE, $rowNum, null, null, ProcessingError::ERROR_LEVEL_NOT_CRITICAL);
-                            }
+
+                        if ($uploadedFile && $column !== self::COL_MEDIA_IMAGE) {
+                            $rowData[$column] = $uploadedFile;
                         }
-                        if (isset($uploadedGalleryFiles[$mediaImage])) {
-                            $rowData[self::COL_MEDIA_IMAGE][] = $uploadedGalleryFiles[$mediaImage];
-                            if (!empty($rowData[self::COL_MEDIA_IMAGE]) && is_array($rowData[self::COL_MEDIA_IMAGE])) {
-                                $position = array_search($mediaImage, $mediaGalleryImages);
-                                foreach ($rowData[self::COL_MEDIA_IMAGE] as $mediaImage) {
-                                    $mediaGallery[$rowSku][] = [
-                                        'attribute_id' => $this->getMediaGalleryAttributeId(),
-                                        'label' => isset($mediaGalleryLabels[$position]) ? $mediaGalleryLabels[$position] : '',
-                                        'position' => $position,
-                                        'disabled' => '',
-                                        'value' => $mediaImage,
-                                    ];
-                                }
+
+                        $imageNotAssigned = !isset($existingImages[$uploadedFile])
+                            || !in_array($rowSku, $existingImages[$uploadedFile]);
+
+                        if ($uploadedFile && $imageNotAssigned) {
+                            if ($column == self::COL_MEDIA_IMAGE) {
+                                $rowData[$column][] = $uploadedFile;
                             }
-                        }
-                    }
-                    foreach ($this->_imagesArrayKeys as $imageCol) {
-                        if (empty($rowData[$imageCol]) || ($imageCol == self::COL_MEDIA_IMAGE)) {
-                            continue;
-                        }
-                        if (isset($existingImages[$imagePath])
-                            && !in_array($rowSku, $existingImages[$imagePath])
-                            && (($rowData[$imageCol] == $imagePath) || ($rowData[$imageCol] == $mediaImage))
-                        ) {
-                            unset($rowData[$imageCol]);
-                        } elseif (isset($uploadedGalleryFiles[$rowData[$imageCol]])) {
-                            $rowData[$imageCol] = $uploadedGalleryFiles[$rowData[$imageCol]];
+                            $mediaGallery[$rowSku][] = [
+                                'attribute_id' => $this->getMediaGalleryAttributeId(),
+                                'label' => isset($rowLabels[$column][$position]) ? $rowLabels[$column][$position] : '',
+                                'position' => $position + 1,
+                                'disabled' => isset($disabledImages[$columnImage]) ? '1' : '0',
+                                'value' => $uploadedFile,
+                            ];
+                            $existingImages[$uploadedFile][] = $rowSku;
                         }
                     }
                 }
@@ -1547,7 +1541,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                         $this->taxClassProcessor->upsertTaxClass($rowData['tax_class_name'], $productTypeModel);
                 }
 
-                if ($this->getBehavior() == \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND ||
+                if ($this->getBehavior() == Import::BEHAVIOR_APPEND ||
                     empty($rowData[self::COL_SKU])
                 ) {
                     $rowData = $productTypeModel->clearEmptyData($rowData);
@@ -1592,7 +1586,9 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                         }
                     }
                     foreach ($storeIds as $storeId) {
-                        $attributes[$attrTable][$rowSku][$attrId][$storeId] = $attrValue;
+                        if (!isset($attributes[$attrTable][$rowSku][$attrId][$storeId])) {
+                            $attributes[$attrTable][$rowSku][$attrId][$storeId] = $attrValue;
+                        }
                     }
                     // restore 'backend_model' to avoid 'default' setting
                     $attribute->setBackendModel($backModel);
@@ -1623,7 +1619,24 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
-     * @param $productSku
+     * @param array $rowData
+     * @return array
+     */
+    protected function processRowCategories($rowData)
+    {
+        $categoriesString = empty($rowData[self::COL_CATEGORY]) ? '' : $rowData[self::COL_CATEGORY];
+        $categoryIds = [];
+        if (!empty($categoriesString)) {
+            $categoryIds = $this->categoryProcessor->upsertCategories(
+                $categoriesString,
+                $this->getMultipleValueSeparator()
+            );
+        }
+        return $categoryIds;
+    }
+
+    /**
+     * @param string $productSku
      * @return array
      */
     public function getProductWebsites($productSku)
@@ -1632,7 +1645,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
-     * @param $productSku
+     * @param string $productSku
      * @return array
      */
     public function getProductCategories($productSku)
@@ -1641,7 +1654,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
-     * @param $storeCode
+     * @param string $storeCode
      * @return array|int|null|string
      */
     public function getStoreIdByCode($storeCode)
@@ -1678,7 +1691,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     $tierPriceIn[] = $row;
                 }
             }
-            if (\Magento\ImportExport\Model\Import::BEHAVIOR_APPEND != $this->getBehavior()) {
+            if (Import::BEHAVIOR_APPEND != $this->getBehavior()) {
                 $this->_connection->delete(
                     $tableName,
                     $this->_connection->quoteInto('entity_id IN (?)', $delProductId)
@@ -1709,8 +1722,8 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
 
             $DS = DIRECTORY_SEPARATOR;
 
-            if (!empty($this->_parameters[\Magento\ImportExport\Model\Import::FIELD_NAME_IMG_FILE_DIR])) {
-                $tmpPath = $this->_parameters[\Magento\ImportExport\Model\Import::FIELD_NAME_IMG_FILE_DIR];
+            if (!empty($this->_parameters[Import::FIELD_NAME_IMG_FILE_DIR])) {
+                $tmpPath = $this->_parameters[Import::FIELD_NAME_IMG_FILE_DIR];
             } else {
                 $tmpPath = $dirAddon . $DS . $this->_mediaDirectory->getRelativePath('import');
             }
@@ -1733,6 +1746,15 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         return $this->_fileUploader;
     }
 
+    /**
+     * @return Uploader
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getUploader()
+    {
+        return $this->_getUploader();
+    }
+
     /**
      * Uploading files into the "catalog/product" media folder.
      * Return a new file name if the same file is already exists.
@@ -1740,7 +1762,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
      * @param string $fileName
      * @return string
      */
-    protected function _uploadMediaFiles($fileName, $renameFileOff = false)
+    protected function uploadMediaFiles($fileName, $renameFileOff = false)
     {
         try {
             $res = $this->_getUploader()->move($fileName, $renameFileOff);
@@ -1766,22 +1788,15 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         static $mediaGalleryTableName = null;
         static $mediaValueTableName = null;
         static $mediaEntityToValueTableName = null;
-        static $productId = null;
-        if (!$mediaGalleryTableName) {
-            $mediaGalleryTableName = $this->_resourceFactory->create()->getTable(
-                'catalog_product_entity_media_gallery'
-            );
-        }
-        if (!$mediaValueTableName) {
-            $mediaValueTableName = $this->_resourceFactory->create()->getTable(
-                'catalog_product_entity_media_gallery_value'
-            );
-        }
-        if (!$mediaEntityToValueTableName) {
-            $mediaEntityToValueTableName = $this->_resourceFactory->create()->getTable(
-                'catalog_product_entity_media_gallery_value_to_entity'
-            );
-        }
+        $mediaGalleryTableName = $mediaGalleryTableName ?: $this->_resourceFactory->create()->getTable(
+            'catalog_product_entity_media_gallery'
+        );
+        $mediaValueTableName = $mediaValueTableName ?: $this->_resourceFactory->create()->getTable(
+            'catalog_product_entity_media_gallery_value'
+        );
+        $mediaEntityToValueTableName = $mediaEntityToValueTableName ?: $this->_resourceFactory->create()->getTable(
+            'catalog_product_entity_media_gallery_value_to_entity'
+        );
         $productIds = [];
         $imageNames = [];
         $multiInsertData = [];
@@ -1790,7 +1805,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
             $productId = $this->skuProcessor->getNewSku($productSku)['entity_id'];
             $productIds[] = $productId;
             $insertedGalleryImgs = [];
-            if (\Magento\ImportExport\Model\Import::BEHAVIOR_APPEND != $this->getBehavior()) {
+            if (Import::BEHAVIOR_APPEND != $this->getBehavior()) {
                 $this->_connection->delete(
                     $mediaGalleryTableName,
                     $this->_connection->quoteInto('entity_id IN (?)', $productId)
@@ -1802,26 +1817,32 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                         'attribute_id' => $insertValue['attribute_id'],
                         'value' => $insertValue['value'],
                     ];
-                    $valueToProductId[$insertValue['value']] = $productId;
+                    $valueToProductId[$insertValue['value']][] = $productId;
                     $imageNames[] = $insertValue['value'];
                     $multiInsertData[] = $valueArr;
                     $insertedGalleryImgs[] = $insertValue['value'];
                 }
             }
         }
-        $this->_connection->insertOnDuplicate($mediaGalleryTableName, $multiInsertData, []);
-        $multiInsertData = [];
-        $dataForSkinnyTable = [];
-        $newMediaValues = $this->_connection->fetchAssoc(
+        $oldMediaValues = $this->_connection->fetchAssoc(
             $this->_connection->select()->from($mediaGalleryTableName, ['value_id', 'value'])
                 ->where('value IN (?)', $imageNames)
         );
+        $this->_connection->insertOnDuplicate($mediaGalleryTableName, $multiInsertData, []);
+        $multiInsertData = [];
+        $newMediaSelect = $this->_connection->select()->from($mediaGalleryTableName, ['value_id', 'value'])
+            ->where('value IN (?)', $imageNames);
+        if (array_keys($oldMediaValues)) {
+            $newMediaSelect->where('value_id NOT IN (?)', array_keys($oldMediaValues));
+        }
+
+        $newMediaValues = $this->_connection->fetchAssoc($newMediaSelect);
         foreach ($mediaGalleryData as $productSku => $mediaGalleryRows) {
             foreach ($mediaGalleryRows as $insertValue) {
                 foreach ($newMediaValues as $value_id => $values) {
                     if ($values['value'] == $insertValue['value']) {
                         $insertValue['value_id'] = $value_id;
-                        $insertValue['entity_id'] = $valueToProductId[$values['value']];
+                        $insertValue['entity_id'] = array_shift($valueToProductId[$values['value']]);
                         unset($newMediaValues[$value_id]);
                         break;
                     }
@@ -1844,7 +1865,11 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
             }
         }
         try {
-            $this->_connection->insertOnDuplicate($mediaValueTableName, $multiInsertData, ['value_id']);
+            $this->_connection->insertOnDuplicate(
+                $mediaValueTableName,
+                $multiInsertData,
+                ['value_id', 'store_id', 'entity_id', 'label', 'position', 'disabled']
+            );
             $this->_connection->insertOnDuplicate($mediaEntityToValueTableName, $dataForSkinnyTable, ['value_id']);
         } catch (\Exception $e) {
             $this->_connection->delete(
@@ -1881,7 +1906,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                     $websitesData[] = ['product_id' => $productId, 'website_id' => $websiteId];
                 }
             }
-            if (\Magento\ImportExport\Model\Import::BEHAVIOR_APPEND != $this->getBehavior()) {
+            if (Import::BEHAVIOR_APPEND != $this->getBehavior()) {
                 $this->_connection->delete(
                     $tableName,
                     $this->_connection->quoteInto('product_id IN (?)', $delProductId)
@@ -1945,12 +1970,14 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
                 } else {
                     $row['qty'] = 0;
                 }
-                $stockData[] = $row;
+                if (!isset($stockData[$rowData[self::COL_SKU]])) {
+                    $stockData[$rowData[self::COL_SKU]] = $row;
+                }
             }
 
             // Insert rows
             if (!empty($stockData)) {
-                $this->_connection->insertOnDuplicate($entityTable, $stockData);
+                $this->_connection->insertOnDuplicate($entityTable, array_values($stockData));
             }
 
             if ($productIdsToReindex) {
@@ -2084,7 +2111,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         $rowScope = $this->getRowScope($rowData);
 
         // BEHAVIOR_DELETE use specific validation logic
-        if (\Magento\ImportExport\Model\Import::BEHAVIOR_DELETE == $this->getBehavior()) {
+        if (Import::BEHAVIOR_DELETE == $this->getBehavior()) {
             if (self::SCOPE_DEFAULT == $rowScope && !isset($this->_oldSku[$rowData[self::COL_SKU]])) {
                 $this->addRowError(ValidatorInterface::ERROR_SKU_NOT_FOUND_FOR_DELETE, $rowNum);
                 return false;
@@ -2233,7 +2260,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     private function _customFieldsMapping($rowData)
     {
         foreach ($this->_fieldsMap as $systemFieldName => $fileFieldName) {
-            if (isset($rowData[$fileFieldName])) {
+            if (array_key_exists($fileFieldName, $rowData)) {
                 $rowData[$systemFieldName] = $rowData[$fileFieldName];
             }
         }
@@ -2241,10 +2268,12 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         $rowData = $this->_parseAdditionalAttributes($rowData);
 
         $rowData = $this->_setStockUseConfigFieldsValues($rowData);
-        if (isset($rowData['status'])) {
-            if (($rowData['status'] == \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) || $rowData['status'] == 'yes') {
+        if (array_key_exists('status', $rowData)
+            && $rowData['status'] != \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED
+        ) {
+            if ($rowData['status'] == 'yes') {
                 $rowData['status'] = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED;
-            } else {
+            } elseif (!empty($rowData['status']) || $this->getRowScope($rowData) == self::SCOPE_DEFAULT) {
                 $rowData['status'] = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED;
             }
         }
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/CategoryProcessor.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/CategoryProcessor.php
index 6d4ba7ee1833580f4dc503ac782566516a68f9bc..c442b1957954d29afb380354c947060b941cd742 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product/CategoryProcessor.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/CategoryProcessor.php
@@ -7,11 +7,6 @@ namespace Magento\CatalogImportExport\Model\Import\Product;
 
 class CategoryProcessor
 {
-    /**
-     * Delimiter in import file between categories.
-     */
-    const DELIMITER_CATEGORIES = '|';
-
     /**
      * Delimiter in category path.
      */
@@ -144,13 +139,14 @@ class CategoryProcessor
      * Returns IDs of categories by string path creating nonexistent ones.
      *
      * @param string $categoriesString
+     * @param string $categoriesSeparator
      *
      * @return array
      */
-    public function upsertCategories($categoriesString)
+    public function upsertCategories($categoriesString, $categoriesSeparator)
     {
         $categoriesIds = [];
-        $categories = explode(self::DELIMITER_CATEGORIES, $categoriesString);
+        $categories = explode($categoriesSeparator, $categoriesString);
 
         foreach ($categories as $category) {
             $categoriesIds[] = $this->upsertCategory($category);
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
index 89230e1da346389b6618d4db55ba1b48c28a2182..cee5e53e97978da309bf01c7605b575d961a6fb1 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
@@ -93,6 +93,26 @@ class Validator extends AbstractValidator implements RowValidatorInterface
         return $valid;
     }
 
+    /**
+     * @param string $attrCode
+     * @param array $attributeParams
+     * @param array $rowData
+     * @return bool
+     */
+    public function isRequiredAttributeValid($attrCode, array $attributeParams, array $rowData)
+    {
+        $doCheck = false;
+        if ($attrCode == Product::COL_SKU) {
+            $doCheck = true;
+        } elseif ($attributeParams['is_required'] && $this->getRowScope($rowData) == Product::SCOPE_DEFAULT
+            && $this->context->getBehavior() != \Magento\ImportExport\Model\Import::BEHAVIOR_DELETE
+        ) {
+            $doCheck = true;
+        }
+
+        return $doCheck ? isset($rowData[$attrCode]) && strlen(trim($rowData[$attrCode])) : true;
+    }
+
     /**
      * @param string $attrCode
      * @param array $attrParams
@@ -107,25 +127,20 @@ class Validator extends AbstractValidator implements RowValidatorInterface
         if (!empty($attrParams['apply_to']) && !in_array($rowData['product_type'], $attrParams['apply_to'])) {
             return true;
         }
-        if ($attrCode == Product::COL_SKU || $attrParams['is_required']
-            && ($this->context->getBehavior() == \Magento\ImportExport\Model\Import::BEHAVIOR_REPLACE
-                || ($this->context->getBehavior() == \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND
-                    && !isset($this->context->getOldSku()[$rowData[$attrCode]])))
-        ) {
-            if (!isset($rowData[$attrCode]) || !strlen(trim($rowData[$attrCode]))) {
-                $valid = false;
-                $this->_addMessages(
-                    [
-                        sprintf(
-                            $this->context->retrieveMessageTemplate(
-                                RowValidatorInterface::ERROR_VALUE_IS_REQUIRED
-                            ),
-                            $attrCode
-                        )
-                    ]
-                );
-                return $valid;
-            }
+
+        if (!$this->isRequiredAttributeValid($attrCode, $attrParams, $rowData)) {
+            $valid = false;
+            $this->_addMessages(
+                [
+                    sprintf(
+                        $this->context->retrieveMessageTemplate(
+                            RowValidatorInterface::ERROR_VALUE_IS_REQUIRED
+                        ),
+                        $attrCode
+                    )
+                ]
+            );
+            return $valid;
         }
 
         if (!strlen(trim($rowData[$attrCode]))) {
@@ -146,7 +161,7 @@ class Validator extends AbstractValidator implements RowValidatorInterface
                 $values = explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData[$attrCode]);
                 $valid = true;
                 foreach ($values as $value) {
-                    $valid = $valid || isset($attrParams['options'][strtolower($value)]);
+                    $valid = $valid && isset($attrParams['options'][strtolower($value)]);
                 }
                 if (!$valid) {
                     $this->_addMessages(
@@ -227,6 +242,20 @@ class Validator extends AbstractValidator implements RowValidatorInterface
         return $returnValue;
     }
 
+    /**
+     * Obtain scope of the row from row data.
+     *
+     * @param array $rowData
+     * @return int
+     */
+    public function getRowScope(array $rowData)
+    {
+        if (empty($rowData[Product::COL_STORE])) {
+            return Product::SCOPE_DEFAULT;
+        }
+        return Product::SCOPE_STORE;
+    }
+
     /**
      * @param \Magento\CatalogImportExport\Model\Import\Product $context
      * @return $this
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
index dc0263e99d4f093bb65634c7f3eaeb9d12447caa..f22d910ccd45e6d386e7483a6b1373b75d9b4af7 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
@@ -223,7 +223,7 @@ class Uploader extends \Magento\MediaStorage\Model\File\Uploader
                 && method_exists($params['object'], $params['method'])
                 && is_callable([$params['object'], $params['method']])
             ) {
-                $params['object']->{$params['method']}($filePath);
+                $params['object']->{$params['method']}($this->_directory->getAbsolutePath($filePath));
             }
         }
     }
diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/CategoryProcessorTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/CategoryProcessorTest.php
index c6b5fd5570d265f89e344fa6eebf7cc1a0e47f20..3e281ba84afd0a769c29ef813e848250dc61c1bc 100644
--- a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/CategoryProcessorTest.php
+++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/CategoryProcessorTest.php
@@ -110,7 +110,8 @@ class CategoryProcessorTest extends \PHPUnit_Framework_TestCase
 
     public function testUpsertCategories()
     {
-        $categoryIds = $this->categoryProcessor->upsertCategories(self::CHILD_CATEGORY_NAME);
+        $categoriesSeparator = ',';
+        $categoryIds = $this->categoryProcessor->upsertCategories(self::CHILD_CATEGORY_NAME, $categoriesSeparator);
         $this->assertArrayHasKey(self::CHILD_CATEGORY_ID, array_flip($categoryIds));
     }
 
diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/ValidatorTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/ValidatorTest.php
index 3541ccbb99338202ea5c1fdd73f1dea54d63bfab..b7fd1e3604b675d49510a4cdd94696e0e15c1904 100644
--- a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/ValidatorTest.php
+++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/ValidatorTest.php
@@ -5,8 +5,10 @@
  */
 namespace Magento\CatalogImportExport\Test\Unit\Model\Import\Product;
 
+use Magento\CatalogImportExport\Model\Import\Product;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
 use Magento\CatalogImportExport\Model\Import\Product\Validator;
+use Magento\ImportExport\Model\Import;
 
 class ValidatorTest extends \PHPUnit_Framework_TestCase
 {
@@ -46,7 +48,7 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->context->expects($this->any())->method('retrieveProductTypeByName')->willReturn($entityTypeModel);
-        $this->context->expects($this->any())->method('retrieveMessageTemplate')->willReturn('');
+        $this->context->expects($this->any())->method('retrieveMessageTemplate')->willReturn('error message');
 
         $this->validatorOne = $this->getMock(
             'Magento\CatalogImportExport\Model\Import\Product\Validator\Media',
@@ -72,23 +74,123 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
         $this->validator->init($this->context);
     }
 
-    public function testIsBooleanAttributeValid()
+    /**
+     * @param string $behavior
+     * @param array $attrParams
+     * @param array $rowData
+     * @param bool $isValid
+     * @param string $attrCode
+     * @dataProvider attributeValidationProvider
+     */
+    public function testAttributeValidation($behavior, $attrParams, $rowData, $isValid, $attrCode = 'attribute_code')
     {
-        $this->context->expects($this->any())->method('getBehavior')
-            ->willReturn(\Magento\ImportExport\Model\Import::BEHAVIOR_REPLACE);
+        $this->context->expects($this->any())->method('getBehavior')->willReturn($behavior);
         $result = $this->validator->isAttributeValid(
-            'boolean_attribute',
+            $attrCode,
+            $attrParams,
+            $rowData
+        );
+        $this->assertEquals($isValid, $result);
+        if (!$isValid) {
+            $this->assertTrue($this->validator->hasMessages());
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function attributeValidationProvider()
+    {
+        return [
+            [
+                'any_behavior',
+                ['apply_to' => ['expected_product_type']],
+                ['product_type' => 'not_expected_product_type'],
+                true, //validation skipped in such case, so it means attribute is valid
+                'any_attibute_code',
+            ],
+            [
+                'any_behavior',
+                [],
+                ['product_type' => 'any'],
+                false,
+                Product::COL_SKU
+            ],
+            [
+                'any_behavior',
+                ['type' => 'varchar'],
+                ['product_type' => 'any', 'sku' => 'sku_value'],
+                true,
+                Product::COL_SKU
+            ],
+            [
+                'any_behavior',
+                ['is_required' => true, 'type' => 'varchar'],
+                ['product_type' => 'any', 'attribute_code' => 'value'],
+                true
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'varchar'],
+                ['product_type' => 'any', 'attribute_code' => ''],
+                false
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'int'],
+                ['product_type' => 'any', 'attribute_code' => 'not-int'],
+                false
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'int'],
+                ['product_type' => 'any', 'attribute_code' => '1'],
+                true
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'boolean', 'options' => ['yes' => 0, 'no' => 1]],
+                ['product_type' => 'any', 'attribute_code' => 'some-value'],
+                false
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'boolean', 'options' => ['yes' => 0, 'no' => 1]],
+                ['product_type' => 'any', 'attribute_code' => 'Yes'],
+                true
+            ],
             [
-                'type' => 'boolean',
-                'apply_to' => ['simple'],
-                'is_required' => false
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'multiselect', 'options' => ['option 1' => 0, 'option 2' => 1]],
+                ['product_type' => 'any', 'attribute_code' => 'Option 1|Option 2|Option 3'],
+                false
             ],
             [
-                'product_type' => 'simple',
-                'boolean_attribute' => 'Yes'
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'multiselect', 'options' => ['option 1' => 0, 'option 2' => 1]],
+                ['product_type' => 'any', 'attribute_code' => 'Option 1|Option 2'],
+                true
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'datetime'],
+                ['product_type' => 'any', 'attribute_code' => '1/1/15 12am'],
+                true
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'datetime'],
+                ['product_type' => 'any', 'attribute_code' => '1/1/15 13am'],
+                false
+            ],
+            [
+                Import::BEHAVIOR_APPEND,
+                ['is_required' => true, 'type' => 'varchar', 'is_unique' => true],
+                ['product_type' => 'any', 'unique_attribute' => 'unique-value', Product::COL_SKU => 'sku-0'],
+                true,
+                'unique_attribute'
             ]
-        );
-        $this->assertTrue($result);
+        ];
     }
 
     public function testIsValidCorrect()
diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/ProductTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/ProductTest.php
index d5fbfaf8c9e8c693c690a26a6985b5525a166508..78580aee7c92428e19dcb8907a28e4f91cc32258 100644
--- a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/ProductTest.php
+++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/ProductTest.php
@@ -8,6 +8,7 @@ namespace Magento\CatalogImportExport\Test\Unit\Model\Import;
 use Magento\CatalogImportExport\Model\Import\Product;
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Stdlib\DateTime;
+use Magento\ImportExport\Model\Import;
 
 /**
  * Class ProductTest
@@ -567,7 +568,7 @@ class ProductTest extends \Magento\ImportExport\Test\Unit\Model\Import\AbstractI
     {
         $this->setPropertyValue($this->importProduct, '_parameters', null);
         $this->assertEquals(
-            \Magento\CatalogImportExport\Model\Import\Product::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
+            Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
             $this->importProduct->getMultipleValueSeparator()
         );
     }
diff --git a/app/code/Magento/CatalogInventory/Model/Config/Backend/AbstractValue.php b/app/code/Magento/CatalogInventory/Model/Config/Backend/AbstractValue.php
index 5f38c7074b6c5819fe50b7e444fcec546be1e34d..a96bccea9eae7b25d4d36c1d4b724c225cdce447 100644
--- a/app/code/Magento/CatalogInventory/Model/Config/Backend/AbstractValue.php
+++ b/app/code/Magento/CatalogInventory/Model/Config/Backend/AbstractValue.php
@@ -25,6 +25,7 @@ abstract class AbstractValue extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\CatalogInventory\Api\StockIndexInterface $stockIndex
      * @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -35,6 +36,7 @@ abstract class AbstractValue extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\CatalogInventory\Api\StockIndexInterface $stockIndex,
         \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -43,6 +45,6 @@ abstract class AbstractValue extends \Magento\Framework\App\Config\Value
     ) {
         $this->_stockIndexerProcessor = $stockIndexerProcessor;
         $this->stockIndex = $stockIndex;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/Config/Backend/Backorders.php b/app/code/Magento/CatalogInventory/Model/Config/Backend/Backorders.php
index d5a890c3d54a38f2a726fc2fa598424c55635f09..383a8b911d8a1b7d12b976d3e4502c0c6f0f01ae 100644
--- a/app/code/Magento/CatalogInventory/Model/Config/Backend/Backorders.php
+++ b/app/code/Magento/CatalogInventory/Model/Config/Backend/Backorders.php
@@ -28,6 +28,6 @@ class Backorders extends AbstractValue
             $this->stockIndex->rebuild();
             $this->_stockIndexerProcessor->markIndexerAsInvalid();
         }
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/Config/Backend/Managestock.php b/app/code/Magento/CatalogInventory/Model/Config/Backend/Managestock.php
index 4b377112acc79ce3314d624c2acca1a1ec1966d8..efbc166208a123151b6141cef4ee2990f3efcba3 100644
--- a/app/code/Magento/CatalogInventory/Model/Config/Backend/Managestock.php
+++ b/app/code/Magento/CatalogInventory/Model/Config/Backend/Managestock.php
@@ -23,6 +23,6 @@ class Managestock extends AbstractValue
             $this->stockIndex->rebuild();
             $this->_stockIndexerProcessor->markIndexerAsInvalid();
         }
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/System/Config/Backend/Minsaleqty.php b/app/code/Magento/CatalogInventory/Model/System/Config/Backend/Minsaleqty.php
index eddd3316cd8828993052fd175e05e8695f149f63..32e82b9d33f698bb2909e060095e9a0e7bb899b8 100644
--- a/app/code/Magento/CatalogInventory/Model/System/Config/Backend/Minsaleqty.php
+++ b/app/code/Magento/CatalogInventory/Model/System/Config/Backend/Minsaleqty.php
@@ -21,6 +21,7 @@ class Minsaleqty extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\CatalogInventory\Helper\Minsaleqty $catalogInventoryMinsaleqty
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -30,13 +31,14 @@ class Minsaleqty extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\CatalogInventory\Helper\Minsaleqty $catalogInventoryMinsaleqty,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_catalogInventoryMinsaleqty = $catalogInventoryMinsaleqty;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php
index abe88aa2fccf4da8acfe004f452e9caccc5e6378..df2b1a38b58fbbad0ef47e279b2efda89ef3d6ef 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php
@@ -16,7 +16,7 @@ class ApplyRules extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $errorMessage = __('We can\'t apply the rules.');
         try {
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Chooser.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Chooser.php
index 34d7481851249340c6d6572b05daa82c5101e65a..ac908bffe6d05bc2010800d32b9a7cd2f49fcaad 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Chooser.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Chooser.php
@@ -11,7 +11,7 @@ class Chooser extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('attribute') == 'sku') {
             $type = 'Magento\CatalogRule\Block\Adminhtml\Promo\Widget\Chooser\Sku';
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php
index 41cca27abd82f0a5d04904274b6987156771ead2..dd14365e464f3595d39853b89cc42d4a43aeb98a 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         if ($id) {
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php
index 97495f7d0d48fafceae85d8640e4ad125429e0ec..1f2f29390f7523434e9610af5879432a0387628f 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php
@@ -11,7 +11,7 @@ class Edit extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $model = $this->_objectManager->create('Magento\CatalogRule\Model\Rule');
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Index.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Index.php
index fd6533a042c35fb88550397bdf88156ec2f2d603..9eb60fc13cdca8ff38c4c5354733504d6074381e 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Index.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $dirtyRules = $this->_objectManager->create('Magento\CatalogRule\Model\Flag')->loadSelf();
         if ($dirtyRules->getState()) {
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewAction.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewAction.php
index fe944cf16f49c65b831c2471f12f6c8ff04bf439..f3a42f0c95566d235661ad10b102702f8ab4ddd6 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewAction.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewAction.php
@@ -11,7 +11,7 @@ class NewAction extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewActionHtml.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewActionHtml.php
index 2a1d8aaf878d02f4c8f2535072f77d0ed855f4e3..a588a5e00ada01beb141ac26dfa1ffb13e3cb94f 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewActionHtml.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewActionHtml.php
@@ -13,7 +13,7 @@ class NewActionHtml extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Cata
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $typeArr = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php
index 977806d176b76de023ea2b121daf52ed18e857a8..5a58180e4486dbde8000cd84730b41912fb2f6c0 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php
@@ -13,7 +13,7 @@ class NewConditionHtml extends \Magento\CatalogRule\Controller\Adminhtml\Promo\C
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $typeArr = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php
index 16415977b5582cc796ea62f0a58c0d3b2657c73f..2ac65d736b44c89f0cf72ac442d8b736a9d6e5c2 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php
@@ -14,7 +14,7 @@ class Save extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Catalog
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getPostValue()) {
             try {
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Index.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Index.php
index 646e3cf6c377e667a433df697c46507c52aeb3f6..4b8f29d14440d0ff2b93a868380689ed415fe86e 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Index.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Index.php
@@ -19,7 +19,7 @@ class Index extends \Magento\Backend\App\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_CatalogRule::promo');
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/CategoriesJson.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/CategoriesJson.php
index 592d6f0bbc280326d43aa920f99fee2b8625486d..ae1c964761ff32297efcdc7bde66684ed38f696c 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/CategoriesJson.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/CategoriesJson.php
@@ -68,7 +68,7 @@ class CategoriesJson extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Wid
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $categoryId = (int)$this->getRequest()->getPost('id');
         if ($categoryId) {
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/Chooser.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/Chooser.php
index ea081c9c436568f828388c70c164b354e97a469c..7c764a2452ce1eff00d95351f261dbce96f717ce 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/Chooser.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Widget/Chooser.php
@@ -13,7 +13,7 @@ class Chooser extends \Magento\CatalogRule\Controller\Adminhtml\Promo\Widget
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $request = $this->getRequest();
 
diff --git a/app/code/Magento/CatalogSearch/Controller/Advanced/Index.php b/app/code/Magento/CatalogSearch/Controller/Advanced/Index.php
index dfc0013e6e23f17c6b97d655a03859011d25eeae..961a4cd73d76d341756916ad7129d9e8c4d10321 100644
--- a/app/code/Magento/CatalogSearch/Controller/Advanced/Index.php
+++ b/app/code/Magento/CatalogSearch/Controller/Advanced/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Framework\App\Action\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/CatalogSearch/Controller/Advanced/Result.php b/app/code/Magento/CatalogSearch/Controller/Advanced/Result.php
index d98ff86f779b529fe3f65207f3aabd7bf6c560b8..e5c71f294f640ce85036dfbb4c3f702e465f3c8b 100644
--- a/app/code/Magento/CatalogSearch/Controller/Advanced/Result.php
+++ b/app/code/Magento/CatalogSearch/Controller/Advanced/Result.php
@@ -47,7 +47,7 @@ class Result extends \Magento\Framework\App\Action\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_catalogSearchAdvanced->addFilters($this->getRequest()->getQueryValue());
diff --git a/app/code/Magento/CatalogSearch/Controller/Result/Index.php b/app/code/Magento/CatalogSearch/Controller/Result/Index.php
index 4a682161c6d6bc8edc3d0ed80a7b45e00f0b1a5c..92221b02af48d293b782bde2d845c7973e2f861a 100644
--- a/app/code/Magento/CatalogSearch/Controller/Result/Index.php
+++ b/app/code/Magento/CatalogSearch/Controller/Result/Index.php
@@ -65,7 +65,7 @@ class Index extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->layerResolver->create(Resolver::CATALOG_LAYER_SEARCH);
         /* @var $query \Magento\Search\Model\Query */
diff --git a/app/code/Magento/CatalogSearch/Model/Adminhtml/System/Config/Backend/Engine.php b/app/code/Magento/CatalogSearch/Model/Adminhtml/System/Config/Backend/Engine.php
index 4e25ed12fc3241f10748f3eb3f5c82cb0bb63490..7860a0e3e15fd995c4fd7459706e3790679f7a13 100644
--- a/app/code/Magento/CatalogSearch/Model/Adminhtml/System/Config/Backend/Engine.php
+++ b/app/code/Magento/CatalogSearch/Model/Adminhtml/System/Config/Backend/Engine.php
@@ -17,6 +17,7 @@ class Engine extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -26,13 +27,14 @@ class Engine extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->indexerRegistry = $indexerRegistry;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/CatalogSearch/Test/Unit/Controller/Advanced/ResultTest.php b/app/code/Magento/CatalogSearch/Test/Unit/Controller/Advanced/ResultTest.php
index 529b92bf4364a0ef8f8b8ec01c6e7e28f9fcf874..f90be4e218ff88e2e4bd3218b8064aa9a912a1e3 100644
--- a/app/code/Magento/CatalogSearch/Test/Unit/Controller/Advanced/ResultTest.php
+++ b/app/code/Magento/CatalogSearch/Test/Unit/Controller/Advanced/ResultTest.php
@@ -50,6 +50,6 @@ class ResultTest extends \PHPUnit_Framework_TestCase
             'Magento\CatalogSearch\Controller\Advanced\Result',
             ['context' => $context, 'catalogSearchAdvanced' => $catalogSearchAdvanced]
         );
-        $instance->execute();
+        $instance->executeInternal();
     }
 }
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
index fa7a1b0b386988fac65e504512e8843c3e52d14c..855d800fcfdcbb9c6a72f13599560a591d9ea7bc 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
@@ -190,6 +190,7 @@ class AfterImportDataObserver implements ObserverInterface
                 $product->setData($field, $rowData[$field]);
             }
         }
+
         $this->categoryCache[$rowData['entity_id']] = $this->import->getProductCategories($rowData['sku']);
         $this->websiteCache[$rowData['entity_id']] = $this->import->getProductWebsites($rowData['sku']);
         foreach ($this->websiteCache[$rowData['entity_id']] as $websiteId) {
@@ -197,11 +198,9 @@ class AfterImportDataObserver implements ObserverInterface
                 $this->websitesToStoreIds[$websiteId] = $this->storeManager->getWebsite($websiteId)->getStoreIds();
             }
         }
-        if (!empty($rowData[ImportProduct::COL_STORE])
-            && ($storeId = $this->import->getStoreIdByCode($rowData[ImportProduct::COL_STORE]))
-        ) {
-            $product->setStoreId($storeId);
-        }
+
+        $this->setStoreToProduct($product, $rowData);
+
         if ($this->isGlobalScope($product->getStoreId())) {
             $this->populateGlobalProduct($product);
         } else {
@@ -210,10 +209,26 @@ class AfterImportDataObserver implements ObserverInterface
         return $this;
     }
 
+    /**
+     * @param \Magento\Catalog\Model\Product $product
+     * @param array $rowData
+     * @return void
+     */
+    protected function setStoreToProduct(\Magento\Catalog\Model\Product $product, array $rowData)
+    {
+        if (!empty($rowData[ImportProduct::COL_STORE])
+            && ($storeId = $this->import->getStoreIdByCode($rowData[ImportProduct::COL_STORE]))
+        ) {
+            $product->setStoreId($storeId);
+        } elseif (!$product->hasData(\Magento\Catalog\Api\Data\ProductInterface::STORE_ID)) {
+            $product->setStoreId(Store::DEFAULT_STORE_ID);
+        }
+    }
+
     /**
      * Add product to import
      *
-     * @param \Magento\CatalogImportExport\Model\Import\Product $product
+     * @param \Magento\Catalog\Model\Product $product
      * @param string $storeId
      * @return $this
      */
@@ -221,15 +236,15 @@ class AfterImportDataObserver implements ObserverInterface
     {
         if (!isset($this->products[$product->getId()])) {
             $this->products[$product->getId()] = [];
-            $this->products[$product->getId()][$storeId] = $product;
         }
+        $this->products[$product->getId()][$storeId] = $product;
         return $this;
     }
 
     /**
      * Populate global product
      *
-     * @param \Magento\CatalogImportExport\Model\Import\Product $product
+     * @param \Magento\Catalog\Model\Product $product
      * @return $this
      */
     protected function populateGlobalProduct($product)
diff --git a/app/code/Magento/CatalogUrlRewrite/Setup/InstallData.php b/app/code/Magento/CatalogUrlRewrite/Setup/InstallData.php
index 56ae25a6bbbb53cf087b73f999dbbae7e0cf9986..46a0f9bea798530b15ecf850bc506afa5b5f3451 100644
--- a/app/code/Magento/CatalogUrlRewrite/Setup/InstallData.php
+++ b/app/code/Magento/CatalogUrlRewrite/Setup/InstallData.php
@@ -50,7 +50,7 @@ class InstallData implements InstallDataInterface
                 'input' => 'text',
                 'required' => false,
                 'sort_order' => 3,
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'group' => 'General Information',
             ]
         );
@@ -62,7 +62,7 @@ class InstallData implements InstallDataInterface
                 'type' => 'varchar',
                 'required' => false,
                 'sort_order' => 17,
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'visible' => false,
                 'group' => 'General Information',
             ]
@@ -77,7 +77,7 @@ class InstallData implements InstallDataInterface
                 'input' => 'text',
                 'required' => false,
                 'sort_order' => 10,
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'used_in_product_listing' => true,
                 'group' => 'Search Engine Optimization',
                 'is_used_in_grid' => true,
@@ -93,7 +93,7 @@ class InstallData implements InstallDataInterface
                 'type' => 'varchar',
                 'required' => false,
                 'sort_order' => 11,
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'visible' => false,
             ]
         );
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
index 5c50b55ecc926f96e3d127cb46d73a1219a3a1a7..fc6636a16bd3fccdf34c8f5337d898f5dc6af465 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
@@ -379,8 +379,7 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
 
     /**
      * Test for afterImportData()
-     * Covers afterImportData() + protected methods used inside except related to generateUrls() ones.
-     * generateUrls will be covered separately.
+     * Covers afterImportData() + protected methods used inside
      *
      * @covers \Magento\CatalogUrlRewrite\Observer\AfterImportDataObserver::afterImportData
      * @covers \Magento\CatalogUrlRewrite\Observer\AfterImportDataObserver::_populateForUrlGeneration
@@ -392,7 +391,7 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
      */
     public function testAfterImportData()
     {
-        $newSku = ['entity_id' => 'value'];
+        $newSku = [['entity_id' => 'value'], ['entity_id' => 'value3']];
         $websiteId = 'websiteId value';
         $productsCount = count($this->products);
         $websiteMock = $this->getMock(
@@ -421,21 +420,24 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
                 [$this->products[0][ImportProduct::COL_SKU]],
                 [$this->products[1][ImportProduct::COL_SKU]]
             )
-            ->willReturn($newSku);
+            ->will($this->onConsecutiveCalls($newSku[0], $newSku[1]));
         $this->importProduct
             ->expects($this->exactly($productsCount))
             ->method('getProductCategories')
             ->withConsecutive(
                 [$this->products[0][ImportProduct::COL_SKU]],
                 [$this->products[1][ImportProduct::COL_SKU]]
-            );
+            )->willReturn([]);
         $getProductWebsitesCallsCount = $productsCount*2;
         $this->importProduct
             ->expects($this->exactly($getProductWebsitesCallsCount))
             ->method('getProductWebsites')
-            ->willReturn([
-                $newSku['entity_id'] => $websiteId,
-            ]);
+            ->willReturnOnConsecutiveCalls(
+                [$newSku[0]['entity_id'] => $websiteId],
+                [$newSku[0]['entity_id'] => $websiteId],
+                [$newSku[1]['entity_id'] => $websiteId],
+                [$newSku[1]['entity_id'] => $websiteId]
+            );
         $map = [
             [$this->products[0][ImportProduct::COL_STORE], $this->products[0][ImportProduct::COL_STORE]],
             [$this->products[1][ImportProduct::COL_STORE], $this->products[1][ImportProduct::COL_STORE]]
@@ -460,11 +462,20 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
         $product
             ->expects($this->exactly($productsCount))
             ->method('setId')
-            ->with($newSku['entity_id']);
+            ->withConsecutive([$newSku[0]['entity_id']], [$newSku[1]['entity_id']]);
         $product
             ->expects($this->any())
             ->method('getId')
-            ->willReturn($newSku['entity_id']);
+            ->willReturnOnConsecutiveCalls(
+                $newSku[0]['entity_id'],
+                $newSku[0]['entity_id'],
+                $newSku[0]['entity_id'],
+                $newSku[0]['entity_id'],
+                $newSku[0]['entity_id'],
+                $newSku[1]['entity_id'],
+                $newSku[1]['entity_id'],
+                $newSku[1]['entity_id']
+            );
         $product
             ->expects($this->exactly($productsCount))
             ->method('getSku')
@@ -480,9 +491,12 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
                 $this->products[1][ImportProduct::COL_STORE]
             ));
         $product
-            ->expects($this->once())
+            ->expects($this->exactly($productsCount))
             ->method('setStoreId')
-            ->with($this->products[1][ImportProduct::COL_STORE]);
+            ->withConsecutive(
+                [$this->products[0][ImportProduct::COL_STORE]],
+                [$this->products[1][ImportProduct::COL_STORE]]
+            );
         $this->catalogProductFactory
             ->expects($this->exactly($productsCount))
             ->method('create')
@@ -497,32 +511,55 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
                 ],
                 [
                     ' AND entity_id = ?)',
-                    $newSku['entity_id'],
+                    $newSku[0]['entity_id'],
+                ],
+                [
+                    '(store_id = ?',
+                    $storeIds[0],
+                ],
+                [
+                    ' AND entity_id = ?)',
+                    $newSku[1]['entity_id'],
                 ]
             );
+        $this->connection
+            ->expects($this->once())
+            ->method('fetchAll')
+            ->willReturn([]);
+        $this->select->expects($this->any())->method('from')->willReturnSelf();
+        $this->select->expects($this->any())->method('where')->willReturnSelf();
+
+        $this->urlFinder->expects($this->any())->method('findAllByData')->willReturn([]);
+
+        $this->productUrlPathGenerator->expects($this->any())->method('getUrlPathWithSuffix')
+            ->willReturn('urlPathWithSuffix');
+        $this->productUrlPathGenerator->expects($this->any())->method('getUrlPath')
+            ->willReturn('urlPath');
+        $this->productUrlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')
+            ->willReturn('canonicalUrlPath');
+
+        $this->urlRewrite->expects($this->any())->method('setStoreId')->willReturnSelf();
+        $this->urlRewrite->expects($this->any())->method('setEntityId')->willReturnSelf();
+        $this->urlRewrite->expects($this->any())->method('setEntityType')->willReturnSelf();
+        $this->urlRewrite->expects($this->any())->method('setRequestPath')->willReturnSelf();
+        $this->urlRewrite->expects($this->any())->method('setTargetPath')->willReturnSelf();
+        $this->urlRewrite->expects($this->any())->method('getTargetPath')->willReturn('targetPath');
+        $this->urlRewrite->expects($this->any())->method('getStoreId')
+            ->willReturnOnConsecutiveCalls(0, 'not global');
+
+        $this->urlRewriteFactory->expects($this->any())->method('create')->willReturn($this->urlRewrite);
 
         $productUrls = [
-            'url 1',
-            'url 2',
+            'targetPath-0' => $this->urlRewrite,
+            'targetPath-not global' => $this->urlRewrite
         ];
 
-        $importMock = $this->getImportMock([
-            'generateUrls',
-            'canonicalUrlRewriteGenerate',
-            'categoriesUrlRewriteGenerate',
-            'currentUrlRewritesRegenerate',
-            'cleanOverriddenUrlKey',
-        ]);
-        $importMock
-            ->expects($this->once())
-            ->method('generateUrls')
-            ->willReturn($productUrls);
         $this->urlPersist
             ->expects($this->once())
             ->method('replace')
             ->with($productUrls);
 
-        $importMock->execute($this->observer);
+        $this->import->execute($this->observer);
     }
 
     /**
diff --git a/app/code/Magento/CatalogWidget/Controller/Adminhtml/Product/Widget/Conditions.php b/app/code/Magento/CatalogWidget/Controller/Adminhtml/Product/Widget/Conditions.php
index dd779b035108c5db50ac8dc00b6dd47fdeae5c0d..f2a0dde38a02e7843e015586ae9010063d803c86 100644
--- a/app/code/Magento/CatalogWidget/Controller/Adminhtml/Product/Widget/Conditions.php
+++ b/app/code/Magento/CatalogWidget/Controller/Adminhtml/Product/Widget/Conditions.php
@@ -32,7 +32,7 @@ class Conditions extends \Magento\CatalogWidget\Controller\Adminhtml\Product\Wid
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $typeData = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
diff --git a/app/code/Magento/CatalogWidget/Test/Unit/Controller/Adminhtml/Product/Widget/ConditionsTest.php b/app/code/Magento/CatalogWidget/Test/Unit/Controller/Adminhtml/Product/Widget/ConditionsTest.php
index 984b420c0bd8327e142943c7097c5c0de638b560..5b76de4974cec63a75629db3c29b50d982ae5ebf 100644
--- a/app/code/Magento/CatalogWidget/Test/Unit/Controller/Adminhtml/Product/Widget/ConditionsTest.php
+++ b/app/code/Magento/CatalogWidget/Test/Unit/Controller/Adminhtml/Product/Widget/ConditionsTest.php
@@ -94,6 +94,6 @@ class ConditionsTest extends \PHPUnit_Framework_TestCase
         $this->objectManager->expects($this->once())->method('create')->will($this->returnValue($condition));
 
         $this->response->expects($this->once())->method('setBody')->with('<some_html>')->will($this->returnSelf());
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Checkout/Controller/Account/Create.php b/app/code/Magento/Checkout/Controller/Account/Create.php
index 4e8514699c1fd7708dd687fc37037f01626efb60..c6f7ccb7c60af1ea2989a8c43c6afa9b1c818b39 100644
--- a/app/code/Magento/Checkout/Controller/Account/Create.php
+++ b/app/code/Magento/Checkout/Controller/Account/Create.php
@@ -52,7 +52,7 @@ class Create extends \Magento\Framework\App\Action\Action
      * @throws \Exception
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->customerSession->isLoggedIn()) {
             $this->messageManager->addError(__("Customer is already registered"));
diff --git a/app/code/Magento/Checkout/Controller/Cart/Add.php b/app/code/Magento/Checkout/Controller/Cart/Add.php
index 6e4b71de00fa2b25d7f4f6078e95ccbb55b1a792..1106eab228282f240925aafd3305e9e088408db5 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Add.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Add.php
@@ -75,7 +75,7 @@ class Add extends \Magento\Checkout\Controller\Cart
      * @return \Magento\Framework\Controller\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
             return $this->resultRedirectFactory->create()->setPath('*/*/');
diff --git a/app/code/Magento/Checkout/Controller/Cart/Addgroup.php b/app/code/Magento/Checkout/Controller/Cart/Addgroup.php
index 0665e0c29155277400dfa3f25a3951b7c0722881..abaed132df4cd6d0ba2eaba416cc065ab52e85cb 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Addgroup.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Addgroup.php
@@ -11,7 +11,7 @@ class Addgroup extends \Magento\Checkout\Controller\Cart
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $orderItemIds = $this->getRequest()->getParam('order_items', []);
         if (is_array($orderItemIds)) {
diff --git a/app/code/Magento/Checkout/Controller/Cart/Configure.php b/app/code/Magento/Checkout/Controller/Cart/Configure.php
index bd614ec3110aa21489b7b6a1cf18db40128e9673..f1086d86f2c50995344aecc5447fc7db1512f9aa 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Configure.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Configure.php
@@ -48,7 +48,7 @@ class Configure extends \Magento\Checkout\Controller\Cart
      *
      * @return \Magento\Framework\View\Result\Page|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         // Extract item and product to configure
         $id = (int)$this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Checkout/Controller/Cart/CouponPost.php b/app/code/Magento/Checkout/Controller/Cart/CouponPost.php
index 2496709c162c8736a78e7b1b8581d18200bf9adf..421effe555299a64a9ee2ff0015758d8177258ee 100644
--- a/app/code/Magento/Checkout/Controller/Cart/CouponPost.php
+++ b/app/code/Magento/Checkout/Controller/Cart/CouponPost.php
@@ -61,7 +61,7 @@ class CouponPost extends \Magento\Checkout\Controller\Cart
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $couponCode = $this->getRequest()->getParam('remove') == 1
             ? ''
diff --git a/app/code/Magento/Checkout/Controller/Cart/Delete.php b/app/code/Magento/Checkout/Controller/Cart/Delete.php
index 3d73a5f0c205a8ec950b088f67d5f3438708f9d9..873133f3cbb7b9db627e379487a67d8a96b21c7e 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Delete.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Checkout\Controller\Cart
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         if ($id) {
diff --git a/app/code/Magento/Checkout/Controller/Cart/EstimatePost.php b/app/code/Magento/Checkout/Controller/Cart/EstimatePost.php
index 2ce3a8805e8dba0a580e9e5b1f00f3da7cbf8f25..e7808167252289e8b47763a0e934e56b5c55c2f6 100644
--- a/app/code/Magento/Checkout/Controller/Cart/EstimatePost.php
+++ b/app/code/Magento/Checkout/Controller/Cart/EstimatePost.php
@@ -50,7 +50,7 @@ class EstimatePost extends \Magento\Checkout\Controller\Cart
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $country = (string)$this->getRequest()->getParam('country_id');
         $postcode = (string)$this->getRequest()->getParam('estimate_postcode');
diff --git a/app/code/Magento/Checkout/Controller/Cart/EstimateUpdatePost.php b/app/code/Magento/Checkout/Controller/Cart/EstimateUpdatePost.php
index 0dcd81a8e01856f4aa677f79362d4db96b732233..da121bf5cb499b0835d86518ddfac9f6ae23497f 100644
--- a/app/code/Magento/Checkout/Controller/Cart/EstimateUpdatePost.php
+++ b/app/code/Magento/Checkout/Controller/Cart/EstimateUpdatePost.php
@@ -11,7 +11,7 @@ class EstimateUpdatePost extends \Magento\Checkout\Controller\Cart
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $code = (string)$this->getRequest()->getParam('estimate_method');
         if (!empty($code)) {
diff --git a/app/code/Magento/Checkout/Controller/Cart/Index.php b/app/code/Magento/Checkout/Controller/Cart/Index.php
index 1486c2b8487b58b7b817eec346f31b36dca9bb72..3a6ffc2d9de6f74d8e42dce804780d4632e958f9 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Index.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Index.php
@@ -49,7 +49,7 @@ class Index extends \Magento\Checkout\Controller\Cart
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->set(__('Shopping Cart'));
diff --git a/app/code/Magento/Checkout/Controller/Cart/UpdateItemOptions.php b/app/code/Magento/Checkout/Controller/Cart/UpdateItemOptions.php
index c3e38a96dd3171369e755a4e90f4ecf20877bbd3..9b5dcc0f3960fc017df3cace7bd7a191bb38d2dc 100644
--- a/app/code/Magento/Checkout/Controller/Cart/UpdateItemOptions.php
+++ b/app/code/Magento/Checkout/Controller/Cart/UpdateItemOptions.php
@@ -15,7 +15,7 @@ class UpdateItemOptions extends \Magento\Checkout\Controller\Cart
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         $params = $this->getRequest()->getParams();
diff --git a/app/code/Magento/Checkout/Controller/Cart/UpdatePost.php b/app/code/Magento/Checkout/Controller/Cart/UpdatePost.php
index 71685ea000563aa93abac03ddec295315c7eddcd..73261faf0379c311bbc980b132953b454c18a186 100644
--- a/app/code/Magento/Checkout/Controller/Cart/UpdatePost.php
+++ b/app/code/Magento/Checkout/Controller/Cart/UpdatePost.php
@@ -64,7 +64,7 @@ class UpdatePost extends \Magento\Checkout\Controller\Cart
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
             return $this->resultRedirectFactory->create()->setPath('*/*/');
diff --git a/app/code/Magento/Checkout/Controller/Index/Index.php b/app/code/Magento/Checkout/Controller/Index/Index.php
index 0bb9c2fe851046dd4a7c83acd49b6c00af68702e..73de6be7b12efbaac1c178bf88b232e7bfa09c87 100644
--- a/app/code/Magento/Checkout/Controller/Index/Index.php
+++ b/app/code/Magento/Checkout/Controller/Index/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Checkout\Controller\Onepage
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Checkout\Helper\Data $checkoutHelper */
         $checkoutHelper = $this->_objectManager->get('Magento\Checkout\Helper\Data');
diff --git a/app/code/Magento/Checkout/Controller/Noroute/Index.php b/app/code/Magento/Checkout/Controller/Noroute/Index.php
index e892582009403b4295dfbef10b739c0099b463ab..6c1821f30ed1d4b998b1bf1d9d838ce53b2bb9f0 100644
--- a/app/code/Magento/Checkout/Controller/Noroute/Index.php
+++ b/app/code/Magento/Checkout/Controller/Noroute/Index.php
@@ -17,7 +17,7 @@ class Index extends \Magento\Framework\App\Action\Action
      * @return void
      * @codeCoverageIgnore
      */
-    public function execute()
+    public function executeInternal()
     {
         throw new NotFoundException(__('Page not found.'));
     }
diff --git a/app/code/Magento/Checkout/Controller/Onepage.php b/app/code/Magento/Checkout/Controller/Onepage.php
index 38e141855f3f191f4f60a2394bec4abe7db2b6f0..2bfbf61db7a7fa7ff4e0e5861139a904b010662e 100644
--- a/app/code/Magento/Checkout/Controller/Onepage.php
+++ b/app/code/Magento/Checkout/Controller/Onepage.php
@@ -141,7 +141,7 @@ abstract class Onepage extends Action
      * @return \Magento\Framework\App\ResponseInterface
      * @throws \Magento\Framework\Exception\NotFoundException
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $this->_request = $request;
         $result = $this->_preDispatchValidateCustomer();
@@ -158,7 +158,7 @@ abstract class Onepage extends Action
         if (!$this->_canShowForUnregisteredUsers()) {
             throw new NotFoundException(__('Page not found.'));
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Checkout/Controller/Onepage/Failure.php b/app/code/Magento/Checkout/Controller/Onepage/Failure.php
index e6155dbea2981db811b5a6a9a9a639148d785959..dcff66c6c294b22e4403c1b6d3a3e4b5df9023f1 100644
--- a/app/code/Magento/Checkout/Controller/Onepage/Failure.php
+++ b/app/code/Magento/Checkout/Controller/Onepage/Failure.php
@@ -11,7 +11,7 @@ class Failure extends \Magento\Checkout\Controller\Onepage
     /**
      * @return \Magento\Framework\View\Result\Page|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $lastQuoteId = $this->getOnepage()->getCheckout()->getLastQuoteId();
         $lastOrderId = $this->getOnepage()->getCheckout()->getLastOrderId();
diff --git a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php
index 6c66fd165de554889cdbbd39b4b1f40608bb9983..55fded81c192c2263d24d14b5952dab48f06323c 100644
--- a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php
+++ b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php
@@ -17,7 +17,7 @@ class SaveOrder extends \Magento\Checkout\Controller\Onepage
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
             return $this->resultRedirectFactory->create()->setPath('*/*/');
diff --git a/app/code/Magento/Checkout/Controller/Onepage/Success.php b/app/code/Magento/Checkout/Controller/Onepage/Success.php
index 6287f4785441a1b3971cffe28b7140ecc7bfc3a7..18155e5c61df48609a83952a171356438ff4068a 100644
--- a/app/code/Magento/Checkout/Controller/Onepage/Success.php
+++ b/app/code/Magento/Checkout/Controller/Onepage/Success.php
@@ -13,7 +13,7 @@ class Success extends \Magento\Checkout\Controller\Onepage
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $session = $this->getOnepage()->getCheckout();
         if (!$this->_objectManager->get('Magento\Checkout\Model\Session\SuccessValidator')->isValid()) {
diff --git a/app/code/Magento/Checkout/Controller/ShippingRates/Index.php b/app/code/Magento/Checkout/Controller/ShippingRates/Index.php
index c407b0bab657fcb16893a90e5b8c4a817416f428..ea8a4da9076202d918fb0c86bf64460e8b73dfb3 100644
--- a/app/code/Magento/Checkout/Controller/ShippingRates/Index.php
+++ b/app/code/Magento/Checkout/Controller/ShippingRates/Index.php
@@ -41,7 +41,7 @@ class Index extends \Magento\Framework\App\Action\Action
      * @return \Magento\Framework\Controller\ResultInterface
      * @throws Action\NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         $quote = $this->checkoutSession->getQuote();
         $address = $quote->getShippingAddress();
diff --git a/app/code/Magento/Checkout/Controller/Sidebar/RemoveItem.php b/app/code/Magento/Checkout/Controller/Sidebar/RemoveItem.php
index 0eac880fcbdc1944db53ec84187fdb2d916db116..307cc0ae49ab0937cb98b3454e8a40edb6da472d 100644
--- a/app/code/Magento/Checkout/Controller/Sidebar/RemoveItem.php
+++ b/app/code/Magento/Checkout/Controller/Sidebar/RemoveItem.php
@@ -61,7 +61,7 @@ class RemoveItem extends Action
     /**
      * @return $this
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = (int)$this->getRequest()->getParam('item_id');
         try {
diff --git a/app/code/Magento/Checkout/Controller/Sidebar/UpdateItemQty.php b/app/code/Magento/Checkout/Controller/Sidebar/UpdateItemQty.php
index e5504082d6f3a8cfe3dd050c9be8fea3fb163152..434276d6951c49c05c72f4fcf7c80a3ce5ea1cc1 100644
--- a/app/code/Magento/Checkout/Controller/Sidebar/UpdateItemQty.php
+++ b/app/code/Magento/Checkout/Controller/Sidebar/UpdateItemQty.php
@@ -52,7 +52,7 @@ class UpdateItemQty extends Action
     /**
      * @return $this
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = (int)$this->getRequest()->getParam('item_id');
         $itemQty = (int)$this->getRequest()->getParam('item_qty');
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Account/CreateTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Account/CreateTest.php
index 2e3ce377ab7b07a1be35867de496617fa571f2f3..43e765cea0a3af2252ed755e293fd7c7d0b0daea 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Account/CreateTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Account/CreateTest.php
@@ -65,7 +65,7 @@ class CreateTest extends \PHPUnit_Framework_TestCase
     {
         $this->customerSession->expects($this->once())->method('isLoggedIn')->will($this->returnValue(true));
         $this->messageManager->expects($this->once())->method('addError')->with();
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testExecute()
@@ -76,6 +76,6 @@ class CreateTest extends \PHPUnit_Framework_TestCase
         $this->orderCustomerService->expects($this->once())->method('create')->with(100)->will(
             $this->returnValue($customer)
         );
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/ConfigureTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/ConfigureTest.php
index 35fff77a2b49055bae241223e8825d650c85cdb3..9c2664a966ab188d0b774fcfc483d8fb263329e3 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/ConfigureTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/ConfigureTest.php
@@ -162,7 +162,7 @@ class ConfigureTest extends \PHPUnit_Framework_TestCase
 
         $productMock->expects($this->exactly(2))->method('getId')->willReturn($actualProductId);
 
-        $this->assertSame($pageMock, $this->configureController->execute());
+        $this->assertSame($pageMock, $this->configureController->executeInternal());
     }
 
     /**
@@ -206,6 +206,6 @@ class ConfigureTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with(ResultFactory::TYPE_REDIRECT, [])
             ->willReturn($this->resultRedirectMock);
-        $this->assertSame($this->resultRedirectMock, $this->configureController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->configureController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/CouponPostTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/CouponPostTest.php
index 99e3ccd1a7c7c44babb263d2d723b7a536f6aa5c..42453493e5343939887789609f218820ca0266f3 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/CouponPostTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/CouponPostTest.php
@@ -174,7 +174,7 @@ class CouponPostTest extends \PHPUnit_Framework_TestCase
             ->method('getQuote')
             ->willReturn($this->quote);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithGoodCouponAndItems()
@@ -232,7 +232,7 @@ class CouponPostTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithGoodCouponAndNoItems()
@@ -286,7 +286,7 @@ class CouponPostTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithBadCouponAndItems()
@@ -337,7 +337,7 @@ class CouponPostTest extends \PHPUnit_Framework_TestCase
             ->with('You canceled the coupon code.')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithBadCouponAndNoItems()
@@ -382,6 +382,6 @@ class CouponPostTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/IndexTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/IndexTest.php
index fc2199407275cc5a160d91cd461fb96079a6e94f..7fe1d10605d172586176842be114edd515f0c779 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Cart/IndexTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Cart/IndexTest.php
@@ -156,7 +156,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->resultPageFactory->expects($this->once())
             ->method('create')
             ->willReturn($page);
-        $result = $this->controller->execute();
+        $result = $this->controller->executeInternal();
         $this->assertInstanceOf('Magento\Framework\View\Result\Page', $result);
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Index/IndexTest.php
index c0f13dc40942fb901ec9722a0d1da841398463f4..85d242087e62433b8b00796e398ea5aed7e55a26 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Index/IndexTest.php
@@ -192,7 +192,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
 
         //Expected outcomes
         $this->sessionMock->expects($this->once())->method('regenerateId');
-        $this->assertSame($this->resultPageMock, $this->model->execute());
+        $this->assertSame($this->resultPageMock, $this->model->executeInternal());
     }
 
     public function testOnepageCheckoutNotAvailable()
@@ -205,7 +205,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->with($expectedPath)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     public function testInvalidQuote()
@@ -218,7 +218,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->with($expectedPath)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/OnepageTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/OnepageTest.php
index 659fa90754e67a883b71fa7fb2dd184b62d51431..8afa4c6326db1663c529480f63ebe0eb6d61c6d1 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/OnepageTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/OnepageTest.php
@@ -100,6 +100,6 @@ class OnepageTest extends \PHPUnit_Framework_TestCase
             ->method('getActionName')
             ->willReturn('index');
 
-        $this->assertEquals($this->response, $this->controller->dispatch($this->request));
+        $this->assertEquals($this->response, $this->controller->execute($this->request));
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/RemoveItemTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/RemoveItemTest.php
index d2cf39386d297794a4706f3484b8d711167bbc20..4e8b5690ab168cc1483bf659ec026cf72d01b16a 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/RemoveItemTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/RemoveItemTest.php
@@ -113,7 +113,7 @@ class RemoveItemTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->removeItem->execute());
+        $this->assertEquals('json represented', $this->removeItem->executeInternal());
     }
 
     public function testExecuteWithLocalizedException()
@@ -153,7 +153,7 @@ class RemoveItemTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->removeItem->execute());
+        $this->assertEquals('json represented', $this->removeItem->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -200,6 +200,6 @@ class RemoveItemTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->removeItem->execute());
+        $this->assertEquals('json represented', $this->removeItem->executeInternal());
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/UpdateItemQtyTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/UpdateItemQtyTest.php
index b36cbed010b0298348affe01da90822694fd8cb0..dd666066f96086d8596d2c40ad483f0c4d901518 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/UpdateItemQtyTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Sidebar/UpdateItemQtyTest.php
@@ -110,7 +110,7 @@ class UpdateItemQtyTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->updateItemQty->execute());
+        $this->assertEquals('json represented', $this->updateItemQty->executeInternal());
     }
 
     public function testExecuteWithLocalizedException()
@@ -154,7 +154,7 @@ class UpdateItemQtyTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->updateItemQty->execute());
+        $this->assertEquals('json represented', $this->updateItemQty->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -205,6 +205,6 @@ class UpdateItemQtyTest extends \PHPUnit_Framework_TestCase
             ->with('json encoded')
             ->willReturn('json represented');
 
-        $this->assertEquals('json represented', $this->updateItemQty->execute());
+        $this->assertEquals('json represented', $this->updateItemQty->executeInternal());
     }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Stub/OnepageStub.php b/app/code/Magento/Checkout/Test/Unit/Controller/Stub/OnepageStub.php
index 0ee81629337b03c6f121c2d6d4bd253eced1ebd9..01d5acd4222e458d86f1f71452a372a38d4891d2 100644
--- a/app/code/Magento/Checkout/Test/Unit/Controller/Stub/OnepageStub.php
+++ b/app/code/Magento/Checkout/Test/Unit/Controller/Stub/OnepageStub.php
@@ -8,7 +8,7 @@ namespace Magento\Checkout\Test\Unit\Controller\Stub;
 
 class OnepageStub extends \Magento\Checkout\Controller\Onepage
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Delete.php b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Delete.php
index 8ca81a642dfbd81e82b85371ee8bb25aecaa0dfd..72b54d8986cde6fe00fa0af5c1d5b9a0daaddcee 100644
--- a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Delete.php
+++ b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Delete.php
@@ -11,7 +11,7 @@ class Delete extends \Magento\CheckoutAgreements\Controller\Adminhtml\Agreement
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         $model = $this->_objectManager->get('Magento\CheckoutAgreements\Model\Agreement')->load($id);
diff --git a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Edit.php b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Edit.php
index 01fcef39eaf979376eea60929d7f853fd6d889c8..117905e8c50bbac296cf182c7cf46d617756d8e8 100644
--- a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Edit.php
+++ b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Edit.php
@@ -12,7 +12,7 @@ class Edit extends \Magento\CheckoutAgreements\Controller\Adminhtml\Agreement
      * @return void
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $agreementModel = $this->_objectManager->create('Magento\CheckoutAgreements\Model\Agreement');
diff --git a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Index.php b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Index.php
index 5327672f74948315605330207c9715af9656105e..e290737d27228a522b484d77bf3a61a676099c7c 100644
--- a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Index.php
+++ b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\CheckoutAgreements\Controller\Adminhtml\Agreement
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_addContent(
             $this->_view->getLayout()->createBlock('Magento\CheckoutAgreements\Block\Adminhtml\Agreement')
diff --git a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/NewAction.php b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/NewAction.php
index 49c4368bc675bd772588a1adda8b9cfaf526b719..666d8e907635ebb98587595b190ac61d6c804f85 100644
--- a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/NewAction.php
+++ b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/NewAction.php
@@ -12,7 +12,7 @@ class NewAction extends \Magento\CheckoutAgreements\Controller\Adminhtml\Agreeme
      * @return void
      * @codeCoverageIgnore
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Save.php b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Save.php
index ffdfd74395decb773ad096f793c332083f2682e3..d85847caab2c4fce443c66410f7c977d77462e23 100644
--- a/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Save.php
+++ b/app/code/Magento/CheckoutAgreements/Controller/Adminhtml/Agreement/Save.php
@@ -11,7 +11,7 @@ class Save extends \Magento\CheckoutAgreements\Controller\Adminhtml\Agreement
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $postData = $this->getRequest()->getPostValue();
         if ($postData) {
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php
index 107b5f4eb9ecc5da560b6a34beb235c976455c3d..3a11c2b4ff0fc2ed00b9a71a017ab32d86c287ed 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Cms\Controller\Adminhtml\Block
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/Edit.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/Edit.php
index bc8f586567c58fc68aec8d3fcc351ee98fcf9d73..bd0a0fbb62e84f58c7d57c4992faf76e05bd4194 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/Edit.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/Edit.php
@@ -33,7 +33,7 @@ class Edit extends \Magento\Cms\Controller\Adminhtml\Block
      * @return \Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         // 1. Get ID and create model
         $id = $this->getRequest()->getParam('block_id');
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/Index.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/Index.php
index b81e879b9171f69f12bafe1d16ce6414881f3e9d..5e36a87e5a71c2a84d6f27f5247ebb1c02c0c2e6 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/Index.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/Index.php
@@ -32,7 +32,7 @@ class Index extends \Magento\Cms\Controller\Adminhtml\Block
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/InlineEdit.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/InlineEdit.php
index 6ce12cfbf02ec162a13fdc7d9c24d109a3f4ff19..4d8a7f238bcdd95cfa87cc35ff42d7cfe4ce6dfb 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/InlineEdit.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/InlineEdit.php
@@ -36,7 +36,7 @@ class InlineEdit extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->jsonFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/MassDelete.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/MassDelete.php
index a173e9f3dac6becf1d6496bb85c8edd2e09dac3e..3b45c6902d2faf9585961fd16dbd3e461c9558cb 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/MassDelete.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/MassDelete.php
@@ -44,7 +44,7 @@ class MassDelete extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
         $collectionSize = $collection->getSize();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/NewAction.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/NewAction.php
index bc87b5cb8089fd63d13fadfea4adc631e1310f6b..29e37ffeaef273b629813eac5cd17301d09bb4f7 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/NewAction.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/NewAction.php
@@ -32,7 +32,7 @@ class NewAction extends \Magento\Cms\Controller\Adminhtml\Block
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/Save.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/Save.php
index c6e17f07cbfeecd5167f03bfab480de6084a3128..9582e89c995b269487f7d4a86a11078230d428e2 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/Save.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Cms\Controller\Adminhtml\Block
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Block/Widget/Chooser.php b/app/code/Magento/Cms/Controller/Adminhtml/Block/Widget/Chooser.php
index e785e256d97b3fa57c18bd37f2b0bd5ac51cbef8..363805df349e7beaa00506f63e3734749b909b1c 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Block/Widget/Chooser.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Block/Widget/Chooser.php
@@ -39,7 +39,7 @@ class Chooser extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Layout $layout */
         $layout = $this->layoutFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Delete.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Delete.php
index 278515e3f101773c5ba196e9e77dfc8896ac4d0a..3ae84ce63e76443e4f97d0c7a58ffee9afbd9af6 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Delete.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Delete.php
@@ -21,7 +21,7 @@ class Delete extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         // check if we know what should be deleted
         $id = $this->getRequest()->getParam('page_id');
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Edit.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Edit.php
index c53641376c471c985556de4e84792749fdf8ca42..716e51bc0b4bd05a50499ec6f16ba8e7ad390bf5 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Edit.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Edit.php
@@ -67,7 +67,7 @@ class Edit extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         // 1. Get ID and create model
         $id = $this->getRequest()->getParam('page_id');
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Index.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Index.php
index 61405419a007bd574a91981a35367b0af69336f0..7be6ad88b7b5888c5be6da1270927ad89797fe29 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Index.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Index.php
@@ -42,7 +42,7 @@ class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
index 52882ff71fddf063388e2a6139606ea86610d36f..762d5384afec9d8bf1f9a49f29e0a4373a48086b 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
@@ -47,7 +47,7 @@ class InlineEdit extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->jsonFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDelete.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDelete.php
index 45314ebf2d9e15eb7c309a7bef47bbbaac838ccc..9ab84769739b8ba3e2e2428aadafa212f6da9576 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDelete.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDelete.php
@@ -43,7 +43,7 @@ class MassDelete extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
         $collectionSize = $collection->getSize();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDisable.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDisable.php
index 8d8da00375cd22a85bfd4f90b7f3ebb9eb920e16..cda4e802f06989b3fde123d26d3ad088a4e496fe 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDisable.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassDisable.php
@@ -43,7 +43,7 @@ class MassDisable extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
 
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassEnable.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassEnable.php
index aa44d34ea78618f26ed735ae5f5e55ca2601f003..a904249e653a05a5e349f20b10420db9897d6e28 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/MassEnable.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/MassEnable.php
@@ -43,7 +43,7 @@ class MassEnable extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         $collection = $this->filter->getCollection($this->collectionFactory->create());
 
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/NewAction.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/NewAction.php
index 100c0b05f2a0fc8ce7c85df2a8c0c59839b92752..9f816a59252058767aadc55db517a6e0539e8f28 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/NewAction.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/NewAction.php
@@ -38,7 +38,7 @@ class NewAction extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
index 6858ef9cadf1014d5edd9842035e028847728806..276073e1e96789af8a6e04bb0b395d97250dec37 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
@@ -38,7 +38,7 @@ class Save extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Widget/Chooser.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Widget/Chooser.php
index 49e8206f822fa07158335c767c0fb19d67e3b1a8..493ae73a83ddb45b065a4ce83314943e2f83a4f2 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Widget/Chooser.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Widget/Chooser.php
@@ -40,7 +40,7 @@ class Chooser extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $uniqId = $this->getRequest()->getParam('uniq_id');
         /** @var \Magento\Framework\View\Layout $layout */
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Directive.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Directive.php
index 51d1fc3502be0f18fea71866c28440aac770c136..05e6350da2bb93fe1de6c405353a4f9ff79eb064 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Directive.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Directive.php
@@ -40,7 +40,7 @@ class Directive extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $directive = $this->getRequest()->getParam('___directive');
         $directive = $this->urlDecoder->decode($directive);
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Contents.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Contents.php
index 0b1155258377a7144234d4bf6333bc842d489cd5..05c8912acf8d2e3b6ada14d0bc084996b6b728b3 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Contents.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Contents.php
@@ -53,7 +53,7 @@ class Contents extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initAction()->_saveSessionCurrentPath();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFiles.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFiles.php
index 73389122633f1ccb2dca17a283aadc247aa87a8d..1af7705253569acf39116209f0922dd2ce1fb8b5 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFiles.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFiles.php
@@ -43,7 +43,7 @@ class DeleteFiles extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             if (!$this->getRequest()->isPost()) {
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFolder.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFolder.php
index 2566d3159e47103ffc2dbcc22420a9bd904241fa..45a85b1d009d56872a0314b79e02ccf65fdb652c 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFolder.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFolder.php
@@ -40,7 +40,7 @@ class DeleteFolder extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $path = $this->getStorage()->getCmsWysiwygImages()->getCurrentPath();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Index.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Index.php
index 3c22b5fbcb0179f0b43e1de22a82dd033e2c9673..eacf2cb6268a2787f44540e1bd9f47916426d040 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Index.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Index.php
@@ -32,7 +32,7 @@ class Index extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeId = (int)$this->getRequest()->getParam('store');
 
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/NewFolder.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/NewFolder.php
index 24240b5ab25e7ce921706eb32a34b3688c1318da..8077f38a5a44f450471ede601da40813ae3e459b 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/NewFolder.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/NewFolder.php
@@ -32,7 +32,7 @@ class NewFolder extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initAction();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/OnInsert.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/OnInsert.php
index 738cba1295e40a49e57ad3c791d2aafed0cc8fc1..b0d4818b940ffd5c4958b7205a85e8e1b995c098 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/OnInsert.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/OnInsert.php
@@ -32,7 +32,7 @@ class OnInsert extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $helper = $this->_objectManager->get('Magento\Cms\Helper\Wysiwyg\Images');
         $storeId = $this->getRequest()->getParam('store');
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Thumbnail.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Thumbnail.php
index a5a2d6bbc2a1e29fa867f56b9111dee77e486c70..9412c2471a0baccaae472609ef3d60dc511c4baa 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Thumbnail.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Thumbnail.php
@@ -35,7 +35,7 @@ class Thumbnail extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $file = $this->getRequest()->getParam('file');
         $file = $this->_objectManager->get('Magento\Cms\Helper\Wysiwyg\Images')->idDecode($file);
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/TreeJson.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/TreeJson.php
index 9d70dd5a038de40c035962a5230ff3ad9d6789d6..1690cb3d708c3f08710ffe860d930dc108bd3403 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/TreeJson.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/TreeJson.php
@@ -40,7 +40,7 @@ class TreeJson extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Upload.php b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Upload.php
index b05ff1ac92bd142d687d9647d0aa666be4e62fc4..0811d0572db55a164b7c2826a61c536c37eec601 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Upload.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/Upload.php
@@ -32,7 +32,7 @@ class Upload extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initAction();
diff --git a/app/code/Magento/Cms/Controller/Index/DefaultNoRoute.php b/app/code/Magento/Cms/Controller/Index/DefaultNoRoute.php
index 91cb0939634425eed81516f2142634b34fffa44c..51c6ec15a249ec45eafcf5d8852744e5d784d4d0 100644
--- a/app/code/Magento/Cms/Controller/Index/DefaultNoRoute.php
+++ b/app/code/Magento/Cms/Controller/Index/DefaultNoRoute.php
@@ -27,7 +27,7 @@ class DefaultNoRoute extends \Magento\Framework\App\Action\Action
     /**
      * @return \Magento\Framework\View\Result\LayoutFactory
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultLayout = $this->resultPageFactory->create();
         $resultLayout->setStatusHeader(404, '1.1', 'Not Found');
diff --git a/app/code/Magento/Cms/Controller/Index/Index.php b/app/code/Magento/Cms/Controller/Index/Index.php
index fe007e0d5173d63e33d4af772688f25ed95972e9..969ad75a366e752c6054a0d8436f97653001cd39 100644
--- a/app/code/Magento/Cms/Controller/Index/Index.php
+++ b/app/code/Magento/Cms/Controller/Index/Index.php
@@ -32,7 +32,7 @@ class Index extends \Magento\Framework\App\Action\Action
      * @return \Magento\Framework\Controller\Result\Forward
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function execute($coreRoute = null)
+    public function executeInternal($coreRoute = null)
     {
         $pageId = $this->_objectManager->get(
             'Magento\Framework\App\Config\ScopeConfigInterface'
diff --git a/app/code/Magento/Cms/Controller/Noroute/Index.php b/app/code/Magento/Cms/Controller/Noroute/Index.php
index 18c4d2181474ebd4e1b465b2e0ee14b0852bc9c5..16d67c38a81619e8770a6feda79bb9cec8c8416f 100644
--- a/app/code/Magento/Cms/Controller/Noroute/Index.php
+++ b/app/code/Magento/Cms/Controller/Noroute/Index.php
@@ -30,7 +30,7 @@ class Index extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $pageId = $this->_objectManager->get(
             'Magento\Framework\App\Config\ScopeConfigInterface',
diff --git a/app/code/Magento/Cms/Controller/Page/View.php b/app/code/Magento/Cms/Controller/Page/View.php
index 4775fc3fe9358127e9d6bc060109b8e6d5516b65..0c185380200c12c907ae892a620ba05e830c5a7d 100644
--- a/app/code/Magento/Cms/Controller/Page/View.php
+++ b/app/code/Magento/Cms/Controller/Page/View.php
@@ -30,7 +30,7 @@ class View extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $pageId = $this->getRequest()->getParam('page_id', $this->getRequest()->getParam('id', false));
         $resultPage = $this->_objectManager->get('Magento\Cms\Helper\Page')->prepareResultPage($this, $pageId);
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/DeleteTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/DeleteTest.php
index c32d11572cf67c614602101942ffd23e47a62614..08c23452659625d885b293812f3839f544743b7c 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/DeleteTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/DeleteTest.php
@@ -148,7 +148,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 
     public function testDeleteActionNoId()
@@ -168,7 +168,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 
     public function testDeleteActionThrowsException()
@@ -195,6 +195,6 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit', ['block_id' => $this->blockId])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/EditTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/EditTest.php
index b2432abc0cbde3d8a156e2f2bd75f9234e697890..a48b5b69ea8b4ac46cdf57bcad7b3f4dff87f3b5 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/EditTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/EditTest.php
@@ -154,7 +154,7 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->editController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->editController->executeInternal());
     }
 
     /**
@@ -220,7 +220,7 @@ class EditTest extends \PHPUnit_Framework_TestCase
             ->method('getConfig')
             ->willReturn($pageConfigMock);
 
-        $this->assertSame($resultPageMock, $this->editController->execute());
+        $this->assertSame($resultPageMock, $this->editController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/MassDeleteTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/MassDeleteTest.php
index 81164feafac104415a7650395d6db20f3ac232fe..4c52ac86c94b90c529eabb2db07180114ec867c7 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/MassDeleteTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/MassDeleteTest.php
@@ -80,7 +80,7 @@ class MassDeleteTest extends AbstractMassActionTest
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->massDeleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->massDeleteController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/SaveTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/SaveTest.php
index 0a1c7be6c9541410f366bf990226502df6a61f8f..04f6ac3f0816196b291fb377da5bc464b03ed984 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/SaveTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/SaveTest.php
@@ -216,14 +216,14 @@ class SaveTest extends \PHPUnit_Framework_TestCase
 
         $this->resultRedirect->expects($this->atLeastOnce())->method('setPath')->with('*/*/') ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->saveController->execute());
+        $this->assertSame($this->resultRedirect, $this->saveController->executeInternal());
     }
 
     public function testSaveActionWithoutData()
     {
         $this->requestMock->expects($this->any())->method('getPostValue')->willReturn(false);
         $this->resultRedirect->expects($this->atLeastOnce())->method('setPath')->with('*/*/') ->willReturnSelf();
-        $this->assertSame($this->resultRedirect, $this->saveController->execute());
+        $this->assertSame($this->resultRedirect, $this->saveController->executeInternal());
     }
 
     public function testSaveActionNoId()
@@ -256,7 +256,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
 
         $this->resultRedirect->expects($this->atLeastOnce())->method('setPath')->with('*/*/') ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->saveController->execute());
+        $this->assertSame($this->resultRedirect, $this->saveController->executeInternal());
     }
 
     public function testSaveAndContinue()
@@ -303,7 +303,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit', ['block_id' => $this->blockId])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->saveController->execute());
+        $this->assertSame($this->resultRedirect, $this->saveController->executeInternal());
     }
 
     public function testSaveActionThrowsException()
@@ -352,6 +352,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit', ['block_id' => $this->blockId])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->saveController->execute());
+        $this->assertSame($this->resultRedirect, $this->saveController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/DeleteTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/DeleteTest.php
index 4d2b25a708ddf5047d781ec2d34ad33a528c687d..e218e22421c6190cf1e483aecb7fbd4592312273 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/DeleteTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/DeleteTest.php
@@ -146,7 +146,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 
     public function testDeleteActionNoId()
@@ -166,7 +166,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 
     public function testDeleteActionThrowsException()
@@ -210,6 +210,6 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit', ['page_id' => $this->pageId])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->deleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->deleteController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
index 8402fbc8f3b7fcdb71109b759c8d6b4a7867eb72..3024c271a3e904748e6f699b78891dd9220728e8 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
@@ -163,7 +163,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteWithRuntimeException()
@@ -184,7 +184,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -205,7 +205,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteWithoutData()
@@ -231,7 +231,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testSetCmsPageData()
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDeleteTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDeleteTest.php
index 98a5df2b6190bc5571ca1843f836330e07dbb569..72cd0cedba3184936cc976c8c8f7f27b1cd04205 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDeleteTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDeleteTest.php
@@ -80,7 +80,7 @@ class MassDeleteTest extends AbstractMassActionTest
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->massDeleteController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->massDeleteController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDisableTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDisableTest.php
index 688cc87fa09e35b1da68abf3d79fcee425a00a97..f8d82e0b8631e835f3c0f942355847a043f91f9b 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDisableTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassDisableTest.php
@@ -85,7 +85,7 @@ class MassDisableTest extends AbstractMassActionTest
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->massDisableController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->massDisableController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassEnableTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassEnableTest.php
index 661231aa012bb4ccd4614a845cf47465f19dc527..f7460ae29cb5c3f5f9492061a49d549350f36549 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassEnableTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/MassEnableTest.php
@@ -85,7 +85,7 @@ class MassEnableTest extends AbstractMassActionTest
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->massEnableController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->massEnableController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Wysiwyg/DirectiveTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Wysiwyg/DirectiveTest.php
index 7d0ec584d46755e871a355c748937cccf94b2364..b0120b54ae06ea0f8ad722c91c60cb552fdd7e97 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Wysiwyg/DirectiveTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Wysiwyg/DirectiveTest.php
@@ -157,7 +157,7 @@ class DirectiveTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Cms\Controller\Adminhtml\Wysiwyg\Directive::execute
+     * @covers \Magento\Cms\Controller\Adminhtml\Wysiwyg\Directive::executeInternal
      */
     public function testExecute()
     {
@@ -188,12 +188,12 @@ class DirectiveTest extends \PHPUnit_Framework_TestCase
 
         $this->assertSame(
             $this->rawMock,
-            $this->wysiwygDirective->execute()
+            $this->wysiwygDirective->executeInternal()
         );
     }
 
     /**
-     * @covers \Magento\Cms\Controller\Adminhtml\Wysiwyg\Directive::execute
+     * @covers \Magento\Cms\Controller\Adminhtml\Wysiwyg\Directive::executeInternal
      */
     public function testExecuteException()
     {
@@ -236,7 +236,7 @@ class DirectiveTest extends \PHPUnit_Framework_TestCase
 
         $this->assertSame(
             $this->rawMock,
-            $this->wysiwygDirective->execute()
+            $this->wysiwygDirective->executeInternal()
         );
     }
 
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Block/InlineEditTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Block/InlineEditTest.php
index 85cab72d2aa45ed023e378ff2b96e0d931be628a..37872f893c335ad13778de1d935556fda2fdd520 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Block/InlineEditTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Block/InlineEditTest.php
@@ -131,7 +131,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithoutData()
@@ -157,6 +157,6 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Index/IndexTest.php
index 3b4ecc8ee107011d0271ede942c226a198e065b2..10bb82ac001f96bc53a36f400a48f24802698e63 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Index/IndexTest.php
@@ -96,7 +96,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('prepareResultPage')
             ->with($this->controller, $this->pageId)
             ->willReturn($this->resultPageMock);
-        $this->assertSame($this->resultPageMock, $this->controller->execute());
+        $this->assertSame($this->resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteResultForward()
@@ -105,6 +105,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('forward')
             ->with('defaultIndex')
             ->willReturnSelf();
-        $this->assertSame($this->forwardMock, $this->controller->execute());
+        $this->assertSame($this->forwardMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Noroute/IndexTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Noroute/IndexTest.php
index 4ff2bcaa7520004ce9f6e0a561e30f9ca8a25c26..444a1d767250e1bb6337253c54ee59fe45f2f44b 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Noroute/IndexTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Noroute/IndexTest.php
@@ -113,7 +113,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         );
         $this->assertSame(
             $this->resultPageMock,
-            $this->_controller->execute()
+            $this->_controller->executeInternal()
         );
     }
 
@@ -146,7 +146,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         );
         $this->assertSame(
             $this->forwardMock,
-            $this->_controller->execute()
+            $this->_controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Page/ViewTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Page/ViewTest.php
index df009be3bb0c7a71d9d0f7040d4215b40c7a7003..5c15f13b9317a6acafc16265190a78c7174244ba 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Page/ViewTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Page/ViewTest.php
@@ -89,7 +89,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->method('prepareResultPage')
             ->with($this->controller, $this->pageId)
             ->willReturn($this->resultPageMock);
-        $this->assertSame($this->resultPageMock, $this->controller->execute());
+        $this->assertSame($this->resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteResultForward()
@@ -106,6 +106,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->method('forward')
             ->with('noroute')
             ->willReturnSelf();
-        $this->assertSame($this->forwardMock, $this->controller->execute());
+        $this->assertSame($this->forwardMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php b/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
index 92e50151a7519940fa5028412decc64cee5836c0..57b28ebdd42f61f2e836993b8c9aee36fd018cbd 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
@@ -44,12 +44,12 @@ abstract class AbstractConfig extends \Magento\Backend\App\AbstractAction
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(\Magento\Framework\App\RequestInterface $request)
+    public function execute(\Magento\Framework\App\RequestInterface $request)
     {
         if (!$request->getParam('section')) {
             $request->setParam('section', $this->_configStructure->getFirstSection()->getId());
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Edit.php b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Edit.php
index 9f8bf3a73f1778c792403d964c4ab4f0a7e20d1f..ad25ce834a507d4b41eed837711228699c7ed2f3 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Edit.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Edit.php
@@ -36,7 +36,7 @@ class Edit extends AbstractScopeConfig
      *
      * @return \Magento\Framework\App\ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $current = $this->getRequest()->getParam('section');
         $website = $this->getRequest()->getParam('website');
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Index.php b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Index.php
index 2513c9cb00f888802e7401bbf5a216c8589da695..f92619feb0466f51f27ceda29dca5c2495fe1b6f 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Index.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Index.php
@@ -36,7 +36,7 @@ class Index extends AbstractScopeConfig
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Save.php b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Save.php
index d18c4ffc4bc510b9d0d8cd14953313adae6d7248..6dea5197bb42811761d088f3034c7187fd964ab6 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/Config/Save.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/Config/Save.php
@@ -141,7 +141,7 @@ class Save extends AbstractConfig
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             // custom save logic
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/Config/State.php b/app/code/Magento/Config/Controller/Adminhtml/System/Config/State.php
index d1f299e6a32a09df73b953929227a8895a5082ec..9ac46a6dcb3297fdb6649c42cb249b79783111cf 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/Config/State.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/Config/State.php
@@ -36,7 +36,7 @@ class State extends AbstractScopeConfig
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('isAjax')
             && $this->getRequest()->getParam('container') != ''
diff --git a/app/code/Magento/Config/Model/Config/Backend/Admin/Custom.php b/app/code/Magento/Config/Model/Config/Backend/Admin/Custom.php
index bdb08b0f04b2a12cf29790028a9ef313ca107c92..2e7a81b073022cce10e6aaec61816fe3770e16ae 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Admin/Custom.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Admin/Custom.php
@@ -58,6 +58,7 @@ class Custom extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\Storage\WriterInterface $configWriter
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -67,13 +68,14 @@ class Custom extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\Storage\WriterInterface $configWriter,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_configWriter = $configWriter;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -122,6 +124,6 @@ class Custom extends \Magento\Framework\App\Config\Value
             );
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php b/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
index 50478bfb7b8ef92f17650328881fe12422aefe73..b5932d1c1194149de5c5daff6d1ec9adffb6b208 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
@@ -27,6 +27,7 @@ class Robots extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Filesystem $filesystem
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -36,12 +37,13 @@ class Robots extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Filesystem $filesystem,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->_directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
         $this->_file = 'robots.txt';
     }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Admin/Usecustom.php b/app/code/Magento/Config/Model/Config/Backend/Admin/Usecustom.php
index ff429986e3afd735f1801ccc88384124ff998f3b..22fbbfff6c66a7ccd8443d199e3d3c9cfd45bd38 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Admin/Usecustom.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Admin/Usecustom.php
@@ -22,6 +22,7 @@ class Usecustom extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\Storage\WriterInterface $configWriter
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,13 +32,14 @@ class Usecustom extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\Storage\WriterInterface $configWriter,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_configWriter = $configWriter;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -81,6 +83,6 @@ class Usecustom extends \Magento\Framework\App\Config\Value
             );
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Admin/Usesecretkey.php b/app/code/Magento/Config/Model/Config/Backend/Admin/Usesecretkey.php
index 3f77e3b07d1768fb90c10926be824a9e7ed3defe..7417f57ae5fe5711c5a86b3adfb14c6f9ea9f175 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Admin/Usesecretkey.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Admin/Usesecretkey.php
@@ -20,6 +20,7 @@ class Usesecretkey extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Backend\Model\UrlInterface $backendUrl
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -29,13 +30,14 @@ class Usesecretkey extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Backend\Model\UrlInterface $backendUrl,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_backendUrl = $backendUrl;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -44,6 +46,6 @@ class Usesecretkey extends \Magento\Framework\App\Config\Value
     public function afterSave()
     {
         $this->_backendUrl->renewSecretUrls();
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
index 30e63b7d2bee2e1489a8793e559a9121884c5e09..9cf3ae709c72ab53e6243931b13dc202fd02e557 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
@@ -16,6 +16,7 @@ class Baseurl extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\View\Asset\MergeService $mergeService
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -25,13 +26,14 @@ class Baseurl extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\View\Asset\MergeService $mergeService,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_mergeService = $mergeService;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -198,7 +200,7 @@ class Baseurl extends \Magento\Framework\App\Config\Value
     /**
      * Clean compiled JS/CSS when updating url configuration settings
      *
-     * @return void
+     * @return $this
      */
     public function afterSave()
     {
@@ -212,5 +214,6 @@ class Baseurl extends \Magento\Framework\App\Config\Value
                     break;
             }
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/AbstractCurrency.php b/app/code/Magento/Config/Model/Config/Backend/Currency/AbstractCurrency.php
index 3daccc80463256313a6861a926267720752dd20c..42c589c06a9910ac555ac82f3d584db5d30e1b95 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/AbstractCurrency.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/AbstractCurrency.php
@@ -15,37 +15,6 @@ namespace Magento\Config\Model\Config\Backend\Currency;
 
 abstract class AbstractCurrency extends \Magento\Framework\App\Config\Value
 {
-    /**
-     * Core store config
-     *
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
-     */
-    protected $_scopeConfig;
-
-    /**
-     * Constructor
-     *
-     * @param \Magento\Framework\Model\Context $context
-     * @param \Magento\Framework\Registry $registry
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
-     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\Model\Context $context,
-        \Magento\Framework\Registry $registry,
-        \Magento\Framework\App\Config\ScopeConfigInterface $config,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
-        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
-        array $data = []
-    ) {
-        $this->_scopeConfig = $scopeConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
-    }
-
     /**
      * Retrieve allowed currencies for current scope
      *
@@ -75,7 +44,7 @@ abstract class AbstractCurrency extends \Magento\Framework\App\Config\Value
     {
         return explode(
             ',',
-            $this->_scopeConfig->getValue(
+            $this->_config->getValue(
                 'system/currency/installed',
                 \Magento\Store\Model\ScopeInterface::SCOPE_STORE
             )
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php b/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
index cd9a7e643d30918179adb758cd8aba11c1a2b475..43de443d561079bd42fc0581859ccba8f080c629 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
@@ -21,7 +21,7 @@ class Allow extends AbstractCurrency
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Locale\CurrencyInterface $localeCurrency
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,14 +31,14 @@ class Allow extends AbstractCurrency
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Locale\CurrencyInterface $localeCurrency,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_localeCurrency = $localeCurrency;
-        parent::__construct($context, $registry, $config, $scopeConfig, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -71,6 +71,6 @@ class Allow extends AbstractCurrency
             throw new \Magento\Framework\Exception\LocalizedException(__(join("\n", $exceptions)));
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/Base.php b/app/code/Magento/Config/Model/Config/Backend/Currency/Base.php
index 45470cc06a2a2c1ffe34519cd00ac79fa644b7aa..733bf014bd74db46c25312f6bf7aad8198310a27 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/Base.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/Base.php
@@ -19,7 +19,7 @@ class Base extends AbstractCurrency
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Directory\Model\CurrencyFactory $currencyFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -29,13 +29,13 @@ class Base extends AbstractCurrency
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Directory\Model\CurrencyFactory $currencyFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $scopeConfig, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->currencyFactory = $currencyFactory;
     }
 
@@ -55,6 +55,6 @@ class Base extends AbstractCurrency
         }
 
         $this->currencyFactory->create()->saveRates([$value =>[$value => 1]]);
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/Cron.php b/app/code/Magento/Config/Model/Config/Backend/Currency/Cron.php
index c88d752c82f196b2dce920564343209b7a03c397..dc8afc6b66217ad85ff7542a7320c7fc5cee85eb 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/Cron.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/Cron.php
@@ -21,6 +21,7 @@ class Cron extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -30,17 +31,18 @@ class Cron extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_configValueFactory = $configValueFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
-     * @return void
+     * @return $this
      * @throws \Exception
      */
     public function afterSave()
@@ -69,5 +71,6 @@ class Cron extends \Magento\Framework\App\Config\Value
         } catch (\Exception $e) {
             throw new \Exception(__('We can\'t save the Cron expression.'));
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/DefaultCurrency.php b/app/code/Magento/Config/Model/Config/Backend/Currency/DefaultCurrency.php
index 35e8e5688ca0cdf156189145e01abb52d06a7596..a086a674570ef038d8617a39fbee28ef46e1c421 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/DefaultCurrency.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/DefaultCurrency.php
@@ -33,6 +33,6 @@ class DefaultCurrency extends AbstractCurrency
             );
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Encrypted.php b/app/code/Magento/Config/Model/Config/Backend/Encrypted.php
index 71aa76e17b5c90b902e8b8bd6c3029ca65dcf30f..9f4f57e5433b7c9e1acc6e8634a3e682b8a15352 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Encrypted.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Encrypted.php
@@ -22,6 +22,7 @@ class Encrypted extends \Magento\Framework\App\Config\Value implements
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Encryption\EncryptorInterface $encryptor
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,13 +32,14 @@ class Encrypted extends \Magento\Framework\App\Config\Value implements
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Encryption\EncryptorInterface $encryptor,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_encryptor = $encryptor;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Config/Model/Config/Backend/File.php b/app/code/Magento/Config/Model/Config/Backend/File.php
index 8925877efcb03a162d21b0a625bb75b09bfad6da..0f8580e2c50de6feb41b0fb68c48b7c2d4d0636b 100644
--- a/app/code/Magento/Config/Model/Config/Backend/File.php
+++ b/app/code/Magento/Config/Model/Config/Backend/File.php
@@ -13,6 +13,7 @@ use Magento\Framework\Filesystem;
  * System config file field backend model
  *
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  */
 class File extends \Magento\Framework\App\Config\Value
 {
@@ -47,6 +48,7 @@ class File extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory
      * @param \Magento\Config\Model\Config\Backend\File\RequestData\RequestDataInterface $requestData
      * @param Filesystem $filesystem
@@ -58,6 +60,7 @@ class File extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory,
         \Magento\Config\Model\Config\Backend\File\RequestData\RequestDataInterface $requestData,
         Filesystem $filesystem,
@@ -69,7 +72,7 @@ class File extends \Magento\Framework\App\Config\Value
         $this->_requestData = $requestData;
         $this->_filesystem = $filesystem;
         $this->_mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA);
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Config/Model/Config/Backend/Image/Adapter.php b/app/code/Magento/Config/Model/Config/Backend/Image/Adapter.php
index a8c3fa288623eff7814c90d1737151f49f5ce839..23e65a6e1d11ca9ad9a03494102a5a1ae5cc249f 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Image/Adapter.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Image/Adapter.php
@@ -22,6 +22,7 @@ class Adapter extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Image\AdapterFactory $imageFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,12 +32,13 @@ class Adapter extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Image\AdapterFactory $imageFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->_imageFactory = $imageFactory;
     }
 
diff --git a/app/code/Magento/Config/Model/Config/Backend/Locale.php b/app/code/Magento/Config/Model/Config/Backend/Locale.php
index c6cec53f26a2f4525d6bfd8c1b24d8248e9c6111..433d8d7717fd2368d8861b5f66ab557f95eb0831 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Locale.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Locale.php
@@ -37,6 +37,7 @@ class Locale extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Config\Model\ResourceModel\Config\Data\CollectionFactory $configsFactory
      * @param \Magento\Store\Model\WebsiteFactory $websiteFactory
      * @param \Magento\Store\Model\StoreFactory $storeFactory
@@ -51,6 +52,7 @@ class Locale extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Config\Model\ResourceModel\Config\Data\CollectionFactory $configsFactory,
         \Magento\Store\Model\WebsiteFactory $websiteFactory,
         \Magento\Store\Model\StoreFactory $storeFactory,
@@ -63,7 +65,7 @@ class Locale extends \Magento\Framework\App\Config\Value
         $this->_websiteFactory = $websiteFactory;
         $this->_storeFactory = $storeFactory;
         $this->_localeCurrency = $localeCurrency;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -120,6 +122,6 @@ class Locale extends \Magento\Framework\App\Config\Value
             throw new \Magento\Framework\Exception\LocalizedException(__(join("\n", $exceptions)));
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Log/Cron.php b/app/code/Magento/Config/Model/Config/Backend/Log/Cron.php
index 61695bcf7421e1354aff23bf28f1aa1f1242716b..f278d54ff0d17ab201f33e29f96821ee8368ef4d 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Log/Cron.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Log/Cron.php
@@ -29,6 +29,7 @@ class Cron extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -39,6 +40,7 @@ class Cron extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
@@ -47,13 +49,13 @@ class Cron extends \Magento\Framework\App\Config\Value
     ) {
         $this->_configValueFactory = $configValueFactory;
         $this->_runModelPath = $runModelPath;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Cron settings after save
      *
-     * @return void
+     * @return $this
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function afterSave()
@@ -91,5 +93,6 @@ class Cron extends \Magento\Framework\App\Config\Value
         } catch (\Exception $e) {
             throw new \Magento\Framework\Exception\LocalizedException(__('We can\'t save the Cron expression.'));
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Secure.php b/app/code/Magento/Config/Model/Config/Backend/Secure.php
index ef41a60fe4e562cd012d9676cab78b486251ce97..e933e7d7ef65c22119338667691afa86cd2d6d89 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Secure.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Secure.php
@@ -15,6 +15,7 @@ class Secure extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\View\Asset\MergeService $mergeService
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -24,24 +25,26 @@ class Secure extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\View\Asset\MergeService $mergeService,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_mergeService = $mergeService;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Clean compiled JS/CSS when updating configuration settings
      *
-     * @return void
+     * @return $this
      */
     public function afterSave()
     {
         if ($this->isValueChanged()) {
             $this->_mergeService->cleanMergedJsCss();
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Serialized.php b/app/code/Magento/Config/Model/Config/Backend/Serialized.php
index 28353119f9740a8d53e70df24b132e14f36e1108..08cb70307420cface91d1e24a3940498cfa4a751 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Serialized.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Serialized.php
@@ -19,12 +19,13 @@ class Serialized extends \Magento\Framework\App\Config\Value
     }
 
     /**
-     * @return void
+     * @return $this
      */
     public function beforeSave()
     {
         if (is_array($this->getValue())) {
             $this->setValue(serialize($this->getValue()));
         }
+        return parent::beforeSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Serialized/ArraySerialized.php b/app/code/Magento/Config/Model/Config/Backend/Serialized/ArraySerialized.php
index cdfd0653ec789745e77fb00d636aa0a36dcff12e..2a012697da393a4dc8e35109a135de7f229184dc 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Serialized/ArraySerialized.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Serialized/ArraySerialized.php
@@ -15,7 +15,7 @@ class ArraySerialized extends \Magento\Config\Model\Config\Backend\Serialized
     /**
      * Unset array element with '__empty' key
      *
-     * @return void
+     * @return $this
      */
     public function beforeSave()
     {
@@ -24,6 +24,6 @@ class ArraySerialized extends \Magento\Config\Model\Config\Backend\Serialized
             unset($value['__empty']);
         }
         $this->setValue($value);
-        parent::beforeSave();
+        return parent::beforeSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Store.php b/app/code/Magento/Config/Model/Config/Backend/Store.php
index 69e629569157ab5adcaa6a272b94c19b65aba653..cd50416ba8076be21e30d90bf30d213b676cd547 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Store.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Store.php
@@ -20,6 +20,7 @@ class Store extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\MutableScopeConfigInterface $mutableConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -29,17 +30,18 @@ class Store extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\MutableScopeConfigInterface $mutableConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->_mutableConfig = $mutableConfig;
     }
 
     /**
-     * @return void
+     * @return $this
      */
     public function afterSave()
     {
@@ -49,5 +51,6 @@ class Store extends \Magento\Framework\App\Config\Value
             \Magento\Store\Model\ScopeInterface::SCOPE_STORE
         );
         $this->_cacheManager->clean();
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Backend/Translate.php b/app/code/Magento/Config/Model/Config/Backend/Translate.php
index 28b908668f709afe4ed825b5adc1aae4f2ab19b9..6f6ae7071c74df83a6f557e6bdda3fcedfc683b9 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Translate.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Translate.php
@@ -11,11 +11,6 @@ namespace Magento\Config\Model\Config\Backend;
 
 class Translate extends \Magento\Framework\App\Config\Value
 {
-    /**
-     * @var \Magento\Framework\App\Cache\TypeListInterface
-     */
-    protected $_cacheTypeList;
-
     /**
      * Path to config node with list of caches
      *
@@ -23,40 +18,6 @@ class Translate extends \Magento\Framework\App\Config\Value
      */
     const XML_PATH_INVALID_CACHES = 'dev/translate_inline/invalid_caches';
 
-    /**
-     * Core store config
-     *
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
-     */
-    protected $_scopeConfig;
-
-    /**
-     * Constructor
-     *
-     * @param \Magento\Framework\Model\Context $context
-     * @param \Magento\Framework\Registry $registry
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
-     * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
-     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\Model\Context $context,
-        \Magento\Framework\Registry $registry,
-        \Magento\Framework\App\Config\ScopeConfigInterface $config,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
-        \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
-        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
-        array $data = []
-    ) {
-        $this->_scopeConfig = $scopeConfig;
-        $this->_cacheTypeList = $cacheTypeList;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
-    }
-
     /**
      * Set status 'invalidate' for blocks and other output caches
      *
@@ -65,15 +26,15 @@ class Translate extends \Magento\Framework\App\Config\Value
     public function afterSave()
     {
         $types = array_keys(
-            $this->_scopeConfig->getValue(
+            $this->_config->getValue(
                 self::XML_PATH_INVALID_CACHES,
                 \Magento\Store\Model\ScopeInterface::SCOPE_STORE
             )
         );
         if ($this->isValueChanged()) {
-            $this->_cacheTypeList->invalidate($types);
+            $this->cacheTypeList->invalidate($types);
         }
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Structure/Reader.php b/app/code/Magento/Config/Model/Config/Structure/Reader.php
index 45c04eeb4f01b79f5ce9f61efbd99ab3c8300478..c5a082b32fc21415803b56d2749101aaabaa89ba 100644
--- a/app/code/Magento/Config/Model/Config/Structure/Reader.php
+++ b/app/code/Magento/Config/Model/Config/Structure/Reader.php
@@ -100,7 +100,7 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
             }
         }
 
-        if ($this->_isValidated) {
+        if ($this->validationState->isValidationRequired()) {
             $errors = [];
             if ($configMerger && !$configMerger->validate($this->_schemaFile, $errors)) {
                 $message = "Invalid Document \n";
diff --git a/app/code/Magento/Config/Test/Unit/Controller/Adminhtml/System/Config/SaveTest.php b/app/code/Magento/Config/Test/Unit/Controller/Adminhtml/System/Config/SaveTest.php
index eb5d66c4a62872b5686b064e9121341942cb5ccd..3cbd4c901d1c9a868fe812307226666f1e337c41 100644
--- a/app/code/Magento/Config/Test/Unit/Controller/Adminhtml/System/Config/SaveTest.php
+++ b/app/code/Magento/Config/Test/Unit/Controller/Adminhtml/System/Config/SaveTest.php
@@ -213,7 +213,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             $this->returnValue($backendConfigMock)
         );
 
-        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->_controller->executeInternal());
     }
 
     public function testIndexActionSaveState()
@@ -234,7 +234,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue($data)
         );
-        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->_controller->executeInternal());
     }
 
     public function testIndexActionGetGroupForSave()
@@ -285,7 +285,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         );
         $backendConfigMock->expects($this->once())->method('save');
 
-        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->_controller->executeInternal());
     }
 
     public function testIndexActionSaveAdvanced()
@@ -311,6 +311,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $backendConfigMock->expects($this->once())->method('save');
 
         $this->_cacheMock->expects($this->once())->method('clean')->with(\Zend_Cache::CLEANING_MODE_ALL);
-        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->_controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php
index 38b195ac3363b5671c99cc718ce6c5fdfa739c5d..8f9d418356e0bdab6da12aa0022b8383d88d8239 100644
--- a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php
+++ b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Config\Test\Unit\Model\Config\Backend;
 
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Store\Model\StoreManagerInterface;
 use Magento\Store\Model\Store;
 
@@ -12,25 +13,8 @@ class BaseurlTest extends \PHPUnit_Framework_TestCase
 {
     public function testSaveMergedJsCssMustBeCleaned()
     {
-        $eventDispatcher = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false);
-        $appState = $this->getMock('Magento\Framework\App\State', [], [], '', false);
-        $cacheManager = $this->getMock('Magento\Framework\App\CacheInterface');
-        $logger = $this->getMock('Psr\Log\LoggerInterface');
-        $actionValidatorMock = $this->getMock(
-            'Magento\Framework\Model\ActionValidator\RemoveAction',
-            [],
-            [],
-            '',
-            false
-        );
 
-        $context = new \Magento\Framework\Model\Context(
-            $logger,
-            $eventDispatcher,
-            $cacheManager,
-            $appState,
-            $actionValidatorMock
-        );
+        $context = (new ObjectManager($this))->getObject('Magento\Framework\Model\Context');
 
         $resource = $this->getMock('Magento\Config\Model\ResourceModel\Config\Data', [], [], '', false);
         $resource->expects($this->any())->method('addCommitCallback')->will($this->returnValue($resource));
@@ -40,12 +24,18 @@ class BaseurlTest extends \PHPUnit_Framework_TestCase
         $mergeService = $this->getMock('Magento\Framework\View\Asset\MergeService', [], [], '', false);
         $coreRegistry = $this->getMock('Magento\Framework\Registry', [], [], '', false);
         $coreConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
-
+        $cacheTypeListMock = $this->getMockBuilder('Magento\Framework\App\Cache\TypeListInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
         $model = $this->getMock(
             'Magento\Config\Model\Config\Backend\Baseurl',
             ['getOldValue'],
-            [$context, $coreRegistry, $coreConfig, $mergeService, $resource, $resourceCollection]
+            [$context, $coreRegistry, $coreConfig, $cacheTypeListMock, $mergeService, $resource, $resourceCollection]
         );
+        $cacheTypeListMock->expects($this->once())
+            ->method('invalidate')
+            ->with(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER)
+            ->willReturn($model);
         $mergeService->expects($this->once())->method('cleanMergedJsCss');
 
         $model->setValue('http://example.com/')->setPath(Store::XML_PATH_UNSECURE_BASE_URL);
diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/SecureTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/SecureTest.php
index 25280b8967d64b54bba166fac989e9afe0602734..16bd95fa8250ef79dfe867794fff731c661b31f0 100644
--- a/app/code/Magento/Config/Test/Unit/Model/Config/Backend/SecureTest.php
+++ b/app/code/Magento/Config/Test/Unit/Model/Config/Backend/SecureTest.php
@@ -5,28 +5,13 @@
  */
 namespace Magento\Config\Test\Unit\Model\Config\Backend;
 
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+
 class SecureTest extends \PHPUnit_Framework_TestCase
 {
     public function testSaveMergedJsCssMustBeCleaned()
     {
-        $eventDispatcher = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false);
-        $appState = $this->getMock('Magento\Framework\App\State', [], [], '', false);
-        $cacheManager = $this->getMock('Magento\Framework\App\CacheInterface');
-        $logger = $this->getMock('Psr\Log\LoggerInterface');
-        $actionValidatorMock = $this->getMock(
-            '\Magento\Framework\Model\ActionValidator\RemoveAction',
-            [],
-            [],
-            '',
-            false
-        );
-        $context = new \Magento\Framework\Model\Context(
-            $logger,
-            $eventDispatcher,
-            $cacheManager,
-            $appState,
-            $actionValidatorMock
-        );
+        $context = (new ObjectManager($this))->getObject('Magento\Framework\Model\Context');
 
         $resource = $this->getMock('Magento\Config\Model\ResourceModel\Config\Data', [], [], '', false);
         $resource->expects($this->any())->method('addCommitCallback')->will($this->returnValue($resource));
@@ -36,12 +21,19 @@ class SecureTest extends \PHPUnit_Framework_TestCase
         $mergeService = $this->getMock('Magento\Framework\View\Asset\MergeService', [], [], '', false);
         $coreRegistry = $this->getMock('Magento\Framework\Registry', [], [], '', false);
         $coreConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
+        $cacheTypeListMock = $this->getMockBuilder('Magento\Framework\App\Cache\TypeListInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
 
         $model = $this->getMock(
             'Magento\Config\Model\Config\Backend\Secure',
             ['getOldValue'],
-            [$context, $coreRegistry, $coreConfig, $mergeService, $resource, $resourceCollection]
+            [$context, $coreRegistry, $coreConfig, $cacheTypeListMock, $mergeService, $resource, $resourceCollection]
         );
+        $cacheTypeListMock->expects($this->once())
+            ->method('invalidate')
+            ->with(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER)
+            ->willReturn($model);
         $mergeService->expects($this->once())->method('cleanMergedJsCss');
 
         $model->setValue('new_value');
diff --git a/app/code/Magento/ConfigurableImportExport/Model/Export/RowCustomizer.php b/app/code/Magento/ConfigurableImportExport/Model/Export/RowCustomizer.php
index 4405feba18426579b23073dcd3e89bfcb1851273..2dcde2898de2d426f6605dc2dd128b00bf72b538 100644
--- a/app/code/Magento/ConfigurableImportExport/Model/Export/RowCustomizer.php
+++ b/app/code/Magento/ConfigurableImportExport/Model/Export/RowCustomizer.php
@@ -7,6 +7,7 @@ namespace Magento\ConfigurableImportExport\Model\Export;
 
 use Magento\CatalogImportExport\Model\Export\RowCustomizerInterface;
 use \Magento\CatalogImportExport\Model\Import\Product as ImportProduct;
+use Magento\ImportExport\Model\Import;
 
 class RowCustomizer implements RowCustomizerInterface
 {
@@ -19,12 +20,13 @@ class RowCustomizer implements RowCustomizerInterface
      * Prepare configurable data for export
      *
      * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
-     * @param int $productIds
+     * @param int[] $productIds
      * @return void
      */
     public function prepareData($collection, $productIds)
     {
-        $collection->addAttributeToFilter(
+        $productCollection = clone $collection;
+        $productCollection->addAttributeToFilter(
             'entity_id',
             ['in' => $productIds]
         )->addAttributeToFilter(
@@ -32,7 +34,7 @@ class RowCustomizer implements RowCustomizerInterface
             ['eq' => \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE]
         );
 
-        while ($product = $collection->fetchItem()) {
+        while ($product = $productCollection->fetchItem()) {
             $productAttributesOptions = $product->getTypeInstance()->getConfigurableOptions($product);
 
             foreach ($productAttributesOptions as $productAttributeOption) {
@@ -51,11 +53,11 @@ class RowCustomizer implements RowCustomizerInterface
 
                 foreach ($variations as $sku => $values) {
                     $variations[$sku] =
-                        'sku=' . $sku . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
-                        . implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $values);
+                        'sku=' . $sku . Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+                        . implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $values);
                 }
                 $variations = implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $variations);
-                $variationsLabels = implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $variationsLabels);
+                $variationsLabels = implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $variationsLabels);
 
                 $this->configurableData[$product->getId()] = [
                     'configurable_variations' => $variations,
diff --git a/app/code/Magento/ConfigurableImportExport/Test/Unit/Model/Export/RowCustomizerTest.php b/app/code/Magento/ConfigurableImportExport/Test/Unit/Model/Export/RowCustomizerTest.php
index 65732d3df1df550c4b987a87b4005efd3a5bf223..b067e19c381252aaf7f3fd5eb1c9f79497f1d96f 100644
--- a/app/code/Magento/ConfigurableImportExport/Test/Unit/Model/Export/RowCustomizerTest.php
+++ b/app/code/Magento/ConfigurableImportExport/Test/Unit/Model/Export/RowCustomizerTest.php
@@ -7,6 +7,7 @@
 namespace Magento\ConfigurableImportExport\Test\Unit\Model\Export;
 
 use \Magento\CatalogImportExport\Model\Import\Product as ImportProduct;
+use Magento\ImportExport\Model\Import;
 
 class RowCustomizerTest extends \PHPUnit_Framework_TestCase
 {
@@ -256,17 +257,17 @@ class RowCustomizerTest extends \PHPUnit_Framework_TestCase
         return [
             $this->initiatedProductId => [
                 'configurable_variations' => implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, [
-                    '_sku_' => 'sku=_sku_'  . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
-                        . implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
+                    '_sku_' => 'sku=_sku_'  . Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+                        . implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
                             'code_of_attribute=Option Title',
                             'code_of_attribute=Option Title',
                         ]),
-                    '_sku_2' => 'sku=_sku_2'  . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
-                        . implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
+                    '_sku_2' => 'sku=_sku_2' . Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
+                        . implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
                             'code_of_attribute_2=Option Title 2',
                         ])
                 ]),
-                'configurable_variation_labels' => implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
+                'configurable_variation_labels' => implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, [
                     'code_of_attribute' => 'code_of_attribute=Super attribute label',
                     'code_of_attribute_2' => 'code_of_attribute_2=Super attribute label 2',
                 ]),
@@ -291,6 +292,7 @@ class RowCustomizerTest extends \PHPUnit_Framework_TestCase
     /**
      * @param $object
      * @param $property
+     * @return mixed
      */
     protected function getPropertyValue(&$object, $property)
     {
diff --git a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/AddAttribute.php b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/AddAttribute.php
index 2377de0c5b909e8aa9bf234cb73ce883ba2106dd..ac31893126438e185119eaf4277b9d9777182b20 100644
--- a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/AddAttribute.php
+++ b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/AddAttribute.php
@@ -32,7 +32,7 @@ class AddAttribute extends Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout('popup');
         $this->productBuilder->build($this->getRequest());
diff --git a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Associated/Grid.php b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Associated/Grid.php
index 6eb4facfee9c36125e9da543cfe8565732cdd9e8..6fb61d0548a3616e234cc9625355b225368d7225 100644
--- a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Associated/Grid.php
+++ b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Associated/Grid.php
@@ -33,7 +33,7 @@ class Grid extends Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Layout $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/CreateOptions.php b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/CreateOptions.php
index 7516807654af81978cdc400b4bc62ee9a5afc26b..8e620c749445e3b46b43b2d8b7871119f41530d6 100644
--- a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/CreateOptions.php
+++ b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/CreateOptions.php
@@ -52,7 +52,7 @@ class CreateOptions extends Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->representJson($this->jsonHelper->jsonEncode($this->saveAttributeOptions()));
     }
diff --git a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/GetAttributes.php b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/GetAttributes.php
index 39bee40024eee6c39908bf30e2eccfc2d90fd1b3..b0e66aba601ddae0ccccecdd9358fd829395bd3a 100644
--- a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/GetAttributes.php
+++ b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/GetAttributes.php
@@ -60,7 +60,7 @@ class GetAttributes extends Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->storeManager->setCurrentStore(\Magento\Store\Model\Store::ADMIN_CODE);
         $collection = $this->collectionFactory->create();
diff --git a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributes.php b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributes.php
index 4135ea97ab65342b670686c121065a3d683dffc6..1fabe24b05b44c187ac03a3a476d0a873b816d02 100644
--- a/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributes.php
+++ b/app/code/Magento/ConfigurableProduct/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributes.php
@@ -61,7 +61,7 @@ class SuggestConfigurableAttributes extends Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->storeManager->setCurrentStore(\Magento\Store\Model\Store::ADMIN_CODE);
 
diff --git a/app/code/Magento/ConfigurableProduct/Model/ConfigurableAttributeHandler.php b/app/code/Magento/ConfigurableProduct/Model/ConfigurableAttributeHandler.php
index 239f6d697d745488ce7041b31df0ff7ebfcb92f3..a2f9231a79dd527748d910b9690f2051e501da61 100644
--- a/app/code/Magento/ConfigurableProduct/Model/ConfigurableAttributeHandler.php
+++ b/app/code/Magento/ConfigurableProduct/Model/ConfigurableAttributeHandler.php
@@ -40,7 +40,7 @@ class ConfigurableAttributeHandler
             1
         )->addFieldToFilter(
             'is_global',
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL
         );
     }
 
diff --git a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
index 85eae4dae7cda194432c754ef9d5e841a42d8da5..93f2588d214597ef54278c672963794b66d5d00b 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
@@ -248,7 +248,7 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
      */
     public function canUseAttribute(\Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute)
     {
-        return $attribute->getIsGlobal() == \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL &&
+        return $attribute->getIsGlobal() == \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL &&
             $attribute->getIsVisible() &&
             $attribute->usesSource() &&
             $attribute->getIsUserDefined();
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/AddAttributeTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/AddAttributeTest.php
index f37d40eccf05326bf5c5794a8df271b273dfb9e8..228f44a9a5011a1c852aebc49a03d56323518672 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/AddAttributeTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/AddAttributeTest.php
@@ -102,6 +102,6 @@ class AddAttributeTest extends \PHPUnit_Framework_TestCase
         $layout->expects($this->once())->method('setChild')->willReturnSelf();
         $this->view->expects($this->any())->method('renderLayout')->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributesTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributesTest.php
index d8b1fc5a051eaba1d5456271bd08c143230d8c8d..24ace68cf47353267e6b20f84a9eca30784229c5 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributesTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Controller/Adminhtml/Product/Attribute/SuggestConfigurableAttributesTest.php
@@ -86,6 +86,6 @@ class SuggestConfigurableAttributesTest extends \PHPUnit_Framework_TestCase
             $this->returnValue('body')
         );
         $this->responseMock->expects($this->once())->method('representJson')->with('body');
-        $this->suggestAttributes->execute();
+        $this->suggestAttributes->executeInternal();
     }
 }
diff --git a/app/code/Magento/Contact/Controller/Index.php b/app/code/Magento/Contact/Controller/Index.php
index 8a04b5b7b1d0b6c9a57f88845e3faacfbeb2ac47..28272b87d0c1e2b29a0f0650a3ab6ed5d16462d7 100644
--- a/app/code/Magento/Contact/Controller/Index.php
+++ b/app/code/Magento/Contact/Controller/Index.php
@@ -82,11 +82,11 @@ abstract class Index extends \Magento\Framework\App\Action\Action
      * @return \Magento\Framework\App\ResponseInterface
      * @throws \Magento\Framework\Exception\NotFoundException
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->scopeConfig->isSetFlag(self::XML_PATH_ENABLED, ScopeInterface::SCOPE_STORE)) {
             throw new NotFoundException(__('Page not found.'));
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 }
diff --git a/app/code/Magento/Contact/Controller/Index/Index.php b/app/code/Magento/Contact/Controller/Index/Index.php
index 247728f63f881cbc70817c1ada56bd81702db6a4..c1ff54c71f75a23e3ca92a6424d0c3277897bf2f 100644
--- a/app/code/Magento/Contact/Controller/Index/Index.php
+++ b/app/code/Magento/Contact/Controller/Index/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Contact\Controller\Index
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Contact/Controller/Index/Post.php b/app/code/Magento/Contact/Controller/Index/Post.php
index f5114cd6f68b91b98557cdebf899e3ffbba5a90f..854a2e1561097b856d640f2cd532a5a6154da2b6 100644
--- a/app/code/Magento/Contact/Controller/Index/Post.php
+++ b/app/code/Magento/Contact/Controller/Index/Post.php
@@ -14,7 +14,7 @@ class Post extends \Magento\Contact\Controller\Index
      * @return void
      * @throws \Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         $post = $this->getRequest()->getPostValue();
         if (!$post) {
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
index a914cf698e33b4458a4248b2d424f79c5259cb22..9a980ca0b7c0d8bf1215af8228fab7f35b0d252e 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
@@ -99,6 +99,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->_view->expects($this->once())
             ->method('renderLayout');
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/Index/PostTest.php b/app/code/Magento/Contact/Test/Unit/Controller/Index/PostTest.php
index a508c25a445c2556670d756bef190f7eb85d13bd..d062bb7ad9cd26f4650b6cfde8bef825416308fc 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/Index/PostTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/Index/PostTest.php
@@ -135,7 +135,7 @@ class PostTest extends \PHPUnit_Framework_TestCase
     {
         $this->_request->expects($this->once())->method('getPostValue')->will($this->returnValue([]));
         $this->_redirect->expects($this->once())->method('redirect');
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     /**
@@ -157,7 +157,7 @@ class PostTest extends \PHPUnit_Framework_TestCase
         $this->_inlineTranslation->expects($this->once())
             ->method('suspend');
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     public function testPostDataProvider()
@@ -224,6 +224,6 @@ class PostTest extends \PHPUnit_Framework_TestCase
         $this->_inlineTranslation->expects($this->once())
             ->method('suspend');
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php b/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
index 93f055f4d0a5ff2d57366b012eb81deaec1f62fb..b27d4db46d4c7448dccd8b6cbcae8572accaad1a 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
@@ -78,7 +78,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             )
             ->will($this->returnValue(false));
 
-        $this->_controller->dispatch(
+        $this->_controller->execute(
             $this->getMockForAbstractClass('\Magento\Framework\App\RequestInterface', [], '', false)
         );
     }
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/Stub/IndexStub.php b/app/code/Magento/Contact/Test/Unit/Controller/Stub/IndexStub.php
index 4d4320d4acbf2d0521d059735f1feb302134c2eb..4966ddd26be7cf174d8d924210a379cd84377887 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/Stub/IndexStub.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/Stub/IndexStub.php
@@ -8,7 +8,7 @@ namespace Magento\Contact\Test\Unit\Controller\Stub;
 
 class IndexStub extends \Magento\Contact\Controller\Index
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/app/code/Magento/Contact/Test/Unit/Model/System/Config/Backend/LinksTest.php b/app/code/Magento/Contact/Test/Unit/Model/System/Config/Backend/LinksTest.php
index febdde20240b863408719cd5d1ed3ab59280c9bb..4ed7d5552349de594906825bad8f326409ce331f 100644
--- a/app/code/Magento/Contact/Test/Unit/Model/System/Config/Backend/LinksTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Model/System/Config/Backend/LinksTest.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Contact\Test\Unit\Model\System\Config\Backend;
 
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+
 class LinksTest extends \PHPUnit_Framework_TestCase
 {
     /**
@@ -14,13 +16,7 @@ class LinksTest extends \PHPUnit_Framework_TestCase
 
     public function setUp()
     {
-        $this->_model = new \Magento\Contact\Model\System\Config\Backend\Links(
-            $this->getMock('\Magento\Framework\Model\Context', [], [], '', false),
-            $this->getMock('\Magento\Framework\Registry', [], [], '', false),
-            $this->getMockForAbstractClass('\Magento\Framework\App\Config\ScopeConfigInterface', [], '', false),
-            $this->getMockForAbstractClass('\Magento\Framework\Model\ResourceModel\AbstractResource', [], '', false),
-            $this->getMock('\Magento\Framework\Data\Collection\AbstractDb', [], [], '', false)
-        );
+        $this->_model = (new ObjectManager($this))->getObject('Magento\Contact\Model\System\Config\Backend\Links');
     }
 
     public function testGetIdentities()
diff --git a/app/code/Magento/Cookie/Controller/Index/NoCookies.php b/app/code/Magento/Cookie/Controller/Index/NoCookies.php
index c8ce45e0a38ceec1ce6a7c9c089ff2e4d4ad31b9..edf4949fb0b9f01726093ff321a52b551e686678 100644
--- a/app/code/Magento/Cookie/Controller/Index/NoCookies.php
+++ b/app/code/Magento/Cookie/Controller/Index/NoCookies.php
@@ -13,7 +13,7 @@ class NoCookies extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $redirect = new \Magento\Framework\DataObject();
         $this->_eventManager->dispatch(
diff --git a/app/code/Magento/Cookie/Model/Config/Backend/Domain.php b/app/code/Magento/Cookie/Model/Config/Backend/Domain.php
index 50e5a4782d9e92ee77789effeb1140a48fd70c7c..2f84b6d2fd06750ce41cbb1057f7b30f1a0254de 100644
--- a/app/code/Magento/Cookie/Model/Config/Backend/Domain.php
+++ b/app/code/Magento/Cookie/Model/Config/Backend/Domain.php
@@ -17,6 +17,7 @@ class Domain extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Session\Config\Validator\CookieDomainValidator $configValidator
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -27,13 +28,14 @@ class Domain extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Session\Config\Validator\CookieDomainValidator $configValidator,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->configValidator = $configValidator;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Cookie/Model/Config/Backend/Lifetime.php b/app/code/Magento/Cookie/Model/Config/Backend/Lifetime.php
index bf2b2805dff6d9a71f5467a3e52eaff20f5638e5..9d650159e45016208a00bac18c8a6b36a5f9e7bc 100644
--- a/app/code/Magento/Cookie/Model/Config/Backend/Lifetime.php
+++ b/app/code/Magento/Cookie/Model/Config/Backend/Lifetime.php
@@ -17,6 +17,7 @@ class Lifetime extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Session\Config\Validator\CookieLifetimeValidator $configValidator
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -27,19 +28,20 @@ class Lifetime extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Session\Config\Validator\CookieLifetimeValidator $configValidator,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->configValidator = $configValidator;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Validate a domain name value
      *
-     * @return void
+     * @return $this
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function beforeSave()
@@ -50,5 +52,6 @@ class Lifetime extends \Magento\Framework\App\Config\Value
             $msg = __('Invalid cookie lifetime: ' . join('; ', $this->configValidator->getMessages()));
             throw new \Magento\Framework\Exception\LocalizedException($msg);
         }
+        return parent::beforeSave();
     }
 }
diff --git a/app/code/Magento/Cookie/Model/Config/Backend/Path.php b/app/code/Magento/Cookie/Model/Config/Backend/Path.php
index f64d41dc1f0e62f194819c7aec35f293766cddd5..c0f104bfcff299572ca05783d231f15bebef674f 100644
--- a/app/code/Magento/Cookie/Model/Config/Backend/Path.php
+++ b/app/code/Magento/Cookie/Model/Config/Backend/Path.php
@@ -17,6 +17,7 @@ class Path extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Session\Config\Validator\CookiePathValidator $configValidator
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -27,13 +28,14 @@ class Path extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Session\Config\Validator\CookiePathValidator $configValidator,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->configValidator = $configValidator;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Cookie/Test/Unit/Controller/Index/NoCookiesTest.php b/app/code/Magento/Cookie/Test/Unit/Controller/Index/NoCookiesTest.php
index 7e2db7aeaf5eb8a65602b9d0cc7f17f5f56a4fcd..0d9c3439eda6f4528e83b81c9b0105722220053d 100644
--- a/app/code/Magento/Cookie/Test/Unit/Controller/Index/NoCookiesTest.php
+++ b/app/code/Magento/Cookie/Test/Unit/Controller/Index/NoCookiesTest.php
@@ -95,7 +95,7 @@ class NoCookiesTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->once())->method('setDispatched')->with($this->isTrue());
 
         // Make the call to test
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteRedirectPath()
@@ -126,7 +126,7 @@ class NoCookiesTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->once())->method('setDispatched')->with($this->isTrue());
 
         // Make the call to test
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteDefault()
@@ -139,6 +139,6 @@ class NoCookiesTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->once())->method('setDispatched')->with($this->isTrue());
 
         // Make the call to test
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Cron/Model/Config/Backend/Product/Alert.php b/app/code/Magento/Cron/Model/Config/Backend/Product/Alert.php
index 67d69dfe2b5d6ef2ae6866c12f4cddd71a80a1d8..f46e58be56b8a853c5f0dc1115ed999a8ed815ce 100644
--- a/app/code/Magento/Cron/Model/Config/Backend/Product/Alert.php
+++ b/app/code/Magento/Cron/Model/Config/Backend/Product/Alert.php
@@ -37,6 +37,7 @@ class Alert extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -47,6 +48,7 @@ class Alert extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
@@ -55,11 +57,13 @@ class Alert extends \Magento\Framework\App\Config\Value
     ) {
         $this->_runModelPath = $runModelPath;
         $this->_configValueFactory = $configValueFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
-     * @return void
+     * {@inheritdoc}
+     *
+     * @return $this
      * @throws \Exception
      */
     public function afterSave()
@@ -97,5 +101,7 @@ class Alert extends \Magento\Framework\App\Config\Value
         } catch (\Exception $e) {
             throw new \Exception(__('We can\'t save the cron expression.'));
         }
+
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Cron/Model/Config/Backend/Sitemap.php b/app/code/Magento/Cron/Model/Config/Backend/Sitemap.php
index fecbc2d676eb7e8393eab69f0eace5a99dead111..0fa554959191e62342e5ab4d85612e961e5d2227 100644
--- a/app/code/Magento/Cron/Model/Config/Backend/Sitemap.php
+++ b/app/code/Magento/Cron/Model/Config/Backend/Sitemap.php
@@ -37,6 +37,7 @@ class Sitemap extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -47,6 +48,7 @@ class Sitemap extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
@@ -55,11 +57,11 @@ class Sitemap extends \Magento\Framework\App\Config\Value
     ) {
         $this->_runModelPath = $runModelPath;
         $this->_configValueFactory = $configValueFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
-     * @return void
+     * @return $this
      * @throws \Exception
      */
     public function afterSave()
@@ -97,5 +99,6 @@ class Sitemap extends \Magento\Framework\App\Config\Value
         } catch (\Exception $e) {
             throw new \Exception(__('We can\'t save the cron expression.'));
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php
index 08cb0511025c1d582e3c41e82022b822b3676a77..9cc52750b3db8fae06b26b8ebb27af8a481c1804 100644
--- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php
+++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRates.php
@@ -16,7 +16,7 @@ class FetchRates extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Cur
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\Session $backendSession */
         $backendSession = $this->_objectManager->get('Magento\Backend\Model\Session');
diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/Index.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/Index.php
index 751020010a7b1b073dd4cab24244f4bf7aea4979..1646068a7c46a5e9cb19379ddad74f41917a7ed7 100644
--- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/Index.php
+++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Currency
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_CurrencySymbol::system_currency_rates');
diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/SaveRates.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/SaveRates.php
index 01ba604f11065b040db154c4d422b4882490a500..06e2a760d250ca435701bdcaf3b4c652dd82d49f 100644
--- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/SaveRates.php
+++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/SaveRates.php
@@ -16,7 +16,7 @@ class SaveRates extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Curr
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getParam('rate');
         if (is_array($data)) {
diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Index.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Index.php
index 12ae3374a8876fe1633c25498d09a9e70a2810e6..fdc897735d1e0df6641acd87b145a41270c8e71e 100644
--- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Index.php
+++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Currency
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // set active menu and breadcrumbs
         $this->_view->loadLayout();
diff --git a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Save.php b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Save.php
index 716ca26e493aa4c86f663b4b62dd46ad0a5b81f4..86cb38a43a29f80dc137796ac66c10e0c3b701be 100644
--- a/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Save.php
+++ b/app/code/Magento/CurrencySymbol/Controller/Adminhtml/System/Currencysymbol/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\CurrencySymbol\Controller\Adminhtml\System\Currencys
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $symbolsDataArray = $this->getRequest()->getParam('custom_currency_symbol', null);
         if (is_array($symbolsDataArray)) {
diff --git a/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/IndexTest.php b/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/IndexTest.php
index b75df9bce15b8c98e8c0b754a09c22491f431c31..5584c064d30bf3700053ee71417d9c94c949ee9f 100644
--- a/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/IndexTest.php
+++ b/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/IndexTest.php
@@ -106,6 +106,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->viewMock->expects($this->atLeastOnce())->method('getLayout')->willReturn($this->layoutMock);
         $this->viewMock->expects($this->atLeastOnce())->method('getPage')->willReturn($this->pageMock);
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/SaveTest.php b/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/SaveTest.php
index 5d6b9d997fc073eda72d344b707780d7b6aa0220..7e730e7da55faaf890bfb61e3b40f5a447e1a340 100644
--- a/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/SaveTest.php
+++ b/app/code/Magento/CurrencySymbol/Test/Unit/Controller/Adminhtml/System/Currencysymbol/SaveTest.php
@@ -143,6 +143,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->method('addSuccess')
             ->with(__('You applied the custom currency symbols.'));
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Controller/Account/Confirm.php b/app/code/Magento/Customer/Controller/Account/Confirm.php
index 2403730753968185dac87698ec8e1a6cab237744..26fcce39f20901f647416af7cb3d3e66e98a2653 100644
--- a/app/code/Magento/Customer/Controller/Account/Confirm.php
+++ b/app/code/Magento/Customer/Controller/Account/Confirm.php
@@ -86,7 +86,7 @@ class Confirm extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Customer/Controller/Account/Confirmation.php b/app/code/Magento/Customer/Controller/Account/Confirmation.php
index 6f050098debd2db188bfe041a07b2d279b669ff0..a1da7d92d79f654821a1850e8b58ff093bb89ce1 100644
--- a/app/code/Magento/Customer/Controller/Account/Confirmation.php
+++ b/app/code/Magento/Customer/Controller/Account/Confirmation.php
@@ -59,7 +59,7 @@ class Confirmation extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->session->isLoggedIn()) {
             /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Customer/Controller/Account/Create.php b/app/code/Magento/Customer/Controller/Account/Create.php
index 51e1c151ea8a2956a55d54d8c9400b88ee1ef7e9..fa910d2fbad53ca9f2c662c6242b291133c0b57c 100644
--- a/app/code/Magento/Customer/Controller/Account/Create.php
+++ b/app/code/Magento/Customer/Controller/Account/Create.php
@@ -51,7 +51,7 @@ class Create extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->session->isLoggedIn() || !$this->registration->isAllowed()) {
             /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Customer/Controller/Account/CreatePassword.php b/app/code/Magento/Customer/Controller/Account/CreatePassword.php
index f0288b1f2b424c1f869cb9b20b528c6063558854..889b2538eca2ccaf228f151d79b0381aab39258c 100644
--- a/app/code/Magento/Customer/Controller/Account/CreatePassword.php
+++ b/app/code/Magento/Customer/Controller/Account/CreatePassword.php
@@ -51,7 +51,7 @@ class CreatePassword extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resetPasswordToken = (string)$this->getRequest()->getParam('token');
         $customerId = (int)$this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Customer/Controller/Account/CreatePost.php b/app/code/Magento/Customer/Controller/Account/CreatePost.php
index 8d2c5b81fa416634b64f5f9fecf78aff2d2f1041..3bd8c5bacf8cea46ca70e0f38f1928f7b62c1857 100644
--- a/app/code/Magento/Customer/Controller/Account/CreatePost.php
+++ b/app/code/Magento/Customer/Controller/Account/CreatePost.php
@@ -201,7 +201,7 @@ class CreatePost extends Action implements AccountInterface
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/Edit.php b/app/code/Magento/Customer/Controller/Account/Edit.php
index 3f035bdcdf1f1035dc86aed5ff4d022067394917..4c862f9509efdf6c40943ab1b65d4e8524fa99ef 100644
--- a/app/code/Magento/Customer/Controller/Account/Edit.php
+++ b/app/code/Magento/Customer/Controller/Account/Edit.php
@@ -58,7 +58,7 @@ class Edit extends Action implements AccountInterface
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/EditPost.php b/app/code/Magento/Customer/Controller/Account/EditPost.php
index a61c551b1719f74d454be81705b744d9ac4b3905..8fbc85dac02c8fd60bad48b6e1c8f224fe28d465 100644
--- a/app/code/Magento/Customer/Controller/Account/EditPost.php
+++ b/app/code/Magento/Customer/Controller/Account/EditPost.php
@@ -69,7 +69,7 @@ class EditPost extends Action implements AccountInterface
      * @return \Magento\Framework\Controller\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/ForgotPassword.php b/app/code/Magento/Customer/Controller/Account/ForgotPassword.php
index daeb13e1eaefbf5044d347ab6e45b1c2dac87ccf..53139df7a1ee462c149253df2ceceaf567341fc7 100644
--- a/app/code/Magento/Customer/Controller/Account/ForgotPassword.php
+++ b/app/code/Magento/Customer/Controller/Account/ForgotPassword.php
@@ -44,7 +44,7 @@ class ForgotPassword extends Action implements AccountInterface
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/ForgotPasswordPost.php b/app/code/Magento/Customer/Controller/Account/ForgotPasswordPost.php
index be1d15b56e3af770e10b31a88d0106ffffe625b6..e40689ea1e58c17ffa9b18ce56eb2b07aa25641c 100644
--- a/app/code/Magento/Customer/Controller/Account/ForgotPasswordPost.php
+++ b/app/code/Magento/Customer/Controller/Account/ForgotPasswordPost.php
@@ -51,7 +51,7 @@ class ForgotPasswordPost extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/Index.php b/app/code/Magento/Customer/Controller/Account/Index.php
index c99d8dd199e7d941dc66b346bd35be089d11f975..db90eec8363c03e54ad38ac079157352643a1aad 100644
--- a/app/code/Magento/Customer/Controller/Account/Index.php
+++ b/app/code/Magento/Customer/Controller/Account/Index.php
@@ -35,7 +35,7 @@ class Index extends Action implements AccountInterface
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Account/Login.php b/app/code/Magento/Customer/Controller/Account/Login.php
index ca404047dd27c8e28f5bc400069830d81f37ee2a..72511c59423fbb7386abac23ba5a7bbe5efb980a 100644
--- a/app/code/Magento/Customer/Controller/Account/Login.php
+++ b/app/code/Magento/Customer/Controller/Account/Login.php
@@ -44,7 +44,7 @@ class Login extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->session->isLoggedIn()) {
             /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Customer/Controller/Account/LoginPost.php b/app/code/Magento/Customer/Controller/Account/LoginPost.php
index 7b6191eb2556b8e4c6eb2325519a96fbc23ee21b..b1b3a8b020c9ab9f0ca73bc32fd09aaa8fc6b980 100644
--- a/app/code/Magento/Customer/Controller/Account/LoginPost.php
+++ b/app/code/Magento/Customer/Controller/Account/LoginPost.php
@@ -67,7 +67,7 @@ class LoginPost extends Action implements AccountInterface
      * @return \Magento\Framework\Controller\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->session->isLoggedIn() || !$this->formKeyValidator->validate($this->getRequest())) {
             /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Customer/Controller/Account/Logout.php b/app/code/Magento/Customer/Controller/Account/Logout.php
index be0dcd6ba5e326fec3e6d9276d1588868b0a5c1b..4d070b401cee3983d953937dcf308908e320c4ec 100644
--- a/app/code/Magento/Customer/Controller/Account/Logout.php
+++ b/app/code/Magento/Customer/Controller/Account/Logout.php
@@ -35,7 +35,7 @@ class Logout extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $lastCustomerId = $this->session->getId();
         $this->session->logout()->setBeforeAuthUrl($this->_redirect->getRefererUrl())
diff --git a/app/code/Magento/Customer/Controller/Account/LogoutSuccess.php b/app/code/Magento/Customer/Controller/Account/LogoutSuccess.php
index 77eb53149907d088f7e4432e43990369bf710b48..8185c93a60c9763ace6e6015758828a1fe348280 100644
--- a/app/code/Magento/Customer/Controller/Account/LogoutSuccess.php
+++ b/app/code/Magento/Customer/Controller/Account/LogoutSuccess.php
@@ -35,7 +35,7 @@ class LogoutSuccess extends Action implements AccountInterface
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultPageFactory->create();
     }
diff --git a/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php b/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
index 0e996ea9a809c356ae4dd3adeea49ed2327db0ba..1044c71379f2aef3e3379ee4670aecbc7e6eef01 100644
--- a/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
+++ b/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
@@ -51,7 +51,7 @@ class ResetPasswordPost extends Action implements AccountInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Address.php b/app/code/Magento/Customer/Controller/Address.php
index b527db41ac049163c61f98e53663c85d266e26be..f4ffb6c9dac6ddbb253c8edb6f9cc4196f718659 100644
--- a/app/code/Magento/Customer/Controller/Address.php
+++ b/app/code/Magento/Customer/Controller/Address.php
@@ -120,12 +120,12 @@ abstract class Address extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->_getSession()->authenticate()) {
             $this->_actionFlag->set('', 'no-dispatch', true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Customer/Controller/Address/Delete.php b/app/code/Magento/Customer/Controller/Address/Delete.php
index 6dfa17be32b107e723e9ec81f359eee0230085dc..6c736e3fcdff83e3cba840f7dba30953be2f3cbd 100644
--- a/app/code/Magento/Customer/Controller/Address/Delete.php
+++ b/app/code/Magento/Customer/Controller/Address/Delete.php
@@ -11,7 +11,7 @@ class Delete extends \Magento\Customer\Controller\Address
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $addressId = $this->getRequest()->getParam('id', false);
 
diff --git a/app/code/Magento/Customer/Controller/Address/Edit.php b/app/code/Magento/Customer/Controller/Address/Edit.php
index 0691ffd8ad52739e16de23ed0457ccab39566941..5857b0c64b2e53113ced7e8584102a13f59cbd01 100644
--- a/app/code/Magento/Customer/Controller/Address/Edit.php
+++ b/app/code/Magento/Customer/Controller/Address/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Customer\Controller\Address
      *
      * @return \Magento\Framework\Controller\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Address/Form.php b/app/code/Magento/Customer/Controller/Address/Form.php
index b30d453dce8de18d6a580f2d213a386feecd91a0..6699bf27d5e2c199a567962d7d3c20c71a39b297 100644
--- a/app/code/Magento/Customer/Controller/Address/Form.php
+++ b/app/code/Magento/Customer/Controller/Address/Form.php
@@ -13,7 +13,7 @@ class Form extends \Magento\Customer\Controller\Address
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Address/FormPost.php b/app/code/Magento/Customer/Controller/Address/FormPost.php
index 9360ca0f7d6d369f589a534a1cba0bd7ca489270..eb3e6817dd0603059c535d49aa325805b61b900e 100644
--- a/app/code/Magento/Customer/Controller/Address/FormPost.php
+++ b/app/code/Magento/Customer/Controller/Address/FormPost.php
@@ -176,7 +176,7 @@ class FormPost extends \Magento\Customer\Controller\Address
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $redirectUrl = null;
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
diff --git a/app/code/Magento/Customer/Controller/Address/Index.php b/app/code/Magento/Customer/Controller/Address/Index.php
index b445fa6fbfa1455361dd81360fe1c94cc700d6cd..1d5c09e317b6150b180a8157f66677dec380c8b1 100644
--- a/app/code/Magento/Customer/Controller/Address/Index.php
+++ b/app/code/Magento/Customer/Controller/Address/Index.php
@@ -68,7 +68,7 @@ class Index extends \Magento\Customer\Controller\Address
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $addresses = $this->customerRepository->getById($this->_getSession()->getCustomerId())->getAddresses();
         if (count($addresses)) {
diff --git a/app/code/Magento/Customer/Controller/Address/NewAction.php b/app/code/Magento/Customer/Controller/Address/NewAction.php
index 4bfdabbbd5ef154644e6a12fb1fc43ab156c670e..9bd9402d5e216f7f89537fc64a94c062472ccfb3 100644
--- a/app/code/Magento/Customer/Controller/Address/NewAction.php
+++ b/app/code/Magento/Customer/Controller/Address/NewAction.php
@@ -11,7 +11,7 @@ class NewAction extends \Magento\Customer\Controller\Address
     /**
      * @return \Magento\Framework\Controller\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Configure.php b/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Configure.php
index c74520cb96580002cba99fdafb077335bbd0d09b..ea8a214c16a76f3a9df3f01baefee1c1738430ff 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Configure.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Configure.php
@@ -13,7 +13,7 @@ class Configure extends \Magento\Customer\Controller\Adminhtml\Cart\Product\Comp
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $configureResult = new \Magento\Framework\DataObject();
         try {
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Update.php b/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Update.php
index 42f9ee513a857b28a43b358778fb0a527902cc46..7daaa2cc9ec1a830d459bbdab160e918c2131531 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Update.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Cart/Product/Composite/Cart/Update.php
@@ -13,7 +13,7 @@ class Update extends \Magento\Customer\Controller\Adminhtml\Cart\Product\Composi
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $updateResult = new \Magento\Framework\DataObject();
         try {
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php b/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
index 92961f2a0d40f1c6a710dc8c1fb698e3251d0e83..f4f788c61b715bb97f0fd5e7f7356dad20c47f3a 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
@@ -125,7 +125,7 @@ class InvalidateToken extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if ($customerId = $this->getRequest()->getParam('customer_id')) {
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Group/Delete.php b/app/code/Magento/Customer/Controller/Adminhtml/Group/Delete.php
index 17af771114ffc3fce19876b555d276d7ca4e1434..5b3b91fcf054a0302e34eb516cf2b7970d3834c7 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Group/Delete.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Group/Delete.php
@@ -15,7 +15,7 @@ class Delete extends \Magento\Customer\Controller\Adminhtml\Group
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Group/Edit.php b/app/code/Magento/Customer/Controller/Adminhtml/Group/Edit.php
index 303d2f4f1afffc2e96772587c9b8450ff7cb145b..838cf9b940a1a6a8b6f40d07b843cb92b148df25 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Group/Edit.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Group/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Customer\Controller\Adminhtml\Group
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultForwardFactory->create()->forward('new');
     }
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Group/Index.php b/app/code/Magento/Customer/Controller/Adminhtml/Group/Index.php
index 290e77238ff1123b3f38439c4ab7b77bb8c49823..f80a6fcaa2740ffc362e3cfc1e43aadc05df6b06 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Group/Index.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Group/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Customer\Controller\Adminhtml\Group
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Group/NewAction.php b/app/code/Magento/Customer/Controller/Adminhtml/Group/NewAction.php
index 0750422cd9435689c0b6bdeecb2b553f1e759da7..383af26a0378a3330b4c09c0c876f72d77e11fc7 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Group/NewAction.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Group/NewAction.php
@@ -28,7 +28,7 @@ class NewAction extends \Magento\Customer\Controller\Adminhtml\Group
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $groupId = $this->_initGroup();
 
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Group/Save.php b/app/code/Magento/Customer/Controller/Adminhtml/Group/Save.php
index a842d8653b3398a5effa2d4b8872849b50b3abcc..a775194f12ef9f707268dc9f39dc73c7c0522d75 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Group/Save.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Group/Save.php
@@ -67,7 +67,7 @@ class Save extends \Magento\Customer\Controller\Adminhtml\Group
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $taxClass = (int)$this->getRequest()->getParam('tax_class');
 
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/AbstractMassAction.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/AbstractMassAction.php
index 9a3ca5645f5c73b97be37c20bc7ef6810902927e..096efc640be89592440e4c3b0f1880e2ef1471e2 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/AbstractMassAction.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/AbstractMassAction.php
@@ -51,7 +51,7 @@ abstract class AbstractMassAction extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $collection = $this->filter->getCollection($this->collectionFactory->create());
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
index e1c4dd68c9cdedc61beaf09a035d0ba84ad83084..ff39bf28ac3ac48247c305ae55473e45fba44118 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
@@ -14,7 +14,7 @@ class Cart extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $customerId = $this->initCurrentCustomer();
         $websiteId = $this->getRequest()->getParam('website_id');
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Carts.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Carts.php
index 4c4cb77fa3bd55adc8efa5d9e581b6d5d6c4cd0d..fc4c0c0aecaa900d7b603720509781db91fbd392 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Carts.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Carts.php
@@ -12,7 +12,7 @@ class Carts extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Delete.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Delete.php
index 503969226aa201cbcf2c74a7643f094bdd380612..c8a0615408f8f6fd101104f9812138f7a734e9ce 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Delete.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Delete.php
@@ -14,7 +14,7 @@ class Delete extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         $formKeyIsValid = $this->_formKeyValidator->validate($this->getRequest());
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
index 64af44a9bb84e52306062e71950f59aea2441755..0820fbea9621796a7094051b319169dbe2ff5ac9 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
@@ -18,7 +18,7 @@ class Edit extends \Magento\Customer\Controller\Adminhtml\Index
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         $customerId = $this->initCurrentCustomer();
 
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Index.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Index.php
index b238a8287e70f84ec71938500b355508d3608537..fa9dfbd5529c01ef566c0d2ec839d4ae76c16cca 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Index.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getQuery('ajax')) {
             $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
index f97c48b0ebc1d6e62e2949febdbeda736fee200f..4cbc90e88a50c1c994fc180980183c21a7669cb5 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
@@ -60,7 +60,7 @@ class InlineEdit extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/LastOrders.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/LastOrders.php
index fa0dcca712a90e36a35e3df03c6facb44bb31c65..4711b9e2b1855224ef4fcb797d1b225f80be7c69 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/LastOrders.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/LastOrders.php
@@ -12,7 +12,7 @@ class LastOrders extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/NewAction.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/NewAction.php
index d3bdd1eadfd8e7b1a238514d27ef086e88f8db11..bdb7a8b79a61735064af77a7ce8cc12051db43dc 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/NewAction.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/NewAction.php
@@ -12,7 +12,7 @@ class NewAction extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultForward = $this->resultForwardFactory->create();
         $resultForward->forward('edit');
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Newsletter.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Newsletter.php
index 6c27c0a46bd8f1ce3e3b62049bc89e70e364ed9f..6918cf849549d2328d86f3bb09221ef1732bff3a 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Newsletter.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Newsletter.php
@@ -12,7 +12,7 @@ class Newsletter extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $customerId = $this->initCurrentCustomer();
         /** @var  \Magento\Newsletter\Model\Subscriber $subscriber */
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Orders.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Orders.php
index c825e5c24a85b8f8e83e1a8bf101fbc648e8fc58..1964c95842840fe12c3b85914f0384d6a407e1b2 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Orders.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Orders.php
@@ -12,7 +12,7 @@ class Orders extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/ProductReviews.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/ProductReviews.php
index effaa2618f25a46c66b7d59d5cf50f44277614bb..3a8f93a1c304fcbe47bb816495ef61255ecaeed3 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/ProductReviews.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/ProductReviews.php
@@ -12,7 +12,7 @@ class ProductReviews extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $customerId = $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/ResetPassword.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/ResetPassword.php
index c330eedde0fff30bc960dcacaa7c7e3867690fe1..43c2d474843b118cbfde20f348382a2fc02fbac8 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/ResetPassword.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/ResetPassword.php
@@ -14,7 +14,7 @@ class ResetPassword extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         $customerId = (int)$this->getRequest()->getParam('customer_id', 0);
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
index 2cbe283339dfef950a4bd5ab94263e29a522b56e..b4aa639c817e73a070c15f6ad1df6030f0309413 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
@@ -176,7 +176,7 @@ class Save extends \Magento\Customer\Controller\Adminhtml\Index
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $returnToEdit = false;
         $originalRequestData = $this->getRequest()->getPostValue();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
index bd7230f1aa1d901ab0e31bb49e240c1e18f53679..001726280a424351a5031071cddeea7f4dc52382 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
@@ -107,7 +107,7 @@ class Validate extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         $response->setError(0);
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewCart.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewCart.php
index ee95065596c0aff229956b2b9b14eeabc44dc04d..cda5a37bc0e42d63ec6632365516d29605e4e00d 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewCart.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewCart.php
@@ -12,7 +12,7 @@ class ViewCart extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewWishlist.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewWishlist.php
index 34fa6b66a1187bc68a069db5da9ea1cf3386c8dc..2f201d260289c24c6f95cca3f1153511967f2b1b 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewWishlist.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/ViewWishlist.php
@@ -12,7 +12,7 @@ class ViewWishlist extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Viewfile.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Viewfile.php
index 52a8ea95f9412a577cce39b877c6b92ddfa71dfe..75341af2d6a6c78aa8ec2415ffc18cbdb202953b 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Viewfile.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Viewfile.php
@@ -129,7 +129,7 @@ class Viewfile extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         $file = null;
         $plain = false;
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Wishlist.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Wishlist.php
index 6f7e0e3bfbd81934b39cff712c45c6e83ab3271f..c550f125dc7a27ba66247b04f6658ae030190dab 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Wishlist.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Wishlist.php
@@ -12,7 +12,7 @@ class Wishlist extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $customerId = $this->initCurrentCustomer();
         $itemId = (int)$this->getRequest()->getParam('delete');
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Online/Index.php b/app/code/Magento/Customer/Controller/Adminhtml/Online/Index.php
index 8bd9ce97c3432069f3d62555d8a80502fce41fe2..172622ac17624e8a1abea02dd0f913ecf4272452 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Online/Index.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Online/Index.php
@@ -43,7 +43,7 @@ class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/Validate.php b/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/Validate.php
index f1f638a852e2e21d213cd0bb6a89b49f69a7695a..e8a7b96b4bbe38844f27ed5ca63731a66196496d 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/Validate.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/Validate.php
@@ -31,7 +31,7 @@ class Validate extends \Magento\Customer\Controller\Adminhtml\System\Config\Vali
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->_validate();
 
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/ValidateAdvanced.php b/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/ValidateAdvanced.php
index b3df87ed9ffb089edf7e113aea44f2ee450416a3..8d8d34086870a0dc6cb8ef771f5e0172e09ff3b6 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/ValidateAdvanced.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/System/Config/Validatevat/ValidateAdvanced.php
@@ -30,7 +30,7 @@ class ValidateAdvanced extends \Magento\Customer\Controller\Adminhtml\System\Con
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->_validate();
         $valid = $result->getIsValid();
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Configure.php b/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Configure.php
index 6101483eb983b45c909c5e40f38275ab575e7ccc..31038f2bd083fa5ee271b16e71a4505635906054 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Configure.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Configure.php
@@ -15,7 +15,7 @@ class Configure extends \Magento\Customer\Controller\Adminhtml\Wishlist\Product\
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $configureResult = new \Magento\Framework\DataObject();
         try {
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Update.php b/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Update.php
index cb895085d7f6dc286a55be083740673e0b96b5e5..8e098708fb976eb5bc7c399f81b3147c373f632d 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Update.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Wishlist/Product/Composite/Wishlist/Update.php
@@ -15,7 +15,7 @@ class Update extends \Magento\Customer\Controller\Adminhtml\Wishlist\Product\Com
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         // Update wishlist item
         $updateResult = new \Magento\Framework\DataObject();
diff --git a/app/code/Magento/Customer/Controller/Ajax/Login.php b/app/code/Magento/Customer/Controller/Ajax/Login.php
index 4258ebf1ef0e18d1c4042425036a343860e8ab38..08b72b1e3ec6c437fd67694cc873bc498a4dfa54 100644
--- a/app/code/Magento/Customer/Controller/Ajax/Login.php
+++ b/app/code/Magento/Customer/Controller/Ajax/Login.php
@@ -76,7 +76,7 @@ class Login extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $credentials = null;
         $httpBadRequestCode = 400;
diff --git a/app/code/Magento/Customer/Controller/Ajax/Logout.php b/app/code/Magento/Customer/Controller/Ajax/Logout.php
index 69ce4693b035ebc3644eb74a74b28afc1725b146..4d90a7ae39a2cb44a00d87271f658781b5cc7fbc 100644
--- a/app/code/Magento/Customer/Controller/Ajax/Logout.php
+++ b/app/code/Magento/Customer/Controller/Ajax/Logout.php
@@ -47,7 +47,7 @@ class Logout extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $lastCustomerId = $this->customerSession->getId();
         $this->customerSession->logout()
diff --git a/app/code/Magento/Customer/Controller/Plugin/Account.php b/app/code/Magento/Customer/Controller/Plugin/Account.php
index c035c983d8028b4fce8c9b1edb57f716c582b59e..10f2c8fc15fc2cbc6ef616643101cfb144a7682b 100644
--- a/app/code/Magento/Customer/Controller/Plugin/Account.php
+++ b/app/code/Magento/Customer/Controller/Plugin/Account.php
@@ -41,7 +41,7 @@ class Account
      * @param RequestInterface $request
      * @return mixed
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         ActionInterface $subject,
         \Closure $proceed,
         RequestInterface $request
diff --git a/app/code/Magento/Customer/Controller/Review.php b/app/code/Magento/Customer/Controller/Review.php
index 2a667e4c3e77f6b0a7a29fc70fd4c1bb9b22ccc4..396ad3da6929787cc5847f9876368580cb7d5315 100644
--- a/app/code/Magento/Customer/Controller/Review.php
+++ b/app/code/Magento/Customer/Controller/Review.php
@@ -30,7 +30,7 @@ class Review extends \Magento\Framework\App\Action\Action
     /**
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultPageFactory->create();
     }
diff --git a/app/code/Magento/Customer/Controller/Section/Load.php b/app/code/Magento/Customer/Controller/Section/Load.php
index df4abe308baa59d433515b52d4ab5cbd72fa20da..503c075d9bf0f5c46b0791d8659afbd22beac0d0 100644
--- a/app/code/Magento/Customer/Controller/Section/Load.php
+++ b/app/code/Magento/Customer/Controller/Section/Load.php
@@ -51,7 +51,7 @@ class Load extends \Magento\Framework\App\Action\Action
     /**
      * @return \Magento\Framework\Controller\Result\Json|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
diff --git a/app/code/Magento/Customer/Model/App/Action/ContextPlugin.php b/app/code/Magento/Customer/Model/App/Action/ContextPlugin.php
index a5b268eaa1744d308b3a5a732c44663d4ecd45cc..8198a70957f875e0f47b5348ff8106b995af4d18 100644
--- a/app/code/Magento/Customer/Model/App/Action/ContextPlugin.php
+++ b/app/code/Magento/Customer/Model/App/Action/ContextPlugin.php
@@ -43,7 +43,7 @@ class ContextPlugin
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Customer/Model/Config/Backend/Address/Street.php b/app/code/Magento/Customer/Model/Config/Backend/Address/Street.php
index 7ac2be353e6a403afbb46ee599a880e0704a4bc5..9df2651f2982eac6a0aa3d1ee9c92acc360eb72d 100644
--- a/app/code/Magento/Customer/Model/Config/Backend/Address/Street.php
+++ b/app/code/Magento/Customer/Model/Config/Backend/Address/Street.php
@@ -26,6 +26,7 @@ class Street extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -36,6 +37,7 @@ class Street extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -43,7 +45,7 @@ class Street extends \Magento\Framework\App\Config\Value
         array $data = []
     ) {
         $this->_eavConfig = $eavConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->_storeManager = $storeManager;
     }
 
@@ -71,7 +73,7 @@ class Street extends \Magento\Framework\App\Config\Value
                 break;
         }
         $attribute->save();
-        return $this;
+        return parent::afterSave();
     }
 
     /**
diff --git a/app/code/Magento/Customer/Model/Config/Backend/CreateAccount/DisableAutoGroupAssignDefault.php b/app/code/Magento/Customer/Model/Config/Backend/CreateAccount/DisableAutoGroupAssignDefault.php
index 2f889d0f7c0788ab8d8a0162fe0fea4b9d046484..486e1ac1227b11a8cc672727148b51a3525d5360 100644
--- a/app/code/Magento/Customer/Model/Config/Backend/CreateAccount/DisableAutoGroupAssignDefault.php
+++ b/app/code/Magento/Customer/Model/Config/Backend/CreateAccount/DisableAutoGroupAssignDefault.php
@@ -16,6 +16,7 @@ class DisableAutoGroupAssignDefault extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -25,13 +26,14 @@ class DisableAutoGroupAssignDefault extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->eavConfig = $eavConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Customer/Model/Config/Backend/Show/Customer.php b/app/code/Magento/Customer/Model/Config/Backend/Show/Customer.php
index 31ed960864fcad1679749f632a44a348f21ecf49..5d614685145d9c68ff74e604c813587c5f3a606b 100644
--- a/app/code/Magento/Customer/Model/Config/Backend/Show/Customer.php
+++ b/app/code/Magento/Customer/Model/Config/Backend/Show/Customer.php
@@ -26,6 +26,7 @@ class Customer extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -36,6 +37,7 @@ class Customer extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -43,7 +45,7 @@ class Customer extends \Magento\Framework\App\Config\Value
         array $data = []
     ) {
         $this->_eavConfig = $eavConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->storeManager = $storeManager;
     }
 
diff --git a/app/code/Magento/Customer/Model/Config/Share.php b/app/code/Magento/Customer/Model/Config/Share.php
index 5fb8bacb5743c439a0b19e4e0f16e81d64b06083..4ff773cabc38bc8286a64abb67420bd8d7750958 100644
--- a/app/code/Magento/Customer/Model/Config/Share.php
+++ b/app/code/Magento/Customer/Model/Config/Share.php
@@ -40,6 +40,7 @@ class Share extends \Magento\Framework\App\Config\Value implements \Magento\Fram
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Customer\Model\ResourceModel\Customer $customerResource
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -50,6 +51,7 @@ class Share extends \Magento\Framework\App\Config\Value implements \Magento\Fram
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Customer\Model\ResourceModel\Customer $customerResource,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -58,7 +60,7 @@ class Share extends \Magento\Framework\App\Config\Value implements \Magento\Fram
     ) {
         $this->_storeManager = $storeManager;
         $this->_customerResource = $customerResource;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmTest.php
index f3dee06b411415dc659cc43419cf585aef909165..0a0d2dbbefd07d4d42d5fdaa5eae758e15e994c0 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmTest.php
@@ -190,7 +190,7 @@ class ConfirmTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->model->execute());
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->model->executeInternal());
     }
 
     /**
@@ -232,7 +232,7 @@ class ConfirmTest extends \PHPUnit_Framework_TestCase
             ->with($this->equalTo($testUrl))
             ->willReturnSelf();
 
-        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->model->execute());
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->model->executeInternal());
     }
 
     /**
@@ -307,7 +307,7 @@ class ConfirmTest extends \PHPUnit_Framework_TestCase
             ->method('getStore')
             ->will($this->returnValue($this->storeMock));
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
@@ -404,7 +404,7 @@ class ConfirmTest extends \PHPUnit_Framework_TestCase
             )
             ->willReturn($isSetFlag);
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePasswordTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePasswordTest.php
index 3a1172d0953f30ccee678993a29dbccd20b17e11..6ef1faa6378aee13b793c8cdc137e40f7204e7ff 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePasswordTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePasswordTest.php
@@ -108,7 +108,7 @@ class CreatePasswordTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/createpassword', [])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithSession()
@@ -176,7 +176,7 @@ class CreatePasswordTest extends \PHPUnit_Framework_TestCase
             ->with($token)
             ->willReturnSelf();
 
-        $this->assertEquals($pageMock, $this->model->execute());
+        $this->assertEquals($pageMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -225,6 +225,6 @@ class CreatePasswordTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/forgotpassword', [])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePostTest.php
index c765dc83939220720c4c397a09c333fd852ddfdc..d8815ba253b4729edfbbe559030d7f6edc2ccf60 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreatePostTest.php
@@ -270,7 +270,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
         $this->customerRepository->expects($this->never())
             ->method('save');
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     public function testRegenerateIdOnExecution()
@@ -297,7 +297,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
         $this->storeManagerMock->expects($this->once())
             ->method('getStore')
             ->willReturn($this->storeMock);
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
@@ -391,7 +391,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
             ->method('getTaxCalculationAddressType')
             ->will($this->returnValue($addressType));
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
@@ -539,7 +539,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
             ->method('getStore')
             ->will($this->returnValue($this->storeMock));
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     public function getSuccessRedirectDataProvider()
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreateTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreateTest.php
index 0706355a39fce42f895f2abfc8957f1ca9f3b0cf..894582be4b310e0c46c37f8982c12a992a124f42 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/CreateTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/CreateTest.php
@@ -116,7 +116,7 @@ class CreateTest extends \PHPUnit_Framework_TestCase
         $this->resultPageMock->expects($this->never())
             ->method('getLayout');
 
-        $this->object->execute();
+        $this->object->executeInternal();
     }
 
     /**
@@ -139,6 +139,6 @@ class CreateTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($this->resultPageMock);
 
-        $this->object->execute();
+        $this->object->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/EditPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/EditPostTest.php
index 991a4b17ecab6c4a1370ddff24b61ec035493f02..acd413d000684d63c7f75aeb9908009966e52b25 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/EditPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/EditPostTest.php
@@ -131,7 +131,7 @@ class EditPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->model->execute());
+        $this->assertSame($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testNoPostValues()
@@ -150,7 +150,7 @@ class EditPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->model->execute());
+        $this->assertSame($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testGeneralSave()
@@ -211,7 +211,7 @@ class EditPostTest extends \PHPUnit_Framework_TestCase
             ->with('customer/account')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->model->execute());
+        $this->assertSame($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -311,7 +311,7 @@ class EditPostTest extends \PHPUnit_Framework_TestCase
             ->willReturn($errors['counter']);
 
 
-        $this->assertSame($this->resultRedirect, $this->model->execute());
+        $this->assertSame($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -443,7 +443,7 @@ class EditPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/edit')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->model->execute());
+        $this->assertSame($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/ForgotPasswordPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/ForgotPasswordPostTest.php
index 8f060f2dd3bfff37f3d21a332e09bad8cd6af3a9..0cf693299feecf70e6c126115269ccf8fdc3376b 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/ForgotPasswordPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/ForgotPasswordPostTest.php
@@ -107,7 +107,7 @@ class ForgotPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/forgotpassword')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->controller->execute());
+        $this->assertSame($this->resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecute()
@@ -143,7 +143,7 @@ class ForgotPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteNoSuchEntityException()
@@ -179,7 +179,7 @@ class ForgotPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteException()
@@ -207,7 +207,7 @@ class ForgotPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/forgotpassword')
             ->willReturnSelf();
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     protected function prepareContext()
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
index e71e413d7e11738df8aa86059139958cd34584d8..ca9a975b7cd61c9294b215bc106ee50938a8500f 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
@@ -133,7 +133,7 @@ class LoginPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     /**
@@ -176,7 +176,7 @@ class LoginPostTest extends \PHPUnit_Framework_TestCase
             ->method('getRedirect')
             ->willReturn($this->redirect);
 
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteEmptyLoginData()
@@ -207,7 +207,7 @@ class LoginPostTest extends \PHPUnit_Framework_TestCase
             ->method('getRedirect')
             ->willReturn($this->redirect);
 
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteSuccess()
@@ -255,7 +255,7 @@ class LoginPostTest extends \PHPUnit_Framework_TestCase
             ->method('getRedirect')
             ->willReturn($this->redirect);
 
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     /**
@@ -303,7 +303,7 @@ class LoginPostTest extends \PHPUnit_Framework_TestCase
             ->method('getRedirect')
             ->willReturn($this->redirect);
 
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/ResetPasswordPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/ResetPasswordPostTest.php
index 6cb488a07c6ba503a0ebfe96819fcd1ca805215c..5581be2e75ae7dbaef2d325929a6a42792c26e86 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/ResetPasswordPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/ResetPasswordPostTest.php
@@ -142,7 +142,7 @@ class ResetPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/login', [])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -208,7 +208,7 @@ class ResetPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/createPassword', ['id' => $customerId, 'token' => $token])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithWrongConfirmation()
@@ -255,7 +255,7 @@ class ResetPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/createPassword', ['id' => $customerId, 'token' => $token])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithEmptyPassword()
@@ -302,6 +302,6 @@ class ResetPasswordPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/createPassword', ['id' => $customerId, 'token' => $token])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Address/FormPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Address/FormPostTest.php
index 39fa2018cff7a821bf4fbfa42055ed74aec74986..e082233b6e26ffbd1d6c492efb02c94118a6d258 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Address/FormPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Address/FormPostTest.php
@@ -342,7 +342,7 @@ class FormPostTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testExecuteNoPostData()
@@ -389,7 +389,7 @@ class FormPostTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -575,7 +575,7 @@ class FormPostTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function dataProviderTestExecute()
@@ -668,7 +668,7 @@ class FormPostTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testExecuteException()
@@ -731,6 +731,6 @@ class FormPostTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/IndexTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/IndexTest.php
index 38d6e7d53efae96d30b573e48418ca76638bc514..17c9033803117a8cd4c0c14889261efe2d417705 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/IndexTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/IndexTest.php
@@ -108,7 +108,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      */
     public function testExecute()
     {
@@ -140,12 +140,12 @@ class IndexTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\View\Result\Page',
-            $this->indexController->execute()
+            $this->indexController->executeInternal()
         );
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      */
     public function testExecuteAjax()
     {
@@ -161,7 +161,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Forward',
-            $this->indexController->execute()
+            $this->indexController->executeInternal()
         );
     }
 
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
index e806e30201346c298538a5230d9cbbfbac2a4cd2..181b8dbab6ec0a217c44d3fbe1a06e89c5bcffc7 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
@@ -259,7 +259,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ->method('save')
             ->with($this->customerData);
         $this->prepareMocksForErrorMessagesProcessing();
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteWithoutItems()
@@ -283,7 +283,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
                 'error' => true,
             ])
             ->willReturnSelf();
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteLocalizedException()
@@ -305,7 +305,7 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ->with($exception);
 
         $this->prepareMocksForErrorMessagesProcessing();
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 
     public function testExecuteException()
@@ -327,6 +327,6 @@ class InlineEditTest extends \PHPUnit_Framework_TestCase
             ->with($exception);
 
         $this->prepareMocksForErrorMessagesProcessing();
-        $this->assertSame($this->resultJson, $this->controller->execute());
+        $this->assertSame($this->resultJson, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassAssignGroupTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassAssignGroupTest.php
index 4cbd57be53837fa04ad2072efaba9338370e7041..f78e202b884d20e6baed32425b97cb02f56b3569 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassAssignGroupTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassAssignGroupTest.php
@@ -172,7 +172,7 @@ class MassAssignGroupTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/index')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -191,6 +191,6 @@ class MassAssignGroupTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with('Some message.');
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassDeleteTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassDeleteTest.php
index de91d73d10a762d36ab8cdc07b815a1bdae853ac..dcfc2084e261cff34e064db19f08d99e96a3e123 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassDeleteTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassDeleteTest.php
@@ -172,7 +172,7 @@ class MassDeleteTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/index')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -191,6 +191,6 @@ class MassDeleteTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with('Some message.');
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassSubscribeTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassSubscribeTest.php
index 8aff6b96313fc0e0a2f95bff9e66dc4a00591a91..6e288583c1c9a4ba0da09a161624e9d5f0f1e405 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassSubscribeTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassSubscribeTest.php
@@ -188,7 +188,7 @@ class MassSubscribeTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/index')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -207,6 +207,6 @@ class MassSubscribeTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with('Some message.');
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassUnsubscribeTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassUnsubscribeTest.php
index 00eaa7546e7df9c4db3d7fae1e4a7ddf2a6ef9c7..9129be9c89fd0edc354953fe455ee849c256e8e3 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassUnsubscribeTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/MassUnsubscribeTest.php
@@ -188,7 +188,7 @@ class MassUnsubscribeTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/index')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -207,6 +207,6 @@ class MassUnsubscribeTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with('Some message.');
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/NewsletterTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/NewsletterTest.php
index 97599618c34b0e19a95ca2cbc101a96a35bbb7ad..36c3ff142670e5b3c82a4777a6b4e2787da4a43c 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/NewsletterTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/NewsletterTest.php
@@ -256,7 +256,7 @@ class NewsletterTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\View\Result\Layout',
-            $this->_testedObject->execute()
+            $this->_testedObject->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ResetPasswordTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ResetPasswordTest.php
index a4a9df750dceb1cf517cb53faf1e841dc8058c2b..416f8055bec7673c6857ad9aac1a6bd354edd601 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ResetPasswordTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ResetPasswordTest.php
@@ -236,7 +236,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->_testedObject->execute()
+            $this->_testedObject->executeInternal()
         );
     }
 
@@ -290,7 +290,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->_testedObject->execute()
+            $this->_testedObject->executeInternal()
         );
     }
 
@@ -329,7 +329,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
             ->method('addMessage')
             ->with($error);
 
-        $this->_testedObject->execute();
+        $this->_testedObject->executeInternal();
     }
 
     public function testResetPasswordActionCoreExceptionWarn()
@@ -358,7 +358,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
             ->method('addMessage')
             ->with(new \Magento\Framework\Message\Error($warningText));
 
-        $this->_testedObject->execute();
+        $this->_testedObject->executeInternal();
     }
 
     public function testResetPasswordActionException()
@@ -399,7 +399,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
             $this->equalTo('Something went wrong while resetting customer password.')
         );
 
-        $this->_testedObject->execute();
+        $this->_testedObject->executeInternal();
     }
 
     public function testResetPasswordActionSendEmail()
@@ -479,7 +479,7 @@ class ResetPasswordTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->_testedObject->execute()
+            $this->_testedObject->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/SaveTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/SaveTest.php
index 95c875393ed6aa1ee372f32b153640c80d48d237..dee2600fb3397923d6a0e2e5e4f1a850608665c8 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/SaveTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/SaveTest.php
@@ -239,7 +239,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testExecuteWithExistentCustomer()
@@ -512,11 +512,11 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/edit', ['id' => $customerId, '_current' => true])
             ->willReturn(true);
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testExecuteWithNewCustomer()
@@ -760,11 +760,11 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('customer/index', [])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testExecuteWithNewCustomerAndValidationException()
@@ -900,11 +900,11 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/new', ['_current' => true])
             ->willReturn(true);
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testExecuteWithNewCustomerAndLocalizedException()
@@ -1040,11 +1040,11 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/new', ['_current' => true])
             ->willReturn(true);
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
-     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Customer\Controller\Adminhtml\Index\Index::executeInternal
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testExecuteWithNewCustomerAndException()
@@ -1181,6 +1181,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('customer/*/new', ['_current' => true])
             ->willReturn(true);
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ValidateTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ValidateTest.php
index f4065cc205e8155c13d00a43dc55b0e21cb136a1..c7abdf3bb46ef3d7834069187909e49e0b7fdb7e 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ValidateTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ValidateTest.php
@@ -186,7 +186,7 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
             ->method('validate')
             ->willReturn($validationResult);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithoutAddresses()
@@ -225,7 +225,7 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
             ->method('validate')
             ->willReturn($validationResult);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -271,6 +271,6 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
             ->method('validate')
             ->willReturn($validationResult);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ViewfileTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ViewfileTest.php
index afa437c58ac333be011fd707ac4734e094509cba..3b838c369b0a5f7c43b3be5e247cc5ccf8a309fa 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ViewfileTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/ViewfileTest.php
@@ -107,7 +107,7 @@ class ViewfileTest extends \PHPUnit_Framework_TestCase
     {
         /** @var \Magento\Customer\Controller\Adminhtml\Index\Viewfile $controller */
         $controller = $this->objectManager->getObject('Magento\Customer\Controller\Adminhtml\Index\Viewfile');
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     public function testExecuteParamFile()
@@ -154,7 +154,7 @@ class ViewfileTest extends \PHPUnit_Framework_TestCase
                 'fileFactory' => $fileFactoryMock
             ]
         );
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     public function testExecuteGetParamImage()
@@ -217,6 +217,6 @@ class ViewfileTest extends \PHPUnit_Framework_TestCase
                 'resultRawFactory' => $this->resultRawFactoryMock
             ]
         );
-        $this->assertSame($this->resultRawMock, $controller->execute());
+        $this->assertSame($this->resultRawMock, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/System/Config/Validatevat/ValidateTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/System/Config/Validatevat/ValidateTest.php
index ac5625eadef26d993703ae10a3a29d25d43653ec..377f7d331a6d3d43c05a09418dd97ca4f88825fc 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/System/Config/Validatevat/ValidateTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/System/Config/Validatevat/ValidateTest.php
@@ -104,7 +104,7 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
             ])
             ->willReturn($json);
 
-        $this->assertEquals($json, $this->controller->execute());
+        $this->assertEquals($json, $this->controller->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Ajax/LoginTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Ajax/LoginTest.php
index 77260f56c584d03aa54b3589d2979932e8c1484c..e1ec62d35378ac6ad52ae6ce0ddd22d342dde0c9 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Ajax/LoginTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Ajax/LoginTest.php
@@ -204,7 +204,7 @@ class LoginTest extends \PHPUnit_Framework_TestCase
             ->method('setData')
             ->with($result)
             ->willReturn($loginSuccessResponse);
-        $this->assertEquals($loginSuccessResponse, $this->object->execute());
+        $this->assertEquals($loginSuccessResponse, $this->object->executeInternal());
     }
 
     public function testLoginFailure()
@@ -260,6 +260,6 @@ class LoginTest extends \PHPUnit_Framework_TestCase
             ->with($result)
             ->willReturn($loginFailureResponse);
 
-        $this->assertEquals($loginFailureResponse, $this->object->execute());
+        $this->assertEquals($loginFailureResponse, $this->object->executeInternal());
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Plugin/AccountTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Plugin/AccountTest.php
index 8146fce1aa3df0afbada1b802660869feb6a51fe..2c65115532100de62487d5b721a81b3d699899eb 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Plugin/AccountTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Plugin/AccountTest.php
@@ -87,9 +87,9 @@ class AccountTest extends \PHPUnit_Framework_TestCase
      * @param boolean $isActionAllowed
      * @param boolean $isAuthenticated
      *
-     * @dataProvider dataProviderAroundDispatch
+     * @dataProvider dataProviderAroundExecute
      */
-    public function testAroundDispatch(
+    public function testAroundExecute(
         $action,
         $allowedActions,
         $isActionAllowed,
@@ -128,11 +128,11 @@ class AccountTest extends \PHPUnit_Framework_TestCase
         $plugin = new Account($this->session, $allowedActions);
         $this->assertEquals(
             self::EXPECTED_VALUE,
-            $plugin->aroundDispatch($this->subject, $this->proceed, $this->request)
+            $plugin->aroundExecute($this->subject, $this->proceed, $this->request)
         );
     }
 
-    public function dataProviderAroundDispatch()
+    public function dataProviderAroundExecute()
     {
         return [
             [
diff --git a/app/code/Magento/Customer/Test/Unit/Model/Address/Config/ReaderTest.php b/app/code/Magento/Customer/Test/Unit/Model/Address/Config/ReaderTest.php
index 751b2b8cf68b5efb94531f0917d6eb486dbe5528..558d5845f1f07a91cc1a5d9b57e939b659406676 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/Address/Config/ReaderTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/Address/Config/ReaderTest.php
@@ -74,7 +74,9 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
 
         $this->_schemaLocator = new \Magento\Customer\Model\Address\Config\SchemaLocator($moduleReader);
         $this->_validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $this->_validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $this->_validationState->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_model = new \Magento\Customer\Model\Address\Config\Reader(
             $this->_fileResolverMock,
diff --git a/app/code/Magento/Customer/Test/Unit/Model/Address/Config/XsdTest.php b/app/code/Magento/Customer/Test/Unit/Model/Address/Config/XsdTest.php
index a69261461775b839c858dd2a5e37e8d833611d1d..3b3ac8221cb1a68ff872c891323e7eeefbdf421d 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/Address/Config/XsdTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/Address/Config/XsdTest.php
@@ -27,7 +27,10 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     public function testExemplarXml($fixtureXml, array $expectedErrors)
     {
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, '%message%');
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, '%message%');
         $actualResult = $dom->validate($this->_schemaFile, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
diff --git a/app/code/Magento/Customer/Test/Unit/Model/App/Action/ContextPluginTest.php b/app/code/Magento/Customer/Test/Unit/Model/App/Action/ContextPluginTest.php
index 4d338cef2aaea6fea5c889e0e44b933005a22609..f246b0e9559dd30d6da744c0905f336f5a527769 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/App/Action/ContextPluginTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/App/Action/ContextPluginTest.php
@@ -74,9 +74,9 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * Test aroundDispatch
+     * Test aroundExecute
      */
-    public function testAroundDispatch()
+    public function testAroundExecute()
     {
         $this->customerSessionMock->expects($this->once())
             ->method('getCustomerGroupId')
@@ -96,7 +96,7 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
             );
         $this->assertEquals(
             'ExpectedValue',
-            $this->plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 }
diff --git a/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportCsv.php b/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportCsv.php
index d078bd13b335ee55dda3cd4294733d75b930357c..8afd580c5b4a952a6e9f8a688eca8f845ef4ebaa 100644
--- a/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportCsv.php
+++ b/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportCsv.php
@@ -37,7 +37,7 @@ class ExportCsv extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customers.csv';
diff --git a/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportXml.php b/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportXml.php
index 7a5edb1d2782960e789f5a50d9082ddaf5ba311b..686e829e3c5d98e8dd84c5e2492a666a1553f216 100644
--- a/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportXml.php
+++ b/app/code/Magento/CustomerImportExport/Controller/Adminhtml/Index/ExportXml.php
@@ -37,7 +37,7 @@ class ExportXml extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customers.xml';
diff --git a/app/code/Magento/Developer/Model/Config/Backend/AllowedIps.php b/app/code/Magento/Developer/Model/Config/Backend/AllowedIps.php
index 531e4fc64c3907c591edcc5a1256dc392cec6b4b..d2b481ca06ec3a146ad31c4d403d8b6b523fe7e4 100644
--- a/app/code/Magento/Developer/Model/Config/Backend/AllowedIps.php
+++ b/app/code/Magento/Developer/Model/Config/Backend/AllowedIps.php
@@ -30,6 +30,7 @@ class AllowedIps extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
      * @param \Magento\Framework\Escaper $escaper
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -40,6 +41,7 @@ class AllowedIps extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Message\ManagerInterface $messageManager,
         \Magento\Framework\Escaper $escaper,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -48,7 +50,7 @@ class AllowedIps extends \Magento\Framework\App\Config\Value
     ) {
         $this->messageManager = $messageManager;
         $this->escaper = $escaper;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Directory/Controller/Adminhtml/Json/CountryRegion.php b/app/code/Magento/Directory/Controller/Adminhtml/Json/CountryRegion.php
index 412028bdd8f78bb0fcf36eb8f492055575004b1a..b8006ccfd07086ce2b8319af2526c7e02cce86cb 100644
--- a/app/code/Magento/Directory/Controller/Adminhtml/Json/CountryRegion.php
+++ b/app/code/Magento/Directory/Controller/Adminhtml/Json/CountryRegion.php
@@ -13,7 +13,7 @@ class CountryRegion extends \Magento\Backend\App\Action
      *
      * @return string
      */
-    public function execute()
+    public function executeInternal()
     {
         $arrRes = [];
 
diff --git a/app/code/Magento/Directory/Controller/Currency/SwitchAction.php b/app/code/Magento/Directory/Controller/Currency/SwitchAction.php
index b8aada56cf7fd804c69cb98897ee91f264cb6d7b..1a30600ef8aab7277e01b1f69bd95e9382b7dde8 100644
--- a/app/code/Magento/Directory/Controller/Currency/SwitchAction.php
+++ b/app/code/Magento/Directory/Controller/Currency/SwitchAction.php
@@ -11,7 +11,7 @@ class SwitchAction extends \Magento\Framework\App\Action\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Store\Model\StoreManagerInterface $storeManager */
         $storeManager = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface');
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/File/Upload.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/File/Upload.php
index 6e056ee9e45a4c76c5701cca37e7d56563dc878c..a762b2d52c21702be0493f0a3a8dbb92869320f2 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/File/Upload.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/File/Upload.php
@@ -69,7 +69,7 @@ class Upload extends \Magento\Downloadable\Controller\Adminhtml\Downloadable\Fil
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $type = $this->getRequest()->getParam('type');
         $tmpPath = '';
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
index 926491e0735952576f902a774d0738c67181876b..1d966b22bfb1dbb1ef9a1d9af5bed0c1371a8942 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
@@ -13,7 +13,7 @@ class Form extends \Magento\Catalog\Controller\Adminhtml\Product\Edit
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initProduct();
         $this->getResponse()->setBody(
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Link.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Link.php
index 0da0cf5fb96f8e865f8c21e14c09c01d20432eb8..9cc1bb7b00fb1c439b262fc8c5d42529661c83f3 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Link.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Link.php
@@ -77,7 +77,7 @@ class Link extends \Magento\Catalog\Controller\Adminhtml\Product\Edit
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $linkId = $this->getRequest()->getParam('id', 0);
         $type = $this->getRequest()->getParam('type', 0);
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Sample.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Sample.php
index 746b5242d5ca4206aa1ec442e0ec39e9a20d76dc..3176cb802ca2f4c6d96a0d59a8340277194783c5 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Sample.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Sample.php
@@ -31,7 +31,7 @@ class Sample extends \Magento\Downloadable\Controller\Adminhtml\Downloadable\Pro
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $sampleId = $this->getRequest()->getParam('id', 0);
         /** @var \Magento\Downloadable\Model\Sample $sample */
diff --git a/app/code/Magento/Downloadable/Controller/Customer/Products.php b/app/code/Magento/Downloadable/Controller/Customer/Products.php
index 78e865dd8c323488dbed6fab2c70f8e3b4df38f8..b05852738e179dd241dbbe406aecb62d5fd7ae21 100644
--- a/app/code/Magento/Downloadable/Controller/Customer/Products.php
+++ b/app/code/Magento/Downloadable/Controller/Customer/Products.php
@@ -34,14 +34,14 @@ class Products extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $loginUrl = $this->_objectManager->get('Magento\Customer\Model\Url')->getLoginUrl();
 
         if (!$this->_customerSession->authenticate($loginUrl)) {
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
@@ -49,7 +49,7 @@ class Products extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         if ($block = $this->_view->getLayout()->getBlock('downloadable_customer_products_list')) {
diff --git a/app/code/Magento/Downloadable/Controller/Download/Link.php b/app/code/Magento/Downloadable/Controller/Download/Link.php
index c2cd4b91b92d6fce9e77b40583ca94a0a9898c90..59f49533c9eaff4f28af5ae5d3b314e12eb03bba 100644
--- a/app/code/Magento/Downloadable/Controller/Download/Link.php
+++ b/app/code/Magento/Downloadable/Controller/Download/Link.php
@@ -31,7 +31,7 @@ class Link extends \Magento\Downloadable\Controller\Download
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         $session = $this->_getCustomerSession();
 
diff --git a/app/code/Magento/Downloadable/Controller/Download/LinkSample.php b/app/code/Magento/Downloadable/Controller/Download/LinkSample.php
index 351fc26c55c5f73eb3d02914e044da4b69267a2c..46747905711ef77420924c358fc59bc5d9883b65 100644
--- a/app/code/Magento/Downloadable/Controller/Download/LinkSample.php
+++ b/app/code/Magento/Downloadable/Controller/Download/LinkSample.php
@@ -17,7 +17,7 @@ class LinkSample extends \Magento\Downloadable\Controller\Download
      * @return ResponseInterface
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         $linkId = $this->getRequest()->getParam('link_id', 0);
         /** @var \Magento\Downloadable\Model\Link $link */
diff --git a/app/code/Magento/Downloadable/Controller/Download/Sample.php b/app/code/Magento/Downloadable/Controller/Download/Sample.php
index a8cecbc48bd075a86d2f201c024d3e790fcadff2..c6715dbf90c1ec75dfbafa92c31b921928fe9cf5 100644
--- a/app/code/Magento/Downloadable/Controller/Download/Sample.php
+++ b/app/code/Magento/Downloadable/Controller/Download/Sample.php
@@ -17,7 +17,7 @@ class Sample extends \Magento\Downloadable\Controller\Download
      * @return ResponseInterface
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         $sampleId = $this->getRequest()->getParam('sample_id', 0);
         /** @var \Magento\Downloadable\Model\Sample $sample */
diff --git a/app/code/Magento/Downloadable/Setup/InstallData.php b/app/code/Magento/Downloadable/Setup/InstallData.php
index 28b92d361ce2c926c445bac20c57b9ca94253459..594f08fad3d9f23b64245b3ceb300f2f7941ff42 100644
--- a/app/code/Magento/Downloadable/Setup/InstallData.php
+++ b/app/code/Magento/Downloadable/Setup/InstallData.php
@@ -56,7 +56,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
@@ -82,7 +82,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
@@ -107,7 +107,7 @@ class InstallData implements InstallDataInterface
                 'input' => '',
                 'class' => '',
                 'source' => '',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'visible' => false,
                 'required' => true,
                 'user_defined' => false,
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/File/UploadTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/File/UploadTest.php
index 7c1040876e8b0ffbf40e70dbb7ea3335113dbb2b..1a900b56c3f7a3d043476627ef3204000b6f59d5 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/File/UploadTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/File/UploadTest.php
@@ -165,6 +165,6 @@ class UploadTest extends \PHPUnit_Framework_TestCase
         $this->resultFactory->expects($this->once())->method('create')->willReturn($resultJson);
         $resultJson->expects($this->once())->method('setData')->willReturnSelf();
 
-        $this->assertEquals($resultJson, $this->upload->execute());
+        $this->assertEquals($resultJson, $this->upload->executeInternal());
     }
 }
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/LinkTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/LinkTest.php
index 5e8c472595f660ddb4a033561d432df87c434aa5..887e35d8b11544c454026e8f1a55a1539b42550f 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/LinkTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/LinkTest.php
@@ -171,7 +171,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
         $this->objectManager->expects($this->once())->method('create')
             ->will($this->returnValue($this->linkModel));
 
-        $this->link->execute();
+        $this->link->executeInternal();
     }
 
     /**
@@ -217,7 +217,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
         $this->objectManager->expects($this->once())->method('create')
             ->will($this->returnValue($this->linkModel));
 
-        $this->link->execute();
+        $this->link->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/SampleTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/SampleTest.php
index 88f7b2a301c09c802e11d7859f3c55c5ccb66226..e2de4bde3478f74e42ee9ca28233c089c497779e 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/SampleTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Downloadable/Product/Edit/SampleTest.php
@@ -164,7 +164,7 @@ class SampleTest extends \PHPUnit_Framework_TestCase
         $this->objectManager->expects($this->once())->method('create')
             ->will($this->returnValue($this->sampleModel));
 
-        $this->sample->execute();
+        $this->sample->executeInternal();
     }
 
     /**
@@ -205,6 +205,6 @@ class SampleTest extends \PHPUnit_Framework_TestCase
         $this->objectManager->expects($this->once())->method('create')
             ->will($this->returnValue($this->sampleModel));
 
-        $this->sample->execute();
+        $this->sample->executeInternal();
     }
 }
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkSampleTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkSampleTest.php
index 110ce5fe279120a9d3849a8e55871184de0b8699..9d58bbd27efc332508fa9418861afb50485cd54c 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkSampleTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkSampleTest.php
@@ -191,7 +191,7 @@ class LinkSampleTest extends \PHPUnit_Framework_TestCase
         $this->redirect->expects($this->once())->method('getRedirectUrl')->willReturn('redirect_url');
         $this->response->expects($this->once())->method('setRedirect')->with('redirect_url')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->linkSample->execute());
+        $this->assertEquals($this->response, $this->linkSample->executeInternal());
     }
 
     public function testExecuteLinkTypeFile()
@@ -238,6 +238,6 @@ class LinkSampleTest extends \PHPUnit_Framework_TestCase
         $this->redirect->expects($this->once())->method('getRedirectUrl')->willReturn('redirect_url');
         $this->response->expects($this->once())->method('setRedirect')->with('redirect_url')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->linkSample->execute());
+        $this->assertEquals($this->response, $this->linkSample->executeInternal());
     }
 }
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkTest.php
index 7801f285941000e0c1eccbb7f01fe21bab22dec2..939b3786f129597bfc4212ee5a01ced67816583d 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/LinkTest.php
@@ -236,7 +236,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
             ->with("We can't find the link you requested.");
         $this->redirect->expects($this->once())->method('redirect')->with($this->response, '*/customer/products', []);
 
-        $this->assertEquals($this->response, $this->link->execute());
+        $this->assertEquals($this->response, $this->link->executeInternal());
     }
 
     public function testGetLinkForGuestCustomer()
@@ -287,7 +287,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
             ->willReturn('before_auth_url');
         $this->session->expects($this->once())->method('setBeforeAuthUrl')->with('before_auth_url')->willReturnSelf();
 
-        $this->assertNull($this->link->execute());
+        $this->assertNull($this->link->executeInternal());
     }
 
     public function testGetLinkForWrongCustomer()
@@ -327,7 +327,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
             ->with("We can't find the link you requested.");
         $this->redirect->expects($this->once())->method('redirect')->with($this->response, '*/customer/products', []);
 
-        $this->assertEquals($this->response, $this->link->execute());
+        $this->assertEquals($this->response, $this->link->executeInternal());
     }
 
     public function testExceptionInUpdateLinkStatus()
@@ -371,7 +371,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
         $this->redirect->expects($this->once())->method('redirect')->with($this->response, '*/customer/products', []);
 
-        $this->assertEquals($this->response, $this->link->execute());
+        $this->assertEquals($this->response, $this->link->executeInternal());
     }
 
     private function processDownload($resource, $resourceType)
@@ -448,7 +448,7 @@ class LinkTest extends \PHPUnit_Framework_TestCase
         $this->linkPurchasedItem->expects($this->once())->method('getStatus')->willReturn($status);
         $this->messageManager->expects($this->once())->method($messageType)->with($notice)->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->link->execute());
+        $this->assertEquals($this->response, $this->link->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/SampleTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/SampleTest.php
index 7366846899d6fd39dc1be3e8fcce0777a4263371..42933e534d00efa123f7ef12f8758a9773f781ef 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Download/SampleTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Download/SampleTest.php
@@ -191,7 +191,7 @@ class SampleTest extends \PHPUnit_Framework_TestCase
         $this->redirect->expects($this->once())->method('getRedirectUrl')->willReturn('redirect_url');
         $this->response->expects($this->once())->method('setRedirect')->with('redirect_url')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->sample->execute());
+        $this->assertEquals($this->response, $this->sample->executeInternal());
     }
 
     public function testExecuteLinkTypeFile()
@@ -234,6 +234,6 @@ class SampleTest extends \PHPUnit_Framework_TestCase
         $this->redirect->expects($this->once())->method('getRedirectUrl')->willReturn('redirect_url');
         $this->response->expects($this->once())->method('setRedirect')->with('redirect_url')->willReturnSelf();
 
-        $this->assertEquals($this->response, $this->sample->execute());
+        $this->assertEquals($this->response, $this->sample->executeInternal());
     }
 }
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/ScopedAttributeInterface.php b/app/code/Magento/Eav/Model/Entity/Attribute/ScopedAttributeInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..2b2412fe05bb440e6bf2dbb3d837b670db77dc70
--- /dev/null
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/ScopedAttributeInterface.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Eav\Model\Entity\Attribute;
+
+interface ScopedAttributeInterface
+{
+    const SCOPE_STORE = 0;
+
+    const SCOPE_GLOBAL = 1;
+
+    const SCOPE_WEBSITE = 2;
+}
diff --git a/app/code/Magento/Eav/Model/Entity/Setup/PropertyMapper.php b/app/code/Magento/Eav/Model/Entity/Setup/PropertyMapper.php
index 0a1587fc8fc3f7a25c8a70ff5e76348e5efeeca9..f7b565f9055edccb78469e254779ea79aadbc04b 100644
--- a/app/code/Magento/Eav/Model/Entity/Setup/PropertyMapper.php
+++ b/app/code/Magento/Eav/Model/Entity/Setup/PropertyMapper.php
@@ -35,7 +35,11 @@ class PropertyMapper extends PropertyMapperAbstract
             'default_value' => $this->_getValue($input, 'default'),
             'is_unique' => $this->_getValue($input, 'unique', 0),
             'note' => $this->_getValue($input, 'note'),
-            'is_global' => $this->_getValue($input, 'global', Attribute::SCOPE_GLOBAL)
+            'is_global' => $this->_getValue(
+                $input,
+                'global',
+                \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL
+            )
         ];
     }
 }
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate.php
index 116d88710173e97f8e9af57ea125f6f3da5389f7..3ffb0528e23f60d551fccdc0bcae31f99b59f120 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate.php
@@ -32,7 +32,7 @@ class DefaultTemplate extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $template = $this->_initTemplate('id');
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Delete.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Delete.php
index 7022d18ff3cc9700f85fd4ec83da3461dd290bb7..04127a7c311c13b750af484becb31fa8bfdc9bcb 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Delete.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $template = $this->_initTemplate('id');
         if ($template->getId()) {
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Edit.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Edit.php
index 017f05898d99ac9a93d7ee31cb319011ecc57d53..653094a7baf512bc136f492618505c21be2b1ce5 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Edit.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $template = $this->_initTemplate('id');
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Grid.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Grid.php
index 8205fa3e7dfb3775c8f2b9ef1c9faa2d0088e0f1..0a63dad7192af9e0216921619eb0483d0c76565c 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Grid.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Index.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Index.php
index 39f1684934517d97dbec800bec6a3d5ea0e72e26..892affd8da87a636801698f126f572b92a9287c9 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Index.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getQuery('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/NewAction.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/NewAction.php
index 4e405353acf027ca1c0640a2fd7df3ce4754b1e1..b92f01f12bf014dcbc1ed386eed29e3a2188c68b 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/NewAction.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
index c85cc7d4a6c486a755d1d23702b8513de24a48b6..81558a7805c863c52fb8f52c7aafa428eceb4e2b 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
@@ -13,7 +13,7 @@ class Preview extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_view->loadLayout();
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
index ecb8f8c55ad57e73cca70f4043e772945be45c02..be2022ffa7e7791dd3d6d80cb390a3c58a9642f2 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
@@ -15,7 +15,7 @@ class Save extends \Magento\Email\Controller\Adminhtml\Email\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $request = $this->getRequest();
         $id = $this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/EditTest.php b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/EditTest.php
index 905318c274a3901b8f43cfc3f8afed87b4e04bdc..6838b1ba1b1fc3bdd6688081c40aaf11f930bbc8 100644
--- a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/EditTest.php
+++ b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/EditTest.php
@@ -184,7 +184,7 @@ class EditTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Edit::execute
+     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Edit::executeInternal
      */
     public function testExecuteNewTemplate()
     {
@@ -217,11 +217,11 @@ class EditTest extends \PHPUnit_Framework_TestCase
                 ]
             );
 
-        $this->assertNull($this->editController->execute());
+        $this->assertNull($this->editController->executeInternal());
     }
 
     /**
-     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Edit::execute
+     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Edit::executeInternal
      */
     public function testExecuteEdit()
     {
@@ -254,6 +254,6 @@ class EditTest extends \PHPUnit_Framework_TestCase
                 ]
             );
 
-        $this->assertNull($this->editController->execute());
+        $this->assertNull($this->editController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/IndexTest.php b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/IndexTest.php
index c5ada6573f6b86c0c52a99a850944c56aacfc26b..027e66b1670e10927c9588510b197fe218f4f0cb 100644
--- a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/IndexTest.php
+++ b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/IndexTest.php
@@ -118,9 +118,9 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Index::execute
+     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Index::executeInternal
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $this->prepareExecute();
 
@@ -157,13 +157,13 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('addLink')
             ->willReturnSelf();
 
-        $this->assertNull($this->indexController->execute());
+        $this->assertNull($this->indexController->executeInternal());
     }
 
     /**
-     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Index::execute
+     * @covers \Magento\Email\Controller\Adminhtml\Email\Template\Index::executeInternal
      */
-    public function testExecuteAjax()
+    public function testExecuteInternalAjax()
     {
         $this->prepareExecute(true);
         $indexController = $this->getMockBuilder('Magento\Email\Controller\Adminhtml\Email\Template\Index')
@@ -176,7 +176,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $indexController->expects($this->once())
             ->method('_forward')
             ->with('grid');
-        $this->assertNull($indexController->execute());
+        $this->assertNull($indexController->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
index 59fccebfe385890f7535394a0cb60f8c001feebd..e1f80f7f1336e084b30c18314f635998ab366de1 100644
--- a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
+++ b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
@@ -95,7 +95,7 @@ class PreviewTest extends \PHPUnit_Framework_TestCase
         ]);
     }
 
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $this->viewMock->expects($this->once())
             ->method('getPage')
@@ -110,6 +110,6 @@ class PreviewTest extends \PHPUnit_Framework_TestCase
             ->method('prepend')
             ->willReturnSelf();
 
-        $this->assertNull($this->object->execute());
+        $this->assertNull($this->object->executeInternal());
     }
 }
diff --git a/app/code/Magento/Email/Test/Unit/Model/Template/Config/ReaderTest.php b/app/code/Magento/Email/Test/Unit/Model/Template/Config/ReaderTest.php
index e572b67abee1ea3d2fad797cdd9f580cbb65a888..baf28034f78b386e3036891e87bf4ca0c14968ca 100644
--- a/app/code/Magento/Email/Test/Unit/Model/Template/Config/ReaderTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/Template/Config/ReaderTest.php
@@ -69,8 +69,10 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         );
         $schemaLocator = new \Magento\Email\Model\Template\Config\SchemaLocator($moduleReader);
 
-        $validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface', [], [], '', true);
+        $validationStateMock->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_moduleDirResolver = $this->getMock(
             'Magento\Framework\Module\Dir\ReverseResolver',
@@ -109,7 +111,7 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
             $fileResolver,
             $this->_converter,
             $schemaLocator,
-            $validationState
+            $validationStateMock
         );
     }
 
diff --git a/app/code/Magento/Email/Test/Unit/Model/Template/Config/XsdTest.php b/app/code/Magento/Email/Test/Unit/Model/Template/Config/XsdTest.php
index f2eb7b69f76d8bb955898f4adaf0f38d83716c1c..ed03f792be1828a2a67bb057ac7e9928ba51d7e7 100644
--- a/app/code/Magento/Email/Test/Unit/Model/Template/Config/XsdTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/Template/Config/XsdTest.php
@@ -113,7 +113,10 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     protected function _testXmlAgainstXsd($fixtureXml, $schemaFile, array $expectedErrors)
     {
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, '%message%');
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, '%message%');
         $actualResult = $dom->validate($schemaFile, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
diff --git a/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Index.php b/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Index.php
index 0c2ad5395a93edf006ba312a1bd87d67f6e97703..31b7833485ffddb1f6508633f3f0f8a1114eed79 100644
--- a/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Index.php
+++ b/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Index.php
@@ -16,7 +16,7 @@ class Index extends \Magento\EncryptionKey\Controller\Adminhtml\Crypt\Key
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\App\DeploymentConfig\Writer $writer */
         $writer = $this->_objectManager->get('Magento\Framework\App\DeploymentConfig\Writer');
diff --git a/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Save.php b/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Save.php
index b06c18cae6b64194b168c8170f87ea4b989e1191..6921d482c1d230e89df1b9a33d046422c79a0c51 100644
--- a/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Save.php
+++ b/app/code/Magento/EncryptionKey/Controller/Adminhtml/Crypt/Key/Save.php
@@ -50,7 +50,7 @@ class Save extends \Magento\EncryptionKey\Controller\Adminhtml\Crypt\Key
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $key = null;
diff --git a/app/code/Magento/EncryptionKey/Test/Unit/Controller/Adminhtml/Crypt/Key/SaveTest.php b/app/code/Magento/EncryptionKey/Test/Unit/Controller/Adminhtml/Crypt/Key/SaveTest.php
index f4f697418343d467ccc06c061c6bd78b1b9d705a..13f8f772138e37860449c5419367eb820a748367 100644
--- a/app/code/Magento/EncryptionKey/Test/Unit/Controller/Adminhtml/Crypt/Key/SaveTest.php
+++ b/app/code/Magento/EncryptionKey/Test/Unit/Controller/Adminhtml/Crypt/Key/SaveTest.php
@@ -90,7 +90,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->cacheMock->expects($this->once())->method('clean');
         $this->responseMock->expects($this->once())->method('setRedirect');
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     public function testExecuteNonRandomAndWithoutCryptKey()
@@ -108,7 +108,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->willReturn($key);
         $this->managerMock->expects($this->once())->method('addErrorMessage');
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     public function testExecuteRandom()
@@ -125,6 +125,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->cacheMock->expects($this->once())->method('clean');
         $this->responseMock->expects($this->once())->method('setRedirect');
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 }
diff --git a/app/code/Magento/GoogleAdwords/Model/Config/Backend/AbstractConversion.php b/app/code/Magento/GoogleAdwords/Model/Config/Backend/AbstractConversion.php
index b3cc66a1ed13c0bd06ae5ffdc4bc35b06aa892ea..d86e2dc5565ed04f1bc1fe3a7e5da25d82cb010d 100644
--- a/app/code/Magento/GoogleAdwords/Model/Config/Backend/AbstractConversion.php
+++ b/app/code/Magento/GoogleAdwords/Model/Config/Backend/AbstractConversion.php
@@ -26,6 +26,7 @@ abstract class AbstractConversion extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\Validator\DataObjectFactory $validatorCompositeFactory
      * @param \Magento\GoogleAdwords\Model\Validator\Factory $validatorFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -36,13 +37,14 @@ abstract class AbstractConversion extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Validator\DataObjectFactory $validatorCompositeFactory,
         \Magento\GoogleAdwords\Model\Validator\Factory $validatorFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
 
         $this->_validatorFactory = $validatorFactory;
         $this->_validatorComposite = $validatorCompositeFactory->create();
diff --git a/app/code/Magento/GroupedImportExport/Model/Import/Product/Type/Grouped.php b/app/code/Magento/GroupedImportExport/Model/Import/Product/Type/Grouped.php
index 6bccd71831032751861b547a66224fe88c8cf27f..3185df16bdb3bc95e55f46361d911a07e4f7bde7 100644
--- a/app/code/Magento/GroupedImportExport/Model/Import/Product/Type/Grouped.php
+++ b/app/code/Magento/GroupedImportExport/Model/Import/Product/Type/Grouped.php
@@ -8,6 +8,7 @@
 namespace Magento\GroupedImportExport\Model\Import\Product\Type;
 
 use Magento\CatalogImportExport\Model\Import\Product;
+use Magento\ImportExport\Model\Import;
 
 class Grouped extends \Magento\CatalogImportExport\Model\Import\Product\Type\AbstractType
 {
@@ -76,7 +77,7 @@ class Grouped extends \Magento\CatalogImportExport\Model\Import\Product\Type\Abs
                 if (!$this->_entityModel->isRowAllowedToImport($rowData, $rowNum) || empty($associatedSkusQty)) {
                     continue;
                 }
-                $associatedSkusAndQtyPairs = explode(Product::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $associatedSkusQty);
+                $associatedSkusAndQtyPairs = explode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $associatedSkusQty);
                 $position = 0;
                 foreach ($associatedSkusAndQtyPairs as $associatedSkuAndQty) {
                     ++$position;
diff --git a/app/code/Magento/GroupedProduct/Controller/Adminhtml/Edit/Popup.php b/app/code/Magento/GroupedProduct/Controller/Adminhtml/Edit/Popup.php
index 5a46c44b01fd41f20a4e48fde629fb2dc00f301b..258c74c4bafb03a13b903f086b401cf48eb7892d 100644
--- a/app/code/Magento/GroupedProduct/Controller/Adminhtml/Edit/Popup.php
+++ b/app/code/Magento/GroupedProduct/Controller/Adminhtml/Edit/Popup.php
@@ -62,7 +62,7 @@ class Popup extends AbstractAction
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int)$this->getRequest()->getParam('id');
 
diff --git a/app/code/Magento/GroupedProduct/Test/Unit/Controller/Adminhtml/Edit/PopupTest.php b/app/code/Magento/GroupedProduct/Test/Unit/Controller/Adminhtml/Edit/PopupTest.php
index 4daa62a813c2c1379e4cda9318f805b7d9823df6..fab1db70710464522416a7c6709c0be90cd67a53 100644
--- a/app/code/Magento/GroupedProduct/Test/Unit/Controller/Adminhtml/Edit/PopupTest.php
+++ b/app/code/Magento/GroupedProduct/Test/Unit/Controller/Adminhtml/Edit/PopupTest.php
@@ -118,7 +118,7 @@ class PopupTest extends \PHPUnit_Framework_TestCase
         $this->request->expects($this->at(3))->method('getParam')->with('set')->will($this->returnValue($setId));
         $this->registry->expects($this->once())->method('register')->with('current_product', $product);
 
-        $this->assertSame($this->resultLayoutMock, $this->action->execute());
+        $this->assertSame($this->resultLayoutMock, $this->action->executeInternal());
     }
 
     public function testPopupActionWithProductIdNoSetId()
@@ -155,6 +155,6 @@ class PopupTest extends \PHPUnit_Framework_TestCase
         $this->request->expects($this->at(3))->method('getParam')->with('set')->will($this->returnValue($setId));
         $this->registry->expects($this->once())->method('register')->with('current_product', $product);
 
-        $this->assertSame($this->resultLayoutMock, $this->action->execute());
+        $this->assertSame($this->resultLayoutMock, $this->action->executeInternal());
     }
 }
diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php
index 71f342b5b585770f34adcd495b10e90090280213..1a8f446b1de5d0c355c2c87ec3d5bc3bddc39869 100644
--- a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php
+++ b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\ImportExport\Block\Adminhtml\Import\Edit;
 
+use Magento\ImportExport\Model\Import;
 use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface;
 
 /**
@@ -170,7 +171,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
                     'required' => true,
                     'disabled' => true,
                     'class' => $behaviorCode,
-                    'value' => ',',
+                    'value' => Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
                 ]
             );
         }
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Export.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Export.php
index a223c72ccd190a334da45cb15bd6a51d6b89ff82..343c24d910461acbcc2c9b62eae2089a2b29c69d 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Export.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Export.php
@@ -37,7 +37,7 @@ class Export extends ExportController
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getPost(ExportModel::FILTER_ELEMENT_GROUP)) {
             try {
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/GetFilter.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/GetFilter.php
index 7e50e5fca3062d7feb807a0a8888ab2502af6c74..81d0aa4a8e3cbb5f1a4701070ea358787d6ea9d4 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/GetFilter.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/GetFilter.php
@@ -15,7 +15,7 @@ class GetFilter extends ExportController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getParams();
         if ($this->getRequest()->isXmlHttpRequest() && $data) {
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Index.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Index.php
index 9b1a0c3ecbdf5beeae1ed0f02a1752d55020f460..a9f4b02e784555766d3ff16437dfd9b6b2c9d7f4 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Index.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/Index.php
@@ -15,7 +15,7 @@ class Index extends ExportController
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php
index 84d3cb4d59b0a40b9e5a174bb296bdea15c224ab..64ab7b253d8c3fc69a28dea77d8d0bde5b88c5f4 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php
@@ -37,7 +37,7 @@ class Download extends \Magento\ImportExport\Controller\Adminhtml\History
      *
      * @return void|\Magento\Backend\App\Action
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = $this->getRequest()->getParam('filename');
 
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Index.php b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Index.php
index 5c88c232807dcf901a109fcd21220d41b815126a..df70dff2a4083b1600ad022c3590866ff09f99ce 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Index.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Index.php
@@ -15,7 +15,7 @@ class Index extends HistoryController
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Download.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Download.php
index 005a2b0cde1212220c2667c47b8445fdc859c141..5982658bb5160d60d9c70a64dce7067dd4e1fada 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Download.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Download.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\ImportExport\Controller\Adminhtml\Import;
 
+use Magento\Framework\Component\ComponentRegistrar;
 use Magento\ImportExport\Controller\Adminhtml\Import as ImportController;
 use Magento\Framework\App\Filesystem\DirectoryList;
 
@@ -26,9 +27,9 @@ class Download extends ImportController
     protected $readFactory;
 
     /**
-     * @var \Magento\Framework\Module\Dir\Reader
+     * @var \Magento\Framework\Component\ComponentRegistrar
      */
-    protected $reader;
+    protected $componentRegistrar;
 
     /**
      * @var \Magento\Framework\App\Response\Http\FileFactory
@@ -42,14 +43,14 @@ class Download extends ImportController
      * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
      * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
      * @param \Magento\Framework\Filesystem\Directory\ReadFactory $readFactory
-     * @param \Magento\Framework\Module\Dir\Reader $reader
+     * @param ComponentRegistrar $componentRegistrar
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         \Magento\Framework\App\Response\Http\FileFactory $fileFactory,
         \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
         \Magento\Framework\Filesystem\Directory\ReadFactory $readFactory,
-        \Magento\Framework\Module\Dir\Reader $reader
+        \Magento\Framework\Component\ComponentRegistrar $componentRegistrar
     ) {
         parent::__construct(
             $context
@@ -57,7 +58,7 @@ class Download extends ImportController
         $this->fileFactory = $fileFactory;
         $this->resultRawFactory = $resultRawFactory;
         $this->readFactory = $readFactory;
-        $this->reader = $reader;
+        $this->componentRegistrar = $componentRegistrar;
     }
 
     /**
@@ -65,11 +66,11 @@ class Download extends ImportController
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = $this->getRequest()->getParam('filename') . '.csv';
-        $moduleDir = $this->reader->getModuleDir('', self::SAMPLE_FILES_MODULE);
-        $fileAbsolutePath = $moduleDir . '/' . $fileName;
+        $moduleDir = $this->componentRegistrar->getPath(ComponentRegistrar::MODULE, self::SAMPLE_FILES_MODULE);
+        $fileAbsolutePath = $moduleDir . '/Files/Sample/' . $fileName;
         $directoryRead = $this->readFactory->create($moduleDir);
         $filePath = $directoryRead->getRelativePath($fileAbsolutePath);
 
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Index.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Index.php
index ec4f027d4a9ac8dfc1e57e9f5ae3a43306057da6..6bf064e68694843890523f3a22b8e503658038ee 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Index.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Index.php
@@ -15,7 +15,7 @@ class Index extends ImportController
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->messageManager->addNotice(
             $this->_objectManager->get('Magento\ImportExport\Helper\Data')->getMaxUploadSizeMessage()
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
index 54c9049bcc91df196cf112062d57a14ccd060962..d58b1a1f81f55d618ab7cd3d44ed8e9cd50b96ae 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
@@ -38,7 +38,7 @@ class Start extends ImportResultController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         if ($data) {
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Validate.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Validate.php
index 631966a9a40c20c1c7e5d2d440ea36bafc4b6101..bc009302895e1edd477b80bbb9a944a22a564fef 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Validate.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Validate.php
@@ -19,7 +19,7 @@ class Validate extends ImportResultController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
diff --git a/app/code/Magento/ImportExport/Files/Sample/catalog_product.csv b/app/code/Magento/ImportExport/Files/Sample/catalog_product.csv
index 488c1f0894b2615eceea828215b854b5e3526550..8d9eaaa5e9a41447dd57fd55f82f927ea13ff1ee 100644
--- a/app/code/Magento/ImportExport/Files/Sample/catalog_product.csv
+++ b/app/code/Magento/ImportExport/Files/Sample/catalog_product.csv
@@ -1,8 +1,7 @@
-sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,custom_options,configurable_variations,configurable_variation_prices,configurable_variation_labels,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values
-24-WG085,,Sprite Yoga Strap,simple,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap 6 foot,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and urable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",14,,,,sprite-yoga-strap-6-foot,Meta Title,"meta1, meta2, meta3",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 15:38,01.07.2015 15:38,,,Block after Info Column,,,,,,,,,,,,,"has_options=0,required_options=0,size_strap=6 foot",100,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087","/sample_data/l/u/luma-yoga-strap.jpg,/sample_data/l/u/luma-yoga-strap.jpg","Image,Image","name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Gold|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Silver|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=yoga3sku,option_title=Platinum",,,,,,,,
-24-WG086,,Sprite Yoga Strap,simple,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap 8 foot,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>8' long x 1.0"" wide.<li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",17,,,,sprite-yoga-strap-8-foot,Meta Title,"meta1, meta2, meta4",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 15:38,01.07.2015 15:38,,,Block after Info Column,,,,,,,,,,,,,"has_options=0,required_options=0,size_strap=8 foot",100,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087","/sample_data/l/u/luma-yoga-strap.jpg,/sample_data/l/u/luma-yoga-strap.jpg","Image,Image",,,,,,,,,
-24-WG087,,Sprite Yoga Strap,simple,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap 10 foot,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>10' long x 1.0"" wide.<li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",21,,,,sprite-yoga-strap-10-foot,Meta Title,"meta1, meta2, meta5",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 15:39,01.07.2015 15:39,,,Block after Info Column,,,,,,,,,,,,,"has_options=0,required_options=0,size_strap=10 foot",100,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087","/sample_data/l/u/luma-yoga-strap.jpg,/sample_data/l/u/luma-yoga-strap.jpg","Image,Image",,,,,,,,,
-24-WG085_Group,,Gear,grouped,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Set of Sprite Yoga Straps,"<p>Great set of Sprite Yoga Straps for every stretch and hold you need. There are three straps in this set: 6', 8' and 10'.</p><ul><li> 100% soft and durable cotton.<li> Plastic cinch buckle is easy to use.<li> Choice of three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,,"Catalog, Search",,,,,set-of-sprite-yoga-straps,Meta Title,"meta1, meta2, meta6",meta description,/sample_data/l/u/luma-yoga-strap-set.jpg,Image Label,/sample_data/l/u/luma-yoga-strap-set.jpg,Image Label,/sample_data/l/u/luma-yoga-strap-set.jpg,Image Label,01.07.2015 15:39,01.07.2015 15:39,,,Block after Info Column,,,,,,,,,,,,,"has_options=0,required_options=0",0,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087",/sample_data/l/u/luma-yoga-strap-set.jpg,"Image,Image",,,,,,,,,
-24-WG085-configurable,,Sprite Yoga Strap,configurable,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",14,,,,sprite-yoga-strap1,Meta Title,"meta1, meta2, meta7",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 16:15,01.07.2015 16:15,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,required_options=1",0,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087",/sample_data/l/u/luma-yoga-strap.jpg,"Image,Image",,"sku=24-WG086,size_strap=8 foot|sku=24-WG087,size_strap=10 foot|sku=24-WG085,size_strap=6 foot","name=size_strap,value=8 foot,price=3.0000,price_type=fixed|name=size_strap,value=10 foot,price=7.0000,price_type=fixed|name=size_strap,value=6 foot,price=,price_type=fixed",size_strap=Size Strap,,,,,
-24-WG085-bundle-dynamic,,Sprite Yoga Strap,bundle,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",14,,,,sprite-yoga-strap2,Meta Title,"meta1, meta2, meta8",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 16:15,01.07.2015 16:15,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,required_options=1",0,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087",/sample_data/l/u/luma-yoga-strap.jpg,"Image,Image",,,,,dynamic,dynamic,Price Range,fixed,"name=Bundle Option One1,type=dropdown,required=1,sku=bunsimplesku30,price=15; price_type=fixed, default_qty=1, is_defaul=0 | name=Bundle Option One1,type=dropdown; required=1, sku=bunsimplesku31,price=10, price_type=fixed, default_qty=1, is_defaul=1"
-24-WG085-bundle-fixed,,Sprite Yoga Strap,bundle,Default Category/Gear|Default Category/Gear/Fitness Equipment,base,Sprite Yoga Strap,"<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,,1,Taxable Goods,"Catalog, Search",14,,,,sprite-yoga-strap3,Meta Title,"meta1, meta2, meta9",meta description,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,/sample_data/l/u/luma-yoga-strap.jpg,Image Label,01.07.2015 16:15,01.07.2015 16:15,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,required_options=1",0,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,1,"24-WG086,24-WG087","24-WG086,24-WG087","24-WG086,24-WG087",/sample_data/l/u/luma-yoga-strap.jpg,"Image,Image",,,,,fixed,fixed,Price Range,fixed,"name=Yoga Strap,type=radiobutton,required=1,sku=24-WG086,default_qty=3,default=1 | name=Yoga Strap,type=radiobutton,required=1,sku=24-WG085,default_qty=3,default=0"
+sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,deferred_stock_update,use_config_deferred_stock_update,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,custom_options,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values,associated_skus
+24-WG085,,Default,simple,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Sprite Yoga Strap 6 foot","<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and urable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,1.0000,1,"Taxable Goods","Catalog, Search",14.0000,,,,sprite-yoga-strap-6-foot,"Meta Title","meta1, meta2, meta3","meta description",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label","2015-10-25 03:34:19","2015-10-25 03:34:20",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=1,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",100.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,0,1,1,0.0000,1,0,0,1,0,1,"24-WG087,24-WG086","24-WG087,24-WG086","24-WG087,24-WG086",/l/u/luma-yoga-strap.jpg,Image,,"name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Gold|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Silver|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=yoga3sku,option_title=Platinum",,,,,,
+24-WG086,,Default,simple,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Sprite Yoga Strap 8 foot","<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>8' long x 1.0"" wide.<li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,1.0000,1,"Taxable Goods","Catalog, Search",17.0000,,,,sprite-yoga-strap-8-foot,"Meta Title","meta1, meta2, meta4","meta description",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label","2015-10-25 03:34:20","2015-10-25 03:34:20",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=0,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",100.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,0,1,1,0.0000,1,0,0,1,0,1,24-WG087,24-WG087,24-WG087,/l/u/luma-yoga-strap.jpg,Image,,,,,,,,
+24-WG087,,Default,simple,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Sprite Yoga Strap 10 foot","<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>10' long x 1.0"" wide.<li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,1.0000,1,"Taxable Goods","Catalog, Search",21.0000,,,,sprite-yoga-strap-10-foot,"Meta Title","meta1, meta2, meta5","meta description",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label",/l/u/luma-yoga-strap.jpg,"Image Label","2015-10-25 03:34:20","2015-10-25 03:34:20",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=0,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",100.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,0,1,1,0.0000,1,0,0,1,0,1,24-WG086,24-WG086,24-WG086,/l/u/luma-yoga-strap.jpg,Image,,,,,,,,
+24-WG085_Group,,Default,grouped,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Set of Sprite Yoga Straps","<p>Great set of Sprite Yoga Straps for every stretch and hold you need. There are three straps in this set: 6', 8' and 10'.</p><ul><li>100% soft and durable cotton.</li><li>Plastic cinch buckle is easy to use.</li><li>Choice of three natural colors made from phthalate and heavy metal free dyes.</li></ul>",,,1,,"Catalog, Search",,,,,set-of-sprite-yoga-straps,"Meta Title","meta1, meta2, meta6","meta description",/l/u/luma-yoga-strap-set.jpg,Image,/l/u/luma-yoga-strap-set.jpg,Image,/l/u/luma-yoga-strap-set.jpg,Image,"2015-10-25 03:34:20","2015-10-25 03:36:31",,,"Block after Info Column",,,,,,,,,,,,,"has_options=0,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",0.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,1,1,1,0.0000,1,0,0,1,0,1,"24-WG087,24-WG086","24-WG087,24-WG086","24-WG087,24-WG086",/l/u/luma-yoga-strap-set.jpg,Image,,,,,,,,"24-WG085=5.0000,24-WG086=5.0000"
+24-WG085-bundle-dynamic,,Default,bundle,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Sprite Yoga Strap Dynamic Bundle","<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,1.0000,1,"Taxable Goods","Catalog, Search",14.0000,,,,sprite-yoga-strap2,"Meta Title","meta1, meta2, meta8","meta description",/l/u/luma-yoga-strap.jpg,,/l/u/luma-yoga-strap.jpg,,/l/u/luma-yoga-strap.jpg,,"2015-10-25 03:34:20","2015-10-25 03:34:20",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=1,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",0.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,0,1,1,0.0000,1,0,0,1,0,1,"24-WG087,24-WG086","24-WG087,24-WG086","24-WG087,24-WG086",/l/u/luma-yoga-strap.jpg,Image,,,dynamic,dynamic,"Price range",fixed,"name=Bundle Option One1,type=select,required=1,sku=24-WG085,price=15.0000,default=0,default_qty=1.0000,price_type=fixed|name=Bundle Option One1,type=select,required=1,sku=24-WG086,price=10.0000,default=1,default_qty=1.0000,price_type=fixed",
+24-WG085-bundle-fixed,,Default,bundle,"Default Category/Gear,Default Category/Gear/Fitness Equipment",base,"Sprite Yoga Strap Fixed Bundle","<p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal free dyes.</ul>",,1.0000,1,"Taxable Goods","Catalog, Search",14.0000,,,,sprite-yoga-strap3,"Meta Title","meta1, meta2, meta9","meta description",/l/u/luma-yoga-strap.jpg,,/l/u/luma-yoga-strap.jpg,,/l/u/luma-yoga-strap.jpg,,"2015-10-25 03:34:20","2015-10-25 03:34:20",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=1,is_returnable=Use config,quantity_and_stock_status=In Stock,required_options=0",0.0000,0.0000,1,0,0,1,1.0000,0,0.0000,1,1,,1,0,1,1,0.0000,1,0,0,1,0,1,"24-WG087,24-WG086","24-WG087,24-WG086","24-WG087,24-WG086",/l/u/luma-yoga-strap.jpg,Image,,,fixed,fixed,"Price range",fixed,"name=Yoga Strap,type=radio,required=1,sku=24-WG086,price=0.0000,default=1,default_qty=3.0000,price_type=percent|name=Yoga Strap,type=radio,required=1,sku=24-WG085,price=0.0000,default=0,default_qty=3.0000,price_type=percent",
diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php
index 3742d5e54f3e3120ce59ab2cfd23c722dd3d9d7c..1d9984df7944d48824226beed2fb1973f5e3d173 100644
--- a/app/code/Magento/ImportExport/Model/Import.php
+++ b/app/code/Magento/ImportExport/Model/Import.php
@@ -80,6 +80,11 @@ class Import extends \Magento\ImportExport\Model\AbstractModel
 
     /**#@-*/
 
+    /**
+     * default delimiter for several values in one cell as default for FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR
+     */
+    const DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR = ',';
+
     /**#@+
      * Import constants
      */
diff --git a/app/code/Magento/ImportExport/Model/Import/AbstractEntity.php b/app/code/Magento/ImportExport/Model/Import/AbstractEntity.php
index 085c9261e341229fb19bebc078874f87e9dff561..5edac8699319617b7fa169e5c51ce86dc25139d5 100644
--- a/app/code/Magento/ImportExport/Model/Import/AbstractEntity.php
+++ b/app/code/Magento/ImportExport/Model/Import/AbstractEntity.php
@@ -69,7 +69,7 @@ abstract class AbstractEntity
         self::ERROR_CODE_COLUMNS_NUMBER => "Number of columns does not correspond to the number of rows in the header",
         self::ERROR_EXCEEDED_MAX_LENGTH => 'Attribute %s exceeded max length',
         self::ERROR_INVALID_ATTRIBUTE_TYPE =>
-            'Value for \'%s\' attribute contains incorrect value, acceptable values are in %s format',
+            'Value for \'%s\' attribute contains incorrect value',
         self::ERROR_INVALID_ATTRIBUTE_OPTION =>
             "Value for %s attribute contains incorrect value, see acceptable values on settings specified for Admin",
     ];
diff --git a/app/code/Magento/ImportExport/Model/Import/ErrorProcessing/ProcessingErrorAggregator.php b/app/code/Magento/ImportExport/Model/Import/ErrorProcessing/ProcessingErrorAggregator.php
index acb19a9847212e0459c5c7a937044ab3fb3bbc8a..e6df28446fbf0e74026d2c8d120e06ed78dd20a3 100644
--- a/app/code/Magento/ImportExport/Model/Import/ErrorProcessing/ProcessingErrorAggregator.php
+++ b/app/code/Magento/ImportExport/Model/Import/ErrorProcessing/ProcessingErrorAggregator.php
@@ -81,7 +81,9 @@ class ProcessingErrorAggregator implements ProcessingErrorAggregatorInterface
             return $this;
         }
         $this->processErrorStatistics($errorLevel);
-        $this->processInvalidRow($rowNumber);
+        if ($errorLevel == ProcessingError::ERROR_LEVEL_CRITICAL) {
+            $this->processInvalidRow($rowNumber);
+        }
         $errorMessage = $this->getErrorMessage($errorCode, $errorMessage, $columnName);
 
         /** @var ProcessingError $newError */
diff --git a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php b/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php
index e9661264810d02cd1f870b8efd98db0d09fce623..532cf1d718ae009fe308891080b281f2928101ed 100644
--- a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php
+++ b/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php
@@ -172,7 +172,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase
     {
         $this->reportHelper->expects($this->any())->method('importFileExists')->willReturn(true);
         $this->resultRaw->expects($this->once())->method('setContents');
-        $this->downloadController->execute();
+        $this->downloadController->executeInternal();
     }
 
     /**
@@ -182,6 +182,6 @@ class DownloadTest extends \PHPUnit_Framework_TestCase
     {
         $this->reportHelper->expects($this->any())->method('importFileExists')->willReturn(false);
         $this->resultRaw->expects($this->never())->method('setContents');
-        $this->downloadController->execute();
+        $this->downloadController->executeInternal();
     }
 }
diff --git a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/IndexTest.php b/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/IndexTest.php
index 789854701f5875f36e2266b22fe6922149949c5a..aa9adfde2c22f91fe0fee10f895622ce3c43d38d 100644
--- a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/IndexTest.php
+++ b/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/IndexTest.php
@@ -75,6 +75,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
      */
     public function testExecute()
     {
-        $this->indexController->execute();
+        $this->indexController->executeInternal();
     }
 }
diff --git a/app/code/Magento/ImportExport/Test/Unit/Model/Import/ErrorProcessing/ProcessingErrorAggregatorTest.php b/app/code/Magento/ImportExport/Test/Unit/Model/Import/ErrorProcessing/ProcessingErrorAggregatorTest.php
index 63b82e3693d2d7a1ee524f5aaa33c77a9e7950ae..090370a728a68b97d6b64499fe5569d7ccf5fe8c 100644
--- a/app/code/Magento/ImportExport/Test/Unit/Model/Import/ErrorProcessing/ProcessingErrorAggregatorTest.php
+++ b/app/code/Magento/ImportExport/Test/Unit/Model/Import/ErrorProcessing/ProcessingErrorAggregatorTest.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\ImportExport\Test\Unit\Model\Import\ErrorProcessing;
 
+use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError;
+
 class ProcessingErrorAggregatorTest extends \PHPUnit_Framework_TestCase
 {
     /**
@@ -124,22 +126,26 @@ class ProcessingErrorAggregatorTest extends \PHPUnit_Framework_TestCase
 
     /**
      * Test for method isRowInvalid. Expected true result.
+     * @dataProvider isRowInvalidDataProvider
      */
-    public function testIsRowInvalidTrue()
+    public function testIsRowInvalid($errorLevel, $rowNumber, $isValid)
     {
-        $this->model->addError('systemException', 'critical', 7, 'Some column name', 'Message', 'Description');
-        $result = $this->model->isRowInvalid(7);
-        $this->assertTrue($result);
+        $this->model->addError('systemException', $errorLevel, $rowNumber, 'Column name', 'Message', 'Description');
+        $result = $this->model->isRowInvalid($rowNumber);
+        $this->assertEquals($isValid, $result);
     }
 
     /**
-     * Test for method isRowInvalid. Expected false result.
+     * @return array
      */
-    public function testIsRowInvalidFalse()
+    public function isRowInvalidDataProvider()
     {
-        $this->model->addError('systemException');
-        $result = $this->model->isRowInvalid(8);
-        $this->assertFalse($result);
+        return [
+            [ProcessingError::ERROR_LEVEL_CRITICAL, 7, true],
+            [ProcessingError::ERROR_LEVEL_NOT_CRITICAL, 8, false],
+            [ProcessingError::ERROR_LEVEL_NOTICE, 9, false],
+            [ProcessingError::ERROR_LEVEL_WARNING, 10, false]
+        ];
     }
 
     /**
diff --git a/app/code/Magento/ImportExport/view/adminhtml/templates/import/form/after.phtml b/app/code/Magento/ImportExport/view/adminhtml/templates/import/form/after.phtml
index 73eacb73e7869479b1e1c88bf37ae481d5313c4c..e363b6fe0d017d628ed7019044dd8e0fbbc23e56 100644
--- a/app/code/Magento/ImportExport/view/adminhtml/templates/import/form/after.phtml
+++ b/app/code/Magento/ImportExport/view/adminhtml/templates/import/form/after.phtml
@@ -14,7 +14,7 @@
     <div id="import_validation_messages" class="fieldset"><!-- --></div>
 </div>
 <script>
-require(['jquery', 'prototype'], function(jQuery){
+require(['jquery', 'Magento_Ui/js/modal/alert', 'prototype'], function(jQuery){
 //<![CDATA[
     varienImport.resetSelectIndex('entity'); // forced resetting entity selector after page refresh
 //]]>
diff --git a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/ListAction.php b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/ListAction.php
index f76a7d9ca1a9f9a1caf09a9826891daa90b6bef1..f84c939bf9323a1d96e5d7f64a0ce9346956a0f1 100644
--- a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/ListAction.php
+++ b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/ListAction.php
@@ -13,7 +13,7 @@ class ListAction extends \Magento\Indexer\Controller\Adminhtml\Indexer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_Indexer::system_index');
diff --git a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassChangelog.php b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassChangelog.php
index 1ea64de8b75d606f5659da9ad0698066b7d94307..af4730a66629f130e88449e4436710af81bb3e68 100644
--- a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassChangelog.php
+++ b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassChangelog.php
@@ -13,7 +13,7 @@ class MassChangelog extends \Magento\Indexer\Controller\Adminhtml\Indexer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $indexerIds = $this->getRequest()->getParam('indexer_ids');
         if (!is_array($indexerIds)) {
diff --git a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassOnTheFly.php b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassOnTheFly.php
index fecf0df7a53d7936dbe11ab55e9d6228bd52b4de..7fe6dd3a60b2a794e67bee16fdb12ec608f7d95e 100644
--- a/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassOnTheFly.php
+++ b/app/code/Magento/Indexer/Controller/Adminhtml/Indexer/MassOnTheFly.php
@@ -13,7 +13,7 @@ class MassOnTheFly extends \Magento\Indexer\Controller\Adminhtml\Indexer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $indexerIds = $this->getRequest()->getParam('indexer_ids');
         if (!is_array($indexerIds)) {
diff --git a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/ListActionTest.php b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/ListActionTest.php
index 958125477b992137675feac46d8fe52170e5d8c7..57364ec6060228b13d9510211d399d6d6ec17b0f 100644
--- a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/ListActionTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/ListActionTest.php
@@ -60,6 +60,7 @@ class ListActionTest extends \PHPUnit_Framework_TestCase
 
     /**
      * Set up test
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     protected function setUp()
     {
@@ -200,6 +201,6 @@ class ListActionTest extends \PHPUnit_Framework_TestCase
             ->method('renderLayout')
             ->will($this->returnValue(1));
 
-        $this->object->execute();
+        $this->object->executeInternal();
     }
 }
diff --git a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassChangelogTest.php b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassChangelogTest.php
index 133a763f8312dc014bd94662bfcd087767c0260e..c08535d27318971ca71485a21cdeb4bd511b1191 100644
--- a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassChangelogTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassChangelogTest.php
@@ -243,7 +243,7 @@ class MassChangelogTest extends \PHPUnit_Framework_TestCase
         $this->helper->expects($this->any())->method("getUrl")->willReturn("magento.com");
         $this->response->expects($this->any())->method("setRedirect")->willReturn(1);
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassOnTheFlyTest.php b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassOnTheFlyTest.php
index c535ed59f686f9b9c915dc8fb0f8d05815f999d9..8adaf2d07fe9245ee69ee004791df38367277d3c 100644
--- a/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassOnTheFlyTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Controller/Adminhtml/Indexer/MassOnTheFlyTest.php
@@ -242,7 +242,7 @@ class MassOnTheFlyTest extends \PHPUnit_Framework_TestCase
         $this->helper->expects($this->any())->method("getUrl")->willReturn("magento.com");
         $this->response->expects($this->any())->method("setRedirect")->willReturn(1);
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Delete.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Delete.php
index 8771947fce6f31301a79cc78b4d08ea9f9c3ec9a..42409bd208cc07230dcc78a88f28d917872b45d4 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Delete.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Delete.php
@@ -17,7 +17,7 @@ class Delete extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Edit.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Edit.php
index db23246d371c35c02276b791aee6565c1f1b1136..6c45010bfb2d06d9c051c0ff16ea5517893a1c86 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Edit.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Edit.php
@@ -17,7 +17,7 @@ class Edit extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** Try to recover integration data from session if it was added during previous request which failed. */
         $integrationId = (int)$this->getRequest()->getParam(self::PARAM_INTEGRATION_ID);
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Grid.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Grid.php
index 24b4fc3af40e9a984ac445a6155d13adaaf49a92..e5750479e09fcb59f2d6278b9f6b0d9dbee0f11b 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Grid.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Index.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Index.php
index aa4411b45986605d9671665b9a3027be8a5a7119..f759279d7f3baa20ccb5aa2b589fd2b0f1bd6be6 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Index.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $unsecureIntegrationsCount = $this->_integrationCollection->addUnsecureUrlsFilter()->getSize();
         if ($unsecureIntegrationsCount > 0) {
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/LoginSuccessCallback.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/LoginSuccessCallback.php
index 7b72344442057760cf3bd644b6d4644427c95a32..befdfbedc848b44477ff6aa7cec0e3e52375de19 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/LoginSuccessCallback.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/LoginSuccessCallback.php
@@ -13,7 +13,7 @@ class LoginSuccessCallback extends \Magento\Integration\Controller\Adminhtml\Int
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->setBody('<script>setTimeout("self.close()",1000);</script>');
     }
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/NewAction.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/NewAction.php
index 50a971031872b1a58dc79e2a19e0eb392d193159..2e32315b5e596550b56fc19a98de2be1cccef49b 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/NewAction.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_Integration::system_integrations');
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/PermissionsDialog.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/PermissionsDialog.php
index 50f6302b49c2ba64495aceef0e3bf2d2d8833e14..d8de19f8d96bbd9ba2c4f82d0fdf4cdb945a98c9 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/PermissionsDialog.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/PermissionsDialog.php
@@ -15,7 +15,7 @@ class PermissionsDialog extends \Magento\Integration\Controller\Adminhtml\Integr
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $integrationId = (int)$this->getRequest()->getParam(self::PARAM_INTEGRATION_ID);
         if ($integrationId) {
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Save.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Save.php
index 53cccbb46b058d90c5857248c5343df85880c362..d6581e6004dcbf1ba3048c61fa8547600aa7e380 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/Save.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/Save.php
@@ -32,7 +32,7 @@ class Save extends \Magento\Integration\Controller\Adminhtml\Integration
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var array $integrationData */
         $integrationData = [];
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensDialog.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensDialog.php
index 1dcff4547e3c7f22a3b0c0d1d3b8be3116018966..8ad72835c71aefc72895ac766e8007bf1262f979 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensDialog.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensDialog.php
@@ -35,7 +35,7 @@ class TokensDialog extends \Magento\Integration\Controller\Adminhtml\Integration
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $integrationId = $this->getRequest()->getParam(self::PARAM_INTEGRATION_ID);
diff --git a/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensExchange.php b/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensExchange.php
index a6ab708350a7b50b24b89dd6af99f4dd80826b7d..a186dc016a795761d89803ec11ca7be12d3b4067 100644
--- a/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensExchange.php
+++ b/app/code/Magento/Integration/Controller/Adminhtml/Integration/TokensExchange.php
@@ -34,7 +34,7 @@ class TokensExchange extends \Magento\Integration\Controller\Adminhtml\Integrati
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $integrationId = $this->getRequest()->getParam(self::PARAM_INTEGRATION_ID);
diff --git a/app/code/Magento/Integration/Controller/Token/Access.php b/app/code/Magento/Integration/Controller/Token/Access.php
index c9c5c7c3124b0544b5ae8eb622c6070cb0267d80..979a63cbbd973dd29e321895fbf2f05300f6f076 100644
--- a/app/code/Magento/Integration/Controller/Token/Access.php
+++ b/app/code/Magento/Integration/Controller/Token/Access.php
@@ -58,7 +58,7 @@ class Access extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $requestUrl = $this->helper->getRequestUrl($this->getRequest());
diff --git a/app/code/Magento/Integration/Controller/Token/Request.php b/app/code/Magento/Integration/Controller/Token/Request.php
index d1ee7d042969b7802ef4d8098d2836b047956f45..be75117d2c489a29051b06cdc13f27dfeb5abbe9 100644
--- a/app/code/Magento/Integration/Controller/Token/Request.php
+++ b/app/code/Magento/Integration/Controller/Token/Request.php
@@ -38,7 +38,7 @@ class Request extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $requestUrl = $this->helper->getRequestUrl($this->getRequest());
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/DeleteTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/DeleteTest.php
index f31d362287602b2594eb88974556f281eb481bbd..4be5b0c73979e9c7c4dbadf003952ffd032fa4f2 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/DeleteTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/DeleteTest.php
@@ -60,7 +60,7 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
             ->method('addSuccess')
             ->with(__('The integration \'%1\' has been deleted.', $intData[Info::DATA_NAME]));
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 
     public function testDeleteActionWithConsumer()
@@ -89,7 +89,7 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
             ->method('addSuccess')
             ->with(__('The integration \'%1\' has been deleted.', $intData[Info::DATA_NAME]));
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 
     public function testDeleteActionConfigSetUp()
@@ -117,7 +117,7 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
         // verify success message
         $this->_messageManager->expects($this->never())->method('addSuccess');
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 
     public function testDeleteActionMissingId()
@@ -131,7 +131,7 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
             ->method('addError')
             ->with(__('Integration ID is not specified or is invalid.'));
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 
     public function testDeleteActionForServiceIntegrationException()
@@ -153,7 +153,7 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
             ->willThrowException($invalidIdException);
         $this->_messageManager->expects($this->once())->method('addError');
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 
     public function testDeleteActionForServiceGenericException()
@@ -175,6 +175,6 @@ class DeleteTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Int
             ->willThrowException($invalidIdException);
         $this->_messageManager->expects($this->never())->method('addError');
 
-        $this->integrationController->execute();
+        $this->integrationController->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/EditTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/EditTest.php
index 0bd7ab3e4663269734c5a9fabe3adbf0e0b76c7d..e4529c88f5fd13c754508dd8caa23a036992376e 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/EditTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/EditTest.php
@@ -53,7 +53,7 @@ class EditTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
             ->method('prepend');
         $this->_verifyLoadAndRenderLayout();
         $controller = $this->_createIntegrationController('Edit');
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     public function testEditActionNonExistentIntegration()
@@ -81,7 +81,7 @@ class EditTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
             );
         $this->_verifyLoadAndRenderLayout();
         $integrationContr = $this->_createIntegrationController('Edit');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testEditActionNoDataAdd()
@@ -91,7 +91,7 @@ class EditTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
         $this->_messageManager->expects($this->once())->method('addError')->with($this->equalTo($exceptionMessage));
         $this->_verifyLoadAndRenderLayout();
         $integrationContr = $this->_createIntegrationController('Edit');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testEditException()
@@ -100,6 +100,6 @@ class EditTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
         // verify the error
         $this->_messageManager->expects($this->once())->method('addError')->with($this->equalTo($exceptionMessage));
         $this->_controller = $this->_createIntegrationController('Edit');
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/IndexTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/IndexTest.php
index 8dd1bfd69f535419fe613657c355973b3108d20b..4adf09665751e64eae98f20427d862743bdb6f69 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/IndexTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/IndexTest.php
@@ -14,6 +14,6 @@ class IndexTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Inte
         $this->_verifyLoadAndRenderLayout();
         // renderLayout
         $this->_controller = $this->_createIntegrationController('Index');
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/NewActionTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/NewActionTest.php
index 013857d809f3bf434fb14bfcfeb21288110f839f..a24b1787a8edd65a439a2de3d778bee1bb0e0502 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/NewActionTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/NewActionTest.php
@@ -25,6 +25,6 @@ class NewActionTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\
                 $this->returnValue($this->_requestMock)
             );
         $integrationContr = $this->_createIntegrationController('NewAction');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/PermissionsDialogTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/PermissionsDialogTest.php
index 484267a7296135f2fdb0fea28cdc4b6c06e887d3..28e3c19b0128517ce486df5fa504c95d2400d755 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/PermissionsDialogTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/PermissionsDialogTest.php
@@ -72,6 +72,6 @@ HANDLE;
                 $this->equalTo(['adminhtml_integration_activate_permissions_webapi'])
             );
 
-        $controller->execute();
+        $controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/SaveTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/SaveTest.php
index d29767e6091b2b1c86647e2ec61cbc6aaeefbafe..68526871593995f79ee9b218d752ee5c0807f698 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/SaveTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/SaveTest.php
@@ -59,7 +59,7 @@ class SaveTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
                 __('The integration \'%1\' has been saved.', $intData[Info::DATA_NAME])
             );
         $integrationContr = $this->_createIntegrationController('Save');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testSaveActionException()
@@ -80,7 +80,7 @@ class SaveTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
         // Verify error
         $this->_messageManager->expects($this->once())->method('addError')->with($this->equalTo($exceptionMessage));
         $integrationContr = $this->_createIntegrationController('Save');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testSaveActionIntegrationException()
@@ -101,7 +101,7 @@ class SaveTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
         // Verify error
         $this->_messageManager->expects($this->once())->method('addError')->with($this->equalTo($exceptionMessage));
         $integrationContr = $this->_createIntegrationController('Save');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testSaveActionNew()
@@ -146,7 +146,7 @@ class SaveTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
                 __('The integration \'%1\' has been saved.', $integration->getName())
             );
         $integrationContr = $this->_createIntegrationController('Save');
-        $integrationContr->execute();
+        $integrationContr->executeInternal();
     }
 
     public function testSaveActionExceptionDuringServiceCreation()
@@ -186,6 +186,6 @@ class SaveTest extends \Magento\Integration\Test\Unit\Controller\Adminhtml\Integ
         // Verify success message
         $this->_messageManager->expects($this->once())->method('addError')->with($exceptionMessage);
         $integrationController = $this->_createIntegrationController('Save');
-        $integrationController->execute();
+        $integrationController->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/TokensDialogTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/TokensDialogTest.php
index cb7b484f40be5936bf066d89ee00552dd702a440..3db548316f5bdb2ecc51251c90139d7ed799cd3b 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/TokensDialogTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Adminhtml/Integration/TokensDialogTest.php
@@ -48,7 +48,7 @@ class TokensDialogTest extends \Magento\Integration\Test\Unit\Controller\Adminht
         $this->_viewMock->expects($this->any())->method('loadLayout');
         $this->_viewMock->expects($this->any())->method('renderLayout');
 
-        $controller->execute();
+        $controller->executeInternal();
     }
 
     public function testTokensExchangeReauthorize()
@@ -95,6 +95,6 @@ class TokensDialogTest extends \Magento\Integration\Test\Unit\Controller\Adminht
         $this->_responseMock->expects($this->once())->method('getBody');
         $this->_responseMock->expects($this->once())->method('representJson');
 
-        $controller->execute();
+        $controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Token/AccessTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Token/AccessTest.php
index 121db1fb723574a8fb71dc0d646d8777a4ce0240..140000c8bfc5dea9788a4fc6369ff1c712544571 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Token/AccessTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Token/AccessTest.php
@@ -178,6 +178,6 @@ class AccessTest extends \PHPUnit_Framework_TestCase
         $this->response->expects($this->once())
             ->method('setBody');
 
-        $this->accessAction->execute();
+        $this->accessAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Controller/Token/RequestTest.php b/app/code/Magento/Integration/Test/Unit/Controller/Token/RequestTest.php
index f387829278f90232f85982ccb6446bcdba3dabf8..275e30191f0efaf63c09d7e96863caed27a47ede 100644
--- a/app/code/Magento/Integration/Test/Unit/Controller/Token/RequestTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Controller/Token/RequestTest.php
@@ -142,6 +142,6 @@ class RequestTest extends \PHPUnit_Framework_TestCase
             ->willReturn(['response']);
         $this->response->expects($this->once())
             ->method('setBody');
-        $this->requestAction->execute();
+        $this->requestAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Integration/Test/Unit/Model/Config/Integration/XsdTest.php b/app/code/Magento/Integration/Test/Unit/Model/Config/Integration/XsdTest.php
index 5413ec66a33b1bceb05b1d50f0283acf3c74461f..e3988ecdbb15676eb9a7633c7a0f22f68b6c201e 100644
--- a/app/code/Magento/Integration/Test/Unit/Model/Config/Integration/XsdTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Model/Config/Integration/XsdTest.php
@@ -30,8 +30,11 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     public function testExemplarXml($fixtureXml, array $expectedErrors)
     {
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
         $messageFormat = '%message%';
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, $messageFormat);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, $messageFormat);
         $actualResult = $dom->validate($this->_schemaFile, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult, "Validation result is invalid.");
         $this->assertEquals($expectedErrors, $actualErrors, "Validation errors does not match.");
diff --git a/app/code/Magento/Integration/Test/Unit/Model/Config/XsdTest.php b/app/code/Magento/Integration/Test/Unit/Model/Config/XsdTest.php
index 8e1c4195a34a643fa08c516e3e8bea7006d2ed0b..ee833328e24c15dec849ab406df3c61c147872dc 100644
--- a/app/code/Magento/Integration/Test/Unit/Model/Config/XsdTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Model/Config/XsdTest.php
@@ -30,8 +30,11 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     public function testExemplarXml($fixtureXml, array $expectedErrors)
     {
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
         $messageFormat = '%message%';
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, $messageFormat);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, $messageFormat);
         $actualResult = $dom->validate($this->_schemaFile, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult, "Validation result is invalid.");
         $this->assertEquals($expectedErrors, $actualErrors, "Validation errors does not match.");
diff --git a/app/code/Magento/Marketplace/Controller/Adminhtml/Index/Index.php b/app/code/Magento/Marketplace/Controller/Adminhtml/Index/Index.php
index 8ce0b1b3c10cd9108716a423dba424fc0aa67197..f808bbbc3f87559ff48ebe45b2bc18820c260836 100644
--- a/app/code/Magento/Marketplace/Controller/Adminhtml/Index/Index.php
+++ b/app/code/Magento/Marketplace/Controller/Adminhtml/Index/Index.php
@@ -28,7 +28,7 @@ class Index extends \Magento\Marketplace\Controller\Adminhtml\Index
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->getResultPageFactory()->create();
diff --git a/app/code/Magento/Marketplace/Controller/Adminhtml/Partners/Index.php b/app/code/Magento/Marketplace/Controller/Adminhtml/Partners/Index.php
index 774f80491b17fb8d89ce25f0cf2ea8bc4afe56fc..f1657b4c1826dc92c1f182406e8df04cec39e924 100644
--- a/app/code/Magento/Marketplace/Controller/Adminhtml/Partners/Index.php
+++ b/app/code/Magento/Marketplace/Controller/Adminhtml/Partners/Index.php
@@ -33,7 +33,7 @@ class Index extends \Magento\Marketplace\Controller\Adminhtml\Partners
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->isAjax()) {
             $output = $this->getLayoutFactory()->create()
diff --git a/app/code/Magento/Marketplace/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Marketplace/Test/Unit/Controller/Index/IndexTest.php
index 4983cd76e0f448d6d974c84dc262981ae77837dc..ebb9386d3ef52a60ea6fe0279d339e9cd561b908 100644
--- a/app/code/Magento/Marketplace/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Marketplace/Test/Unit/Controller/Index/IndexTest.php
@@ -19,7 +19,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Marketplace\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Marketplace\Controller\Adminhtml\Index\Index::executeInternal
      */
     public function testExecute()
     {
@@ -50,7 +50,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('getConfig')
             ->will($this->returnValue($configMock));
 
-        $this->indexControllerMock->execute();
+        $this->indexControllerMock->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Marketplace/Test/Unit/Controller/Partners/IndexTest.php b/app/code/Magento/Marketplace/Test/Unit/Controller/Partners/IndexTest.php
index 2a9538a1bb7feb032b803c3e08f83a2dbb600be4..c285f31c9958ddba825e687cf791a6ae09ffd2ca 100644
--- a/app/code/Magento/Marketplace/Test/Unit/Controller/Partners/IndexTest.php
+++ b/app/code/Magento/Marketplace/Test/Unit/Controller/Partners/IndexTest.php
@@ -25,7 +25,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Marketplace\Controller\Adminhtml\Partners\Index::execute
+     * @covers \Magento\Marketplace\Controller\Adminhtml\Partners\Index::executeInternal
      */
     public function testExecute()
     {
@@ -65,7 +65,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('getResponse')
             ->will($this->returnValue($responseMock));
 
-        $this->partnersControllerMock->execute();
+        $this->partnersControllerMock->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Status.php b/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Status.php
index 3d2b755575ad00c7391ba92af82e10b33b958cec..469da98b91fa2e46e148e9de537eab8d820b277f 100644
--- a/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Status.php
+++ b/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Status.php
@@ -31,7 +31,7 @@ class Status extends \Magento\MediaStorage\Controller\Adminhtml\System\Config\Sy
      * @return \Magento\Framework\Controller\Result\Json
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = [];
         $flag = $this->_getSyncFlag();
diff --git a/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Synchronize.php b/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Synchronize.php
index 5078929270609b916be3629bf7ad551f075cb5a0..af0239448f9db8ed30f5d5085211cac092f36451 100644
--- a/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Synchronize.php
+++ b/app/code/Magento/MediaStorage/Controller/Adminhtml/System/Config/System/Storage/Synchronize.php
@@ -13,7 +13,7 @@ class Synchronize extends \Magento\MediaStorage\Controller\Adminhtml\System\Conf
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         session_write_close();
 
diff --git a/app/code/Magento/MediaStorage/Model/Config/Backend/Storage/Media/Database.php b/app/code/Magento/MediaStorage/Model/Config/Backend/Storage/Media/Database.php
index 7bd243fd0ac2fb2f365ce97144d873e67a5485c0..f5f367e40eba786ab376d90da7f47c1115ee6835 100644
--- a/app/code/Magento/MediaStorage/Model/Config/Backend/Storage/Media/Database.php
+++ b/app/code/Magento/MediaStorage/Model/Config/Backend/Storage/Media/Database.php
@@ -18,6 +18,7 @@ class Database extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\MediaStorage\Helper\File\Storage $coreFileStorage
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -27,13 +28,14 @@ class Database extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\MediaStorage\Helper\File\Storage $coreFileStorage,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_coreFileStorage = $coreFileStorage;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -46,6 +48,6 @@ class Database extends \Magento\Framework\App\Config\Value
         $helper = $this->_coreFileStorage;
         $helper->getStorageModel(null, ['init' => true]);
 
-        return $this;
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Msrp/Setup/InstallData.php b/app/code/Magento/Msrp/Setup/InstallData.php
index 080637c88e3df7da85327e194280bc846456c310..e9e76b117c11a595f469de231d72503eceb01b0c 100644
--- a/app/code/Magento/Msrp/Setup/InstallData.php
+++ b/app/code/Magento/Msrp/Setup/InstallData.php
@@ -60,7 +60,7 @@ class InstallData implements InstallDataInterface
                 'label' => 'Manufacturer\'s Suggested Retail Price',
                 'type' => 'decimal',
                 'input' => 'price',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                 'visible' => true,
                 'required' => false,
                 'user_defined' => false,
@@ -86,7 +86,7 @@ class InstallData implements InstallDataInterface
                 'input' => 'select',
                 'source' => 'Magento\Msrp\Model\Product\Attribute\Source\Type\Price',
                 'source_model' => 'Magento\Msrp\Model\Product\Attribute\Source\Type\Price',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                 'visible' => true,
                 'required' => false,
                 'user_defined' => false,
diff --git a/app/code/Magento/Multishipping/Controller/Checkout.php b/app/code/Magento/Multishipping/Controller/Checkout.php
index f6b391b0d89bb8684abff322b96757d47f70f46e..1940acf759573ec76b0f371c4386b9c4a2fab34d 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout.php
@@ -86,11 +86,11 @@ abstract class Checkout extends \Magento\Checkout\Controller\Action implements
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $this->_request = $request;
         if ($this->_actionFlag->get('', 'redirectLogin')) {
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         $action = $request->getActionName();
@@ -109,7 +109,7 @@ abstract class Checkout extends \Magento\Checkout\Controller\Action implements
         ) {
             $this->_redirect('*/*/index');
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         if (!in_array($action, ['login', 'register'])) {
@@ -123,7 +123,7 @@ abstract class Checkout extends \Magento\Checkout\Controller\Action implements
                 $this->messageManager->addError($error);
                 $this->getResponse()->setRedirect($this->_getHelper()->getCartUrl());
                 $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
-                return parent::dispatch($request);
+                return parent::execute($request);
             }
         }
 
@@ -142,11 +142,11 @@ abstract class Checkout extends \Magento\Checkout\Controller\Action implements
         ) {
             $this->getResponse()->setRedirect($this->_getHelper()->getCartUrl());
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         if ($action == 'success' && $this->_getCheckout()->getCheckoutSession()->getDisplaySuccess(true)) {
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         $quote = $this->_getCheckout()->getQuote();
@@ -155,7 +155,7 @@ abstract class Checkout extends \Magento\Checkout\Controller\Action implements
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
         }
 
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address.php b/app/code/Magento/Multishipping/Controller/Checkout/Address.php
index 41f7377c58773c8cd2ef159f590b64de486704a8..ee525003fa7c5d751959ed05a9108df08193ee9b 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address.php
@@ -13,12 +13,12 @@ abstract class Address extends \Magento\Framework\App\Action\Action
     /**
      * {@inheritdoc}
      */
-    public function dispatch(\Magento\Framework\App\RequestInterface $request)
+    public function execute(\Magento\Framework\App\RequestInterface $request)
     {
         if (!$this->_getCheckout()->getCustomer()->getId()) {
             return $this->_redirect('customer/account/login');
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditAddress.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditAddress.php
index 724226b2e27ce32d924d537a6124f53416871dbe..919c55c2cc8a7e6ce39ef1753dc0178d5903daae 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditAddress.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditAddress.php
@@ -11,7 +11,7 @@ class EditAddress extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         if ($addressForm = $this->_view->getLayout()->getBlock('customer_address_edit')) {
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditBilling.php
index eaa98e4e7c403333220c5e9573bcdb984dd497e9..df532c5384b5a62c21e68e7a0b7557f2d1be869f 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditBilling.php
@@ -11,7 +11,7 @@ class EditBilling extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(
             \Magento\Multishipping\Model\Checkout\Type\Multishipping\State::STEP_BILLING
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShipping.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShipping.php
index 8409ed59f3687933c06c098808670e64800d2e23..3d9c8ada633ccb198abb989e382106bdf1cec267 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShipping.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShipping.php
@@ -11,7 +11,7 @@ class EditShipping extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(
             \Magento\Multishipping\Model\Checkout\Type\Multishipping\State::STEP_SHIPPING
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShippingPost.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShippingPost.php
index ff73e374f39dbcd12a5799de4861e59e0170176e..bf62a2dbb56eb02770a6baf442899bf842ce128f 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShippingPost.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/EditShippingPost.php
@@ -11,7 +11,7 @@ class EditShippingPost extends \Magento\Multishipping\Controller\Checkout\Addres
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($addressId = $this->getRequest()->getParam('id')) {
             $this->_objectManager->create(
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/NewBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/NewBilling.php
index 23b209b60b4790baf03475b85a283a68c164a9bc..7f7293bdf9929d4287283a941a62baa5c60deac1 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/NewBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/NewBilling.php
@@ -11,7 +11,7 @@ class NewBilling extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         if ($addressForm = $this->_view->getLayout()->getBlock('customer_address_edit')) {
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/NewShipping.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/NewShipping.php
index 1a05f9cc46cf42746740e621d8ab0e859ca46df8..a0a69c2a216489c2304c1ef3818b7a1ff89d9faf 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/NewShipping.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/NewShipping.php
@@ -13,7 +13,7 @@ class NewShipping extends \Magento\Multishipping\Controller\Checkout\Address
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(
             \Magento\Multishipping\Model\Checkout\Type\Multishipping\State::STEP_SELECT_ADDRESSES
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/SaveBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/SaveBilling.php
index f19e427f14b4c57800b50bba459a067fefe59e2c..6e254071ee03765ffc1c982b8e68299587e6adc8 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/SaveBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/SaveBilling.php
@@ -11,7 +11,7 @@ class SaveBilling extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($addressId = $this->getRequest()->getParam('id')) {
             $this->_objectManager->create(
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/SelectBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/SelectBilling.php
index a64e877d586829c52d3e31f4d54b80f26fea59ca..cb7a1216760d16183f593a0538d5729a1cde1d3f 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/SelectBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/SelectBilling.php
@@ -11,7 +11,7 @@ class SelectBilling extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(
             \Magento\Multishipping\Model\Checkout\Type\Multishipping\State::STEP_BILLING
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/SetBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/SetBilling.php
index 4781ff1fd8d8a1178825a73131e4d2512b8248bf..60cf5d6988785c453911b69964799989a94e24ce 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/SetBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/SetBilling.php
@@ -11,7 +11,7 @@ class SetBilling extends \Magento\Multishipping\Controller\Checkout\Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($addressId = $this->getRequest()->getParam('id')) {
             $this->_objectManager->create(
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Address/ShippingSaved.php b/app/code/Magento/Multishipping/Controller/Checkout/Address/ShippingSaved.php
index 01187fce181844787daf0f8ce7f1c5080a98393f..dc301de3eb29c6d8d8bb002ab532fdd671ee01d4 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Address/ShippingSaved.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Address/ShippingSaved.php
@@ -56,7 +56,7 @@ class ShippingSaved extends Address
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $filter = $this->filterBuilder->setField('parent_id')->setValue($this->_getCheckout()->getCustomer()->getId())
             ->setConditionType('eq')->create();
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Addresses.php b/app/code/Magento/Multishipping/Controller/Checkout/Addresses.php
index 38ae81fadc81d58a6faaa36603b88e508792a26a..477ca6dbf2a0d6b394e5c9e2abe0c13e2d68aded 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Addresses.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Addresses.php
@@ -15,7 +15,7 @@ class Addresses extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // If customer do not have addresses
         if (!$this->_getCheckout()->getCustomerDefaultShippingAddress()) {
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/AddressesPost.php b/app/code/Magento/Multishipping/Controller/Checkout/AddressesPost.php
index e78d126f413901498792e1c4c56fc2ab0d66e362..f6c74959e4108cc3df9ececccaef7ba02bef43e6 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/AddressesPost.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/AddressesPost.php
@@ -15,7 +15,7 @@ class AddressesPost extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_getCheckout()->getCustomerDefaultShippingAddress()) {
             $this->_redirect('*/checkout_address/newShipping');
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/BackToAddresses.php b/app/code/Magento/Multishipping/Controller/Checkout/BackToAddresses.php
index 9f9e2352e3a3284c7085cd00869a12ebfc73cce6..82a1ecce2b0c4d60161d92dd0f071bc93bdb36b9 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/BackToAddresses.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/BackToAddresses.php
@@ -13,7 +13,7 @@ class BackToAddresses extends \Magento\Multishipping\Controller\Checkout
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(State::STEP_SELECT_ADDRESSES);
         $this->_getState()->unsCompleteStep(State::STEP_SHIPPING);
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/BackToBilling.php b/app/code/Magento/Multishipping/Controller/Checkout/BackToBilling.php
index 49c98834c679511095da5fb5f72088622dccda94..d2db0277429d71c4e59f7e01ccb8c2faf87cb906 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/BackToBilling.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/BackToBilling.php
@@ -15,7 +15,7 @@ class BackToBilling extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(State::STEP_BILLING);
         $this->_getState()->unsCompleteStep(State::STEP_OVERVIEW);
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/BackToShipping.php b/app/code/Magento/Multishipping/Controller/Checkout/BackToShipping.php
index dddf2dab0b8708c15b557c6a5843b818cacf35e9..2bc68f69ee2378ecb813f04a9ca5d30618ac753d 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/BackToShipping.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/BackToShipping.php
@@ -13,7 +13,7 @@ class BackToShipping extends \Magento\Multishipping\Controller\Checkout
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getState()->setActiveStep(State::STEP_SHIPPING);
         $this->_getState()->unsCompleteStep(State::STEP_BILLING);
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Billing.php b/app/code/Magento/Multishipping/Controller/Checkout/Billing.php
index 0f3d9a0103c8516f6e5f52e5563aa6945d7bddb6..7ca829db580abd6aa9785cc6fcd08966affdaa6d 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Billing.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Billing.php
@@ -30,7 +30,7 @@ class Billing extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void|ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_validateBilling()) {
             return;
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Index.php b/app/code/Magento/Multishipping/Controller/Checkout/Index.php
index c71c54ca8e241979257c7713f06b34403675e0f8..03607155b8769470ccb05cb048b10f674111871f 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Index.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getCheckoutSession()->setCartWasUpdated(false);
         $this->_redirect('*/*/addresses');
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Login.php b/app/code/Magento/Multishipping/Controller/Checkout/Login.php
index 8b68c678010deb19e42260173dbfc2aa326dc708..4c68fd50819c5c701f560d3473572eebf70da924 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Login.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Login.php
@@ -13,7 +13,7 @@ class Login extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_objectManager->get('Magento\Customer\Model\Session')->isLoggedIn()) {
             $this->_redirect('*/*/');
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Overview.php b/app/code/Magento/Multishipping/Controller/Checkout/Overview.php
index 9ab19c70889d283f78650c99a4e4228b24204271..cb693c019ffff5affee75dc7f2679be8ddd30e86 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Overview.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Overview.php
@@ -15,7 +15,7 @@ class Overview extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_validateMinimumAmount()) {
             return;
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/OverviewPost.php b/app/code/Magento/Multishipping/Controller/Checkout/OverviewPost.php
index fe288a54f74b906944ad444a18e9c8a7aaf1bdf7..7e80e00754b01316b2a0d01e8e323be4ac3d3b78 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/OverviewPost.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/OverviewPost.php
@@ -65,7 +65,7 @@ class OverviewPost extends \Magento\Multishipping\Controller\Checkout
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->formKeyValidator->validate($this->getRequest())) {
             $this->_forward('backToAddresses');
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Plugin.php b/app/code/Magento/Multishipping/Controller/Checkout/Plugin.php
index 3467cc8b9a85adf5b3c6b3859379b57e5fb8f011..4fbd38f11781cc40a9e0ef1afc182a762ae195d6 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Plugin.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Plugin.php
@@ -28,7 +28,7 @@ class Plugin
      * @return void
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function beforeExecute(\Magento\Framework\App\Action\Action $subject)
+    public function beforeExecuteInternal(\Magento\Framework\App\Action\Action $subject)
     {
         $this->cart->getQuote()->setIsMultiShipping(0);
     }
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Register.php b/app/code/Magento/Multishipping/Controller/Checkout/Register.php
index 34aba23698077b6c0d90b33aa7c6bc38995238fa..4033d985801714633057babe25dd99f6afc0c113 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Register.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Register.php
@@ -13,7 +13,7 @@ class Register extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_objectManager->get('Magento\Customer\Model\Session')->isLoggedIn()) {
             $this->getResponse()->setRedirect($this->_getHelper()->getMSCheckoutUrl());
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/RemoveItem.php b/app/code/Magento/Multishipping/Controller/Checkout/RemoveItem.php
index 4bba45d3047011d77e2485e8dd7fc0e60940ea20..1dced5c2360b9a21f68742474e543a196088d0d9 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/RemoveItem.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/RemoveItem.php
@@ -13,7 +13,7 @@ class RemoveItem extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = $this->getRequest()->getParam('id');
         $addressId = $this->getRequest()->getParam('address');
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Shipping.php b/app/code/Magento/Multishipping/Controller/Checkout/Shipping.php
index d8ffd0d2b6af0a1a6d98893879e57a615c352dfd..8d8e9c4643e012e43d4af40cb98abf6f7369c1ef 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Shipping.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Shipping.php
@@ -16,7 +16,7 @@ class Shipping extends \Magento\Multishipping\Controller\Checkout
      *
      * @return  ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_validateMinimumAmount()) {
             return;
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/ShippingPost.php b/app/code/Magento/Multishipping/Controller/Checkout/ShippingPost.php
index e5c1a001b9eacf5c1a692fdee028f19e8d7f34bb..d3693051344def797c34e10fedf97a18f854721b 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/ShippingPost.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/ShippingPost.php
@@ -13,7 +13,7 @@ class ShippingPost extends \Magento\Multishipping\Controller\Checkout
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $shippingMethods = $this->getRequest()->getPost('shipping_method');
         try {
diff --git a/app/code/Magento/Multishipping/Controller/Checkout/Success.php b/app/code/Magento/Multishipping/Controller/Checkout/Success.php
index 52a7de51c1839ccc63f707c4e9dacb551b449e41..ea4838ee85f51539b6e385ed4d153218de7bd69f 100644
--- a/app/code/Magento/Multishipping/Controller/Checkout/Success.php
+++ b/app/code/Magento/Multishipping/Controller/Checkout/Success.php
@@ -15,7 +15,7 @@ class Success extends \Magento\Multishipping\Controller\Checkout
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->_getState()->getCompleteStep(State::STEP_OVERVIEW)) {
             $this->_redirect('*/*/addresses');
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditAddressTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditAddressTest.php
index 54c431ecd3fb8be01ed918a48ceb12147a5be23f..4f15a7d7055c4f65f9bef33b80303698950bab1a 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditAddressTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditAddressTest.php
@@ -126,7 +126,7 @@ class EditAddressTest extends \PHPUnit_Framework_TestCase
         $this->titleMock->expects($this->once())->method('set')->with('Address title - default_title');
         $this->addressFormMock->expects($this->once())->method('setBackUrl')->with('success/url');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
 
@@ -140,6 +140,6 @@ class EditAddressTest extends \PHPUnit_Framework_TestCase
             ->with('customer_address_edit');
         $this->urlMock->expects($this->never())->method('getUrl');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditBillingTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditBillingTest.php
index e0b516a09e74ad0f03fdbbb2b24dac447ce56f4d..232add6bf1e41a5b141485eb679dc227e448b543 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditBillingTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditBillingTest.php
@@ -153,7 +153,7 @@ class EditBillingTest extends \PHPUnit_Framework_TestCase
         $this->titleMock->expects($this->once())->method('set')->with('Address title - default_title');
         $this->addressFormMock->expects($this->once())->method('setBackUrl')->with('back/address');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWhenCustomerAddressBlockNotExist()
@@ -170,7 +170,7 @@ class EditBillingTest extends \PHPUnit_Framework_TestCase
             ->with('customer_address_edit');
         $this->urlMock->expects($this->never())->method('getUrl');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
 }
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditShippingTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditShippingTest.php
index dbe004b62d0051a3c0baca4c25994eb805b362c1..0b9a5fb2f80e1632300f65a45644279339b871cc 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditShippingTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/EditShippingTest.php
@@ -157,7 +157,7 @@ class EditShippingTest extends \PHPUnit_Framework_TestCase
             ->willReturn('shipping_addres');
         $this->addressFormMock->expects($this->once())->method('setBackUrl')->with('back/address');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWhenCustomerAddressBlockNotExist()
@@ -174,6 +174,6 @@ class EditShippingTest extends \PHPUnit_Framework_TestCase
             ->with('customer_address_edit');
         $this->urlMock->expects($this->never())->method('getUrl');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewBillingTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewBillingTest.php
index 7afb5d6ee2fa03dd408b5e0658a7d167094c04f8..e5c701b3c216106d305a75e5b329e273d0d85721 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewBillingTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewBillingTest.php
@@ -118,7 +118,7 @@ class NewBillingTest extends \PHPUnit_Framework_TestCase
         $this->titleMock->expects($this->once())->method('set')->with('Address title - default_title');
         $this->addressFormMock->expects($this->once())->method('setBackUrl')->with('success/url');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
 
@@ -132,6 +132,6 @@ class NewBillingTest extends \PHPUnit_Framework_TestCase
             ->with('customer_address_edit');
         $this->urlMock->expects($this->never())->method('getUrl');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewShippingTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewShippingTest.php
index 1f98daffc1d8d3179b95a03dfd1c052fcdf6c45e..3b1b76d9c7ca0983356c348c3350f19417353e76 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewShippingTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/NewShippingTest.php
@@ -157,7 +157,7 @@ class NewShippingTest extends \PHPUnit_Framework_TestCase
             ->willReturn($shippingAddress);
         $this->addressFormMock->expects($this->once())->method('setBackUrl')->with($url);
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function executeDataProvider()
@@ -183,6 +183,6 @@ class NewShippingTest extends \PHPUnit_Framework_TestCase
             ->with('customer_address_edit');
         $this->urlMock->expects($this->never())->method('getUrl');
         $this->viewMock->expects($this->once())->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/ShippingSavedTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/ShippingSavedTest.php
index ffb91ebb4e132a67c22d9ac9fdfdf9a80a5260a8..23ff549744ccc43c3386bf90911fc5bf294de636 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/ShippingSavedTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/Address/ShippingSavedTest.php
@@ -100,7 +100,7 @@ class ShippingSavedTest extends \PHPUnit_Framework_TestCase
 
         // check that checkout is reset
         $this->checkoutMock->expects($this->once())->method('reset');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteDoesNotResetCheckoutIfCustomerHasMoreThanOneAddress()
@@ -120,7 +120,7 @@ class ShippingSavedTest extends \PHPUnit_Framework_TestCase
 
         // check that checkout is not reset
         $this->checkoutMock->expects($this->never())->method('reset');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/PluginTest.php b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/PluginTest.php
index 9cfb6a0c75f553e05f6710099bed558608eb02d3..dc9a3056acdc9768371a9191078ee5b29e147673 100644
--- a/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/PluginTest.php
+++ b/app/code/Magento/Multishipping/Test/Unit/Controller/Checkout/PluginTest.php
@@ -39,10 +39,10 @@ class PluginTest extends \PHPUnit_Framework_TestCase
         $this->object = new \Magento\Multishipping\Controller\Checkout\Plugin($this->cartMock);
     }
 
-    public function testExecuteTurnsOffMultishippingModeOnQuote()
+    public function testExecuteInternalTurnsOffMultishippingModeOnQuote()
     {
         $subject = $this->getMock('Magento\Checkout\Controller\Index\Index', [], [], '', false);
         $this->quoteMock->expects($this->once())->method('setIsMultiShipping')->with(0);
-        $this->object->beforeExecute($subject);
+        $this->object->beforeExecuteInternal($subject);
     }
 }
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Grid.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Grid.php
index cf2ae4964f7678c1dc864cbab2bbaf8dff9cb9f1..e3904f2efadcd8f9fb7215fd09b45a8fb217a8f7 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Grid.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Newsletter\Controller\Adminhtml\Problem
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('_unsubscribe')) {
             $problems = (array)$this->getRequest()->getParam('problem', []);
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Index.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Index.php
index 2b377e93c2867717e8c8c3733f1b7684a00f4834..89045ddfa6ab91e2aa8575a86e8147967769d55d 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Index.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Problem/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Newsletter\Controller\Adminhtml\Problem
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getQuery('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Cancel.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Cancel.php
index eda2ee69860a83fab43452773f6f09a4c6ce3c51..a04519e190e6e1e774425951b96c06abe120db3c 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Cancel.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Cancel.php
@@ -13,7 +13,7 @@ class Cancel extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $queue = $this->_objectManager->get(
             'Magento\Newsletter\Model\Queue'
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Drop.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Drop.php
index ff410c926fcb674eb8d352797dd48b83ff659fdd..af2cc33cca501e5f60d2531f7f85700df7bd7d00 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Drop.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Drop.php
@@ -13,7 +13,7 @@ class Drop extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout('newsletter_queue_preview_popup');
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Edit.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Edit.php
index ea3cfed3771ec5127676d6956982c08b6a40a431..d8881fa43aca6d5cdf82aed2a2e681933c5d800b 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Edit.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Edit.php
@@ -30,7 +30,7 @@ class Edit extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register('current_queue', $this->_objectManager->get('Magento\Newsletter\Model\Queue'));
 
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Grid.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Grid.php
index 509b868d29eeafa685d8e0ac8777fd746fa19efb..33df60e59212af5cbee0faa2e2022f95fc5a6ffd 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Grid.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Index.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Index.php
index 412d531b7d40295000373f712b71285e3ca1c598..cd9b39395f7a3b8d4c06b5fed31f35cb810edac8 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Index.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getQuery('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Pause.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Pause.php
index 1e890edcb36dc3ae7be66a206634f6cd27776437..2e2cad6b58808b5c0811b1c8aa7768f6056235c5 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Pause.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Pause.php
@@ -13,7 +13,7 @@ class Pause extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $queue = $this->_objectManager->get(
             'Magento\Newsletter\Model\Queue'
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Preview.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Preview.php
index 3a6f564f90d142f4bca862feb947e90f3eb57194..488dc897f8f98b78abd7f4bec1ef1629eae5f19c 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Preview.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Preview.php
@@ -13,7 +13,7 @@ class Preview extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $data = $this->getRequest()->getParams();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Resume.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Resume.php
index f92ab4bf691dbfab10b95dd9edf2b8c324309334..da87317dda95e5c3a87ffca720893a24945a8e44 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Resume.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Resume.php
@@ -13,7 +13,7 @@ class Resume extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $queue = $this->_objectManager->get(
             'Magento\Newsletter\Model\Queue'
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Save.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Save.php
index 33fd2052a42056497f4e1be99d1571952a9aa210..28990582b66769c25b24943c2830e5b1dfba23e9 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Save.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Save.php
@@ -18,7 +18,7 @@ class Save extends \Magento\Newsletter\Controller\Adminhtml\Queue
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             /* @var $queue \Magento\Newsletter\Model\Queue */
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Sending.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Sending.php
index bc6053c67aa8f2b363a4185d89cdef6bde3cecc4..6e5000bbb27f12c789c424ef9a7374031d5c3d33 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Sending.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Sending.php
@@ -13,7 +13,7 @@ class Sending extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // Todo: put it somewhere in config!
         $countOfQueue = 3;
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Start.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Start.php
index 1917681ca21ea5d35686396df6f3c18953ba46bf..bda80ec99015cdc9ec0b987ece1c4db2adb3b1bb 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Start.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Start.php
@@ -13,7 +13,7 @@ class Start extends \Magento\Newsletter\Controller\Adminhtml\Queue
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $queue = $this->_objectManager->create(
             'Magento\Newsletter\Model\Queue'
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportCsv.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportCsv.php
index 8a795384b148b3b93d199d023ba2519d38d07a15..398a7ef8221a232620e4d613edc9018cf723a903 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportCsv.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportCsv.php
@@ -16,7 +16,7 @@ class ExportCsv extends \Magento\Newsletter\Controller\Adminhtml\Subscriber
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'subscribers.csv';
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportXml.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportXml.php
index 44b68aa1afe6c4dabdb338d7bc9ccb814a5a216f..ac16f90c852dd00f0920c66881acced65cd77e45 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportXml.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/ExportXml.php
@@ -16,7 +16,7 @@ class ExportXml extends \Magento\Newsletter\Controller\Adminhtml\Subscriber
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'subscribers.xml';
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Grid.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Grid.php
index 89aa1b46520964572bc485cec238e14d64a56cda..5a06ac05d3c1df0d6b0c9f8bf57e30708a082ee6 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Grid.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Newsletter\Controller\Adminhtml\Subscriber
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Index.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Index.php
index 9aed2baed18b70d628d82f084e96935a3696ad7d..a8d7f096b6476b8ed79b0f303addba897037f12a 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Index.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Newsletter\Controller\Adminhtml\Subscriber
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php
index 4ea5f85728efdd7f2df57bf5d8ff742382774950..ebc712cefb7776e093596ccff042879ec0d4fb21 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php
@@ -13,7 +13,7 @@ class MassDelete extends \Magento\Newsletter\Controller\Adminhtml\Subscriber
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $subscribersIds = $this->getRequest()->getParam('subscriber');
         if (!is_array($subscribersIds)) {
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php
index d6b6df7c19a6915d391282aeb75351531331c192..8a6feb8b349aead42db1224e69329ebd22a2a7f5 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php
@@ -13,7 +13,7 @@ class MassUnsubscribe extends \Magento\Newsletter\Controller\Adminhtml\Subscribe
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $subscribersIds = $this->getRequest()->getParam('subscriber');
         if (!is_array($subscribersIds)) {
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Delete.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Delete.php
index 188e800f3bfaedfe3954271913103fd6d0216fdf..9b1ebaa45ffabd335520249aa9517bc797dea1eb 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Delete.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $template = $this->_objectManager->create(
             'Magento\Newsletter\Model\Template'
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Drop.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Drop.php
index f96ac80e7f07abcfc65d153cbf30756d8ea22634..bf4ac7d5ff74c39dc7bae1d5cc9cdb743140cba2 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Drop.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Drop.php
@@ -13,7 +13,7 @@ class Drop extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout('newsletter_template_preview_popup');
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Edit.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Edit.php
index b1030723790e27d67005983ac887e68e4da5a3c7..fb52832aca992bc75689235a9a951465cf3c5d24 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Edit.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Edit.php
@@ -30,7 +30,7 @@ class Edit extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $model = $this->_objectManager->create('Magento\Newsletter\Model\Template');
         $id = $this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Grid.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Grid.php
index dbd0e7195a56ad7eab9a3efd7796d4c70912205c..d3c850e81b4873f646f649526c11657bbc1b4a39 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Grid.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $grid = $this->_view->getLayout()->createBlock('Magento\Newsletter\Block\Adminhtml\Template\Grid')->toHtml();
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Index.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Index.php
index f4c51a0f590a504201406d3cb80ea49768c8661c..4647c06de1f8c798b71e72f19ee0f525dbc59d32 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Index.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getQuery('ajax')) {
             $this->_forward('grid');
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/NewAction.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/NewAction.php
index 9409faf0f6abf8244fddf612863371d8943e313e..a03fd5c6f3789fb3e15b413b41d543aba2f1ad16 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/NewAction.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Preview.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Preview.php
index 5594435c98d3830a2ff4b4a58972f5fe9bb7fe41..fc04569de3173a2cc04d99e7274333bde9c45bf9 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Preview.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Preview.php
@@ -13,7 +13,7 @@ class Preview extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void|$this
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
 
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
index 4378ac6ba704cbde91693671857351ae3e87bf90..7f9c4bdb76ea0ceaa666435e6bfafad1e519c4e1 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
@@ -16,7 +16,7 @@ class Save extends \Magento\Newsletter\Controller\Adminhtml\Template
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $request = $this->getRequest();
         if (!$request->isPost()) {
diff --git a/app/code/Magento/Newsletter/Controller/Manage.php b/app/code/Magento/Newsletter/Controller/Manage.php
index 6bc940662cebe77e55fcb546623cd9427132654d..16ba747c011e8e41559ddd8c31be7f1543ffba8e 100644
--- a/app/code/Magento/Newsletter/Controller/Manage.php
+++ b/app/code/Magento/Newsletter/Controller/Manage.php
@@ -37,11 +37,11 @@ abstract class Manage extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->_customerSession->authenticate()) {
             $this->_actionFlag->set('', 'no-dispatch', true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 }
diff --git a/app/code/Magento/Newsletter/Controller/Manage/Index.php b/app/code/Magento/Newsletter/Controller/Manage/Index.php
index de782a3d3bc093b814b49bdcdc704a74c6e42eb6..0ef350892c3fb0b4614f7eed876a47dc9a4d3e67 100644
--- a/app/code/Magento/Newsletter/Controller/Manage/Index.php
+++ b/app/code/Magento/Newsletter/Controller/Manage/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Newsletter\Controller\Manage
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
 
diff --git a/app/code/Magento/Newsletter/Controller/Manage/Save.php b/app/code/Magento/Newsletter/Controller/Manage/Save.php
index 92ba7f93628b36b2a1f4afa4add9eca0b7f52910..67fe6e4dd2c76936141b11f92fa325b0a934899c 100644
--- a/app/code/Magento/Newsletter/Controller/Manage/Save.php
+++ b/app/code/Magento/Newsletter/Controller/Manage/Save.php
@@ -60,7 +60,7 @@ class Save extends \Magento\Newsletter\Controller\Manage
      *
      * @return void|null
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->formKeyValidator->validate($this->getRequest())) {
             return $this->_redirect('customer/account/');
diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/Confirm.php b/app/code/Magento/Newsletter/Controller/Subscriber/Confirm.php
index 91d4f0d2880559b175e2282d4ff696e899bd3c16..785f3ab018538fd632e0bdd5e9f478b4d8503390 100644
--- a/app/code/Magento/Newsletter/Controller/Subscriber/Confirm.php
+++ b/app/code/Magento/Newsletter/Controller/Subscriber/Confirm.php
@@ -12,7 +12,7 @@ class Confirm extends \Magento\Newsletter\Controller\Subscriber
      * Subscription confirm action
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         $code = (string)$this->getRequest()->getParam('code');
diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php
index 5e8850de308daea3b0c9c4b114744a1412318e97..11dcfacb44fb533e72dff4cebc41bcce71bd7a48 100644
--- a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php
+++ b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php
@@ -111,7 +111,7 @@ class NewAction extends \Magento\Newsletter\Controller\Subscriber
      * @throws \Magento\Framework\Exception\LocalizedException
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->isPost() && $this->getRequest()->getPost('email')) {
             $email = (string)$this->getRequest()->getPost('email');
diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/Unsubscribe.php b/app/code/Magento/Newsletter/Controller/Subscriber/Unsubscribe.php
index 9fb7575699a4958000ca564134fcb3569e0440bb..9449f3336f9f69e4390c0596377fd3b7530562f3 100644
--- a/app/code/Magento/Newsletter/Controller/Subscriber/Unsubscribe.php
+++ b/app/code/Magento/Newsletter/Controller/Subscriber/Unsubscribe.php
@@ -12,7 +12,7 @@ class Unsubscribe extends \Magento\Newsletter\Controller\Subscriber
      * Unsubscribe newsletter
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         $code = (string)$this->getRequest()->getParam('code');
diff --git a/app/code/Magento/Newsletter/Test/Unit/Controller/Manage/SaveTest.php b/app/code/Magento/Newsletter/Test/Unit/Controller/Manage/SaveTest.php
index f592aafcbc9c269a47e716130dd693af76f8e338..99bb1abdfc13c100990d42b987d730af7d327423 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Controller/Manage/SaveTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Controller/Manage/SaveTest.php
@@ -107,7 +107,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->method('addSuccess');
         $this->messageManagerMock->expects($this->never())
             ->method('addError');
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testSaveActionNoCustomerInSession()
@@ -126,7 +126,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManagerMock->expects($this->once())
             ->method('addError')
             ->with('Something went wrong while saving your subscription.');
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testSaveActionWithException()
@@ -156,6 +156,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManagerMock->expects($this->once())
             ->method('addError')
             ->with('Something went wrong while saving your subscription.');
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/OfflineShipping/Controller/Adminhtml/System/Config/ExportTablerates.php b/app/code/Magento/OfflineShipping/Controller/Adminhtml/System/Config/ExportTablerates.php
index 8f273e49c6191e9a43b2bb9f00bf624f8c416133..af20ac56ba4e060fc1d3ff16c05487effb674dec 100644
--- a/app/code/Magento/OfflineShipping/Controller/Adminhtml/System/Config/ExportTablerates.php
+++ b/app/code/Magento/OfflineShipping/Controller/Adminhtml/System/Config/ExportTablerates.php
@@ -46,7 +46,7 @@ class ExportTablerates extends \Magento\Config\Controller\Adminhtml\System\Abstr
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'tablerates.csv';
         /** @var $gridBlock \Magento\OfflineShipping\Block\Adminhtml\Carrier\Tablerate\Grid */
diff --git a/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php b/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php
index e6920ede9b8c4e04285538c9aed52acadc86be6f..08d23d9245564215089f6a4fb98f0703b901a681 100644
--- a/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php
+++ b/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php
@@ -23,6 +23,7 @@ class Tablerate extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\OfflineShipping\Model\ResourceModel\Carrier\TablerateFactory $tablerateFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -32,22 +33,24 @@ class Tablerate extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\OfflineShipping\Model\ResourceModel\Carrier\TablerateFactory $tablerateFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_tablerateFactory = $tablerateFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
-     * @return \Magento\Framework\Model\AbstractModel|void
+     * @return $this
      */
     public function afterSave()
     {
         /** @var \Magento\OfflineShipping\Model\ResourceModel\Carrier\Tablerate $tableRate */
         $tableRate = $this->_tablerateFactory->create();
         $tableRate->uploadAndImport($this);
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php b/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php
index 6ff33668ae9c68a22c21795f37e11bc4dddd8825..36925596918c16e81f226720cc20e27d134fc3f5 100644
--- a/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php
+++ b/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php
@@ -40,7 +40,7 @@ class ExportVarnishConfig extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'varnish.vcl';
         $varnishVersion = $this->getRequest()->getParam('varnish');
diff --git a/app/code/Magento/PageCache/Controller/Block/Esi.php b/app/code/Magento/PageCache/Controller/Block/Esi.php
index e21aabd7cfde48c6262dbdabe1941142fa4efd1e..026c0ec4c150b34c1f7319ccd02f6280416574f7 100644
--- a/app/code/Magento/PageCache/Controller/Block/Esi.php
+++ b/app/code/Magento/PageCache/Controller/Block/Esi.php
@@ -13,7 +13,7 @@ class Esi extends \Magento\PageCache\Controller\Block
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = $this->getResponse();
         $blocks = $this->_getBlocks();
diff --git a/app/code/Magento/PageCache/Controller/Block/Render.php b/app/code/Magento/PageCache/Controller/Block/Render.php
index 499973ae1e1bda643e096e41e22b2f5d54410a7b..b6a9591977526a3e4d0b798db0374b69a0191bcb 100644
--- a/app/code/Magento/PageCache/Controller/Block/Render.php
+++ b/app/code/Magento/PageCache/Controller/Block/Render.php
@@ -13,7 +13,7 @@ class Render extends \Magento\PageCache\Controller\Block
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->isAjax()) {
             $this->_forward('noroute');
diff --git a/app/code/Magento/PageCache/Model/App/PageCachePlugin.php b/app/code/Magento/PageCache/Model/App/PageCachePlugin.php
new file mode 100644
index 0000000000000000000000000000000000000000..afb43a516f4eb474417172fa583d0b9ba1971829
--- /dev/null
+++ b/app/code/Magento/PageCache/Model/App/PageCachePlugin.php
@@ -0,0 +1,33 @@
+<?php
+/***
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\PageCache\Model\App;
+
+class PageCachePlugin
+{
+    /**
+     * Attach FPC tag to all saved entries to enable cache type management
+     *
+     * @param \Magento\Framework\App\PageCache\Cache $subject
+     * @param string $data
+     * @param string $identifier
+     * @param string[] $tags
+     * @param int|null $lifeTime
+     * @return array
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function beforeSave(
+        \Magento\Framework\App\PageCache\Cache $subject,
+        $data,
+        $identifier,
+        $tags = [],
+        $lifeTime = null
+    ) {
+        $tags[] = \Magento\PageCache\Model\Cache\Type::CACHE_TAG;
+        return [$data, $identifier, $tags, $lifeTime];
+    }
+}
diff --git a/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php b/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
index 667da81dd04e1494ffb875185b796fc6880a74f9..022824faafbd41faf61b1539f2939ee0ba0277bd 100644
--- a/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
+++ b/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
@@ -66,8 +66,9 @@ class BuiltinPlugin
     ) {
         $result = $proceed($response);
         $usePlugin = $this->registry->registry('use_page_cache_plugin');
-        if (!$this->config->isEnabled() || $this->config->getType() != \Magento\PageCache\Model\Config::BUILT_IN
-            || !$usePlugin) {
+        if (!$usePlugin || !$this->config->isEnabled()
+            || $this->config->getType() != \Magento\PageCache\Model\Config::BUILT_IN
+        ) {
             return $result;
         }
 
@@ -76,6 +77,16 @@ class BuiltinPlugin
             $response->setHeader('X-Magento-Cache-Control', $cacheControl);
             $response->setHeader('X-Magento-Cache-Debug', 'MISS', true);
         }
+
+        $tagsHeader = $response->getHeader('X-Magento-Tags');
+        $tags = [];
+        if ($tagsHeader) {
+            $tags = explode(',', $tagsHeader->getFieldValue());
+            $response->clearHeader('X-Magento-Tags');
+        }
+        $tags = array_unique(array_merge($tags, [\Magento\PageCache\Model\Cache\Type::CACHE_TAG]));
+        $response->setHeader('X-Magento-Tags', implode(',', $tags));
+
         $this->kernel->process($response);
         return $result;
     }
diff --git a/app/code/Magento/PageCache/Test/Unit/Controller/Adminhtml/PageCache/ExportVarnishConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Controller/Adminhtml/PageCache/ExportVarnishConfigTest.php
index d99f597c3e7cb6d51e7397b2018039fc3250e336..4bee20c5f4ce590617e29cdd9858b0e1bb13d473 100644
--- a/app/code/Magento/PageCache/Test/Unit/Controller/Adminhtml/PageCache/ExportVarnishConfigTest.php
+++ b/app/code/Magento/PageCache/Test/Unit/Controller/Adminhtml/PageCache/ExportVarnishConfigTest.php
@@ -102,7 +102,7 @@ class ExportVarnishConfigTest extends \PHPUnit_Framework_TestCase
             $this->returnValue($responseMock)
         );
 
-        $result = $this->action->execute();
+        $result = $this->action->executeInternal();
         $this->assertInstanceOf('Magento\Framework\App\ResponseInterface', $result);
     }
 }
diff --git a/app/code/Magento/PageCache/Test/Unit/Controller/Block/EsiTest.php b/app/code/Magento/PageCache/Test/Unit/Controller/Block/EsiTest.php
index bc23f569d17f6fc421309a634246ffa4cf675532..9bddcbeb778d303a16c94e6c719477a26f03f44e 100644
--- a/app/code/Magento/PageCache/Test/Unit/Controller/Block/EsiTest.php
+++ b/app/code/Magento/PageCache/Test/Unit/Controller/Block/EsiTest.php
@@ -123,7 +123,7 @@ class EsiTest extends \PHPUnit_Framework_TestCase
             ->method('appendBody')
             ->with($this->equalTo($html));
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function executeDataProvider()
@@ -145,6 +145,6 @@ class EsiTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->any())->method('getParam')->will($this->returnValueMap($mapData));
         $this->viewMock->expects($this->never())->method('getLayout')->will($this->returnValue($this->layoutMock));
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php
index a9493a7a4c3abb2b6ff6472ccfce3007d0089ea2..c419a150fc6406d7bc76121f921e6d87508099a7 100644
--- a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php
+++ b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php
@@ -79,7 +79,7 @@ class RenderTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->once())->method('isAjax')->will($this->returnValue(false));
         $this->requestMock->expects($this->once())->method('setActionName')->will($this->returnValue('noroute'));
         $this->requestMock->expects($this->once())->method('setDispatched')->will($this->returnValue(false));
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     /**
@@ -96,7 +96,7 @@ class RenderTest extends \PHPUnit_Framework_TestCase
             ->method('getParam')
             ->with($this->equalTo('handles'), $this->equalTo(''))
             ->will($this->returnValue(''));
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 
     public function testExecute()
@@ -171,6 +171,6 @@ class RenderTest extends \PHPUnit_Framework_TestCase
             ->method('appendBody')
             ->with($this->equalTo(json_encode($expectedData)));
 
-        $this->action->execute();
+        $this->action->executeInternal();
     }
 }
diff --git a/app/code/Magento/PageCache/Test/Unit/Model/App/PageCachePluginTest.php b/app/code/Magento/PageCache/Test/Unit/Model/App/PageCachePluginTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f10bbc747954295ff916f3908ab9d22342dedc0
--- /dev/null
+++ b/app/code/Magento/PageCache/Test/Unit/Model/App/PageCachePluginTest.php
@@ -0,0 +1,30 @@
+<?php
+/***
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\PageCache\Test\Unit\Model\App;
+
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+use Magento\PageCache\Model\Cache\Type;
+
+class PageCachePluginTest extends \PHPUnit_Framework_TestCase
+{
+    public function testBeforeSave()
+    {
+        /** @var \Magento\PageCache\Model\App\PageCachePlugin $plugin */
+        $plugin = (new ObjectManager($this))->getObject('\Magento\PageCache\Model\App\PageCachePlugin');
+        $subjectMock = $this->getMockBuilder('\Magento\Framework\App\PageCache\Cache')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $initTags = ['tag', 'otherTag'];
+        $result = $plugin->beforeSave($subjectMock, 'data', 'identifier', $initTags);
+        $tags = isset($result[2]) ? $result[2] : null;
+        $expectedTags = array_merge($initTags, [Type::CACHE_TAG]);
+        $this->assertNotNull($tags);
+        foreach ($expectedTags as $expected) {
+            $this->assertContains($expected, $tags);
+        }
+    }
+}
diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Controller/Result/BuiltinPluginTest.php b/app/code/Magento/PageCache/Test/Unit/Model/Controller/Result/BuiltinPluginTest.php
index a3542bdc708cf1c7d7dcbfc9fb8d91c6bb626f41..2ae5fa1f9f1e54491c0f00648bab3ed303d5cded 100644
--- a/app/code/Magento/PageCache/Test/Unit/Model/Controller/Result/BuiltinPluginTest.php
+++ b/app/code/Magento/PageCache/Test/Unit/Model/Controller/Result/BuiltinPluginTest.php
@@ -11,83 +11,133 @@ namespace Magento\PageCache\Test\Unit\Model\Controller\Result;
 class BuiltinPluginTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @param bool $usePlugin
-     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $getHeaderCount
-     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setCacheControlHeaderCount
-     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setCacheDebugHeaderCount
-     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $getModeCount
-     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $processCount
-     * @dataProvider dataProvider
+     * @var \Magento\PageCache\Model\Controller\Result\BuiltinPlugin
      */
-    public function testAroundResult(
-        $usePlugin, $getHeaderCount, $setCacheControlHeaderCount, $setCacheDebugHeaderCount, $getModeCount,
-        $processCount
-    ) {
-        $cacheControl = 'test';
-
-        $header = $this->getMockBuilder('Zend\Http\Header\HeaderInterface')
-            ->getMockForAbstractClass();
-        $header->expects($this->any())->method('getFieldValue')
-            ->willReturn($cacheControl);
-
-        $response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false);
-        $response->expects($getHeaderCount)
-            ->method('getHeader')
-            ->with('Cache-Control')
-            ->willReturn($header);
-        $response->expects($setCacheControlHeaderCount)->method('setHeader')
-                ->with('X-Magento-Cache-Control', $cacheControl);
-        $response->expects($setCacheDebugHeaderCount)->method('setHeader')
-                ->with('X-Magento-Cache-Debug', 'MISS', true);
-
-        /** @var \Magento\Framework\Controller\ResultInterface $result */
+    protected $plugin;
+
+    /**
+     * @var \Magento\Framework\Controller\ResultInterface
+     */
+    protected $subject;
+
+    /**
+     * @var \Closure
+     */
+    protected $closure;
+
+    /**
+     * @var \Magento\Framework\App\Response\Http|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $response;
+
+    /**
+     * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $registry;
+
+    /**
+     * @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $state;
+
+    /**
+     * @var \Zend\Http\Header\HeaderInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $header;
+
+    /**
+     * @var \Magento\Framework\App\PageCache\Kernel|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $kernel;
+
+    protected function setUp()
+    {
         $result = $this->getMock('Magento\Framework\Controller\ResultInterface', [], [], '', false);
-        $closure = function () use ($result) {
+        $this->closure = function() use ($result) {
             return $result;
         };
 
-        /** @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject $registry */
-        $registry = $this->getMock('Magento\Framework\Registry', [], [], '', false);
-        $registry->expects($this->once())->method('registry')->with('use_page_cache_plugin')
-            ->will($this->returnValue($usePlugin));
-
-        /** @var \Magento\PageCache\Model\Config|\PHPUnit_Framework_MockObject_MockObject $config */
-        $config = $this->getMock('Magento\PageCache\Model\Config', [], [], '', false);
-        $config->expects($this->once())->method('isEnabled')->will($this->returnValue(true));
-        $config->expects($this->once())->method('getType')
-            ->will($this->returnValue(\Magento\PageCache\Model\Config::BUILT_IN));
+        $this->header = $this->getMock('Zend\Http\Header\HeaderInterface', [], [], '', false);
+        $this->subject = $this->getMock('Magento\Framework\Controller\ResultInterface', [], [], '', false);
+        $this->response = $this->getMock(
+            'Magento\Framework\App\Response\Http',
+            ['getHeader', 'clearHeader', 'setHeader'],
+            [],
+            '',
+            false
+        );
+        $this->response->expects($this->any())->method('getHeader')->willReturnMap(
+            [
+                ['X-Magento-Tags', $this->header],
+                ['Cache-Control', $this->header]
+            ]
+        );
 
-        /** @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject $state */
-        $state = $this->getMock('Magento\Framework\App\State', [], [], '', false);
-        $state->expects($getModeCount)->method('getMode')
-            ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEVELOPER));
+        $this->registry = $this->getMock('Magento\Framework\Registry', [], [], '', false);
 
-        $kernel = $this->getMock('Magento\Framework\App\PageCache\Kernel', [], [], '', false);
-        $kernel->expects($processCount)->method('process')->with($response);
+        $config = $this->getMock('Magento\PageCache\Model\Config', ['isEnabled', 'getType'], [], '', false);
+        $config->expects($this->any())->method('isEnabled')->willReturn(true);
+        $config->expects($this->any())->method('getType')->willReturn(\Magento\PageCache\Model\Config::BUILT_IN);
 
-        $subject = $this->getMock('Magento\Framework\Controller\ResultInterface', [], [], '', false);
+        $this->kernel = $this->getMock('Magento\Framework\App\PageCache\Kernel', [], [], '', false);
 
-        /** @var \Magento\PageCache\Model\Controller\Result\BuiltinPlugin $plugin */
-        $plugin = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))->getObject(
+        $this->state = $this->getMock('Magento\Framework\App\State', [], [], '', false);
+        $this->plugin = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))->getObject(
             'Magento\PageCache\Model\Controller\Result\BuiltinPlugin',
             [
-                'registry' => $registry,
+                'registry' => $this->registry,
                 'config' => $config,
-                'kernel' => $kernel,
-                'state' => $state
+                'kernel' => $this->kernel,
+                'state' => $this->state
             ]
         );
-        $this->assertSame($result, $plugin->aroundRenderResult($subject, $closure, $response));
     }
 
-    /**
-     * @return array
-     */
-    public function dataProvider()
+    public function testAroundResultWithoutPlugin()
     {
-        return [
-            [true, $this->once(), $this->at(1), $this->at(2), $this->once(), $this->once()],
-            [false, $this->never(), $this->never(), $this->never(), $this->never(), $this->never()]
-        ];
+        $this->registry->expects($this->once())->method('registry')->with('use_page_cache_plugin')->willReturn(false);
+        $this->kernel->expects($this->never())->method('process')->with($this->response);
+        $this->assertSame(
+            call_user_func($this->closure),
+            $this->plugin->aroundRenderResult($this->subject, $this->closure, $this->response)
+        );
+    }
+
+    public function testAroundResultWithPlugin()
+    {
+        $this->registry->expects($this->once())->method('registry')->with('use_page_cache_plugin')->willReturn(true);
+        $this->state->expects($this->once())->method('getMode')->willReturn(null);
+        $this->header->expects($this->any())->method('getFieldValue')->willReturn('tag,tag');
+        $this->response->expects($this->once())->method('clearHeader')->with('X-Magento-Tags');
+        $this->response->expects($this->once())->method('setHeader')->with(
+            'X-Magento-Tags',
+            'tag,' . \Magento\PageCache\Model\Cache\Type::CACHE_TAG
+        );
+        $this->kernel->expects($this->once())->method('process')->with($this->response);
+        $result = call_user_func($this->closure);
+        $this->assertSame($result, $this->plugin->aroundRenderResult($this->subject, $this->closure, $this->response));
+    }
+
+    public function testAroundResultWithPluginDeveloperMode()
+    {
+        $this->registry->expects($this->once())->method('registry')->with('use_page_cache_plugin')->willReturn(true);
+        $this->state->expects($this->once())->method('getMode')
+            ->willReturn(\Magento\Framework\App\State::MODE_DEVELOPER);
+
+        $this->header->expects($this->any())->method('getFieldValue')->willReturnOnConsecutiveCalls('test', 'tag,tag2');
+
+        $this->response->expects($this->any())->method('setHeader')->withConsecutive(
+            ['X-Magento-Cache-Control', 'test'],
+            ['X-Magento-Cache-Debug', 'MISS', true],
+            ['X-Magento-Tags', 'tag,tag2,' . \Magento\PageCache\Model\Cache\Type::CACHE_TAG]
+        );
+
+        $this->response->expects($this->once())->method('clearHeader')->with('X-Magento-Tags');
+        $this->registry->expects($this->once())->method('registry')->with('use_page_cache_plugin')
+            ->will($this->returnValue(true));
+        $this->kernel->expects($this->once())->method('process')->with($this->response);
+
+        $result = call_user_func($this->closure);
+        $this->assertSame($result, $this->plugin->aroundRenderResult($this->subject, $this->closure, $this->response));
     }
 }
diff --git a/app/code/Magento/PageCache/etc/di.xml b/app/code/Magento/PageCache/etc/di.xml
index b5a248f714ab99470403549ccf33b28391f9dbd1..1543abaa27781263d365c12e4c89ec6eac078c5f 100644
--- a/app/code/Magento/PageCache/etc/di.xml
+++ b/app/code/Magento/PageCache/etc/di.xml
@@ -10,4 +10,7 @@
         <plugin name="core-app-area-design-exception-plugin"
                 type="Magento\PageCache\Model\App\CacheIdentifierPlugin" sortOrder="10"/>
     </type>
+    <type name="Magento\Framework\App\PageCache\Cache">
+        <plugin name="fpc-tag-addition-plugin" type="Magento\PageCache\Model\App\PageCachePlugin"/>
+    </type>
 </config>
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Cancel.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Cancel.php
index 70134fdf2826f83f2c613f1d4362e608a59fc4a1..f26e1c043919e7dd46740cd65f0890602f34db98 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Cancel.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Cancel.php
@@ -13,7 +13,7 @@ class Cancel extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $agreementModel = $this->_initBillingAgreement();
 
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/CustomerGrid.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/CustomerGrid.php
index 0c157101b70656897442a3878a2bebd6d26a2b16..8fe43e3611b7dde11accaf0c127e7367dbd78236 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/CustomerGrid.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/CustomerGrid.php
@@ -29,7 +29,7 @@ class CustomerGrid extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreemen
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initCurrentCustomer();
         $this->_view->loadLayout(false);
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Delete.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Delete.php
index 3bc7143a4a1d0140a56c607a0e89a2bd69a2a32e..3351f7dcf7e2e3dabd8686a6f585a9242181653f 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Delete.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $agreementModel = $this->_initBillingAgreement();
 
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Grid.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Grid.php
index 2753574d2b4f91c342fd7360bfaa69ccf2ff1723..a84f114d41e2eb5e79cb0990fb76102229b9071a 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Grid.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Index.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Index.php
index f20444f9214c29aee19876dda3133498b5148dc5..51edf6b55bfe816c52dbcb97c22b94ff82d1c0b9 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Index.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_Paypal::paypal_billing_agreement');
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/OrdersGrid.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/OrdersGrid.php
index 62208a96b7103f20f1bc4752fc72ca3114c6c3fa..10b9b003c845434523aee1788bb2288f44c23872 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/OrdersGrid.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/OrdersGrid.php
@@ -13,7 +13,7 @@ class OrdersGrid extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initBillingAgreement();
         $this->_view->loadLayout(false);
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/View.php b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/View.php
index 3755d973cac117e3a473603d3be8bbc629c2815b..85c81a77788199ccbc0226b233fe5ef2a146b1e1 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/View.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Billing/Agreement/View.php
@@ -13,7 +13,7 @@ class View extends \Magento\Paypal\Controller\Adminhtml\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $agreementModel = $this->_initBillingAgreement();
 
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Details.php b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Details.php
index 20633c5c585e4f9c263e1dcaa8dd5ea6ad488146..f48168d33d397fa893f62d1ef2099899f63a73dc 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Details.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Details.php
@@ -13,7 +13,7 @@ class Details extends \Magento\Paypal\Controller\Adminhtml\Paypal\Reports
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $rowId = $this->getRequest()->getParam('id');
         $row = $this->_rowFactory->create()->load($rowId);
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Fetch.php b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Fetch.php
index 89ccd4a5f9d6d680c579f970607d89b90f1ad168..67c4824259e2482ba9a1d22e6c2f011777408604 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Fetch.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Fetch.php
@@ -18,7 +18,7 @@ class Fetch extends \Magento\Paypal\Controller\Adminhtml\Paypal\Reports
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $reports = $this->_settlementFactory->create();
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Grid.php b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Grid.php
index 33551753da591789dfab865a9b6ac0ed89b69bf1..0d3342c2669556f65b15fd1539e078ade1dd2e07 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Grid.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Paypal\Controller\Adminhtml\Paypal\Reports
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Index.php b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Index.php
index 2f2ad28ce19589850e54c6992e6431be55fa2401..4bd6de4cdfb9b489a26fbc018a707158cf3e6541 100644
--- a/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Index.php
+++ b/app/code/Magento/Paypal/Controller/Adminhtml/Paypal/Reports/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Paypal\Controller\Adminhtml\Paypal\Reports
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement.php b/app/code/Magento/Paypal/Controller/Billing/Agreement.php
index 8d6f0f0b1e63bf9c445df1f3ee365f2d22071835..01f632dba7fc035f4764e249728a3538ea10aeba 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement.php
@@ -37,15 +37,15 @@ abstract class Agreement extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$request->isDispatched()) {
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
         if (!$this->_getSession()->authenticate()) {
             $this->_actionFlag->set('', 'no-dispatch', true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/Cancel.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/Cancel.php
index ee0daf917271df0d05a9e271dc7a4535f679aa8e..5b8e8f30b753b0c5bab3641938b52030d3444143 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/Cancel.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/Cancel.php
@@ -14,7 +14,7 @@ class Cancel extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $agreement = $this->_initAgreement();
         if (!$agreement) {
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/CancelWizard.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/CancelWizard.php
index f95b687f57631edf39096271425457ffc3fc4f19..22394e572ada4abfe98ec4ad053fc4dcd2a3ed11 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/CancelWizard.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/CancelWizard.php
@@ -13,7 +13,7 @@ class CancelWizard extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_redirect('*/*/index');
     }
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/Index.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/Index.php
index 85c210699962a5db3f8306be4210dcd6d90d47a8..c5ccc5c8afbffd583228be877f675b473552da0e 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/Index.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Billing Agreements'));
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/ReturnWizard.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/ReturnWizard.php
index 59040954d0cee5efa5e7488253de7725bb6dea22..f7bd4d4b3a3117c2ccc4f6bef72c5057fbb89501 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/ReturnWizard.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/ReturnWizard.php
@@ -15,7 +15,7 @@ class ReturnWizard extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Paypal\Model\Billing\Agreement $agreement */
         $agreement = $this->_objectManager->create('Magento\Paypal\Model\Billing\Agreement');
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/StartWizard.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/StartWizard.php
index 407240c756b593ee3cb1ff7fede165751bcb398e..24364b02e0d14d56a021ac041ae11456756ce27f 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/StartWizard.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/StartWizard.php
@@ -13,7 +13,7 @@ class StartWizard extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return \Magento\Framework\App\Response\Http
      */
-    public function execute()
+    public function executeInternal()
     {
         $agreement = $this->_objectManager->create('Magento\Paypal\Model\Billing\Agreement');
         $paymentCode = $this->getRequest()->getParam('payment_method');
diff --git a/app/code/Magento/Paypal/Controller/Billing/Agreement/View.php b/app/code/Magento/Paypal/Controller/Billing/Agreement/View.php
index 31b2dfd759c15e75d31c5ad778303620228d2a10..2cbe118f4db85637320302b99cf8cc7cefd61781 100644
--- a/app/code/Magento/Paypal/Controller/Billing/Agreement/View.php
+++ b/app/code/Magento/Paypal/Controller/Billing/Agreement/View.php
@@ -13,7 +13,7 @@ class View extends \Magento\Paypal\Controller\Billing\Agreement
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!($agreement = $this->_initAgreement())) {
             return;
diff --git a/app/code/Magento/Paypal/Controller/Bml/Start.php b/app/code/Magento/Paypal/Controller/Bml/Start.php
index d189c91965e7b24cb7b32a21f08eeb28e6c67e2b..1fe8cc717009b1452202e496926fe2cfcd741f67 100644
--- a/app/code/Magento/Paypal/Controller/Bml/Start.php
+++ b/app/code/Magento/Paypal/Controller/Bml/Start.php
@@ -13,7 +13,7 @@ class Start extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward(
             'start',
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Cancel.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Cancel.php
index 05c5dd2b5d171515f8cac1a4746dc36d3361aded..a6b9079f91302feb0ba2ad2439d70303de8a0da1 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Cancel.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Cancel.php
@@ -15,7 +15,7 @@ class Cancel extends \Magento\Paypal\Controller\Express\AbstractExpress
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initToken(false);
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Edit.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Edit.php
index a9e879b51472e0194d6dc2d1c64fcca2851b2765..c7bca308846015de8eae956e837d9746f2ec1c90 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Edit.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Paypal\Controller\Express\AbstractExpress
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->getResponse()->setRedirect($this->_config->getExpressCheckoutEditUrl($this->_initToken()));
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/PlaceOrder.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/PlaceOrder.php
index 3a723692287725cb6b79409e34e1a3bae2465d1d..456eb87f65e8d838cd0bc2c989c77b4e6b2a7e61 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/PlaceOrder.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/PlaceOrder.php
@@ -60,7 +60,7 @@ class PlaceOrder extends \Magento\Paypal\Controller\Express\AbstractExpress
      * @return void
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             if ($this->isValidationRequired() &&
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ReturnAction.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ReturnAction.php
index 20604c61a1dfa8dc441e17f92d608722c9d58175..a1df008106672ec21d23ce82f807e594dcc13309 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ReturnAction.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ReturnAction.php
@@ -15,7 +15,7 @@ class ReturnAction extends \Magento\Paypal\Controller\Express\AbstractExpress
      *
      * @return void|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Review.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Review.php
index ec848148b647f12decc5683c7a6f6861581c7239..f60c2fd7847e41ee32a3254823755ce106e99087 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Review.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Review.php
@@ -15,7 +15,7 @@ class Review extends \Magento\Paypal\Controller\Express\AbstractExpress
      *
      * @return void|\Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initCheckout();
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/SaveShippingMethod.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/SaveShippingMethod.php
index 311900157b1929ffe648a0e986fc72fe31bce223..befc1615314c9373f5db4a6cf773fc00cf3b5662 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/SaveShippingMethod.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/SaveShippingMethod.php
@@ -13,7 +13,7 @@ class SaveShippingMethod extends \Magento\Paypal\Controller\Express\AbstractExpr
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $isAjax = $this->getRequest()->getParam('isAjax');
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ShippingOptionsCallback.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ShippingOptionsCallback.php
index a66433f346aa8447ab17e1feda209b64bbc8af75..ca53012f5346d1a202c42438b3d085f757a1be8d 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ShippingOptionsCallback.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/ShippingOptionsCallback.php
@@ -53,7 +53,7 @@ class ShippingOptionsCallback extends \Magento\Paypal\Controller\Express\Abstrac
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $quoteId = $this->getRequest()->getParam('quote_id');
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Start.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Start.php
index 1ec1c2d96c8683785250aa06017c0fea92ba9d55..dae43744757fb3199e33976d117b099dd613e231 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Start.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/Start.php
@@ -16,7 +16,7 @@ class Start extends \Magento\Paypal\Controller\Express\AbstractExpress
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initCheckout();
diff --git a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/UpdateShippingMethods.php b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/UpdateShippingMethods.php
index 1d0cbdf54813759824ac61c9bec4ad146ced0234..dc4f01b3f3cd7db4fdfee44d562b359af5a50443 100644
--- a/app/code/Magento/Paypal/Controller/Express/AbstractExpress/UpdateShippingMethods.php
+++ b/app/code/Magento/Paypal/Controller/Express/AbstractExpress/UpdateShippingMethods.php
@@ -13,7 +13,7 @@ class UpdateShippingMethods extends \Magento\Paypal\Controller\Express\AbstractE
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_initCheckout();
diff --git a/app/code/Magento/Paypal/Controller/Hostedpro/Cancel.php b/app/code/Magento/Paypal/Controller/Hostedpro/Cancel.php
index fab449dc198232c66e825143fdbf02a26e67caaa..0889ae11aa1e8b4c5feaf1c1867816aac3824637 100644
--- a/app/code/Magento/Paypal/Controller/Hostedpro/Cancel.php
+++ b/app/code/Magento/Paypal/Controller/Hostedpro/Cancel.php
@@ -48,7 +48,7 @@ class Cancel extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $gotoSection = $this->_cancelPayment();
diff --git a/app/code/Magento/Paypal/Controller/Hostedpro/Redirect.php b/app/code/Magento/Paypal/Controller/Hostedpro/Redirect.php
index aa3a234d2d2a69583117eca6a74a20d054696e85..37c874e14fa6abc0a21a773dd7804dd1c68852f8 100644
--- a/app/code/Magento/Paypal/Controller/Hostedpro/Redirect.php
+++ b/app/code/Magento/Paypal/Controller/Hostedpro/Redirect.php
@@ -13,7 +13,7 @@ class Redirect extends \Magento\Paypal\Controller\Payflow
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->setRedirect(
             $this->getOrder()->getPayment()->getAdditionalInformation('secure_form_url')
diff --git a/app/code/Magento/Paypal/Controller/Hostedpro/ReturnAction.php b/app/code/Magento/Paypal/Controller/Hostedpro/ReturnAction.php
index 9f0651b3a14571a00a408ce5fe6e380f2e82020c..b3f791e5782140e1da57adbdc14406d0bf988942 100644
--- a/app/code/Magento/Paypal/Controller/Hostedpro/ReturnAction.php
+++ b/app/code/Magento/Paypal/Controller/Hostedpro/ReturnAction.php
@@ -13,7 +13,7 @@ class ReturnAction extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $session = $this->_objectManager->get('Magento\Checkout\Model\Session');
         //TODO: some actions with order
diff --git a/app/code/Magento/Paypal/Controller/Ipn/Index.php b/app/code/Magento/Paypal/Controller/Ipn/Index.php
index b8078937d320c498347ad1ce6ddbdbc89c7f78a1..b3384cba4dee94c2f892ac2d5e88e470c0c47529 100644
--- a/app/code/Magento/Paypal/Controller/Ipn/Index.php
+++ b/app/code/Magento/Paypal/Controller/Ipn/Index.php
@@ -45,7 +45,7 @@ class Index extends \Magento\Framework\App\Action\Action
      * @return void
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->isPost()) {
             return;
diff --git a/app/code/Magento/Paypal/Controller/Payflow/CancelPayment.php b/app/code/Magento/Paypal/Controller/Payflow/CancelPayment.php
index fa59c545b86b774333477e9a15d92268cdeda6bd..7bd94850d9d4c1314ba96738be57a88230266e30 100644
--- a/app/code/Magento/Paypal/Controller/Payflow/CancelPayment.php
+++ b/app/code/Magento/Paypal/Controller/Payflow/CancelPayment.php
@@ -13,7 +13,7 @@ class CancelPayment extends \Magento\Paypal\Controller\Payflow
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $gotoSection = $this->_cancelPayment();
diff --git a/app/code/Magento/Paypal/Controller/Payflow/Form.php b/app/code/Magento/Paypal/Controller/Payflow/Form.php
index 47834722d2b21e1902ee8f8d8d605a3b6ac3ea4c..32ca42096595453a1dd2cd287240dd62bfb17cb5 100644
--- a/app/code/Magento/Paypal/Controller/Payflow/Form.php
+++ b/app/code/Magento/Paypal/Controller/Payflow/Form.php
@@ -17,7 +17,7 @@ class Form extends Payflow
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->setHeader('P3P', 'CP="CAO PSA OUR"');
         $this->_view->loadLayout(false)->renderLayout();
diff --git a/app/code/Magento/Paypal/Controller/Payflow/ReturnUrl.php b/app/code/Magento/Paypal/Controller/Payflow/ReturnUrl.php
index 1907a07045f39b85f576328a09c875a8fca0a06e..1c095d439eee5ae801a5377263df20f4fa01f85c 100644
--- a/app/code/Magento/Paypal/Controller/Payflow/ReturnUrl.php
+++ b/app/code/Magento/Paypal/Controller/Payflow/ReturnUrl.php
@@ -24,7 +24,7 @@ class ReturnUrl extends Payflow
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         /** @var \Magento\Checkout\Block\Onepage\Success $redirectBlock */
diff --git a/app/code/Magento/Paypal/Controller/Payflow/SilentPost.php b/app/code/Magento/Paypal/Controller/Payflow/SilentPost.php
index 8b737177ada22301574b7e6d0bfd20941100a102..9f1aae5624f692cc100139f5d401d95cd714729a 100644
--- a/app/code/Magento/Paypal/Controller/Payflow/SilentPost.php
+++ b/app/code/Magento/Paypal/Controller/Payflow/SilentPost.php
@@ -13,7 +13,7 @@ class SilentPost extends \Magento\Paypal\Controller\Payflow
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         if (isset($data['INVNUM'])) {
diff --git a/app/code/Magento/Paypal/Controller/Payflowbml/Start.php b/app/code/Magento/Paypal/Controller/Payflowbml/Start.php
index 4cd82e1146492a04524e29386a9d28ecf27de89c..8da3b6f2715fbf7c19f64e3d20737522bfa3db67 100644
--- a/app/code/Magento/Paypal/Controller/Payflowbml/Start.php
+++ b/app/code/Magento/Paypal/Controller/Payflowbml/Start.php
@@ -13,7 +13,7 @@ class Start extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward(
             'start',
diff --git a/app/code/Magento/Paypal/Controller/Transparent/RequestSecureToken.php b/app/code/Magento/Paypal/Controller/Transparent/RequestSecureToken.php
index 2fba2402a5f6b686f38d2a65e84d68fe782951a5..923988d12a1d85422b5eb192b45004c9311111a7 100644
--- a/app/code/Magento/Paypal/Controller/Transparent/RequestSecureToken.php
+++ b/app/code/Magento/Paypal/Controller/Transparent/RequestSecureToken.php
@@ -77,7 +77,7 @@ class RequestSecureToken extends \Magento\Framework\App\Action\Action
      *
      * @return ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var Quote $quote */
         $quote = $this->sessionManager->getQuote();
diff --git a/app/code/Magento/Paypal/Controller/Transparent/Response.php b/app/code/Magento/Paypal/Controller/Transparent/Response.php
index c6c8105cba90e31ca1ae5daff3048157e6bd2e9a..30792f3857825fd9148efe9c2f4df10f8254a25d 100644
--- a/app/code/Magento/Paypal/Controller/Transparent/Response.php
+++ b/app/code/Magento/Paypal/Controller/Transparent/Response.php
@@ -62,7 +62,7 @@ class Response extends \Magento\Framework\App\Action\Action
     /**
      * @return ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $parameters = [];
         try {
diff --git a/app/code/Magento/Paypal/Model/System/Config/Backend/Cert.php b/app/code/Magento/Paypal/Model/System/Config/Backend/Cert.php
index 14607a6c87d9cb01be32d4193dc0b9e55e1b555e..a3a1a5df48cd937a11d2b6ab47b0227c83f755a7 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Backend/Cert.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Backend/Cert.php
@@ -10,6 +10,8 @@ use Magento\Framework\Filesystem\DirectoryList;
 
 /**
  * Backend model for saving certificate file in case of using certificate based authentication
+ *
+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  */
 class Cert extends \Magento\Framework\App\Config\Value
 {
@@ -32,6 +34,7 @@ class Cert extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Paypal\Model\CertFactory $certFactory
      * @param \Magento\Framework\Encryption\EncryptorInterface $encryptor
      * @param \Magento\Framework\Filesystem $filesystem
@@ -43,6 +46,7 @@ class Cert extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Paypal\Model\CertFactory $certFactory,
         \Magento\Framework\Encryption\EncryptorInterface $encryptor,
         \Magento\Framework\Filesystem $filesystem,
@@ -53,7 +57,7 @@ class Cert extends \Magento\Framework\App\Config\Value
         $this->_certFactory = $certFactory;
         $this->_encryptor = $encryptor;
         $this->_tmpDirectory = $filesystem->getDirectoryRead(DirectoryList::SYS_TMP);
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Paypal/Model/System/Config/Backend/Cron.php b/app/code/Magento/Paypal/Model/System/Config/Backend/Cron.php
index 8afc08f14711c884e8cae9e940c7c9af13c33f81..7f09498fe186453189a36ac974026d7d680df2b4 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Backend/Cron.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Backend/Cron.php
@@ -20,6 +20,7 @@ class Cron extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Config\ValueFactory $configValueFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -29,13 +30,14 @@ class Cron extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Config\ValueFactory $configValueFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_configValueFactory = $configValueFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Paypal/Model/System/Config/Backend/MerchantCountry.php b/app/code/Magento/Paypal/Model/System/Config/Backend/MerchantCountry.php
index caa265b4e07a3ccdadf35d62d7fda84a64d9629d..de7b66382d195738bcc9ca7076728b32225bcef4 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Backend/MerchantCountry.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Backend/MerchantCountry.php
@@ -26,6 +26,7 @@ class MerchantCountry extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Directory\Helper\Data $directoryHelper
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -36,6 +37,7 @@ class MerchantCountry extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Directory\Helper\Data $directoryHelper,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -43,7 +45,7 @@ class MerchantCountry extends \Magento\Framework\App\Config\Value
         array $data = []
     ) {
         $this->directoryHelper = $directoryHelper;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
         $this->_storeManager = $storeManager;
     }
 
diff --git a/app/code/Magento/Paypal/Test/Unit/Controller/Billing/Agreement/CancelTest.php b/app/code/Magento/Paypal/Test/Unit/Controller/Billing/Agreement/CancelTest.php
index 8d4e0ef4ccfc2a7866aaf11afdb978c2d61f7c07..3a7ae2302c3134ea9a1da44a4d925cacc8bfac80 100644
--- a/app/code/Magento/Paypal/Test/Unit/Controller/Billing/Agreement/CancelTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Controller/Billing/Agreement/CancelTest.php
@@ -122,7 +122,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             $this->identicalTo($this->_agreement)
         );
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     public function testExecuteAgreementDoesNotBelongToCustomer()
@@ -136,7 +136,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
 
         $this->_registry->expects($this->never())->method('register');
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     public function testExecuteAgreementStatusDoesNotAllowToCancel()
@@ -157,6 +157,6 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             $this->identicalTo($this->_agreement)
         );
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Paypal/Test/Unit/Controller/Ipn/IndexTest.php b/app/code/Magento/Paypal/Test/Unit/Controller/Ipn/IndexTest.php
index e3c5c9445e4ddf04b045701bfd4b11c8645e21f8..e34159f711ae8369dc662fe1191bd2c03ded8554 100644
--- a/app/code/Magento/Paypal/Test/Unit/Controller/Ipn/IndexTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Controller/Ipn/IndexTest.php
@@ -8,7 +8,7 @@ namespace Magento\Paypal\Test\Unit\Controller\Ipn;
 
 class IndexTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var Index */
+    /** @var \Magento\Paypal\Controller\Ipn\Index */
     protected $model;
 
     /** @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject */
@@ -44,6 +44,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->request->expects($this->once())->method('getPostValue')->will($this->throwException($exception));
         $this->logger->expects($this->once())->method('critical')->with($this->identicalTo($exception));
         $this->response->expects($this->once())->method('setHttpResponseCode')->with(500);
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Paypal/Test/Unit/Controller/Payflow/ReturnUrlTest.php b/app/code/Magento/Paypal/Test/Unit/Controller/Payflow/ReturnUrlTest.php
index 96a45ab4cfb23b9d5e8ec462810462d73338a874..b4ae7940e76a67121c7455f56b5e274a01ca0028 100644
--- a/app/code/Magento/Paypal/Test/Unit/Controller/Payflow/ReturnUrlTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Controller/Payflow/ReturnUrlTest.php
@@ -202,7 +202,7 @@ class ReturnUrlTest extends \PHPUnit_Framework_TestCase
             ->with('goto_success_page', true)
             ->will($this->returnSelf());
 
-        $this->returnUrl->execute();
+        $this->returnUrl->executeInternal();
     }
 
     /**
@@ -272,6 +272,6 @@ class ReturnUrlTest extends \PHPUnit_Framework_TestCase
             ->with('error_msg', __('Your payment has been declined. Please try again.'))
             ->will($this->returnSelf());
 
-        $this->returnUrl->execute();
+        $this->returnUrl->executeInternal();
     }
 }
diff --git a/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/RequestSecureTokenTest.php b/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/RequestSecureTokenTest.php
index 7285064bcb799660efe6bbabb99bb02b2fb69073..4429f6a9e5df484a16333a03fe0918baa60e6232 100644
--- a/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/RequestSecureTokenTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/RequestSecureTokenTest.php
@@ -153,7 +153,7 @@ class RequestSecureTokenTest extends \PHPUnit_Framework_TestCase
             ->with($resultExpectation)
             ->willReturnSelf();
 
-        $this->assertEquals($jsonMock, $this->controller->execute());
+        $this->assertEquals($jsonMock, $this->controller->executeInternal());
     }
 
     public function testExecuteTokenRequestException()
@@ -193,7 +193,7 @@ class RequestSecureTokenTest extends \PHPUnit_Framework_TestCase
             ->with($resultExpectation)
             ->willReturnSelf();
 
-        $this->assertEquals($jsonMock, $this->controller->execute());
+        $this->assertEquals($jsonMock, $this->controller->executeInternal());
     }
 
     public function testExecuteEmptyQuoteError()
@@ -220,6 +220,6 @@ class RequestSecureTokenTest extends \PHPUnit_Framework_TestCase
             ->with($resultExpectation)
             ->willReturnSelf();
 
-        $this->assertEquals($jsonMock, $this->controller->execute());
+        $this->assertEquals($jsonMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/ResponseTest.php b/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/ResponseTest.php
index 7cddae94159b472654bf6d3ca4ce6bc3d81f569a..b772f2d79bfa999699f2e91b63baf4beadff0212 100644
--- a/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/ResponseTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Controller/Transparent/ResponseTest.php
@@ -119,7 +119,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase
             ->method('getLayout')
             ->willReturn($this->getLayoutMock());
 
-        $this->assertInstanceOf('\Magento\Framework\Controller\ResultInterface', $this->object->execute());
+        $this->assertInstanceOf('\Magento\Framework\Controller\ResultInterface', $this->object->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -144,7 +144,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase
             ->method('getLayout')
             ->willReturn($this->getLayoutMock());
 
-        $this->assertInstanceOf('\Magento\Framework\Controller\ResultInterface', $this->object->execute());
+        $this->assertInstanceOf('\Magento\Framework\Controller\ResultInterface', $this->object->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php b/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php
index fbe7be4e45268898ad71225ccd30f755591f437e..2defce5a7187b0c213a0fce4c944a7c940f85651 100644
--- a/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php
+++ b/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php
@@ -18,7 +18,7 @@ class ExpressCheckout extends Index
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->messageManager->addNotice(__('Your shopping cart has been updated with new prices.'));
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Persistent/Controller/Index/SaveMethod.php b/app/code/Magento/Persistent/Controller/Index/SaveMethod.php
index 64e32cb94724642e429b84d55d61c742e6f0e619..e83d6085b0706a0575b8f2224005dd4020879878 100644
--- a/app/code/Magento/Persistent/Controller/Index/SaveMethod.php
+++ b/app/code/Magento/Persistent/Controller/Index/SaveMethod.php
@@ -15,7 +15,7 @@ class SaveMethod extends Index
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->sessionHelper->isPersistent()) {
             $this->sessionHelper->getSession()->removePersistentCookie();
diff --git a/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php b/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php
index 369c63f7de88093d062f2625bab0558d86f4ad15..eb45cfbb1761f1844e9009c3aae8be7481e71356 100644
--- a/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php
+++ b/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php
@@ -15,7 +15,7 @@ class UnsetCookie extends Index
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->sessionHelper->isPersistent()) {
             $this->cleanup();
diff --git a/app/code/Magento/ProductAlert/Controller/Add.php b/app/code/Magento/ProductAlert/Controller/Add.php
index 78ceff1e6299dd504df3ef39255657404d4acda5..299dedbdbf6442ea25a89d43497857556a38fb2e 100644
--- a/app/code/Magento/ProductAlert/Controller/Add.php
+++ b/app/code/Magento/ProductAlert/Controller/Add.php
@@ -35,7 +35,7 @@ abstract class Add extends Action
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->customerSession->authenticate()) {
             $this->_actionFlag->set('', 'no-dispatch', true);
@@ -43,6 +43,6 @@ abstract class Add extends Action
                 $this->customerSession->setBeforeUrl($this->_redirect->getRefererUrl());
             }
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 }
diff --git a/app/code/Magento/ProductAlert/Controller/Add/Price.php b/app/code/Magento/ProductAlert/Controller/Add/Price.php
index 7ee60ebf79966894a1d6f86911ddeadfc00afa1b..b6a79a78f46e82573eadba610778cf10802956a5 100644
--- a/app/code/Magento/ProductAlert/Controller/Add/Price.php
+++ b/app/code/Magento/ProductAlert/Controller/Add/Price.php
@@ -63,7 +63,7 @@ class Price extends AddController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $backUrl = $this->getRequest()->getParam(Action::PARAM_NAME_URL_ENCODED);
         $productId = (int)$this->getRequest()->getParam('product_id');
diff --git a/app/code/Magento/ProductAlert/Controller/Add/Stock.php b/app/code/Magento/ProductAlert/Controller/Add/Stock.php
index ea0cb55cc15848258372be9acc726a42c0ab5101..0756c5168bd8426b550256bd4e9fa133761b3bbc 100644
--- a/app/code/Magento/ProductAlert/Controller/Add/Stock.php
+++ b/app/code/Magento/ProductAlert/Controller/Add/Stock.php
@@ -37,7 +37,7 @@ class Stock extends AddController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $backUrl = $this->getRequest()->getParam(Action::PARAM_NAME_URL_ENCODED);
         $productId = (int)$this->getRequest()->getParam('product_id');
diff --git a/app/code/Magento/ProductAlert/Controller/Add/TestObserver.php b/app/code/Magento/ProductAlert/Controller/Add/TestObserver.php
index 96a357be0e8ab3c11263a468ac73eac581650c7a..87a3ba10cf989b547f62cb8580499250b890558d 100644
--- a/app/code/Magento/ProductAlert/Controller/Add/TestObserver.php
+++ b/app/code/Magento/ProductAlert/Controller/Add/TestObserver.php
@@ -13,7 +13,7 @@ class TestObserver extends AddController
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $object = new DataObject();
         /** @var \Magento\ProductAlert\Model\Observer $observer */
diff --git a/app/code/Magento/ProductAlert/Controller/Unsubscribe/Price.php b/app/code/Magento/ProductAlert/Controller/Unsubscribe/Price.php
index 46ba80f4b3a55cf98baf0fecfaad40f92b2432b1..c0050834b692f82dd97bc8fe3561f7fb5ce95a5b 100644
--- a/app/code/Magento/ProductAlert/Controller/Unsubscribe/Price.php
+++ b/app/code/Magento/ProductAlert/Controller/Unsubscribe/Price.php
@@ -36,7 +36,7 @@ class Price extends UnsubscribeController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int)$this->getRequest()->getParam('product');
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/ProductAlert/Controller/Unsubscribe/PriceAll.php b/app/code/Magento/ProductAlert/Controller/Unsubscribe/PriceAll.php
index 1dafba13dd766c8503e5b270dd64ee8a0bf86bba..0055633db681add71072901d43d3daa63c53129b 100644
--- a/app/code/Magento/ProductAlert/Controller/Unsubscribe/PriceAll.php
+++ b/app/code/Magento/ProductAlert/Controller/Unsubscribe/PriceAll.php
@@ -13,7 +13,7 @@ class PriceAll extends UnsubscribeController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_objectManager->create('Magento\ProductAlert\Model\Price')
diff --git a/app/code/Magento/ProductAlert/Controller/Unsubscribe/Stock.php b/app/code/Magento/ProductAlert/Controller/Unsubscribe/Stock.php
index 3052fcfe0abefb78c1138f0da0c5ea86d2607db1..50284d3b04d8a8f6fb559aac2ea82151c5d4c302 100644
--- a/app/code/Magento/ProductAlert/Controller/Unsubscribe/Stock.php
+++ b/app/code/Magento/ProductAlert/Controller/Unsubscribe/Stock.php
@@ -36,7 +36,7 @@ class Stock extends UnsubscribeController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int)$this->getRequest()->getParam('product');
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/ProductAlert/Controller/Unsubscribe/StockAll.php b/app/code/Magento/ProductAlert/Controller/Unsubscribe/StockAll.php
index 63872d2cdd937528bd98bf16c4738364a018ff14..7b4eddfc7c0d72d2a9fc243bbf4ffe5297f65fca 100644
--- a/app/code/Magento/ProductAlert/Controller/Unsubscribe/StockAll.php
+++ b/app/code/Magento/ProductAlert/Controller/Unsubscribe/StockAll.php
@@ -13,7 +13,7 @@ class StockAll extends UnsubscribeController
     /**
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_objectManager->create('Magento\ProductAlert\Model\Stock')
diff --git a/app/code/Magento/ProductVideo/Controller/Adminhtml/Product/Gallery/RetrieveImage.php b/app/code/Magento/ProductVideo/Controller/Adminhtml/Product/Gallery/RetrieveImage.php
index 6d969e88642eb78fdb96a665a86588a314c057ab..cf5f42da71cf4efe27499956c17c5360ed767013 100644
--- a/app/code/Magento/ProductVideo/Controller/Adminhtml/Product/Gallery/RetrieveImage.php
+++ b/app/code/Magento/ProductVideo/Controller/Adminhtml/Product/Gallery/RetrieveImage.php
@@ -73,7 +73,7 @@ class RetrieveImage extends \Magento\Backend\App\Action
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $baseTmpMediaPath = $this->mediaConfig->getBaseTmpMediaPath();
         try {
diff --git a/app/code/Magento/ProductVideo/Test/Unit/Controller/Adminhtml/Product/Gallery/RetrieveImageTest.php b/app/code/Magento/ProductVideo/Test/Unit/Controller/Adminhtml/Product/Gallery/RetrieveImageTest.php
index bd11bb20d4e368a15f28b35cd20394c184a409c4..70af0519f536ae9504e65040abe243e0a025b8d1 100644
--- a/app/code/Magento/ProductVideo/Test/Unit/Controller/Adminhtml/Product/Gallery/RetrieveImageTest.php
+++ b/app/code/Magento/ProductVideo/Test/Unit/Controller/Adminhtml/Product/Gallery/RetrieveImageTest.php
@@ -128,6 +128,6 @@ class RetrieveImageTest extends \PHPUnit_Framework_TestCase
         $readInterface->expects($this->any())->method('getAbsolutePath')->willReturn('/var/www/application/sample.jpg');
         $this->abstractAdapter->expects($this->any())->method('validateUploadFile')->willReturn('true');
 
-        $this->image->execute();
+        $this->image->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Accounts.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Accounts.php
index b53d9b874610ca9a3499d2b85ec89898ee6198bb..da8eb394ba5868236b9d7ddf28c9e7ac0c8ff8b8 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Accounts.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Accounts.php
@@ -13,7 +13,7 @@ class Accounts extends \Magento\Reports\Controller\Adminhtml\Report\Customer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_customers_accounts'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsCsv.php
index 1fa8340b524ebe9e810b0c79f1d7e80867eac8d1..2de1d222650202068253a1884a63b4877c0f4c1f 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsCsv.php
@@ -17,7 +17,7 @@ class ExportAccountsCsv extends \Magento\Reports\Controller\Adminhtml\Report\Cus
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'new_accounts.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsExcel.php
index 368c8d0691751298962756874bab585559d355c5..b7e565a3f407d6ce56670b1c917693420eefcb9c 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportAccountsExcel.php
@@ -17,7 +17,7 @@ class ExportAccountsExcel extends \Magento\Reports\Controller\Adminhtml\Report\C
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'new_accounts.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersCsv.php
index d674ff274c25ea08bbdd8ab3c62d4602f5c00ca6..8e12efa03ebaad4e391090180d41bb6a1bd2a17e 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersCsv.php
@@ -17,7 +17,7 @@ class ExportOrdersCsv extends \Magento\Reports\Controller\Adminhtml\Report\Custo
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customers_orders.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersExcel.php
index 205107520422d85b81be80a96974bd19d0000cee..c3f2afa18148d957de285ee5ed77d4a1b5081d71 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportOrdersExcel.php
@@ -17,7 +17,7 @@ class ExportOrdersExcel extends \Magento\Reports\Controller\Adminhtml\Report\Cus
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customers_orders.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsCsv.php
index 629e25bdf6d2333ba4405b80218b753566aaa6a7..c0b2f87e0feb96dba49fc9e55c15ec2da1a87357 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsCsv.php
@@ -17,7 +17,7 @@ class ExportTotalsCsv extends \Magento\Reports\Controller\Adminhtml\Report\Custo
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customer_totals.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsExcel.php
index 8c2800fe6caa48d514fdaa23e5b2095455f897e1..6c33a4a1eefabe29b886af3386cc7a2540894918 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/ExportTotalsExcel.php
@@ -17,7 +17,7 @@ class ExportTotalsExcel extends \Magento\Reports\Controller\Adminhtml\Report\Cus
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'customer_totals.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Orders.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Orders.php
index 5e556d9fe8919a9711e7f3738ba00f2f9ff2066f..bc7363825f2e14744e7353915608804352012faa 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Orders.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Orders.php
@@ -13,7 +13,7 @@ class Orders extends \Magento\Reports\Controller\Adminhtml\Report\Customer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_customers_orders'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Totals.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Totals.php
index f58bfb2bfc8b4995754d2da7751ade45a83ade1f..b7e3d117467d1a400e710a903d5a9088994577cf 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Totals.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Customer/Totals.php
@@ -13,7 +13,7 @@ class Totals extends \Magento\Reports\Controller\Adminhtml\Report\Customer
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_customers_totals'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Downloads.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Downloads.php
index 93213f776ec83c6146351acaa6979d9e5492e88e..5776f796be91aae525a1e61e832415c976eec9fc 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Downloads.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Downloads.php
@@ -23,7 +23,7 @@ class Downloads extends \Magento\Reports\Controller\Adminhtml\Report\Product
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Downloadable::report_products_downloads'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsCsv.php
index 5c6af987aec61c68194f08d6434aefa2313721b5..31086ee266b8441a68195aef7c7331469dad3085 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsCsv.php
@@ -25,7 +25,7 @@ class ExportDownloadsCsv extends \Magento\Reports\Controller\Adminhtml\Report\Pr
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'products_downloads.csv';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsExcel.php
index a42c7f09851fc774c7e0fc34657d1d2bc54f405a..20c5715b2602f5c4c377d31114544cbf2c5e8552 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportDownloadsExcel.php
@@ -25,7 +25,7 @@ class ExportDownloadsExcel extends \Magento\Reports\Controller\Adminhtml\Report\
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'products_downloads.xml';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockCsv.php
index 2b63aa2d4c8ae915a1be3b0184270c7f8c9d9292..bbbce2b95b1e585af397ff0e50df5b9bc82e32bc 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockCsv.php
@@ -26,7 +26,7 @@ class ExportLowstockCsv extends \Magento\Reports\Controller\Adminhtml\Report\Pro
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'products_lowstock.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockExcel.php
index 0d0ed5e0b8595e55a3383e521e80a5f113a04d05..f8e86a463686609efd5471002761576986c1f953 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportLowstockExcel.php
@@ -26,7 +26,7 @@ class ExportLowstockExcel extends \Magento\Reports\Controller\Adminhtml\Report\P
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'products_lowstock.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldCsv.php
index f1c02ac7971ab0bc77d013c7e4a2374b7d525058..7eb7c810ffbf2f3644994e2d794b1657fabcf4db 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldCsv.php
@@ -27,7 +27,7 @@ class ExportSoldCsv extends \Magento\Reports\Controller\Adminhtml\Report\Product
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'products_ordered.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldExcel.php
index 818b7a73c63cd50810ebe43f347e663c5b5328da..8b4e4ed7fa24008a6d31a4d2c1f379878ad28191 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportSoldExcel.php
@@ -27,7 +27,7 @@ class ExportSoldExcel extends \Magento\Reports\Controller\Adminhtml\Report\Produ
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $fileName = 'products_ordered.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedCsv.php
index a7b42c9399233a992b110d4fa244d1613590d4ac..9c7348d76f22d8774dc0413342b53081c05d3a24 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedCsv.php
@@ -26,7 +26,7 @@ class ExportViewedCsv extends \Magento\Reports\Controller\Adminhtml\Report\Produ
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'products_mostviewed.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Product\Viewed\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedExcel.php
index b33650eee886c98b241400c216469eaf4b3a2e72..77a5ffff1aa802af83c6f7008fa95b1260bedf2e 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/ExportViewedExcel.php
@@ -26,7 +26,7 @@ class ExportViewedExcel extends \Magento\Reports\Controller\Adminhtml\Report\Pro
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'products_mostviewed.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Product\Viewed\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Lowstock.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Lowstock.php
index f2734c22fac08f7aae41ab440538ce6d1f9d5603..14eaafe76b887ab0d8188c50e91ea959c92f0294 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Lowstock.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Lowstock.php
@@ -23,7 +23,7 @@ class Lowstock extends \Magento\Reports\Controller\Adminhtml\Report\Product
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_products_lowstock'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Sold.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Sold.php
index 2b43c124f8389f31296e89a843820a5324c66933..25445c349e1125862e15aaf6a4122985af82686b 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Sold.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Sold.php
@@ -23,7 +23,7 @@ class Sold extends \Magento\Reports\Controller\Adminhtml\Report\Product
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_products_sold'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Viewed.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Viewed.php
index 4de88db184a83cd3a55777d07235d239a18f1f97..3a370259de9e071372d2eeb67a97db5450772804 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Viewed.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Product/Viewed.php
@@ -25,7 +25,7 @@ class Viewed extends \Magento\Reports\Controller\Adminhtml\Report\Product
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_showLastExecutionTime(Flag::REPORT_PRODUCT_VIEWED_FLAG_CODE, 'viewed');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Customer.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Customer.php
index f956bf14c1d38fe452ea04c4e58f18f5eb621c87..18c0961d483444a14ba71f8f668428305ed7dd5b 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Customer.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Customer.php
@@ -13,7 +13,7 @@ class Customer extends \Magento\Reports\Controller\Adminhtml\Report\Review
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Review::report_review_customer'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerCsv.php
index 1a7f776d00fe791864e60ed1ef92def8bc096d75..473f42a4ca301a4e9c06fee039b61ae02d87aa66 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerCsv.php
@@ -16,7 +16,7 @@ class ExportCustomerCsv extends \Magento\Reports\Controller\Adminhtml\Report\Rev
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'review_customer.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerExcel.php
index 9744feb1f5e6928be05cb71522c8df861c9f04ac..7dfe0c646d0bf9daebcb041994e1cd9c177e78b6 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportCustomerExcel.php
@@ -16,7 +16,7 @@ class ExportCustomerExcel extends \Magento\Reports\Controller\Adminhtml\Report\R
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'review_customer.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductCsv.php
index 2c471b803049ce9d44dfd80ac3084d59385dce7b..15d4d4d6df0adaa8f81d4ae8f013083f28f9212e 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductCsv.php
@@ -16,7 +16,7 @@ class ExportProductCsv extends \Magento\Reports\Controller\Adminhtml\Report\Revi
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'review_product.csv';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailCsv.php
index 7358396f2aa0f9739a108ede6f489dc7027ac6b3..d27f3fe37c74d4d9b2b3887d036f8acfbbab43f6 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailCsv.php
@@ -16,7 +16,7 @@ class ExportProductDetailCsv extends \Magento\Reports\Controller\Adminhtml\Repor
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'review_product_detail.csv';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailExcel.php
index 9e80e2309c13bd8ff5c11fd5eea3caff7e57fafe..32abda47b6dcd3fa30e5de4cd9cdd42d9c7b3b10 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductDetailExcel.php
@@ -16,7 +16,7 @@ class ExportProductDetailExcel extends \Magento\Reports\Controller\Adminhtml\Rep
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'review_product_detail.xml';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductExcel.php
index c5b6b33457fb4ebae588161c22cb18c6b1c7473f..dc04c672a10db6b0deba672ef577a7b99d628564 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ExportProductExcel.php
@@ -16,7 +16,7 @@ class ExportProductExcel extends \Magento\Reports\Controller\Adminhtml\Report\Re
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $fileName = 'review_product.xml';
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Product.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Product.php
index fe7364181ea67a7f722f75b9f0045ee3397527ea..e5f5aecb69b5195b740c5c6f0ef48246b1adbda7 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Product.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/Product.php
@@ -13,7 +13,7 @@ class Product extends \Magento\Reports\Controller\Adminhtml\Report\Review
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Review::report_review_product'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ProductDetail.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ProductDetail.php
index 4ee32cade01de648c4ad348b6186936a488c5511..d4bea33168c2c273c398500f5d4ca9a368974757 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ProductDetail.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Review/ProductDetail.php
@@ -13,7 +13,7 @@ class ProductDetail extends \Magento\Reports\Controller\Adminhtml\Report\Review
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Review::report_review'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Bestsellers.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Bestsellers.php
index 5c8247bda642559b06289c1352c5cde48fba85b4..97be72a935ddec22e8f6ebd6d4c987d0d37f9296 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Bestsellers.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Bestsellers.php
@@ -15,7 +15,7 @@ class Bestsellers extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_BESTSELLERS_FLAG_CODE, 'bestsellers');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Coupons.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Coupons.php
index 1ccc99988bb4079f809d1f2fbd6bca5134daf0ac..e9ece3ae68256640b3cb4ce888be5a5dd2d09314 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Coupons.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Coupons.php
@@ -15,7 +15,7 @@ class Coupons extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_COUPONS_FLAG_CODE, 'coupons');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersCsv.php
index e831fc8347189e732570bfba67e5d89f0e2d86cd..0a531d06068a42bf260257333f1aab393035bb1b 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersCsv.php
@@ -16,7 +16,7 @@ class ExportBestsellersCsv extends \Magento\Reports\Controller\Adminhtml\Report\
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'bestsellers.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Bestsellers\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersExcel.php
index bba9bbacf88611f7216cbf7fbe8f34884667ef3d..2d1afc0fac191d37515e316df9fae7fbe0154fe6 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportBestsellersExcel.php
@@ -16,7 +16,7 @@ class ExportBestsellersExcel extends \Magento\Reports\Controller\Adminhtml\Repor
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'bestsellers.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Bestsellers\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsCsv.php
index 4b5ed51a45f4ec9f95024b3b1c10e0524cd4ac74..ccd04b83482e593bd914040c6375ea7fddd2f4e9 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsCsv.php
@@ -16,7 +16,7 @@ class ExportCouponsCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sale
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'coupons.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Coupons\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsExcel.php
index 54641cd44945bfeaddd5b4e8eecc939f672bc6ea..d70457746f8fc83f50f7919da03564e1612f25f3 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportCouponsExcel.php
@@ -16,7 +16,7 @@ class ExportCouponsExcel extends \Magento\Reports\Controller\Adminhtml\Report\Sa
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'coupons.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Coupons\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedCsv.php
index 46f977f41578600ae9dbb49612f1f38d8923e5a8..e4ad782163c32580899d08b5780e688540508d1d 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedCsv.php
@@ -16,7 +16,7 @@ class ExportInvoicedCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sal
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'invoiced.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Invoiced\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedExcel.php
index 771078bae984d3983931b3562d7536526c818426..503bc1562cef1af93f89a5e713bc66e27de80be6 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportInvoicedExcel.php
@@ -16,7 +16,7 @@ class ExportInvoicedExcel extends \Magento\Reports\Controller\Adminhtml\Report\S
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'invoiced.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Invoiced\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedCsv.php
index 375b63e36000d3ea98d03a4c818a8ced86a68272..987b288f934c7bfa35a1f1be4977e19a9ea35075 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedCsv.php
@@ -16,7 +16,7 @@ class ExportRefundedCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sal
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'refunded.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Refunded\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedExcel.php
index ca4a842af874dceefc0bd17f870419d4b164ab83..311380659a6233d9d05bc7a543cb030baabbd05a 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportRefundedExcel.php
@@ -16,7 +16,7 @@ class ExportRefundedExcel extends \Magento\Reports\Controller\Adminhtml\Report\S
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'refunded.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Refunded\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesCsv.php
index 345f809725e9c6798008e626dc8236a20c32c215..20e4a577b3fa3f55d288adaf8432b8c0c9099290 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesCsv.php
@@ -16,7 +16,7 @@ class ExportSalesCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'sales.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Sales\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesExcel.php
index b0bc6001d458aee99e19f3ce3bd39dec033d00d1..0e5b9beacccb4b93bf008093432dd757a3950b85 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportSalesExcel.php
@@ -16,7 +16,7 @@ class ExportSalesExcel extends \Magento\Reports\Controller\Adminhtml\Report\Sale
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'sales.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Sales\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingCsv.php
index 82fe7afbeadfab0a42cdc2a6a58822ac3d535c4e..c7c699a105f4076c79fa58e1450944138559f304 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingCsv.php
@@ -16,7 +16,7 @@ class ExportShippingCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sal
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shipping.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Shipping\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingExcel.php
index 39b7a4676c13082b7656df219215a6ccef58549d..13ae0fe237c00687ff38a7e53079d3925b1e61bd 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportShippingExcel.php
@@ -16,7 +16,7 @@ class ExportShippingExcel extends \Magento\Reports\Controller\Adminhtml\Report\S
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shipping.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Shipping\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxCsv.php
index ae7ce954bb3b2596be096b5296df8aaac24b7c90..d9496b9f5ee6e14537d009cf7509081511cd5a51 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxCsv.php
@@ -16,7 +16,7 @@ class ExportTaxCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'tax.csv';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Tax\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxExcel.php
index b7648a55d5ba5fedd60f442d7f8a1e7dc5941b92..f7737132e9d1648346d1a03c1f03d90b4b4683a2 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/ExportTaxExcel.php
@@ -16,7 +16,7 @@ class ExportTaxExcel extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'tax.xml';
         $grid = $this->_view->getLayout()->createBlock('Magento\Reports\Block\Adminhtml\Sales\Tax\Grid');
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Invoiced.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Invoiced.php
index 3a7cd19fef7a6bc5cb0e9042bed4209cfea83c92..242d9c41d273f481880f1f0c966f3a34d5cdd670 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Invoiced.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Invoiced.php
@@ -15,7 +15,7 @@ class Invoiced extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_INVOICE_FLAG_CODE, 'invoiced');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshLifetime.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshLifetime.php
index d093fd273b7ad82742a6d65d7f911ad98ebca9f2..19e3007db7a018afd44fe241deaee35822090eba 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshLifetime.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshLifetime.php
@@ -13,7 +13,7 @@ class RefreshLifetime extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('refreshLifetime', 'report_statistics');
     }
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshRecent.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshRecent.php
index 2d4665fe4f4041e39fbf2abdcaa8632bd2f66e3b..0b7ccef07bdc1cf266239454bf4a6015176f6314 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshRecent.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshRecent.php
@@ -13,7 +13,7 @@ class RefreshRecent extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('refreshRecent', 'report_statistics');
     }
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshStatistics.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshStatistics.php
index 77c6bfab4db5923f0dc2382eb9e10df15850fd6b..64ac14d427ff9865a9bb1c711708d431d74eca25 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshStatistics.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/RefreshStatistics.php
@@ -13,7 +13,7 @@ class RefreshStatistics extends \Magento\Reports\Controller\Adminhtml\Report\Sal
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('index', 'report_statistics');
     }
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Refunded.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Refunded.php
index 5d03937d815d00e09fb1adfcd4de904d88f033d2..3120ff01236a6764499bc4f3fd67c3ad25fab46f 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Refunded.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Refunded.php
@@ -15,7 +15,7 @@ class Refunded extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_REFUNDED_FLAG_CODE, 'refunded');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Sales.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Sales.php
index c54cafb6c0ca2bc98d15a7b02d2bb5491f0db9c5..3dd5c10bf9f19a58dc100df9d986e4cb11a7c6bf 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Sales.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Sales.php
@@ -15,7 +15,7 @@ class Sales extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_ORDER_FLAG_CODE, 'sales');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Shipping.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Shipping.php
index 46aa42db9b19dc0060d0f3087d2491365b708867..1068596451067c6c1d49c950fc8e18a2604926ef 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Shipping.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Shipping.php
@@ -15,7 +15,7 @@ class Shipping extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_SHIPPING_FLAG_CODE, 'shipping');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Tax.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Tax.php
index 6fd6555ef09e983d2f11e0eddbc1b4fb2439d3be..143140f42b0f9e6b0e1303bb62e4c20b52af33a5 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Tax.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Sales/Tax.php
@@ -15,7 +15,7 @@ class Tax extends \Magento\Reports\Controller\Adminhtml\Report\Sales
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_showLastExecutionTime(Flag::REPORT_TAX_FLAG_CODE, 'tax');
 
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Abandoned.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Abandoned.php
index 5db3858d0043c85840c6155e93c5238239ca0f02..6c88e443ca5171d6beec7b2ea95a902f704c7e70 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Abandoned.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Abandoned.php
@@ -13,7 +13,7 @@ class Abandoned extends \Magento\Reports\Controller\Adminhtml\Report\Shopcart
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_shopcart_abandoned'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Customer.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Customer.php
index 376d220a795b27532a5e3a9bbb619c2acf77c9ac..b8045d003aafd415fb49d543bdf5451b92f0d9e3 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Customer.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Customer.php
@@ -13,7 +13,7 @@ class Customer extends \Magento\Reports\Controller\Adminhtml\Report\Shopcart
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_shopcart_customer'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedCsv.php
index 6023236b82c46af10b6b5c3cd78c7e8909e05e70..aff71b76b37494c523cefcaa4a8651189ad2af1c 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedCsv.php
@@ -16,7 +16,7 @@ class ExportAbandonedCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sh
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_abandoned.csv';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedExcel.php
index 6118c9fb20a479df4032fbfcb845d70486548ecf..71aae22568e422068c7e44fafd4566dbb9dc33a0 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportAbandonedExcel.php
@@ -16,7 +16,7 @@ class ExportAbandonedExcel extends \Magento\Reports\Controller\Adminhtml\Report\
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_abandoned.xml';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerCsv.php
index 30218563edddbcca3e73c7261c07324ea499db4a..4405cfc9614f969d706259930ff7bfcb1737d750 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerCsv.php
@@ -15,7 +15,7 @@ class ExportCustomerCsv extends \Magento\Reports\Controller\Adminhtml\Report\Sho
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_customer.csv';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerExcel.php
index 2c017142a18c10f978f7188addcb8ce21f089c58..f20fcb9c20f8b297b27b54ac7ef361aa07ab072b 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportCustomerExcel.php
@@ -15,7 +15,7 @@ class ExportCustomerExcel extends \Magento\Reports\Controller\Adminhtml\Report\S
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_customer.xml';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductCsv.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductCsv.php
index c244aee257429c473e4db6761a4c0a989efc20ee..9ad9dd030d3be27272d66021166311c977aa55ea 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductCsv.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductCsv.php
@@ -16,7 +16,7 @@ class ExportProductCsv extends \Magento\Reports\Controller\Adminhtml\Report\Shop
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_product.csv';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductExcel.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductExcel.php
index 1b8442918643f89f4e6cbfd8c5cd540d03f17346..43ed6690d3bb277d0272984a22e55447daa49317 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductExcel.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/ExportProductExcel.php
@@ -16,7 +16,7 @@ class ExportProductExcel extends \Magento\Reports\Controller\Adminhtml\Report\Sh
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $fileName = 'shopcart_product.xml';
         $content = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Product.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Product.php
index c257a751084029f699d96bcf21d61d6ced53bb80..d8035545af1eb60ab590177abef4cf82e2ed41f6 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Product.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Shopcart/Product.php
@@ -13,7 +13,7 @@ class Product extends \Magento\Reports\Controller\Adminhtml\Report\Shopcart
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_shopcart_product'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/Index.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/Index.php
index e4cf01207adf871955ead7e34e3b25901d0ee1cf..36e87ff3d7bbb146a35e471b550e9b215cd6fdf1 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/Index.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Reports\Controller\Adminhtml\Report\Statistics
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_setActiveMenu(
             'Magento_Reports::report_statistics_refresh'
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshLifetime.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshLifetime.php
index 35222afc53af688cd31d3c83078ad074bdc5d8ea..016c026abafc79ab1a276c073fbd021c37e1e9e2 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshLifetime.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshLifetime.php
@@ -14,7 +14,7 @@ class RefreshLifetime extends \Magento\Reports\Controller\Adminhtml\Report\Stati
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $collectionsNames = $this->_getCollectionNames();
diff --git a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshRecent.php b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshRecent.php
index e4e5c4e651095eb8a147b5d1ccc88522bd6038ef..8864c3401ece5c817c4b26c57a7e77727eb0ad49 100644
--- a/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshRecent.php
+++ b/app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics/RefreshRecent.php
@@ -14,7 +14,7 @@ class RefreshRecent extends \Magento\Reports\Controller\Adminhtml\Report\Statist
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $collectionsNames = $this->_getCollectionNames();
diff --git a/app/code/Magento/Reports/Model/ResourceModel/Review/Product/Collection.php b/app/code/Magento/Reports/Model/ResourceModel/Review/Product/Collection.php
index 982219690499708d18323152f87485215b55f02d..662047abeca66f983f40e48debae4209e72fe2f9 100644
--- a/app/code/Magento/Reports/Model/ResourceModel/Review/Product/Collection.php
+++ b/app/code/Magento/Reports/Model/ResourceModel/Review/Product/Collection.php
@@ -58,8 +58,7 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
             $this->getConnection()->quoteInto('table_rating.store_id > ?', 0),
         ];
 
-        $percentField = $this->getConnection()->quoteIdentifier('table_rating.percent');
-        $sumPercentField = new \Zend_Db_Expr("SUM({$percentField})");
+        $sumPercentField = new \Zend_Db_Expr("SUM(table_rating.percent)");
         $sumPercentApproved = new \Zend_Db_Expr('SUM(table_rating.percent_approved)');
         $countRatingId = new \Zend_Db_Expr('COUNT(table_rating.rating_id)');
 
@@ -67,8 +66,8 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
             ['table_rating' => $this->getTable('rating_option_vote_aggregated')],
             implode(' AND ', $joinCondition),
             [
-                'avg_rating' => sprintf('%s/%s', $sumPercentField, $countRatingId),
-                'avg_rating_approved' => sprintf('%s/%s', $sumPercentApproved, $countRatingId)
+                'avg_rating' => new \Zend_Db_Expr(sprintf('%s/%s', $sumPercentField, $countRatingId)),
+                'avg_rating_approved' => new \Zend_Db_Expr(sprintf('%s/%s', $sumPercentApproved, $countRatingId))
             ]
         );
 
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/AccountsTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/AccountsTest.php
index baad059fb482561e8f29b775052cfd835b91e985..96a1921b295d769ed7cda8a730a379540d4cd2f7 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/AccountsTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/AccountsTest.php
@@ -70,6 +70,6 @@ class AccountsTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Repor
             ->expects($this->at(2))
             ->method('addLink')
             ->with(new Phrase('New Accounts'), new Phrase('New Accounts'));
-        $this->accounts->execute();
+        $this->accounts->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsCsvTest.php
index c5e9ccccf6d933966c1802fe34a2c0fdf2c6c885..273574130f18a3569e6980056ad14c35edf9da27 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsCsvTest.php
@@ -45,6 +45,6 @@ class ExportAccountsCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminh
             ->expects($this->once())
             ->method('create')
             ->with('new_accounts.csv', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportAccountsCsv->execute();
+        $this->exportAccountsCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsExcelTest.php
index 98134d20ccd9edc52fa27958a60c437657c1756c..8205201a150ed319afdcb576400552e488f2b2fc 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportAccountsExcelTest.php
@@ -45,6 +45,6 @@ class ExportAccountsExcelTest extends \Magento\Reports\Test\Unit\Controller\Admi
             ->expects($this->once())
             ->method('create')
             ->with('new_accounts.xml', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportAccountsExcel->execute();
+        $this->exportAccountsExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersCsvTest.php
index 573720a1859cd759ca99ba03f9ec0b93252904f4..50bde9a3f420318606b99b1f1fc5c9cdb3057220 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersCsvTest.php
@@ -45,6 +45,6 @@ class ExportOrdersCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminhtm
             ->expects($this->once())
             ->method('create')
             ->with('customers_orders.csv', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportOrdersCsv->execute();
+        $this->exportOrdersCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersExcelTest.php
index b8273becb2d66d0a3636e6514a37f77c599e87d9..8cc84ac980e64a0f671af417c3fdf97cf09270d2 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportOrdersExcelTest.php
@@ -45,6 +45,6 @@ class ExportOrdersExcelTest extends \Magento\Reports\Test\Unit\Controller\Adminh
             ->expects($this->once())
             ->method('create')
             ->with('customers_orders.xml', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportOrdersExcel->execute();
+        $this->exportOrdersExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsCsvTest.php
index b4a7a0c68e2d2872f7e04a4a655eb614c5d72893..989d05bc651e6e9be857a46913b3c3cab925eca6 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsCsvTest.php
@@ -45,6 +45,6 @@ class ExportTotalsCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminhtm
             ->expects($this->once())
             ->method('create')
             ->with('customer_totals.csv', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportTotalsCsv->execute();
+        $this->exportTotalsCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsExcelTest.php
index 33177c27a183fbd6aa03e6e8f208190dc43a433d..3c2cb5976476c0c2d3b5cc5f971743de6d3b3570 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/ExportTotalsExcelTest.php
@@ -45,6 +45,6 @@ class ExportTotalsExcelTest extends \Magento\Reports\Test\Unit\Controller\Adminh
             ->expects($this->once())
             ->method('create')
             ->with('customer_totals.xml', ['export'], \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
-        $this->exportTotalsExcel->execute();
+        $this->exportTotalsExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/OrdersTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/OrdersTest.php
index 1d960cc8175d3e38fbde59cde3816c7c02341a72..c15797a18d9c1944ba020ae047c01d5182e6322c 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/OrdersTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/OrdersTest.php
@@ -70,6 +70,6 @@ class OrdersTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\
             ->expects($this->at(2))
             ->method('addLink')
             ->with(new Phrase('Customers by Number of Orders'), new Phrase('Customers by Number of Orders'));
-        $this->orders->execute();
+        $this->orders->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/TotalsTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/TotalsTest.php
index a479fb53c3a55cbbdb769d94cc0e81d6065b9138..44d554a10c75dc447742b865cda03b0a5e5daddd 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/TotalsTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Customer/TotalsTest.php
@@ -70,6 +70,6 @@ class TotalsTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\
             ->expects($this->at(2))
             ->method('addLink')
             ->with(new Phrase('Customers by Orders Total'), new Phrase('Customers by Orders Total'));
-        $this->totals->execute();
+        $this->totals->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/DownloadsTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/DownloadsTest.php
index 6bae34a56872cc5ddce13082bd1bfbe50a6f5699..b3e5f9c472563eb99e87b8a9b9b9f1c077fafbc8 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/DownloadsTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/DownloadsTest.php
@@ -86,6 +86,6 @@ class DownloadsTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Repo
             ->with('Magento\Reports\Block\Adminhtml\Product\Downloads')
             ->willReturn($this->abstractBlockMock);
 
-        $this->downloads->execute();
+        $this->downloads->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsCsvTest.php
index 9c80ef0700bc53047a1afd2c8e48372a69a71e4d..3b54b2e96fcf392f0cb7252edac2f776048b7ef1 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsCsvTest.php
@@ -70,6 +70,6 @@ class ExportDownloadsCsvTest extends \Magento\Reports\Test\Unit\Controller\Admin
             ->method('create')
             ->with('products_downloads.csv', $content);
 
-        $this->exportDownloadsCsv->execute();
+        $this->exportDownloadsCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsExcelTest.php
index 010e14168b4fd7b1cb2c04ef5ba570d594f00c9d..864abadb92d6b2b4ad4d45ddcb8babc1bf95e3cc 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportDownloadsExcelTest.php
@@ -72,6 +72,6 @@ class ExportDownloadsExcelTest extends \Magento\Reports\Test\Unit\Controller\Adm
             ->method('create')
             ->with($fileName, $content);
 
-        $this->exportDownloadsExcel->execute();
+        $this->exportDownloadsExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockCsvTest.php
index 074c8e88d572fee4740ba0e8e7efd690b2b499b6..d1897fe6ac3708175e83e2610ff2c9a6a5adf4c2 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockCsvTest.php
@@ -65,6 +65,6 @@ class ExportLowstockCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminh
             ->method('create')
             ->with('products_lowstock.csv', $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportLowstockCsv->execute();
+        $this->exportLowstockCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockExcelTest.php
index 509fc27b170d4bc58ede9bebc1a31470906c1bf1..0b5b2240fabc8897713df92cb1b19d5971f32236 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportLowstockExcelTest.php
@@ -65,6 +65,6 @@ class ExportLowstockExcelTest extends \Magento\Reports\Test\Unit\Controller\Admi
             ->method('create')
             ->with('products_lowstock.xml', $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportLowstockExcel->execute();
+        $this->exportLowstockExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldCsvTest.php
index b0f76d58049625139f83fc4f0da04b8b5870598b..2c01c8d3eab78646fe1cd21d5978c2f18db6b3b2 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldCsvTest.php
@@ -65,6 +65,6 @@ class ExportSoldCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\
             ->method('create')
             ->with('products_ordered.csv', $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportSoldCsv->execute();
+        $this->exportSoldCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldExcelTest.php
index 21ce5635d33dbd5ea0be4bbdf2933b143e917744..202252d7f258888178cf043b76c739ea2d62c1da 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportSoldExcelTest.php
@@ -67,6 +67,6 @@ class ExportSoldExcelTest extends \Magento\Reports\Test\Unit\Controller\Adminhtm
             ->method('create')
             ->with($fileName, $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportSoldExcel->execute();
+        $this->exportSoldExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedCsvTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedCsvTest.php
index e31655f1183781cdf338c23036a73b4008f468db..f1f060d09f2da78a6fdd6d65e06194d26905131e 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedCsvTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedCsvTest.php
@@ -90,6 +90,6 @@ class ExportViewedCsvTest extends \Magento\Reports\Test\Unit\Controller\Adminhtm
             ->method('create')
             ->with($fileName, $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportViewedCsv->execute();
+        $this->exportViewedCsv->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedExcelTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedExcelTest.php
index 43e615c7a9acdff42f21262313b3aa996c1d6c05..4a92d6c8f2f2bb5d3ad9b22fbd655ecbfd4ca6b8 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedExcelTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ExportViewedExcelTest.php
@@ -91,6 +91,6 @@ class ExportViewedExcelTest extends \Magento\Reports\Test\Unit\Controller\Adminh
             ->method('create')
             ->with($fileName, $content, \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR);
 
-        $this->exportViewedExcel->execute();
+        $this->exportViewedExcel->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/LowstockTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/LowstockTest.php
index 10eaa830d799921380c69003fedbbf9999894922..0ec6a082b926e29c05cbd33c8885d4be6b32d3e7 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/LowstockTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/LowstockTest.php
@@ -83,6 +83,6 @@ class LowstockTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Repor
                 [new Phrase('Low Stock'), new Phrase('Low Stock')]
             );
 
-        $this->lowstock->execute();
+        $this->lowstock->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/SoldTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/SoldTest.php
index 34c9e12df2c48c376f04a64815307af91f82a174..82981d6f142e2094093d3abd8de74f07cab69c4b 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/SoldTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/SoldTest.php
@@ -83,6 +83,6 @@ class SoldTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\Ab
                 [new Phrase('Products Ordered'), new Phrase('Products Ordered')]
             );
 
-        $this->sold->execute();
+        $this->sold->executeInternal();
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ViewedTest.php b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ViewedTest.php
index 686aed163ece4db148a10a09cf4df057090d7c08..01cfe44f65256054da9f5c05091e615493666ad3 100644
--- a/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ViewedTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Controller/Adminhtml/Report/Product/ViewedTest.php
@@ -151,7 +151,7 @@ class ViewedTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\
             ->expects($this->once())
             ->method('renderLayout');
 
-        $this->viewed->execute();
+        $this->viewed->executeInternal();
     }
 
     /**
@@ -202,7 +202,7 @@ class ViewedTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\
             ->method('setActive')
             ->willThrowException(new \Exception());
 
-        $this->viewed->execute();
+        $this->viewed->executeInternal();
     }
 
     /**
@@ -222,6 +222,6 @@ class ViewedTest extends \Magento\Reports\Test\Unit\Controller\Adminhtml\Report\
             ->method('setActive')
             ->willThrowException(new \Magento\Framework\Exception\LocalizedException($errorText));
 
-        $this->viewed->execute();
+        $this->viewed->executeInternal();
     }
 }
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Delete.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Delete.php
index ce84f4e99850aca32200ec392ffb6bbc3801cec9..f6ea8b9f899d2960e0af610e0ae56c0da163f8af 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Delete.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Delete.php
@@ -13,7 +13,7 @@ class Delete extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Edit.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Edit.php
index 10026df39b87aaa1a7e978a5e8a87dcd01d3434c..658b798acbf2e2bb2d404423f0ffc6c6e72617ff 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Edit.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Edit.php
@@ -13,7 +13,7 @@ class Edit extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Index.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Index.php
index da31a87aa9f530ccff8daca2336a5a47e2dfdb77..e999732f5ef1499160d8122844124c32f8ee6e8d 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Index.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Index.php
@@ -13,7 +13,7 @@ class Index extends ProductController
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('ajax')) {
             /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/JsonProductInfo.php b/app/code/Magento/Review/Controller/Adminhtml/Product/JsonProductInfo.php
index 2f449cfd4caf68ab893f763ca652dcb6f859b13b..acd2b40a78ff9223acccc40db23e53b835ae7eb6 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/JsonProductInfo.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/JsonProductInfo.php
@@ -42,7 +42,7 @@ class JsonProductInfo extends ProductController
     /**
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new DataObject();
         $id = $this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/MassDelete.php b/app/code/Magento/Review/Controller/Adminhtml/Product/MassDelete.php
index 6a64c6cf54982c84dfc5aff6be22f7f185db6a75..73dfe572ba718e8b4a3156117ff34c27467cd954 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/MassDelete.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/MassDelete.php
@@ -14,7 +14,7 @@ class MassDelete extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $reviewsIds = $this->getRequest()->getParam('reviews');
         if (!is_array($reviewsIds)) {
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/MassUpdateStatus.php b/app/code/Magento/Review/Controller/Adminhtml/Product/MassUpdateStatus.php
index 285503a236500d506b746217ec92bdfc685457c1..9866a2be76a899f7000998ef65666d031efe8574 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/MassUpdateStatus.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/MassUpdateStatus.php
@@ -14,7 +14,7 @@ class MassUpdateStatus extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $reviewsIds = $this->getRequest()->getParam('reviews');
         if (!is_array($reviewsIds)) {
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/MassVisibleIn.php b/app/code/Magento/Review/Controller/Adminhtml/Product/MassVisibleIn.php
index 4e65891133acef664ab66b80293888f2a9246a9d..f9d646d68e6d5272ab1ef4635da9e3ec7d7be870 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/MassVisibleIn.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/MassVisibleIn.php
@@ -14,7 +14,7 @@ class MassVisibleIn extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $reviewsIds = $this->getRequest()->getParam('reviews');
         if (!is_array($reviewsIds)) {
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/NewAction.php b/app/code/Magento/Review/Controller/Adminhtml/Product/NewAction.php
index e5d2a0e1b3159663e281e1afff6c03081392d387..4cbd60d0342aaf21a2831363d9b259eea5917e94 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/NewAction.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Pending.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Pending.php
index 46b341492ab8bdc1aa4a1541ac5fcc622db0a763..ddae839c33cddd3a84201e7c2464890ac48bee5d 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Pending.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Pending.php
@@ -13,7 +13,7 @@ class Pending extends ProductController
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getParam('ajax')) {
             $this->coreRegistry->register('usePendingFilter', true);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Post.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Post.php
index f6b7f24bffdbfb9bad62511a7a0a4df1c2d95f9d..20cc725e3d1f8cc56855571d1c08fe92559c1ed2 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Post.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Post.php
@@ -15,7 +15,7 @@ class Post extends ProductController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = $this->getRequest()->getParam('product_id', false);
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/ProductGrid.php b/app/code/Magento/Review/Controller/Adminhtml/Product/ProductGrid.php
index afdd87aac5d5ac43fd31553eb9c9ccd69e7fdfac..43aaf18b4731665a75f43f6cdf39e6179c28eb38 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/ProductGrid.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/ProductGrid.php
@@ -41,7 +41,7 @@ class ProductGrid extends ProductController
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $layout = $this->layoutFactory->create();
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/RatingItems.php b/app/code/Magento/Review/Controller/Adminhtml/Product/RatingItems.php
index f79da2549bf26dfc937e4d2e593045daa14ff0fc..46a2a19088f9097752f96fa462719d60cb5be318 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/RatingItems.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/RatingItems.php
@@ -41,7 +41,7 @@ class RatingItems extends ProductController
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $layout = $this->layoutFactory->create();
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/ReviewGrid.php b/app/code/Magento/Review/Controller/Adminhtml/Product/ReviewGrid.php
index 293b958b6ec98633cbd15d903e33ce0fed1d1fdc..7715f73dbff7cab52457158dd262c0ab5e0967de 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/ReviewGrid.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/ReviewGrid.php
@@ -41,7 +41,7 @@ class ReviewGrid extends ProductController
     /**
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $layout = $this->layoutFactory->create();
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Reviews/Grid.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Reviews/Grid.php
index 84606cfe8b33f061b98fefe7a31e18d30472b3f8..a88025a2755e193b224c117cc24881c9dfc7a249 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Reviews/Grid.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Reviews/Grid.php
@@ -34,7 +34,7 @@ class Grid extends Action
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $product = $this->productBuilder->build($this->getRequest());
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Product/Save.php b/app/code/Magento/Review/Controller/Adminhtml/Product/Save.php
index f1121eec6b2f56e5c2664f71c5a3b1ef88d254d7..8494e1b55904b929fbbceed3210a3e7be1bfdb6b 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Product/Save.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Product/Save.php
@@ -15,7 +15,7 @@ class Save extends ProductController
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating/Delete.php b/app/code/Magento/Review/Controller/Adminhtml/Rating/Delete.php
index 55fc796fc26c371f3c6946d440c8a40830de3380..818f8bf9351a58a26ac7538a6727a3e436c289d6 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Rating/Delete.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Rating/Delete.php
@@ -13,7 +13,7 @@ class Delete extends RatingController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating/Edit.php b/app/code/Magento/Review/Controller/Adminhtml/Rating/Edit.php
index 54bd62f83a1242a1540676a2af790873fccd09f9..e4a4e8808bc3c73dd04635f77b32955b974755e3 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Rating/Edit.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Rating/Edit.php
@@ -13,7 +13,7 @@ class Edit extends RatingController
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initEnityId();
         /** @var \Magento\Review\Model\Rating $ratingModel */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating/Index.php b/app/code/Magento/Review/Controller/Adminhtml/Rating/Index.php
index be9bebf78c7e91ae90ff8046fc508af8d5069dfc..1723d2800921dd7affea363797e8842491c3b9ad 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Rating/Index.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Rating/Index.php
@@ -13,7 +13,7 @@ class Index extends RatingController
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initEnityId();
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating/NewAction.php b/app/code/Magento/Review/Controller/Adminhtml/Rating/NewAction.php
index 162f85eac65911bf80cb9e08773f5d5408f51e6b..ec6190f27deefd4411f61b918a29abc5010c18be 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Rating/NewAction.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Rating/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends RatingController
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating/Save.php b/app/code/Magento/Review/Controller/Adminhtml/Rating/Save.php
index 6cfaeabfa331e9a3b87cf5a18bcfc2d005e6faf1..2802b50031d154140889cba276303339f32440bd 100644
--- a/app/code/Magento/Review/Controller/Adminhtml/Rating/Save.php
+++ b/app/code/Magento/Review/Controller/Adminhtml/Rating/Save.php
@@ -15,7 +15,7 @@ class Save extends RatingController
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initEnityId();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Review/Controller/Customer.php b/app/code/Magento/Review/Controller/Customer.php
index 0e96a652b7247b06d326ceb3fe73fe42dc1dfeea..a1a39d544c27191c2c13e13ddff88388d513a0d1 100644
--- a/app/code/Magento/Review/Controller/Customer.php
+++ b/app/code/Magento/Review/Controller/Customer.php
@@ -40,11 +40,11 @@ abstract class Customer extends Action
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         if (!$this->customerSession->authenticate()) {
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 }
diff --git a/app/code/Magento/Review/Controller/Customer/Index.php b/app/code/Magento/Review/Controller/Customer/Index.php
index 6123c009cdda1d194e4ec2c4004699dc59d7e66b..e51ca5c54766109282a00d2e8807445cbcc8d458 100644
--- a/app/code/Magento/Review/Controller/Customer/Index.php
+++ b/app/code/Magento/Review/Controller/Customer/Index.php
@@ -15,7 +15,7 @@ class Index extends CustomerController
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/Review/Controller/Customer/View.php b/app/code/Magento/Review/Controller/Customer/View.php
index 92972dce3aebc6e0f55b5c5aed0d5ee44797007e..222f8a0bcb0657f28c53ab3d215cead5c917d1ad 100644
--- a/app/code/Magento/Review/Controller/Customer/View.php
+++ b/app/code/Magento/Review/Controller/Customer/View.php
@@ -36,7 +36,7 @@ class View extends CustomerController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $review = $this->reviewFactory->create()->load($this->getRequest()->getParam('id'));
         if ($review->getCustomerId() != $this->customerSession->getCustomerId()) {
diff --git a/app/code/Magento/Review/Controller/Product.php b/app/code/Magento/Review/Controller/Product.php
index a0137ef07b98c3f0a62862ad700c083d911168ab..8db2e062706beef0f7c5ca5f109e60ff51e23f0a 100644
--- a/app/code/Magento/Review/Controller/Product.php
+++ b/app/code/Magento/Review/Controller/Product.php
@@ -144,11 +144,11 @@ abstract class Product extends \Magento\Framework\App\Action\Action
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $allowGuest = $this->_objectManager->get('Magento\Review\Helper\Data')->getIsGuestAllowToWrite();
         if (!$request->isDispatched()) {
-            return parent::dispatch($request);
+            return parent::execute($request);
         }
 
         if (!$allowGuest && $request->getActionName() == 'post' && $request->isPost()) {
@@ -166,7 +166,7 @@ abstract class Product extends \Magento\Framework\App\Action\Action
             }
         }
 
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/Review/Controller/Product/ListAction.php b/app/code/Magento/Review/Controller/Product/ListAction.php
index 3c28379ec4af6465399e0c1d4705d1ef7b60696c..910b9232da9ed46dedb84f988566df0f4b4a4996 100644
--- a/app/code/Magento/Review/Controller/Product/ListAction.php
+++ b/app/code/Magento/Review/Controller/Product/ListAction.php
@@ -38,7 +38,7 @@ class ListAction extends ProductController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $product = $this->initProduct();
         if ($product) {
diff --git a/app/code/Magento/Review/Controller/Product/ListAjax.php b/app/code/Magento/Review/Controller/Product/ListAjax.php
index b261971c509b1a0fde46649899aa7098bd7060a9..36fa3830a36cea4461ee8abc0458c9777dd37267 100644
--- a/app/code/Magento/Review/Controller/Product/ListAjax.php
+++ b/app/code/Magento/Review/Controller/Product/ListAjax.php
@@ -15,7 +15,7 @@ class ListAjax extends ProductController
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->initProduct();
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
diff --git a/app/code/Magento/Review/Controller/Product/Post.php b/app/code/Magento/Review/Controller/Product/Post.php
index a68f0d18c3bc56a807f46cb6596a2e6324a67ee0..9cf199d7f72c9e51fda91570b5a041d7c320b581 100644
--- a/app/code/Magento/Review/Controller/Product/Post.php
+++ b/app/code/Magento/Review/Controller/Product/Post.php
@@ -18,7 +18,7 @@ class Post extends ProductController
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Review/Controller/Product/View.php b/app/code/Magento/Review/Controller/Product/View.php
index f65d1ceb8198cf1f0a834f5feabdf3aea6fef526..fb2a1893ba6e22da252bf5906c007773591fac17 100644
--- a/app/code/Magento/Review/Controller/Product/View.php
+++ b/app/code/Magento/Review/Controller/Product/View.php
@@ -40,7 +40,7 @@ class View extends ProductController
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $review = $this->loadReview((int)$this->getRequest()->getParam('id'));
         /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
diff --git a/app/code/Magento/Review/Test/Unit/Controller/Adminhtml/Product/PostTest.php b/app/code/Magento/Review/Test/Unit/Controller/Adminhtml/Product/PostTest.php
index d20abf31a19c4ac8896c57b171e41a6abdcd9050..1c6cc30cafb1745809d223c91a52c9cf1b56e555 100644
--- a/app/code/Magento/Review/Test/Unit/Controller/Adminhtml/Product/PostTest.php
+++ b/app/code/Magento/Review/Test/Unit/Controller/Adminhtml/Product/PostTest.php
@@ -209,6 +209,6 @@ class PostTest extends \PHPUnit_Framework_TestCase
             ->method('addOptionVote')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->postController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->postController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Review/Test/Unit/Controller/Product/PostTest.php b/app/code/Magento/Review/Test/Unit/Controller/Product/PostTest.php
index 9cedb87e15afe212c3dd428b623a7d1c95a3f1c5..f1ccec681b25a8d73b527e510d5e75a0a284b2ee 100644
--- a/app/code/Magento/Review/Test/Unit/Controller/Product/PostTest.php
+++ b/app/code/Magento/Review/Test/Unit/Controller/Product/PostTest.php
@@ -315,6 +315,6 @@ class PostTest extends \PHPUnit_Framework_TestCase
             ->with(true)
             ->willReturn($redirectUrl);
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php b/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
index 5bdb72f7036ad35acdfc56a94ac5be3c5e9879e5..f3e450c8c722d5652ec3ea43bc5a9f7f28c981d3 100644
--- a/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
+++ b/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
@@ -95,7 +95,7 @@ class BackendAuthentication extends \Magento\Backend\App\Action\Plugin\Authentic
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function aroundDispatch(AbstractAction $subject, \Closure $proceed, RequestInterface $request)
+    public function aroundExecute(AbstractAction $subject, \Closure $proceed, RequestInterface $request)
     {
         $resource = isset($this->aclResources[$request->getControllerName()])
             ? isset($this->aclResources[$request->getControllerName()][$request->getActionName()])
@@ -107,7 +107,7 @@ class BackendAuthentication extends \Magento\Backend\App\Action\Plugin\Authentic
         $resourceType = isset($this->aclResources[$type]) ? $this->aclResources[$type] : null;
 
         if (!$resource || !$resourceType) {
-            return parent::aroundDispatch($subject, $proceed, $request);
+            return parent::aroundExecute($subject, $proceed, $request);
         }
 
         $session = $this->_auth->getAuthStorage();
@@ -129,6 +129,6 @@ class BackendAuthentication extends \Magento\Backend\App\Action\Plugin\Authentic
             return $this->_response;
         }
 
-        return parent::aroundDispatch($subject, $proceed, $request);
+        return parent::aroundExecute($subject, $proceed, $request);
     }
 }
diff --git a/app/code/Magento/Rss/Controller/Adminhtml/Feed/Index.php b/app/code/Magento/Rss/Controller/Adminhtml/Feed/Index.php
index 61da0e27c2e12c99f5db440b287521c670b59fd1..96b989cdf78452f59b443fa5a33f398e38f6f325 100644
--- a/app/code/Magento/Rss/Controller/Adminhtml/Feed/Index.php
+++ b/app/code/Magento/Rss/Controller/Adminhtml/Feed/Index.php
@@ -20,7 +20,7 @@ class Index extends \Magento\Rss\Controller\Adminhtml\Feed
      * @return void
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->scopeConfig->getValue('rss/config/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) {
             throw new NotFoundException(__('Page not found.'));
diff --git a/app/code/Magento/Rss/Controller/Feed/Index.php b/app/code/Magento/Rss/Controller/Feed/Index.php
index e3679a100212d62f1fc86674ee13e9e4c7851881..5f8e58afefd7e0b27588900b00ff954a0e665075 100644
--- a/app/code/Magento/Rss/Controller/Feed/Index.php
+++ b/app/code/Magento/Rss/Controller/Feed/Index.php
@@ -20,7 +20,7 @@ class Index extends \Magento\Rss\Controller\Feed
      * @return void
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->scopeConfig->getValue('rss/config/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) {
             throw new NotFoundException(__('Page not found.'));
diff --git a/app/code/Magento/Rss/Controller/Index/Index.php b/app/code/Magento/Rss/Controller/Index/Index.php
index 63575ad8e44ec3864d50c97ace7421dd2d984754..0a2096c35d89e2dfbcb38d569945b656bbe5557f 100644
--- a/app/code/Magento/Rss/Controller/Index/Index.php
+++ b/app/code/Magento/Rss/Controller/Index/Index.php
@@ -16,7 +16,7 @@ class Index extends \Magento\Rss\Controller\Index
      * @return void
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_scopeConfig->getValue('rss/config/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) {
             $this->_view->loadLayout();
diff --git a/app/code/Magento/Rss/Model/System/Config/Backend/Links.php b/app/code/Magento/Rss/Model/System/Config/Backend/Links.php
index 64f383245e31226cac93726c22a84bd5d90d8a3a..665a7e68e1a13c7911f0377b58f65e9d6c9620c0 100644
--- a/app/code/Magento/Rss/Model/System/Config/Backend/Links.php
+++ b/app/code/Magento/Rss/Model/System/Config/Backend/Links.php
@@ -11,42 +11,16 @@ namespace Magento\Rss\Model\System\Config\Backend;
  */
 class Links extends \Magento\Framework\App\Config\Value
 {
-    /**
-     * @var \Magento\Framework\App\Cache\TypeListInterface
-     */
-    protected $_cacheTypeList;
-
-    /**
-     * @param \Magento\Framework\Model\Context $context
-     * @param \Magento\Framework\Registry $registry
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
-     * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
-     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\Model\Context $context,
-        \Magento\Framework\Registry $registry,
-        \Magento\Framework\App\Config\ScopeConfigInterface $config,
-        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
-        \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
-        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
-        array $data = []
-    ) {
-        $this->_cacheTypeList = $cacheTypeList;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
-    }
-
     /**
      * Invalidate cache type, when value was changed
      *
-     * @return void
+     * @return $this
      */
     public function afterSave()
     {
         if ($this->isValueChanged()) {
-            $this->_cacheTypeList->invalidate(\Magento\Framework\View\Element\AbstractBlock::CACHE_GROUP);
+            $this->cacheTypeList->invalidate(\Magento\Framework\View\Element\AbstractBlock::CACHE_GROUP);
         }
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Rss/Test/Unit/App/Action/Plugin/BackendAuthenticationTest.php b/app/code/Magento/Rss/Test/Unit/App/Action/Plugin/BackendAuthenticationTest.php
index 79685fb88a379f911c2814d9a766306dee6cbb6c..240da650216ccc0c4e78b783308b50752e752c5e 100644
--- a/app/code/Magento/Rss/Test/Unit/App/Action/Plugin/BackendAuthenticationTest.php
+++ b/app/code/Magento/Rss/Test/Unit/App/Action/Plugin/BackendAuthenticationTest.php
@@ -7,7 +7,7 @@ namespace Magento\Rss\Test\Unit\App\Action\Plugin;
 
 class BackendAuthenticationTest extends \PHPUnit_Framework_TestCase
 {
-    public function testAroundDispatch()
+    public function testAroundExecute()
     {
         /** @var \Magento\Backend\App\AbstractAction|\PHPUnit_Framework_MockObject_MockObject $subject */
         $subject = $this->getMock('Magento\Backend\App\AbstractAction', [], [], '', false);
@@ -69,7 +69,7 @@ class BackendAuthenticationTest extends \PHPUnit_Framework_TestCase
             );
         $this->assertSame(
             $response,
-            $plugin->aroundDispatch($subject, $proceed, $request)
+            $plugin->aroundExecute($subject, $proceed, $request)
         );
     }
 }
diff --git a/app/code/Magento/Rss/Test/Unit/Controller/Adminhtml/Feed/IndexTest.php b/app/code/Magento/Rss/Test/Unit/Controller/Adminhtml/Feed/IndexTest.php
index 83126339130811da07cc0f7beea5f1fbc2adcb16..2d58e440902cdd1094b5207738fb806ff81059c0 100644
--- a/app/code/Magento/Rss/Test/Unit/Controller/Adminhtml/Feed/IndexTest.php
+++ b/app/code/Magento/Rss/Test/Unit/Controller/Adminhtml/Feed/IndexTest.php
@@ -93,7 +93,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->rssFactory->expects($this->once())->method('create')->will($this->returnValue($rssModel));
 
         $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -110,6 +110,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
 
         $this->setExpectedException('\Zend_Feed_Builder_Exception');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Rss/Test/Unit/Controller/Feed/IndexTest.php b/app/code/Magento/Rss/Test/Unit/Controller/Feed/IndexTest.php
index 5b209caa274490682c05e3a39dd1f15e901bc87f..638f2dc802dcfa202ec6b39a5410194043660b51 100644
--- a/app/code/Magento/Rss/Test/Unit/Controller/Feed/IndexTest.php
+++ b/app/code/Magento/Rss/Test/Unit/Controller/Feed/IndexTest.php
@@ -81,7 +81,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->rssFactory->expects($this->once())->method('create')->will($this->returnValue($rssModel));
 
         $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -98,6 +98,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->rssManager->expects($this->once())->method('getProvider')->will($this->returnValue($dataProvider));
 
         $this->setExpectedException('\Zend_Feed_Builder_Exception');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Controller/AbstractController/PrintAction.php b/app/code/Magento/Sales/Controller/AbstractController/PrintAction.php
index b011b8f60e5921abde3a497c0328633763855162..433e8d38c4d61671a6736ec26a1c4d68e4aca973 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/PrintAction.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/PrintAction.php
@@ -41,7 +41,7 @@ abstract class PrintAction extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/AbstractController/PrintCreditmemo.php b/app/code/Magento/Sales/Controller/AbstractController/PrintCreditmemo.php
index 24f13d49d08c736d6cd160f422526684a4595a23..bffa469a2ee07a4b8d6b9e76ff4d8ddc25a3bb72 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/PrintCreditmemo.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/PrintCreditmemo.php
@@ -58,7 +58,7 @@ abstract class PrintCreditmemo extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $creditmemoId = (int)$this->getRequest()->getParam('creditmemo_id');
         if ($creditmemoId) {
diff --git a/app/code/Magento/Sales/Controller/AbstractController/PrintInvoice.php b/app/code/Magento/Sales/Controller/AbstractController/PrintInvoice.php
index 04088a9c79c2a8ce1c3902c57ab5f380354ce21a..fffcb6ca4dfd87a967f2c00c7a019e9dda1371b6 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/PrintInvoice.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/PrintInvoice.php
@@ -49,7 +49,7 @@ abstract class PrintInvoice extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoiceId = (int)$this->getRequest()->getParam('invoice_id');
         if ($invoiceId) {
diff --git a/app/code/Magento/Sales/Controller/AbstractController/PrintShipment.php b/app/code/Magento/Sales/Controller/AbstractController/PrintShipment.php
index 74fbb3439445d4185be0be3ec4aadb63757197cc..ab17469ccf16d60189a54ef1adc534aa7f4c1e47 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/PrintShipment.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/PrintShipment.php
@@ -49,7 +49,7 @@ abstract class PrintShipment extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $shipmentId = (int)$this->getRequest()->getParam('shipment_id');
         if ($shipmentId) {
diff --git a/app/code/Magento/Sales/Controller/AbstractController/Reorder.php b/app/code/Magento/Sales/Controller/AbstractController/Reorder.php
index bf86825d8b4739e20c19dd481efd5e03ec0e3ed8..f589dbabab90cd16d2540562133944b8cc98b74a 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/Reorder.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/Reorder.php
@@ -41,7 +41,7 @@ abstract class Reorder extends Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/AbstractController/View.php b/app/code/Magento/Sales/Controller/AbstractController/View.php
index 987fa30704e598629f767023e37ef5ac4340dbfa..0bef4ed08e0681872f1e67a94099a10df0980160 100644
--- a/app/code/Magento/Sales/Controller/AbstractController/View.php
+++ b/app/code/Magento/Sales/Controller/AbstractController/View.php
@@ -41,7 +41,7 @@ abstract class View extends Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Email.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Email.php
index 68fc9d62e85ac52be9ee4423627e8c778cee74a9..6a6babfc1b1538e52ca4b31a177629a595a20db9 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Email.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Email.php
@@ -25,7 +25,7 @@ class Email extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $creditmemoId = $this->getRequest()->getParam('creditmemo_id');
         if (!$creditmemoId) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Grid.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Grid.php
index 3022cf995e632e91dc32c5f89aa07ea86b893490..209096f62fee28d9551f41f8826684b42a95203a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Grid.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Grid.php
@@ -37,7 +37,7 @@ class Grid extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultLayout = $this->resultLayoutFactory->create();
         return $resultLayout;
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Index.php
index 4fbd4c7ff5bd52e99bf0cce1e3f84ef03bd5d4fd..5569d131abd88962a742eb6bfa82e048ea56442c 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/Index.php
@@ -51,7 +51,7 @@ class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->_initAction();
         $resultPage->getConfig()->getTitle()->prepend(__('Credit Memos'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/PrintAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/PrintAction.php
index 83befcc3b58f9bf8207663ed516de2128e165ab1..39137a698fe91878a87a57fc6a1fc9fbd6ba4ba2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/PrintAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/PrintAction.php
@@ -55,7 +55,7 @@ class PrintAction extends \Magento\Backend\App\Action
     /**
      * @return ResponseInterface|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @see \Magento\Sales\Controller\Adminhtml\Order\Invoice */
         $creditmemoId = $this->getRequest()->getParam('creditmemo_id');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/View.php
index 06e42091731751c2306be89d9742abcf0328a624..c70eb6e4cb482a7fcf74d635bc8856efd35ce9d6 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/View.php
@@ -37,7 +37,7 @@ class View extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultForward = $this->resultForwardFactory->create();
         if ($this->getRequest()->getParam('creditmemo_id')) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/Index.php
index baa603c9ef5c15f3962207fd842ab9293c4cefff..c7ea617b5354af5172e3b6121bceda3b41ca5437 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Creditmemo/Index.php
@@ -12,8 +12,8 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Creditmemo\AbstractCredi
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
-        return parent::execute();
+        return parent::executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Email.php b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Email.php
index c807026addf05d8fcb8ca31efd67f9559047f90e..8c32e32f47897907649733aaefa3905a6bde5906 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Email.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Email.php
@@ -45,7 +45,7 @@ abstract class Email extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Forward|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoiceId = $this->getRequest()->getParam('invoice_id');
         if (!$invoiceId) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Grid.php b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Grid.php
index d448d97138f60afe0edd03c448c4aaafd93d5598..a01e0ba26f620f89a0f5102ee84e2a16220d49f0 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Grid.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Grid.php
@@ -38,7 +38,7 @@ abstract class Grid extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Index.php
index e88f6089c48b4cb211a6c6d98d3491265ad62c0b..603ec3258ba8cc8ce571cadd0e8065e6654749e2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/Index.php
@@ -53,7 +53,7 @@ abstract class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->_initAction();
         $resultPage->getConfig()->getTitle()->prepend(__('Invoices'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/PrintAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/PrintAction.php
index ac5c97372b7f07adbaa5eb7f228da047f240580e..b72dc44f2ca3a43e54d0193963ca72d5dfef0b17 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/PrintAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/PrintAction.php
@@ -47,7 +47,7 @@ abstract class PrintAction extends \Magento\Backend\App\Action
     /**
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoiceId = $this->getRequest()->getParam('invoice_id');
         if ($invoiceId) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/View.php
index e6e49dd0ca65bd1bd8a4c16f7598eb29db7c5ad2..98fe68a4def0ebe9071b379cc750da440e3f8413 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Invoice/AbstractInvoice/View.php
@@ -49,7 +49,7 @@ abstract class View extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultForward = $this->resultForwardFactory->create();
         if ($this->getRequest()->getParam('invoice_id')) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php
index badfbc2ad438df50d0870a131da62730a7c6159a..225ab0ddd0111c5c1ac7a11f49dcf022602c3902 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php
@@ -48,7 +48,7 @@ abstract class AbstractMassAction extends \Magento\Backend\App\Action
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @throws \Magento\Framework\Exception\LocalizedException|\Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $collection = $this->filter->getCollection($this->collectionFactory->create());
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddComment.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddComment.php
index 29729f850bb64f28e2975694d24893c6eb428f66..f83fb55e218098e0307a5bfb3d8a8d16253bf4cf 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddComment.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddComment.php
@@ -16,7 +16,7 @@ class AddComment extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $order = $this->_initOrder();
         if ($order) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Address.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Address.php
index 18fdf29cf80249ca881eee3e90267467492e7627..07a49e22fab858cfcbad3cf62d383c02c49a1567 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Address.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Address.php
@@ -13,7 +13,7 @@ class Address extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $addressId = $this->getRequest()->getParam('address_id');
         $address = $this->_objectManager->create('Magento\Sales\Model\Order\Address')->load($addressId);
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php
index b10329e70d376ff7be228e65a9d99f5c686f42e0..43962356bab67cf69f153f1f71ac0a38a0458164 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php
@@ -13,7 +13,7 @@ class AddressSave extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $addressId = $this->getRequest()->getParam('address_id');
         /** @var $address \Magento\Sales\Api\Data\OrderAddressInterface|\Magento\Sales\Model\Order\Address */
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Cancel.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Cancel.php
index 959917738dbc0f6f9a5966a4dd78b438aade353d..c4740f7825af47d418b470ecd7909222b09a8b9a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Cancel.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Cancel.php
@@ -13,7 +13,7 @@ class Cancel extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if (!$this->isValidPostRequest()) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/CommentsHistory.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/CommentsHistory.php
index 54774ec719e7d3c26afe87468b451d41dfe0fd8a..fd6239b48480f9f4e9c921e5abe713cb8db67a28 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/CommentsHistory.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/CommentsHistory.php
@@ -74,7 +74,7 @@ class CommentsHistory extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initOrder();
         $layout = $this->layoutFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/AddConfigured.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/AddConfigured.php
index b991a11b2878ccb38fa66ad0a1a3b737ef50d123..cbc62796bcd09e949162c2da63e2cd7036988059 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/AddConfigured.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/AddConfigured.php
@@ -12,7 +12,7 @@ class AddConfigured extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $errorMessage = null;
         try {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Cancel.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Cancel.php
index f778a07a85a4fe81b8cb187a432f98e55af00a42..7cfd40bda0c1e71acd264b280d1f75733a890cbc 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Cancel.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Cancel.php
@@ -12,7 +12,7 @@ class Cancel extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureProductToAdd.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureProductToAdd.php
index d8c70e6d63b338c0fb95451bd9cd00d91ea7ca32..07bbc3e479fa69a9ccb638d6b530e4be3fc6362b 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureProductToAdd.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureProductToAdd.php
@@ -12,7 +12,7 @@ class ConfigureProductToAdd extends \Magento\Sales\Controller\Adminhtml\Order\Cr
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         // Prepare data
         $productId = (int)$this->getRequest()->getParam('id');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureQuoteItems.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureQuoteItems.php
index 080d5103c08620cf554ff4af0aae49bcfef0ef7d..10c3432f5c8b2a805e7cad9e96af54306f3bf398 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureQuoteItems.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ConfigureQuoteItems.php
@@ -12,7 +12,7 @@ class ConfigureQuoteItems extends \Magento\Sales\Controller\Adminhtml\Order\Crea
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         // Prepare data
         $configureResult = new \Magento\Framework\DataObject();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Index.php
index 055b3fe11f81178c12070f3be65560ea38b9c454..2d159a99ee4253e725d383b6da56bb6356540d73 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initSession();
 
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/LoadBlock.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/LoadBlock.php
index ba4b0e833e2893fafea898a6392b7c0c2c3eff45..e5b063280bbe7e82cac38fe6e980a664ab0f10e7 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/LoadBlock.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/LoadBlock.php
@@ -48,7 +48,7 @@ class LoadBlock extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $request = $this->getRequest();
         try {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ProcessData.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ProcessData.php
index 7d550a7d357308ec7d011306252d3ee898ca2cd0..cc2d978556caf099834df185d3277a476b1d9b67 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ProcessData.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ProcessData.php
@@ -12,7 +12,7 @@ class ProcessData extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initSession();
         $this->_processData();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Reorder.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Reorder.php
index b64cb14c95c39d9a8e250c836f65e8939ebd87ee..8c91da215ca16012b11390f06c8c5c902e56d099 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Reorder.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Reorder.php
@@ -10,7 +10,7 @@ class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
     /**
      * @return \Magento\Backend\Model\View\Result\Forward|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getSession()->clearStorage();
         $orderId = $this->getRequest()->getParam('order_id');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Save.php
index 3f48e6cf0679df10198993c48f684047cbe9f04f..087e6311cb69d5b4e67e8f42ea2e61c2a016f5d9 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Save.php
@@ -16,7 +16,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ShowUpdateResult.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ShowUpdateResult.php
index a3546de1fa6a7f37cd8e53e223f2a7963460c365..9cd5b4d52454713631e8a4accd92ee4997ce4b2a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ShowUpdateResult.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/ShowUpdateResult.php
@@ -49,7 +49,7 @@ class ShowUpdateResult extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
         $resultRaw = $this->resultRawFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Start.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Start.php
index d9fd5c50f5badcc4598003c0a56ce5d0e3f1114c..acc80e97426853b3be94ee4ef6bf5ac49fc908ed 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Start.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Start.php
@@ -14,7 +14,7 @@ class Start extends \Magento\Sales\Controller\Adminhtml\Order\Create
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getSession()->clearStorage();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/AddComment.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/AddComment.php
index a3cf6e6a308daa223a30d5eebc42634866858835..d404c6a16aa4e3f9fd63b650c0321cb9eb7f9bea 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/AddComment.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/AddComment.php
@@ -72,7 +72,7 @@ class AddComment extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Raw|\Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->getRequest()->setParam('creditmemo_id', $this->getRequest()->getParam('id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Cancel.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Cancel.php
index ce4652929c7badc5af4c674e901f8be66d6767db..935eca652b36558d3244930bc6dabd7ada98ebaa 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Cancel.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Cancel.php
@@ -40,7 +40,7 @@ class Cancel extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $creditmemoId = $this->getRequest()->getParam('creditmemo_id');
         if ($creditmemoId) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/NewAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/NewAction.php
index a9760a20fda4c2542acc8646336ae4d3df205ec8..e1c7b8d9cc2caf5fb6ac233aa4cf20f0394edcb2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/NewAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/NewAction.php
@@ -55,7 +55,7 @@ class NewAction extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->creditmemoLoader->setCreditmemoId($this->getRequest()->getParam('creditmemo_id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/PrintAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/PrintAction.php
index b5bb3333ac32e0ce6685090269e6ff00eaca3839..a848506b90030380a68a08676321d00122828dc7 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/PrintAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/PrintAction.php
@@ -49,13 +49,13 @@ class PrintAction extends \Magento\Sales\Controller\Adminhtml\Creditmemo\Abstrac
      *
      * @return ResponseInterface|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->creditmemoLoader->setCreditmemoId($this->getRequest()->getParam('creditmemo_id'));
         $this->creditmemoLoader->setCreditmemo($this->getRequest()->getParam('creditmemo'));
         $this->creditmemoLoader->setInvoiceId($this->getRequest()->getParam('invoice_id'));
         $this->creditmemoLoader->load();
-        return parent::execute();
+        return parent::executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Save.php
index 24d74e2177f1ceea61ee1aee9f2dcb8ade79fc2e..c66532f3aa5d44cc4e4f11d4094de5a2a82c7329 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Save.php
@@ -61,7 +61,7 @@ class Save extends \Magento\Backend\App\Action
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         $data = $this->getRequest()->getPost('creditmemo');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Start.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Start.php
index 4305bef4930e7e12b6a5f06e4a0b73a3b9948b32..a60433a2e0348d5f78965be8762c41c669e0ab5d 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Start.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Start.php
@@ -20,7 +20,7 @@ class Start extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /**
          * Clear old values for creditmemo qty's
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/UpdateQty.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/UpdateQty.php
index 38068b10918bbcaf2fcf5fbeb1d9e808b059d7e8..d1f400c84fba5a8485c10aabc7c857e477b78f4d 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/UpdateQty.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/UpdateQty.php
@@ -63,7 +63,7 @@ class UpdateQty extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\Result\Json|\Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/View.php
index 486b041554a3b1ff315be4e2b13cabdca3972b15..fe8808c559f8bae16c7f05b2e403bcd1742c63d9 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/View.php
@@ -55,7 +55,7 @@ class View extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->creditmemoLoader->setCreditmemoId($this->getRequest()->getParam('creditmemo_id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Void.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Void.php
index 23bd5f1ccdb82d889f8e800a620f91a43318300d..fcc978d5ddd06fc3a21e9a7c59eaec2739af2c7a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Void.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/Void.php
@@ -47,7 +47,7 @@ class Void extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->creditmemoLoader->setCreditmemoId($this->getRequest()->getParam('creditmemo_id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemos.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemos.php
index 46571b222f35c858a46f05b4f39f9abca3524cab..9fb23be0820b457ad3d24f660672f1de69a0a496 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemos.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemos.php
@@ -12,7 +12,7 @@ class Creditmemos extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initOrder();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Index.php
index a40e61cfa89f3bf026400987cc2a84c58e8eda2d..f2384d108842e043d452f0ef3e092d6bd2849755 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Index.php
@@ -22,7 +22,7 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Order\Create\Index
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initSession();
 
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Start.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Start.php
index 22bcb5a621277be0edb3be249526fde1816d438e..c216968a893ead6efdd41dc85e3426c5ac06a9d2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Start.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Edit/Start.php
@@ -22,7 +22,7 @@ class Start extends \Magento\Sales\Controller\Adminhtml\Order\Create\Start
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_getSession()->clearStorage();
         $orderId = $this->getRequest()->getParam('order_id');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Email.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Email.php
index ae1763485bdbc8ca2bea50874bcf0778cc08d6b9..95e845bce78c7e667f078be5ecaa546d0c869530 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Email.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Email.php
@@ -12,7 +12,7 @@ class Email extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $order = $this->_initOrder();
         if ($order) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Grid.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Grid.php
index d16a0ea8cd1d8c2248d5ba0e5cb0642d206f216c..c2017647e88ed5fb4832ac1334d847098c77b5d2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Grid.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Grid.php
@@ -12,7 +12,7 @@ class Grid extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultLayout = $this->resultLayoutFactory->create();
         return $resultLayout;
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Hold.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Hold.php
index 881ba0c98c9d4612e3b22e384ebc615bb2e876ee..fd5f07df5e98380475269b139849131eb7023d7e 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Hold.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Hold.php
@@ -12,7 +12,7 @@ class Hold extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if (!$this->isValidPostRequest()) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Index.php
index 9fc67fd2754f5e4e392d251e4a3163461245a9b9..3aac062e01b111bbdf4c35dad5365a6b9db3049a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->_initAction();
         $resultPage->getConfig()->getTitle()->prepend(__('Orders'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/AddComment.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/AddComment.php
index 2be526b212971230a0754cb3008333f23699c2ed..f4a48a1456895c8999a1ae867ed32d87efbd885c 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/AddComment.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/AddComment.php
@@ -68,7 +68,7 @@ class AddComment extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInv
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->getRequest()->setParam('invoice_id', $this->getRequest()->getParam('id'));
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Cancel.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Cancel.php
index a717843c7e99c930a1de1fe22b8400128e5af439..d79599efb94cb2002091f906612d5f1e03a6d357 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Cancel.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Cancel.php
@@ -13,7 +13,7 @@ class Cancel extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoice = $this->getInvoice();
         if (!$invoice) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Capture.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Capture.php
index 50ab1d8a9f2bf479f3b98d4d5797b367d7e2bb00..3f8b12d19fcf652ccffc2deacafcdcb261a23662 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Capture.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Capture.php
@@ -13,7 +13,7 @@ class Capture extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoic
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoice = $this->getInvoice();
         if (!$invoice) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/NewAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/NewAction.php
index 306518b16edcb6301cfb04d26a1dcba2d1e14184..4c52db5ff57509134db82ce74fad7ef42f9f5c27 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/NewAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/NewAction.php
@@ -73,7 +73,7 @@ class NewAction extends \Magento\Backend\App\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $orderId = $this->getRequest()->getParam('order_id');
         $invoiceData = $this->getRequest()->getParam('invoice', []);
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
index 1ffa64f0100cc98f478328b8fdec042abc7df507..5a822770fe5275d6c4e3a16929726547c13bae56 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
@@ -110,7 +110,7 @@ class Save extends \Magento\Backend\App\Action
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Start.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Start.php
index 8db329dad0876ee1cb73483dcd62ba8131b0c5bc..594a437c653bfc928392b22a7590536932e1fe1b 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Start.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Start.php
@@ -13,7 +13,7 @@ class Start extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /**
          * Clear old values for invoice qty's
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/UpdateQty.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/UpdateQty.php
index 3b30dbde11f07a6029f79b7703a1d1239923e7e6..cfee5ad1ff2d006fda9e6e001c22323ae8b4a23a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/UpdateQty.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/UpdateQty.php
@@ -71,7 +71,7 @@ class UpdateQty extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvo
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $orderId = $this->getRequest()->getParam('order_id');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/View.php
index b6f4ae27b44e65de744cc67949ad28d185f7d8f1..9e01376261e5ad93bbd42ed8e0207099eea835b9 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/View.php
@@ -39,7 +39,7 @@ class View extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\V
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoice = $this->getInvoice();
         if (!$invoice) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Void.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Void.php
index 841d517037b43ef46b27c7b0892bcf81d0005f06..005c3cdbc47d058ba4611150d12f494c74b79399 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Void.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Void.php
@@ -13,7 +13,7 @@ class Void extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\V
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $invoice = $this->getInvoice();
         if (!$invoice) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoices.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoices.php
index 08354deb668398804af8bdf958636414b4ef8588..cfb8841f41cf02cdc6b4abbc4cd1b54d8678de75 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoices.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoices.php
@@ -12,7 +12,7 @@ class Invoices extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initOrder();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/ReviewPayment.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/ReviewPayment.php
index 8a0d64c9bcb6e88bb568341d398665c8a7d94f71..a2d72953eb41b0151fd16904f24c2ff4ff8657b8 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/ReviewPayment.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/ReviewPayment.php
@@ -16,7 +16,7 @@ class ReviewPayment extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         try {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Shipments.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Shipments.php
index 98683c76017909904fe4b2693a3dff95f12f42da..84efbffee9d236254472564baa38354c4d8fa84f 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Shipments.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Shipments.php
@@ -12,7 +12,7 @@ class Shipments extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initOrder();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Assign.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Assign.php
index 04e05fc348e1f7aae99a6fca4ce7f97c789e8e57..7a2abd381e1a9c4cfeb97487d08e63471a1a52bd 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Assign.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Assign.php
@@ -36,7 +36,7 @@ class Assign extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/AssignPost.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/AssignPost.php
index a77c6dc3cc642e6429785b8303ae4da801015f7b..a103fbf41755713b8c20950618f143bc3547524c 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/AssignPost.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/AssignPost.php
@@ -13,7 +13,7 @@ class AssignPost extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Edit.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Edit.php
index 26ee0651e3657e65ba93868d13c2ae8e5751793c..0f5f2e720b8ce8de233de67c0a75bfb3ded1d710 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Edit.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Edit.php
@@ -36,7 +36,7 @@ class Edit extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $status = $this->_initStatus();
         if ($status) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Index.php
index 3bafba1937248c7220f0d0428265c2ef95a4ca49..65f3dd3f164dc8dfff07d0309d2d8675da3afeea 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Index.php
@@ -36,7 +36,7 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/NewAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/NewAction.php
index f9668e8325859e2836be2e4f908123fca5bdbcea..57e8e0b852ea78c0bc4aa2c5c56006b4c415d8af 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/NewAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/NewAction.php
@@ -36,7 +36,7 @@ class NewAction extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->_getSession()->getFormData(true);
         if ($data) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Save.php
index efd73d7a2b34ee9a655b618aebef0e5928b65e88..79efd7eede660089d7c0f6499ffe66dac4ec3194 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\Status
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         $isNew = $this->getRequest()->getParam('is_new');
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Unassign.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Unassign.php
index e44b4f5e48eef040ded0a53c5a8ca9cfb6714d48..e84ac0bc45b240ad436fdbc0c2bbd35a4b66b82a 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Unassign.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Status/Unassign.php
@@ -11,7 +11,7 @@ class Unassign extends \Magento\Sales\Controller\Adminhtml\Order\Status
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $state = $this->getRequest()->getParam('state');
         $status = $this->_initStatus();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Transactions.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Transactions.php
index f41824df84b5f75ebcfd573145cd5bd81973ec7c..9801ada2f82f3bd621008c5c798c8a6e333e04eb 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Transactions.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Transactions.php
@@ -14,7 +14,7 @@ class Transactions extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Framework\View\Result\Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initOrder();
         $resultLayout = $this->resultLayoutFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Unhold.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Unhold.php
index 6cedb1e60b95f5ab9f3ab32ce874b1bf75979a43..83fc8808df3cc493ae5d9bc07bf32c87d201e6ab 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Unhold.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Unhold.php
@@ -12,7 +12,7 @@ class Unhold extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultRedirect = $this->resultRedirectFactory->create();
         if (!$this->isValidPostRequest()) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/View.php
index 831538fa21d11b0d29bd3d2b0c290d8d2cd7bdf7..011056eac1403580e04556d958a05644cd654eba 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/View.php
@@ -14,7 +14,7 @@ class View extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $order = $this->_initOrder();
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/View/Giftmessage/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/View/Giftmessage/Save.php
index 554935ed551ad55f72de3086fc220ab0a28f4a31..13ced62a888497bf60cc9a57f2ee614c862b7a78 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/View/Giftmessage/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/View/Giftmessage/Save.php
@@ -11,7 +11,7 @@ class Save extends \Magento\Sales\Controller\Adminhtml\Order\View\Giftmessage
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_getGiftmessageSaveModel()->setGiftmessages(
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/VoidPayment.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/VoidPayment.php
index 03b870d71cab1fe66b651da96c3b185f52113918..3a10f5684c6aa06d30b448d2dd97a14d4393a385 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/VoidPayment.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/VoidPayment.php
@@ -12,7 +12,7 @@ class VoidPayment extends \Magento\Sales\Controller\Adminhtml\Order
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $order = $this->_initOrder();
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/Index.php
index 1a800be5b93a3d41a9487ee7ffef0a7556820967..c393c2b1a1c911bb061d6577e1ca67bed3e46c41 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/Index.php
@@ -41,7 +41,7 @@ abstract class Index extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/PrintAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/PrintAction.php
index 633cf071b933bcd97bcbbc3fd3760b720056c7c5..6a72dfe0ebcaa0bd94bc9d01022193c6a6f63aa7 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/PrintAction.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/PrintAction.php
@@ -50,7 +50,7 @@ abstract class PrintAction extends \Magento\Backend\App\Action
     /**
      * @return ResponseInterface|\Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         $shipmentId = $this->getRequest()->getParam('shipment_id');
         if ($shipmentId) {
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/View.php
index 150f98e597b106cb50e7d0dccd1c30574d1ce6dd..926a46c14c4f12c0237ca240b2906d4b1b8ed0e2 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/View.php
@@ -41,7 +41,7 @@ abstract class View extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Fetch.php b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Fetch.php
index df3a48ca4a76d7a746ff4e107908d3055ec1f2c8..a2ac001589d6396847b56706c2fa375035e00913 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Fetch.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Fetch.php
@@ -17,7 +17,7 @@ class Fetch extends \Magento\Sales\Controller\Adminhtml\Transactions
      *
      * @return Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $txn = $this->_initTransaction();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Grid.php b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Grid.php
index 0b4579d1810b9ac30b24b5d5074c2523423eec72..d65bba3d004bfe3c98f99f0a8227655a7bc226f7 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Grid.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Grid.php
@@ -16,7 +16,7 @@ class Grid extends \Magento\Sales\Controller\Adminhtml\Transactions
      *
      * @return Layout
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->resultLayoutFactory->create();
     }
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Index.php b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Index.php
index 6125b244d2991f815e7841a4fdbd66499ef1777a..2d39c91638ec318f680e6525ad377ac985311cb1 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Index.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Sales\Controller\Adminhtml\Transactions
     /**
      * @return Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/View.php b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/View.php
index 867d700cb41ecc1e00e68f3886c4d6dfcd806e3e..df25ccba4a9c484c261fd15024a68d6bbcf481f5 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Transactions/View.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Transactions/View.php
@@ -16,7 +16,7 @@ class View extends \Magento\Sales\Controller\Adminhtml\Transactions
      *
      * @return Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $txn = $this->_initTransaction();
         if (!$txn) {
diff --git a/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php b/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php
index 991ac197d784a71ab6f5c636987293bcefd5a4f6..d0e7ca016d0523aba740fc1e106df9a117e9b485 100644
--- a/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php
+++ b/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php
@@ -54,7 +54,7 @@ class DownloadCustomOption extends \Magento\Framework\App\Action\Action
      *
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $quoteItemOptionId = $this->getRequest()->getParam('id');
         /** @var $option \Magento\Quote\Model\Quote\Item\Option */
diff --git a/app/code/Magento/Sales/Controller/Guest/Form.php b/app/code/Magento/Sales/Controller/Guest/Form.php
index c9f87d44e7995fabf5078c1b200b2effcea693c1..03f56609495b90aac35722aa82187661d4338e35 100644
--- a/app/code/Magento/Sales/Controller/Guest/Form.php
+++ b/app/code/Magento/Sales/Controller/Guest/Form.php
@@ -30,7 +30,7 @@ class Form extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_objectManager->get('Magento\Customer\Model\Session')->isLoggedIn()) {
             return $this->resultRedirectFactory->create()->setPath('customer/account/');
diff --git a/app/code/Magento/Sales/Controller/Guest/PrintCreditmemo.php b/app/code/Magento/Sales/Controller/Guest/PrintCreditmemo.php
index 5b6fd6c5a6a1049dbcb82265ce4e84989d28c6ae..cc62bfa704781fe1833579608e5ae2a9a4892659 100644
--- a/app/code/Magento/Sales/Controller/Guest/PrintCreditmemo.php
+++ b/app/code/Magento/Sales/Controller/Guest/PrintCreditmemo.php
@@ -52,7 +52,7 @@ class PrintCreditmemo extends \Magento\Sales\Controller\AbstractController\Print
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/Guest/PrintInvoice.php b/app/code/Magento/Sales/Controller/Guest/PrintInvoice.php
index ddd943b3246b5029a5e19b5ed989a10d5c28710e..d8c30fe056d141560d3335207f991ae36b624ba1 100644
--- a/app/code/Magento/Sales/Controller/Guest/PrintInvoice.php
+++ b/app/code/Magento/Sales/Controller/Guest/PrintInvoice.php
@@ -42,7 +42,7 @@ class PrintInvoice extends \Magento\Sales\Controller\AbstractController\PrintInv
     /**
      * {@inheritdoc}
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/Guest/PrintShipment.php b/app/code/Magento/Sales/Controller/Guest/PrintShipment.php
index 8dcbfe4ef735cb9d330de055feece6b5e9fe0fcb..8a1ad2b803e16af16c38d5c45e87df5b5f5b26e7 100644
--- a/app/code/Magento/Sales/Controller/Guest/PrintShipment.php
+++ b/app/code/Magento/Sales/Controller/Guest/PrintShipment.php
@@ -42,7 +42,7 @@ class PrintShipment extends \Magento\Sales\Controller\AbstractController\PrintSh
     /**
      * {@inheritdoc}
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->orderLoader->load($this->_request);
         if ($result instanceof \Magento\Framework\Controller\ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/Guest/View.php b/app/code/Magento/Sales/Controller/Guest/View.php
index 93de3cab2db471fe463842f980715fe1a185f91e..500d1d30d0813ad1b624fea6ba51e0564421ea85 100644
--- a/app/code/Magento/Sales/Controller/Guest/View.php
+++ b/app/code/Magento/Sales/Controller/Guest/View.php
@@ -40,7 +40,7 @@ class View extends Action\Action
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $result = $this->guestHelper->loadValidOrder($this->getRequest());
         if ($result instanceof ResultInterface) {
diff --git a/app/code/Magento/Sales/Controller/Order/History.php b/app/code/Magento/Sales/Controller/Order/History.php
index 5a87a8b944258f0b434381588735d532e984410e..8dd70bfbe330bed6b4610db4723ee0cd2ee5a730 100644
--- a/app/code/Magento/Sales/Controller/Order/History.php
+++ b/app/code/Magento/Sales/Controller/Order/History.php
@@ -34,7 +34,7 @@ class History extends \Magento\Framework\App\Action\Action implements OrderInter
      *
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultPageFactory->create();
diff --git a/app/code/Magento/Sales/Controller/Order/Plugin/Authentication.php b/app/code/Magento/Sales/Controller/Order/Plugin/Authentication.php
index e496f13e7a64ada322ac67af6d4b10182e7f5ed7..fed11efb2717cc93c5c87ae1924b16c5b76f1ebc 100644
--- a/app/code/Magento/Sales/Controller/Order/Plugin/Authentication.php
+++ b/app/code/Magento/Sales/Controller/Order/Plugin/Authentication.php
@@ -40,7 +40,7 @@ class Authentication
      * @return void
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function beforeDispatch(\Magento\Framework\App\ActionInterface $subject, RequestInterface $request)
+    public function beforeExecute(\Magento\Framework\App\ActionInterface $subject, RequestInterface $request)
     {
         $loginUrl = $this->customerUrl->getLoginUrl();
 
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/EmailTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/EmailTest.php
index 6a78aef9bcf3da5e6ec6d935b6b0e7cfb63ebf40..b35968afc83ee8dc96c790264ee0f0c0a8f56776 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/EmailTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Creditmemo/AbstractCreditmemo/EmailTest.php
@@ -163,7 +163,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->creditmemoEmail->execute()
+            $this->creditmemoEmail->executeInternal()
         );
         $this->assertEquals($this->response, $this->creditmemoEmail->getResponse());
     }
@@ -175,7 +175,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
             ->with('creditmemo_id')
             ->will($this->returnValue(null));
 
-        $this->assertNull($this->creditmemoEmail->execute());
+        $this->assertNull($this->creditmemoEmail->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Invoice/AbstractInvoice/EmailTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Invoice/AbstractInvoice/EmailTest.php
index 4e5bd8e7472da26ca528f98a3636209effefcc12..0566645df83e066a56d3f48b089f58209ca1a5c0 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Invoice/AbstractInvoice/EmailTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Invoice/AbstractInvoice/EmailTest.php
@@ -206,7 +206,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
             ->method('setPath')
             ->with('sales/invoice/view', ['order_id' => $orderId, 'invoice_id' => $invoiceId])
             ->willReturnSelf();
-        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Redirect', $this->invoiceEmail->execute());
+        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Redirect', $this->invoiceEmail->executeInternal());
     }
 
     public function testEmailNoInvoiceId()
@@ -223,7 +223,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->invoiceEmail->execute());
+        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->invoiceEmail->executeInternal());
     }
 
     public function testEmailNoInvoice()
@@ -253,6 +253,6 @@ class EmailTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->invoiceEmail->execute());
+        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->invoiceEmail->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/CancelTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/CancelTest.php
index 186a40730f98aef4490443006c1338d5d0c2bf76..fe34c10eb4f64821cda391dbe7e9e2d386300315 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/CancelTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/CancelTest.php
@@ -137,6 +137,6 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Create/ProcessDataTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Create/ProcessDataTest.php
index 805edbea1ea9b415d312090cdad93a8bc5be2568..c0763bf80d8ace933d961d3112b80a09e47dd9d9 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Create/ProcessDataTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Create/ProcessDataTest.php
@@ -233,7 +233,7 @@ class ProcessDataTest extends \PHPUnit_Framework_TestCase
             ->method('forward')
             ->with('index')
             ->willReturnSelf();
-        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->processData->execute());
+        $this->assertInstanceOf('Magento\Backend\Model\View\Result\Forward', $this->processData->executeInternal());
     }
 
     public function isApplyDiscountDataProvider()
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/AddCommentTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/AddCommentTest.php
index b96f2254501abc8b280e52b4626abdd7c29d2478..f7f6a0db9dc400db8be4948bb4cc8a06a16a1412 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/AddCommentTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/AddCommentTest.php
@@ -173,7 +173,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Json',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -201,7 +201,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Json',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -230,7 +230,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Json',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -294,7 +294,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Raw',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/CancelTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/CancelTest.php
index 223b5a9753b63f5742b10b68f2ffc143669482a6..5b8749215aaab3fd65c3666c49065fa7bbc2099f 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/CancelTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/CancelTest.php
@@ -200,7 +200,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -235,7 +235,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -258,7 +258,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Forward',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -293,7 +293,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/NewActionTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/NewActionTest.php
index 68726f2894c5859816695d605857c01c989321ec..99abeba2695a94727b2f5c82fdbb188c720c52c9 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/NewActionTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/NewActionTest.php
@@ -238,7 +238,7 @@ class NewActionTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Page',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/PrintActionTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/PrintActionTest.php
index 7f2ae31af7e98be857073bf74d88d53098b741cf..753ed02380db46175b35f15f02c279544175e7d6 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/PrintActionTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/PrintActionTest.php
@@ -152,7 +152,7 @@ class PrintActionTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Sales\Controller\Adminhtml\Order\Creditmemo\PrintAction::execute
+     * @covers \Magento\Sales\Controller\Adminhtml\Order\Creditmemo\PrintAction::executeInternal
      */
     public function testExecute()
     {
@@ -201,12 +201,12 @@ class PrintActionTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\App\ResponseInterface',
-            $this->printAction->execute()
+            $this->printAction->executeInternal()
         );
     }
 
     /**
-     * @covers \Magento\Sales\Controller\Adminhtml\Order\Creditmemo\PrintAction::execute
+     * @covers \Magento\Sales\Controller\Adminhtml\Order\Creditmemo\PrintAction::executeInternal
      */
     public function testExecuteNoCreditmemoId()
     {
@@ -222,7 +222,7 @@ class PrintActionTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Forward',
-            $this->printAction->execute()
+            $this->printAction->executeInternal()
         );
     }
 
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/SaveTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/SaveTest.php
index 5549ee7f193ce5a5515571bff33de979e0afba47..6c0a726a516b087c61c3706079d472b7791112a2 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/SaveTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/SaveTest.php
@@ -14,7 +14,7 @@ namespace Magento\Sales\Test\Unit\Controller\Adminhtml\Order\Creditmemo;
 class SaveTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Sales\Controller\Adminhtml\Order\Creditmemo
+     * @var \Magento\Sales\Controller\Adminhtml\Order\Creditmemo\Save
      */
     protected $_controller;
 
@@ -190,7 +190,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->_controller->execute()
+            $this->_controller->executeInternal()
         );
     }
 
@@ -237,7 +237,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
 
         $this->_setSaveActionExpectationForMageCoreException($data, 'The credit memo\'s total must be positive.');
 
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/UpdateQtyTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/UpdateQtyTest.php
index 9e02c98b1c374df8f7263bfcf33733073e86d5d4..30534fcacfdec728e1af0fac811a3639c89a79db 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/UpdateQtyTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/UpdateQtyTest.php
@@ -221,7 +221,7 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Json',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -252,7 +252,7 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Json',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -300,7 +300,7 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Framework\Controller\Result\Raw',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/ViewTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/ViewTest.php
index fb87393407dcef1d4f4b3e1738890664a9eaf6cc..1b45562472581ebc1ee0e1ae6f4d10653e4e7fb6 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/ViewTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/ViewTest.php
@@ -223,7 +223,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Forward',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -269,7 +269,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Page',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/VoidTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/VoidTest.php
index 6d2d02861be077932095d947a73f411ecf65d4c7..efd4d5b43551f44d946a29dbceaa7ed873b02fa2 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/VoidTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Creditmemo/VoidTest.php
@@ -207,7 +207,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Forward',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -243,7 +243,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -279,7 +279,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 
@@ -333,7 +333,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->controller->execute()
+            $this->controller->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/EmailTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/EmailTest.php
index 73396196f9723a40f1b17c97093835995660c7f1..578f64454d5fbf47b5c058a8554dd09bf43e5309 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/EmailTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/EmailTest.php
@@ -196,7 +196,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->orderEmail->execute()
+            $this->orderEmail->executeInternal()
         );
         $this->assertEquals($this->response, $this->orderEmail->getResponse());
     }
@@ -228,7 +228,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->orderEmail->execute()
+            $this->orderEmail->executeInternal()
         );
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/HoldTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/HoldTest.php
index 18dd6a8c8b3376d7cf936aafd0351afd9e922d3a..2ddc7d1d212b1314f5e2a74d35621500433f6ef7 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/HoldTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/HoldTest.php
@@ -137,6 +137,6 @@ class HoldTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/AddCommentTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/AddCommentTest.php
index f8b5c3f44b178aa31b4ddfd0849e558bdb0cbfd2..a72cf068a00b19613db2f7860f36bcfa78923cea 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/AddCommentTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/AddCommentTest.php
@@ -265,7 +265,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
         $resultRaw->expects($this->once())->method('setContents')->with($response);
 
         $this->resultRawFactoryMock->expects($this->once())->method('create')->will($this->returnValue($resultRaw));
-        $this->assertSame($resultRaw, $this->controller->execute());
+        $this->assertSame($resultRaw, $this->controller->executeInternal());
     }
 
     /**
@@ -288,7 +288,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($this->resultJsonMock));
 
         $this->resultJsonMock->expects($this->once())->method('setData')->with($response);
-        $this->assertSame($this->resultJsonMock, $this->controller->execute());
+        $this->assertSame($this->resultJsonMock, $this->controller->executeInternal());
     }
 
     /**
@@ -310,6 +310,6 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($this->resultJsonMock));
 
         $this->resultJsonMock->expects($this->once())->method('setData')->with($response);
-        $this->assertSame($this->resultJsonMock, $this->controller->execute());
+        $this->assertSame($this->resultJsonMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CancelTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CancelTest.php
index 689d7efa270a73ffb545ed41e6e2968b6d38bb64..9190aefc128265b242908c3d287ce6d762c4b35f 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CancelTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CancelTest.php
@@ -226,7 +226,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 
     /**
@@ -263,7 +263,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultForward));
 
-        $this->assertSame($resultForward, $this->controller->execute());
+        $this->assertSame($resultForward, $this->controller->executeInternal());
     }
 
     /**
@@ -319,7 +319,7 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 
     /**
@@ -375,6 +375,6 @@ class CancelTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CaptureTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CaptureTest.php
index c0e86d79f3481f0e56036263f56abad74a1f7e01..e1e759a8cdd38e9acdb9d081a6a2250eaefde2cf 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CaptureTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/CaptureTest.php
@@ -244,7 +244,7 @@ class CaptureTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 
     /**
@@ -280,7 +280,7 @@ class CaptureTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultForward));
 
-        $this->assertSame($resultForward, $this->controller->execute());
+        $this->assertSame($resultForward, $this->controller->executeInternal());
     }
 
     /**
@@ -339,7 +339,7 @@ class CaptureTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 
     /**
@@ -399,6 +399,6 @@ class CaptureTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/NewActionTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/NewActionTest.php
index 5beb118dda9e4c9c6c1466ce8bf2bce9ebeede89..7ddb6084b1db573394e2ceff0216f092f2faefd1 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/NewActionTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/NewActionTest.php
@@ -285,7 +285,7 @@ class NewActionTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($this->resultPageMock));
 
-        $this->assertSame($this->resultPageMock, $this->controller->execute());
+        $this->assertSame($this->resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteNoOrder()
@@ -329,6 +329,6 @@ class NewActionTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/PrintActionTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/PrintActionTest.php
index 223e5e4311ea89988bf543a09e4739620a017c88..4ac90b4c26b9673060fda421808f746f9a7ddd9c 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/PrintActionTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/PrintActionTest.php
@@ -147,6 +147,6 @@ class PrintActionTest extends \PHPUnit_Framework_TestCase
             ->with('Magento\Framework\Stdlib\DateTime\DateTime')
             ->willReturn($dateTimeMock);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/SaveTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/SaveTest.php
index 619b6b0bbba4b665a6c426a48585f99d76f5e22a..9d21a5e3027995cb9b0040497a37d6b88ff207d5 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/SaveTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/SaveTest.php
@@ -128,6 +128,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('sales/order/index')
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->controller->execute());
+        $this->assertEquals($redirectMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/UpdateQtyTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/UpdateQtyTest.php
index 2be9749e0c70ccbc544a248202bf75a5b12bcaa3..b3356c971a979a0dfb0d0c81d8b36255cdfc6619 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/UpdateQtyTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/UpdateQtyTest.php
@@ -257,7 +257,7 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
 
         $this->resultRawFactoryMock->expects($this->once())->method('create')->will($this->returnValue($resultRaw));
 
-        $this->assertSame($resultRaw, $this->controller->execute());
+        $this->assertSame($resultRaw, $this->controller->executeInternal());
     }
 
     /**
@@ -300,7 +300,7 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultJsonMock));
 
-        $this->assertSame($resultJsonMock, $this->controller->execute());
+        $this->assertSame($resultJsonMock, $this->controller->executeInternal());
     }
 
     /**
@@ -343,6 +343,6 @@ class UpdateQtyTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultJsonMock));
 
-        $this->assertSame($resultJsonMock, $this->controller->execute());
+        $this->assertSame($resultJsonMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/ViewTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/ViewTest.php
index edb47e37f44f6ec75db8f82559ceccab8863ac66..af2d51618d91f8081c7907821f91804f39b27086 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/ViewTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/ViewTest.php
@@ -244,7 +244,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($this->resultPageMock));
 
-        $this->assertSame($this->resultPageMock, $this->controller->execute());
+        $this->assertSame($this->resultPageMock, $this->controller->executeInternal());
     }
 
     public function testExecuteNoInvoice()
@@ -278,6 +278,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultForward));
 
-        $this->assertSame($resultForward, $this->controller->execute());
+        $this->assertSame($resultForward, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/VoidTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/VoidTest.php
index c2bfc012aa69e7e1a03f44297f717a52c41fd70a..a4b638984573cf5bd605417c730355355c1680e4 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/VoidTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/Invoice/VoidTest.php
@@ -255,7 +255,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 
     /**
@@ -297,7 +297,7 @@ class VoidTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultForward));
 
-        $this->assertSame($resultForward, $this->controller->execute());
+        $this->assertSame($resultForward, $this->controller->executeInternal());
     }
 
     /**
@@ -354,6 +354,6 @@ class VoidTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($resultRedirect));
 
-        $this->assertSame($resultRedirect, $this->controller->execute());
+        $this->assertSame($resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassCancelTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassCancelTest.php
index 40a5b450f042d308196b27fde855f6efe1838739..aa9ed541fad34e856b1baa40008033578a9d765d 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassCancelTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassCancelTest.php
@@ -215,7 +215,7 @@ class MassCancelTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     /**
@@ -259,7 +259,7 @@ class MassCancelTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     /**
@@ -287,6 +287,6 @@ class MassCancelTest extends \PHPUnit_Framework_TestCase
             ->method('addError')
             ->with('Can not cancel');
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassHoldTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassHoldTest.php
index 5c4d78706854baaba2625c1eda874f96391a71e6..440d0dda48f79ea4ab79545d6def6bbce75d823a 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassHoldTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassHoldTest.php
@@ -217,7 +217,7 @@ class MassHoldTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteNoOrdersPutOnHold()
@@ -257,6 +257,6 @@ class MassHoldTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassUnholdTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassUnholdTest.php
index 127ccc343ae2d3793e8eda9ecca7ea83b70b5516..781834d3a1bf1618a5e9f7edc83a5fedecdff89c 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassUnholdTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassUnholdTest.php
@@ -212,7 +212,7 @@ class MassUnholdTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 
     public function testExecuteNoReleasedOrderFromHold()
@@ -251,6 +251,6 @@ class MassUnholdTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->massAction->execute();
+        $this->massAction->executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ReviewPaymentTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ReviewPaymentTest.php
index 866c083c049a9e8398aa675626bb2cf5113b1436..2fd32794370f6f259517f8449a98f8619e71bfad 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ReviewPaymentTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ReviewPaymentTest.php
@@ -163,7 +163,7 @@ class ReviewPaymentTest extends \PHPUnit_Framework_TestCase
             ->with('sales/order/view')
             ->willReturnSelf();
 
-        $result = $this->reviewPayment->execute();
+        $result = $this->reviewPayment->executeInternal();
         $this->assertEquals($this->resultRedirectMock, $result);
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/UnholdTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/UnholdTest.php
index 1dbf1baafa60d52ff06a74a8058d3224f0499b48..e25884e837a1a171fbe95e96d49a5e2bcf97d42f 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/UnholdTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/UnholdTest.php
@@ -137,6 +137,6 @@ class UnholdTest extends \PHPUnit_Framework_TestCase
             ->with('sales/*/')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->controller->execute());
+        $this->assertEquals($this->resultRedirect, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ViewTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ViewTest.php
index 3037e323da0ce54a9907841ccff2a6197387eb7c..fdbd6bf306e2b0665f3557cd3593dba859c358be 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ViewTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/ViewTest.php
@@ -167,7 +167,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::execute
+     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::executeInternal
      */
     public function testExecute()
     {
@@ -197,12 +197,12 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Page',
-            $this->viewAction->execute()
+            $this->viewAction->executeInternal()
         );
     }
 
     /**
-     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::execute
+     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::executeInternal
      */
     public function testExecuteNoOrder()
     {
@@ -224,12 +224,12 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->viewAction->execute()
+            $this->viewAction->executeInternal()
         );
     }
 
     /**
-     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::execute
+     * @covers \Magento\Sales\Controller\Adminhtml\Order\View::executeInternal
      */
     public function testGlobalException()
     {
@@ -253,7 +253,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf(
             'Magento\Backend\Model\View\Result\Redirect',
-            $this->viewAction->execute()
+            $this->viewAction->executeInternal()
         );
     }
 
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Download/DownloadCustomOptionTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Download/DownloadCustomOptionTest.php
index 629cb0ce5eb719d426c721cffb640af8a6d9059e..0299f4841761b6837279bc1c07a2662a688a772f 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Download/DownloadCustomOptionTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Download/DownloadCustomOptionTest.php
@@ -209,7 +209,7 @@ class DownloadCustomOptionTest extends \PHPUnit_Framework_TestCase
 
             $this->objectMock->expects($this->once())->method('endExecute')->willReturn(true);
         }
-        $this->objectMock->execute();
+        $this->objectMock->executeInternal();
     }
 
     public function executeDataProvider()
@@ -329,6 +329,6 @@ class DownloadCustomOptionTest extends \PHPUnit_Framework_TestCase
 
         $this->resultForwardMock->expects($this->once())->method('forward')->with('noroute')->willReturn(true);
 
-        $this->objectMock->execute();
+        $this->objectMock->executeInternal();
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Controller/Guest/ViewTest.php b/app/code/Magento/Sales/Test/Unit/Controller/Guest/ViewTest.php
index 78aa59f9eedaadb4c2fd51ba6b4d906e5f6e6f2c..dbe89bc05333b475ac61a7dcc05976a9533d8bd7 100644
--- a/app/code/Magento/Sales/Test/Unit/Controller/Guest/ViewTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Controller/Guest/ViewTest.php
@@ -103,7 +103,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->method('getBreadcrumbs')
             ->with($this->resultPageMock);
 
-        $this->assertSame($this->resultPageMock, $this->viewController->execute());
+        $this->assertSame($this->resultPageMock, $this->viewController->executeInternal());
     }
 
     /**
@@ -116,6 +116,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->with($this->requestMock)
             ->willReturn($this->resultRedirectMock);
 
-        $this->assertSame($this->resultRedirectMock, $this->viewController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->viewController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/ReaderTest.php b/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/ReaderTest.php
index 50407a1fbd1cf0c7d05110291aa5309eb0213d0f..b00d3207cf4ae6cf958410f3b470a18d6407b0f4 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/ReaderTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/ReaderTest.php
@@ -74,7 +74,9 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
 
         $this->_schemaLocator = new \Magento\Sales\Model\Order\Pdf\Config\SchemaLocator($moduleReader);
         $this->_validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $this->_validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $this->_validationState->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_model = new \Magento\Sales\Model\Order\Pdf\Config\Reader(
             $this->_fileResolverMock,
diff --git a/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/XsdTest.php b/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/XsdTest.php
index df9683026fa7b298b8f7628cf1b8e4619e3957bc..01fe130398cb291a741c059f81d1b3ee98e6a6a4 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/XsdTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/Order/Pdf/Config/XsdTest.php
@@ -55,7 +55,10 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     protected function _testSchema($schema, $fixtureXml, array $expectedErrors)
     {
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, '%message%');
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, '%message%');
         $actualResult = $dom->validate($schema, $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ApplyRules.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ApplyRules.php
index 9e694ab9ea087a64765c8ad198d3170c8492ca96..28d6a8eb392b194b7c444b79f8e761f25be63899 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ApplyRules.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ApplyRules.php
@@ -13,7 +13,7 @@ class ApplyRules extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Chooser.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Chooser.php
index f88d58097f2cd75cf7c457e9d6edea3f63ed4c36..0a7563e34a9ee743ea85969efe305301696d1b56 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Chooser.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Chooser.php
@@ -13,7 +13,7 @@ class Chooser extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $uniqId = $this->getRequest()->getParam('uniq_id');
         $chooserBlock = $this->_view->getLayout()->createBlock(
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsGrid.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsGrid.php
index 565e1d7d8ca44688d121f42279bd3788ff726020..3ce01abaf9bc02a9fb5f517026a745cebcd51a06 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsGrid.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsGrid.php
@@ -13,7 +13,7 @@ class CouponsGrid extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initRule();
         $this->_view->loadLayout();
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsMassDelete.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsMassDelete.php
index 623dedb6ae1b083261baf4195a6fdb160d011c2b..d938f67a30f76cd987c46f6c05e89ace3a7081e5 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsMassDelete.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/CouponsMassDelete.php
@@ -13,7 +13,7 @@ class CouponsMassDelete extends \Magento\SalesRule\Controller\Adminhtml\Promo\Qu
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initRule();
         $rule = $this->_coreRegistry->registry('current_promo_quote_rule');
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Delete.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Delete.php
index c88dc7494f89512455ea539b75416905965b9f03..a8e5ca176cd9197eec87a73f50213d1a556e0ad0 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Delete.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         if ($id) {
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Edit.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Edit.php
index 6138a59b95ac241b6df44e33edd90fba92fcc369..636e0d548c34b0c47b565792243e454ce5d7ca2d 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Edit.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Edit.php
@@ -14,7 +14,7 @@ class Edit extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      * @return void
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $model = $this->_objectManager->create('Magento\SalesRule\Model\Rule');
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsCsv.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsCsv.php
index bcbfee1049532f7eaae6fb7d2906ef16bfac5d00..3d06d95e63034056e3269918877fa00480834685 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsCsv.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsCsv.php
@@ -15,7 +15,7 @@ class ExportCouponsCsv extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quo
      *
      * @return \Magento\Framework\App\ResponseInterface|null
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initRule();
         $rule = $this->_coreRegistry->registry('current_promo_quote_rule');
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsXml.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsXml.php
index 22172e206f50ece7573b3d8c377137e4e9eec8a1..717dc7246c64d03ff470cf5db51e15165c084e6d 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsXml.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/ExportCouponsXml.php
@@ -15,7 +15,7 @@ class ExportCouponsXml extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quo
      *
      * @return \Magento\Framework\App\ResponseInterface|null
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initRule();
         $rule = $this->_coreRegistry->registry('current_promo_quote_rule');
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Generate.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Generate.php
index 437f2573bc2638c5e75f675d234a928d878fed2e..0bf21e978cf6b0a70e21d6edd05e0e62aefb73c4 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Generate.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Generate.php
@@ -13,7 +13,7 @@ class Generate extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->isAjax()) {
             $this->_forward('noroute');
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Index.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Index.php
index b27554f7fc6d0493b3277a313762214d9d68972e..8921d7c461b95a51f0cc7e01e1b4f63a2907215e 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Index.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction()->_addBreadcrumb(__('Catalog'), __('Catalog'));
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Cart Price Rules'));
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewAction.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewAction.php
index dc8b49e02e2eb1afe28d7092610db3cf066e9744..324d2d07b6b1d8f7756750335cb8f7189a73ebcd 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewAction.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewActionHtml.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewActionHtml.php
index cf383bfed2d0c28b46e728a2bdc40425458018f3..422ee2a38a63188916004704a0d68616e03b7cec 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewActionHtml.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewActionHtml.php
@@ -13,7 +13,7 @@ class NewActionHtml extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $typeArr = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewConditionHtml.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewConditionHtml.php
index fb0c502a37e1a72734f9d26507ad47ec16e46bb3..48d05829f32744e125a3890a84cce249872c96c8 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewConditionHtml.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/NewConditionHtml.php
@@ -13,7 +13,7 @@ class NewConditionHtml extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quo
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $typeArr = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
diff --git a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Save.php b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Save.php
index 9434b07ed0b07f8bf62ff1bbea906c1278d09976..c0d318d345338d587cdbffba5f38324e9f10ad3d 100644
--- a/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Save.php
+++ b/app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Save.php
@@ -15,7 +15,7 @@ class Save extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->getPostValue()) {
             try {
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
index 78a24106294be4257fb39a2971f621db18458d4a..e3dc4e5a7a813818172376182b062397dc2e8ae1 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
@@ -13,7 +13,7 @@ class Delete extends TermController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
index ad6502e18ad1970a8f56b86cb9f12e15e1445fdb..df5c08a46937224bceb2ed9326cbeabd63f3ccc2 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
@@ -35,7 +35,7 @@ class Edit extends TermController
      * @return \Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = $this->getRequest()->getParam('id');
         $model = $this->_objectManager->create('Magento\Search\Model\Query');
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchCsv.php b/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchCsv.php
index da777ec44e462b0b518cf07c6d7fad9375aefb4d..34fe89f51bee08ee5448e7484a69eef7e618e5d9 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchCsv.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchCsv.php
@@ -35,7 +35,7 @@ class ExportSearchCsv extends TermController
      *
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
         $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchExcel.php b/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchExcel.php
index b287a1f6ea8b2a08d9f02a7ca8e8d55565907d8a..2a89f2fb339aef515877e6f79584cda9d355f5d0 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchExcel.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/ExportSearchExcel.php
@@ -35,7 +35,7 @@ class ExportSearchExcel extends TermController
      *
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
         $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
index 6bce708278a12b5c989e21d609b1554b25f10f41..54e3a4b11c218d4cbf44a95e1eb9b2ca04e8ffd4 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
@@ -12,7 +12,7 @@ class Index extends TermController
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->createPage();
         $resultPage->getConfig()->getTitle()->prepend(__('Search Terms'));
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php b/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
index 97586e38d644edf87d37faccf0a3ba3054f29120..a10b869a24c8432c24724b1564d81090c3ec472f 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
@@ -13,7 +13,7 @@ class MassDelete extends TermController
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $searchIds = $this->getRequest()->getParam('search');
         if (!is_array($searchIds)) {
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php b/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
index 35f6d63e637f9b273c3aa0bf3e96d9a94ff4cb44..f049f45d9a00f864400d18dd5fcdf3c2ff01e2fa 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends TermController
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Report.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Report.php
index 1c512961e58ed98a3147424e1161ba805cfc3b69..f0e9c4dc0984cc8a9c26dad77360a285b0f91f50 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Report.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Report.php
@@ -15,7 +15,7 @@ class Report extends ReportsIndexController
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_eventManager->dispatch('on_view_report', ['report' => 'search']);
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
index 3a31a0555a73910398472114826795af837478fa..e50d11a84dee1602b1b13521050625cbcfc6b0f5 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
@@ -36,7 +36,7 @@ class Save extends TermController
      * @return \Magento\Backend\Model\View\Result\Redirect
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         if ($this->getRequest()->isPost() && $data) {
diff --git a/app/code/Magento/Search/Controller/Ajax/Suggest.php b/app/code/Magento/Search/Controller/Ajax/Suggest.php
index f39c7bf708b45cf48217fc6a2aaf91f0cc31e21a..ca49bc1cceeee99740ce95134ecc726a137ae995 100644
--- a/app/code/Magento/Search/Controller/Ajax/Suggest.php
+++ b/app/code/Magento/Search/Controller/Ajax/Suggest.php
@@ -32,7 +32,7 @@ class Suggest extends Action
     /**
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->getRequest()->getParam('q', false)) {
             /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Search/Controller/Term/Popular.php b/app/code/Magento/Search/Controller/Term/Popular.php
index 687e17f62abe0f89d993893fc12972df59a37200..bcad10e4a1efd9104a7485255fafd811225efe05 100644
--- a/app/code/Magento/Search/Controller/Term/Popular.php
+++ b/app/code/Magento/Search/Controller/Term/Popular.php
@@ -35,7 +35,7 @@ class Popular extends Action
      * @param \Magento\Framework\App\RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $searchTerms = $this->scopeConfig->getValue(
             'catalog/seo/search_terms',
@@ -45,13 +45,13 @@ class Popular extends Action
             $this->_redirect('noroute');
             $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true);
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Ajax/SuggestTest.php b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Ajax/SuggestTest.php
index c8493a32a6bb3850c51538d5062c5e28463411ce..1b097fb97a849564d278ded7d4928153e778926e 100644
--- a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Ajax/SuggestTest.php
+++ b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Ajax/SuggestTest.php
@@ -126,7 +126,7 @@ class SuggestTest extends \PHPUnit_Framework_TestCase
             ->method('setData')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJsonMock, $this->controller->execute());
+        $this->assertSame($this->resultJsonMock, $this->controller->executeInternal());
     }
 
     public function testExecuteEmptyQuery()
@@ -146,6 +146,6 @@ class SuggestTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->controller->execute());
+        $this->assertSame($this->resultRedirectMock, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/MassDeleteTest.php b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/MassDeleteTest.php
index fd0e5f83a2594dfe70688e128dc3c5f329ef0264..8642f19bb477758b5c4e6a9568cd7a0189dbd801 100644
--- a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/MassDeleteTest.php
+++ b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/MassDeleteTest.php
@@ -114,7 +114,7 @@ class MassDeleteTest extends \PHPUnit_Framework_TestCase
             ->with('search/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->controller->execute());
+        $this->assertSame($this->resultRedirectMock, $this->controller->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/SaveTest.php b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/SaveTest.php
index 5197e7d83e4509894c63e4c917794336b6921f66..3d17abf4677808f8d630061605b2c98ecb05fe1b 100644
--- a/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/SaveTest.php
+++ b/app/code/Magento/Search/Test/Unit/Controller/Adminhtml/Term/SaveTest.php
@@ -120,7 +120,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->request->expects($this->at(0))->method('getPostValue')->willReturn($data);
         $this->request->expects($this->at(1))->method('isPost')->willReturn($isPost);
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     /**
@@ -146,7 +146,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())->method('addSuccess');
 
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteLoadQueryQueryIdQueryText()
@@ -164,7 +164,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())->method('addSuccess');
 
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteLoadQueryQueryIdQueryText2()
@@ -183,7 +183,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())->method('addSuccess');
 
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteLoadQueryQueryIdQueryTextException()
@@ -202,7 +202,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())->method('addError');
         $this->session->expects($this->once())->method('setPageData');
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     public function testExecuteException()
@@ -219,7 +219,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())->method('addException');
         $this->session->expects($this->once())->method('setPageData');
         $this->redirect->expects($this->once())->method('setPath')->willReturnSelf();
-        $this->assertSame($this->redirect, $this->controller->execute());
+        $this->assertSame($this->redirect, $this->controller->executeInternal());
     }
 
     /**
diff --git a/app/code/Magento/SendFriend/Controller/Product.php b/app/code/Magento/SendFriend/Controller/Product.php
index 73a227ce32c9ad957b1d0213cc31e6a5bf7c6ce8..0532108e6e7d4044b507b01901b6a1e95c5e7b0b 100644
--- a/app/code/Magento/SendFriend/Controller/Product.php
+++ b/app/code/Magento/SendFriend/Controller/Product.php
@@ -65,7 +65,7 @@ abstract class Product extends \Magento\Framework\App\Action\Action
      * @return \Magento\Framework\App\ResponseInterface
      * @throws \Magento\Framework\Exception\NotFoundException
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         /* @var $helper \Magento\SendFriend\Helper\Data */
         $helper = $this->_objectManager->get('Magento\SendFriend\Helper\Data');
@@ -84,7 +84,7 @@ abstract class Product extends \Magento\Framework\App\Action\Action
                     ->setSendfriendFormData($request->getPostValue());
             }
         }
-        return parent::dispatch($request);
+        return parent::execute($request);
     }
 
     /**
diff --git a/app/code/Magento/SendFriend/Controller/Product/Send.php b/app/code/Magento/SendFriend/Controller/Product/Send.php
index c6d7f3b05ddc0d6d5d38714219262e59c0304127..99e0f911710d23b926ef580f5ca7f482ddad0583 100644
--- a/app/code/Magento/SendFriend/Controller/Product/Send.php
+++ b/app/code/Magento/SendFriend/Controller/Product/Send.php
@@ -45,7 +45,7 @@ class Send extends \Magento\SendFriend\Controller\Product
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $product = $this->_initProduct();
 
diff --git a/app/code/Magento/SendFriend/Controller/Product/Sendmail.php b/app/code/Magento/SendFriend/Controller/Product/Sendmail.php
index 048ce1060d8b3f11927e58a0f78a6495fb441265..aa34eefa5b2a8dbeda1e8b2098b15fb199257e23 100644
--- a/app/code/Magento/SendFriend/Controller/Product/Sendmail.php
+++ b/app/code/Magento/SendFriend/Controller/Product/Sendmail.php
@@ -50,7 +50,7 @@ class Sendmail extends \Magento\SendFriend\Controller\Product
      * @return \Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendTest.php b/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendTest.php
index 090dc47f19b6575d3484fc6ac2625af631ccc3dc..bc981416c84180a53518d47200e1f92f54675bbe 100644
--- a/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendTest.php
+++ b/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendTest.php
@@ -175,7 +175,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with($formData)
             ->willReturnSelf();
 
-        $this->assertEquals($pageMock, $this->model->execute());
+        $this->assertEquals($pageMock, $this->model->executeInternal());
     }
 
     /**
@@ -254,7 +254,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('sendfriend.send')
             ->willReturn(false);
 
-        $this->assertEquals($pageMock, $this->model->execute());
+        $this->assertEquals($pageMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithNoticeAndNoData()
@@ -320,7 +320,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
         $pageMock->expects($this->never())
             ->method('getLayout');
 
-        $this->assertEquals($pageMock, $this->model->execute());
+        $this->assertEquals($pageMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithoutParam()
@@ -345,7 +345,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($forwardMock, $this->model->execute());
+        $this->assertEquals($forwardMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithoutProduct()
@@ -377,7 +377,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($forwardMock, $this->model->execute());
+        $this->assertEquals($forwardMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithNonVisibleProduct()
@@ -418,6 +418,6 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($forwardMock, $this->model->execute());
+        $this->assertEquals($forwardMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendmailTest.php b/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendmailTest.php
index 807cb8adf04ae3d2ba5b94b42e467ff467ed0201..f6df2bc39b04ce5b1f115caa524506617101cb65 100644
--- a/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendmailTest.php
+++ b/app/code/Magento/SendFriend/Test/Unit/Controller/Product/SendmailTest.php
@@ -234,7 +234,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with($productUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -361,7 +361,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with($redirectUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -488,7 +488,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with($redirectUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -615,7 +615,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with($redirectUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -743,7 +743,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with($redirectUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -799,7 +799,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($forwardMock, $this->model->execute());
+        $this->assertEquals($forwardMock, $this->model->executeInternal());
     }
 
     /**
@@ -873,7 +873,7 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($forwardMock, $this->model->execute());
+        $this->assertEquals($forwardMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithoutFormKey()
@@ -901,6 +901,6 @@ class SendmailTest extends \PHPUnit_Framework_TestCase
             ->with('sendfriend/product/send', ['_current' => true])
             ->willReturnSelf();
 
-        $this->assertEquals($redirectMock, $this->model->execute());
+        $this->assertEquals($redirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddComment.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddComment.php
index fb24a2a32580e881bef427175c7c948206ddc323..d012a1d1ecee678c2ded234bca48fca6398d7b52 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddComment.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddComment.php
@@ -58,7 +58,7 @@ class AddComment extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->getRequest()->setParam('shipment_id', $this->getRequest()->getParam('id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddTrack.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddTrack.php
index ea5ab1d967769b557067550cd147bfe5fd561cd8..8a47ed1ddaec5fcc267f3263552096737a1915ef 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddTrack.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddTrack.php
@@ -41,7 +41,7 @@ class AddTrack extends \Magento\Backend\App\Action
      * @return void
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $carrier = $this->getRequest()->getPost('carrier');
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/CreateLabel.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/CreateLabel.php
index facbc5192d7a0b1ffd95a9f42e88df6f5943837e..faac42d270ff22884de8f49b063f3bc74045440b 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/CreateLabel.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/CreateLabel.php
@@ -48,7 +48,7 @@ class CreateLabel extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         try {
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Email.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Email.php
index 6d3bb9a49ed17664b2fb11aa85ee2247b88a9fe5..e0ea65f65fdf8c2b6a251823da8d3f20dfea5440 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Email.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Email.php
@@ -48,7 +48,7 @@ class Email extends \Magento\Backend\App\Action
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/GetShippingItemsGrid.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/GetShippingItemsGrid.php
index 26b2df96cb62754894cb1940655339493cff39dd..3c4dc9f49ee78dc50766c3fb4469b027baf0549e 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/GetShippingItemsGrid.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/GetShippingItemsGrid.php
@@ -41,7 +41,7 @@ class GetShippingItemsGrid extends \Magento\Backend\App\Action
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/NewAction.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/NewAction.php
index a0917b813d1da1d686c10c8a0c95ea8b962bc6e7..06e97644dfde6d72e7fb134b95376e9e59f8a7ae 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/NewAction.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/NewAction.php
@@ -40,7 +40,7 @@ class NewAction extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintLabel.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintLabel.php
index 8cf58bc151fd5a1577b53ce8a62dda3ea65fafa7..fb3889761fa731f7635fca24e7d7b1998db07bf9 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintLabel.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintLabel.php
@@ -58,7 +58,7 @@ class PrintLabel extends \Magento\Backend\App\Action
      *
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintPackage.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintPackage.php
index d931e1e100625bc00e909adce513b18616af610a..db6903544d0f2e639b1944b1b610b681c26702bb 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintPackage.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/PrintPackage.php
@@ -50,7 +50,7 @@ class PrintPackage extends \Magento\Backend\App\Action
      *
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/RemoveTrack.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/RemoveTrack.php
index 4b85739acc03de48fe10caf60f894ee4621617df..7ef4f99eef241583226964c75f76003fe2093d46 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/RemoveTrack.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/RemoveTrack.php
@@ -40,7 +40,7 @@ class RemoveTrack extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $trackId = $this->getRequest()->getParam('track_id');
         /** @var \Magento\Sales\Model\Order\Shipment\Track $track */
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Save.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Save.php
index 0704ac04041c34b05fe18e22d6fb300d0e83221c..3e5e9a3ac2d96359c1bf6d51b702336932f55bc4 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Save.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Save.php
@@ -81,7 +81,7 @@ class Save extends \Magento\Backend\App\Action
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Start.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Start.php
index d4c6015870b2006cfe771c1545a8ac07f48d2093..e551117332303654aa299935cc1acfbe05f5c02f 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Start.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/Start.php
@@ -21,7 +21,7 @@ class Start extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /**
          * Clear old values for shipment qty's
diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/View.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/View.php
index 980486e3bc284602733873bbd845accd56303dd5..ebd8a6b111ea021bcfa909bad448d9a6440499e5 100644
--- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/View.php
+++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/View.php
@@ -56,7 +56,7 @@ class View extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
         $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
diff --git a/app/code/Magento/Shipping/Controller/Tracking/Popup.php b/app/code/Magento/Shipping/Controller/Tracking/Popup.php
index 9ae7590bdb44429914809f6cb387274b3ae22a18..d3fb5dbe349b923dca6ddf7e4fee37a783ce2d76 100644
--- a/app/code/Magento/Shipping/Controller/Tracking/Popup.php
+++ b/app/code/Magento/Shipping/Controller/Tracking/Popup.php
@@ -52,7 +52,7 @@ class Popup extends \Magento\Framework\App\Action\Action
      * @return void
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         $shippingInfoModel = $this->_shippingInfoFactory->create()->loadByHash($this->getRequest()->getParam('hash'));
         $this->_coreRegistry->register('current_shipping_info', $shippingInfoModel);
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddCommentTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddCommentTest.php
index 6a60d69bdfe58eb6a6b84bb625f86082c9108820..9ab7b4844e46ad83706f5c832c0952607ed70ded 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddCommentTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddCommentTest.php
@@ -223,7 +223,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($resultLayoutMock));
         $this->responseMock->expects($this->once())->method('setBody')->with($result);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -261,7 +261,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
             ->willThrowException(new \Magento\Framework\Exception\LocalizedException(__('message')));
         $this->exceptionResponse();
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -278,7 +278,7 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
         $this->requestMock->expects($this->once())->method('getPost')->with('comment')->will($this->returnValue([]));
         $this->exceptionResponse();
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -322,6 +322,6 @@ class AddCommentTest extends \PHPUnit_Framework_TestCase
         $this->shipmentMock->expects($this->once())->method('save')->will($this->throwException(new \Exception()));
         $this->exceptionResponse();
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddTrackTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddTrackTest.php
index 1abeb9d3dacd92695250d7bcdcd1a5dd1b2742b2..d078e5320316016778624da2ab4e22b1ae2ced6c 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddTrackTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddTrackTest.php
@@ -254,6 +254,6 @@ class AddTrackTest extends \PHPUnit_Framework_TestCase
         $this->response->expects($this->once())
             ->method('setBody')
             ->with($html);
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/CreateLabelTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/CreateLabelTest.php
index d96ba6398243760bab56dd6ae20ae6a897c97c23..a8cc7c8a3ac7c092bec8f1c31c014cc50dc5a392 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/CreateLabelTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/CreateLabelTest.php
@@ -179,7 +179,7 @@ class CreateLabelTest extends \PHPUnit_Framework_TestCase
         $this->messageManagerMock->expects($this->once())->method('addSuccess');
         $this->responseMock->expects($this->once())->method('representJson');
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -192,7 +192,7 @@ class CreateLabelTest extends \PHPUnit_Framework_TestCase
             ->willThrowException(new \Magento\Framework\Exception\LocalizedException(__('message')));
         $this->responseMock->expects($this->once())->method('representJson');
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -217,7 +217,7 @@ class CreateLabelTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($logerMock));
         $this->responseMock->expects($this->once())->method('representJson');
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -236,6 +236,6 @@ class CreateLabelTest extends \PHPUnit_Framework_TestCase
             );
         $this->responseMock->expects($this->once())->method('representJson');
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/EmailTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/EmailTest.php
index edcdbd764a1fd2690bbd0e9782ba12aad5fba323..793763607ab90ab6e6191b26e1e0d84ea0c28690 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/EmailTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/EmailTest.php
@@ -235,7 +235,7 @@ class EmailTest extends \PHPUnit_Framework_TestCase
         $arguments = ['shipment_id' => $shipmentId];
         $this->prepareRedirect($path, $arguments, 0);
 
-        $this->shipmentEmail->execute();
+        $this->shipmentEmail->executeInternal();
         $this->assertEquals($this->response, $this->shipmentEmail->getResponse());
     }
 
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/GetShippingItemsGridTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/GetShippingItemsGridTest.php
index c62c9109a26a8bf4d2d17df661db2d132468d3c7..71239d0a1be5b180204e575b401421097ca3547e 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/GetShippingItemsGridTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/GetShippingItemsGridTest.php
@@ -152,6 +152,6 @@ class GetShippingItemsGridTest extends \PHPUnit_Framework_TestCase
             ->method('toHtml')
             ->will($this->returnValue($result));
 
-        $this->assertNotEmpty('result-html', $this->controller->execute());
+        $this->assertNotEmpty('result-html', $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/NewActionTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/NewActionTest.php
index df9cc23823b08bb66a10b2af884c7cbf665608bc..6179fb4eac6515d3e5121662efe1d33d7bcbffe6 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/NewActionTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/NewActionTest.php
@@ -282,6 +282,6 @@ class NewActionTest extends \PHPUnit_Framework_TestCase
             ->with('menu')
             ->will($this->returnValue($menuBlock));
 
-        $this->assertNull($this->newAction->execute());
+        $this->assertNull($this->newAction->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintLabelTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintLabelTest.php
index 6548503fbee20a6995689a4f370b0ecdcab438d2..1effd8c699b4786cbdeaf63bf4bb3cd101040086 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintLabelTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintLabelTest.php
@@ -250,7 +250,7 @@ class PrintLabelTest extends \PHPUnit_Framework_TestCase
             ->method('getShippingLabel')
             ->will($this->returnValue($labelContent));
 
-        $this->assertEquals($this->fileCreate(), $this->controller->execute());
+        $this->assertEquals($this->fileCreate(), $this->controller->executeInternal());
     }
 
     /**
@@ -291,7 +291,7 @@ class PrintLabelTest extends \PHPUnit_Framework_TestCase
             ->method('getObject')
             ->will($this->returnSelf());
 
-        $this->assertEquals($this->fileCreate(), $this->controller->execute());
+        $this->assertEquals($this->fileCreate(), $this->controller->executeInternal());
     }
 
     /**
@@ -337,7 +337,7 @@ class PrintLabelTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(1));
         $this->redirectSection();
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -351,6 +351,6 @@ class PrintLabelTest extends \PHPUnit_Framework_TestCase
         $this->messageManagerMock->expects($this->once())->method('addError')->will($this->returnSelf());
         $this->redirectSection();
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintPackageTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintPackageTest.php
index 4c6b9608d3b2f6f0fe1f6fe7e31e8313ec12d71f..05487808f92b96187749519ea08447bd3cb4db7c 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintPackageTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/PrintPackageTest.php
@@ -193,7 +193,7 @@ class PrintPackageTest extends \PHPUnit_Framework_TestCase
                 'application/pdf'
             )->will($this->returnValue('result-pdf-content'));
 
-        $this->assertEquals('result-pdf-content', $this->controller->execute());
+        $this->assertEquals('result-pdf-content', $this->controller->executeInternal());
     }
 
     /**
@@ -215,6 +215,6 @@ class PrintPackageTest extends \PHPUnit_Framework_TestCase
             ->method('setIsUrlNotice')
             ->with(true);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/RemoveTrackTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/RemoveTrackTest.php
index bb0b1d21202a46c0a6a326e4c83e6893090460a5..37d4634c0da42935113d225b51d92e20ad4a3607 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/RemoveTrackTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/RemoveTrackTest.php
@@ -255,7 +255,7 @@ class RemoveTrackTest extends \PHPUnit_Framework_TestCase
             ->method('setBody')
             ->with($response);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -275,7 +275,7 @@ class RemoveTrackTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($trackId));
         $this->representJson($errors);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -294,7 +294,7 @@ class RemoveTrackTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(null));
         $this->representJson($errors);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 
     /**
@@ -313,6 +313,6 @@ class RemoveTrackTest extends \PHPUnit_Framework_TestCase
             ->will($this->throwException(new \Exception()));
         $this->representJson($errors);
 
-        $this->assertNull($this->controller->execute());
+        $this->assertNull($this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/SaveTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/SaveTest.php
index fad9df01c37444630cce0ecec464f66cd5c1f1a8..954714bbd9aa46a2b0dfa552d7cf1a9b57864fa1 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/SaveTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/SaveTest.php
@@ -249,7 +249,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             $this->shipmentLoader->expects($this->never())
                 ->method('load');
 
-            $this->assertEquals($this->resultRedirect, $this->saveAction->execute());
+            $this->assertEquals($this->resultRedirect, $this->saveAction->executeInternal());
         } else {
             $shipmentId = 1000012;
             $orderId = 10003;
@@ -345,7 +345,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
                 ->will($this->returnValue($orderId));
             $this->prepareRedirect($path, $arguments);
 
-            $this->saveAction->execute();
+            $this->saveAction->executeInternal();
             $this->assertEquals($this->response, $this->saveAction->getResponse());
         }
     }
diff --git a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/ViewTest.php b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/ViewTest.php
index 1dbf636942246e2480453a2ebb16fcbd07d2828b..0f6aad7610e395bce1fe341ea54a64ce6e7f8b72 100644
--- a/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/ViewTest.php
+++ b/app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/ViewTest.php
@@ -187,7 +187,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             )
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultPageMock, $this->controller->execute());
+        $this->assertEquals($this->resultPageMock, $this->controller->executeInternal());
     }
 
     /**
@@ -209,7 +209,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultForwardMock, $this->controller->execute());
+        $this->assertEquals($this->resultForwardMock, $this->controller->executeInternal());
     }
 
     protected function loadShipment($orderId, $shipmentId, $shipment, $tracking, $comeFrom, $returnShipment)
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Delete.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Delete.php
index 70f12719c16cb5a2cd580b07c9915a9faa1d93b7..bdc70c0f8f88db73d27658a7398ad053ecc21843 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Delete.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Delete.php
@@ -16,7 +16,7 @@ class Delete extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Filesystem\Directory\Write $directory */
         $directory = $this->_objectManager->get(
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Edit.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Edit.php
index 47cf66a319c0e9e0c7d78e521fb0f96078dd2dbc..87441bc158596181863f4da4261e1b0f84f7ffb4 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Edit.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Edit.php
@@ -31,7 +31,7 @@ class Edit extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      * @return void
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         // 1. Get ID and create model
         $id = $this->getRequest()->getParam('sitemap_id');
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Generate.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Generate.php
index b5a7e40d5a04209251446b758dad4b73fd01ad43..c162942061d0c7de3d3dd03b8d4d404ab929dbc9 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Generate.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Generate.php
@@ -14,7 +14,7 @@ class Generate extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // init and load sitemap model
         $id = $this->getRequest()->getParam('sitemap_id');
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Index.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Index.php
index 83aeca5ef8f4e75ef5596e44d81f697d10d368b5..11b84772e3297d63f31d7dbeb70cd00ea75c84da 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Index.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Index.php
@@ -15,7 +15,7 @@ class Index extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Site Map'));
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/NewAction.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/NewAction.php
index abfba8929a0bbfb0498a88949b77b49853feb40b..309c00a840dc50a86a9a27cee4835133984f4c2e 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/NewAction.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/NewAction.php
@@ -14,7 +14,7 @@ class NewAction extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // the same form is used to create and edit
         $this->_forward('edit');
diff --git a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Save.php b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Save.php
index 2f28cf9818308b3e176783004e84ad1b91bd8a83..dd96a60dfceefbd9b6b4e5509235ba2f9dc8e74e 100644
--- a/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Save.php
+++ b/app/code/Magento/Sitemap/Controller/Adminhtml/Sitemap/Save.php
@@ -133,7 +133,7 @@ class Save extends \Magento\Sitemap\Controller\Adminhtml\Sitemap
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         // check if data sent
         $data = $this->getRequest()->getPostValue();
diff --git a/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php b/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php
index 5a93ef13583fe43c2dc45ad7e19aa294c46c4094..302d9689e1e4e9845f6c452e3d063a76cab3dd9e 100644
--- a/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php
+++ b/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php
@@ -234,7 +234,7 @@ class Product extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
                 'attribute_id' => $attribute->getId(),
                 'table' => $attribute->getBackend()->getTable(),
                 'is_global' => $attribute->getIsGlobal() ==
-                \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+                \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                 'backend_type' => $attribute->getBackendType(),
             ];
         }
diff --git a/app/code/Magento/Sitemap/Test/Unit/Controller/Adminhtml/Sitemap/SaveTest.php b/app/code/Magento/Sitemap/Test/Unit/Controller/Adminhtml/Sitemap/SaveTest.php
index e067bf2059814fdeadbd0719adda36117dfcdac0..c59e5ff66310db8c5389d875d8312596f50c67da 100644
--- a/app/code/Magento/Sitemap/Test/Unit/Controller/Adminhtml/Sitemap/SaveTest.php
+++ b/app/code/Magento/Sitemap/Test/Unit/Controller/Adminhtml/Sitemap/SaveTest.php
@@ -100,7 +100,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('adminhtml/*/')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->saveController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->saveController->executeInternal());
     }
 
     public function testTryToSaveInvalidDataShouldFailWithErrors()
@@ -166,6 +166,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             ->with('adminhtml/*/edit', ['sitemap_id' => $siteMapId])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->saveController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->saveController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Store/App/Action/Plugin/Context.php b/app/code/Magento/Store/App/Action/Plugin/Context.php
index 6e3e3f4e4f5510df99451c684e5fb0358c2ea0b1..533104a5689e327ae81be37c0841ac4b04637301 100644
--- a/app/code/Magento/Store/App/Action/Plugin/Context.php
+++ b/app/code/Magento/Store/App/Action/Plugin/Context.php
@@ -69,7 +69,7 @@ class Context
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Store/App/Action/Plugin/StoreCheck.php b/app/code/Magento/Store/App/Action/Plugin/StoreCheck.php
index 46fa0bc004a134a55b5c53e48cbc9fff2826d487..8519652f11bd6e06ded121789fd19ca50fdcb413 100644
--- a/app/code/Magento/Store/App/Action/Plugin/StoreCheck.php
+++ b/app/code/Magento/Store/App/Action/Plugin/StoreCheck.php
@@ -31,7 +31,7 @@ class StoreCheck
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      * @throws \Magento\Framework\Exception\State\InitException
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Store/Controller/Store/SwitchAction.php b/app/code/Magento/Store/Controller/Store/SwitchAction.php
index b527b7ad4fe702f5194e115229d0bb4699388ca0..052a8fc25fb2e040d04a6f5c50dad62bb421548a 100644
--- a/app/code/Magento/Store/Controller/Store/SwitchAction.php
+++ b/app/code/Magento/Store/Controller/Store/SwitchAction.php
@@ -68,7 +68,7 @@ class SwitchAction extends Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $storeCode = $this->_request->getParam(
             StoreResolver::PARAM_NAME,
diff --git a/app/code/Magento/Store/Test/Unit/App/Action/Plugin/ContextTest.php b/app/code/Magento/Store/Test/Unit/App/Action/Plugin/ContextTest.php
index e6c679b2dd4d28fa1157b83529ff7a7751012e4a..5614f453839941d57077abcc56cdf72ce3abc162 100644
--- a/app/code/Magento/Store/Test/Unit/App/Action/Plugin/ContextTest.php
+++ b/app/code/Magento/Store/Test/Unit/App/Action/Plugin/ContextTest.php
@@ -185,7 +185,7 @@ class ContextTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(self::CURRENCY_CURRENT_STORE));
     }
 
-    public function testAroundDispatchCurrencyFromSession()
+    public function testAroundExecuteCurrencyFromSession()
     {
         $this->sessionMock->expects($this->any())
             ->method('getCurrencyCode')
@@ -201,11 +201,11 @@ class ContextTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(
             'ExpectedValue',
-            $this->plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 
-    public function testDispatchCurrentStoreCurrency()
+    public function testExecuteCurrentStoreCurrency()
     {
         $this->httpContextMock->expects($this->at(0))
             ->method('setValue')
@@ -217,7 +217,7 @@ class ContextTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(
             'ExpectedValue',
-            $this->plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 }
diff --git a/app/code/Magento/Store/Test/Unit/App/Action/Plugin/StoreCheckTest.php b/app/code/Magento/Store/Test/Unit/App/Action/Plugin/StoreCheckTest.php
index feaca2ad45ebe9972dfdad7d97a37caff6e6eb13..e83d629fb810b55e4288cbde37fff538215557fe 100644
--- a/app/code/Magento/Store/Test/Unit/App/Action/Plugin/StoreCheckTest.php
+++ b/app/code/Magento/Store/Test/Unit/App/Action/Plugin/StoreCheckTest.php
@@ -64,21 +64,21 @@ class StoreCheckTest extends \PHPUnit_Framework_TestCase
      * @expectedException \Magento\Framework\Exception\State\InitException
      * @expectedExceptionMessage Current store is not active.
      */
-    public function testAroundDispatchWhenStoreNotActive()
+    public function testAroundExecuteWhenStoreNotActive()
     {
         $this->_storeMock->expects($this->any())->method('isActive')->will($this->returnValue(false));
         $this->assertEquals(
             'Expected',
-            $this->_plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->_plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 
-    public function testAroundDispatchWhenStoreIsActive()
+    public function testAroundExecuteWhenStoreIsActive()
     {
         $this->_storeMock->expects($this->any())->method('isActive')->will($this->returnValue(true));
         $this->assertEquals(
             'Expected',
-            $this->_plugin->aroundDispatch($this->subjectMock, $this->closureMock, $this->requestMock)
+            $this->_plugin->aroundExecute($this->subjectMock, $this->closureMock, $this->requestMock)
         );
     }
 
diff --git a/app/code/Magento/Swagger/Controller/Index/Index.php b/app/code/Magento/Swagger/Controller/Index/Index.php
index b898836ccf37d59f2b742a7c5b4b14929e2a543d..64cd2888984d1ee98b00256c7bf92f686135096f 100644
--- a/app/code/Magento/Swagger/Controller/Index/Index.php
+++ b/app/code/Magento/Swagger/Controller/Index/Index.php
@@ -35,7 +35,7 @@ class Index extends \Magento\Framework\App\Action\Action
     /**
      * @return \Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->pageConfig->addBodyClass('swagger-section');
         return $this->pageFactory->create();
diff --git a/app/code/Magento/Swagger/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Swagger/Test/Unit/Controller/Index/IndexTest.php
index 0143601c8995d8f4a4899ebe5f7714e1e84d06d0..015064b2642b901adf018a5ab825529815023bec 100644
--- a/app/code/Magento/Swagger/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Swagger/Test/Unit/Controller/Index/IndexTest.php
@@ -8,7 +8,7 @@ namespace Magento\Swagger\Test\Unit\Controller\Index;
 
 class IndexTest extends \PHPUnit_Framework_TestCase
 {
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
 
@@ -22,6 +22,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $pageConfigMock->expects($this->once())->method('addBodyClass')->with('swagger-section');
         $resultPageFactory->expects($this->once())->method('create');
 
+        /** @var \Magento\Swagger\Controller\Index\Index $model */
         $model = $objectManager->getObject(
             'Magento\Swagger\Controller\Index\Index',
             [
@@ -29,6 +30,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
                 'pageFactory' => $resultPageFactory
             ]
         );
-        $model->execute();
+        $model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Swatches/Controller/Adminhtml/Iframe/Show.php b/app/code/Magento/Swatches/Controller/Adminhtml/Iframe/Show.php
index 180a777d1660a5dac87a4a67544d14a524960e62..362e2c7a6c5510b357578943cb3e403bfa423aa5 100644
--- a/app/code/Magento/Swatches/Controller/Adminhtml/Iframe/Show.php
+++ b/app/code/Magento/Swatches/Controller/Adminhtml/Iframe/Show.php
@@ -68,7 +68,7 @@ class Show extends \Magento\Backend\App\Action
      *
      * @return string
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $uploader = $this->uploaderFactory->create(['fileId' => 'datafile']);
diff --git a/app/code/Magento/Swatches/Controller/Adminhtml/Product/Attribute/Plugin/Save.php b/app/code/Magento/Swatches/Controller/Adminhtml/Product/Attribute/Plugin/Save.php
index e9da825c657cecc7837893af2bf8b459efa3858a..1b9259fb0c61054ec55dc0367ff127a34bd3da29 100644
--- a/app/code/Magento/Swatches/Controller/Adminhtml/Product/Attribute/Plugin/Save.php
+++ b/app/code/Magento/Swatches/Controller/Adminhtml/Product/Attribute/Plugin/Save.php
@@ -22,7 +22,7 @@ class Save
      * @return array
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function beforeDispatch(Attribute\Save $subject, RequestInterface $request)
+    public function beforeExecute(Attribute\Save $subject, RequestInterface $request)
     {
         $data = $request->getPostValue();
         if (isset($data['frontend_input'])) {
diff --git a/app/code/Magento/Swatches/Controller/Ajax/Media.php b/app/code/Magento/Swatches/Controller/Ajax/Media.php
index 8827f6f46524ab309dd34255ec1e7d0595e7046b..a487115bbc049499142838fb8276951e29a1575a 100644
--- a/app/code/Magento/Swatches/Controller/Ajax/Media.php
+++ b/app/code/Magento/Swatches/Controller/Ajax/Media.php
@@ -50,7 +50,7 @@ class Media extends \Magento\Framework\App\Action\Action
      *
      * @return string
      */
-    public function execute()
+    public function executeInternal()
     {
         $productMedia = [];
         if ($productId = (int)$this->getRequest()->getParam('product_id')) {
diff --git a/app/code/Magento/Swatches/Setup/InstallData.php b/app/code/Magento/Swatches/Setup/InstallData.php
index ac3a90209547164ca3cf9915e4a2d78dd0b2b7df..a97bd81215e37d5e3ca672b80a6b61090ccbec59 100644
--- a/app/code/Magento/Swatches/Setup/InstallData.php
+++ b/app/code/Magento/Swatches/Setup/InstallData.php
@@ -60,7 +60,7 @@ class InstallData implements InstallDataInterface
                 'frontend' => 'Magento\Catalog\Model\Product\Attribute\Frontend\Image',
                 'required' => false,
                 'sort_order' => 3,
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                 'used_in_product_listing' => true
             ]
         );
diff --git a/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Iframe/ShowTest.php b/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Iframe/ShowTest.php
index 18ec75cb9664fc3efd7c92fa142e76492377947c..72099cb930faaaec9cccc73dd5bda2384ad74e5e 100644
--- a/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Iframe/ShowTest.php
+++ b/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Iframe/ShowTest.php
@@ -96,7 +96,7 @@ class ShowTest extends \PHPUnit_Framework_TestCase
             ->expects($this->once())
             ->method('create')
             ->will($this->throwException(new \Exception));
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     /**
@@ -132,7 +132,7 @@ class ShowTest extends \PHPUnit_Framework_TestCase
 
         $this->responseMock->expects($this->once())->method('setBody')->willReturn(json_encode($expectedResult));
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function dataForExecute()
diff --git a/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Product/Attribute/Plugin/SaveTest.php b/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Product/Attribute/Plugin/SaveTest.php
index c1d0356f66d2dfba9789cda9c598241c9cef4763..ab54e2ceca46f97e657aadf11b78337a2cda1b41 100644
--- a/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Product/Attribute/Plugin/SaveTest.php
+++ b/app/code/Magento/Swatches/Test/Unit/Controller/Adminhtml/Product/Attribute/Plugin/SaveTest.php
@@ -11,7 +11,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     /**
      * @dataProvider dataRequest
      */
-    public function testBeforeDispatch($dataRequest, $runTimes)
+    public function testBeforeExecute($dataRequest, $runTimes)
     {
         $subject = $this->getMock('\Magento\Catalog\Controller\Adminhtml\Product\Attribute\Save', [], [], '', false);
         $request = $this->getMock(
@@ -40,7 +40,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $request->expects($this->once())->method('getPostValue')->willReturn($dataRequest);
         $request->expects($this->exactly($runTimes))->method('setPostValue')->willReturn($this->returnSelf());
 
-        $controller->beforeDispatch($subject, $request);
+        $controller->beforeExecute($subject, $request);
     }
 
     public function dataRequest()
diff --git a/app/code/Magento/Swatches/Test/Unit/Controller/Ajax/MediaTest.php b/app/code/Magento/Swatches/Test/Unit/Controller/Ajax/MediaTest.php
index 6358b2d5ccf11cc6850007db480ecba0b85b9c79..83466261a61417063dbe66ccfd50472a6669d0ae 100644
--- a/app/code/Magento/Swatches/Test/Unit/Controller/Ajax/MediaTest.php
+++ b/app/code/Magento/Swatches/Test/Unit/Controller/Ajax/MediaTest.php
@@ -137,7 +137,7 @@ class MediaTest extends \PHPUnit_Framework_TestCase
             ->with($this->mediaGallery)
             ->will($this->returnSelf());
 
-        $result = $this->controller->execute();
+        $result = $this->controller->executeInternal();
 
         $this->assertInstanceOf('\Magento\Framework\Controller\Result\Json', $result);
     }
@@ -179,7 +179,7 @@ class MediaTest extends \PHPUnit_Framework_TestCase
             ->with($this->mediaGallery)
             ->will($this->returnSelf());
 
-        $result = $this->controller->execute();
+        $result = $this->controller->executeInternal();
 
         $this->assertInstanceOf('\Magento\Framework\Controller\Result\Json', $result);
     }
diff --git a/app/code/Magento/Swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml b/app/code/Magento/Swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml
index 0f911d563f714492a0700f50cdbb1746683f3fbe..c407178e0be985ed528df155a1259b527d584b27 100644
--- a/app/code/Magento/Swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml
+++ b/app/code/Magento/Swatches/view/adminhtml/templates/catalog/product/attribute/js.phtml
@@ -15,248 +15,260 @@ require([
     'Magento_Ui/js/modal/prompt',
     "collapsable",
     "prototype"
-], function(jQuery, rg, alert, prompt){
-
-function toggleApplyVisibility(select) {
-    if ($(select).value == 1) {
-        $(select).next('select').removeClassName('no-display');
-        $(select).next('select').removeClassName('ignore-validate');
-
-    } else {
-        $(select).next('select').addClassName('no-display');
-        $(select).next('select').addClassName('ignore-validate');
-        var options = $(select).next('select').options;
-        for( var i=0; i < options.length; i++) {
-            options[i].selected = false;
-        }
-    }
-}
-function getFrontTab() {
-    if ($('product_attribute_tabs_front')) {
-        return $('product_attribute_tabs_front').up('li');
-    } else {
-        return $('front_fieldset-wrapper');
-    }
-}
+], function (jQuery, rg, alert, prompt) {
+    var frontendInput = $('frontend_input');
 
-function checkOptionsPanelVisibility(){
-    if($('manage-options-panel')){
-        var panel = $('manage-options-panel').up('.fieldset');
+    function toggleApplyVisibility (select) {
+        if ($(select).value == 1) {
+            $(select).next('select').removeClassName('no-display');
+            $(select).next('select').removeClassName('ignore-validate');
 
-        if($('frontend_input') && ($('frontend_input').value=='select' || $('frontend_input').value=='multiselect')){
-            panel.show();
-            rg.get('manage-options-panel', function() {
-                jQuery('#manage-options-panel').trigger('render');
-            });
-        }
-        else {
-            panel.hide();
-        }
-    }
-    if($('swatch-visual-options-panel')){
-        var panel = $('swatch-visual-options-panel').up('.fieldset');
-
-        if($('frontend_input') && $('frontend_input').value=='swatch_visual') {
-            panel.show();
-            rg.get('swatch-visual-options-panel', function() {
-                jQuery('#swatch-visual-options-panel').trigger('render');
-            });
-        }
-        else {
-            panel.hide();
+        } else {
+            $(select).next('select').addClassName('no-display');
+            $(select).next('select').addClassName('ignore-validate');
+            var options = $(select).next('select').options;
+            for( var i=0; i < options.length; i++) {
+                options[i].selected = false;
+            }
         }
     }
-    if($('swatch-text-options-panel')){
-        var panel = $('swatch-text-options-panel').up('.fieldset');
-
-        if($('frontend_input') && $('frontend_input').value=='swatch_text') {
-            panel.show();
-            rg.get('swatch-text-options-panel', function() {
-                jQuery('#swatch-text-options-panel').trigger('render');
-            });
-        }
-        else {
-            panel.hide();
+    function getFrontTab () {
+        var tabsFront = $('product_attribute_tabs_front');
+        if (tabsFront) {
+            return tabsFront.up('li');
+        } else {
+            return $('front_fieldset-wrapper');
         }
     }
-}
-
-function bindAttributeInputType()
-{
-    checkOptionsPanelVisibility();
-    switchDefaultValueField();
-    if($('frontend_input') && ($('frontend_input').value=='select' || $('frontend_input').value=='multiselect' || $('frontend_input').value=='price'
-        || $('frontend_input').value=='swatch_text' || $('frontend_input').value=='swatch_visual')){
-        if($('is_filterable') && !$('is_filterable').getAttribute('readonly')){
-            $('is_filterable').disabled = false;
+
+    function checkOptionsPanelVisibility () {
+        var optionsPanel = $('manage-options-panel'),
+            visualOptionsPanel = $('swatch-visual-options-panel'),
+            textOptionsPanel = $('swatch-text-options-panel');
+        if (optionsPanel) {
+            var panel = optionsPanel.up('.fieldset');
+
+            if (frontendInput && (frontendInput.value=='select' || frontendInput.value=='multiselect')) {
+                panel.show();
+                rg.get('manage-options-panel', function () {
+                    jQuery('#manage-options-panel').trigger('render');
+                });
+            } else {
+                panel.hide();
+            }
         }
-        if($('is_filterable_in_search') && !$('is_filterable_in_search').getAttribute('readonly')){
-            $('is_filterable_in_search').disabled = false;
+        if (visualOptionsPanel) {
+            var visualPanel = visualOptionsPanel.up('.fieldset');
+
+            if (frontendInput && frontendInput.value=='swatch_visual') {
+                visualPanel.show();
+                rg.get('swatch-visual-options-panel', function () {
+                    jQuery('#swatch-visual-options-panel').trigger('render');
+                });
+            } else {
+                visualPanel.hide();
+            }
         }
-        if($('backend_type') && $('backend_type').options){
-            for(var i=0;i<$('backend_type').options.length;i++){
-                if($('backend_type').options[i].value=='int') $('backend_type').selectedIndex = i;
+        if (textOptionsPanel) {
+            var textPanel = textOptionsPanel.up('.fieldset');
+
+            if (frontendInput && frontendInput.value=='swatch_text') {
+                textPanel.show();
+                rg.get('swatch-text-options-panel', function () {
+                    jQuery('#swatch-text-options-panel').trigger('render');
+                });
+            } else {
+                textPanel.hide();
             }
         }
     }
-    else {
-        if($('is_filterable')){
-            $('is_filterable').selectedIndex=0;
-            $('is_filterable').disabled = true;
-        }
-        if($('is_filterable_in_search')){
-            $('is_filterable_in_search').disabled = true;
+
+    function bindAttributeInputType () {
+        var isFilterable = $('is_filterable'),
+            isFilterableInSearch = $('is_filterable_in_search'),
+            backendType = $('backend_type'),
+            usedForSortBy = $('used_for_sort_by'),
+            frontendClass = $('frontend_class'),
+            selectFields = ['select', 'multiselect', 'price', 'swatch_text', 'swatch_visual'];
+
+        checkOptionsPanelVisibility();
+        switchDefaultValueField();
+        if (frontendInput
+            && jQuery.inArray(frontendInput.value, selectFields) >= 0
+        ) {
+            if (isFilterable && !isFilterable.getAttribute('readonly')) {
+                isFilterable.disabled = false;
+            }
+            if (isFilterableInSearch && !isFilterableInSearch.getAttribute('readonly')) {
+                isFilterableInSearch.disabled = false;
+            }
+            if (backendType && backendType.options) {
+                for (var i=0; i<backendType.options.length; i++) {
+                    if (backendType.options[i].value=='int') {
+                        backendType.selectedIndex = i;
+                    }
+                }
+            }
+        } else {
+            if (isFilterable) {
+                isFilterable.selectedIndex=0;
+                isFilterable.disabled = true;
+            }
+            if (isFilterableInSearch) {
+                isFilterableInSearch.disabled = true;
+            }
         }
-    }
 
-    if ($('frontend_input') && !$('frontend_input').disabled
-        && ($('frontend_input').value=='swatch_text' || $('frontend_input').value=='swatch_visual')
-    ) {
-        $('used_in_product_listing').value = 1;
-        $('is_visible_on_front').value = 1;
-        $('update_product_preview_image').value = 1;
-    }
+        if (frontendInput && !frontendInput.disabled
+            && (frontendInput.value=='swatch_text' || frontendInput.value=='swatch_visual')
+        ) {
+            $('used_in_product_listing').value = 1;
+            $('is_visible_on_front').value = 1;
+            $('update_product_preview_image').value = 1;
+        }
 
-    if ($('frontend_input') && ($('frontend_input').value=='multiselect'
-        || $('frontend_input').value=='gallery'
-        || $('frontend_input').value=='textarea')) {
-        if ($('used_for_sort_by')) {
-            $('used_for_sort_by').disabled = true;
+        if (frontendInput && (frontendInput.value=='multiselect'
+            || frontendInput.value=='gallery'
+            || frontendInput.value=='textarea')) {
+            if (usedForSortBy) {
+                usedForSortBy.disabled = true;
+            }
+        } else {
+            if (usedForSortBy && !usedForSortBy.getAttribute('readonly')) {
+                usedForSortBy.disabled = false;
+            }
         }
-    }
-    else {
-        if ($('used_for_sort_by') && !$('used_for_sort_by').getAttribute('readonly')) {
-            $('used_for_sort_by').disabled = false;
+
+        if (jQuery('#frontend_input').val() == 'swatch_text') {
+            jQuery('.swatch-text-field-0').addClass('required-option');
+        } else {
+            jQuery('.swatch-text-field-0').removeClass('required-option');
         }
-    }
 
-    if (jQuery('#frontend_input').val() == 'swatch_text') {
-        jQuery('.swatch-text-field-0').addClass('required-option');
-    } else {
-        jQuery('.swatch-text-field-0').removeClass('required-option');
-    }
+        setRowVisibility('is_wysiwyg_enabled', false);
+        setRowVisibility('is_html_allowed_on_front', false);
 
-    setRowVisibility('is_wysiwyg_enabled', false);
-    setRowVisibility('is_html_allowed_on_front', false);
+        switch (frontendInput.value) {
+            case 'textarea':
+                setRowVisibility('is_wysiwyg_enabled', true);
+                if ($('is_wysiwyg_enabled').value == '0') {
+                    setRowVisibility('is_html_allowed_on_front', true);
+                    $('is_html_allowed_on_front').disabled = false;
+                }
+                frontendClass.value = '';
+                frontendClass.disabled = true;
+                break;
+            case 'text':
+                setRowVisibility('is_html_allowed_on_front', true);
+                $('is_html_allowed_on_front').disabled = false;
 
-    switch ($('frontend_input').value) {
-        case 'textarea':
-            setRowVisibility('is_wysiwyg_enabled', true);
-            if($('is_wysiwyg_enabled').value == '0'){
+                if (!frontendClass.getAttribute('readonly')) {
+                    frontendClass.disabled = false;
+                }
+                break;
+            case 'select':
+            case 'multiselect':
                 setRowVisibility('is_html_allowed_on_front', true);
                 $('is_html_allowed_on_front').disabled = false;
-            }
-            $('frontend_class').value = '';
-            $('frontend_class').disabled = true;
-            break;
-        case 'text':
-            setRowVisibility('is_html_allowed_on_front', true);
-            $('is_html_allowed_on_front').disabled = false;
+                frontendClass.value = '';
+                frontendClass.disabled = true;
+                break;
+            default:
+                frontendClass.value = '';
+                frontendClass.disabled = true;
+        }
 
-            if (!$('frontend_class').getAttribute('readonly')) {
-                $('frontend_class').disabled = false;
-            }
-            break;
-        case 'select':
-        case 'multiselect':
-            setRowVisibility('is_html_allowed_on_front', true);
-            $('is_html_allowed_on_front').disabled = false;
-            $('frontend_class').value = '';
-            $('frontend_class').disabled = true;
-            break;
-        default:
-            $('frontend_class').value = '';
-            $('frontend_class').disabled = true;
+        switchIsFilterable();
     }
 
-    switchIsFilterable();
-}
-
-function switchIsFilterable()
-{
-    if ($('is_filterable')) {
-        if ($('is_filterable').selectedIndex == 0) {
-            $('position').disabled = true;
-        } else {
-            if (!$('position').getAttribute('readonly')){
-                $('position').disabled = false;
+    function switchIsFilterable () {
+        var isFilterable = $('is_filterable'),
+            position = $('position');
+        if (isFilterable) {
+            if (isFilterable.selectedIndex == 0) {
+                position.disabled = true;
+            } else {
+                if (!position.getAttribute('readonly')) {
+                    position.disabled = false;
+                }
             }
         }
     }
-}
-
-function switchDefaultValueField()
-{
-    if (!$('frontend_input')) {
-        return;
-    }
 
-    var currentValue = $('frontend_input').value;
-
-    var defaultValueTextVisibility = false;
-    var defaultValueTextareaVisibility = false;
-    var defaultValueDateVisibility = false;
-    var defaultValueYesnoVisibility = false;
-    var scopeVisibility = true;
-
-    /* swatch attributes */
-    var useProductImageForSwatch = false;
-    var defaultValueUpdateImage = false;
-
-
-    switch (currentValue) {
-        case 'select':
-            optionDefaultInputType = 'radio';
-            break;
-
-        case 'multiselect':
-            optionDefaultInputType = 'checkbox';
-            break;
-
-        case 'date':
-            defaultValueDateVisibility = true;
-            break;
+    function switchDefaultValueField () {
+        if (!frontendInput) {
+            return;
+        }
 
-        case 'boolean':
-            defaultValueYesnoVisibility = true;
-            break;
+        var currentValue = frontendInput.value;
+
+        var defaultValueTextVisibility = false;
+        var defaultValueTextareaVisibility = false;
+        var defaultValueDateVisibility = false;
+        var defaultValueYesnoVisibility = false;
+        var scopeVisibility = true;
+
+        /* swatch attributes */
+        var useProductImageForSwatch = false;
+        var defaultValueUpdateImage = false;
+
+        var optionDefaultInputType = '';
+
+
+        switch (currentValue) {
+            case 'select':
+                optionDefaultInputType = 'radio';
+                break;
+
+            case 'multiselect':
+                optionDefaultInputType = 'checkbox';
+                break;
+
+            case 'date':
+                defaultValueDateVisibility = true;
+                break;
+
+            case 'boolean':
+                defaultValueYesnoVisibility = true;
+                break;
+
+            case 'textarea':
+                defaultValueTextareaVisibility = true;
+                break;
+
+            case 'media_image':
+                defaultValueTextVisibility = false;
+                break;
+            case 'price':
+                scopeVisibility = false;
+                break;
+            case 'swatch_visual':
+                useProductImageForSwatch = true;
+                defaultValueUpdateImage = true;
+                defaultValueTextVisibility = false;
+                break;
+            case 'swatch_text':
+                useProductImageForSwatch = false;
+                defaultValueUpdateImage = true;
+                defaultValueTextVisibility = false;
+                break;
+            default:
+                defaultValueTextVisibility = true;
+                break;
+        }
 
-        case 'textarea':
-            defaultValueTextareaVisibility = true;
-            break;
+        switch (currentValue) {
+            case 'media_image':
+                getFrontTab().hide();
 
-        case 'media_image':
-            defaultValueTextVisibility = false;
+                setRowVisibility('is_required', false);
+                setRowVisibility('is_unique', false);
+                setRowVisibility('frontend_class', false);
             break;
-        case 'price':
-            scopeVisibility = false;
-        case 'swatch_visual':
-            useProductImageForSwatch = true;
-            defaultValueUpdateImage = true;
-            defaultValueTextVisibility = false;
-            break;
-        case 'swatch_text':
-            useProductImageForSwatch = false;
-            defaultValueUpdateImage = true;
-            defaultValueTextVisibility = false;
-            break;
-        default:
-            defaultValueTextVisibility = true;
-            break;
-    }
-
-    switch (currentValue) {
-        case 'media_image':
-            getFrontTab().hide();
-
-            setRowVisibility('is_required', false);
-            setRowVisibility('is_unique', false);
-            setRowVisibility('frontend_class', false);
-        break;
-
-        <?php foreach ($this->helper('Magento\Catalog\Helper\Data')->getAttributeHiddenFields() as $type => $fields): ?>
+        <?php $hiddenFields = $block->helper('Magento\Catalog\Helper\Data')->getAttributeHiddenFields() ?>
+        <?php foreach ($hiddenFields as $type => $fields): ?>
         <?php if (in_array($type, array('swatch_visual', 'swatch_text'))) continue ?>
-            case '<?php /* @escapeNotVerified */ echo $type; ?>':
+            case '<?php echo $block->escapeHtml($type); ?>':
                 <?php foreach ($fields as $one): ?>
                     <?php if ($one == '_front_fieldset'): ?>
                         getFrontTab().hide();
@@ -268,145 +280,141 @@ function switchDefaultValueField()
                     <?php elseif ($one == '_scope'): ?>
                         scopeVisibility = false;
                     <?php else: ?>
-                        setRowVisibility('<?php /* @escapeNotVerified */ echo $one; ?>', false);
+                        setRowVisibility('<?php echo $block->escapeHtml($one); ?>', false);
                     <?php endif; ?>
                 <?php endforeach; ?>
             break;
         <?php endforeach; ?>
 
-        default:
-            getFrontTab().show();
+            default:
+                getFrontTab().show();
 
-            showDefaultRows();
-        break;
-    }
+                showDefaultRows();
+            break;
+        }
 
-    setRowVisibility('default_value_text', defaultValueTextVisibility);
-    setRowVisibility('default_value_textarea', defaultValueTextareaVisibility);
-    setRowVisibility('default_value_date', defaultValueDateVisibility);
-    setRowVisibility('default_value_yesno', defaultValueYesnoVisibility);
-    setRowVisibility('is_global', scopeVisibility);
+        setRowVisibility('default_value_text', defaultValueTextVisibility);
+        setRowVisibility('default_value_textarea', defaultValueTextareaVisibility);
+        setRowVisibility('default_value_date', defaultValueDateVisibility);
+        setRowVisibility('default_value_yesno', defaultValueYesnoVisibility);
+        setRowVisibility('is_global', scopeVisibility);
 
-    /* swatch attributes */
-    setRowVisibility('use_product_image_for_swatch', useProductImageForSwatch);
-    setRowVisibility('update_product_preview_image', defaultValueUpdateImage);
+        /* swatch attributes */
+        setRowVisibility('use_product_image_for_swatch', useProductImageForSwatch);
+        setRowVisibility('update_product_preview_image', defaultValueUpdateImage);
 
-    var elems = document.getElementsByName('default[]');
-    for (var i = 0; i < elems.length; i++) {
-        elems[i].type = optionDefaultInputType;
-    }
-}
-
-function showDefaultRows()
-{
-    setRowVisibility('is_required', true);
-    setRowVisibility('is_unique', true);
-    setRowVisibility('frontend_class', true);
-}
-
-function setRowVisibility(id, isVisible)
-{
-    if ($(id)) {
-        var td = $(id).parentNode;
-        var tr = $(td.parentNode);
-
-        if (isVisible) {
-            tr.show();
-        } else {
-            tr.blur();
-            tr.hide();
+        var elems = document.getElementsByName('default[]');
+        for (var i = 0; i < elems.length; i++) {
+            elems[i].type = optionDefaultInputType;
         }
     }
-}
 
+    function showDefaultRows () {
+        setRowVisibility('is_required', true);
+        setRowVisibility('is_unique', true);
+        setRowVisibility('frontend_class', true);
+    }
 
-function updateRequriedOptions()
-{
-    if ($F('frontend_input')=='select' && $F('is_required')==1) {
-        $('option-count-check').addClassName('required-options-count');
-    } else {
-        $('option-count-check').removeClassName('required-options-count');
+    function setRowVisibility (id, isVisible) {
+        if ($(id)) {
+            var td = $(id).parentNode;
+            var tr = $(td.parentNode);
+
+            if (isVisible) {
+                tr.show();
+            } else {
+                tr.blur();
+                tr.hide();
+            }
+        }
     }
-}
 
-function saveAttributeInNewSet(promptMessage)
-{
-    var newAttributeSetName;
 
-    prompt({
-        content: promptMessage,
-        actions: {
-            confirm: function(val) {
-                newAttributeSetName = val;
+    function updateRequriedOptions () {
+        if ($F('frontend_input')=='select' && $F('is_required')==1) {
+            $('option-count-check').addClassName('required-options-count');
+        } else {
+            $('option-count-check').removeClassName('required-options-count');
+        }
+    }
 
-                if (!newAttributeSetName) {
-                    return;
-                }
+    function saveAttributeInNewSet (promptMessage) {
+        var newAttributeSetName;
 
-                var rules = ['required-entry', 'validate-no-html-tags'];
-                for (var i = 0; i < rules.length; i++) {
-                    if (!jQuery.validator.methods[rules[i]](newAttributeSetName)) {
-                        alert({
-                            content: jQuery.validator.messages[rules[i]]
-                        });
+        prompt({
+            content: promptMessage,
+            actions: {
+                confirm: function (val) {
+                    newAttributeSetName = val;
 
+                    if (!newAttributeSetName) {
                         return;
                     }
-                }
 
-                var newAttributeSetNameInputId = 'new_attribute_set_name';
-
-                if ($(newAttributeSetNameInputId)) {
-                    $(newAttributeSetNameInputId).value = newAttributeSetName;
-                } else {
-                    $('edit_form').insert({
-                        top: new Element('input', {
-                            type: 'hidden',
-                            id: newAttributeSetNameInputId,
-                            name: 'new_attribute_set_name',
-                            value: newAttributeSetName
-                        })
-                    });
+                    var rules = ['required-entry', 'validate-no-html-tags'];
+                    for (var i = 0; i < rules.length; i++) {
+                        if (!jQuery.validator.methods[rules[i]](newAttributeSetName)) {
+                            alert({
+                                content: jQuery.validator.messages[rules[i]]
+                            });
+
+                            return;
+                        }
+                    }
+
+                    var newAttributeSetNameInputId = 'new_attribute_set_name';
+
+                    if ($(newAttributeSetNameInputId)) {
+                        $(newAttributeSetNameInputId).value = newAttributeSetName;
+                    } else {
+                        $('edit_form').insert({
+                            top: new Element('input', {
+                                type: 'hidden',
+                                id: newAttributeSetNameInputId,
+                                name: 'new_attribute_set_name',
+                                value: newAttributeSetName
+                            })
+                        });
+                    }
+                    // Temporary solution will replaced after refactoring of attributes functionality
+                    jQuery('#edit_form').triggerHandler('save');
                 }
-                // Temporary solution will replaced after refactoring of attributes functionality
-                jQuery('#edit_form').triggerHandler('save');
             }
-        }
+        });
+    }
+
+    if (frontendInput) {
+        Event.observe(frontendInput, 'change', updateRequriedOptions);
+        Event.observe(frontendInput, 'change', bindAttributeInputType);
+    }
+
+    if ($('is_filterable')) {
+        Event.observe($('is_filterable'), 'change', switchIsFilterable);
+    }
+
+    if ($('is_required')) {
+        Event.observe($('is_required'), 'change', updateRequriedOptions);
+    }
+
+    jQuery(function ($) {
+        bindAttributeInputType();
+        // @todo: refactor collapsable component
+        $('.attribute-popup .collapse, [data-role="advanced_fieldset-content"]')
+            .collapsable()
+            .collapse('hide');
     });
-}
-
-if($('frontend_input')){
-    Event.observe($('frontend_input'), 'change', updateRequriedOptions);
-    Event.observe($('frontend_input'), 'change', bindAttributeInputType);
-}
-
-if ($('is_filterable')) {
-    Event.observe($('is_filterable'), 'change', switchIsFilterable);
-}
-
-if ($('is_required')) {
-    Event.observe($('is_required'), 'change', updateRequriedOptions);
-}
-
-jQuery(function($) {
-    bindAttributeInputType();
-    // @todo: refactor collapsable component
-    $('.attribute-popup .collapse, [data-role="advanced_fieldset-content"]')
-        .collapsable()
-        .collapse('hide');
-});
 
-window.saveAttributeInNewSet = saveAttributeInNewSet;
-window.updateRequriedOptions = updateRequriedOptions;
-window.setRowVisibility = setRowVisibility;
-window.showDefaultRows = showDefaultRows;
-window.switchDefaultValueField = switchDefaultValueField;
-window.switchIsFilterable = switchIsFilterable;
-window.switchIsFilterable = switchIsFilterable;
-window.bindAttributeInputType = bindAttributeInputType;
-window.checkOptionsPanelVisibility = checkOptionsPanelVisibility;
-window.getFrontTab = getFrontTab;
-window.toggleApplyVisibility = toggleApplyVisibility;
+    window.saveAttributeInNewSet = saveAttributeInNewSet;
+    window.updateRequriedOptions = updateRequriedOptions;
+    window.setRowVisibility = setRowVisibility;
+    window.showDefaultRows = showDefaultRows;
+    window.switchDefaultValueField = switchDefaultValueField;
+    window.switchIsFilterable = switchIsFilterable;
+    window.switchIsFilterable = switchIsFilterable;
+    window.bindAttributeInputType = bindAttributeInputType;
+    window.checkOptionsPanelVisibility = checkOptionsPanelVisibility;
+    window.getFrontTab = getFrontTab;
+    window.toggleApplyVisibility = toggleApplyVisibility;
 
 });
 </script>
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php
index 2fe8a5b1572e38dcf05676653a2fd8d633ca38ed..a7f555a1706538685d07788172a2f427f4e6b39c 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php
@@ -15,7 +15,7 @@ class Add extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_coreRegistry->register(
             RegistryConstants::CURRENT_TAX_RATE_FORM_DATA,
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php
index 5f58a4147aceb7bc992061f49bd8bc3f95e55dae..f8a99e226f73ad42b60a9c33fdc33f8e589bd183 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php
@@ -15,7 +15,7 @@ class AjaxDelete extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $rateId = (int)$this->getRequest()->getParam('tax_calculation_rate_id');
         try {
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxLoad.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxLoad.php
index 673ea280bab25ed504a240bfcddb25d1e2cbadfe..e824a8185ac1207c8d432f1c9317fddccbde8ee6 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxLoad.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxLoad.php
@@ -16,7 +16,7 @@ class AjaxLoad extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $rateId = (int)$this->getRequest()->getParam('id');
         try {
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php
index 8dd31f2ca5b337de41af933986a6a88f11330737..635d116a31d4c7bfcc2c9d600bd6780c50c9f23d 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php
@@ -15,7 +15,7 @@ class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $rateData = $this->_processRateData($this->getRequest()->getPostValue());
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php
index c11f420db32e3f972a9f12a340e929520433fb6c..c6794eaf0ab7e3632d48be666dee4efab0fc51af 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php
@@ -16,7 +16,7 @@ class Delete extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($rateId = $this->getRequest()->getParam('rate')) {
             /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php
index e13ae2293e6c22bb6ec6e3493b0d6798864decd9..a5e2fbf1a05a855a98709afbf5c1f020b483781c 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php
@@ -17,7 +17,7 @@ class Edit extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $rateId = (int)$this->getRequest()->getParam('rate');
         $this->_coreRegistry->register(RegistryConstants::CURRENT_TAX_RATE_ID, $rateId);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php
index d38d6ddd9af1407a69f268cb085eafcf9d84ad77..145341f4f2035d3cc00e6cb8d11f1054aacab0ba 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->initResultPage();
         $resultPage->addBreadcrumb(__('Manage Tax Rates'), __('Manage Tax Rates'));
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php
index 442940fdfc5eab10131966b7e5814f76080cd553..85cf89a9e8570928e03b1f14f89adf1b38b1e2b5 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php
@@ -16,7 +16,7 @@ class Save extends \Magento\Tax\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php
index 9d862df7d5a79494a4f41ebdb68f0b5364645717..7dd9f40e4df3b9a907a2edee1a553017695fe142 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Tax\Controller\Adminhtml\Rule
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php
index ebbabcf833aed5f6eea84d58dfd91ffa35514a08..89b49f16feb43d0477f619b32dcffa857c6c0b82 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Tax\Controller\Adminhtml\Rule
     /**
      * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $taxRuleId = $this->getRequest()->getParam('rule');
         $this->_coreRegistry->register('tax_rule_id', $taxRuleId);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
index b3ea7586cf90bd507139b000ea52e8f3ac414735..e3aab07b459f0f037e566cf13b20bc8bea98911f 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
@@ -12,7 +12,7 @@ class Index extends \Magento\Tax\Controller\Adminhtml\Rule
     /**
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->initResultPage();
         $resultPage->getConfig()->getTitle()->prepend(__('Tax Rules'));
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php
index 79f4fa7d752e72dafcb21e342d5aa95dd3af57fd..74bd5b1c57ab505c752e012788c79581588aaff3 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Tax\Controller\Adminhtml\Rule
     /**
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php
index 27e75cf819b06027bbe18007d4bea1a53ed06efc..d050cbd6773c1c2aae4cef430e01d0065200aac2 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Tax\Controller\Adminhtml\Rule
     /**
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php
index 8e5e003872d7d6e345fd05739f1e3d044c3af0eb..37edd84177d6abc71bb33560e479be12ad5dc6e6 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php
@@ -15,7 +15,7 @@ class AjaxDelete extends \Magento\Tax\Controller\Adminhtml\Tax
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $classId = (int)$this->getRequest()->getParam('class_id');
         try {
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php
index 68527988b903bc916989bc15ef5be97c269cd597..92647155fbedbba60ca444bce6eba58573a5ff1f 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php
@@ -15,7 +15,7 @@ class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Tax
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $taxClassId = (int)$this->getRequest()->getPost('class_id') ?: null;
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php
index 89ab88a5965a07d63ce3bdb7374604fe6e3d78cc..18860dd4891d698712df356f4c958e3de46eaa84 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php
@@ -37,7 +37,7 @@ class IgnoreTaxNotification extends \Magento\Tax\Controller\Adminhtml\Tax
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $section = $this->getRequest()->getParam('section');
         if ($section) {
diff --git a/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php b/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php
index 70c1e60007141d675030aad37c53357494fe7086..408cb5aad84f274d64b4753db76d6cd1b6b7298b 100644
--- a/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php
+++ b/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php
@@ -79,7 +79,7 @@ class ContextPlugin
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Tax/Model/Config/Notification.php b/app/code/Magento/Tax/Model/Config/Notification.php
index 1373b4659841916f193f176add390e101e4cb395..7187eb134b1a646f5f079d58232e10203113ec69 100644
--- a/app/code/Magento/Tax/Model/Config/Notification.php
+++ b/app/code/Magento/Tax/Model/Config/Notification.php
@@ -21,6 +21,7 @@ class Notification extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Config\Model\ResourceModel\Config $resourceConfig
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -30,19 +31,20 @@ class Notification extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Config\Model\ResourceModel\Config $resourceConfig,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->resourceConfig = $resourceConfig;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Prepare and store cron settings after save
      *
-     * @return \Magento\Tax\Model\Config\Notification
+     * @return $this
      */
     public function afterSave()
     {
@@ -50,7 +52,7 @@ class Notification extends \Magento\Framework\App\Config\Value
             $this->_resetNotificationFlag(\Magento\Tax\Model\Config::XML_PATH_TAX_NOTIFICATION_IGNORE_DISCOUNT);
             $this->_resetNotificationFlag(\Magento\Tax\Model\Config::XML_PATH_TAX_NOTIFICATION_IGNORE_PRICE_DISPLAY);
         }
-        return parent::afterSave($this);
+        return parent::afterSave();
     }
 
     /**
diff --git a/app/code/Magento/Tax/Model/Config/TaxClass.php b/app/code/Magento/Tax/Model/Config/TaxClass.php
index 95b643be212841013fcd1e1620e8c5ed6ee138b5..c2993332e4db0b8e044d684c6a0dbfd6c637fdaa 100644
--- a/app/code/Magento/Tax/Model/Config/TaxClass.php
+++ b/app/code/Magento/Tax/Model/Config/TaxClass.php
@@ -24,6 +24,7 @@ class TaxClass extends \Magento\Framework\App\Config\Value
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Config\Model\ResourceModel\Config $resourceConfig
      * @param \Magento\Eav\Model\Entity\AttributeFactory $attributeFactory
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
@@ -34,6 +35,7 @@ class TaxClass extends \Magento\Framework\App\Config\Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Config\Model\ResourceModel\Config $resourceConfig,
         \Magento\Eav\Model\Entity\AttributeFactory $attributeFactory,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
@@ -42,15 +44,15 @@ class TaxClass extends \Magento\Framework\App\Config\Value
     ) {
         $this->resourceConfig = $resourceConfig;
         $this->attributeFactory = $attributeFactory;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
      * Update the default product tax class
      *
-     * @return \Magento\Tax\Model\Config\TaxClass
+     * @return $this
      */
-    protected function _afterSave()
+    public function afterSave()
     {
         $attributeCode = "tax_class_id";
 
@@ -62,6 +64,6 @@ class TaxClass extends \Magento\Framework\App\Config\Value
         $attribute->setData("default_value", $this->getData('value'));
         $attribute->save();
 
-        return parent::_afterSave($this);
+        return parent::afterSave();
     }
 }
diff --git a/app/code/Magento/Tax/Setup/InstallData.php b/app/code/Magento/Tax/Setup/InstallData.php
index 75f636abb3ee2fd40e7294499bc6543d6c1d25b8..2400deda8bd4069302733f8682880fa72fa5f3e6 100644
--- a/app/code/Magento/Tax/Setup/InstallData.php
+++ b/app/code/Magento/Tax/Setup/InstallData.php
@@ -56,7 +56,7 @@ class InstallData implements InstallDataInterface
                 'input' => 'select',
                 'class' => '',
                 'source' => 'Magento\Tax\Model\TaxClass\Source\Product',
-                'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
                 'visible' => true,
                 'required' => false,
                 'user_defined' => false,
diff --git a/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php b/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php
index f8ab3eb71e9bc3ecb28705641ce93a335dd997d1..7fc90aa1d649b8d6ba826164b0d2fff9d8536ccb 100644
--- a/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php
+++ b/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php
@@ -111,9 +111,9 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
      * @param bool $cache
      * @param bool $taxEnabled
      * @param bool $loggedIn
-     * @dataProvider dataProviderAroundDispatch
+     * @dataProvider dataProviderAroundExecute
      */
-    public function testAroundDispatch($cache, $taxEnabled, $loggedIn)
+    public function testAroundExecute($cache, $taxEnabled, $loggedIn)
     {
         $this->customerSessionMock->expects($this->any())
             ->method('isLoggedIn')
@@ -164,14 +164,14 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
             $proceed = function ($request) use ($expectedResult) {
                 return $expectedResult;
             };
-            $this->contextPlugin->aroundDispatch($action, $proceed, $request);
+            $this->contextPlugin->aroundExecute($action, $proceed, $request);
         }
     }
 
     /**
      * @return array
      */
-    public function dataProviderAroundDispatch()
+    public function dataProviderAroundExecute()
     {
         return [
             [false, false, false],
diff --git a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Rate/AjaxLoadTest.php b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Rate/AjaxLoadTest.php
index 6373e5aa514bf11a2d6174c78e64489bd7d558b0..ffc1521938206ca8d57bc80762c0799614ffe7c1 100644
--- a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Rate/AjaxLoadTest.php
+++ b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Rate/AjaxLoadTest.php
@@ -52,7 +52,7 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
     /**
      * Executes the controller action and asserts non exception logic
      */
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $taxRateId=1;
         $returnArray=[
@@ -120,7 +120,8 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_JSON)
             ->willReturn($jsonObject);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad $controller */
+        $controller = $objectManager->getObject(
             'Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad',
             [
                 'taxRateRepository' => $this->taxRateRepository,
@@ -132,14 +133,14 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
 
 
         // No exception thrown
-        $this->assertSame($jsonObject, $notification->execute());
+        $this->assertSame($jsonObject, $controller->executeInternal());
 
     }
 
     /**
      * Check if validation throws a localized catched exception in case of incorrect id
      */
-    public function testExecuteLocalizedException()
+    public function testExecuteInternalLocalizedException()
     {
         $taxRateId=999;
         $exceptionMessage='No such entity with taxRateId = '.$taxRateId;
@@ -173,7 +174,8 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_JSON)
             ->willReturn($jsonObject);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad $controller */
+        $controller = $objectManager->getObject(
             'Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad',
             [
                 'taxRateRepository' => $this->taxRateRepository,
@@ -183,13 +185,13 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
         );
 
         //exception thrown with catch
-        $this->assertSame($jsonObject, $notification->execute());
+        $this->assertSame($jsonObject, $controller->executeInternal());
     }
 
     /**
      * Check if validation throws a localized catched exception in case of incorrect id
      */
-    public function testExecuteException()
+    public function testExecuteInternalException()
     {
         $taxRateId=999;
         $exceptionMessage=__('An error occurred while loading this tax rate.');
@@ -223,7 +225,8 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_JSON)
             ->willReturn($jsonObject);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad $controller */
+        $controller = $objectManager->getObject(
             'Magento\Tax\Controller\Adminhtml\Rate\AjaxLoad',
             [
                 'taxRateRepository' => $this->taxRateRepository,
@@ -233,6 +236,6 @@ class AjaxLoadTest extends \PHPUnit_Framework_TestCase
         );
 
         //exception thrown with catch
-        $this->assertSame($jsonObject, $notification->execute());
+        $this->assertSame($jsonObject, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php
index cb3b6df297260c27929ae31110a84d69ade6c41b..88656b9e4da946795e76ad775348f84137d0add8 100644
--- a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php
+++ b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php
@@ -10,7 +10,7 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 
 class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase
 {
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManager($this);
         $cacheTypeList = $this->getMockBuilder('\Magento\Framework\App\Cache\TypeList')
@@ -63,7 +63,8 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->willReturn($config);
 
-        $notification = $objectManager->getObject(
+        /** @var \Magento\Tax\Controller\Adminhtml\Tax\IgnoreTaxNotification $controller */
+        $controller = $objectManager->getObject(
             'Magento\Tax\Controller\Adminhtml\Tax\IgnoreTaxNotification',
             [
                 'objectManager' => $manager,
@@ -74,6 +75,6 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase
         );
 
         // No exception thrown
-        $this->assertSame($resultRedirect, $notification->execute());
+        $this->assertSame($resultRedirect, $controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php
index 9f6f1cb8e6beeb2f860b824759c3a019cb1612eb..2b23bd51aa6d7f49d8c5b45989d62914c2e37d13 100644
--- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php
+++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php
@@ -16,7 +16,7 @@ class ExportCsv extends \Magento\TaxImportExport\Controller\Adminhtml\Rate
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
         $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php
index dc4e8987adc107d94a815e8765c3bf6aa58fe7d1..7685d61ee95f0aa04bc856f718a146e8d2727588 100644
--- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php
+++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php
@@ -15,7 +15,7 @@ class ExportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** start csv content and set template */
         $headers = new \Magento\Framework\DataObject(
diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php
index 38fc277576cc673254f8a0fc2dfe8d47439fa7a6..546980d126fa0ea222cd5dc4bc4bbf85a0fffa1e 100644
--- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php
+++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php
@@ -16,7 +16,7 @@ class ExportXml extends \Magento\TaxImportExport\Controller\Adminhtml\Rate
      *
      * @return ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\View\Result\Layout $resultLayout */
         $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php
index b37520a99f870106a31e6e6ee93b7e1ae9f82345..56d479a43cf14bd3291e142651173d0d6de55760 100644
--- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php
+++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php
@@ -14,7 +14,7 @@ class ImportExport extends \Magento\TaxImportExport\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
         $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php
index eb5efff3d5e9be912e0d5f50129187dec9646ba2..db37d19fa264128bc07416515ae339cbe94a42b2 100644
--- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php
+++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php
@@ -14,7 +14,7 @@ class ImportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->getRequest()->isPost() && !empty($_FILES['import_rates_file']['tmp_name'])) {
             try {
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Delete.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Delete.php
index 12fbe2225fa2f6593fd44dd72746293a79015717..7f29bfb70161aebde080706af969a3e21981bbdc 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Delete.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Delete.php
@@ -15,7 +15,7 @@ class Delete extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $themeId = $this->getRequest()->getParam('id');
         try {
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCss.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCss.php
index 0113c1c59a4ad38059635553711141b2bb4e0d8c..badb051def8f2e46f8422f06405899e89bf0cb2a 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCss.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCss.php
@@ -16,7 +16,7 @@ class DownloadCss extends \Magento\Theme\Controller\Adminhtml\System\Design\Them
      *
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $themeId = $this->getRequest()->getParam('theme_id');
         $file = $this->getRequest()->getParam('file');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCustomCss.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCustomCss.php
index 8653fa797f160550c170442b1abd799464a114b6..6432c23db6d78e84b44b1203fc4db0beb60569f0 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCustomCss.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/DownloadCustomCss.php
@@ -16,7 +16,7 @@ class DownloadCustomCss extends \Magento\Theme\Controller\Adminhtml\System\Desig
      *
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $themeId = $this->getRequest()->getParam('theme_id');
         try {
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Edit.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Edit.php
index 367958d22fb13201fdc56a3b4c64dd6914d42a7d..2b8f9853de79a043c81e0eec80945b1d057c377e 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Edit.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $themeId = (int)$this->getRequest()->getParam('id');
         /** @var $theme \Magento\Framework\View\Design\ThemeInterface */
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Grid.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Grid.php
index e49cdb3e88320c8f597fb1774828e21a5e6ce4f3..8a8fb29abc4e09a11071e5531b572a34ccd65198 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Grid.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Grid.php
@@ -13,7 +13,7 @@ class Grid extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Index.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Index.php
index 8216660eab1a5006ef375013090308120ef8ef9d..599b01273022e2213dda01d51a6a40e5f3eca39c 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Index.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_Theme::system_design_theme');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/NewAction.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/NewAction.php
index 8e930a8c55d46b52c00c1373049ef5e9f78f8f6d..f699769c615751c9da835e22c64777689ba3beeb 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/NewAction.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Save.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Save.php
index c3fabcb4d0232c84e02bc8d47e47e54e65b5a4c2..6bb049c8be3bb57be05908b81f6c1fbcabd655b6 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Save.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/Save.php
@@ -14,7 +14,7 @@ class Save extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $redirectBack = (bool)$this->getRequest()->getParam('back', false);
         $themeData = $this->getRequest()->getParam('theme');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadCss.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadCss.php
index c201adf38e9186767b17819517d693b61a249d8b..d576899f2dcb60b4e6194095e5e5c0251d5413fe 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadCss.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadCss.php
@@ -13,7 +13,7 @@ class UploadCss extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var $serviceModel \Magento\Theme\Model\Uploader\Service */
         $serviceModel = $this->_objectManager->get('Magento\Theme\Model\Uploader\Service');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php
index 58cf189c86f0bdb5a63491384a92d9bc398370d3..84800872fc31528f6334ee1205336c135b719935 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php
@@ -14,7 +14,7 @@ class UploadJs extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme
      * @return void
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function execute()
+    public function executeInternal()
     {
         $themeId = $this->getRequest()->getParam('id');
         /** @var $serviceModel \Magento\Theme\Model\Uploader\Service */
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Contents.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Contents.php
index abc3ebd705a61e09558acdbd20032c6617fc7ece..21fbd7eaa2b6fbce97b413742e09e75c7f24456f 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Contents.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Contents.php
@@ -13,7 +13,7 @@ class Contents extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwyg
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_view->loadLayout('empty');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFiles.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFiles.php
index 2b59d4bba3b8eb81b31b983eb7c5f592b354077f..4f3a4fda4ac82ff28f49e3c427e9d714a3770f7a 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFiles.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFiles.php
@@ -14,7 +14,7 @@ class DeleteFiles extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysi
      * @return void
      * @throws \Exception
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             if (!$this->getRequest()->isPost()) {
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolder.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolder.php
index 4958a6b3909e7b5af227aa722f84f304dc25f37a..6c6258e7f52317fd1794158d2a7e94cb6dcda7b8 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolder.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolder.php
@@ -13,7 +13,7 @@ class DeleteFolder extends \Magento\Theme\Controller\Adminhtml\System\Design\Wys
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $path = $this->storage->getCurrentPath();
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Index.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Index.php
index 7abdd3ee5eccf66327a22129a3a920db2bfe55ad..7584377ecce9602b1e1d06a2ad4531889801303d 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Index.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwyg\Fi
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout('overlay_popup');
         $this->_view->renderLayout();
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/NewFolder.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/NewFolder.php
index 018e8194f37a204647e967debe5b6d6849372d49..119a5b8b9ca6c30ec0e04216cccda44a497993f3 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/NewFolder.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/NewFolder.php
@@ -13,7 +13,7 @@ class NewFolder extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwy
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $name = $this->getRequest()->getPost('name');
         try {
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsert.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsert.php
index 92ef5e7bdc533351555d6c8614f8ca764b2047d6..32ff7003905ad20ecc76f4b5dfd5123b3ed5586c 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsert.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsert.php
@@ -13,7 +13,7 @@ class OnInsert extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwyg
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var $helperStorage \Magento\Theme\Helper\Storage */
         $helperStorage = $this->_objectManager->get('Magento\Theme\Helper\Storage');
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/PreviewImage.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/PreviewImage.php
index d8f050d8d3f3d2fd676e3e0fadd5f8eee05da182..cab5e4b78d65a5b6b4ab6c3355ed6876fbc1a93b 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/PreviewImage.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/PreviewImage.php
@@ -16,7 +16,7 @@ class PreviewImage extends \Magento\Theme\Controller\Adminhtml\System\Design\Wys
      *
      * @return ResponseInterface|void
      */
-    public function execute()
+    public function executeInternal()
     {
         $file = $this->getRequest()->getParam('file');
         /** @var $helper \Magento\Theme\Helper\Storage */
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/TreeJson.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/TreeJson.php
index d3d8a244e73d567d861c21e90600f5fec901fbe2..3e789134e26d68e69e86980315f38515a8d8ee7c 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/TreeJson.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/TreeJson.php
@@ -13,7 +13,7 @@ class TreeJson extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwyg
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->getResponse()->representJson(
diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Upload.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Upload.php
index 877b0fc83d9e82b41ada6d33c027e53353ffaf00..420083086ed9b479dfc1535592e4e4ba478404a0 100644
--- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Upload.php
+++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Wysiwyg/Files/Upload.php
@@ -13,7 +13,7 @@ class Upload extends \Magento\Theme\Controller\Adminhtml\System\Design\Wysiwyg\F
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $path = $this->storage->getCurrentPath();
diff --git a/app/code/Magento/Theme/Model/Design/Backend/Exceptions.php b/app/code/Magento/Theme/Model/Design/Backend/Exceptions.php
index e2fe1ac8f19d780acc688ab42497d16535f6351f..cfe040099ac98c8295c7f1aafabdde2d390cbfe2 100644
--- a/app/code/Magento/Theme/Model/Design/Backend/Exceptions.php
+++ b/app/code/Magento/Theme/Model/Design/Backend/Exceptions.php
@@ -22,6 +22,7 @@ class Exceptions extends ArraySerialized
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,13 +32,14 @@ class Exceptions extends ArraySerialized
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_design = $design;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Theme/Model/Design/Backend/Theme.php b/app/code/Magento/Theme/Model/Design/Backend/Theme.php
index ae2af06192c8b673198edebc41c945d84b988adf..4917dd31b07ecadbac3e3689900b7126fe9bdf2b 100644
--- a/app/code/Magento/Theme/Model/Design/Backend/Theme.php
+++ b/app/code/Magento/Theme/Model/Design/Backend/Theme.php
@@ -16,12 +16,20 @@ class Theme extends Value
      */
     protected $_design = null;
 
+    /**
+     * Path to config node with list of caches
+     *
+     * @var string
+     */
+    const XML_PATH_INVALID_CACHES = 'design/invalid_caches';
+
     /**
      * Initialize dependencies
      *
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -31,13 +39,14 @@ class Theme extends Value
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_design = $design;
-        parent::__construct($context, $registry, $config, $resource, $resourceCollection, $data);
+        parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -53,4 +62,26 @@ class Theme extends Value
         }
         return parent::beforeSave();
     }
+
+    /**
+     * {@inheritdoc}
+     *
+     * {@inheritdoc}. In addition, it sets status 'invalidate' for blocks and other output caches
+     *
+     * @return $this
+     */
+    public function afterSave()
+    {
+        $types = array_keys(
+            $this->_config->getValue(
+                self::XML_PATH_INVALID_CACHES,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+        );
+        if ($this->isValueChanged()) {
+            $this->cacheTypeList->invalidate($types);
+        }
+
+        return parent::afterSave();
+    }
 }
diff --git a/app/code/Magento/Theme/Model/Theme/Plugin/Registration.php b/app/code/Magento/Theme/Model/Theme/Plugin/Registration.php
index 0f469442c15de841768198fc6b51fb5b023a6f71..1e0f900a6ecb647e1b5d8ac83b76325d80885296 100644
--- a/app/code/Magento/Theme/Model/Theme/Plugin/Registration.php
+++ b/app/code/Magento/Theme/Model/Theme/Plugin/Registration.php
@@ -47,7 +47,7 @@ class Registration
      * @return void
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function beforeDispatch(
+    public function beforeExecute(
         AbstractAction $subject,
         RequestInterface $request
     ) {
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DeleteTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DeleteTest.php
index 4323967aa478ed045634b887e7bf48c71f2a6e19..86f88c71aee839650a78e86e6eba660cb946f422 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DeleteTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DeleteTest.php
@@ -147,7 +147,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
             ->with($path)
             ->willReturnSelf();
 
-        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->controller->execute());
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->controller->executeInternal());
     }
 
     /**
@@ -218,7 +218,7 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
         $logger->expects($this->once())
             ->method('critical');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     /**
@@ -255,6 +255,6 @@ class DeleteTest extends \PHPUnit_Framework_TestCase
         $this->messageManager->expects($this->once())
             ->method('addError');
 
-        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->controller->execute());
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCssTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCssTest.php
index 5beef00b2aed512bf4f009fa05158946059c6bc3..e9b058c7bdf09577b6fa15649a97b6cd28988cac 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCssTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCssTest.php
@@ -186,7 +186,7 @@ class DownloadCssTest extends \PHPUnit_Framework_TestCase
             ->with($relPath, ['type' => 'filename', 'value' => $relPath], DirectoryList::ROOT)
             ->willReturn($this->getMockBuilder('Magento\Framework\App\ResponseInterface')->getMock());
 
-        $this->assertInstanceOf('Magento\Framework\App\ResponseInterface', $this->controller->execute());
+        $this->assertInstanceOf('Magento\Framework\App\ResponseInterface', $this->controller->executeInternal());
     }
 
     public function testExecuteInvalidArgument()
@@ -243,6 +243,6 @@ class DownloadCssTest extends \PHPUnit_Framework_TestCase
             ->method('setRedirect')
             ->with($refererUrl);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCustomCssTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCustomCssTest.php
index 891f455ee1dd741851f8c99ca4c77f28496f05e5..04f013fb5e3d5035e86b97b81e6b6357aa2c6e7a 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCustomCssTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/DownloadCustomCssTest.php
@@ -173,7 +173,7 @@ class DownloadCustomCssTest extends \PHPUnit_Framework_TestCase
             ->with($fileName, ['type' => 'filename', 'value' => $fullPath], DirectoryList::ROOT)
             ->willReturn($this->getMockBuilder('Magento\Framework\App\ResponseInterface')->getMock());
 
-        $this->assertInstanceOf('Magento\Framework\App\ResponseInterface', $this->controller->execute());
+        $this->assertInstanceOf('Magento\Framework\App\ResponseInterface', $this->controller->executeInternal());
     }
 
     public function testExecuteInvalidArgument()
@@ -213,6 +213,6 @@ class DownloadCustomCssTest extends \PHPUnit_Framework_TestCase
             ->method('setRedirect')
             ->with($refererUrl);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/EditTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/EditTest.php
index eac3f24f2fec706843e56b61a6b7ea88d2522b57..d9481c4ccc2940a1166fc9324eecf22d70ed4e80 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/EditTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/EditTest.php
@@ -59,7 +59,7 @@ class EditTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\Desi
             ->method('getUrl')
             ->willReturn('http://return.url');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -125,7 +125,7 @@ class EditTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\Desi
             ->method('getUrl')
             ->willReturn('http://return.url');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     /**
@@ -245,6 +245,6 @@ class EditTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\Desi
         $this->view->expects($this->once())
             ->method('renderLayout');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/GridTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/GridTest.php
index 850e4d09d11cbda8f71620a1e9a3b383d3a7d017..e15f4b66d8e057721e6a9b1d3f886ea98ab62610 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/GridTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/GridTest.php
@@ -35,7 +35,7 @@ class GridTest extends \PHPUnit_Framework_TestCase
     protected $view;
 
     /**
-     * @var Delete
+     * @var Grid
      */
     protected $controller;
 
@@ -70,13 +70,13 @@ class GridTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $this->view->expects($this->once())
             ->method('loadLayout')
             ->with(false);
         $this->view->expects($this->once())
             ->method('renderLayout');
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/IndexTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/IndexTest.php
index d504277d57f14f808410c10ede68d5522d630c16..a3cf13f6fd49420aa0a55c8548b3f1f5d4a28dce 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/IndexTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/IndexTest.php
@@ -40,6 +40,6 @@ class IndexTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\Des
             ->method('getLayout')
             ->will($this->returnValue($layout));
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/SaveTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/SaveTest.php
index 524dad54b8cb2f8b6821091a3556d8a804d58868..c260a330d23937fd2e8c23bc4c95c5f0584046a9 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/SaveTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/SaveTest.php
@@ -85,6 +85,6 @@ class SaveTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\Desi
             ->with('Magento\Theme\Model\Theme\SingleFile')
             ->will($this->returnValue(null));
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadCssTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadCssTest.php
index 1529c56175fd4e44c2df4a8a491aa393837cb0c2..a90289e90626bdc3a568c3e7b847ff39278d0f62 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadCssTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadCssTest.php
@@ -39,7 +39,7 @@ class UploadCssTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System
             ->method('representJson')
             ->with('{"filename":"filename","content":"content"}');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     public function testExecuteWithLocalizedException()
@@ -67,7 +67,7 @@ class UploadCssTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System
             ->with('Magento\Framework\Json\Helper\Data')
             ->willReturn($jsonData);
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -103,6 +103,6 @@ class UploadCssTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System
             ->with('Magento\Framework\Json\Helper\Data')
             ->willReturn($jsonData);
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadJsTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadJsTest.php
index 6dbfdd62e0c54d5d732fd17e1a2a50abbe4785b6..271b084f5f6808cbbbfc93592d89be69c8f34577 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadJsTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Theme/UploadJsTest.php
@@ -99,7 +99,7 @@ class UploadJsTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\
             ->method('representJson')
             ->with('{"error":"true","message":"We cannot find a theme with id "' . $themeId . '"."}');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     public function testExecuteWithException()
@@ -149,7 +149,7 @@ class UploadJsTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\
             ->method('representJson')
             ->with('{"error":"true","message":"We can\'t upload the JS file right now."}');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 
     public function testExecute()
@@ -244,6 +244,6 @@ class UploadJsTest extends \Magento\Theme\Test\Unit\Controller\Adminhtml\System\
             ->method('representJson')
             ->with('{"error":false,"files":{"fileOne":{"name":"name"}}}');
 
-        $this->_model->execute();
+        $this->_model->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/ContentsTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/ContentsTest.php
index 42292699b7d88bd30e7b52170e5f08fce1bf704e..5251dcc759eb9ec0c64e864514f377b15b7175c2 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/ContentsTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/ContentsTest.php
@@ -96,6 +96,6 @@ class ContentsTest extends \PHPUnit_Framework_TestCase
         $this->response->expects($this->once())
             ->method('representJson');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFilesTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFilesTest.php
index 2a69f64be343ee3f155b2862cc2f227b5ad3b1b5..3a34f63df2ccfb6c2d535e6e44eee677c6dc8d69 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFilesTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFilesTest.php
@@ -69,7 +69,7 @@ class DeleteFilesTest extends \PHPUnit_Framework_TestCase
             ->method('representJson')
             ->with('{"error":"true","message":"Wrong request"}');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecute()
@@ -99,6 +99,6 @@ class DeleteFilesTest extends \PHPUnit_Framework_TestCase
             ->method('deleteFile')
             ->with('file');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolderTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolderTest.php
index 9bd042cfe2e5864a6f86e5afa848ad63b9ca1a79..2c6b5f2e642a702c96bec83ceda3f627f705b582 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolderTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/DeleteFolderTest.php
@@ -66,6 +66,6 @@ class DeleteFolderTest extends \PHPUnit_Framework_TestCase
             ->with('Magento\Framework\Json\Helper\Data')
             ->willReturn($jsonData);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/IndexTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/IndexTest.php
index 63884649f39f4baf66a5886619757abb381a529a..cf913494623f217b4e866b7c53b079f30d5276a0 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/IndexTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/IndexTest.php
@@ -34,6 +34,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->view ->expects($this->once())
             ->method('renderLayout');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsertTest.php b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsertTest.php
index 0061013ed728c00cc216b889f9dcd4ec2b4e28c4..48c23d765c22412c40114eca014a1e3ca0feaae6 100644
--- a/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsertTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Controller/Adminhtml/System/Design/Wysiwyg/Files/OnInsertTest.php
@@ -54,6 +54,6 @@ class OnInsertTest extends \PHPUnit_Framework_TestCase
             ->method('setBody')
             ->with('http://relative.url/');
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ExceptionsTest.php b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ExceptionsTest.php
index 47a9acad4ee79d277eba30c29be79a8030242dbe..74760ac7a77a0e1d68a4e45d794b41f23065157e 100644
--- a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ExceptionsTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ExceptionsTest.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Theme\Test\Unit\Model\Design\Backend;
 
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Theme\Model\Design\Backend\Exceptions;
 use Magento\Framework\App\Area;
 
@@ -18,60 +19,29 @@ class ExceptionsTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Framework\Model\Context|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $context;
-
-    /**
-     * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $registry;
-
-    /**
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $config;
+    protected $contextMock;
 
     /**
      * @var \Magento\Framework\View\DesignInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $design;
-
-    /**
-     * @var \Magento\Theme\Model\ResourceModel\Design|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $resource;
-
-    /**
-     * @var \Magento\Theme\Model\ResourceModel\Design\Collection|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $resourceCollection;
+    protected $designMock;
 
     protected function setUp()
     {
-        $this->context = $this->getMockBuilder('Magento\Framework\Model\Context')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->registry = $this->getMockBuilder('Magento\Framework\Registry')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->config = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')->getMock();
-        $this->design = $this->getMockBuilder('Magento\Framework\View\DesignInterface')->getMock();
-        $this->resource = $this->getMockBuilder('Magento\Theme\Model\ResourceModel\Design')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->resourceCollection = $this->getMockBuilder('Magento\Theme\Model\ResourceModel\Design\Collection')
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\Model\Context')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->context->expects($this->once())
+        $this->designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')->getMock();
+        $this->contextMock->expects($this->once())
             ->method('getEventDispatcher')
             ->willReturn($this->getMockBuilder('Magento\Framework\Event\ManagerInterface')->getMock());
 
-        $this->model = new Exceptions(
-            $this->context,
-            $this->registry,
-            $this->config,
-            $this->design,
-            $this->resource,
-            $this->resourceCollection
+        $this->model = (new ObjectManager($this))->getObject(
+            'Magento\Theme\Model\Design\Backend\Exceptions',
+            [
+                'context' => $this->contextMock,
+                'design' => $this->designMock,
+            ]
         );
     }
 
@@ -86,7 +56,7 @@ class ExceptionsTest extends \PHPUnit_Framework_TestCase
     public function testBeforeSave()
     {
         $value = ['__empty' => '', 'test' => ['search' => '1qwe', 'value' => '#val#', 'regexp' => '[a-zA-Z0-9]*']];
-        $this->design->expects($this->once())
+        $this->designMock->expects($this->once())
             ->method('setDesignTheme')
             ->with('#val#', Area::AREA_FRONTEND);
         $this->model->setValue($value);
diff --git a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ThemeTest.php b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ThemeTest.php
index f6ac670502a89c420cd46b8df19b5a6242daeae7..e83a4e4ca30ebf25296cc1a1a94f5ee6d3e92614 100644
--- a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ThemeTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/ThemeTest.php
@@ -7,6 +7,7 @@
 namespace Magento\Theme\Test\Unit\Model\Design\Backend;
 
 use Magento\Framework\App\Area;
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Theme\Model\Design\Backend\Theme;
 
 class ThemeTest extends \PHPUnit_Framework_TestCase
@@ -19,60 +20,45 @@ class ThemeTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Framework\Model\Context|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $context;
-
-    /**
-     * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $registry;
-
-    /**
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $config;
+    protected $contextMock;
 
     /**
      * @var \Magento\Framework\View\DesignInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $design;
+    protected $designMock;
 
     /**
-     * @var \Magento\Theme\Model\ResourceModel\Design|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Cache\TypeListInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resource;
+    protected $cacheTypeListMock;
 
     /**
-     * @var \Magento\Theme\Model\ResourceModel\Design\Collection|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resourceCollection;
+    protected $configMock;
 
     protected function setUp()
     {
-        $this->context = $this->getMockBuilder('Magento\Framework\Model\Context')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->registry = $this->getMockBuilder('Magento\Framework\Registry')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->config = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')->getMock();
-        $this->design = $this->getMockBuilder('Magento\Framework\View\DesignInterface')->getMock();
-        $this->resource = $this->getMockBuilder('Magento\Theme\Model\ResourceModel\Design')
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\Model\Context')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->resourceCollection = $this->getMockBuilder('Magento\Theme\Model\ResourceModel\Design\Collection')
+        $this->designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')->getMock();
+        $this->cacheTypeListMock = $this->getMockBuilder('Magento\Framework\App\Cache\TypeListInterface')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->context->expects($this->once())
+        $this->contextMock->expects($this->once())
             ->method('getEventDispatcher')
             ->willReturn($this->getMockBuilder('Magento\Framework\Event\ManagerInterface')->getMock());
+        $this->configMock = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')->getMock();
 
-        $this->model = new Theme(
-            $this->context,
-            $this->registry,
-            $this->config,
-            $this->design,
-            $this->resource,
-            $this->resourceCollection
+        $this->model = (new ObjectManager($this))->getObject(
+            'Magento\Theme\Model\Design\Backend\Theme',
+            [
+                'design' => $this->designMock,
+                'context' => $this->contextMock,
+                'cacheTypeList' => $this->cacheTypeListMock,
+                'config' => $this->configMock,
+            ]
         );
     }
 
@@ -84,10 +70,50 @@ class ThemeTest extends \PHPUnit_Framework_TestCase
      */
     public function testBeforeSave()
     {
-        $this->design->expects($this->once())
+        $this->designMock->expects($this->once())
             ->method('setDesignTheme')
             ->with('some_value', Area::AREA_FRONTEND);
         $this->model->setValue('some_value');
         $this->assertInstanceOf(get_class($this->model), $this->model->beforeSave());
     }
+
+    /**
+     * @param int $callNumber
+     * @param string $oldValue
+     * @dataProvider afterSaveDataProvider
+     */
+    public function testAfterSave($callNumber, $oldValue)
+    {
+        $this->cacheTypeListMock->expects($this->exactly($callNumber))
+            ->method('invalidate');
+        $this->configMock->expects($this->any())
+            ->method('getValue')
+            ->willReturnMap(
+                [
+                    [
+                        Theme::XML_PATH_INVALID_CACHES,
+                        \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+                        null,
+                        ['block_html' => 1, 'layout' => 1, 'translate' => 1]
+                    ],
+                    [
+                        null,
+                        \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
+                        null,
+                        $oldValue
+                    ],
+
+                ]
+            );
+        $this->model->setValue('some_value');
+        $this->assertInstanceOf(get_class($this->model), $this->model->afterSave());
+    }
+
+    public function afterSaveDataProvider()
+    {
+        return [
+            [0, 'some_value'],
+            [2, 'other_value'],
+        ];
+    }
 }
diff --git a/app/code/Magento/Theme/Test/Unit/Model/Theme/Plugin/RegistrationTest.php b/app/code/Magento/Theme/Test/Unit/Model/Theme/Plugin/RegistrationTest.php
index faf0bdf9838718adfcefa7cf7b24398fbaf8fea4..d9ac94ddbe7189fdf5992a291de23c0c21f0b45d 100644
--- a/app/code/Magento/Theme/Test/Unit/Model/Theme/Plugin/RegistrationTest.php
+++ b/app/code/Magento/Theme/Test/Unit/Model/Theme/Plugin/RegistrationTest.php
@@ -35,30 +35,30 @@ class RegistrationTest extends \PHPUnit_Framework_TestCase
         $this->appState = $this->getMock('Magento\Framework\App\State', [], [], '', false);
     }
 
-    public function testBeforeDispatch()
+    public function testBeforeExecute()
     {
         $this->appState->expects($this->once())->method('getMode')->willReturn('default');
         $this->themeRegistration->expects($this->once())->method('register');
         $this->logger->expects($this->never())->method('critical');
         $object = new Registration($this->themeRegistration, $this->logger, $this->appState);
-        $object->beforeDispatch($this->abstractAction, $this->request);
+        $object->beforeExecute($this->abstractAction, $this->request);
     }
 
-    public function testBeforeDispatchWithProductionMode()
+    public function testBeforeExecuteWithProductionMode()
     {
         $this->appState->expects($this->once())->method('getMode')->willReturn('production');
         $this->themeRegistration->expects($this->never())->method('register');
         $this->logger->expects($this->never())->method('critical');
         $object = new Registration($this->themeRegistration, $this->logger, $this->appState);
-        $object->beforeDispatch($this->abstractAction, $this->request);
+        $object->beforeExecute($this->abstractAction, $this->request);
     }
 
-    public function testBeforeDispatchWithException()
+    public function testBeforeExecuteWithException()
     {
         $exception = new LocalizedException(new Phrase('Phrase'));
         $this->themeRegistration->expects($this->once())->method('register')->willThrowException($exception);
         $this->logger->expects($this->once())->method('critical');
         $object = new Registration($this->themeRegistration, $this->logger, $this->appState);
-        $object->beforeDispatch($this->abstractAction, $this->request);
+        $object->beforeExecute($this->abstractAction, $this->request);
     }
 }
diff --git a/app/code/Magento/Theme/etc/config.xml b/app/code/Magento/Theme/etc/config.xml
index 332043e56df8729c080d1e849df05b786e8b4cff..4f25cd7e2abf9382bef439a8ba3b95c6ded3274e 100644
--- a/app/code/Magento/Theme/etc/config.xml
+++ b/app/code/Magento/Theme/etc/config.xml
@@ -8,6 +8,11 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
     <default>
         <design>
+            <invalid_caches>
+                <block_html />
+                <layout />
+                <translate />
+            </invalid_caches>
             <head translate="default_description">
                 <default_title>Magento Commerce</default_title>
                 <default_description>Default Description</default_description>
diff --git a/app/code/Magento/Translation/Controller/Ajax/Index.php b/app/code/Magento/Translation/Controller/Ajax/Index.php
index 190b4046b465ccd2fc4aed14c6170f1bb735aa4c..08c1fc1bce190ff38398f11cc0c6625fcb5c91c4 100644
--- a/app/code/Magento/Translation/Controller/Ajax/Index.php
+++ b/app/code/Magento/Translation/Controller/Ajax/Index.php
@@ -31,7 +31,7 @@ class Index extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $translate = (array)$this->getRequest()->getPost('translate');
 
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/AbstractAction.php b/app/code/Magento/Ui/Controller/Adminhtml/AbstractAction.php
index f6ab7eed8e13d8e2f24f6796743e00c209f93589..442f875e23af4d0f1a82da686da5e794bca59261 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/AbstractAction.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/AbstractAction.php
@@ -57,7 +57,7 @@ abstract class AbstractAction extends Action implements UiActionInterface
      */
     public function executeAjaxRequest()
     {
-        $this->execute();
+        $this->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Delete.php b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Delete.php
index 6a2bdccd51030dd00a44c95ac8ac75d5029f9445..a4192d50134955ca13983df1549ee876cf17f92c 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Delete.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Delete.php
@@ -48,7 +48,7 @@ class Delete extends AbstractAction
      *
      * @return void
      */
-    protected function execute()
+    protected function executeInternal()
     {
         $viewIds = explode('.', $this->_request->getParam('data'));
         $bookmark = $this->bookmarkManagement->getByIdentifierNamespace(
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php
index bde48047b773fac859768450caeb8fdd4c6c1ae8..55568937e97276336b18bef07b41e9f33a60704f 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php
@@ -87,7 +87,7 @@ class Save extends AbstractAction
      *
      * @return void
      */
-    protected function execute()
+    protected function executeInternal()
     {
         $bookmark = $this->bookmarkFactory->create();
         $jsonData = $this->_request->getParam('data');
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv.php b/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv.php
index 158f90512c6a195bcca90c28b36a83e22b48e7c6..2c0b22699f77d23b4ac503a088a0f04cd42c60aa 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv.php
@@ -46,7 +46,7 @@ class GridToCsv extends Action
      * @throws \Magento\Framework\Exception\LocalizedException
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->fileFactory->create('export.csv', $this->converter->getCsvFile(), 'var');
     }
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToXml.php b/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToXml.php
index f4de9d2da2b875fa5d45caf2a7f017dafe3c72b2..c999f3f8fcd9b0c2c23adf2f28c1e6bf7aa73f0b 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToXml.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Export/GridToXml.php
@@ -46,7 +46,7 @@ class GridToXml extends Action
      * @throws \Magento\Framework\Exception\LocalizedException
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         return $this->fileFactory->create('export.xml', $this->converter->getXmlFile(), 'var');
     }
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php b/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
index bd431cf33f4fece3291527e972cb3149f8336239..f43135b162e34fcc8e65094c5bfb9f2e60c9af9b 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
@@ -20,7 +20,7 @@ class Render extends AbstractAction
      *
      * @return void
      */
-    protected function execute()
+    protected function executeInternal()
     {
         $component = $this->factory->create($this->_request->getParam('namespace'));
         $this->prepareComponent($component);
diff --git a/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToCsvTest.php b/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToCsvTest.php
index ad295672a6cad88dc5ab4bf3c3c0c918a28c467d..daf5ba76d67ea8084e6c969762b2a1e880826802 100644
--- a/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToCsvTest.php
+++ b/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToCsvTest.php
@@ -66,6 +66,6 @@ class GridToCsvTest extends \PHPUnit_Framework_TestCase
             ->with('export.csv', $content, 'var')
             ->willReturn($content);
 
-        $this->assertEquals($content, $this->controller->execute());
+        $this->assertEquals($content, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToXmlTest.php b/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToXmlTest.php
index 427a14e42dd40a12b50d211f991a00751290f8d3..c0314e99c13e2e235ab372d49d476517fba253d9 100644
--- a/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToXmlTest.php
+++ b/app/code/Magento/Ui/Test/Unit/Controller/Adminhtml/Export/GridToXmlTest.php
@@ -66,6 +66,6 @@ class GridToXmlTest extends \PHPUnit_Framework_TestCase
             ->with('export.xml', $content, 'var')
             ->willReturn($content);
 
-        $this->assertEquals($content, $this->controller->execute());
+        $this->assertEquals($content, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CategoriesJson.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CategoriesJson.php
index 2bc1ea519da5cd4d36b1a6d65ea089b24000da4f..891ee3a1bbd396c16fc7ae941531d415877384d8 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CategoriesJson.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CategoriesJson.php
@@ -13,7 +13,7 @@ class CategoriesJson extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrit
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $categoryId = $this->getRequest()->getParam('id', null);
         $this->getResponse()->setBody(
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CmsPageGrid.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CmsPageGrid.php
index d277c5781bd077a5db3401356358c6037fa8d345..9d7668e61a0ef5b869ea4e56cb66439a5f962259 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CmsPageGrid.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/CmsPageGrid.php
@@ -13,7 +13,7 @@ class CmsPageGrid extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->setBody(
             $this->_view->getLayout()->createBlock('Magento\UrlRewrite\Block\Cms\Page\Grid')->toHtml()
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Delete.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Delete.php
index a0ed60907fd0d715e343032951c9aa12e87169ce..f916999158de1b7d8bc6a2a025498a11856af52a 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Delete.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->_getUrlRewrite()->getId()) {
             try {
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Edit.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Edit.php
index 3d172de74021d86d0231ef9ecb06319bbbb36575..1a84bdb99d3e5028cca9abbdb9e4b5c245683865 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Edit.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Edit.php
@@ -43,7 +43,7 @@ class Edit extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_UrlRewrite::urlrewrite');
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Index.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Index.php
index 13c87edc4edc24baddf400be305a91f7284d72ac..55c42bec9dfb79bd64470040d54b23e7e70aaa52 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Index.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_UrlRewrite::urlrewrite');
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/ProductGrid.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/ProductGrid.php
index 42c14184066b4419d5320afadca4a3cffc10ad9d..e6c7258493724a4908209a8d5d178e585677523b 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/ProductGrid.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/ProductGrid.php
@@ -13,7 +13,7 @@ class ProductGrid extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->getResponse()->setBody(
             $this->_view->getLayout()->createBlock('Magento\UrlRewrite\Block\Catalog\Product\Grid')->toHtml()
diff --git a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Save.php b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Save.php
index 951b0885f72fb283fb44ffb0771055d76edd35a4..a8da825fc502e50e659a662ced8de3de834912c3 100644
--- a/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Save.php
+++ b/app/code/Magento/UrlRewrite/Controller/Adminhtml/Url/Rewrite/Save.php
@@ -136,7 +136,7 @@ class Save extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $data = $this->getRequest()->getPostValue();
         if ($data) {
diff --git a/app/code/Magento/User/Controller/Adminhtml/Auth/Forgotpassword.php b/app/code/Magento/User/Controller/Adminhtml/Auth/Forgotpassword.php
index ca30b16916e6590e2d7f14e647904a0be54b7810..82519182fdabc3a56d992db7a373a9b79e4ef54c 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Auth/Forgotpassword.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Auth/Forgotpassword.php
@@ -13,7 +13,7 @@ class Forgotpassword extends \Magento\User\Controller\Adminhtml\Auth
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $email = (string)$this->getRequest()->getParam('email');
         $params = $this->getRequest()->getParams();
diff --git a/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPassword.php b/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPassword.php
index b39d7c8400770f1eb9ec08ea273db5c0552cde76..b3d5e52303f18d779468923d91c067b61c0c5363 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPassword.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPassword.php
@@ -15,7 +15,7 @@ class ResetPassword extends \Magento\User\Controller\Adminhtml\Auth
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $passwordResetToken = (string)$this->getRequest()->getQuery('token');
         $userId = (int)$this->getRequest()->getQuery('id');
diff --git a/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPasswordPost.php b/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPasswordPost.php
index bae69c2415f3cb6578f41b558285864b12653840..5e65f6103035ec37261c0e8ff6ab2a00f49728d2 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPasswordPost.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Auth/ResetPasswordPost.php
@@ -15,7 +15,7 @@ class ResetPasswordPost extends \Magento\User\Controller\Adminhtml\Auth
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $passwordResetToken = (string)$this->getRequest()->getQuery('token');
         $userId = (int)$this->getRequest()->getQuery('id');
diff --git a/app/code/Magento/User/Controller/Adminhtml/Locks/Grid.php b/app/code/Magento/User/Controller/Adminhtml/Locks/Grid.php
index 971b87791f613db9eb5c6f869cd8a04ae93e8a33..1eaa4e05d5a5872a4f71c544c8045a9ad9983db3 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Locks/Grid.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Locks/Grid.php
@@ -16,7 +16,7 @@ class Grid extends \Magento\User\Controller\Adminhtml\Locks
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/User/Controller/Adminhtml/Locks/Index.php b/app/code/Magento/User/Controller/Adminhtml/Locks/Index.php
index b3e9f092fd1b157a3f56fbf1cbe88c1a837c6f95..f3ce5beda6069b6bf23cd4530104a9a646a4d9d2 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Locks/Index.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Locks/Index.php
@@ -16,7 +16,7 @@ class Index extends \Magento\User\Controller\Adminhtml\Locks
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_setActiveMenu('Magento_User::system_acl_locks');
diff --git a/app/code/Magento/User/Controller/Adminhtml/Locks/MassUnlock.php b/app/code/Magento/User/Controller/Adminhtml/Locks/MassUnlock.php
index bf515568539639fd8ecc99a38524e9679d310328..ba0621b1d70b436f48fe61ee97ed7f4aeef0c5fe 100644
--- a/app/code/Magento/User/Controller/Adminhtml/Locks/MassUnlock.php
+++ b/app/code/Magento/User/Controller/Adminhtml/Locks/MassUnlock.php
@@ -18,7 +18,7 @@ class MassUnlock extends \Magento\User\Controller\Adminhtml\Locks
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             // unlock users
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Delete.php b/app/code/Magento/User/Controller/Adminhtml/User/Delete.php
index 748e44e4fc2890cd7bb32bfa04dd0b64772357e7..576138df5cf4666ff3f0b40114997fd6235f4b9c 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Delete.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Delete.php
@@ -11,7 +11,7 @@ class Delete extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $currentUser = $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->getUser();
 
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Edit.php b/app/code/Magento/User/Controller/Adminhtml/User/Edit.php
index 39ac43d55391ba02f47089b28233a7f13e791d86..c74f350c79f366e64cb15f600dccc71ebe106fa4 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Edit.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $userId = $this->getRequest()->getParam('user_id');
         /** @var \Magento\User\Model\User $model */
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Index.php b/app/code/Magento/User/Controller/Adminhtml/User/Index.php
index 875b26fcaf20f3ce2b2e1d6c21cd4d5e328a04c3..214b634c06fa8a719ce4ba99999e0c303590fccb 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Index.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Users'));
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/InvalidateToken.php b/app/code/Magento/User/Controller/Adminhtml/User/InvalidateToken.php
index adc326644ef6af19c571dd3d3a459fd7c3d55648..611b2a42890822b81a2e4336ddf8236005d563f7 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/InvalidateToken.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/InvalidateToken.php
@@ -40,7 +40,7 @@ class InvalidateToken extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($userId = $this->getRequest()->getParam('user_id')) {
             try {
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/NewAction.php b/app/code/Magento/User/Controller/Adminhtml/User/NewAction.php
index 38cb07dae87eabad536e05355efd516c803d9f25..598d3b5c3d365bcf77d7edfdd20de9b58c2c8a40 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/NewAction.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/NewAction.php
@@ -11,7 +11,7 @@ class NewAction extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/Delete.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/Delete.php
index 1a8060e1e23db801168bcb38eaf48cee7a3121fb..fefed2867c467bb7d73f48867962338289b1a3ac 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/Delete.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/Delete.php
@@ -15,7 +15,7 @@ class Delete extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return \Magento\Backend\Model\View\Result\Redirect|void
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/EditRole.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/EditRole.php
index 21aef671de98c831b9eaa37408a8e9428fbdc357..a8950a9d711b9772436fb30e588c5e17316b50ad 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/EditRole.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/EditRole.php
@@ -13,7 +13,7 @@ class EditRole extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $role = $this->_initRole();
         $this->_initAction();
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/Editrolegrid.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/Editrolegrid.php
index ac6cf5350bdf90ae46540430eb19b3e1366bf765..053c65a4dca240ea097956a7ab320c011e870f0c 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/Editrolegrid.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/Editrolegrid.php
@@ -13,7 +13,7 @@ class Editrolegrid extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout();
         $this->_view->renderLayout();
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/Index.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/Index.php
index fe9c5c613822274b942ecd8fdacc7f330c0e27b2..ce8f462264e6bca2e7a9fe96254cdc8322f0b3c4 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/Index.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Roles'));
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/RoleGrid.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/RoleGrid.php
index 32d360659bd64a808f0cac7dee2af0fccec23fa6..e771d3dd87b5b396c0e8382c186a0cea899d526d 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/RoleGrid.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/RoleGrid.php
@@ -13,7 +13,7 @@ class RoleGrid extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
index e45c6b110db78b490dc3f184000b94648963db1f..83aa7ed1f34763a41da89628e33c4493d8cad16b 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
@@ -55,7 +55,7 @@ class SaveRole extends \Magento\User\Controller\Adminhtml\User\Role
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/RoleGrid.php b/app/code/Magento/User/Controller/Adminhtml/User/RoleGrid.php
index 03f19129f6bdc7dcf7a53f9e435dd8f99d5bbd13..5f405efca0fdcbb24d35efeefcf91c97b6ddc058 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/RoleGrid.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/RoleGrid.php
@@ -11,7 +11,7 @@ class RoleGrid extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_view->loadLayout(false);
         $this->_view->renderLayout();
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/RolesGrid.php b/app/code/Magento/User/Controller/Adminhtml/User/RolesGrid.php
index 11b1569e9d77dc4ebc34a13248f1360ceeb31a12..2689f3c9d77a926cefffd541be02e312f4816272 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/RolesGrid.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/RolesGrid.php
@@ -11,7 +11,7 @@ class RolesGrid extends \Magento\User\Controller\Adminhtml\User
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $userId = $this->getRequest()->getParam('user_id');
         /** @var \Magento\User\Model\User $model */
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Save.php b/app/code/Magento/User/Controller/Adminhtml/User/Save.php
index e9e5cad33207304d57a19e5714e6d37d299b74ff..f50ebcacb2714d23323083a5d73ccff7a425219a 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Save.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Save.php
@@ -14,7 +14,7 @@ class Save extends \Magento\User\Controller\Adminhtml\User
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $userId = (int)$this->getRequest()->getParam('user_id');
         $data = $this->getRequest()->getPostValue();
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Validate.php b/app/code/Magento/User/Controller/Adminhtml/User/Validate.php
index 25b49ff3999c532c5c797469b135e8af28bd1036..11262b0898cb089650cbb6019dbd8a37ff7e0269 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Validate.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Validate.php
@@ -13,7 +13,7 @@ class Validate extends \Magento\User\Controller\Adminhtml\User
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         $response->setError(0);
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Delete.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Delete.php
index 03190d55cac69351ca6a810d92f7a5acb241af23..10b0c13383e23bd38f22a2988ec3968173009d68 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Delete.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $variable = $this->_initVariable();
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Edit.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Edit.php
index adb7eaa317570570f70e40ab8928cc419be43d79..bd6db1b8f378cffaa54766bf9cc06e9e933877d6 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Edit.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $variable = $this->_initVariable();
 
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Index.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Index.php
index 521834f094df9fec00e669afa6ba30f7283ec142..1dc0676e2e5f706219d5c62fed224a46179f9a9a 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Index.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Backend\Model\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         $resultPage = $this->createPage();
         $resultPage->getConfig()->getTitle()->prepend(__('Custom Variables'));
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/NewAction.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/NewAction.php
index efbcf4c062b7f44dba3215a3a67c536451aaf107..465b50bfe448cdd96453659ab58f903c5ec9a5fb 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/NewAction.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Backend\Model\View\Result\Forward
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
         $resultForward = $this->resultForwardFactory->create();
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Save.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Save.php
index f3640c3918e2b4935f5158cfcc4bfacd0a48ea51..6353e576707009da8cd3bcd9fa4593e4f71ef804 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Save.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Backend\Model\View\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $variable = $this->_initVariable();
         $data = $this->getRequest()->getPost('variable');
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Validate.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Validate.php
index 75876b96cfe2cc8deb88f719ef8e38bbb9be69ed..7867af4006845898f0db6443dc70108488b1f141 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Validate.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/Validate.php
@@ -13,7 +13,7 @@ class Validate extends \Magento\Variable\Controller\Adminhtml\System\Variable
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject(['error' => false]);
         $variable = $this->_initVariable();
diff --git a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/WysiwygPlugin.php b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
index 04b1514cfab7f3b8b6ce4b19ac4f0b7e8da517f9..42e801f50a4617e195956be35dd4d29e9117bdb4 100644
--- a/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
+++ b/app/code/Magento/Variable/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
@@ -13,7 +13,7 @@ class WysiwygPlugin extends \Magento\Variable\Controller\Adminhtml\System\Variab
      *
      * @return \Magento\Framework\Controller\Result\Json
      */
-    public function execute()
+    public function executeInternal()
     {
         $customVariables = $this->_objectManager->create('Magento\Variable\Model\Variable')
             ->getVariablesOptionArray(true);
diff --git a/app/code/Magento/Variable/Test/Unit/Controller/Adminhtml/System/Variable/ValidateTest.php b/app/code/Magento/Variable/Test/Unit/Controller/Adminhtml/System/Variable/ValidateTest.php
index cb653d6499d29ab007791427a95412f1e2b59bff..8da36180eb75edb515ee26fcb432546ab964cbe2 100644
--- a/app/code/Magento/Variable/Test/Unit/Controller/Adminhtml/System/Variable/ValidateTest.php
+++ b/app/code/Magento/Variable/Test/Unit/Controller/Adminhtml/System/Variable/ValidateTest.php
@@ -152,7 +152,7 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
             ->method('setData')
             ->with($responseArray);
 
-        $this->validateMock->execute();
+        $this->validateMock->executeInternal();
     }
 
     /**
diff --git a/app/code/Magento/Version/Controller/Index/Index.php b/app/code/Magento/Version/Controller/Index/Index.php
index 0fe6235bc6ca091e830b184ffa73b3be57875e58..48feb6eb4236bd46922d913e544eb7cd39526fab 100644
--- a/app/code/Magento/Version/Controller/Index/Index.php
+++ b/app/code/Magento/Version/Controller/Index/Index.php
@@ -37,7 +37,7 @@ class Index extends Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $versionParts = explode('.', $this->productMetadata->getVersion());
         if (!isset($versionParts[0]) || !isset($versionParts[1])) {
diff --git a/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php b/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php
index 19502e3d794c4a220e8d8c7f878255638236a182..052e4679027f46d323c68de50cc806b416998ff5 100644
--- a/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php
+++ b/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php
@@ -100,7 +100,7 @@ class ContextPlugin
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php b/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php
index d910384f79e717839334ab670c255aa5777177a6..5f771f2748e3268ef93797118d35dae21d423095 100644
--- a/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php
+++ b/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php
@@ -123,7 +123,7 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function testAroundDispatchBasedOnDefault()
+    public function testAroundExecuteBasedOnDefault()
     {
         $this->customerSessionMock->expects($this->once())
             ->method('isLoggedIn')
@@ -191,10 +191,10 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
         $proceed = function ($request) use ($expectedResult) {
             return $expectedResult;
         };
-        $this->contextPlugin->aroundDispatch($action, $proceed, $request);
+        $this->contextPlugin->aroundExecute($action, $proceed, $request);
     }
 
-    public function testAroundDispatchBasedOnOrigin()
+    public function testAroundExecuteBasedOnOrigin()
     {
         $this->customerSessionMock->expects($this->once())
             ->method('isLoggedIn')
@@ -223,10 +223,10 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
         $proceed = function ($request) use ($expectedResult) {
             return $expectedResult;
         };
-        $this->contextPlugin->aroundDispatch($action, $proceed, $request);
+        $this->contextPlugin->aroundExecute($action, $proceed, $request);
     }
 
-    public function testAroundDispatchBasedOnBilling()
+    public function testAroundExecuteBasedOnBilling()
     {
         $this->customerSessionMock->expects($this->once())
             ->method('isLoggedIn')
@@ -298,10 +298,10 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
         $proceed = function ($request) use ($expectedResult) {
             return $expectedResult;
         };
-        $this->contextPlugin->aroundDispatch($action, $proceed, $request);
+        $this->contextPlugin->aroundExecute($action, $proceed, $request);
     }
 
-    public function testAroundDispatchBasedOnShipping()
+    public function testAroundExecuteBasedOnShipping()
     {
         $this->customerSessionMock->expects($this->once())
             ->method('isLoggedIn')
@@ -373,6 +373,6 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase
         $proceed = function ($request) use ($expectedResult) {
             return $expectedResult;
         };
-        $this->contextPlugin->aroundDispatch($action, $proceed, $request);
+        $this->contextPlugin->aroundExecute($action, $proceed, $request);
     }
 }
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/BuildWidget.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/BuildWidget.php
index 9a3459f897f3e0427a3ac4f8d709da7974fed24c..e29a01447ca072d48f35fc20c818d373b1f2560f 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/BuildWidget.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/BuildWidget.php
@@ -30,7 +30,7 @@ class BuildWidget extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $type = $this->getRequest()->getPost('widget_type');
         $params = $this->getRequest()->getPost('parameters', []);
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Index.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Index.php
index a30ce4a2a84ce9f9f0105478560e1c3adffe7698..3b0d39820dc7c7a75ef1428819cb857ab7cd2788 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Index.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Index.php
@@ -40,7 +40,7 @@ class Index extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         // save extra params for widgets insertion form
         $skipped = $this->getRequest()->getParam('skip_widgets');
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Blocks.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Blocks.php
index c97ab7250fec097654389a7766917a84cf3b0059..2783889979cb1367c4518fa4918011481ca10409 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Blocks.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Blocks.php
@@ -40,7 +40,7 @@ class Blocks extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_objectManager->get(
             'Magento\Framework\App\State'
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Categories.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Categories.php
index 468a5d1b7de41c0f2716804ff96380ca0999268e..76f624e2f48fb34c83bd4e166efd5bc69cc93e16 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Categories.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Categories.php
@@ -40,7 +40,7 @@ class Categories extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return \Magento\Framework\Controller\Result\Raw
      */
-    public function execute()
+    public function executeInternal()
     {
         $selected = $this->getRequest()->getParam('selected', '');
         $isAnchorOnly = $this->getRequest()->getParam('is_anchor_only', 0);
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Delete.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Delete.php
index 0866ba1fb2e1e0b5d90f47f3e2c809f6e222a367..14e0a85abbda7b9730dfd5a21423ed87b33c8b28 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Delete.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Delete.php
@@ -13,7 +13,7 @@ class Delete extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $widgetInstance = $this->_initWidgetInstance();
         if ($widgetInstance) {
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Edit.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Edit.php
index 978680baa01c24c481043aa1aa458315160bd723..8dfd2a8bc667bc13870dee00d2f02934e089af70 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Edit.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Edit.php
@@ -13,7 +13,7 @@ class Edit extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $widgetInstance = $this->_initWidgetInstance();
         if (!$widgetInstance) {
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Index.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Index.php
index 704730f02c5afeb5c171d28a11d13445da771151..5b6d34743340d022037d15dedccaebb91712affd 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Index.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_initAction();
         $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Widgets'));
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/NewAction.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/NewAction.php
index 3beb19c5d1dbe0feea77abf3209d5a384cbd88dc..289ec1ee1d03f20d4fd66b1a12ba0ddd95ee7a99 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/NewAction.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/NewAction.php
@@ -13,7 +13,7 @@ class NewAction extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward('edit');
     }
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Products.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Products.php
index e750e1f88e583cebab4d37ad5609051bf775e47c..a651f040b54391d373bdfb6488369082fbe065d0 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Products.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Products.php
@@ -13,7 +13,7 @@ class Products extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $selected = $this->getRequest()->getParam('selected', '');
         $productTypeId = $this->getRequest()->getParam('product_type_id', '');
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Save.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Save.php
index 5435ef423cb224e83fabbc5e9216e3176037c01e..14657be5478e6564d2698d450efda0c488a03ba3 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Save.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Save.php
@@ -13,7 +13,7 @@ class Save extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $widgetInstance = $this->_initWidgetInstance();
         if (!$widgetInstance) {
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Template.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Template.php
index 4dea5a9f972d0f807967dcd3f3de7c1aaa7fc9c9..e7ad7a9e31be0ae897bc3730d925090c74e717a5 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Template.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Template.php
@@ -13,7 +13,7 @@ class Template extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         /* @var $widgetInstance \Magento\Widget\Model\Widget\Instance */
         $widgetInstance = $this->_initWidgetInstance();
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Validate.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Validate.php
index fe2bb5aaf694c3d91aca6b29c3b6f3206648fc00..e37a93e5e61e6b21f70539d355a7646131a9e2b1 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Validate.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/Instance/Validate.php
@@ -13,7 +13,7 @@ class Validate extends \Magento\Widget\Controller\Adminhtml\Widget\Instance
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $response = new \Magento\Framework\DataObject();
         $response->setError(false);
diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php
index 769b2d587cdd81b91764e9b92ecae9eec0750599..10fccc4c7246ce30b6c85ed44882ab240956fee8 100644
--- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php
+++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php
@@ -13,7 +13,7 @@ class LoadOptions extends \Magento\Backend\App\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         try {
             $this->_view->loadLayout();
diff --git a/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/Instance/CategoriesTest.php b/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/Instance/CategoriesTest.php
index 5a03ca570269871e81da22280dfc25da5bfbd65d..0def0e1383369e938a9642444428edc75e50be8f 100644
--- a/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/Instance/CategoriesTest.php
+++ b/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/Instance/CategoriesTest.php
@@ -120,6 +120,6 @@ class CategoriesTest extends \PHPUnit_Framework_TestCase
                     'layout' => $this->layout
                 ]
             );
-        $this->assertSame($this->resultRaw, $this->controller->execute());
+        $this->assertSame($this->resultRaw, $this->controller->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Controller/Index/Add.php b/app/code/Magento/Wishlist/Controller/Index/Add.php
index 19b893de9f8a7ba164c68458477e44b946a5df99..36c24b6176f2dac037307b26f5ecff8090db1d30 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Add.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Add.php
@@ -59,7 +59,7 @@ class Add extends Action\Action implements IndexInterface
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
      */
-    public function execute()
+    public function executeInternal()
     {
         $wishlist = $this->wishlistProvider->getWishlist();
         if (!$wishlist) {
diff --git a/app/code/Magento/Wishlist/Controller/Index/Allcart.php b/app/code/Magento/Wishlist/Controller/Index/Allcart.php
index 7cf5a187a5687bace697d03101e9ad7e78c8b8c3..e8892270a799138afe5006dc8feb8f8670a56411 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Allcart.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Allcart.php
@@ -53,7 +53,7 @@ class Allcart extends Action\Action implements IndexInterface
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
         $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
diff --git a/app/code/Magento/Wishlist/Controller/Index/Cart.php b/app/code/Magento/Wishlist/Controller/Index/Cart.php
index 8075c8e6b6ea86ed68622412637f51b6645d946c..ca39fbb782b91fad92be43df1d62ba11573ce0f3 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Cart.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Cart.php
@@ -107,7 +107,7 @@ class Cart extends Action\Action implements IndexInterface
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = (int)$this->getRequest()->getParam('item');
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Wishlist/Controller/Index/Configure.php b/app/code/Magento/Wishlist/Controller/Index/Configure.php
index bc8e001e2505530efae83aa1607f374ad8cea31b..3d1077464d9a7ebb6b1d4377995bf8658598d57e 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Configure.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Configure.php
@@ -53,7 +53,7 @@ class Configure extends Action\Action implements IndexInterface
      * @return \Magento\Framework\Controller\ResultInterface
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('id');
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php b/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php
index 1edd5e4426ee0343e25a9ab270674e72c74a4b79..5dd0ff2c27867112be932f511c13a35afab394f7 100644
--- a/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php
+++ b/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php
@@ -36,7 +36,7 @@ class DownloadCustomOption extends Action\Action implements IndexInterface
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.ExitExpression)
      */
-    public function execute()
+    public function executeInternal()
     {
         $option = $this->_objectManager->create(
             'Magento\Wishlist\Model\Item\Option'
diff --git a/app/code/Magento/Wishlist/Controller/Index/Fromcart.php b/app/code/Magento/Wishlist/Controller/Index/Fromcart.php
index 8ee09cc1d33b71d068ae3c15f6a4346bf272e2ee..443d46f103dc1ed1542924c0001a01d5f1cbdbd5 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Fromcart.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Fromcart.php
@@ -78,7 +78,7 @@ class Fromcart extends Action\Action implements IndexInterface
      * @throws NotFoundException
      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
      */
-    public function execute()
+    public function executeInternal()
     {
         $wishlist = $this->wishlistProvider->getWishlist();
         if (!$wishlist) {
diff --git a/app/code/Magento/Wishlist/Controller/Index/Index.php b/app/code/Magento/Wishlist/Controller/Index/Index.php
index dc0c7fcb96544f87987ef10ab64119033c9767d8..821df44186a442433be8e1653bc2aca225706cb0 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Index.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Index.php
@@ -35,7 +35,7 @@ class Index extends Action\Action implements IndexInterface
      * @return \Magento\Framework\View\Result\Page
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         if (!$this->wishlistProvider->getWishlist()) {
             throw new NotFoundException(__('Page not found.'));
diff --git a/app/code/Magento/Wishlist/Controller/Index/Plugin.php b/app/code/Magento/Wishlist/Controller/Index/Plugin.php
index 3f179a2e9a67b895a7b1dfffd1a6caf85b67ec57..10e6cdd0b0c423dde2efd735b57508957c523d5d 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Plugin.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Plugin.php
@@ -60,7 +60,7 @@ class Plugin
      * @return void
      * @throws \Magento\Framework\Exception\NotFoundException
      */
-    public function beforeDispatch(\Magento\Framework\App\ActionInterface $subject, RequestInterface $request)
+    public function beforeExecute(\Magento\Framework\App\ActionInterface $subject, RequestInterface $request)
     {
         if ($this->authenticationState->isEnabled() && !$this->customerSession->authenticate()) {
             $subject->getActionFlag()->set('', 'no-dispatch', true);
diff --git a/app/code/Magento/Wishlist/Controller/Index/Remove.php b/app/code/Magento/Wishlist/Controller/Index/Remove.php
index d74487a8f195d0b8c9ce3703bea3156e082b80a7..66d068fc7f4db39f964a75a1535dfae458fd6289 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Remove.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Remove.php
@@ -35,7 +35,7 @@ class Remove extends Action\Action implements IndexInterface
      * @return \Magento\Framework\Controller\Result\Redirect
      * @throws NotFoundException
      */
-    public function execute()
+    public function executeInternal()
     {
         $id = (int)$this->getRequest()->getParam('item');
         $item = $this->_objectManager->create('Magento\Wishlist\Model\Item')->load($id);
diff --git a/app/code/Magento/Wishlist/Controller/Index/Send.php b/app/code/Magento/Wishlist/Controller/Index/Send.php
index 6baaa3772cd54918abf677eb2470100daa1a7af8..9ee4f3cd1b87a26891f5e2543db68d3758c1e09f 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Send.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Send.php
@@ -119,7 +119,7 @@ class Send extends Action\Action implements IndexInterface
      * @SuppressWarnings(PHPMD.NPathComplexity)
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Wishlist/Controller/Index/Share.php b/app/code/Magento/Wishlist/Controller/Index/Share.php
index 502291b5078c418b4beefa079177b18084d100c7..4a8c92a37725e2afcd167a4683c47555b7d71c3f 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Share.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Share.php
@@ -33,7 +33,7 @@ class Share extends Action\Action implements IndexInterface
      *
      * @return void|\Magento\Framework\View\Result\Page
      */
-    public function execute()
+    public function executeInternal()
     {
         if ($this->customerSession->authenticate()) {
             /** @var \Magento\Framework\View\Result\Page $resultPage */
diff --git a/app/code/Magento/Wishlist/Controller/Index/Update.php b/app/code/Magento/Wishlist/Controller/Index/Update.php
index ccb46f1c44a8ce873ce7ff779ffa760e724b31e2..863904999a2fb75419d3c63a50bebceac370e513 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Update.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Update.php
@@ -53,7 +53,7 @@ class Update extends Action\Action implements IndexInterface
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
      */
-    public function execute()
+    public function executeInternal()
     {
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
diff --git a/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php b/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php
index 655844d6f116f43c206cfff2a8750687d9773289..e1ff89db2c83b2e41b14ac01ff61e9b555582596 100644
--- a/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php
+++ b/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php
@@ -51,7 +51,7 @@ class UpdateItemOptions extends Action\Action implements IndexInterface
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $productId = (int)$this->getRequest()->getParam('product');
         /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
diff --git a/app/code/Magento/Wishlist/Controller/Shared/Allcart.php b/app/code/Magento/Wishlist/Controller/Shared/Allcart.php
index ffb6e34ea96390aedd403549f7294126bcd1b93c..2f9208c43e9a3c359b93d29932c0666212267912 100644
--- a/app/code/Magento/Wishlist/Controller/Shared/Allcart.php
+++ b/app/code/Magento/Wishlist/Controller/Shared/Allcart.php
@@ -41,7 +41,7 @@ class Allcart extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $wishlist = $this->wishlistProvider->getWishlist();
         if (!$wishlist) {
diff --git a/app/code/Magento/Wishlist/Controller/Shared/Cart.php b/app/code/Magento/Wishlist/Controller/Shared/Cart.php
index b3ed5a3b33093ef5f7d1ba041a0782fd1bf3fa81..8f03270d5bead068cdeb6af40dd6b9848caf95de 100644
--- a/app/code/Magento/Wishlist/Controller/Shared/Cart.php
+++ b/app/code/Magento/Wishlist/Controller/Shared/Cart.php
@@ -79,7 +79,7 @@ class Cart extends \Magento\Framework\App\Action\Action
      *
      * @return \Magento\Framework\Controller\Result\Redirect
      */
-    public function execute()
+    public function executeInternal()
     {
         $itemId = (int)$this->getRequest()->getParam('item');
 
diff --git a/app/code/Magento/Wishlist/Controller/Shared/Index.php b/app/code/Magento/Wishlist/Controller/Shared/Index.php
index 6f925099159fa32c7f1d57130f0f0e8b79506226..d54d52833044cf36526172e49f33aaeb71c23592 100644
--- a/app/code/Magento/Wishlist/Controller/Shared/Index.php
+++ b/app/code/Magento/Wishlist/Controller/Shared/Index.php
@@ -51,7 +51,7 @@ class Index extends Action
      *
      * @return \Magento\Framework\Controller\ResultInterface
      */
-    public function execute()
+    public function executeInternal()
     {
         $wishlist = $this->wishlistProvider->getWishlist();
         $customerId = $this->customerSession->getCustomerId();
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php
index 8d58bf0be7592847c0f13f568d923ff6aeeceba7..e72f4c4a42f741ed9fbe5c8deddd7d301059be42 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php
@@ -157,7 +157,7 @@ class AllcartTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
 
         $controller = $this->getController();
-        $this->assertSame($this->resultForwardMock, $controller->execute());
+        $this->assertSame($this->resultForwardMock, $controller->executeInternal());
     }
 
     public function testExecuteWithoutWishlist()
@@ -176,7 +176,7 @@ class AllcartTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultForwardMock, $this->getController()->execute());
+        $this->assertSame($this->resultForwardMock, $this->getController()->executeInternal());
     }
 
     public function testExecutePassed()
@@ -204,6 +204,6 @@ class AllcartTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php
index cdd8ea3b33372cc72b3aa98a65eb8090eaf3b718..937e5f843fd1beec8986c4b6ca48f93fc6a8e492 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php
@@ -259,7 +259,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with('*/*', [])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithNoWishlist()
@@ -300,7 +300,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with('*/*', [])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithQuantityArray()
@@ -312,7 +312,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($refererUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     public function testExecuteWithQuantityArrayAjax()
@@ -324,7 +324,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with(['backUrl' => $refererUrl])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultJsonMock, $this->model->execute());
+        $this->assertSame($this->resultJsonMock, $this->model->executeInternal());
     }
 
     /**
@@ -698,7 +698,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($indexUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 
     /**
@@ -859,6 +859,6 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($configureUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->model->execute());
+        $this->assertSame($this->resultRedirectMock, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/FromcartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/FromcartTest.php
index 58109d6dc3d256607c2b1ba33b3101d50ede0944..51afe2756ad5e5ad52614dcf20dd0c5fa6b86104 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/FromcartTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/FromcartTest.php
@@ -121,7 +121,7 @@ class FromcartTest extends \PHPUnit_Framework_TestCase
             ->method('getWishlist')
             ->willReturn(null);
 
-        $this->controller->execute();
+        $this->controller->executeInternal();
     }
 
     public function testExecuteNoCartItem()
@@ -169,7 +169,7 @@ class FromcartTest extends \PHPUnit_Framework_TestCase
             ->with($cartUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->controller->execute());
+        $this->assertSame($this->resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecute()
@@ -235,7 +235,7 @@ class FromcartTest extends \PHPUnit_Framework_TestCase
             ->with($cartUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->controller->execute());
+        $this->assertSame($this->resultRedirect, $this->controller->executeInternal());
     }
 
     public function testExecuteWithException()
@@ -271,7 +271,7 @@ class FromcartTest extends \PHPUnit_Framework_TestCase
             ->with($cartUrl)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirect, $this->controller->execute());
+        $this->assertSame($this->resultRedirect, $this->controller->executeInternal());
     }
 
     protected function prepareContext()
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php
index 12f3de81f386ccdb5d1fbbf041b254f40bb3d2ba..f49d76cc0a0cb5ca1db1545541221efdb1f2ff06 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php
@@ -139,7 +139,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('getWishlist')
             ->willReturn(null);
 
-        $this->getController()->execute();
+        $this->getController()->executeInternal();
     }
 
     public function testExecutePassed()
@@ -150,6 +150,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->method('getWishlist')
             ->willReturn($wishlist);
 
-        $this->assertSame($this->resultPageMock, $this->getController()->execute());
+        $this->assertSame($this->resultPageMock, $this->getController()->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/PluginTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/PluginTest.php
index 4c905abca2873d00eb6a8a687ce2dffe937b424c..011eb067e36e32b127def8ae036f8202c8213e1f 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/PluginTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/PluginTest.php
@@ -66,7 +66,7 @@ class PluginTest extends \PHPUnit_Framework_TestCase
     /**
      * @expectedException \Magento\Framework\Exception\NotFoundException
      */
-    public function testBeforeDispatch()
+    public function testBeforeExecute()
     {
         $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', [], [], '', false);
         $indexController = $this->getMock('Magento\Wishlist\Controller\Index\Index', [], [], '', false);
@@ -124,6 +124,6 @@ class PluginTest extends \PHPUnit_Framework_TestCase
             ->with('wishlist/general/active')
             ->willReturn(false);
 
-        $this->getPlugin()->beforeDispatch($indexController, $this->request);
+        $this->getPlugin()->beforeExecute($indexController, $this->request);
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php
index 6b2a6b9a5959f919d05214858aa3643daef44078..787d6ef272cac8cd18eb6874087268b178d33505 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php
@@ -164,7 +164,7 @@ class RemoveTest extends \PHPUnit_Framework_TestCase
             ->with('Magento\Wishlist\Model\Item')
             ->willReturn($item);
 
-        $this->getController()->execute();
+        $this->getController()->executeInternal();
     }
 
     /**
@@ -206,7 +206,7 @@ class RemoveTest extends \PHPUnit_Framework_TestCase
             ->with(2)
             ->willReturn(null);
 
-        $this->getController()->execute();
+        $this->getController()->executeInternal();
     }
 
     public function testExecuteCanNotSaveWishlist()
@@ -291,7 +291,7 @@ class RemoveTest extends \PHPUnit_Framework_TestCase
             ->with($referer)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 
     public function testExecuteCanNotSaveWishlistAndWithRedirect()
@@ -387,6 +387,6 @@ class RemoveTest extends \PHPUnit_Framework_TestCase
             ->with('http://test.com/frontname/module/controller/action')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/SendTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/SendTest.php
index dd6dca9871675141bc97ee50dc555636caa98860..704e5b6fb085299926463b14638faa0b0764f3e6 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/SendTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/SendTest.php
@@ -270,7 +270,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -288,7 +288,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->method('getWishlist')
             ->willReturn(null);
 
-        $this->model->execute();
+        $this->model->executeInternal();
     }
 
     /**
@@ -356,7 +356,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/share')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -514,7 +514,7 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('*/*/share')
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -693,6 +693,6 @@ class SendTest extends \PHPUnit_Framework_TestCase
             ->with('*/*', ['wishlist_id' => $wishlistId])
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/ShareTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/ShareTest.php
index b65e8d11e43adfd7810c269a15ebc5f66f71ac99..e53d854cbefdc123ff7e95d29b955c96db3ba8ce 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/ShareTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/ShareTest.php
@@ -53,7 +53,7 @@ class ShareTest extends \PHPUnit_Framework_TestCase
         $this->resultFactoryMock->expects($this->once())->method('create')->with(ResultFactory::TYPE_PAGE)
             ->willReturn($resultMock);
 
-        $this->assertEquals($resultMock, $this->model->execute());
+        $this->assertEquals($resultMock, $this->model->executeInternal());
     }
 
     public function testExecuteAuthenticationFail()
@@ -61,6 +61,6 @@ class ShareTest extends \PHPUnit_Framework_TestCase
         $this->customerSessionMock->expects($this->once())->method('authenticate')
             ->willReturn(false);
 
-        $this->assertEmpty($this->model->execute());
+        $this->assertEmpty($this->model->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php
index f70306b60257a8203ae0e422e3407646ceebb967..1f811f79563218542fec5d15b46b87c20faec5a1 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php
@@ -186,7 +186,7 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase
             ->with('*/', [])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 
     /**
@@ -218,7 +218,7 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase
             ->with('*/', [])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 
     /**
@@ -286,7 +286,7 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase
             ->with('*/', [])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 
     /**
@@ -407,7 +407,7 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase
             ->with('*/*', ['wishlist_id' => 56])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
     /**
      * Test execute add success critical exception
@@ -545,6 +545,6 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase
             ->with('*/*', ['wishlist_id' => 56])
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->getController()->execute());
+        $this->assertSame($this->resultRedirectMock, $this->getController()->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php
index 09ea2bb42c74aacbf7555c36fa41679d86822f43..984c2e70c164ca1b46b863e535ac81c24bca8117 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php
@@ -132,7 +132,7 @@ class AllcartTest extends \PHPUnit_Framework_TestCase
             ->with($url)
             ->willReturnSelf();
 
-        $this->assertSame($this->resultRedirectMock, $this->allcartController->execute());
+        $this->assertSame($this->resultRedirectMock, $this->allcartController->executeInternal());
     }
 
     public function testExecuteWithNoWishlist()
@@ -145,6 +145,6 @@ class AllcartTest extends \PHPUnit_Framework_TestCase
             ->with('noroute')
             ->willReturnSelf();
 
-        $this->assertSame($this->resultForwardMock, $this->allcartController->execute());
+        $this->assertSame($this->resultForwardMock, $this->allcartController->executeInternal());
     }
 }
diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/CartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/CartTest.php
index c42e48ba37b6da6d7933dcd0c96a4e23cb78c4c5..a917ac8b2ba1698750af529acb383a1d7af48d38 100644
--- a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/CartTest.php
+++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/CartTest.php
@@ -275,7 +275,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($redirectUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     /**
@@ -329,7 +329,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($productUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testExecuteProductException()
@@ -360,7 +360,7 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($refererUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 
     public function testExecuteException()
@@ -391,6 +391,6 @@ class CartTest extends \PHPUnit_Framework_TestCase
             ->with($refererUrl)
             ->willReturnSelf();
 
-        $this->assertEquals($this->resultRedirect, $this->model->execute());
+        $this->assertEquals($this->resultRedirect, $this->model->executeInternal());
     }
 }
diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_footer.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_footer.less
index 65e24732ac4faced36510d6dd1978b4f79899211..8bed4f0da21360a23e2543ffa40bc8b04d56116c 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_footer.less
+++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_footer.less
@@ -54,6 +54,7 @@
 //  Copyright
 .copyright {
     margin-bottom: -.2rem;
+    text-align: left;
     position: relative;
     .link-copyright {
         display: inline-block;
@@ -85,15 +86,10 @@
 
 .footer-legal {
     padding-top: 1rem;
-    text-align: right;
 }
 
-//  Locale switcher
-.locale-switcher {
-    .label {
-        display: block;
-        margin-bottom: 1rem;
-    }
+.footer-legal-system {
+    text-align: right;
 }
 
 //
diff --git a/app/design/frontend/Magento/blank/Magento_CatalogEvent/web/css/source/_widgets.less b/app/design/frontend/Magento/blank/Magento_CatalogEvent/web/css/source/_widgets.less
index 109186faad1dbc8e8ce9371cf2db4ce6171f3d2d..6b3fb6d394804c92bb154da6f633a6e4d628a789 100644
--- a/app/design/frontend/Magento/blank/Magento_CatalogEvent/web/css/source/_widgets.less
+++ b/app/design/frontend/Magento/blank/Magento_CatalogEvent/web/css/source/_widgets.less
@@ -77,7 +77,8 @@
                 .category-name {
                     display: inline-block;
                     .lib-font-size(18);
-                    padding-top: 15px;
+                    padding: 15px 5px 0;
+                    word-break: break-all;
                 }
                 .ticker {
                     .lib-list-reset-styles();
diff --git a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester.php b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester.php
index 01be1182f2b39f7abe1167ec94d8a4c5914f13f2..986be8b00f51a4832106ecb5aa590dc866edc3cb 100644
--- a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester.php
+++ b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester.php
@@ -61,7 +61,7 @@ abstract class CookieTester implements \Magento\Framework\App\ActionInterface
      * @param RequestInterface $request
      * @return mixed
      */
-    abstract protected function execute(RequestInterface $request);
+    abstract protected function executeInternal(RequestInterface $request);
 
     /**
      * Dispatch request
@@ -69,9 +69,9 @@ abstract class CookieTester implements \Magento\Framework\App\ActionInterface
      * @param RequestInterface $request
      * @return \Magento\Framework\App\ResponseInterface
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
-        $result = $this->execute($request);
+        $result = $this->executeInternal($request);
         return $result ? $result : $this->_response;
     }
 }
diff --git a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/DeleteCookie.php b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/DeleteCookie.php
index 0baf5fdce982e2757e031261bc7c6e6e5e835062..755aae0f0612b43633c555330a89d800e91bce0e 100644
--- a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/DeleteCookie.php
+++ b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/DeleteCookie.php
@@ -16,7 +16,7 @@ class DeleteCookie extends \Magento\TestModule1\Controller\CookieTester
      *
      * @return void
      */
-    public function execute(RequestInterface $request)
+    public function executeInternal(RequestInterface $request)
     {
         $cookieName = $request->getParam('cookie_name');
         $this->getCookieManager()->deleteCookie($cookieName);
diff --git a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetPublicCookie.php b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetPublicCookie.php
index 6583b3bad168d0301c1af932d9c291275023eb05..da6cde29dcd01f9d11e8f603e45ccf0897395580 100644
--- a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetPublicCookie.php
+++ b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetPublicCookie.php
@@ -16,7 +16,7 @@ class SetPublicCookie extends \Magento\TestModule1\Controller\CookieTester
      *
      * @return void
      */
-    public function execute(RequestInterface $request)
+    public function executeInternal(RequestInterface $request)
     {
         $publicCookieMetadata = $this->getCookieMetadataFactory()->createPublicCookieMetadata();
 
diff --git a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetSensitiveCookie.php b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetSensitiveCookie.php
index 74ea42b69bc76e40b59a8bcf5aa2d2da23ca542d..cf8cfd054c425600cea14ba451c1d475f92d1b21 100644
--- a/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetSensitiveCookie.php
+++ b/dev/tests/api-functional/_files/Magento/TestModule1/Controller/CookieTester/SetSensitiveCookie.php
@@ -16,7 +16,7 @@ class SetSensitiveCookie extends \Magento\TestModule1\Controller\CookieTester
      *
      * @return void
      */
-    public function execute(RequestInterface $request)
+    public function executeInternal(RequestInterface $request)
     {
         $sensitiveCookieMetadata = $this->getCookieMetadataFactory()->createSensitiveCookieMetadata();
 
diff --git a/dev/tests/integration/etc/di/preferences/ce.php b/dev/tests/integration/etc/di/preferences/ce.php
index fdf00fa6d59b02c3529babbe44abc54722a3c109..674ebe49afca3f053fe8664ffa14c9c09881aefe 100644
--- a/dev/tests/integration/etc/di/preferences/ce.php
+++ b/dev/tests/integration/etc/di/preferences/ce.php
@@ -19,4 +19,5 @@ return [
     'Magento\Framework\View\LayoutInterface' => 'Magento\TestFramework\View\Layout',
     'Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface' =>
         'Magento\TestFramework\Db\ConnectionAdapter',
+    'Magento\Framework\Filesystem\DriverInterface' => 'Magento\Framework\Filesystem\Driver\File'
 ];
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Application.php b/dev/tests/integration/framework/Magento/TestFramework/Application.php
index a1cfdf6923bd939e9c1bea925d7821e9681d59a2..769876f7e38a2b87b8e9cb07eab06a66449f215d 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Application.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Application.php
@@ -442,6 +442,7 @@ class Application
         $dirs = \Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS;
         $this->_ensureDirExists($this->installDir);
         $this->_ensureDirExists($this->_configDir);
+        $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::PUB][DirectoryList::PATH]);
         $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::MEDIA][DirectoryList::PATH]);
         $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::STATIC_VIEW][DirectoryList::PATH]);
         $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::VAR_DIR][DirectoryList::PATH]);
@@ -625,14 +626,15 @@ class Application
         $customDirs = [
             DirectoryList::CONFIG => [$path => "{$this->installDir}/etc"],
             DirectoryList::VAR_DIR => [$path => $var],
-            DirectoryList::MEDIA => [$path => "{$this->installDir}/media"],
-            DirectoryList::STATIC_VIEW => [$path => "{$this->installDir}/pub_static"],
+            DirectoryList::MEDIA => [$path => "{$this->installDir}/pub/media"],
+            DirectoryList::STATIC_VIEW => [$path => "{$this->installDir}/pub/static"],
             DirectoryList::GENERATION => [$path => "{$var}/generation"],
             DirectoryList::CACHE => [$path => "{$var}/cache"],
             DirectoryList::LOG => [$path => "{$var}/log"],
             DirectoryList::SESSION => [$path => "{$var}/session"],
             DirectoryList::TMP => [$path => "{$var}/tmp"],
             DirectoryList::UPLOAD => [$path => "{$var}/upload"],
+            DirectoryList::PUB => [$path => "{$this->installDir}/pub"],
         ];
         return $customDirs;
     }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/TestCase/AbstractConfigFiles.php b/dev/tests/integration/framework/Magento/TestFramework/TestCase/AbstractConfigFiles.php
index b6accb73fb6620a9124e58ba6ad939ca749be4ea..086b657047d964331b353c6498cfee0a4dbec341 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/TestCase/AbstractConfigFiles.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/TestCase/AbstractConfigFiles.php
@@ -51,7 +51,7 @@ abstract class AbstractConfigFiles extends \PHPUnit_Framework_TestCase
             $validateStateMock = $this->getMockBuilder(
                 'Magento\Framework\Config\ValidationStateInterface'
             )->disableOriginalConstructor()->getMock();
-            $validateStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+            $validateStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
 
             $this->_reader = $this->_objectManager->create(
                 $this->_getReaderClassName(),
@@ -79,7 +79,11 @@ abstract class AbstractConfigFiles extends \PHPUnit_Framework_TestCase
         if ($skip) {
             $this->markTestSkipped('There are no xml files in the system for this test.');
         }
-        $domConfig = new \Magento\Framework\Config\Dom($file);
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(false);
+        $domConfig = new \Magento\Framework\Config\Dom($file, $validationStateMock);
+        $errors = [];
         $result = $domConfig->validate($this->_schemaFile, $errors);
         $message = "Invalid XML-file: {$file}\n";
         foreach ($errors as $error) {
diff --git a/dev/tests/integration/testsuite/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/PlaceTest.php b/dev/tests/integration/testsuite/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/PlaceTest.php
index 85b6564400494dbe437a8170d74c4426db8e6928..d970637f4181672d549510a9c99f6bfda9e16347 100644
--- a/dev/tests/integration/testsuite/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/PlaceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/PlaceTest.php
@@ -13,7 +13,7 @@ class PlaceTest extends \Magento\TestFramework\TestCase\AbstractBackendControlle
     /**
      * Test requestToAuthorizenetData returning
      */
-    public function testExecuteAuthorizenetDataReturning()
+    public function testExecuteInternalAuthorizenetDataReturning()
     {
         $requestToAuthorizenetData = ['Authorizenet' => 'data'];
 
@@ -56,11 +56,12 @@ class PlaceTest extends \Magento\TestFramework\TestCase\AbstractBackendControlle
             ]
         );
 
+        /** @var \Magento\Authorizenet\Controller\Adminhtml\Authorizenet\Directpost\Payment\PlaceTesting $controller */
         $controller = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Authorizenet\Controller\Adminhtml\Authorizenet\Directpost\Payment\PlaceTesting',
             ['context' => $context]
         );
-        $controller->execute();
+        $controller->executeInternal();
         $this->assertContains(json_encode($requestToAuthorizenetData), $this->getResponse()->getBody());
     }
 
diff --git a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/AuthTest.php b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/AuthTest.php
index 6d0b535d0c615357944904d508aa28f24df61d55..6ae9fb368c2f18a2052c6d4a9ccbe0141b38ac17 100644
--- a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/AuthTest.php
+++ b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/AuthTest.php
@@ -58,7 +58,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
 
     /**
      * Check not logged state
-     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::executeInternal
      */
     public function testNotLoggedLoginAction()
     {
@@ -72,7 +72,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
 
     /**
      * Check logged state
-     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::executeInternal
      * @magentoDbIsolation enabled
      */
     public function testLoggedLoginAction()
@@ -120,7 +120,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
     }
 
     /**
-     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Logout::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Auth\Logout::executeInternal
      * @magentoDbIsolation enabled
      */
     public function testLogoutAction()
@@ -138,7 +138,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
     }
 
     /**
-     * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedJson::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedJson::executeInternal
      * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedJson::_getDeniedJson
      * @magentoDbIsolation enabled
      */
@@ -158,7 +158,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
     }
 
     /**
-     * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedIframe::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedIframe::executeInternal
      * @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedIframe::_getDeniedIframe
      * @magentoDbIsolation enabled
      */
diff --git a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/IndexTest.php b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/IndexTest.php
index 6575448913a4f7344c1d018423f20c9acd733bf3..c5c1c1da1a4785b5ea853f77275f41efb1f5fd55 100644
--- a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/IndexTest.php
+++ b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/IndexTest.php
@@ -12,7 +12,7 @@ class IndexTest extends \Magento\TestFramework\TestCase\AbstractBackendControlle
 {
     /**
      * Check not logged state
-     * @covers \Magento\Backend\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Index\Index::executeInternal
      */
     public function testNotLoggedIndexAction()
     {
@@ -27,7 +27,7 @@ class IndexTest extends \Magento\TestFramework\TestCase\AbstractBackendControlle
 
     /**
      * Check logged state
-     * @covers \Magento\Backend\Controller\Adminhtml\Index\Index::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Index\Index::executeInternal
      * @magentoDbIsolation enabled
      */
     public function testLoggedIndexAction()
@@ -37,7 +37,7 @@ class IndexTest extends \Magento\TestFramework\TestCase\AbstractBackendControlle
     }
 
     /**
-     * @covers \Magento\Backend\Controller\Adminhtml\Index\GlobalSearch::execute
+     * @covers \Magento\Backend\Controller\Adminhtml\Index\GlobalSearch::executeInternal
      */
     public function testGlobalSearchAction()
     {
diff --git a/dev/tests/integration/testsuite/Magento/BundleImportExport/Model/Export/RowCustomizerTest.php b/dev/tests/integration/testsuite/Magento/BundleImportExport/Model/Export/RowCustomizerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c5adb5a6bd03988ab693459abb3c4991bd93fb75
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/BundleImportExport/Model/Export/RowCustomizerTest.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\BundleImportExport\Model\Export;
+
+/**
+ * @magentoAppArea adminhtml
+ */
+class RowCustomizerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\BundleImportExport\Model\Export\RowCustomizer
+     */
+    private $model;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface
+     */
+    private $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->model = $this->objectManager->create(
+            'Magento\BundleImportExport\Model\Export\RowCustomizer'
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/Bundle/_files/product.php
+     */
+    public function testPrepareData()
+    {
+        $collection = $this->objectManager->get('Magento\Catalog\Model\ResourceModel\Product\Collection');
+        $select = (string)$collection->getSelect();
+        $this->model->prepareData($collection, [1, 2, 3, 4]);
+        $this->assertEquals($select, (string)$collection->getSelect());
+        $result = $this->model->addData([], 3);
+        $this->assertArrayHasKey('bundle_price_type', $result);
+        $this->assertArrayHasKey('bundle_sku_type', $result);
+        $this->assertArrayHasKey('bundle_price_view', $result);
+        $this->assertArrayHasKey('bundle_weight_type', $result);
+        $this->assertArrayHasKey('bundle_values', $result);
+        $this->assertContains('sku=simple,', $result['bundle_values']);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/AttributeTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/AttributeTest.php
index 276f752779f224cedd35b06359147952c5961d69..9f501e36fef65cfde64647a4370511026f8cb6b8 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/AttributeTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/AttributeTest.php
@@ -11,7 +11,7 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Action;
 class AttributeTest extends \Magento\TestFramework\TestCase\AbstractBackendController
 {
     /**
-     * @covers \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Save::execute
+     * @covers \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Save::executeInternal
      *
      * @magentoDataFixture Magento/Catalog/_files/product_simple.php
      */
@@ -46,7 +46,7 @@ class AttributeTest extends \Magento\TestFramework\TestCase\AbstractBackendContr
     }
 
     /**
-     * @covers \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Validate::execute
+     * @covers \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Validate::executeInternal
      *
      * @dataProvider validateActionDataProvider
      *
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/AttributeTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/AttributeTest.php
index 664fdee21987253770e0160a6d31e00009677cc3..479ffa633c865bd8e462f2a4e30b7adb84a90d8a 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/AttributeTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Product/AttributeTest.php
@@ -249,7 +249,7 @@ class AttributeTest extends \Magento\TestFramework\TestCase\AbstractBackendContr
     protected function _getAttributeData()
     {
         return [
-            'is_global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_STORE,
+            'is_global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
             'default_value_text' => '0',
             'default_value_yesno' => '0',
             'default_value_date' => '',
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/Stub/ProductControllerStub.php b/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/Stub/ProductControllerStub.php
index f4d8df15724a1484f9e0dadfe11ab6fb89753f16..87dc9a7363b96931264b9ff00f6f65dfef6c06aa 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/Stub/ProductControllerStub.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/Stub/ProductControllerStub.php
@@ -8,7 +8,7 @@ namespace Magento\Catalog\Helper\Product\Stub;
 
 class ProductControllerStub extends \Magento\Catalog\Controller\Product
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Attribute/Backend/PriceTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Attribute/Backend/PriceTest.php
index 5a8a484ac6ef31d7d20d101ee772c46517fda0a4..1ba80dc05c41e4a0fc66f9bf86d04f2115fa7afb 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Attribute/Backend/PriceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Attribute/Backend/PriceTest.php
@@ -36,12 +36,12 @@ class PriceTest extends \PHPUnit_Framework_TestCase
     {
         /* validate result of setAttribute */
         $this->assertEquals(
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
             $this->_model->getAttribute()->getIsGlobal()
         );
         $this->_model->setScope($this->_model->getAttribute());
         $this->assertEquals(
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
             $this->_model->getAttribute()->getIsGlobal()
         );
     }
@@ -53,7 +53,7 @@ class PriceTest extends \PHPUnit_Framework_TestCase
     {
         $this->_model->setScope($this->_model->getAttribute());
         $this->assertEquals(
-            \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_WEBSITE,
+            \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_WEBSITE,
             $this->_model->getAttribute()->getIsGlobal()
         );
     }
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php
index b87c30697f2c4b1eb4e7711f5d474e4f84258499..8a48ef56be186487d0720dc91a86fdafddcf7664 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php
@@ -32,6 +32,7 @@ $attribute->setData(
         'used_for_sort_by' => 0,
         'frontend_label' => ['Multiselect Attribute'],
         'backend_type' => 'varchar',
+        'backend_model' => 'Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend',
         'option' => [
             'value' => [
                 'option_1' => ['Option 1'],
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..604e317213c9d76357e66200e7b976221abcb9e0
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php
@@ -0,0 +1,174 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CatalogImportExport\Model\Export;
+
+/**
+ * @magentoDataFixtureBeforeTransaction Magento/Catalog/_files/enable_reindex_schedule.php
+ */
+class ProductTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\CatalogImportExport\Model\Export\Product
+     */
+    protected $_model;
+
+    /**
+     * Stock item attributes which must be exported
+     *
+     * @var array
+     */
+    public static $stockItemAttributes = [
+        'qty',
+        'min_qty',
+        'use_config_min_qty',
+        'is_qty_decimal',
+        'backorders',
+        'use_config_backorders',
+        'min_sale_qty',
+        'use_config_min_sale_qty',
+        'max_sale_qty',
+        'use_config_max_sale_qty',
+        'is_in_stock',
+        'notify_stock_qty',
+        'use_config_notify_stock_qty',
+        'manage_stock',
+        'use_config_manage_stock',
+        'use_config_qty_increments',
+        'qty_increments',
+        'use_config_enable_qty_inc',
+        'enable_qty_increments',
+        'is_decimal_divided',
+    ];
+
+    protected function setUp()
+    {
+        parent::setUp();
+
+        $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\CatalogImportExport\Model\Export\Product'
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/CatalogImportExport/_files/product_export_data.php
+     */
+    public function testExport()
+    {
+        $this->_model->setWriter(
+            \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\ImportExport\Model\Export\Adapter\Csv'
+            )
+        );
+        $this->assertNotEmpty($this->_model->export());
+    }
+
+    /**
+     * Verify that all stock item attribute values are exported (aren't equal to empty string)
+     *
+     * @covers \Magento\CatalogImportExport\Model\Export\Product::export
+     * @magentoDataFixture Magento/CatalogImportExport/_files/product_export_data.php
+     */
+    public function testExportStockItemAttributesAreFilled()
+    {
+        $fileWrite = $this->getMock('Magento\Framework\Filesystem\File\Write', [], [], '', false);
+        $directoryMock = $this->getMock('Magento\Framework\Filesystem\Directory\Write', [], [], '', false);
+        $directoryMock->expects($this->any())->method('getParentDirectory')->will($this->returnValue('some#path'));
+        $directoryMock->expects($this->any())->method('isWritable')->will($this->returnValue(true));
+        $directoryMock->expects($this->any())->method('isFile')->will($this->returnValue(true));
+        $directoryMock->expects(
+            $this->any()
+        )->method(
+            'readFile'
+        )->will(
+            $this->returnValue('some string read from file')
+        );
+        $directoryMock->expects($this->once())->method('openFile')->will($this->returnValue($fileWrite));
+
+        $filesystemMock = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
+        $filesystemMock->expects($this->once())->method('getDirectoryWrite')->will($this->returnValue($directoryMock));
+
+        $exportAdapter = new \Magento\ImportExport\Model\Export\Adapter\Csv($filesystemMock);
+
+        $this->_model->setWriter($exportAdapter)->export();
+    }
+
+    /**
+     * Verify header columns (that stock item attributes column headers are present)
+     *
+     * @param array $headerColumns
+     */
+    public function verifyHeaderColumns(array $headerColumns)
+    {
+        foreach (self::$stockItemAttributes as $stockItemAttribute) {
+            $this->assertContains(
+                $stockItemAttribute,
+                $headerColumns,
+                "Stock item attribute {$stockItemAttribute} is absent among header columns"
+            );
+        }
+    }
+
+    /**
+     * Verify row data (stock item attribute values)
+     *
+     * @param array $rowData
+     */
+    public function verifyRow(array $rowData)
+    {
+        foreach (self::$stockItemAttributes as $stockItemAttribute) {
+            $this->assertNotSame(
+                '',
+                $rowData[$stockItemAttribute],
+                "Stock item attribute {$stockItemAttribute} value is empty string"
+            );
+        }
+    }
+
+    /**
+     * Verifies if exception processing works properly
+     *
+     * @magentoDataFixture Magento/CatalogImportExport/_files/product_export_data.php
+     */
+    public function testExceptionInGetExportData()
+    {
+        $exception = new \Exception('Error');
+
+        $rowCustomizerMock = $this->getMockBuilder('Magento\CatalogImportExport\Model\Export\RowCustomizerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $loggerMock = $this->getMockBuilder('\Psr\Log\LoggerInterface')->getMock();
+
+        $directoryMock = $this->getMock('Magento\Framework\Filesystem\Directory\Write', [], [], '', false);
+        $directoryMock->expects($this->any())->method('getParentDirectory')->will($this->returnValue('some#path'));
+        $directoryMock->expects($this->any())->method('isWritable')->will($this->returnValue(true));
+
+        $filesystemMock = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
+        $filesystemMock->expects($this->once())->method('getDirectoryWrite')->will($this->returnValue($directoryMock));
+
+        $exportAdapter = new \Magento\ImportExport\Model\Export\Adapter\Csv($filesystemMock);
+
+        $rowCustomizerMock->expects($this->once())->method('prepareData')->willThrowException($exception);
+        $loggerMock->expects($this->once())->method('critical')->with($exception);
+
+        $collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            '\Magento\Catalog\Model\ResourceModel\Product\Collection'
+        );
+
+        /** @var \Magento\CatalogImportExport\Model\Export\Product $model */
+        $model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\CatalogImportExport\Model\Export\Product',
+            [
+                'rowCustomizer' => $rowCustomizerMock,
+                'logger' => $loggerMock,
+                'collection' => $collection
+            ]
+        );
+
+        $data = $model->setWriter($exportAdapter)->export();
+        $this->assertEmpty($data);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e8205523ec8d5f8a3a6e42b0133a6b2272c2f4e8
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
@@ -0,0 +1,821 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/**
+ * Test class for \Magento\CatalogImportExport\Model\Import\Product
+ *
+ * The "CouplingBetweenObjects" warning is caused by tremendous complexity of the original class
+ *
+ */
+namespace Magento\CatalogImportExport\Model\Import;
+
+use Magento\Framework\App\Bootstrap;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\ImportExport\Model\Import;
+
+/**
+ * Class ProductTest
+ *
+ * @magentoDataFixtureBeforeTransaction Magento/Catalog/_files/enable_reindex_schedule.php
+ */
+class ProductTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\CatalogImportExport\Model\Import\Product
+     */
+    protected $_model;
+
+    /**
+     * @var \Magento\CatalogImportExport\Model\Import\Uploader
+     */
+    protected $_uploader;
+
+    /**
+     * @var \Magento\CatalogImportExport\Model\Import\UploaderFactory
+     */
+    protected $_uploaderFactory;
+
+    /**
+     * @var \Magento\CatalogInventory\Model\Spi\StockStateProviderInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_stockStateProvider;
+
+    protected function setUp()
+    {
+        $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\CatalogImportExport\Model\Import\Product'
+        );
+    }
+
+    /**
+     * Options for assertion
+     *
+     * @var array
+     */
+    protected $_assertOptions = [
+        'is_require' => '_custom_option_is_required',
+        'price' => '_custom_option_price',
+        'sku' => '_custom_option_sku',
+        'sort_order' => '_custom_option_sort_order',
+    ];
+
+    /**
+     * Option values for assertion
+     *
+     * @var array
+     */
+    protected $_assertOptionValues = ['title', 'price', 'sku'];
+
+    /**
+     * Test if visibility properly saved after import
+     *
+     * @magentoDataFixture Magento/Catalog/_files/multiple_products.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveProductsVisibility()
+    {
+        $existingProductIds = [10, 11, 12];
+        $productsBeforeImport = [];
+        foreach ($existingProductIds as $productId) {
+            $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\Catalog\Model\Product'
+            );
+            $product->load($productId);
+            $productsBeforeImport[] = $product;
+        }
+
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_to_import.csv',
+            $directory
+        );
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+
+        $this->_model->importData();
+
+        /** @var $productBeforeImport \Magento\Catalog\Model\Product */
+        foreach ($productsBeforeImport as $productBeforeImport) {
+            /** @var $productAfterImport \Magento\Catalog\Model\Product */
+            $productAfterImport = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\Catalog\Model\Product'
+            );
+            $productAfterImport->load($productBeforeImport->getId());
+
+            $this->assertEquals($productBeforeImport->getVisibility(), $productAfterImport->getVisibility());
+            unset($productAfterImport);
+        }
+
+        unset($productsBeforeImport, $product);
+    }
+
+    /**
+     * Test if stock item quantity properly saved after import
+     *
+     * @magentoDataFixture Magento/Catalog/_files/multiple_products.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveStockItemQty()
+    {
+        $existingProductIds = [10, 11, 12];
+        $stockItems = [];
+        foreach ($existingProductIds as $productId) {
+            /** @var $stockRegistry \Magento\CatalogInventory\Model\StockRegistry */
+            $stockRegistry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\CatalogInventory\Model\StockRegistry'
+            );
+
+            $stockItem = $stockRegistry->getStockItem($productId, 1);
+            $stockItems[$productId] = $stockItem;
+        }
+
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_to_import.csv',
+            $directory
+        );
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+
+        $this->_model->importData();
+
+        /** @var $stockItmBeforeImport \Magento\CatalogInventory\Model\Stock\Item */
+        foreach ($stockItems as $productId => $stockItmBeforeImport) {
+            /** @var $stockRegistry \Magento\CatalogInventory\Model\StockRegistry */
+            $stockRegistry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\CatalogInventory\Model\StockRegistry'
+            );
+
+            $stockItemAfterImport = $stockRegistry->getStockItem($productId, 1);
+
+            $this->assertEquals($stockItmBeforeImport->getQty(), $stockItemAfterImport->getQty());
+            $this->assertEquals(1, $stockItemAfterImport->getIsInStock());
+            unset($stockItemAfterImport);
+        }
+
+        unset($stockItems, $stockItem);
+    }
+
+    /**
+     * Test if stock state properly changed after import
+     *
+     * @magentoDataFixture Magento/Catalog/_files/multiple_products.php
+     * @magentoAppIsolation enabled
+     */
+    public function testStockState()
+    {
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_to_import_with_qty.csv',
+            $directory
+        );
+
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+        $this->_model->importData();
+    }
+
+    /**
+     * Tests adding of custom options with existing and new product
+     *
+     * @magentoDataFixture Magento/Catalog/_files/product_simple.php
+     * @dataProvider getBehaviorDataProvider
+     * @param string $importFile
+     * @param string $sku
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveCustomOptions($importFile, $sku)
+    {
+        $pathToFile = __DIR__ . '/_files/' . $importFile;
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv($pathToFile, $directory);
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+        $this->_model->importData();
+
+        /** @var \Magento\Catalog\Model\Product $productModel */
+        $productModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Catalog\Model\Product'
+        );
+        $product = $productModel->loadByAttribute('sku', $sku);
+
+        $this->assertInstanceOf('Magento\Catalog\Model\Product', $product);
+        $options = $product->getProductOptionsCollection();
+
+        $expectedData = $this->getExpectedOptionsData($pathToFile);
+        $expectedData = $this->mergeWithExistingData($expectedData, $options);
+        $actualData = $this->getActualOptionsData($options);
+
+        // assert of equal type+titles
+        $expectedOptions = $expectedData['options'];
+        // we need to save key values
+        $actualOptions = $actualData['options'];
+        sort($expectedOptions);
+        sort($actualOptions);
+        $this->assertEquals($expectedOptions, $actualOptions);
+
+        // assert of options data
+        $this->assertCount(count($expectedData['data']), $actualData['data']);
+        $this->assertCount(count($expectedData['values']), $actualData['values']);
+        foreach ($expectedData['options'] as $expectedId => $expectedOption) {
+            $elementExist = false;
+            // find value in actual options and values
+            foreach ($actualData['options'] as $actualId => $actualOption) {
+                if ($actualOption == $expectedOption) {
+                    $elementExist = true;
+                    $this->assertEquals($expectedData['data'][$expectedId], $actualData['data'][$actualId]);
+                    if (array_key_exists($expectedId, $expectedData['values'])) {
+                        $this->assertEquals($expectedData['values'][$expectedId], $actualData['values'][$actualId]);
+                    }
+                    unset($actualData['options'][$actualId]);
+                    // remove value in case of duplicating key values
+                    break;
+                }
+            }
+            $this->assertTrue($elementExist, 'Element must exist.');
+        }
+    }
+
+    /**
+     * Data provider for test 'testSaveCustomOptionsDuplicate'
+     *
+     * @return array
+     */
+    public function getBehaviorDataProvider()
+    {
+        return [
+            'Append behavior with existing product' => [
+                '$importFile' => 'product_with_custom_options.csv',
+                '$sku' => 'simple',
+            ],
+            'Append behavior with new product' => [
+                '$importFile' => 'product_with_custom_options_new.csv',
+                '$sku' => 'simple_new',
+            ]
+        ];
+    }
+
+    /**
+     * Test if datetime properly saved after import
+     *
+     * @magentoDataFixture Magento/Catalog/_files/multiple_products.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveDatetimeAttribute()
+    {
+        $existingProductIds = [10, 11, 12];
+        $productsBeforeImport = [];
+        foreach ($existingProductIds as $productId) {
+            $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\Catalog\Model\Product'
+            );
+            $product->load($productId);
+            $productsBeforeImport[$product->getSku()] = $product;
+        }
+
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_to_import_with_datetime.csv',
+            $directory
+        );
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+
+        $this->_model->importData();
+
+        $source->rewind();
+        foreach ($source as $row) {
+            /** @var $productAfterImport \Magento\Catalog\Model\Product */
+            $productBeforeImport = $productsBeforeImport[$row['sku']];
+
+            /** @var $productAfterImport \Magento\Catalog\Model\Product */
+            $productAfterImport = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+                'Magento\Catalog\Model\Product'
+            );
+            $productAfterImport->load($productBeforeImport->getId());
+            $this->assertEquals(
+                @strtotime($row['news_from_date']),
+                @strtotime($productAfterImport->getNewsFromDate())
+            );
+            unset($productAfterImport);
+        }
+        unset($productsBeforeImport, $product);
+    }
+
+    /**
+     * Returns expected product data: current id, options, options data and option values
+     *
+     * @param string $pathToFile
+     * @return array
+     */
+    protected function getExpectedOptionsData($pathToFile)
+    {
+        $productData = $this->csvToArray(file_get_contents($pathToFile));
+        $expectedOptionId = 0;
+        $expectedOptions = [];
+        // array of type and title types, key is element ID
+        $expectedData = [];
+        // array of option data
+        $expectedValues = [];
+        // array of option values data
+        foreach ($productData['data'] as $data) {
+            if (!empty($data['_custom_option_type']) && !empty($data['_custom_option_title'])) {
+                $lastOptionKey = $data['_custom_option_type'] . '|' . $data['_custom_option_title'];
+                $expectedOptionId++;
+                $expectedOptions[$expectedOptionId] = $lastOptionKey;
+                $expectedData[$expectedOptionId] = [];
+                foreach ($this->_assertOptions as $assertKey => $assertFieldName) {
+                    if (array_key_exists($assertFieldName, $data)) {
+                        $expectedData[$expectedOptionId][$assertKey] = $data[$assertFieldName];
+                    }
+                }
+            }
+            if (!empty($data['_custom_option_row_title']) && empty($data['_custom_option_store'])) {
+                $optionData = [];
+                foreach ($this->_assertOptionValues as $assertKey) {
+                    $valueKey = \Magento\CatalogImportExport\Model\Import\Product\Option::COLUMN_PREFIX .
+                        'row_' .
+                        $assertKey;
+                    $optionData[$assertKey] = $data[$valueKey];
+                }
+                $expectedValues[$expectedOptionId][] = $optionData;
+            }
+        }
+
+        return [
+            'id' => $expectedOptionId,
+            'options' => $expectedOptions,
+            'data' => $expectedData,
+            'values' => $expectedValues
+        ];
+    }
+
+    /**
+     * Updates expected options data array with existing unique options data
+     *
+     * @param array $expected
+     * @param \Magento\Catalog\Model\ResourceModel\Product\Option\Collection $options
+     * @return array
+     */
+    protected function mergeWithExistingData(
+        array $expected,
+        \Magento\Catalog\Model\ResourceModel\Product\Option\Collection $options
+    ) {
+        $expectedOptionId = $expected['id'];
+        $expectedOptions = $expected['options'];
+        $expectedData = $expected['data'];
+        $expectedValues = $expected['values'];
+        foreach ($options->getItems() as $option) {
+            $optionKey = $option->getType() . '|' . $option->getTitle();
+            if (!in_array($optionKey, $expectedOptions)) {
+                $expectedOptionId++;
+                $expectedOptions[$expectedOptionId] = $optionKey;
+                $expectedData[$expectedOptionId] = $this->getOptionData($option);
+                if ($optionValues = $this->getOptionValues($option)) {
+                    $expectedValues[$expectedOptionId] = $optionValues;
+                }
+            }
+        }
+
+        return [
+            'id' => $expectedOptionId,
+            'options' => $expectedOptions,
+            'data' => $expectedData,
+            'values' => $expectedValues
+        ];
+    }
+
+    /**
+     *  Returns actual product data: current id, options, options data and option values
+     *
+     * @param \Magento\Catalog\Model\ResourceModel\Product\Option\Collection $options
+     * @return array
+     */
+    protected function getActualOptionsData(\Magento\Catalog\Model\ResourceModel\Product\Option\Collection $options)
+    {
+        $actualOptionId = 0;
+        $actualOptions = [];
+        // array of type and title types, key is element ID
+        $actualData = [];
+        // array of option data
+        $actualValues = [];
+        // array of option values data
+        /** @var $option \Magento\Catalog\Model\Product\Option */
+        foreach ($options->getItems() as $option) {
+            $lastOptionKey = $option->getType() . '|' . $option->getTitle();
+            $actualOptionId++;
+            if (!in_array($lastOptionKey, $actualOptions)) {
+                $actualOptions[$actualOptionId] = $lastOptionKey;
+                $actualData[$actualOptionId] = $this->getOptionData($option);
+                if ($optionValues = $this->getOptionValues($option)) {
+                    $actualValues[$actualOptionId] = $optionValues;
+                }
+            }
+        }
+        return [
+            'id' => $actualOptionId,
+            'options' => $actualOptions,
+            'data' => $actualData,
+            'values' => $actualValues
+        ];
+    }
+
+    /**
+     * Retrieve option data
+     *
+     * @param \Magento\Catalog\Model\Product\Option $option
+     * @return array
+     */
+    protected function getOptionData(\Magento\Catalog\Model\Product\Option $option)
+    {
+        $result = [];
+        foreach (array_keys($this->_assertOptions) as $assertKey) {
+            $result[$assertKey] = $option->getData($assertKey);
+        }
+        return $result;
+    }
+
+    /**
+     * Retrieve option values or false for options which has no values
+     *
+     * @param \Magento\Catalog\Model\Product\Option $option
+     * @return array|bool
+     */
+    protected function getOptionValues(\Magento\Catalog\Model\Product\Option $option)
+    {
+        $values = $option->getValues();
+        if (!empty($values)) {
+            $result = [];
+            /** @var $value \Magento\Catalog\Model\Product\Option\Value */
+            foreach ($values as $value) {
+                $optionData = [];
+                foreach ($this->_assertOptionValues as $assertKey) {
+                    if ($value->hasData($assertKey)) {
+                        $optionData[$assertKey] = $value->getData($assertKey);
+                    }
+                }
+                $result[] = $optionData;
+            }
+            return $result;
+        }
+
+        return false;
+    }
+
+    /**
+     * @magentoDataIsolation enabled
+     * @magentoDataFixture mediaImportImageFixture
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
+     */
+    public function testSaveMediaImage()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/import_media.csv',
+            $directory
+        );
+        $this->_model->setParameters(
+            [
+                'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
+                'entity' => 'catalog_product',
+                'import_images_file_dir' => 'pub/media/import'
+            ]
+        );
+        $appParams = \Magento\TestFramework\Helper\Bootstrap::getInstance()->getBootstrap()->getApplication()->getInitParams()[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS];
+        $uploader = $this->_model->getUploader();
+
+        $destDir = $directory->getRelativePath($appParams[DirectoryList::MEDIA][DirectoryList::PATH] . '/catalog/product');
+        $tmpDir = $directory->getRelativePath($appParams[DirectoryList::MEDIA][DirectoryList::PATH] . '/import');
+
+        $directory->create($destDir);
+        $this->assertTrue($uploader->setDestDir($destDir));
+        $this->assertTrue($uploader->setTmpDir($tmpDir));
+        $errors = $this->_model->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+        $this->_model->importData();
+
+        $resource = $objectManager->get('Magento\Catalog\Model\ResourceModel\Product');
+        $productId = $resource->getIdBySku('simple_new');
+
+        $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Catalog\Model\Product'
+        );
+        $product->load($productId);
+        $gallery = $product->getMediaGalleryImages();
+        $this->assertInstanceOf('Magento\Framework\Data\Collection', $gallery);
+        $items = $gallery->getItems();
+        $this->assertCount(1, $items);
+        $item = array_pop($items);
+        $this->assertInstanceOf('Magento\Framework\DataObject', $item);
+        $this->assertEquals('/m/a/magento_image.jpg', $item->getFile());
+        $this->assertEquals('Image Label', $item->getLabel());
+    }
+
+    /**
+     * Copy a fixture image into media import directory
+     */
+    public static function mediaImportImageFixture()
+    {
+        /** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
+        $mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+            'Magento\Framework\Filesystem'
+        )->getDirectoryWrite(
+            DirectoryList::MEDIA
+        );
+        $mediaDirectory->create('import');
+        $dirPath = $mediaDirectory->getAbsolutePath('import');
+        copy(__DIR__ . '/../../../../Magento/Catalog/_files/magento_image.jpg', "{$dirPath}/magento_image.jpg");
+    }
+
+    /**
+     * Cleanup media import and catalog directories
+     */
+    public static function mediaImportImageFixtureRollback()
+    {
+        /** @var \Magento\Framework\Filesystem\Directory\Write $mediaDirectory */
+        $mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+            'Magento\Framework\Filesystem'
+        )->getDirectoryWrite(
+            DirectoryList::MEDIA
+        );
+        $mediaDirectory->delete('import');
+        $mediaDirectory->delete('catalog');
+    }
+
+    /**
+     * Export CSV string to array
+     *
+     * @param string $content
+     * @param mixed $entityId
+     * @return array
+     */
+    protected function csvToArray($content, $entityId = null)
+    {
+        $data = ['header' => [], 'data' => []];
+
+        $lines = str_getcsv($content, "\n");
+        foreach ($lines as $index => $line) {
+            if ($index == 0) {
+                $data['header'] = str_getcsv($line);
+            } else {
+                $row = array_combine($data['header'], str_getcsv($line));
+                if (!is_null($entityId) && !empty($row[$entityId])) {
+                    $data['data'][$row[$entityId]] = $row;
+                } else {
+                    $data['data'][] = $row;
+                }
+            }
+        }
+        return $data;
+    }
+
+    /**
+     * Tests that no products imported if source file contains errors
+     *
+     * In this case, the second product data has an invalid attribute set.
+     *
+     * @magentoDbIsolation enabled
+     */
+    public function testInvalidSkuLink()
+    {
+        // import data from CSV file
+        $pathToFile = __DIR__ . '/_files/products_to_import_invalid_attribute_set.csv';
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Framework\Filesystem'
+        );
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv($pathToFile, $directory);
+        $errors = $this->_model->setParameters(
+            [
+                'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
+                'entity' => 'catalog_product'
+            ]
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 1);
+        $this->assertEquals(
+            'Invalid value for Attribute Set column (set doesn\'t exist?)',
+            $errors->getErrorByRowNumber(1)[0]->getErrorMessage()
+        );
+        $this->_model->importData();
+
+        $productCollection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Catalog\Model\ResourceModel\Product\Collection'
+        );
+
+        $products = [];
+        /** @var $product \Magento\Catalog\Model\Product */
+        foreach ($productCollection as $product) {
+            $products[$product->getSku()] = $product;
+        }
+        $this->assertArrayNotHasKey("simple1", $products, "Simple Product should not have been imported");
+        $this->assertArrayNotHasKey("simple3", $products, "Simple Product 3 should not have been imported");
+        $this->assertArrayNotHasKey("simple2", $products, "Simple Product2 should not have been imported");
+    }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/products_with_multiselect_attribute.php
+     * @magentoAppIsolation enabled
+     */
+    public function testValidateInvalidMultiselectValues()
+    {
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Framework\Filesystem'
+        );
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_with_invalid_multiselect_values.csv',
+            $directory
+        );
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 1);
+        $this->assertEquals(
+            "Value for 'multiselect_attribute' attribute contains incorrect value, "
+            ."see acceptable values on settings specified for Admin",
+            $errors->getErrorByRowNumber(1)[0]->getErrorMessage()
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/categories.php
+     * @magentoDataFixture Magento/Store/_files/website.php
+     * @magentoDataFixture Magento/Store/_files/core_fixturestore.php
+     * @magentoDataFixture Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php
+     * @magentoDataFixture Magento/ConfigurableProduct/_files/configurable_attribute.php
+     * @magentoAppIsolation enabled
+     */
+    public function testProductsWithMultipleStores()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+        $filesystem = $objectManager->create('Magento\Framework\Filesystem');
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv(
+            __DIR__ . '/_files/products_multiple_stores.csv',
+            $directory
+        );
+        $errors = $this->_model->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND, 'entity' => 'catalog_product']
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+
+        $this->_model->importData();
+
+        /** @var \Magento\Catalog\Model\Product $product */
+        $product = $objectManager->create('Magento\Catalog\Model\Product');
+        $id = $product->getIdBySku('Configurable 03');
+        $product->load($id);
+        $this->assertEquals('1', $product->getHasOptions());
+
+        $objectManager->get('Magento\Store\Model\StoreManagerInterface')->setCurrentStore('fixturestore');
+
+        /** @var \Magento\Catalog\Model\Product $simpleProduct */
+        $simpleProduct = $objectManager->create('Magento\Catalog\Model\Product');
+        $id = $simpleProduct->getIdBySku('Configurable 03-Option 1');
+        $simpleProduct->load($id);
+        $this->assertTrue(count($simpleProduct->getWebsiteIds()) == 2);
+        $this->assertEquals('Option Label', $simpleProduct->getAttributeText('attribute_with_option'));
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testProductWithInvalidWeight()
+    {
+        // import data from CSV file
+        $pathToFile = __DIR__ . '/_files/product_to_import_invalid_weight.csv';
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Framework\Filesystem'
+        );
+
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv($pathToFile, $directory);
+        $errors = $this->_model->setSource(
+            $source
+        )->setParameters(
+            ['behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND]
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 1);
+        $this->assertEquals(
+            "Value for 'weight' attribute contains incorrect value",
+            $errors->getErrorByRowNumber(1)[0]->getErrorMessage()
+        );
+    }
+
+    /**
+     * @magentoAppArea adminhtml
+     * @dataProvider categoryTestDataProvider
+     * @magentoDbIsolation enabled
+     * @magentoAppIsolation enabled
+     */
+    public function testProductCategories($fixture, $separator)
+    {
+        // import data from CSV file
+        $pathToFile = __DIR__ . '/_files/' . $fixture;
+        $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Framework\Filesystem'
+        );
+
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = new \Magento\ImportExport\Model\Import\Source\Csv($pathToFile, $directory);
+        $errors = $this->_model->setSource(
+            $source
+        )->setParameters(
+            [
+                'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
+                'entity' => 'catalog_product',
+                Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR => $separator
+            ]
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+        $this->_model->importData();
+
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $resource = $objectManager->get('Magento\Catalog\Model\ResourceModel\Product');
+        $productId = $resource->getIdBySku('simple1');
+        $this->assertTrue(is_numeric($productId));
+        /** @var \Magento\Catalog\Model\Product $product */
+        $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Catalog\Model\Product'
+        );
+        $product->load($productId);
+        $this->assertFalse($product->isObjectNew());
+        $categories = $product->getCategoryIds();
+        $this->assertTrue(count($categories) == 2);
+    }
+
+    /**
+     * @return array
+     */
+    public function categoryTestDataProvider()
+    {
+        return [
+            ['import_new_categories_default_separator.csv', ','],
+            ['import_new_categories_custom_separator.csv', '|']
+        ];
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_media.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_media.csv
new file mode 100644
index 0000000000000000000000000000000000000000..608b7569826e7614b3454054d596077f6e3038d1
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_media.csv
@@ -0,0 +1,2 @@
+sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,custom_options,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values,associated_skus
+simple_new,,Default,simple,,base,New Product,,,,1,Taxable Goods,"Catalog, Search",10,,,,new-product,New Product,New Product,New Product ,magento_image.jpg,,magento_image.jpg,,magento_image.jpg,,10/20/15 07:05,10/20/15 07:05,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,quantity_and_stock_status=In Stock,required_options=1",100,0,1,0,0,1,1,1,10000,1,1,1,1,1,0,1,1,0,0,0,1,,,,magento_image.jpg,Image Label,,,,,,,,
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_custom_separator.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_custom_separator.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c0deb9b289fd33ec9dbb2314f4494fd24d13dd65
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_custom_separator.csv
@@ -0,0 +1,2 @@
+sku,product_type,store_view_code,name,price,attribute_set_code,categories,product_websites
+simple1,simple,,"simple 2",25,Default,"Default Category/Category 1|Default Category/Category 2",base
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_default_separator.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_default_separator.csv
new file mode 100644
index 0000000000000000000000000000000000000000..9bf687dec4632f79a42b3859e0297c21f7984030
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/import_new_categories_default_separator.csv
@@ -0,0 +1,2 @@
+sku,product_type,store_view_code,name,price,attribute_set_code,categories,product_websites,url_key
+simple1,simple,,"simple 1",25,Default,"Default Category/Category 1,Default Category/Category 2",base,simple1-ds
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/product_with_custom_options_new.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/product_with_custom_options_new.csv
index 5211dd576ae6a16a71cd9f3e03a8b9b6b000db78..9c4e884646335f655a6995dff184af3091b116ab 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/product_with_custom_options_new.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/product_with_custom_options_new.csv
@@ -1,2 +1,2 @@
-sku,store_view_code,attribute_set_code,product_type,categories,product_websites,color,cost,country_of_manufacture,created_at,custom_design,custom_design_from,custom_design_to,custom_layout_update,description,gallery,gift_message_available,has_options,image,image_label,manufacturer,media_gallery,meta_description,meta_keyword,meta_title,minimal_price,msrp,msrp_display_actual_price_type,msrp_enabled,name,news_from_date,news_to_date,options_container,page_layout,price,required_options,short_description,small_image,small_image_label,special_from_date,special_price,special_to_date,product_online,tax_class_name,thumbnail,thumbnail_label,updated_at,url_key,url_path,visibility,weight,qty,min_qty,use_config_min_qty,is_qty_decimal,backorders,use_config_backorders,min_sale_qty,use_config_min_sale_qty,max_sale_qty,use_config_max_sale_qty,is_in_stock,notify_stock_qty,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,_related_sku,_related_position,_crosssell_sku,_crosssell_position,_upsell_sku,_upsell_position,_associated_sku,_associated_default_qty,_associated_position,_tier_price_website,_tier_price_customer_group,_tier_price_qty,_tier_price_price,_group_price_website,_group_price_customer_group,_group_price_price,_media_attribute_id,_media_image,_media_label,_media_position,_media_is_disabled,custom_options
-simple_new,,Default,simple,,,base,,,,,,,,,,,1,,,,,,,,,,,,New Product,,,Block after Info Column,,10,1,,,,,,,1,Taxable Goods,,,2012-07-13 12:04:17,new-product,new-product.html,"Catalog, Search",,100,0,1,0,0,1,1,1,0,1,1,,1,0,1,1,0,1,0,0,,,,,,,,,,,,,,,,,,,,,,"name=Test Field Title,type=field,required=1;sku=1-text,price=0,price_type=fixed|name=Test Date and Time Title,type=date_time,required=1,price=2,option_title=custom option 1,sku=2-date|name=New Select,type=drop_down,required=1,price=3,option_title=Option 1,sku=3-1-select|name=New Select,type=drop_down,required=1,price=3,option_title=Option 2,sku=3-2-select|name=New Radio,type=radio,required=1,price=3,option_title=Option 1,sku=4-1-radio|name=New Radio,type=radio,required=1,price=3,option_title=Option 2,sku=4-2-radio"
+sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,custom_options,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values,associated_skus
+simple_new,,Default,simple,,base,"New Product",,,,1,"Taxable Goods","Catalog, Search",10.0000,,,,new-product,"New Product","New Product","New Product ",,,,,,,"2015-10-20 07:05:38","2015-10-20 07:05:38",,,"Block after Info Column",,,,,,,,,,,,,"has_options=1,quantity_and_stock_status=In Stock,required_options=1",100.0000,0.0000,1,0,0,1,1.0000,1,10000.0000,1,1,1.0000,1,1,0,1,1.0000,0,0,0,1,,,,,,,"name=New Radio,type=radio,required=1,price=3.0000,price_type=fixed,sku=4-1-radio,option_title=Option 1|name=New Radio,type=radio,required=1,price=3.0000,price_type=fixed,sku=4-2-radio,option_title=Option 2|name=New Select,type=drop_down,required=1,price=3.0000,price_type=fixed,sku=3-1-select,option_title=Option 1|name=New Select,type=drop_down,required=1,price=3.0000,price_type=fixed,sku=3-2-select,option_title=Option2|name=Test Date and Time Title,type=date_time,required=1,price=2.0000,price_type=fixed,sku=2-date|name=Test Field Title,type=field,required=1,price=0.0000,price_type=fixed,sku=1-text",,,,,,
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_multiple_stores.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_multiple_stores.csv
index 10299936a27ea2d3283e4d9b49ca93c9ea8be71f..d7876f612233ccdcaf5c37fe78aded58edc75ad9 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_multiple_stores.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_multiple_stores.csv
@@ -1,5 +1,5 @@
-sku,store_view_code,attribute_set_code,product_type,categories,product_websites,test_configurable,cost,country_of_manufacture,created_at,custom_design,custom_design_from,custom_design_to,custom_layout_update,description,gallery,gift_message_available,gift_wrapping_available,gift_wrapping_price,has_options,image,image_label,is_returnable,manufacturer,meta_description,meta_keyword,meta_title,minimal_price,msrp,msrp_display_actual_price_type,msrp_enabled,name,news_from_date,news_to_date,options_container,page_layout,price,quantity_and_stock_status,related_tgtr_position_behavior,related_tgtr_position_limit,required_options,short_description,attribute_with_option,small_image,small_image_label,special_from_date,special_price,special_to_date,product_online,tax_class_name,thumbnail,thumbnail_label,updated_at,upsell_tgtr_position_behavior,upsell_tgtr_position_limit,url_key,visibility,weight,qty,min_qty,use_config_min_qty,is_qty_decimal,backorders,use_config_backorders,min_sale_qty,use_config_min_sale_qty,max_sale_qty,use_config_max_sale_qty,is_in_stock,notify_stock_qty,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,_related_sku,_related_position,_crosssell_sku,_crosssell_position,_upsell_sku,_upsell_position,configurable_variations,configurable_variation_prices,configurable_variation_labels
-Configurable 03-option_0,,Default,virtual,Default Category/Category 1/Category 1.1,base,Option 1,,,2014-06-13 07:34:02,,,,,,,,,,0,,,Use config,,Configurable 03 ,Configurable 03,Configurable 03,,,Use config,Use config,Configurable 03-option_0,,,Block after Info Column,,10,In Stock,,,0,,Option Label,,,,,,1,Taxable Goods,,,2014-06-13 07:35:59,,,configurable-03-option11,Search,,99999,0,1,0,0,1,1,1,0,1,1,,1,1,1,1,0,1,0,0,,,,,,,,,
-Configurable 03-option_0,fixturestore,Default,virtual,Default Category/Category 1/Category 1.1,base,Option 1,,,2014-06-13 07:34:02,,,,,,,,,,,,,,,,,,,,,,Configurable 03-option_0,,,Block after Info Column,,10,,,,0,,Option Label,,,,,,,,,,,,,,Search,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Configurable 03-option_1,,Default,virtual,Default Category/Category 1/Category 1.1,base,Option 2,,,2014-06-13 07:34:05,,,,,,,,,,0,,,Use config,,Configurable 03 ,Configurable 03,Configurable 03,,,Use config,Use config,Configurable 03-option_1,,,Block after Info Column,,10,In Stock,,,0,,,,,,,,1,Taxable Goods,,,2014-06-13 07:34:05,,,configurable-03-option12,Search,,99999,0,1,0,0,1,1,1,0,1,1,,1,1,1,1,0,1,0,0,,,,,,,,,
-Configurable 03,,Default,configurable,Default Category/Category 1/Category 1.1,base,,,,2014-06-13 07:34:07,,,,,,,,,,1,,,Use config,,Configurable 03 ,Configurable 03,Configurable 03,,,Use config,Use config,Configurable 03,,,Block after Info Column,,10,In Stock,,,1,,,,,,,,1,Taxable Goods,,,2014-06-13 07:36:32,,,Configurable-03-11,"Catalog, Search",,0,0,1,0,0,1,1,1,0,1,1,,1,1,1,1,0,1,0,0,,,,,,,"sku=Configurable 03-option_0,test_configurable=Option 1,display=1|sku=Configurable 03-option_1,test_configurable=Option 2,display=1","name=test_configurable,value=Option 1,price=1|name=test_configurable,value=Option 2,price=2",
+sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values,configurable_variations,configurable_variation_labels,associated_skus
+"Configurable 03-Option 1",,Default,simple,"Default Category/Category 1/Category 1.1","base,test","Configurable 03-Option 1",,,,1,"Taxable Goods","Not Visible Individually",10.0000,,,,configurable-03-option-1,"Configurable 03","Configurable 03","Configurable 03 ",,,,,,,"2015-10-23 00:35:03","2015-10-23 01:00:25",,,"Block after Info Column",,,,,,,,,,,"Use config",,"attribute_with_option=Option Label,has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 1",99999.0000,0.0000,0,0,0,1,1.0000,0,0.0000,0,1,,1,1,0,0,1.0000,0,0,0,1,,,,,,,,,,,,,,
+"Configurable 03-Option 1",fixturestore,Default,"simple",,,"Configurable 03-Option 1 fixturestore",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+"Configurable 03-Option 2",,Default,simple,"Default Category/Category 1/Category 1.1","base,test","Configurable 03-Option 2",,,,1,"Taxable Goods","Not Visible Individually",10.0000,,,,configurable-03-option-2,"Configurable 03","Configurable 03","Configurable 03 ",,,,,,,"2015-10-23 00:35:03","2015-10-23 00:35:03",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=0,quantity_and_stock_status=In Stock,required_options=0,test_configurable=Option 2",99999.0000,0.0000,0,0,0,1,1.0000,0,0.0000,0,1,,1,1,0,0,1.0000,0,0,0,1,,,,,,,,,,,,,,
+"Configurable 03",,Default,configurable,"Default Category/Category 1/Category 1.1","base,test","Configurable 03",,,,1,"Taxable Goods","Catalog, Search",10.0000,,,,configurable-03,"Configurable 03","Configurable 03","Configurable 03 ",,,,,,,"2015-10-23 00:35:03","2015-10-23 00:35:03",,,"Block after Info Column",,,,,,,,,,,"Use config",,"has_options=1,quantity_and_stock_status=In Stock,required_options=0",0.0000,0.0000,0,0,0,1,1.0000,0,0.0000,0,1,,1,0,0,0,1.0000,0,0,0,1,,,,,,,,,,,,"sku=Configurable 03-Option 1,test_configurable=Option 1|sku=Configurable 03-Option 2,test_configurable=Option 2",test_configurable=test_configurable,
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import.csv
index d8d879193d82e4526a46ee09b9226a5885bd2e45..a107fdff250ec48bcd00ca179f56225df2fbe2c3 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import.csv
@@ -1,5 +1,4 @@
-sku,store_view_code,name,price
-simple1,,"simple 1",25
-simple1,German,"simple 1 German",
-simple2,,"simple 2",34
-simple3,,"simple 3",58
+sku,product_type,store_view_code,name,price,attribute_set_code
+simple1,simple,,"simple 1",25,Default
+simple2,simple,,"simple 2",34,Default
+simple3,simple,,"simple 3",58,Default
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_invalid_attribute_set.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_invalid_attribute_set.csv
index ae16f0735a163d9138cf7124cd5b88d9e078bed6..59b8b7b4895603491648cb1f98beb98bb3c19dc6 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_invalid_attribute_set.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_invalid_attribute_set.csv
@@ -1,4 +1,4 @@
-sku,price,name,product_type,_attribute_set,_upsell_sku,description
+sku,price,name,product_type,attribute_set_code,_upsell_sku,description
 simple1,25,"Simple Product",simple,Default,,description
-simple2,NULL,"Simple Product2",invalid attribute set,Default,,HiThere
+simple2,10,"Simple Product2",simple,invalid attribute set,,description
 simple3,58,"Simple Product 3",simple,Default,simple2,description
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_datetime.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_datetime.csv
index a45a871fab6918889074f01fbeafa142f727eab0..ae7e27dbd95c0984548142c93c5d4e35afa0cc20 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_datetime.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_datetime.csv
@@ -1,4 +1,4 @@
 sku,news_from_date
-simple1,"1/1/2015 20:00 pm"
-simple2,"10/8/2012 23:58 pm"
-simple3,"12/31/1998 17:30 pm"
+simple1,"1/1/2015 20:00"
+simple2,"10/8/2012 23:58"
+simple3,"12/31/1998 17:30"
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_qty.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_qty.csv
index 7872a16727763867dcf4d28723dd26a5d970f6c3..3abf9cecb6ff1e1e34256d25b1eacb8959734575 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_qty.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_qty.csv
@@ -1,2 +1,2 @@
-sku,store_view_code,name,price,qty,product_type,attribute_set_code,manage_stock
-simple1,,"simple 1",25,0.0000,simple,Default,1
+sku,store_view_code,attribute_set_code,product_type,categories,product_websites,name,description,short_description,weight,product_online,tax_class_name,visibility,price,special_price,special_price_from_date,special_price_to_date,url_key,meta_title,meta_keywords,meta_description,base_image,base_image_label,small_image,small_image_label,thumbnail_image,thumbnail_image_label,created_at,updated_at,new_from_date,new_to_date,display_product_options_in,map_price,msrp_price,map_enabled,gift_message_available,custom_design,custom_design_from,custom_design_to,custom_layout_update,page_layout,product_options_container,msrp_display_actual_price_type,country_of_manufacture,additional_attributes,qty,out_of_stock_qty,use_config_min_qty,is_qty_decimal,allow_backorders,use_config_backorders,min_cart_qty,use_config_min_sale_qty,max_cart_qty,use_config_max_sale_qty,is_in_stock,notify_on_stock_below,use_config_notify_stock_qty,manage_stock,use_config_manage_stock,use_config_qty_increments,qty_increments,use_config_enable_qty_inc,enable_qty_increments,is_decimal_divided,website_id,related_skus,crosssell_skus,upsell_skus,additional_images,additional_image_labels,hide_from_product_page,custom_options,bundle_price_type,bundle_sku_type,bundle_price_view,bundle_weight_type,bundle_values,associated_skus
+simple_new,,Default,simple,,base,New Product,,,,1,Taxable Goods,"Catalog, Search",10,,,,new-product,New Product,New Product,New Product ,,,,,,,10/20/15 07:05,10/20/15 07:05,,,Block after Info Column,,,,,,,,,,,,,"has_options=1,quantity_and_stock_status=In Stock,required_options=1",100,0,1,0,0,1,1,1,10000,1,1,1,1,1,0,1,1,0,0,0,1,,,,,,,,,,,,,
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_with_invalid_multiselect_values.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_with_invalid_multiselect_values.csv
index b6da8449c9ccd80e53d52aab642c3e7f51fb5184..a7cc848ea4bcfed1f7ed9c8f67de728f49aa40fe 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_with_invalid_multiselect_values.csv
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_with_invalid_multiselect_values.csv
@@ -1,3 +1,3 @@
-sku,store_view_code,product_type,name,price,multiselect_attribute
-simple_ms_1,,simple,"With Multiselect 1",10,Option 1
-simple_ms_2,,simple,"With Multiselect 2",10,"Option 5,Option 2,Option 3"
+sku,store_view_code,product_type,name,price,additional_attributes
+simple_ms_1,,simple,"With Multiselect 1",10,"multiselect_attribute=Option 1"
+simple_ms_2,,simple,"With Multiselect 2",10,"multiselect_attribute=Option 5|Option 2|Option 3"
diff --git a/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Config/Backend/ManagestockTest.php b/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Config/Backend/ManagestockTest.php
index 07fcc69d89ca9fae58b1b6e7855aca81c06181de..8f63143bddcd5d90b041a5ece677b8fc677bd624 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Config/Backend/ManagestockTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Config/Backend/ManagestockTest.php
@@ -54,6 +54,7 @@ class ManagestockTest extends \PHPUnit_Framework_TestCase
             Bootstrap::getObjectManager()->get('Magento\Framework\Model\Context'),
             Bootstrap::getObjectManager()->get('Magento\Framework\Registry'),
             Bootstrap::getObjectManager()->get('Magento\Framework\App\Config\ScopeConfigInterface'),
+            Bootstrap::getObjectManager()->get('Magento\Framework\App\Cache\TypeListInterface'),
             $stockManagement,
             Bootstrap::getObjectManager()->get('Magento\CatalogInventory\Model\Indexer\Stock\Processor'),
             Bootstrap::getObjectManager()->get('Magento\Config\Model\ResourceModel\Config')
diff --git a/dev/tests/integration/testsuite/Magento/Config/Model/Config/Backend/Image/AdapterTest.php b/dev/tests/integration/testsuite/Magento/Config/Model/Config/Backend/Image/AdapterTest.php
index fc7c961049df6834b616e499bbd2759904b3dba3..3bdc1817762a2b56bbb4d599d58b537dabe9517d 100644
--- a/dev/tests/integration/testsuite/Magento/Config/Model/Config/Backend/Image/AdapterTest.php
+++ b/dev/tests/integration/testsuite/Magento/Config/Model/Config/Backend/Image/AdapterTest.php
@@ -18,6 +18,7 @@ class AdapterTest extends \PHPUnit_Framework_TestCase
         $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Config\Model\Config\Backend\Image\Adapter'
         );
+        $this->_model->setPath('path');
     }
 
     /**
diff --git a/dev/tests/integration/testsuite/Magento/ConfigurableImportExport/Model/Export/RowCustomizerTest.php b/dev/tests/integration/testsuite/Magento/ConfigurableImportExport/Model/Export/RowCustomizerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9dc933734fd5ca8447851bb1097246738318867b
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/ConfigurableImportExport/Model/Export/RowCustomizerTest.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\ConfigurableImportExport\Model\Export;
+
+/**
+ * @magentoAppArea adminhtml
+ */
+class RowCustomizerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\ConfigurableImportExport\Model\Export\RowCustomizer
+     */
+    private $model;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface
+     */
+    private $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->model = $this->objectManager->create(
+            'Magento\ConfigurableImportExport\Model\Export\RowCustomizer'
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/ConfigurableProduct/_files/product_configurable.php
+     */
+    public function testPrepareData()
+    {
+        $collection = $this->objectManager->get('Magento\Catalog\Model\ResourceModel\Product\Collection');
+        $select = (string)$collection->getSelect();
+        $this->model->prepareData($collection, [1, 2, 3, 4]);
+        $this->assertEquals($select, (string)$collection->getSelect());
+        $result = $this->model->addData([], 1);
+        $this->assertArrayHasKey('configurable_variations', $result);
+        $this->assertArrayHasKey('configurable_variation_labels', $result);
+        $this->assertEquals(
+            'sku=simple_10,test_configurable=Option 1|sku=simple_20,test_configurable=Option 2',
+            $result['configurable_variations']
+        );
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Cookie/Model/Config/Backend/DomainTest.php b/dev/tests/integration/testsuite/Magento/Cookie/Model/Config/Backend/DomainTest.php
index 7f469f42e7bdb607c5abe58f9277b4a1e9eeb342..5f24039ee0560f55c49713d24469311fad18144c 100644
--- a/dev/tests/integration/testsuite/Magento/Cookie/Model/Config/Backend/DomainTest.php
+++ b/dev/tests/integration/testsuite/Magento/Cookie/Model/Config/Backend/DomainTest.php
@@ -27,6 +27,7 @@ class DomainTest extends \PHPUnit_Framework_TestCase
             'Magento\Cookie\Model\Config\Backend\Domain'
         );
         $domain->setValue($value);
+        $domain->setPath('path');
         try {
             $domain->save();
             if ($exceptionMessage) {
diff --git a/dev/tests/integration/testsuite/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRatesTest.php b/dev/tests/integration/testsuite/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRatesTest.php
index f170ad50089fcf44ae3add9c1ff078f0fb027e06..7e845870171ff0f072b8e5720d80f2c93f4d5f43 100644
--- a/dev/tests/integration/testsuite/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRatesTest.php
+++ b/dev/tests/integration/testsuite/Magento/CurrencySymbol/Controller/Adminhtml/System/Currency/FetchRatesTest.php
@@ -121,6 +121,6 @@ class FetchRatesTest extends \Magento\TestFramework\TestCase\AbstractBackendCont
             $context,
             $registry
         );
-        $action->execute();
+        $action->executeInternal();
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Developer/Model/Config/Backend/AllowedIpsTest.php b/dev/tests/integration/testsuite/Magento/Developer/Model/Config/Backend/AllowedIpsTest.php
index d34c64a96dc8291d63d71ad5a62f66e890e1cf99..3b23c65d06b6c37a99dd90bbb14ad1f9ba50e057 100644
--- a/dev/tests/integration/testsuite/Magento/Developer/Model/Config/Backend/AllowedIpsTest.php
+++ b/dev/tests/integration/testsuite/Magento/Developer/Model/Config/Backend/AllowedIpsTest.php
@@ -22,6 +22,7 @@ class AllowedIpsTest extends \PHPUnit_Framework_TestCase
             'Magento\Developer\Model\Config\Backend\AllowedIps'
         );
         $model->setValue($value);
+        $model->setPath('path');
         $model->beforeSave();
         $model->save();
         $this->assertEquals($expected, $model->getValue());
diff --git a/dev/tests/integration/testsuite/Magento/Paypal/Controller/Billing/AgreementTest.php b/dev/tests/integration/testsuite/Magento/Paypal/Controller/Billing/AgreementTest.php
index 4a606bea53b3769508525f3314b38937e6b3ca69..1b098debc33f502aca6a1b0b62c26bbdfd346975 100644
--- a/dev/tests/integration/testsuite/Magento/Paypal/Controller/Billing/AgreementTest.php
+++ b/dev/tests/integration/testsuite/Magento/Paypal/Controller/Billing/AgreementTest.php
@@ -106,7 +106,7 @@ class AgreementTest extends \Magento\TestFramework\TestCase\AbstractController
         $customerSession->setCustomerId($fixtureCustomerId);
 
         /** Execute SUT */
-        $billingAgreementController->execute();
+        $billingAgreementController->executeInternal();
 
         /** Ensure that billing agreement record was created in the DB */
         /** @var \Magento\Paypal\Model\ResourceModel\Billing\Agreement\Collection $billingAgreementCollection */
diff --git a/dev/tests/integration/testsuite/Magento/Paypal/Model/Config/Structure/Reader/ReaderTest.php b/dev/tests/integration/testsuite/Magento/Paypal/Model/Config/Structure/Reader/ReaderTest.php
index 03d1d6f24718867de52f59606aec56fb92ec32e0..274825a41ca5addef387d465c7d45f34ed881e1b 100644
--- a/dev/tests/integration/testsuite/Magento/Paypal/Model/Config/Structure/Reader/ReaderTest.php
+++ b/dev/tests/integration/testsuite/Magento/Paypal/Model/Config/Structure/Reader/ReaderTest.php
@@ -62,7 +62,7 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         $this->fileUtility = \Magento\Framework\App\Utility\Files::init();
 
         $this->validationStateMock = $this->getMockBuilder('Magento\Framework\Config\ValidationStateInterface')
-            ->setMethods(['isValidated'])
+            ->setMethods(['isValidationRequired'])
             ->getMockForAbstractClass();
         $this->schemaLocatorMock = $this->getMockBuilder('Magento\Config\Model\Config\SchemaLocator')
             ->disableOriginalConstructor()
@@ -72,7 +72,7 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
             ->getMockForAbstractClass();
 
         $this->validationStateMock->expects($this->atLeastOnce())
-            ->method('isValidated')
+            ->method('isValidationRequired')
             ->willReturn(false);
         $this->schemaLocatorMock->expects($this->atLeastOnce())
             ->method('getPerFileSchema')
diff --git a/dev/tests/integration/testsuite/Magento/Reports/Model/ResourceModel/Review/Product/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Reports/Model/ResourceModel/Review/Product/CollectionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d8c0eddd7ec592ed9902c641b9b8e48f111aa582
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Reports/Model/ResourceModel/Review/Product/CollectionTest.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Reports\Model\ResourceModel\Review\Product;
+
+/**
+ * @magentoAppArea adminhtml
+ */
+class CollectionTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\ResourceModel\Review\Product\Collection
+     */
+    private $_collection;
+
+    protected function setUp()
+    {
+        $this->_collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Reports\Model\ResourceModel\Review\Product\Collection'
+        );
+    }
+
+    public function testGetSelect()
+    {
+        $select = (string)$this->_collection->getSelect();
+        $search = '/SUM\(table_rating.percent\)\/COUNT\(table_rating.rating_id\) AS `avg_rating`'
+            . '[\s\S]+SUM\(table_rating.percent_approved\)\/COUNT\(table_rating.rating_id\) AS `avg_rating_approved`'
+            . '[\s\S]+LEFT JOIN `.*rating_option_vote_aggregated` AS `table_rating`/';
+
+        $this->assertRegExp($search, $select);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Sales/Controller/Adminhtml/Order/Stub/OrderCreateStub.php b/dev/tests/integration/testsuite/Magento/Sales/Controller/Adminhtml/Order/Stub/OrderCreateStub.php
index 39153b5837067d058f67daa6eaaaf720ea3a3cbf..0169bf3ff26aa7869b889ec74206a7bd63f9edbe 100644
--- a/dev/tests/integration/testsuite/Magento/Sales/Controller/Adminhtml/Order/Stub/OrderCreateStub.php
+++ b/dev/tests/integration/testsuite/Magento/Sales/Controller/Adminhtml/Order/Stub/OrderCreateStub.php
@@ -8,7 +8,7 @@ namespace Magento\Sales\Controller\Adminhtml\Order\Stub;
 
 class OrderCreateStub extends \Magento\Sales\Controller\Adminhtml\Order\Create
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AbstractMergedConfigTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AbstractMergedConfigTest.php
index bc0518559ba9d332cff758ce27ac6dc197116b4c..051b7e891ace187b27a3620a6bbc0da886fe207a 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AbstractMergedConfigTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AbstractMergedConfigTest.php
@@ -39,15 +39,28 @@ abstract class AbstractMergedConfigTest extends \PHPUnit_Framework_TestCase
         $invalidFiles = [];
 
         $files = $this->getConfigFiles();
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(false);
         $mergedConfig = new \Magento\Framework\Config\Dom(
             '<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></config>',
+            $validationStateMock,
             $this->getIdAttributes()
         );
 
         foreach ($files as $file) {
             $content = file_get_contents($file[0]);
             try {
-                new \Magento\Framework\Config\Dom($content, $this->getIdAttributes());
+                $validationStateMock = $this->getMock(
+                    '\Magento\Framework\Config\ValidationStateInterface',
+                    [],
+                    [],
+                    '',
+                    false
+                );
+                $validationStateMock->method('isValidationRequired')
+                    ->willReturn(true);
+                new \Magento\Framework\Config\Dom($content, $validationStateMock, $this->getIdAttributes());
                 //merge won't be performed if file is invalid because of exception thrown
                 $mergedConfig->merge($content);
             } catch (\Magento\Framework\Config\Dom\ValidationException $e) {
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AclConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AclConfigFilesTest.php
index c998094fc963a3b525515d662743fbea282d8e82..9b66e0702c056d3acf2a0fdd48d6b7d6fb48ea1d 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AclConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/AclConfigFilesTest.php
@@ -35,7 +35,10 @@ class AclConfigFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testAclConfigFile($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $domConfig->validate($this->_schemeFile, $errors);
         $message = "Invalid XML-file: {$file}\n";
         foreach ($errors as $error) {
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/CacheFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/CacheFilesTest.php
index 430cced2f1a2e629d5ff66d25788609a6f851a9b..25051e023a5bf767c92d80bfb9002955ea6e90fb 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/CacheFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/CacheFilesTest.php
@@ -14,7 +14,7 @@ class CacheFilesTest extends \PHPUnit_Framework_TestCase
     public function testCacheConfig($area)
     {
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
 
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/DiConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/DiConfigFilesTest.php
index 42b6a74d7e06d84479dcb2fc13326905dedaf2c1..b9c4c7cbb94711404fa8edf4fbe330a3d570b8cb 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/DiConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/DiConfigFilesTest.php
@@ -108,7 +108,7 @@ class DiConfigFilesTest extends \PHPUnit_Framework_TestCase
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('read')->will($this->returnValue($files));
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
 
         /** @var \Magento\Framework\ObjectManager\Config\SchemaLocator $schemaLocator */
         $schemaLocator = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EavAttributesConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EavAttributesConfigFilesTest.php
index 03111c820d6eddb6c7d44a423eebc730675b98ab..0a290d04abd5311363246cd63ee038e04de1f227 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EavAttributesConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EavAttributesConfigFilesTest.php
@@ -25,7 +25,7 @@ class EavAttributesConfigFilesTest extends \PHPUnit_Framework_TestCase
         );
 
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EventConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EventConfigFilesTest.php
index f81c30cc0407c34a0a90113f8ce25d65527272dc..d1f2fef8a815b84fbe3c7eb5775913bc4f9be726 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EventConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/EventConfigFilesTest.php
@@ -25,7 +25,10 @@ class EventConfigFilesTest extends \PHPUnit_Framework_TestCase
     public function testEventConfigFiles($file)
     {
         $errors = [];
-        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $dom->validate($this->_schemaFile, $errors);
         $message = "Invalid XML-file: {$file}\n";
         foreach ($errors as $error) {
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ExportConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ExportConfigFilesTest.php
index 6229b7d06c013bc7ea2964d76b658e6b69fb665a..00eb532d6b90fde66b6ecec72f695bddbb221fbb 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ExportConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ExportConfigFilesTest.php
@@ -25,7 +25,7 @@ class ExportConfigFilesTest extends \PHPUnit_Framework_TestCase
         );
 
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ImportConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ImportConfigFilesTest.php
index dd31a3287fce1622f0bfd9574e603e75fe3f51dc..61c6c66f79cf51c77fed8fee764991123f60815e 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ImportConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ImportConfigFilesTest.php
@@ -25,7 +25,7 @@ class ImportConfigFilesTest extends \PHPUnit_Framework_TestCase
         );
 
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/IndexerConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/IndexerConfigFilesTest.php
index f12917f9c456deeea853cda63ec8005182bec8ee..3f16450ae3e12d4e199fd649ec3be25b4d50ad0c 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/IndexerConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/IndexerConfigFilesTest.php
@@ -36,7 +36,10 @@ class IndexerConfigFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testIndexerConfigFile($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $domConfig->validate($this->schemaFile, $errors);
         $message = "Invalid XML-file: {$file}\n";
         foreach ($errors as $error) {
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Catalog/AttributeConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Catalog/AttributeConfigFilesTest.php
index a0aaff1b95386c49a9042a24be1175933b508b22..1e4ceac5e7db03c3e2bdc43dbadc1765cf27cb20 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Catalog/AttributeConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Catalog/AttributeConfigFilesTest.php
@@ -26,7 +26,10 @@ class AttributeConfigFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testFileFormat($file)
     {
-        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $dom->validate($this->_schemaFile, $errors);
         $this->assertTrue($result, print_r($errors, true));
     }
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Customer/AddressFormatsFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Customer/AddressFormatsFilesTest.php
index e503a543247f87609e72db7a4686c048ad17c23c..7cad3da12a066edd5104a8af9b582123f58f92ad 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Customer/AddressFormatsFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Customer/AddressFormatsFilesTest.php
@@ -27,7 +27,10 @@ class AddressFormatsFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testFileFormat($file)
     {
-        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $dom->validate($this->_schemaFile, $errors);
         $this->assertTrue($result, print_r($errors, true));
     }
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Email/EmailTemplateConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Email/EmailTemplateConfigFilesTest.php
index 8c667e6d38c4916f1f8fc9086f10cbd8283fe0b1..546db270e1bbf08f60bfd395d2facf13b2c735fb 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Email/EmailTemplateConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Email/EmailTemplateConfigFilesTest.php
@@ -17,7 +17,10 @@ class EmailTemplateConfigFilesTest extends \PHPUnit_Framework_TestCase
     {
         $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
         $schemaFile = $urnResolver->getRealPath('urn:magento:module:Magento_Email:etc/email_templates.xsd');
-        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $dom->validate($schemaFile, $errors);
         $this->assertTrue($result, print_r($errors, true));
     }
@@ -78,7 +81,7 @@ class EmailTemplateConfigFilesTest extends \PHPUnit_Framework_TestCase
     public function testMergedFormat()
     {
         $validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationState->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationState->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         /** @var \Magento\Email\Model\Template\Config\Reader $reader */
         $reader = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Email\Model\Template\Config\Reader',
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Sales/PdfConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Sales/PdfConfigFilesTest.php
index 1bd81dbb001049d37cd59c0a769ca721a28a593c..f65f0fab665fe74ad3d05e50174778d1c4b8db4b 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Sales/PdfConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/Magento/Sales/PdfConfigFilesTest.php
@@ -19,7 +19,10 @@ class PdfConfigFilesTest extends \PHPUnit_Framework_TestCase
         );
         $schemaFile = $schemaLocator->getPerFileSchema();
 
-        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $dom = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $dom->validate($schemaFile, $errors);
         $this->assertTrue($result, print_r($errors, true));
     }
@@ -35,7 +38,7 @@ class PdfConfigFilesTest extends \PHPUnit_Framework_TestCase
     public function testMergedFormat()
     {
         $validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationState->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationState->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
 
         /** @var \Magento\Sales\Model\Order\Pdf\Config\Reader $reader */
         $reader = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/MviewConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/MviewConfigFilesTest.php
index d112c6d50d389c334a3c5f2ce20d900374357b58..0393ef43ecd8a0c996f26aefd5f9d5d2a9b48d36 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/MviewConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/MviewConfigFilesTest.php
@@ -36,7 +36,10 @@ class MviewConfigFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testIndexerConfigFile($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file), $validationStateMock);
         $result = $domConfig->validate($this->schemaFile, $errors);
         $message = "Invalid XML-file: {$file}\n";
         foreach ($errors as $error) {
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductOptionsConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductOptionsConfigFilesTest.php
index 17b6e7dab791e858310dd42433fc325a13bfceb9..77901d2d2528468857d42b084ad48ebd2611d50b 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductOptionsConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductOptionsConfigFilesTest.php
@@ -31,7 +31,7 @@ class ProductOptionsConfigFilesTest extends \PHPUnit_Framework_TestCase
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $this->_model = $objectManager->create(
             'Magento\Catalog\Model\ProductOptions\Config\Reader',
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductTypesConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductTypesConfigFilesTest.php
index cf19b7a61da22136222deaffc88a2fc383c785fa..0b21c161b144e3ff944846c1bdcb1f66186fbc94 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductTypesConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ProductTypesConfigFilesTest.php
@@ -27,7 +27,7 @@ class ProductTypesConfigFilesTest extends \PHPUnit_Framework_TestCase
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $this->_model = $objectManager->create(
             'Magento\Catalog\Model\ProductTypes\Config\Reader',
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ResourcesConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ResourcesConfigFilesTest.php
index 044605bcc3b05fb32ee6330fbd5c37f6b8e46daf..ad967592e614180f36e5f05f0cdc908d09a83d12 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ResourcesConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ResourcesConfigFilesTest.php
@@ -27,7 +27,7 @@ class ResourcesConfigFilesTest extends \PHPUnit_Framework_TestCase
         $fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
         $fileResolverMock->expects($this->any())->method('get')->will($this->returnValue($xmlFiles));
         $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $validationStateMock->expects($this->any())->method('isValidationRequired')->will($this->returnValue(true));
         $deploymentConfigMock = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
         $deploymentConfigMock->expects($this->any())->method('getConfiguration')->will($this->returnValue([]));
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
index 16bc451c47c220be92bd57194a0bc542730bcbed..cecf1bf93bdea0d2a121cd6d43957e4d6ab0c061 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
@@ -9,6 +9,11 @@ use Magento\Framework\Component\ComponentRegistrar;
 
 class RouteConfigFilesTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface
+     */
+
+    protected $validationStateMock;
     /**
      * attributes represent merging rules
      * copied from original class \Magento\Framework\App\Route\Config\Reader
@@ -36,6 +41,15 @@ class RouteConfigFilesTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
+        $this->validationStateMock = $this->getMock(
+            '\Magento\Framework\Config\ValidationStateInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
         $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
         $this->schemaFile = $urnResolver->getRealPath('urn:magento:framework:App/etc/routes.xsd');
         $this->mergedSchemaFile = $urnResolver->getRealPath('urn:magento:framework:App/etc/routes_merged.xsd');
@@ -51,12 +65,22 @@ class RouteConfigFilesTest extends \PHPUnit_Framework_TestCase
             $mask = $moduleDir . '/etc/*/routes.xml';
             $files = array_merge($files, glob($mask));
         }
-        $mergedConfig = new \Magento\Framework\Config\Dom('<config></config>', $this->_idAttributes);
+        $mergedConfig = new \Magento\Framework\Config\Dom(
+            '<config></config>',
+            $this->validationStateMock,
+            $this->_idAttributes
+        );
 
         foreach ($files as $file) {
             $content = file_get_contents($file);
             try {
-                new \Magento\Framework\Config\Dom($content, $this->_idAttributes, null, $this->schemaFile);
+                new \Magento\Framework\Config\Dom(
+                    $content,
+                    $this->validationStateMock,
+                    $this->_idAttributes,
+                    null,
+                    $this->schemaFile
+                );
 
                 //merge won't be performed if file is invalid because of exception thrown
                 $mergedConfig->merge($content);
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ViewConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ViewConfigFilesTest.php
index 5c248a1d97024c19bf4614109a0f9eb34c1aefe9..f4bbffa872744db6c72c3bb694cd00a65d1036dc 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ViewConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/ViewConfigFilesTest.php
@@ -13,7 +13,10 @@ class ViewConfigFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testViewConfigFile($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom($file);
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domConfig = new \Magento\Framework\Config\Dom($file, $validationStateMock);
         $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
         $result = $domConfig->validate(
             $urnResolver->getRealPath('urn:magento:framework:Config/etc/view.xsd'),
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Theme/XmlFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Theme/XmlFilesTest.php
index 7e7319fb5377cf82fc4db4309002b90c652fb159..680d76abd587e4824559d99d2997236449957b66 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Theme/XmlFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Theme/XmlFilesTest.php
@@ -9,13 +9,35 @@ use Magento\Framework\Component\ComponentRegistrar;
 
 class XmlFilesTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface
+     */
+    protected $validationStateMock;
+
+    public function setUp()
+    {
+        $this->validationStateMock = $this->getMock(
+            'Magento\Framework\Config\ValidationStateInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+    }
+
     /**
      * @param string $file
      * @dataProvider viewConfigFileDataProvider
      */
     public function testViewConfigFile($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $domConfig = new \Magento\Framework\Config\Dom(
+            file_get_contents($file),
+            $this->validationStateMock
+        );
+        $errors = [];
         $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
         $result = $domConfig->validate(
             $urnResolver->getRealPath('urn:magento:framework:Config/etc/view.xsd'),
@@ -70,7 +92,7 @@ class XmlFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function testThemeConfigFileSchema($file)
     {
-        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file));
+        $domConfig = new \Magento\Framework\Config\Dom(file_get_contents($file), $this->validationStateMock);
         $errors = [];
         $result = $domConfig->validate('urn:magento:framework:Config/etc/theme.xsd', $errors);
         $this->assertTrue($result, "Invalid XML-file: {$file}\n" . join("\n", $errors));
diff --git a/dev/tests/integration/testsuite/Magento/TestFixture/Controller/Adminhtml/Noroute.php b/dev/tests/integration/testsuite/Magento/TestFixture/Controller/Adminhtml/Noroute.php
index 0116aa59ffaa5fb8d6d672a011864b3108ea15b3..ae88fa6378645ef4afbf2ef496c0a5aa08b7a3b0 100644
--- a/dev/tests/integration/testsuite/Magento/TestFixture/Controller/Adminhtml/Noroute.php
+++ b/dev/tests/integration/testsuite/Magento/TestFixture/Controller/Adminhtml/Noroute.php
@@ -22,7 +22,7 @@ class Noroute implements \Magento\Framework\App\ActionInterface
      *
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
     }
 
diff --git a/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/AuthTest.php b/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/AuthTest.php
index 052030a1552fdea8b931479d501192c0873f738b..031bab7ac1e552d20d444d9bb8988f7f0a052a85 100644
--- a/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/AuthTest.php
+++ b/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/AuthTest.php
@@ -14,7 +14,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
 {
     /**
      * Test form existence
-     * @covers \Magento\User\Controller\Adminhtml\Auth\Forgotpassword::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\Forgotpassword::executeInternal
      */
     public function testFormForgotpasswordAction()
     {
@@ -26,7 +26,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     /**
      * Test redirection to startup page after success password recovering posting
      *
-     * @covers \Magento\User\Controller\Adminhtml\Auth\Forgotpassword::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\Forgotpassword::executeInternal
      */
     public function testForgotpasswordAction()
     {
@@ -44,7 +44,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     /**
      * Test reset password action
      *
-     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::executeInternal
      * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::_validateResetPasswordLinkToken
      * @magentoDataFixture Magento/User/_files/dummy_user.php
      */
@@ -73,7 +73,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     }
 
     /**
-     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::executeInternal
      * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::_validateResetPasswordLinkToken
      */
     public function testResetPasswordActionWithDummyToken()
@@ -89,7 +89,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
 
     /**
      * @dataProvider resetPasswordDataProvider
-     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::executeInternal
      * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::_validateResetPasswordLinkToken
      * @magentoDataFixture Magento/User/_files/dummy_user.php
      */
@@ -162,7 +162,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     }
 
     /**
-     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::executeInternal
      * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::_validateResetPasswordLinkToken
      * @magentoDataFixture Magento/User/_files/dummy_user.php
      */
@@ -184,7 +184,7 @@ class AuthTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     }
 
     /**
-     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::execute
+     * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::executeInternal
      * @covers \Magento\User\Controller\Adminhtml\Auth\ResetPasswordPost::_validateResetPasswordLinkToken
      * @magentoDataFixture Magento/User/_files/dummy_user.php
      */
diff --git a/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/User/RoleTest.php b/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/User/RoleTest.php
index 932351fb427b712787c64a420f9c86e428f0f5d1..384b2e3300ef936560690a96c39b055eadad1df2 100644
--- a/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/User/RoleTest.php
+++ b/dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/User/RoleTest.php
@@ -27,7 +27,7 @@ class RoleTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     }
 
     /**
-     * @covers \Magento\User\Controller\Adminhtml\User\Role\Editrolegrid::execute
+     * @covers \Magento\User\Controller\Adminhtml\User\Role\Editrolegrid::executeInternal
      */
     public function testEditrolegridAction()
     {
@@ -38,7 +38,7 @@ class RoleTest extends \Magento\TestFramework\TestCase\AbstractBackendController
     }
 
     /**
-     * @covers \Magento\User\Controller\Adminhtml\User\Role\RoleGrid::execute
+     * @covers \Magento\User\Controller\Adminhtml\User\Role\RoleGrid::executeInternal
      */
     public function testRoleGridAction()
     {
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/App/Language/CircularDependencyTest.php b/dev/tests/static/testsuite/Magento/Test/Integrity/App/Language/CircularDependencyTest.php
index d6e27c159ece816b152d878bc901d7795d4e8f42..358b6a35af3e31f0572acbbac12edfed406ef5db 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/App/Language/CircularDependencyTest.php
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/App/Language/CircularDependencyTest.php
@@ -8,7 +8,6 @@ namespace Magento\Test\Integrity\App\Language;
 
 use Magento\Framework\App\Language\Config;
 use Magento\Framework\Component\ComponentRegistrar;
-use Magento\Framework\Config\Dom\UrnResolver;
 
 class CircularDependencyTest extends \PHPUnit_Framework_TestCase
 {
@@ -22,12 +21,36 @@ class CircularDependencyTest extends \PHPUnit_Framework_TestCase
      */
     public function testCircularDependencies()
     {
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $componentRegistrar = new ComponentRegistrar();
         $declaredLanguages = $componentRegistrar->getPaths(ComponentRegistrar::LANGUAGE);
-        $urnResolver = new UrnResolver();
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domFactoryMock = $this->getMock('Magento\Framework\Config\DomFactory', [], [], '', false);
+        $domFactoryMock->expects($this->any())
+            ->method('createDom')
+            ->willReturnCallback(
+                function ($arguments) use ($validationStateMock) {
+                    return new \Magento\Framework\Config\Dom(
+                        $arguments['xml'],
+                        $validationStateMock,
+                        [],
+                        null,
+                        $arguments['schemaFile']
+                    );
+                }
+            );
+
         $packs = [];
         foreach ($declaredLanguages as $language) {
-            $languageConfig = new Config(file_get_contents($language . '/language.xml'), $urnResolver);
+            $languageConfig = $objectManager->getObject(
+                'Magento\Framework\App\Language\Config',
+                [
+                    'source' => file_get_contents($language . '/language.xml'),
+                    'domFactory' => $domFactoryMock
+                ]
+            );
             $this->packs[$languageConfig->getVendor()][$languageConfig->getPackage()] = $languageConfig;
             $packs[] = $languageConfig;
         }
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_constants.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_constants.php
index 1a0a6503809d5e2717bac49bcf46d39e750a23da..a6c1b3688018ef9e080faa7423bc192c90f7b659 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_constants.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_constants.php
@@ -945,4 +945,9 @@ return [
         'THEMES',
         'Magento\Framework\App\Filesystem\DirectoryList'
     ],
+    [
+        'DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR',
+        'Magento\CatalogImportExport\Model\Import\Product',
+        'Magento\ImportExport\Model\Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR'
+    ]
 ];
diff --git a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
index 90658f3120bed36b6cda7600c07caa24d3e84787..bd2ea71987fc526f20d7506382ce12c3214dbe44 100644
--- a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
+++ b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
@@ -25,8 +25,11 @@ class XsdTest extends \PHPUnit_Framework_TestCase
      */
     public function testExemplarXml($fixtureXml, array $expectedErrors)
     {
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
         $messageFormat = '%message%';
-        $dom = new \Magento\Framework\Config\Dom($fixtureXml, [], null, null, $messageFormat);
+        $dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationStateMock, [], null, null, $messageFormat);
         $actualResult = $dom->validate($this->_schemaFile, $actualErrors);
         $this->assertEquals($expectedErrors, $actualErrors, "Validation errors does not match.");
         $this->assertEquals(empty($expectedErrors), $actualResult, "Validation result is invalid.");
diff --git a/lib/internal/Magento/Framework/App/Action/Action.php b/lib/internal/Magento/Framework/App/Action/Action.php
index 310f2f57d4d8bbfaa7e63769dc0fb28f106506d1..da7a42f6122225a8b71a378d9376201bd61454dc 100644
--- a/lib/internal/Magento/Framework/App/Action/Action.php
+++ b/lib/internal/Magento/Framework/App/Action/Action.php
@@ -83,7 +83,7 @@ abstract class Action extends AbstractAction
      * @return ResponseInterface
      * @throws NotFoundException
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $this->_request = $request;
         $profilerKey = 'CONTROLLER_ACTION:' . $request->getFullActionName();
@@ -99,7 +99,7 @@ abstract class Action extends AbstractAction
         $result = null;
         if ($request->isDispatched() && !$this->_actionFlag->get('', self::FLAG_NO_DISPATCH)) {
             \Magento\Framework\Profiler::start('action_body');
-            $result = $this->execute();
+            $result = $this->executeInternal();
             \Magento\Framework\Profiler::start('postdispatch');
             if (!$this->_actionFlag->get('', self::FLAG_NO_POST_DISPATCH)) {
                 $this->_eventManager->dispatch(
@@ -122,7 +122,7 @@ abstract class Action extends AbstractAction
     /**
      * @return ResultInterface
      */
-    abstract protected function execute();
+    abstract protected function executeInternal();
 
     /**
      * Throw control to different action (control and module if was specified).
diff --git a/lib/internal/Magento/Framework/App/Action/Forward.php b/lib/internal/Magento/Framework/App/Action/Forward.php
index 611b7413b4157a70eabce40af94dc64bb2029d3b..db11b6577f33c876e5d8d6105b1fb8543b22113c 100644
--- a/lib/internal/Magento/Framework/App/Action/Forward.php
+++ b/lib/internal/Magento/Framework/App/Action/Forward.php
@@ -17,7 +17,7 @@ class Forward extends AbstractAction
      * @return ResponseInterface
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         $request->setDispatched(false);
         return $this->_response;
diff --git a/lib/internal/Magento/Framework/App/Action/Plugin/Design.php b/lib/internal/Magento/Framework/App/Action/Plugin/Design.php
index 5bb0556fe640d3d0c23bda0da6c790dba69d2dba..3d2f794ad14978f69e0480ddb9767bad2562e63b 100644
--- a/lib/internal/Magento/Framework/App/Action/Plugin/Design.php
+++ b/lib/internal/Magento/Framework/App/Action/Plugin/Design.php
@@ -30,7 +30,7 @@ class Design
      * @return mixed
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function aroundDispatch(
+    public function aroundExecute(
         \Magento\Framework\App\ActionInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
diff --git a/lib/internal/Magento/Framework/App/Action/Redirect.php b/lib/internal/Magento/Framework/App/Action/Redirect.php
index 5904274e56187cf0db34aff374a448cf88b9c4c3..23b3cfcb90d6281818426a164758bf3f88b2ad48 100644
--- a/lib/internal/Magento/Framework/App/Action/Redirect.php
+++ b/lib/internal/Magento/Framework/App/Action/Redirect.php
@@ -19,7 +19,7 @@ class Redirect extends AbstractAction
      * @return ResponseInterface
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function dispatch(RequestInterface $request)
+    public function execute(RequestInterface $request)
     {
         return $this->_response;
     }
diff --git a/lib/internal/Magento/Framework/App/ActionInterface.php b/lib/internal/Magento/Framework/App/ActionInterface.php
index 7e90fc49922b04219977638ac752161ce0a1514f..cf740250eb856a51d795dbe0463a2b7eca2ac5f5 100644
--- a/lib/internal/Magento/Framework/App/ActionInterface.php
+++ b/lib/internal/Magento/Framework/App/ActionInterface.php
@@ -26,5 +26,5 @@ interface ActionInterface
      * @return \Magento\Framework\Controller\ResultInterface|ResponseInterface
      * @throws \Magento\Framework\Exception\NotFoundException
      */
-    public function dispatch(RequestInterface $request);
+    public function execute(RequestInterface $request);
 }
diff --git a/lib/internal/Magento/Framework/App/Arguments/ValidationState.php b/lib/internal/Magento/Framework/App/Arguments/ValidationState.php
index 55c65798c64d70b1700efaed3b46f1e135b3a733..8af1dedc59c45baa1c1663c26bf69de977598ea2 100644
--- a/lib/internal/Magento/Framework/App/Arguments/ValidationState.php
+++ b/lib/internal/Magento/Framework/App/Arguments/ValidationState.php
@@ -27,7 +27,7 @@ class ValidationState implements \Magento\Framework\Config\ValidationStateInterf
      *
      * @return boolean
      */
-    public function isValidated()
+    public function isValidationRequired()
     {
         return $this->_appMode == \Magento\Framework\App\State::MODE_DEVELOPER;
     }
diff --git a/lib/internal/Magento/Framework/App/Config/Initial/Reader.php b/lib/internal/Magento/Framework/App/Config/Initial/Reader.php
index d907d22223e42370c3c1881b04f6fa21b472073e..33f0c4cfcb3760d63a1cac85599f34ec125ed878 100644
--- a/lib/internal/Magento/Framework/App/Config/Initial/Reader.php
+++ b/lib/internal/Magento/Framework/App/Config/Initial/Reader.php
@@ -55,7 +55,7 @@ class Reader
      * @param \Magento\Framework\Config\FileResolverInterface $fileResolver
      * @param \Magento\Framework\Config\ConverterInterface $converter
      * @param SchemaLocator $schemaLocator
-     * @param \Magento\Framework\Config\ValidationStateInterface $validationState
+     * @param \Magento\Framework\Config\DomFactory $domFactory
      * @param string $fileName
      * @param string $domDocumentClass
      */
@@ -63,14 +63,13 @@ class Reader
         \Magento\Framework\Config\FileResolverInterface $fileResolver,
         \Magento\Framework\Config\ConverterInterface $converter,
         SchemaLocator $schemaLocator,
-        \Magento\Framework\Config\ValidationStateInterface $validationState,
-        $fileName = 'config.xml',
-        $domDocumentClass = 'Magento\Framework\Config\Dom'
+        \Magento\Framework\Config\DomFactory $domFactory,
+        $fileName = 'config.xml'
     ) {
-        $this->_schemaFile = $validationState->isValidated() ? $schemaLocator->getSchema() : null;
+        $this->_schemaFile = $schemaLocator->getSchema();
         $this->_fileResolver = $fileResolver;
         $this->_converter = $converter;
-        $this->_domDocumentClass = $domDocumentClass;
+        $this->domFactory = $domFactory;
         $this->_fileName = $fileName;
     }
 
@@ -99,9 +98,8 @@ class Reader
         $domDocument = null;
         foreach ($fileList as $file) {
             try {
-                if ($domDocument === null) {
-                    $class = $this->_domDocumentClass;
-                    $domDocument = new $class($file, [], null, $this->_schemaFile);
+                if (!$domDocument) {
+                    $domDocument = $this->domFactory->createDom(['xml' => $file, 'schemaFile' => $this->_schemaFile]);
                 } else {
                     $domDocument->merge($file);
                 }
diff --git a/lib/internal/Magento/Framework/App/Config/Value.php b/lib/internal/Magento/Framework/App/Config/Value.php
index ddfb123d637f099d8215a2e5f698e910de1016a6..5be19ff29133207c5b71e14a5531a40fed11a308 100644
--- a/lib/internal/Magento/Framework/App/Config/Value.php
+++ b/lib/internal/Magento/Framework/App/Config/Value.php
@@ -42,23 +42,31 @@ class Value extends \Magento\Framework\Model\AbstractModel implements \Magento\F
      */
     protected $_config;
 
+    /**
+     * @var \Magento\Framework\App\Cache\TypeListInterface
+     */
+    protected $cacheTypeList;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
-     * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
-     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
+     * @param ScopeConfigInterface $config
+     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
+     * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
+     * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
      * @param array $data
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
+        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
         $this->_config = $config;
+        $this->cacheTypeList = $cacheTypeList;
         parent::__construct($context, $registry, $resource, $resourceCollection, $data);
     }
 
@@ -107,4 +115,20 @@ class Value extends \Magento\Framework\Model\AbstractModel implements \Magento\F
         $data = $this->_getData('fieldset_data');
         return is_array($data) && isset($data[$key]) ? $data[$key] : null;
     }
+
+    /**
+     * {@inheritdoc}
+     *
+     * {@inheritdoc}. In addition, it sets status 'invalidate' for config caches
+     *
+     * @return $this
+     */
+    public function afterSave()
+    {
+        if ($this->isValueChanged()) {
+            $this->cacheTypeList->invalidate(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER);
+        }
+
+        return parent::afterSave();
+    }
 }
diff --git a/lib/internal/Magento/Framework/App/FrontController.php b/lib/internal/Magento/Framework/App/FrontController.php
index c3a9b6b390bbb50b1e2b48ef9145a4cb27ec99d2..49630bd4e6dda8e01e28f4886315e1f52eb8f565 100644
--- a/lib/internal/Magento/Framework/App/FrontController.php
+++ b/lib/internal/Magento/Framework/App/FrontController.php
@@ -51,7 +51,7 @@ class FrontController implements FrontControllerInterface
                     if ($actionInstance) {
                         $request->setDispatched(true);
                         $this->response->setNoCacheHeaders();
-                        $result = $actionInstance->dispatch($request);
+                        $result = $actionInstance->execute($request);
                         break;
                     }
                 } catch (\Magento\Framework\Exception\NotFoundException $e) {
diff --git a/lib/internal/Magento/Framework/App/Language/Config.php b/lib/internal/Magento/Framework/App/Language/Config.php
index 84dfdfe149cbebd6cc288ee17319895da3d76ffd..8376e47e47cb120934d6fa8823c9b6d24c1d612a 100644
--- a/lib/internal/Magento/Framework/App/Language/Config.php
+++ b/lib/internal/Magento/Framework/App/Language/Config.php
@@ -16,6 +16,11 @@ class Config
     /** @var \Magento\Framework\Config\Dom\UrnResolver */
     protected $urnResolver;
 
+    /**
+     * @var \Magento\Framework\Config\DomFactory
+     */
+    protected $domFactory;
+
     /**
      * Data extracted from the configuration file
      *
@@ -28,22 +33,18 @@ class Config
      *
      * @param string $source
      * @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
+     * @param \Magento\Framework\Config\DomFactory $domFactory
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function __construct(
         $source,
-        \Magento\Framework\Config\Dom\UrnResolver $urnResolver
+        \Magento\Framework\Config\Dom\UrnResolver $urnResolver,
+        \Magento\Framework\Config\DomFactory $domFactory
     ) {
         $this->urnResolver = $urnResolver;
-        $config = new \DOMDocument();
-        $config->loadXML($source);
-        $errors = Dom::validateDomDocument($config, $this->getSchemaFile());
-        if (!empty($errors)) {
-            throw new \Magento\Framework\Exception\LocalizedException(
-                new \Magento\Framework\Phrase("Invalid Document: \n%1", [implode("\n", $errors)])
-            );
-        }
-        $this->_data = $this->_extractData($config);
+        $this->domFactory = $domFactory;
+        $dom = $this->domFactory->createDom(['xml' => $source, 'schemaFile' => $this->getSchemaFile()]);
+        $this->_data = $this->_extractData($dom->getDom());
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Action/ActionTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Action/ActionTest.php
index 44a79370181276bf85dc3d1278baedffe4b97763..e7b0a27ab64f56f650de147e4d9d911ab8172d22 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Action/ActionTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Action/ActionTest.php
@@ -170,7 +170,7 @@ class ActionTest extends \PHPUnit_Framework_TestCase
             $expectedEventParameters
         );
 
-        $this->assertEquals($this->_responseMock, $this->action->dispatch($this->_requestMock));
+        $this->assertEquals($this->_responseMock, $this->action->execute($this->_requestMock));
     }
 }
 
@@ -179,7 +179,7 @@ class ActionFake extends Action
     /**
      * Fake action to check a method call from a parent
      */
-    public function execute()
+    public function executeInternal()
     {
         $this->_forward(
             ActionTest::ACTION_NAME,
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Action/ForwardTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Action/ForwardTest.php
index 2d15e0a290b338531cb4ff742fe18453df84f940..5501546bc5914b2d572ecfa596b82cb779d23de2 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Action/ForwardTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Action/ForwardTest.php
@@ -62,7 +62,7 @@ class ForwardTest extends \PHPUnit_Framework_TestCase
     public function testDispatch()
     {
         $this->request->expects($this->once())->method('setDispatched')->with(false);
-        $this->actionAbstract->dispatch($this->request);
+        $this->actionAbstract->execute($this->request);
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Action/Plugin/DesignTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Action/Plugin/DesignTest.php
index 2e86c5da43189b005ce24c123f2b342338ac8f06..401e9896155833283c56bccd2687b961869b66cc 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Action/Plugin/DesignTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Action/Plugin/DesignTest.php
@@ -7,7 +7,7 @@ namespace Magento\Framework\App\Test\Unit\Action\Plugin;
 
 class DesignTest extends \PHPUnit_Framework_TestCase
 {
-    public function testAroundDispatch()
+    public function testAroundExecute()
     {
         $subjectMock = $this->getMock('Magento\Framework\App\Action\Action', [], [], '', false);
         $designLoaderMock = $this->getMock('Magento\Framework\View\DesignLoader', [], [], '', false);
@@ -17,6 +17,6 @@ class DesignTest extends \PHPUnit_Framework_TestCase
         $requestMock = $this->getMock('Magento\Framework\App\RequestInterface');
         $plugin = new \Magento\Framework\App\Action\Plugin\Design($designLoaderMock);
         $designLoaderMock->expects($this->once())->method('load');
-        $this->assertEquals('Expected', $plugin->aroundDispatch($subjectMock, $closureMock, $requestMock));
+        $this->assertEquals('Expected', $plugin->aroundExecute($subjectMock, $closureMock, $requestMock));
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Action/Stub/ActionStub.php b/lib/internal/Magento/Framework/App/Test/Unit/Action/Stub/ActionStub.php
index a5c6d5cff8e40b494015c00316ca5bd8172bec34..4c654992ab234782ae5cd8155ad22d7098262778 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Action/Stub/ActionStub.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Action/Stub/ActionStub.php
@@ -8,7 +8,7 @@ namespace Magento\Framework\App\Test\Unit\Action\Stub;
 
 class ActionStub extends \Magento\Framework\App\Action\Action
 {
-    protected function execute()
+    protected function executeInternal()
     {
         // Empty method stub for test
     }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Config/Initial/ReaderTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Config/Initial/ReaderTest.php
index 4c1fde2796bf5ab0b2ba6f64875c808055f18255..98b9d81e75b9d332c44ce3b2f2389423787f2ffa 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Config/Initial/ReaderTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Config/Initial/ReaderTest.php
@@ -20,12 +20,12 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
     protected $model;
 
     /**
-     * @var \Magento\Framework\Config\FileResolverInterface | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Config\FileResolverInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $fileResolverMock;
 
     /**
-     * @var \Magento\Framework\App\Config\Initial\Converter | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Config\Initial\Converter|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $converterMock;
 
@@ -35,15 +35,20 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
     protected $filePath;
 
     /**
-     * @var \Magento\Framework\Config\ValidationStateInterface | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Config\ValidationStateInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $validationStateMock;
 
     /**
-     * @var \Magento\Framework\App\Config\Initial\SchemaLocator | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Config\Initial\SchemaLocator|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $schemaLocatorMock;
 
+    /**
+     * @var \Magento\Framework\Config\DomFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $domFactoryMock;
+
     protected function setUp()
     {
         $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -58,6 +63,10 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
+        $this->validationStateMock->expects($this->any())
+            ->method('isValidationRequired')
+            ->will($this->returnValue(true));
+        $this->domFactoryMock = $this->getMock('Magento\Framework\Config\DomFactory', [], [], '', false);
     }
 
     public function testConstructor()
@@ -85,6 +94,7 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
     public function testReadValidConfig()
     {
         $this->createModelAndVerifyConstructor();
+        $this->prepareDomFactoryMock();
         $testXmlFilesList = [
             file_get_contents($this->filePath . 'initial_config1.xml'),
             file_get_contents($this->filePath . 'initial_config2.xml'),
@@ -104,6 +114,24 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($expectedConfig, $this->model->read());
     }
 
+    private function prepareDomFactoryMock()
+    {
+        $validationStateMock = $this->validationStateMock;
+        $this->domFactoryMock->expects($this->once())
+            ->method('createDom')
+            ->willReturnCallback(
+                function ($arguments) use ($validationStateMock) {
+                    return new \Magento\Framework\Config\Dom(
+                        $arguments['xml'],
+                        $validationStateMock,
+                        [],
+                        null,
+                        $arguments['schemaFile']
+                    );
+                }
+            );
+    }
+
     /**
      * @covers \Magento\Framework\App\Config\Initial\Reader::read
      * @expectedException \Magento\Framework\Exception\LocalizedException
@@ -112,6 +140,7 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
     public function testReadInvalidConfig()
     {
         $this->createModelAndVerifyConstructor();
+        $this->prepareDomFactoryMock();
         $testXmlFilesList = [
             file_get_contents($this->filePath . 'invalid_config.xml'),
             file_get_contents($this->filePath . 'initial_config2.xml'),
@@ -133,17 +162,15 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
 
     private function createModelAndVerifyConstructor()
     {
-        $this->validationStateMock->expects($this->once())->method('isValidated')->will($this->returnValue(true));
         $schemaFile = $this->filePath . 'config.xsd';
         $this->schemaLocatorMock->expects($this->once())->method('getSchema')->will($this->returnValue($schemaFile));
-
         $this->model = $this->objectManager->getObject(
             'Magento\Framework\App\Config\Initial\Reader',
             [
                 'fileResolver' => $this->fileResolverMock,
                 'converter' => $this->converterMock,
                 'schemaLocator' => $this->schemaLocatorMock,
-                'validationState' => $this->validationStateMock
+                'domFactory' => $this->domFactoryMock
             ]
         );
     }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Config/ValueTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Config/ValueTest.php
index db103705fefb6bac69e18620cf1dd96175affe78..175509af622a025d5b05b879e227f763cd3a3f56 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Config/ValueTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Config/ValueTest.php
@@ -15,27 +15,36 @@ class ValueTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $eventManager;
+    protected $eventManagerMock;
 
     /**
      * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $configMock;
 
+    /**
+     * @var \Magento\Framework\App\Cache\TypeListInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $cacheTypeListMock;
+
     /**
      * @return void
      */
     protected function setUp()
     {
         $this->configMock = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
-        $this->eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface');
+        $this->eventManagerMock = $this->getMock('Magento\Framework\Event\ManagerInterface');
+        $this->cacheTypeListMock = $this->getMockBuilder('Magento\Framework\App\Cache\TypeListInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
 
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $this->model = $objectManager->getObject(
             'Magento\Framework\App\Config\Value',
             [
                 'config' => $this->configMock,
-                'eventDispatcher' => $this->eventManager,
+                'eventDispatcher' => $this->eventManagerMock,
+                'cacheTypeList' => $this->cacheTypeListMock,
             ]
         );
     }
@@ -99,7 +108,7 @@ class ValueTest extends \PHPUnit_Framework_TestCase
      */
     public function testAfterLoad()
     {
-        $this->eventManager->expects(
+        $this->eventManagerMock->expects(
             $this->at(0)
         )->method(
             'dispatch'
@@ -107,7 +116,7 @@ class ValueTest extends \PHPUnit_Framework_TestCase
             'model_load_after',
             ['object' => $this->model]
         );
-        $this->eventManager->expects(
+        $this->eventManagerMock->expects(
             $this->at(1)
         )->method(
             'dispatch'
@@ -158,4 +167,28 @@ class ValueTest extends \PHPUnit_Framework_TestCase
             ],
         ];
     }
+
+    /**
+     * @param int $callNumber
+     * @param string $oldValue
+     * @dataProvider afterSaveDataProvider
+     */
+    public function testAfterSave($callNumber, $oldValue)
+    {
+        $this->cacheTypeListMock->expects($this->exactly($callNumber))
+            ->method('invalidate');
+        $this->configMock->expects($this->any())
+            ->method('getValue')
+            ->willReturn($oldValue);
+        $this->model->setValue('some_value');
+        $this->assertInstanceOf(get_class($this->model), $this->model->afterSave());
+    }
+
+    public function afterSaveDataProvider()
+    {
+        return [
+            [0, 'some_value'],
+            [1, 'other_value'],
+        ];
+    }
 }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/FrontControllerTest.php b/lib/internal/Magento/Framework/App/Test/Unit/FrontControllerTest.php
index c87ab7af120aa3b2349c44f4f72d31a337da8f07..dc4f0b0c7c331b973525dbf3bae2f60afc85db9b 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/FrontControllerTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/FrontControllerTest.php
@@ -82,7 +82,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
         $response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false);
         $controllerInstance = $this->getMock('Magento\Framework\App\ActionInterface');
         $controllerInstance->expects($this->any())
-            ->method('dispatch')
+            ->method('execute')
             ->with($this->request)
             ->will($this->returnValue($response));
         $this->router->expects($this->at(0))
@@ -114,7 +114,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
         $response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false);
         $controllerInstance = $this->getMock('Magento\Framework\App\ActionInterface');
         $controllerInstance->expects($this->any())
-            ->method('dispatch')
+            ->method('execute')
             ->with($this->request)
             ->will($this->returnValue($response));
         $this->router->expects($this->at(0))
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Language/ConfigTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Language/ConfigTest.php
index c69c340fda154753c53b4601f686320f9f46fee5..5b2f4270d215b1afc2d727b7db0cc9770ea509fb 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Language/ConfigTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Language/ConfigTest.php
@@ -30,9 +30,27 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
             ->method('getRealPath')
             ->with('urn:magento:framework:App/Language/package.xsd')
             ->willReturn($this->urnResolver->getRealPath('urn:magento:framework:App/Language/package.xsd'));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domFactoryMock = $this->getMock('Magento\Framework\Config\DomFactory', [], [], '', false);
+        $domFactoryMock->expects($this->once())
+            ->method('createDom')
+            ->willReturnCallback(
+                function ($arguments) use ($validationStateMock) {
+                    return new \Magento\Framework\Config\Dom(
+                        $arguments['xml'],
+                        $validationStateMock,
+                        [],
+                        null,
+                        $arguments['schemaFile']
+                    );
+                }
+            );
         $this->config = new Config(
             file_get_contents(__DIR__ . '/_files/language.xml'),
-            $this->urnResolverMock
+            $this->urnResolverMock,
+            $domFactoryMock
         );
     }
 
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Router/ActionListTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Router/ActionListTest.php
index adeccfb17019ace4a71a19ad8bac1528d9d2f185..48c6ad840f366dc87e49d221483cc6bc3eb41f2a 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Router/ActionListTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Router/ActionListTest.php
@@ -112,7 +112,7 @@ class ActionListTest extends \PHPUnit_Framework_TestCase
         $mockClassName = 'Mock_Action_Class';
         $actionClass = $this->getMockClass(
             'Magento\Framework\App\ActionInterface',
-            ['dispatch', 'getResponse'],
+            ['execute', 'getResponse'],
             [],
             $mockClassName
         );
diff --git a/lib/internal/Magento/Framework/Config/AbstractXml.php b/lib/internal/Magento/Framework/Config/AbstractXml.php
index acdd49eeee201a5dc0bbb336f67255b7f8efad37..abf16d6cd177864b2feddb07d3584812cbef4844 100644
--- a/lib/internal/Magento/Framework/Config/AbstractXml.php
+++ b/lib/internal/Magento/Framework/Config/AbstractXml.php
@@ -24,14 +24,23 @@ abstract class AbstractXml
      */
     protected $_domConfig = null;
 
+    /**
+     * @var \Magento\Framework\Config\DomFactory
+     */
+    protected $domFactory;
+
     /**
      * Instantiate with the list of files to merge
      *
      * @param array $configFiles
+     * @param \Magento\Framework\Config\DomFactory $domFactory
      * @throws \InvalidArgumentException
      */
-    public function __construct($configFiles)
-    {
+    public function __construct(
+        $configFiles,
+        \Magento\Framework\Config\DomFactory $domFactory
+    ) {
+        $this->domFactory = $domFactory;
         if (empty($configFiles)) {
             throw new \InvalidArgumentException('There must be at least one configuration file specified.');
         }
@@ -81,9 +90,7 @@ abstract class AbstractXml
                 );
             }
         }
-        if ($this->_isRuntimeValidated()) {
-            $this->_performValidate();
-        }
+        $this->_performValidate();
         return $this->_getDomConfigModel()->getDom();
     }
 
@@ -96,7 +103,9 @@ abstract class AbstractXml
      */
     protected function _performValidate($file = null)
     {
-        if (!$this->_getDomConfigModel()->validate($this->getSchemaFile(), $errors)) {
+        $errors = [];
+        $this->_getDomConfigModel()->validate($this->getSchemaFile(), $errors);
+        if (!empty($errors)) {
             $phrase = (null === $file)
                 ? new \Magento\Framework\Phrase('Invalid Document %1%2', [PHP_EOL, implode("\n", $errors)])
                 : new \Magento\Framework\Phrase('Invalid XML-file: %1%2%3', [$file, PHP_EOL, implode("\n", $errors)]);
@@ -106,16 +115,6 @@ abstract class AbstractXml
         return $this;
     }
 
-    /**
-     * Get if xml files must be runtime validated
-     *
-     * @return boolean
-     */
-    protected function _isRuntimeValidated()
-    {
-        return true;
-    }
-
     /**
      * Get Dom configuration model
      *
@@ -125,13 +124,12 @@ abstract class AbstractXml
     protected function _getDomConfigModel()
     {
         if (null === $this->_domConfig) {
-            $schemaFile = $this->getPerFileSchemaFile() &&
-                $this->_isRuntimeValidated() ? $this->getPerFileSchemaFile() : null;
-            $this->_domConfig = new \Magento\Framework\Config\Dom(
-                $this->_getInitialXml(),
-                $this->_getIdAttributes(),
-                null,
-                $schemaFile
+            $this->_domConfig = $this->domFactory->createDom(
+                [
+                    'xml' => $this->_getInitialXml(),
+                    'idAttributes' => $this->_getIdAttributes(),
+                    'schemaFile' => $this->getPerFileSchemaFile()
+                ]
             );
         }
         return $this->_domConfig;
diff --git a/lib/internal/Magento/Framework/Config/Dom.php b/lib/internal/Magento/Framework/Config/Dom.php
index 4f523d27e0175ef96bb678751d2cd5c803898bd2..a0fbe07e087bde32a322761f365e36b31de71a84 100644
--- a/lib/internal/Magento/Framework/Config/Dom.php
+++ b/lib/internal/Magento/Framework/Config/Dom.php
@@ -30,6 +30,11 @@ class Dom
      */
     const ERROR_FORMAT_DEFAULT = "%message%\nLine: %line%\n";
 
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface
+     */
+    private $validationState;
+
     /**
      * Dom document
      *
@@ -71,7 +76,7 @@ class Dom
     protected $rootNamespace;
 
     /**
-     * \Magento\Framework\Config\Dom\UrnResolver
+     * @var \Magento\Framework\Config\Dom\UrnResolver
      */
     private static $urnResolver;
 
@@ -82,6 +87,7 @@ class Dom
      * The path to ID attribute name should not include any attribute notations or modifiers -- only node names
      *
      * @param string $xml
+     * @param \Magento\Framework\Config\ValidationStateInterface $validationState
      * @param array $idAttributes
      * @param string $typeAttributeName
      * @param string $schemaFile
@@ -89,11 +95,13 @@ class Dom
      */
     public function __construct(
         $xml,
+        \Magento\Framework\Config\ValidationStateInterface $validationState,
         array $idAttributes = [],
         $typeAttributeName = null,
         $schemaFile = null,
         $errorFormat = self::ERROR_FORMAT_DEFAULT
     ) {
+        $this->validationState = $validationState;
         $this->schema = $schemaFile;
         $this->nodeMergingConfig = new Dom\NodeMergingConfig(new Dom\NodePathMatcher(), $idAttributes);
         $this->typeAttributeName = $typeAttributeName;
@@ -351,7 +359,7 @@ class Dom
     {
         $dom = new \DOMDocument();
         $dom->loadXML($xml);
-        if ($this->schema) {
+        if ($this->validationState->isValidationRequired() && $this->schema) {
             $errors = $this->validateDomDocument($dom, $this->schema, $this->errorFormat);
             if (count($errors)) {
                 throw new \Magento\Framework\Config\Dom\ValidationException(implode("\n", $errors));
@@ -369,8 +377,11 @@ class Dom
      */
     public function validate($schemaFileName, &$errors = [])
     {
-        $errors = $this->validateDomDocument($this->dom, $schemaFileName, $this->errorFormat);
-        return !count($errors);
+        if ($this->validationState->isValidationRequired()) {
+            $errors = $this->validateDomDocument($this->dom, $schemaFileName, $this->errorFormat);
+            return !count($errors);
+        }
+        return true;
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/Config/DomFactory.php b/lib/internal/Magento/Framework/Config/DomFactory.php
index 20be79afd0f4bf0574252ab57ed9349b5340105a..48d000c9e02f3fac1ed97aabf5f4d845b8cc40fe 100644
--- a/lib/internal/Magento/Framework/Config/DomFactory.php
+++ b/lib/internal/Magento/Framework/Config/DomFactory.php
@@ -24,8 +24,9 @@ class DomFactory
      *
      * @param \Magento\Framework\ObjectManagerInterface $objectManger
      */
-    public function __construct(\Magento\Framework\ObjectManagerInterface $objectManger)
-    {
+    public function __construct(
+        \Magento\Framework\ObjectManagerInterface $objectManger
+    ) {
         $this->_objectManager = $objectManger;
     }
 
diff --git a/lib/internal/Magento/Framework/Config/Reader/Filesystem.php b/lib/internal/Magento/Framework/Config/Reader/Filesystem.php
index 992158c6edf6341e55f4b7d1a9d2f61589b7122e..bbe3544318f844876775013c825c297af37bb33a 100644
--- a/lib/internal/Magento/Framework/Config/Reader/Filesystem.php
+++ b/lib/internal/Magento/Framework/Config/Reader/Filesystem.php
@@ -63,11 +63,9 @@ class Filesystem implements \Magento\Framework\Config\ReaderInterface
     protected $_domDocumentClass;
 
     /**
-     * Should configuration be validated
-     *
-     * @var bool
+     * @var \Magento\Framework\Config\ValidationStateInterface
      */
-    protected $_isValidated;
+    protected $validationState;
 
     /**
      * Constructor
@@ -95,10 +93,10 @@ class Filesystem implements \Magento\Framework\Config\ReaderInterface
         $this->_converter = $converter;
         $this->_fileName = $fileName;
         $this->_idAttributes = array_replace($this->_idAttributes, $idAttributes);
+        $this->validationState = $validationState;
         $this->_schemaFile = $schemaLocator->getSchema();
-        $this->_isValidated = $validationState->isValidated();
-        $this->_perFileSchema = $schemaLocator->getPerFileSchema() &&
-            $this->_isValidated ? $schemaLocator->getPerFileSchema() : null;
+        $this->_perFileSchema = $schemaLocator->getPerFileSchema() && $validationState->isValidationRequired()
+            ? $schemaLocator->getPerFileSchema() : null;
         $this->_domDocumentClass = $domDocumentClass;
         $this->_defaultScope = $defaultScope;
     }
@@ -145,7 +143,7 @@ class Filesystem implements \Magento\Framework\Config\ReaderInterface
                 );
             }
         }
-        if ($this->_isValidated) {
+        if ($this->validationState->isValidationRequired()) {
             $errors = [];
             if ($configMerger && !$configMerger->validate($this->_schemaFile, $errors)) {
                 $message = "Invalid Document \n";
@@ -172,7 +170,13 @@ class Filesystem implements \Magento\Framework\Config\ReaderInterface
      */
     protected function _createConfigMerger($mergerClass, $initialContents)
     {
-        $result = new $mergerClass($initialContents, $this->_idAttributes, null, $this->_perFileSchema);
+        $result = new $mergerClass(
+            $initialContents,
+            $this->validationState,
+            $this->_idAttributes,
+            null,
+            $this->_perFileSchema
+        );
         if (!$result instanceof \Magento\Framework\Config\Dom) {
             throw new \UnexpectedValueException(
                 "Instance of the DOM config merger is expected, got {$mergerClass} instead."
diff --git a/lib/internal/Magento/Framework/Config/Test/Unit/DomTest.php b/lib/internal/Magento/Framework/Config/Test/Unit/DomTest.php
index d759359f4ef03a1b6e8e044cd4350a39636d4d52..abe3ca2a331f407b1e3b504519c564bdf63a4bd2 100644
--- a/lib/internal/Magento/Framework/Config/Test/Unit/DomTest.php
+++ b/lib/internal/Magento/Framework/Config/Test/Unit/DomTest.php
@@ -7,6 +7,24 @@ namespace Magento\Framework\Config\Test\Unit;
 
 class DomTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface
+     */
+    protected $validationStateMock;
+
+    public function setUp()
+    {
+        $this->validationStateMock = $this->getMock(
+            '\Magento\Framework\Config\ValidationStateInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+    }
+
     /**
      * @param string $xmlFile
      * @param string $newXmlFile
@@ -19,7 +37,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
     {
         $xml = file_get_contents(__DIR__ . "/_files/dom/{$xmlFile}");
         $newXml = file_get_contents(__DIR__ . "/_files/dom/{$newXmlFile}");
-        $config = new \Magento\Framework\Config\Dom($xml, $ids, $typeAttributeName);
+        $config = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock, $ids, $typeAttributeName);
         $config->merge($newXml);
         $this->assertXmlStringEqualsXmlFile(__DIR__ . "/_files/dom/{$expectedXmlFile}", $config->getDom()->saveXML());
     }
@@ -87,7 +105,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
     {
         $xml = file_get_contents(__DIR__ . "/_files/dom/ambiguous_two.xml");
         $newXml = file_get_contents(__DIR__ . "/_files/dom/ambiguous_new_one.xml");
-        $config = new \Magento\Framework\Config\Dom($xml);
+        $config = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock);
         $config->merge($newXml);
     }
 
@@ -98,7 +116,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
      */
     public function testValidate($xml, array $expectedErrors)
     {
-        $dom = new \Magento\Framework\Config\Dom($xml);
+        $dom = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock);
         $actualResult = $dom->validate(__DIR__ . '/_files/sample.xsd', $actualErrors);
         $this->assertEquals(empty($expectedErrors), $actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
@@ -125,7 +143,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
         $expectedErrors = [
             "Error: `Element 'unknown_node': This element is not expected. Expected is ( node ).`",
         ];
-        $dom = new \Magento\Framework\Config\Dom($xml, [], null, null, $errorFormat);
+        $dom = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock, [], null, null, $errorFormat);
         $actualResult = $dom->validate(__DIR__ . '/_files/sample.xsd', $actualErrors);
         $this->assertFalse($actualResult);
         $this->assertEquals($expectedErrors, $actualErrors);
@@ -139,7 +157,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
     {
         $xml = '<root><unknown_node/></root>';
         $errorFormat = '%message%,%unknown%';
-        $dom = new \Magento\Framework\Config\Dom($xml, [], null, null, $errorFormat);
+        $dom = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock, [], null, null, $errorFormat);
         $dom->validate(__DIR__ . '/_files/sample.xsd');
     }
 
@@ -147,7 +165,7 @@ class DomTest extends \PHPUnit_Framework_TestCase
     {
         $xml = '<root><node id="id1"/><node id="id2"/></root>';
         $schemaFile = __DIR__ . '/_files/sample.xsd';
-        $dom = new \Magento\Framework\Config\Dom($xml);
+        $dom = new \Magento\Framework\Config\Dom($xml, $this->validationStateMock);
         $domMock = $this->getMock('DOMDocument', ['schemaValidate'], []);
         $domMock->expects($this->once())
             ->method('schemaValidate')
diff --git a/lib/internal/Magento/Framework/Config/Test/Unit/Reader/FilesystemTest.php b/lib/internal/Magento/Framework/Config/Test/Unit/Reader/FilesystemTest.php
index 57e7a97d57350593e013a52f1f9f8383b5922791..7f83867d8275ccb0d5d7dab53a3b251381f2550f 100644
--- a/lib/internal/Magento/Framework/Config/Test/Unit/Reader/FilesystemTest.php
+++ b/lib/internal/Magento/Framework/Config/Test/Unit/Reader/FilesystemTest.php
@@ -104,7 +104,9 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase
                 $this->urnResolver->getRealPath('urn:magento:framework:Config/Test/Unit/_files/reader/schema.xsd')
             )
         );
-        $this->_validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $this->_validationStateMock->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(true);
         $model = new Filesystem(
             $this->_fileResolverMock,
             $this->_converterMock,
@@ -133,7 +135,9 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase
                 $this->urnResolver->getRealPath('urn:magento:framework:Config/Test/Unit/_files/reader/schema.xsd')
             )
         );
-        $this->_validationStateMock->expects($this->any())->method('isValidated')->will($this->returnValue(true));
+        $this->_validationStateMock->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(true);
 
         $model = new Filesystem(
             $this->_fileResolverMock,
diff --git a/lib/internal/Magento/Framework/Config/Test/Unit/ValidationStateTest.php b/lib/internal/Magento/Framework/Config/Test/Unit/ValidationStateTest.php
index 9e0cf08004e9a459c437216cd39bbe0088b38126..6026273c1fc9c2cd27a51a20e2260515d6085fd8 100644
--- a/lib/internal/Magento/Framework/Config/Test/Unit/ValidationStateTest.php
+++ b/lib/internal/Magento/Framework/Config/Test/Unit/ValidationStateTest.php
@@ -10,18 +10,18 @@ class ValidationStateTest extends \PHPUnit_Framework_TestCase
     /**
      * @param string $appMode
      * @param boolean $expectedResult
-     * @dataProvider isValidatedDataProvider
+     * @dataProvider isValidationRequiredDataProvider
      */
-    public function testIsValidated($appMode, $expectedResult)
+    public function testIsValidationRequired($appMode, $expectedResult)
     {
         $model = new \Magento\Framework\App\Arguments\ValidationState($appMode);
-        $this->assertEquals($model->isValidated(), $expectedResult);
+        $this->assertEquals($model->isValidationRequired(), $expectedResult);
     }
 
     /**
      * @return array
      */
-    public function isValidatedDataProvider()
+    public function isValidationRequiredDataProvider()
     {
         return [
             [\Magento\Framework\App\State::MODE_DEVELOPER, true],
diff --git a/lib/internal/Magento/Framework/Config/ValidationStateInterface.php b/lib/internal/Magento/Framework/Config/ValidationStateInterface.php
index 61f39fb67cc765b8cc331a43bf5d3619ef2a4697..1ad9f7b167931bbcd14d52035545605db6387091 100644
--- a/lib/internal/Magento/Framework/Config/ValidationStateInterface.php
+++ b/lib/internal/Magento/Framework/Config/ValidationStateInterface.php
@@ -17,5 +17,5 @@ interface ValidationStateInterface
      *
      * @return boolean
      */
-    public function isValidated();
+    public function isValidationRequired();
 }
diff --git a/lib/internal/Magento/Framework/Config/View.php b/lib/internal/Magento/Framework/Config/View.php
index cc67a3fce6c15bb2dfcbe070f4954c9bfbc4ea96..dc8a0c15df0ad1ddf5264bf9f1daaa90e9cd8bf6 100644
--- a/lib/internal/Magento/Framework/Config/View.php
+++ b/lib/internal/Magento/Framework/Config/View.php
@@ -29,12 +29,14 @@ class View extends \Magento\Framework\Config\AbstractXml
 
     /**
      * @param array $configFiles
+     * @param DomFactory $domFactory
      * @param UrnResolver $urnResolver
      * @param TypeDataExtractorPool $extractorPool
      * @param array $xpath
      */
     public function __construct(
         $configFiles,
+        DomFactory $domFactory,
         UrnResolver $urnResolver,
         TypeDataExtractorPool $extractorPool,
         $xpath = []
@@ -42,7 +44,7 @@ class View extends \Magento\Framework\Config\AbstractXml
         $this->xpath = $xpath;
         $this->extractorPool = $extractorPool;
         $this->urnResolver = $urnResolver;
-        parent::__construct($configFiles);
+        parent::__construct($configFiles, $domFactory);
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/Console/Cli.php b/lib/internal/Magento/Framework/Console/Cli.php
index 786a658b7e9ac92ed945aab9a7719a1e03ad1788..56b792bf85b8f38f94684e984cde234a3bcc746c 100644
--- a/lib/internal/Magento/Framework/Console/Cli.php
+++ b/lib/internal/Magento/Framework/Console/Cli.php
@@ -6,9 +6,11 @@
 
 namespace Magento\Framework\Console;
 
+use Magento\Framework\Filesystem\Driver\File;
 use Symfony\Component\Console\Application as SymfonyApplication;
 use Magento\Framework\App\Bootstrap;
 use Magento\Framework\Shell\ComplexParameter;
+use Symfony\Component\Console\Input\ArgvInput;
 
 /**
  * Magento2 CLI Application. This is the hood for all command line tools supported by Magento.
@@ -22,6 +24,28 @@ class Cli extends SymfonyApplication
      */
     const INPUT_KEY_BOOTSTRAP = 'bootstrap';
 
+    /** @var \Zend\ServiceManager\ServiceManager */
+    private $serviceManager;
+
+    /**
+     * @param string $name    The name of the application
+     * @param string $version The version of the application
+     */
+    public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN')
+    {
+        $this->serviceManager = \Zend\Mvc\Application::init(require BP . '/setup/config/application.config.php')
+            ->getServiceManager();
+        /**
+         * Temporary workaround until the compiler is able to clear the generation directory. (MAGETWO-44493)
+         */
+        if (class_exists('Magento\Setup\Console\CompilerPreparation')) {
+            (new \Magento\Setup\Console\CompilerPreparation($this->serviceManager, new ArgvInput(), new File()))
+                ->handleCompilerEnvironment();
+        }
+
+        parent::__construct($name, $version);
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -45,14 +69,12 @@ class Cli extends SymfonyApplication
         $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = null;
         $bootstrap = Bootstrap::create(BP, $params);
         $objectManager = $bootstrap->getObjectManager();
-        $serviceManager = \Zend\Mvc\Application::init(require BP . '/setup/config/application.config.php')
-            ->getServiceManager();
         /** @var \Magento\Setup\Model\ObjectManagerProvider $omProvider */
-        $omProvider = $serviceManager->get('Magento\Setup\Model\ObjectManagerProvider');
+        $omProvider = $this->serviceManager->get('Magento\Setup\Model\ObjectManagerProvider');
         $omProvider->setObjectManager($objectManager);
 
         if (class_exists('Magento\Setup\Console\CommandList')) {
-            $setupCommandList = new \Magento\Setup\Console\CommandList($serviceManager);
+            $setupCommandList = new \Magento\Setup\Console\CommandList($this->serviceManager);
             $setupCommands = $setupCommandList->getCommands();
         }
 
diff --git a/lib/internal/Magento/Framework/Controller/Index/Index.php b/lib/internal/Magento/Framework/Controller/Index/Index.php
index bc8b9d70810a6fa660f8868044c344c02ea41c0e..ad0c9a85ba6e1746af8031a81dffbb954b8c609e 100644
--- a/lib/internal/Magento/Framework/Controller/Index/Index.php
+++ b/lib/internal/Magento/Framework/Controller/Index/Index.php
@@ -11,7 +11,7 @@ class Index extends \Magento\Framework\App\Action\Action
     /**
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
     }
 }
diff --git a/lib/internal/Magento/Framework/Controller/Noroute/Index.php b/lib/internal/Magento/Framework/Controller/Noroute/Index.php
index 34154715366e5f3489c61f7b196d9a23c8ae7fda..cce6f4671f9b491b44a1242712846a8fc6bf0ca1 100644
--- a/lib/internal/Magento/Framework/Controller/Noroute/Index.php
+++ b/lib/internal/Magento/Framework/Controller/Noroute/Index.php
@@ -13,7 +13,7 @@ class Index extends \Magento\Framework\App\Action\Action
      *
      * @return void
      */
-    public function execute()
+    public function executeInternal()
     {
         $status = $this->getRequest()->getParam('__status__');
         if (!$status instanceof \Magento\Framework\DataObject) {
diff --git a/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/Index/IndexTest.php b/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/Index/IndexTest.php
index aac2c071fb0a4322ed0437bd84ac3efc4046f8a9..b1a3be4984b4d5fb5f5e9283bbe2b98bfbc6993d 100644
--- a/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/Index/IndexTest.php
+++ b/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/Index/IndexTest.php
@@ -9,7 +9,7 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 
 class IndexTest extends \PHPUnit_Framework_TestCase
 {
-    public function testExecute()
+    public function testExecuteInternal()
     {
         $objectManager = new ObjectManager($this);
         /**
@@ -19,6 +19,6 @@ class IndexTest extends \PHPUnit_Framework_TestCase
 
         // The execute method is empty and returns void, just calling to verify
         // the method exists and does not throw an exception
-        $controller->execute();
+        $controller->executeInternal();
     }
 }
diff --git a/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/NorouteTest.php b/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/NorouteTest.php
index eabedc51f1b871ec8973ffdd0dc7e10dd061b0dc..1ad67c8f366161ff925a004f93752f58ee025b9c 100644
--- a/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/NorouteTest.php
+++ b/lib/internal/Magento/Framework/Controller/Test/Unit/Controller/NorouteTest.php
@@ -8,7 +8,7 @@ namespace Magento\Framework\Controller\Test\Unit\Controller;
 class NorouteTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Controller\Noroute
+     * @var \Magento\Framework\Controller\Noroute\Index
      */
     protected $_controller;
 
@@ -53,7 +53,7 @@ class NorouteTest extends \PHPUnit_Framework_TestCase
         $this->_statusMock->expects($this->any())->method('getLoaded')->will($this->returnValue(false));
         $this->_viewMock->expects($this->once())->method('loadLayout')->with(['default', 'noroute']);
         $this->_viewMock->expects($this->once())->method('renderLayout');
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     public function testIndexActionWhenStatusLoaded()
@@ -77,7 +77,7 @@ class NorouteTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue($this->_requestMock)
         );
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 
     public function testIndexActionWhenStatusNotInstanceofMagentoObject()
@@ -91,6 +91,6 @@ class NorouteTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue('string')
         );
-        $this->_controller->execute();
+        $this->_controller->executeInternal();
     }
 }
diff --git a/lib/internal/Magento/Framework/Indexer/Test/Unit/Config/ReaderTest.php b/lib/internal/Magento/Framework/Indexer/Test/Unit/Config/ReaderTest.php
index 54f09ad61288082e6efb53e31faaab607ad67225..bff3d9e5264cdf3087b79c3fb16a2bf5cdf583ed 100644
--- a/lib/internal/Magento/Framework/Indexer/Test/Unit/Config/ReaderTest.php
+++ b/lib/internal/Magento/Framework/Indexer/Test/Unit/Config/ReaderTest.php
@@ -34,7 +34,9 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
 
         $this->_converter = $this->getMock('Magento\Framework\Indexer\Config\Converter', ['convert']);
         $validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $validationState->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_model = new \Magento\Framework\Indexer\Config\Reader(
             $this->_fileResolverMock,
diff --git a/lib/internal/Magento/Framework/Interception/Config/Config.php b/lib/internal/Magento/Framework/Interception/Config/Config.php
index 7c9ede12daf5cb4dbee6fe24f16d28c68bd0fd0e..43be5547c46a49b9768c5aa4cf7ea52722a24a9a 100644
--- a/lib/internal/Magento/Framework/Interception/Config/Config.php
+++ b/lib/internal/Magento/Framework/Interception/Config/Config.php
@@ -63,7 +63,7 @@ class Config implements \Magento\Framework\Interception\ConfigInterface
      *
      * @var array
      */
-    protected $_serviceClassTypes = ['Proxy', 'Interceptor'];
+    protected $_serviceClassTypes = ['Interceptor'];
 
     /**
      * @var \Magento\Framework\Config\ScopeListInterface
diff --git a/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php b/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
index 6c12758905634c325153a2b588ee72d08c5ad108..b2bcba673e2a7c2d79a3a55bb7a17b1ded46ab25 100644
--- a/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
+++ b/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
@@ -102,6 +102,10 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
                         'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Enhanced',
                         'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Enhanced',
                     ],
+                    [
+                        'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Proxy',
+                        'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Proxy',
+                    ],
                     [
                         'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemProxy',
                         'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemProxy',
@@ -151,6 +155,7 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
             'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\Item' => true,
             'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\Item\Enhanced' => true,
             'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Enhanced' => true,
+            'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Proxy' => true,
             'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemProxy' => false,
             'virtual_custom_item' => true,
         ];
@@ -195,7 +200,13 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
             [
                 // the following model has only inherited plugins
                 true,
-                'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Enhanced',
+                'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Proxy',
+                ['Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer'],
+            ],
+            [
+                // the following model has only inherited plugins
+                true,
+                'Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer\Proxy',
                 ['Magento\Framework\Interception\Test\Unit\Custom\Module\Model\ItemContainer'],
             ],
             [
diff --git a/lib/internal/Magento/Framework/Mview/Test/Unit/Config/ReaderTest.php b/lib/internal/Magento/Framework/Mview/Test/Unit/Config/ReaderTest.php
index ced986821731c37c8b976d6a7d52b996e56f29a7..5f2bf50dac3a901e5115aed8340db924114eb347 100644
--- a/lib/internal/Magento/Framework/Mview/Test/Unit/Config/ReaderTest.php
+++ b/lib/internal/Magento/Framework/Mview/Test/Unit/Config/ReaderTest.php
@@ -44,7 +44,9 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         $schemaLocator = new \Magento\Framework\Mview\Config\SchemaLocator($urnResolverMock);
 
         $validationState = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationState->expects($this->once())->method('isValidated')->will($this->returnValue(false));
+        $validationState->expects($this->any())
+            ->method('isValidationRequired')
+            ->willReturn(false);
 
         $this->_model = new \Magento\Framework\Mview\Config\Reader(
             $this->_fileResolverMock,
diff --git a/lib/internal/Magento/Framework/ObjectManager/Config/Reader/Dom.php b/lib/internal/Magento/Framework/ObjectManager/Config/Reader/Dom.php
index 2da29257ff905802fca84dcb8dd12aa424c223de..8203e4a562d42affde5d1bc13acdce3d910afdf0 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Config/Reader/Dom.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Config/Reader/Dom.php
@@ -62,6 +62,12 @@ class Dom extends \Magento\Framework\Config\Reader\Filesystem
      */
     protected function _createConfigMerger($mergerClass, $initialContents)
     {
-        return new $mergerClass($initialContents, $this->_idAttributes, self::TYPE_ATTRIBUTE, $this->_perFileSchema);
+        return new $mergerClass(
+            $initialContents,
+            $this->validationState,
+            $this->_idAttributes,
+            self::TYPE_ATTRIBUTE,
+            $this->_perFileSchema
+        );
     }
 }
diff --git a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/Reader/_files/ConfigDomMock.php b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/Reader/_files/ConfigDomMock.php
index 492fbab7633205c23ebd1afb384bbc7492a2af9e..fffc1776bb0d97abbe6edbebdc1d165b1925d32f 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/Reader/_files/ConfigDomMock.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/Reader/_files/ConfigDomMock.php
@@ -15,7 +15,7 @@ class ConfigDomMock extends \PHPUnit_Framework_TestCase
      * @param $perFileSchema
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function __construct($initialContents, $idAttributes, $typeAttribute, $perFileSchema)
+    public function __construct($initialContents, $validationState, $idAttributes, $typeAttribute, $perFileSchema)
     {
         $this->assertEquals('first content item', $initialContents);
         $this->assertEquals('xsi:type', $typeAttribute);
diff --git a/lib/internal/Magento/Framework/Validator/Config.php b/lib/internal/Magento/Framework/Validator/Config.php
index 9b10f61bb596d87814b0704b322ec39ca1c8b1ec..b45a12914e7909fa29c30ad8fe94c70bfb54d6ef 100644
--- a/lib/internal/Magento/Framework/Validator/Config.php
+++ b/lib/internal/Magento/Framework/Validator/Config.php
@@ -19,7 +19,6 @@ class Config extends \Magento\Framework\Config\AbstractXml
     const CONSTRAINT_TYPE_ENTITY = 'entity';
 
     const CONSTRAINT_TYPE_PROPERTY = 'property';
-
     /**#@-*/
 
     /**
@@ -32,22 +31,18 @@ class Config extends \Magento\Framework\Config\AbstractXml
      */
     protected $_builderFactory;
 
-    /** @var \Magento\Framework\Config\Dom\UrnResolver */
-    protected $urnResolver;
-
     /**
      * @param array $configFiles
+     * @param \Magento\Framework\Config\DomFactory $domFactory
      * @param \Magento\Framework\Validator\UniversalFactory $builderFactory
-     * @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
      */
     public function __construct(
         $configFiles,
-        \Magento\Framework\Validator\UniversalFactory $builderFactory,
-        \Magento\Framework\Config\Dom\UrnResolver $urnResolver
+        \Magento\Framework\Config\DomFactory $domFactory,
+        \Magento\Framework\Validator\UniversalFactory $builderFactory
     ) {
         $this->_builderFactory = $builderFactory;
-        $this->urnResolver = $urnResolver;
-        parent::__construct($configFiles);
+        parent::__construct($configFiles, $domFactory);
     }
 
     /**
@@ -407,7 +402,7 @@ class Config extends \Magento\Framework\Config\AbstractXml
      */
     public function getSchemaFile()
     {
-        return $this->urnResolver->getRealPath('urn:magento:framework:Validator/etc/validation.xsd');
+        return __DIR__ . '/etc/validation.xsd';
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/Validator/Test/Unit/ConfigTest.php b/lib/internal/Magento/Framework/Validator/Test/Unit/ConfigTest.php
index 9a9bb9aafcaae66ff4e780de8d992b5ac7a56609..977cfb9adf04f3fd2090d26d8fcf8325eacd8d3e 100644
--- a/lib/internal/Magento/Framework/Validator/Test/Unit/ConfigTest.php
+++ b/lib/internal/Magento/Framework/Validator/Test/Unit/ConfigTest.php
@@ -55,20 +55,35 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
             new \Magento\Framework\ObjectManager\Relations\Runtime()
         );
         $factory = new \Magento\Framework\ObjectManager\Factory\Dynamic\Developer($config);
-        $realObjectManager = new \Magento\Framework\ObjectManager\ObjectManager($factory, $config);
-        $factory->setObjectManager($realObjectManager);
-        $universalFactory = $realObjectManager->get('Magento\Framework\Validator\UniversalFactory');
+        $appObjectManager = new \Magento\Framework\ObjectManager\ObjectManager($factory, $config);
+        $factory->setObjectManager($appObjectManager);
+        /** @var \Magento\Framework\Validator\UniversalFactory $universalFactory */
+        $universalFactory = $appObjectManager->get('Magento\Framework\Validator\UniversalFactory');
         /** @var \Magento\Framework\Config\Dom\UrnResolver $urnResolverMock */
         $urnResolverMock = $this->getMock('Magento\Framework\Config\Dom\UrnResolver', [], [], '', false);
         $urnResolverMock->expects($this->any())
             ->method('getRealPath')
             ->with('urn:magento:framework:Validator/etc/validation.xsd')
             ->willReturn($this->urnResolver->getRealPath('urn:magento:framework:Validator/etc/validation.xsd'));
+        $appObjectManager->configure(
+            [
+                'preferences' => [
+                    'Magento\Framework\Config\ValidationStateInterface' =>
+                        'Magento\Framework\App\Arguments\ValidationState',
+                ],
+                'Magento\Framework\App\Arguments\ValidationState' => [
+                    'arguments' => [
+                        'appMode' => 'developer',
+                    ]
+                ]
+            ]
+        );
         $this->_config = $this->_objectManager->getObject(
             'Magento\Framework\Validator\Config',
             [
                 'configFiles' => $configFiles,
                 'builderFactory' => $universalFactory,
+                'domFactory' => new \Magento\Framework\Config\DomFactory($appObjectManager),
                 'urnResolver' => $urnResolverMock
             ]
         );
diff --git a/lib/internal/Magento/Framework/View/Config.php b/lib/internal/Magento/Framework/View/Config.php
index fb4c687a731764c9d873f59c738a6d251e3bbece..85126514bb328578ff3eff05a3e638297834bd1e 100644
--- a/lib/internal/Magento/Framework/View/Config.php
+++ b/lib/internal/Magento/Framework/View/Config.php
@@ -62,9 +62,6 @@ class Config implements \Magento\Framework\View\ConfigInterface
      */
     protected $fileIteratorFactory;
 
-    /** @var \Magento\Framework\Config\ViewFactory */
-    protected $viewConfigFactory;
-
     /**
      * File view factory
      *
@@ -89,7 +86,7 @@ class Config implements \Magento\Framework\View\ConfigInterface
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\FileSystem $viewFileSystem,
         \Magento\Framework\Config\FileIteratorFactory $fileIteratorFactory,
-        \Magento\Framework\Config\ViewFactory $viewConfigFactory,
+        \Magento\Framework\Config\ViewFactory $viewFactory,
         $filename = self::CONFIG_FILE_NAME
     ) {
         $this->moduleReader = $moduleReader;
@@ -97,7 +94,7 @@ class Config implements \Magento\Framework\View\ConfigInterface
         $this->assetRepo = $assetRepo;
         $this->viewFileSystem = $viewFileSystem;
         $this->fileIteratorFactory = $fileIteratorFactory;
-        $this->viewConfigFactory = $viewConfigFactory;
+        $this->viewFactory = $viewFactory;
         $this->filename = $filename;
     }
 
@@ -131,7 +128,7 @@ class Config implements \Magento\Framework\View\ConfigInterface
                 $this->rootDirectory->getRelativePath($themeConfigFile)
             );
         }
-        $config = $this->viewConfigFactory->create($configFiles);
+        $config = $this->viewFactory->create($configFiles);
 
         $this->viewConfigs[$key] = $config;
         return $config;
diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/DomMerger.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/DomMerger.php
index ae7107665b4ae8f8a96816ecd8560109e9081599..554fc62e34c2386bdba4f34b58d0ec70f768f047 100644
--- a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/DomMerger.php
+++ b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/DomMerger.php
@@ -8,6 +8,7 @@ namespace Magento\Framework\View\Element\UiComponent\Config;
 use Magento\Framework\Config\Dom;
 use Magento\Framework\Config\Dom\UrnResolver;
 use Magento\Framework\Module\Dir\Reader as DirectoryReader;
+use \Magento\Framework\Config\ValidationStateInterface;
 
 /**
  * Class DomMerger
@@ -19,6 +20,11 @@ class DomMerger implements DomMergerInterface
      */
     const ERROR_FORMAT_DEFAULT = "Message: %message%\nLine: %line%\n";
 
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface
+     */
+    private $validationState;
+
     /**
      * Location schema file
      *
@@ -62,20 +68,21 @@ class DomMerger implements DomMergerInterface
      * Format of $contextXPath: array('/config/ui')
      * The path to ID attribute name should not include any attribute notations or modifiers -- only node names
      *
-     * @param UrnResolver $urnResolver
-     * @param string $schema Absolute schema file path or URN
+     * @param ValidationStateInterface $validationState
+     * @param string $schema
      * @param bool $isMergeSimpleXMLElement
      * @param array $contextXPath
      * @param array $idAttributes
      */
     public function __construct(
-        UrnResolver $urnResolver,
+        ValidationStateInterface $validationState,
         $schema,
         $isMergeSimpleXMLElement = false,
         array $contextXPath = [],
         array $idAttributes = []
     ) {
-        $this->schemaFilePath = $urnResolver->getRealPath($schema);
+        $this->validationState = $validationState;
+        $this->schema = $schema;
         $this->isMergeSimpleXMLElement = $isMergeSimpleXMLElement;
         $this->contextXPath = $contextXPath;
         $this->idAttributes = $idAttributes;
@@ -315,7 +322,7 @@ class DomMerger implements DomMergerInterface
     {
         $domDocument = new \DOMDocument();
         $domDocument->loadXML($xml);
-        if ($this->schemaFilePath) {
+        if ($this->validationState->isValidationRequired() && $this->schema) {
             $errors = $this->validateDomDocument($domDocument);
             if (count($errors)) {
                 throw new \Magento\Framework\Exception\LocalizedException(
@@ -335,12 +342,12 @@ class DomMerger implements DomMergerInterface
      * @return array of errors
      * @throws \Exception
      */
-    protected function validateDomDocument(\DOMDocument $domDocument, $schemaFilePath = null)
+    protected function validateDomDocument(\DOMDocument $domDocument, $schema = null)
     {
-        $schemaFilePath = $schemaFilePath !== null ? $schemaFilePath : $this->schemaFilePath;
+        $schema = $schema !== null ? $schema : $this->schema;
         libxml_use_internal_errors(true);
         try {
-            $errors = \Magento\Framework\Config\Dom::validateDomDocument($domDocument, $schemaFilePath);
+            $errors = \Magento\Framework\Config\Dom::validateDomDocument($domDocument, $schema);
         } catch (\Exception $exception) {
             libxml_use_internal_errors(false);
             throw $exception;
@@ -435,6 +442,9 @@ class DomMerger implements DomMergerInterface
      */
     public function validate($schemaFilePath = null)
     {
+        if (!$this->validationState->isValidationRequired()) {
+            return [];
+        }
         return $this->validateDomDocument($this->getDom(), $schemaFilePath);
     }
 }
diff --git a/lib/internal/Magento/Framework/View/PageLayout/Config.php b/lib/internal/Magento/Framework/View/PageLayout/Config.php
index 31279b31a061659df213c2b87e18c208a125a116..ce0f173c5d8b3286aea932421e685b737723d111 100644
--- a/lib/internal/Magento/Framework/View/PageLayout/Config.php
+++ b/lib/internal/Magento/Framework/View/PageLayout/Config.php
@@ -17,14 +17,18 @@ class Config extends \Magento\Framework\Config\AbstractXml
     /**
      * Instantiate with the list of files to merge
      *
-     * @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
      * @param array $configFiles
+     * @param \Magento\Framework\Config\DomFactory $domFactory
+     * @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
      * @throws \InvalidArgumentException
      */
-    public function __construct($configFiles, \Magento\Framework\Config\Dom\UrnResolver $urnResolver)
-    {
+    public function __construct(
+        $configFiles,
+        \Magento\Framework\Config\DomFactory $domFactory,
+        \Magento\Framework\Config\Dom\UrnResolver $urnResolver
+    ) {
         $this->urnResolver = $urnResolver;
-        parent::__construct($configFiles);
+        parent::__construct($configFiles, $domFactory);
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
index c6c980ee74c530e013a401b469dbde403ff6dc3d..dd2270d310a3bfc063c511e66fb3665e321644d9 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
@@ -68,7 +68,7 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
                 'assetRepo' => $this->repositoryMock,
                 'viewFileSystem' => $this->fileSystemMock,
                 'fileIteratorFactory' => $this->fileIteratorFactoryMock,
-                'viewConfigFactory' => $this->viewConfigFactoryMock
+                'viewFactory' => $this->viewConfigFactoryMock
             ]
         );
     }
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/PageLayout/ConfigTest.php b/lib/internal/Magento/Framework/View/Test/Unit/PageLayout/ConfigTest.php
index 8bdac494e98a6b3741038e5f21dec573e41174cf..2b10c2a26d44212623aa246ca3e8db5399b7bfc1 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/PageLayout/ConfigTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/PageLayout/ConfigTest.php
@@ -23,6 +23,26 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
             ->method('getRealPath')
             ->with('urn:magento:framework:View/PageLayout/etc/layouts.xsd')
             ->willReturn($urnResolver->getRealPath('urn:magento:framework:View/PageLayout/etc/layouts.xsd'));
+        $validationStateMock = $this->getMock('\Magento\Framework\Config\ValidationStateInterface', [], [], '', false);
+        $validationStateMock->method('isValidationRequired')
+            ->willReturn(true);
+        $domFactoryMock = $this->getMock('Magento\Framework\Config\DomFactory', [], [], '', false);
+        $domFactoryMock->expects($this->once())
+            ->method('createDom')
+            ->willReturnCallback(
+                function ($arguments) use ($validationStateMock) {
+                    // @codingStandardsIgnoreStart
+                    return new \Magento\Framework\Config\Dom(
+                        '<?xml version="1.0" encoding="UTF-8"?>'
+                            . '<page_layouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></page_layouts>',
+                        $validationStateMock,
+                        ['/page_layouts/layout' => 'id'],
+                        null,
+                        $arguments['schemaFile']
+                    );
+                    // @codingStandardsIgnoreEnd
+                }
+            );
         $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $this->config = $objectManagerHelper->getObject(
             'Magento\Framework\View\PageLayout\Config',
@@ -31,7 +51,8 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
                 'configFiles' => [
                     'layouts_one.xml' => file_get_contents(__DIR__ . '/_files/layouts_one.xml'),
                     'layouts_two.xml' => file_get_contents(__DIR__ . '/_files/layouts_two.xml'),
-                ]
+                ],
+                'domFactory' => $domFactoryMock
             ]
         );
     }
diff --git a/lib/web/mage/gallery/gallery.less b/lib/web/mage/gallery/gallery.less
index f1a68415517b156a5c45b3b31f379961ae276a62..b4a20fe03cd379818d4b3883d0373025433bc72f 100644
--- a/lib/web/mage/gallery/gallery.less
+++ b/lib/web/mage/gallery/gallery.less
@@ -1137,20 +1137,28 @@
         z-index: @z-index-10;
         cursor: pointer;
         .fotorama__thumb__arr {
-            width: 100%;
             .fotorama-abs-center();
+            width: 100%;
+
+            .ie9 & {
+                margin: (-@fotorama-thumb-arrow/2) 0 0 (-@fotorama-thumb-arrow/2);
+            }
         }
     }
     .fotorama__thumb__arr--left {
         .fotorama-arrow-gradient(left);
+        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#00ffffff', GradientType=1);
         left: 0;
+
         .fotorama__thumb__arr {
             background-position: (-@fotorama-thumb-arrow) (-@fotorama-thumb-arrow);
         }
     }
     .fotorama__thumb__arr--right {
         .fotorama-arrow-gradient(right);
+        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffffff', endColorstr='#ffffff', GradientType=1);
         right: 0;
+
         .fotorama__thumb__arr {
             background-position: (-@fotorama-thumb-arrow*2) (-@fotorama-thumb-arrow);
         }
diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
index b404778db1629d69099f5289e0f04e8892ee3d33..8843fb66c211157f4c0e77c1732ff2ba6748637f 100644
--- a/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
@@ -28,6 +28,9 @@ use Symfony\Component\Console\Output\OutputInterface;
  */
 class DiCompileCommand extends Command
 {
+    /** Command name */
+    const NAME = 'setup:di:compile';
+
     /** @var DeploymentConfig */
     private $deploymentConfig;
 
@@ -89,7 +92,7 @@ class DiCompileCommand extends Command
      */
     protected function configure()
     {
-        $this->setName('setup:di:compile')
+        $this->setName(self::NAME)
             ->setDescription(
                 'Generates DI configuration and all non-existing interceptors and factories'
             );
@@ -172,7 +175,6 @@ class DiCompileCommand extends Command
             $this->cleanupFilesystem(
                 [
                     DirectoryList::CACHE,
-                    DirectoryList::GENERATION,
                     DirectoryList::DI,
                 ]
             );
@@ -291,19 +293,34 @@ class DiCompileCommand extends Command
         array $compiledPathsList,
         array $dataAttributesIncludePattern
     ) {
+        $excludePatterns = [];
+        foreach ($this->excludedPathsList as $excludedPaths) {
+            $excludePatterns = array_merge($excludedPaths, $excludePatterns);
+        }
+
         $operations = [
+            OperationFactory::PROXY_GENERATOR => [
+                'paths' => $compiledPathsList['application'],
+                'filePatterns' => ['di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/'],
+                'excludePatterns' => $excludePatterns,
+            ],
             OperationFactory::REPOSITORY_GENERATOR => [
                 'paths' => $compiledPathsList['application'],
-                'filePatterns' => ['di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/']
+                'filePatterns' => ['di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/'],
+                'excludePatterns' => $excludePatterns,
             ],
             OperationFactory::DATA_ATTRIBUTES_GENERATOR => [
                 'paths' => $compiledPathsList['application'],
                 'filePatterns' => $dataAttributesIncludePattern
             ],
             OperationFactory::APPLICATION_CODE_GENERATOR => [
-                $compiledPathsList['application'],
-                $compiledPathsList['library'],
-                $compiledPathsList['generated_helpers'],
+                'paths' => [
+                    $compiledPathsList['application'],
+                    $compiledPathsList['library'],
+                    $compiledPathsList['generated_helpers'],
+                ],
+                'filePatterns' => ['php' => '/\.php$/'],
+                'excludePatterns' => $excludePatterns,
             ],
             OperationFactory::INTERCEPTION => [
                 'intercepted_paths' => [
diff --git a/setup/src/Magento/Setup/Console/Command/DiCompileMultiTenantCommand.php b/setup/src/Magento/Setup/Console/Command/DiCompileMultiTenantCommand.php
index 33f8f763ede317220fb6fb2e491a9dfc84839acd..ea56ed13dbd4dd0fc09bf49bf05cd0b91a81b228 100644
--- a/setup/src/Magento/Setup/Console/Command/DiCompileMultiTenantCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/DiCompileMultiTenantCommand.php
@@ -56,6 +56,9 @@ class DiCompileMultiTenantCommand extends AbstractSetupCommand
     const SERIALIZER_VALUE_IGBINARY = 'igbinary';
     /**#@- */
 
+    /** Command name */
+    const NAME = 'setup:di:compile-multi-tenant';
+
     /**
      * Object Manager
      *
@@ -155,7 +158,7 @@ class DiCompileMultiTenantCommand extends AbstractSetupCommand
                 'Allows to exclude Paths from compilation (default is #[\\\\/]m1[\\\\/]#i)'
             ),
         ];
-        $this->setName('setup:di:compile-multi-tenant')
+        $this->setName(self::NAME)
             ->setDescription(
                 'Generates all non-existing proxies and factories, and pre-compile class definitions, '
                 . 'inheritance information and plugin definitions'
diff --git a/setup/src/Magento/Setup/Console/CompilerPreparation.php b/setup/src/Magento/Setup/Console/CompilerPreparation.php
new file mode 100644
index 0000000000000000000000000000000000000000..adfefd3db07c03fd3fb1818c75cb96af7d936e1c
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/CompilerPreparation.php
@@ -0,0 +1,76 @@
+<?php
+/***
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Console;
+
+
+use Magento\Framework\App\Bootstrap;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Filesystem\Driver\File;
+use Magento\Setup\Console\Command\DiCompileCommand;
+use Magento\Setup\Console\Command\DiCompileMultiTenantCommand;
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
+use Symfony\Component\Console\Input\ArgvInput;
+
+class CompilerPreparation
+{
+    /** @var \Zend\ServiceManager\ServiceManager */
+    private $serviceManager;
+
+    /** @var ArgvInput */
+    private $input;
+
+    /** @var File */
+    private $filesystemDriver;
+
+    /**
+     * @param \Zend\ServiceManager\ServiceManager $serviceManager
+     * @param ArgvInput $input
+     * @param File $filesystemDriver
+     */
+    public function __construct(
+        \Zend\ServiceManager\ServiceManager $serviceManager,
+        \Symfony\Component\Console\Input\ArgvInput $input,
+        \Magento\Framework\Filesystem\Driver\File $filesystemDriver
+    ) {
+        $this->serviceManager   = $serviceManager;
+        $this->input            = $input;
+        $this->filesystemDriver = $filesystemDriver;
+    }
+
+    /**
+     * Determine whether a CLI command is for compilation, and if so, clear the directory
+     *
+     * @throws \Magento\Framework\Exception\FileSystemException
+     * @return void
+     */
+    public function handleCompilerEnvironment()
+    {
+        $compilationCommands = [DiCompileCommand::NAME, DiCompileMultiTenantCommand::NAME];
+        $cmdName = $this->input->getFirstArgument();
+        $isHelpOption = $this->input->hasParameterOption('--help') || $this->input->hasParameterOption('-h');
+
+        if (!in_array($cmdName, $compilationCommands) || $isHelpOption) {
+            return;
+        }
+
+        $generationDir = ($cmdName === DiCompileMultiTenantCommand::NAME)
+            ? $this->input->getParameterOption(DiCompileMultiTenantCommand::INPUT_KEY_GENERATION)
+            : null;
+
+        if (!$generationDir) {
+            $mageInitParams = $this->serviceManager->get(InitParamListener::BOOTSTRAP_PARAM);
+            $mageDirs = isset($mageInitParams[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS])
+                ? $mageInitParams[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS]
+                : [];
+            $generationDir = (new DirectoryList(BP, $mageDirs))->getPath(DirectoryList::GENERATION);
+        }
+
+        if ($this->filesystemDriver->isExists($generationDir)) {
+            $this->filesystemDriver->deleteDirectory($generationDir);
+        }
+    }
+}
diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ApplicationCodeGenerator.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ApplicationCodeGenerator.php
index 3b412d15cc14a644951a23f9087e085a5daf4f38..bd66d8e122360c2cb15543e37ee70cfcaab68152 100644
--- a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ApplicationCodeGenerator.php
+++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ApplicationCodeGenerator.php
@@ -5,8 +5,12 @@
  */
 namespace Magento\Setup\Module\Di\App\Task\Operation;
 
+use Magento\Framework\App\Bootstrap;
+use Magento\Framework\Exception\FileSystemException;
 use Magento\Setup\Module\Di\App\Task\OperationInterface;
 use Magento\Setup\Module\Di\Code\Reader\ClassesScanner;
+use Magento\Setup\Module\Di\Code\Scanner\DirectoryScanner;
+use Magento\Setup\Module\Di\Code\Scanner\PhpScanner;
 
 class ApplicationCodeGenerator implements OperationInterface
 {
@@ -20,16 +24,32 @@ class ApplicationCodeGenerator implements OperationInterface
      */
     private $classesScanner;
 
+    /**
+     * @var PhpScanner
+     */
+    private $phpScanner;
+
+    /**
+     * @var DirectoryScanner
+     */
+    private $directoryScanner;
+
     /**
      * @param ClassesScanner $classesScanner
+     * @param PhpScanner $phpScanner
+     * @param DirectoryScanner $directoryScanner
      * @param array $data
      */
     public function __construct(
         ClassesScanner $classesScanner,
+        PhpScanner $phpScanner,
+        DirectoryScanner $directoryScanner,
         $data = []
     ) {
         $this->data = $data;
         $this->classesScanner = $classesScanner;
+        $this->phpScanner = $phpScanner;
+        $this->directoryScanner = $directoryScanner;
     }
 
     /**
@@ -37,16 +57,26 @@ class ApplicationCodeGenerator implements OperationInterface
      */
     public function doOperation()
     {
-        if (empty($this->data)) {
+        if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns'])
+            !== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) {
             return;
         }
 
-        foreach ($this->data as $paths) {
+        foreach ($this->data['paths'] as $paths) {
             if (!is_array($paths)) {
                 $paths = (array)$paths;
             }
+            $files = [];
             foreach ($paths as $path) {
                 $this->classesScanner->getList($path);
+                $files = array_merge_recursive(
+                    $files,
+                    $this->directoryScanner->scan($path, $this->data['filePatterns'], $this->data['excludePatterns'])
+                );
+            }
+            $entities = $this->phpScanner->collectEntities($files['php']);
+            foreach ($entities as $entityName) {
+                class_exists($entityName);
             }
         }
     }
diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ProxyGenerator.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ProxyGenerator.php
new file mode 100644
index 0000000000000000000000000000000000000000..ebfec0635b8bb91e13215125f06acc6f5cf62fbd
--- /dev/null
+++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ProxyGenerator.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Module\Di\App\Task\Operation;
+
+use Magento\Setup\Module\Di\App\Task\OperationInterface;
+use Magento\Setup\Module\Di\Code\Scanner;
+
+class ProxyGenerator implements OperationInterface
+{
+    /**
+     * @var Scanner\DirectoryScanner
+     */
+    private $directoryScanner;
+
+    /**
+     * @var Scanner\XmlScanner
+     */
+    private $proxyScanner;
+
+    /**
+     * @var array
+     */
+    private $data;
+
+    /**
+     * @param Scanner\DirectoryScanner $directoryScanner
+     * @param Scanner\XmlScanner $proxyScanner
+     * @param array $data
+     */
+    public function __construct(
+        Scanner\DirectoryScanner $directoryScanner,
+        Scanner\XmlScanner $proxyScanner,
+        $data = []
+    ) {
+        $this->directoryScanner = $directoryScanner;
+        $this->proxyScanner = $proxyScanner;
+        $this->data = $data;
+    }
+
+    /**
+     * Processes operation task
+     *
+     * @return void
+     */
+    public function doOperation()
+    {
+        if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns'])
+            !== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) {
+            return;
+        }
+
+        $files = [];
+        foreach ($this->data['paths'] as $path) {
+            $files = array_merge_recursive(
+                $files,
+                $this->directoryScanner->scan($path, $this->data['filePatterns'], $this->data['excludePatterns'])
+            );
+        }
+        $proxies = $this->proxyScanner->collectEntities($files['di']);
+        foreach ($proxies as $entityName) {
+            class_exists($entityName);
+        }
+    }
+
+    /**
+     * Returns operation name
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return 'Proxies code generation';
+    }
+}
diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php
index cf3c779a3f77603eb3032d02d5134efa39d8af5e..60d1159661528e0598d687e8a44001e615029759 100644
--- a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php
+++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php
@@ -57,8 +57,8 @@ class RepositoryGenerator implements OperationInterface
      */
     public function doOperation()
     {
-        if (array_diff(array_keys($this->data), ['filePatterns', 'paths'])
-            !== array_diff(['filePatterns', 'paths'], array_keys($this->data))) {
+        if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns'])
+            !== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) {
             return;
         }
 
@@ -68,7 +68,10 @@ class RepositoryGenerator implements OperationInterface
         $this->repositoryScanner->setUseAutoload(false);
         $files = [];
         foreach ($this->data['paths'] as $path) {
-            $files = array_merge_recursive($files, $this->directoryScanner->scan($path, $this->data['filePatterns']));
+            $files = array_merge_recursive(
+                $files,
+                $this->directoryScanner->scan($path, $this->data['filePatterns'], $this->data['excludePatterns'])
+            );
         }
         $repositories = $this->repositoryScanner->collectEntities($files['di']);
         foreach ($repositories as $entityName) {
diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/OperationFactory.php b/setup/src/Magento/Setup/Module/Di/App/Task/OperationFactory.php
index dd6bfa1f5ff3adf2395ccfcc871a3ec7fe5efe4a..cb5c930f6e40aeb8d21fe663f5f58ae04010f053 100644
--- a/setup/src/Magento/Setup/Module/Di/App/Task/OperationFactory.php
+++ b/setup/src/Magento/Setup/Module/Di/App/Task/OperationFactory.php
@@ -32,6 +32,11 @@ class OperationFactory
      */
     const REPOSITORY_GENERATOR = 'repository_generator';
 
+    /**
+     * Proxy generator
+     */
+    const PROXY_GENERATOR = 'proxy_generator';
+
     /**
      * Service data attributes generator
      */
@@ -53,7 +58,8 @@ class OperationFactory
         self::APPLICATION_CODE_GENERATOR => 'Magento\Setup\Module\Di\App\Task\Operation\ApplicationCodeGenerator',
         self::INTERCEPTION => 'Magento\Setup\Module\Di\App\Task\Operation\Interception',
         self::INTERCEPTION_CACHE => 'Magento\Setup\Module\Di\App\Task\Operation\InterceptionCache',
-        self::REPOSITORY_GENERATOR => 'Magento\Setup\Module\Di\App\Task\Operation\RepositoryGenerator'
+        self::REPOSITORY_GENERATOR => 'Magento\Setup\Module\Di\App\Task\Operation\RepositoryGenerator',
+        self::PROXY_GENERATOR => 'Magento\Setup\Module\Di\App\Task\Operation\ProxyGenerator',
     ];
 
     /**
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileCommandTest.php
index 4230d3a67d8820c73ec139d02ed20566e6ff345f..2cbf5cc3f8e3b4e26d75b68ee7869c47623b0731 100644
--- a/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileCommandTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileCommandTest.php
@@ -141,7 +141,7 @@ class DiCompileCommandTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->with('Symfony\Component\Console\Helper\ProgressBar')
             ->willReturn($progressBar);
-        $this->manager->expects($this->exactly(6))->method('addOperation');
+        $this->manager->expects($this->exactly(7))->method('addOperation');
         $this->manager->expects($this->once())->method('process');
         $tester = new CommandTester($this->command);
         $tester->execute([]);
@@ -149,5 +149,6 @@ class DiCompileCommandTest extends \PHPUnit_Framework_TestCase
             'Generated code and dependency injection configuration successfully.',
             explode(PHP_EOL, $tester->getDisplay())
         );
+        $this->assertSame(DiCompileCommand::NAME, $this->command->getName());
     }
 }
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileMultiTenantCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileMultiTenantCommandTest.php
index 45edf5578c83333180f84ee1bee5c77d904ec58e..c8581808c6660a041854ab31c2b6c077c99bca0d 100644
--- a/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileMultiTenantCommandTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/DiCompileMultiTenantCommandTest.php
@@ -6,11 +6,22 @@
 namespace Magento\Setup\Test\Unit\Console\Command;
 
 use Magento\Framework\Component\ComponentRegistrar;
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Setup\Console\Command\DiCompileMultiTenantCommand;
 use Symfony\Component\Console\Tester\CommandTester;
 
 class DiCompileMultiTenantCommandTest extends \PHPUnit_Framework_TestCase
 {
+    /** @var \Magento\Setup\Console\Command\DiCompileMultiTenantCommand */
+    private $model;
+
+    public function setUp()
+    {
+        $this->model = (new ObjectManager($this))->getObject(
+            '\Magento\Setup\Console\Command\DiCompileMultiTenantCommand'
+        );
+    }
+
     /**
      * @dataProvider validateDataProvider
      * @param array $option
@@ -83,4 +94,14 @@ class DiCompileMultiTenantCommandTest extends \PHPUnit_Framework_TestCase
             ],
         ];
     }
+
+    public function testConfigure()
+    {
+        $methodUnderTest = new \ReflectionMethod($this->model, 'configure');
+        $methodUnderTest->setAccessible(true);
+        $methodUnderTest->invoke($this->model);
+        $this->assertSame(DiCompileMultiTenantCommand::NAME, $this->model->getName());
+        $this->assertNotEmpty($this->model->getDescription());
+        $this->assertCount(6, $this->model->getDefinition()->getOptions());
+    }
 }
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/CompilerPreparationTest.php b/setup/src/Magento/Setup/Test/Unit/Console/CompilerPreparationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..cc46c653e8bc8cb26ed7a8dabeda6bbf5b672186
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Console/CompilerPreparationTest.php
@@ -0,0 +1,181 @@
+<?php
+/***
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Test\Unit\Console;
+
+
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+use Magento\Setup\Console\Command\DiCompileCommand;
+use Magento\Setup\Console\Command\DiCompileMultiTenantCommand;
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
+use Symfony\Component\Console\Input\ArgvInput;
+
+class CompilerPreparationTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Setup\Console\CompilerPreparation */
+    private $model;
+
+    /** @var \Zend\ServiceManager\ServiceManager | \PHPUnit_Framework_MockObject_MockObject */
+    private $serviceManagerMock;
+
+    /** @var \Symfony\Component\Console\Input\ArgvInput | \PHPUnit_Framework_MockObject_MockObject */
+    private $inputMock;
+
+    /** @var \Magento\Framework\Filesystem\Driver\File | \PHPUnit_Framework_MockObject_MockObject */
+    private $filesystemDriverMock;
+
+    public function setUp()
+    {
+        $this->serviceManagerMock = $this->getMockBuilder('\Zend\ServiceManager\ServiceManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->inputMock = $this->getMockBuilder('\Symfony\Component\Console\Input\ArgvInput')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->filesystemDriverMock = $this->getMockBuilder('\Magento\Framework\Filesystem\Driver\File')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model = (new ObjectManager($this))->getObject(
+            '\Magento\Setup\Console\CompilerPreparation',
+            [
+                'serviceManager' => $this->serviceManagerMock,
+                'input' => $this->inputMock,
+                'filesystemDriver' => $this->filesystemDriverMock
+            ]
+        );
+    }
+
+    /**
+     * @dataProvider commandNameDataProvider
+     * @param $commandName
+     * @param $isCompileCommand
+     * @param $isHelpOption
+     * @param bool|null $dirExists
+     */
+    public function testClearGenerationDirWhenNeeded($commandName, $isCompileCommand, $isHelpOption, $dirExists = false)
+    {
+        $this->inputMock->expects($this->once())->method('getFirstArgument')->willReturn($commandName);
+        $this->inputMock->expects($this->atLeastOnce())
+            ->method('hasParameterOption')
+            ->with(
+                $this->logicalOr('--help', '-h')
+            )->willReturn($isHelpOption);
+        if ($isCompileCommand && !$isHelpOption) {
+            $this->filesystemDriverMock->expects($this->once())
+                ->method('isExists')
+                ->willReturn($dirExists);
+            $this->filesystemDriverMock->expects($this->exactly((int)$dirExists))->method('deleteDirectory');
+        } else {
+            $this->filesystemDriverMock->expects($this->never())->method('isExists');
+            $this->filesystemDriverMock->expects($this->never())->method('deleteDirectory');
+        }
+        $this->model->handleCompilerEnvironment();
+    }
+
+    public function commandNameDataProvider()
+    {
+        return [
+            'ST compiler, directory exists' => [
+                'commandName' => DiCompileCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => false,
+                'dirExists' => true
+            ],
+            'ST compiler, directory does not exist' => [
+                'commandName' => DiCompileCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => false,
+                'dirExists' => false
+            ],
+            'ST compiler, help option' => [
+                'commandName' => DiCompileCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => true,
+                'dirExists' => false
+            ],
+            'MT compiler, directory exists' => [
+                'commandName' => DiCompileMultiTenantCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => false,
+                'dirExists' => true
+            ],
+            'MT compiler, directory does not exist' => [
+                'commandName' => DiCompileMultiTenantCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => false,
+                'dirExists' => false
+            ],
+            'MT compiler, help option' => [
+                'commandName' => DiCompileMultiTenantCommand::NAME,
+                'isCompileCommand' => true,
+                'isHelpOption' => true,
+                'dirExists' => true
+            ],
+            'Other command' => [
+                'commandName' => 'not:a:compiler',
+                'isCompileCommand' => false,
+                'isHelpOption' => false,
+            ]
+        ];
+    }
+
+    public function testGenerationDirectoryFromInitParams()
+    {
+        $customGenerationDirectory = '/custom/generated/code/directory';
+        $mageInitParams = ['MAGE_DIRS' => ['generation' => ['path' => $customGenerationDirectory]]];
+
+        $this->inputMock->expects($this->once())
+            ->method('getFirstArgument')
+            ->willReturn(DiCompileMultiTenantCommand::NAME);
+
+        // Filesystem mock
+        $this->filesystemDriverMock->expects($this->once())->method('isExists')->willReturn(true);
+        $this->filesystemDriverMock->expects($this->once())
+            ->method('deleteDirectory')
+            ->with($customGenerationDirectory);
+
+        $this->serviceManagerMock->expects($this->once())
+            ->method('get')
+            ->with(InitParamListener::BOOTSTRAP_PARAM)
+            ->willReturn($mageInitParams);
+        $this->model->handleCompilerEnvironment();
+    }
+
+    /**
+     * @dataProvider compilerCommandDataProvider
+     */
+    public function testGenerationDirectoryFromCliOption($commandName)
+    {
+        $customGenerationDirectory = '/custom/generated/code/directory';
+        $useCliOption = $commandName === DiCompileMultiTenantCommand::NAME;
+
+        $this->inputMock->expects($this->once())
+            ->method('getFirstArgument')
+            ->willReturn($commandName);
+        $this->inputMock->expects($this->exactly((int)$useCliOption))
+            ->method('getParameterOption')
+            ->with(DiCompileMultiTenantCommand::INPUT_KEY_GENERATION)
+            ->willReturn($customGenerationDirectory);
+        // Filesystem mock
+        $directoryArgConstraint = $useCliOption
+            ? $this->equalTo($customGenerationDirectory)
+            : $this->logicalNot($this->equalTo($customGenerationDirectory));
+        $this->filesystemDriverMock->expects($this->once())->method('isExists')->willReturn(true);
+        $this->filesystemDriverMock->expects($this->once())
+            ->method('deleteDirectory')
+            ->with($directoryArgConstraint);
+
+        $this->model->handleCompilerEnvironment();
+    }
+
+    public function compilerCommandDataProvider()
+    {
+        return [
+            [DiCompileCommand::NAME],
+            [DiCompileMultiTenantCommand::NAME]
+        ];
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ApplicationCodeGeneratorTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ApplicationCodeGeneratorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a988bb3a5141b69776cf2e3ba87798028a247ae
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ApplicationCodeGeneratorTest.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Test\Unit\Module\Di\App\Task;
+
+use Magento\Setup\Module\Di\App\Task\Operation\ApplicationCodeGenerator;
+use Magento\Setup\Module\Di\Code\Scanner;
+use Magento\Setup\Module\Di\Code\Reader\ClassesScanner;
+
+class ApplicationCodeGeneratorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Scanner\DirectoryScanner | \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $directoryScannerMock;
+
+    /**
+     * @var Scanner\PhpScanner | \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $phpScannerMock;
+
+    /**
+     * @var ClassesScanner | \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $classesScannerMock;
+
+    protected function setUp()
+    {
+        $this->directoryScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\DirectoryScanner')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->phpScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\PhpScanner')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->classesScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Reader\ClassesScanner')
+            ->disableOriginalConstructor()
+            ->getMock();
+    }
+
+    /**
+     * @param array $data
+     *
+     * @dataProvider doOperationWrongDataDataProvider
+     */
+    public function testDoOperationWrongData($data)
+    {
+        $model = new ApplicationCodeGenerator(
+            $this->classesScannerMock,
+            $this->phpScannerMock,
+            $this->directoryScannerMock,
+            $data
+        );
+
+        $this->classesScannerMock->expects($this->never())
+            ->method('getList');
+        $this->directoryScannerMock->expects($this->never())
+            ->method('scan');
+        $this->phpScannerMock->expects($this->never())
+            ->method('collectEntities');
+
+        $this->assertEmpty($model->doOperation());
+    }
+
+    /**
+     * @return array
+     */
+    public function doOperationWrongDataDataProvider()
+    {
+        return [
+            [[]],
+            [['filePatterns' => ['php' => '*.php']]],
+            [['path' => 'path']],
+        ];
+    }
+
+    public function testDoOperation()
+    {
+        $data = [
+            'paths' => ['path/to/app'],
+            'filePatterns' => ['php' => '.php'],
+            'excludePatterns' => ['/\/Test\//']
+        ];
+        $files = ['php' => []];
+        $model = new ApplicationCodeGenerator(
+            $this->classesScannerMock,
+            $this->phpScannerMock,
+            $this->directoryScannerMock,
+            $data
+        );
+
+        $this->classesScannerMock->expects($this->once())
+            ->method('getList')
+            ->with($data['paths'][0]);
+        $this->directoryScannerMock->expects($this->once())
+            ->method('scan')
+            ->with(
+                $data['paths'][0],
+                $data['filePatterns'],
+                $data['excludePatterns']
+            )->willReturn($files);
+        $this->phpScannerMock->expects($this->once())
+            ->method('collectEntities')
+            ->with($files['php'])
+            ->willReturn([]);
+
+        $this->assertEmpty($model->doOperation());
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ProxyGeneratorTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ProxyGeneratorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c721973f615efcf3291af497b09b11a26caceb42
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/ProxyGeneratorTest.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Test\Unit\Module\Di\App\Task;
+
+use Magento\Setup\Module\Di\App\Task\Operation\ProxyGenerator;
+use Magento\Setup\Module\Di\Code\Scanner;
+use Magento\Setup\Module\Di\Code\Reader\ClassesScanner;
+
+class ProxyGeneratorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Scanner\DirectoryScanner | \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $directoryScannerMock;
+
+    /**
+     * @var Scanner\XmlScanner | \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $proxyScannerMock;
+
+    protected function setUp()
+    {
+        $this->directoryScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\DirectoryScanner')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->proxyScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\XmlScanner')
+            ->disableOriginalConstructor()
+            ->getMock();
+    }
+
+    /**
+     * @param array $data
+     *
+     * @dataProvider doOperationWrongDataDataProvider
+     */
+    public function testDoOperationWrongData($data)
+    {
+        $model = new ProxyGenerator(
+            $this->directoryScannerMock,
+            $this->proxyScannerMock,
+            $data
+        );
+
+        $this->directoryScannerMock->expects($this->never())
+            ->method('scan');
+        $this->proxyScannerMock->expects($this->never())
+            ->method('collectEntities');
+
+        $this->assertEmpty($model->doOperation());
+    }
+
+    /**
+     * @return array
+     */
+    public function doOperationWrongDataDataProvider()
+    {
+        return [
+            [[]],
+            [['filePatterns' => ['php' => '*.php']]],
+            [['path' => 'path']],
+        ];
+    }
+
+    public function testDoOperation()
+    {
+        $data = [
+            'paths' => ['path/to/app'],
+            'filePatterns' => ['di' => 'di.xml'],
+            'excludePatterns' => ['/\/Test\//'],
+        ];
+        $files = ['di' => []];
+        $model = new ProxyGenerator(
+            $this->directoryScannerMock,
+            $this->proxyScannerMock,
+            $data
+        );
+
+        $this->directoryScannerMock->expects($this->once())
+            ->method('scan')
+            ->with(
+                $data['paths'][0],
+                $data['filePatterns']
+            )->willReturn($files);
+        $this->proxyScannerMock->expects($this->once())
+            ->method('collectEntities')
+            ->with($files['di'])
+            ->willReturn([]);
+
+        $this->assertEmpty($model->doOperation());
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/RepositoryGeneratorTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/RepositoryGeneratorTest.php
index 8b49d60df518b313108b02eecb5a510974de6e7f..626ccfbe7134691b529634f5155f4879c995866b 100644
--- a/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/RepositoryGeneratorTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/App/Task/RepositoryGeneratorTest.php
@@ -16,7 +16,7 @@ class RepositoryGeneratorTest extends \PHPUnit_Framework_TestCase
      * @var Scanner\DirectoryScanner | \PHPUnit_Framework_MockObject_MockObject
      */
     private $directoryScannerMock;
-    
+
     /**
      * @var Scanner\RepositoryScanner | \PHPUnit_Framework_MockObject_MockObject
      */
@@ -75,6 +75,7 @@ class RepositoryGeneratorTest extends \PHPUnit_Framework_TestCase
         $data = [
             'paths' => ['path/to/app'],
             'filePatterns' => ['di' => 'di.xml'],
+            'excludePatterns' => ['/\/Test\//'],
         ];
         $files = ['di' => []];
         $model = new RepositoryGenerator(