diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
index f2d10d59e02c499fca965ce2a38a03804adc3654..45a74260e927001bcf39148dc2f5d9a9574d0189 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
@@ -30,18 +30,38 @@ class Save extends \Magento\Backend\App\Action
      */
     protected $dataPersistor;
 
+    /**
+     * @var \Magento\Cms\Model\PageFactory
+     */
+    private $pageFactory;
+
+    /**
+     * @var \Magento\Cms\Api\PageRepositoryInterface
+     */
+    private $pageRepository;
+
     /**
      * @param Action\Context $context
      * @param PostDataProcessor $dataProcessor
      * @param DataPersistorInterface $dataPersistor
+     * @param \Magento\Cms\Model\PageFactory $pageFactory
+     * @param \Magento\Cms\Api\PageRepositoryInterface $pageRepository
+     *
      */
     public function __construct(
         Action\Context $context,
         PostDataProcessor $dataProcessor,
-        DataPersistorInterface $dataPersistor
+        DataPersistorInterface $dataPersistor,
+        \Magento\Cms\Model\PageFactory $pageFactory = null,
+        \Magento\Cms\Api\PageRepositoryInterface $pageRepository = null
     ) {
         $this->dataProcessor = $dataProcessor;
         $this->dataPersistor = $dataPersistor;
+        $this->pageFactory = $pageFactory
+            ?: \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Cms\Model\PageFactory::class);
+        $this->pageRepository = $pageRepository
+            ?: \Magento\Framework\App\ObjectManager::getInstance()
+                ->get(\Magento\Cms\Api\PageRepositoryInterface::class);
         parent::__construct($context);
     }
 
@@ -66,7 +86,7 @@ class Save extends \Magento\Backend\App\Action
             }
 
             /** @var \Magento\Cms\Model\Page $model */
-            $model = $this->_objectManager->create(\Magento\Cms\Model\Page::class);
+            $model = $this->pageFactory->create();
 
             $id = $this->getRequest()->getParam('page_id');
             if ($id) {
@@ -85,7 +105,7 @@ class Save extends \Magento\Backend\App\Action
             }
 
             try {
-                $model->save();
+                $this->pageRepository->save($model);
                 $this->messageManager->addSuccess(__('You saved the page.'));
                 $this->dataPersistor->clear('cms_page');
                 if ($this->getRequest()->getParam('back')) {
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/SaveTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/SaveTest.php
index 7495a2ad1bad924c241e9fae564785574f13a3a1..12057d2681c20cf8cbc5822d6180b9df96b095ee 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/SaveTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/SaveTest.php
@@ -13,73 +13,61 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $requestMock;
+    private $requestMock;
 
     /**
      * @var \Magento\Cms\Controller\Adminhtml\Page\PostDataProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $dataProcessorMock;
+    private $dataProcessorMock;
 
     /**
      * @var \Magento\Framework\App\Request\DataPersistorInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $dataPersistorMock;
+    private $dataPersistorMock;
 
     /**
      * @var \Magento\Backend\Model\View\Result\RedirectFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resultRedirectFactory;
+    private $resultRedirectFactory;
 
     /**
      * @var \Magento\Backend\Model\View\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resultRedirect;
+    private $resultRedirect;
 
     /**
-     * @var \Magento\Backend\App\Action\Context|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $contextMock;
-
-    /**
-     * @var \Magento\Framework\ObjectManager\ObjectManager|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $objectManagerMock;
-
-    /**
-     * @var \Magento\Cms\Model\Page|\PHPUnit_Framework_MockObject_MockObject $pageMock
+     * @var \Magento\Framework\Message\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $pageMock;
+    private $messageManagerMock;
 
     /**
-     * @var \Magento\Framework\Message\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $messageManagerMock;
+    private $eventManagerMock;
 
     /**
-     * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Cms\Model\PageFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $eventManagerMock;
+    private $pageFactory;
 
     /**
-     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
+     * @var \Magento\Cms\Api\PageRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $objectManager;
+    private $pageRepository;
 
     /**
      * @var \Magento\Cms\Controller\Adminhtml\Page\Save
      */
-    protected $saveController;
+    private $saveController;
 
     /**
      * @var int
      */
-    protected $pageId = 1;
+    private $pageId = 1;
 
     protected function setUp()
     {
-        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-
-        $this->contextMock = $this->getMock(\Magento\Backend\App\Action\Context::class, [], [], '', false);
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
 
         $this->resultRedirectFactory = $this->getMockBuilder(\Magento\Backend\Model\View\Result\RedirectFactory::class)
             ->disableOriginalConstructor()
@@ -91,69 +79,37 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->resultRedirectFactory->expects($this->atLeastOnce())
             ->method('create')
             ->willReturn($this->resultRedirect);
-
-        $this->dataProcessorMock = $this->getMock(
-            \Magento\Cms\Controller\Adminhtml\Page\PostDataProcessor::class,
-            ['filter'],
-            [],
-            '',
-            false
-        );
-
+        $this->dataProcessorMock = $this->getMockBuilder(
+            \Magento\Cms\Controller\Adminhtml\Page\PostDataProcessor::class
+        )->setMethods(['filter'])->disableOriginalConstructor()->getMock();
         $this->dataPersistorMock = $this->getMockBuilder(\Magento\Framework\App\Request\DataPersistorInterface::class)
             ->getMock();
-
-        $this->requestMock = $this->getMockForAbstractClass(
-            \Magento\Framework\App\RequestInterface::class,
-            [],
-            '',
-            false,
-            true,
-            true,
-            ['getParam', 'getPostValue']
-        );
-
-        $this->pageMock = $this->getMockBuilder(
-            \Magento\Cms\Model\Page::class
-        )->disableOriginalConstructor()->getMock();
-
-        $this->messageManagerMock = $this->getMock(
-            \Magento\Framework\Message\ManagerInterface::class,
-            [],
-            [],
-            '',
-            false
-        );
-
-        $this->eventManagerMock = $this->getMockForAbstractClass(
-            \Magento\Framework\Event\ManagerInterface::class,
-            [],
-            '',
-            false,
-            true,
-            true,
-            ['dispatch']
-        );
-
-        $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManager\ObjectManager::class)
+        $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
+            ->setMethods(['getParam', 'getPostValue'])
+            ->getMockForAbstractClass();
+        $this->messageManagerMock = $this->getMockBuilder(\Magento\Framework\Message\ManagerInterface::class)
+            ->getMockForAbstractClass();
+        $this->eventManagerMock = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
+            ->setMethods(['dispatch'])
+            ->getMockForAbstractClass();
+        $this->pageFactory = $this->getMockBuilder(\Magento\Cms\Model\PageFactory::class)
             ->disableOriginalConstructor()
-            ->setMethods(['get', 'create'])
+            ->setMethods(['create'])
             ->getMock();
-
-        $this->contextMock->expects($this->any())->method('getRequest')->willReturn($this->requestMock);
-        $this->contextMock->expects($this->any())->method('getObjectManager')->willReturn($this->objectManagerMock);
-        $this->contextMock->expects($this->any())->method('getMessageManager')->willReturn($this->messageManagerMock);
-        $this->contextMock->expects($this->any())->method('getEventManager')->willReturn($this->eventManagerMock);
-        $this->contextMock->expects($this->any())
-            ->method('getResultRedirectFactory')
-            ->willReturn($this->resultRedirectFactory);
-
-        $this->saveController = $this->objectManager->getObject(
+        $this->pageRepository = $this->getMockBuilder(\Magento\Cms\Api\PageRepositoryInterface::class)
+            ->disableOriginalConstructor()
+            ->getMockForAbstractClass();
+        $this->saveController = $objectManager->getObject(
             \Magento\Cms\Controller\Adminhtml\Page\Save::class,
             [
-                'context' => $this->contextMock,
+                'request' => $this->requestMock,
+                'messageManager' => $this->messageManagerMock,
+                'eventManager' => $this->eventManagerMock,
+                'resultRedirectFactory' => $this->resultRedirectFactory,
                 'dataProcessor' => $this->dataProcessorMock,
                 'dataPersistor' => $this->dataPersistorMock,
+                'pageFactory' => $this->pageFactory,
+                'pageRepository' => $this->pageRepository
             ]
         );
     }
@@ -190,20 +146,21 @@ class SaveTest extends \PHPUnit_Framework_TestCase
                     ['back', null, false],
                 ]
             );
-
-        $this->objectManagerMock->expects($this->atLeastOnce())
+        $page = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->pageFactory->expects($this->atLeastOnce())
             ->method('create')
-            ->with($this->equalTo(\Magento\Cms\Model\Page::class))
-            ->willReturn($this->pageMock);
+            ->willReturn($page);
 
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('load')
             ->willReturnSelf();
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('getId')
             ->willReturn(true);
-        $this->pageMock->expects($this->once())->method('setData');
-        $this->pageMock->expects($this->once())->method('save');
+        $page->expects($this->once())->method('setData');
+        $this->pageRepository->expects($this->once())->method('save')->with($page);
 
         $this->dataPersistorMock->expects($this->any())
             ->method('clear')
@@ -240,20 +197,21 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->dataProcessorMock->expects($this->any())
             ->method('filter')
             ->willReturnArgument(0);
-
-        $this->objectManagerMock->expects($this->atLeastOnce())
+        $page = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->pageFactory->expects($this->atLeastOnce())
             ->method('create')
-            ->with($this->equalTo(\Magento\Cms\Model\Page::class))
-            ->willReturn($this->pageMock);
+            ->willReturn($page);
 
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('load')
             ->willReturnSelf();
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('getId')
             ->willReturn(true);
-        $this->pageMock->expects($this->once())->method('setData');
-        $this->pageMock->expects($this->once())->method('save');
+        $page->expects($this->once())->method('setData');
+        $this->pageRepository->expects($this->once())->method('save')->with($page);
 
         $this->messageManagerMock->expects($this->once())
             ->method('addSuccess')
@@ -286,20 +244,22 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $this->dataProcessorMock->expects($this->any())
             ->method('filter')
             ->willReturnArgument(0);
-
-        $this->objectManagerMock->expects($this->atLeastOnce())
+        $page = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->pageFactory->expects($this->atLeastOnce())
             ->method('create')
-            ->with($this->equalTo(\Magento\Cms\Model\Page::class))
-            ->willReturn($this->pageMock);
+            ->willReturn($page);
 
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('load')
             ->willReturnSelf();
-        $this->pageMock->expects($this->any())
+        $page->expects($this->any())
             ->method('getId')
             ->willReturn(true);
-        $this->pageMock->expects($this->once())->method('setData');
-        $this->pageMock->expects($this->once())->method('save')->willThrowException(new \Exception('Error message.'));
+        $page->expects($this->once())->method('setData');
+        $this->pageRepository->expects($this->once())->method('save')->with($page)
+            ->willThrowException(new \Exception('Error message.'));
 
         $this->messageManagerMock->expects($this->never())
             ->method('addSuccess');
diff --git a/app/code/Magento/CmsUrlRewrite/Test/Unit/Model/CmsPageUrlRewriteGeneratorTest.php b/app/code/Magento/CmsUrlRewrite/Test/Unit/Model/CmsPageUrlRewriteGeneratorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..96a964c3d2d33aa7b0e49baec1db61666718a6a9
--- /dev/null
+++ b/app/code/Magento/CmsUrlRewrite/Test/Unit/Model/CmsPageUrlRewriteGeneratorTest.php
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CmsUrlRewrite\Test\Unit\Model;
+
+
+class CmsPageUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
+     */
+    private $objectManager;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $storeManager;
+
+    /**
+     * @var \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $urlRewriteFactory;
+
+    /**
+     * @var \Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $urlPathGenerator;
+
+    /**
+     * @var \Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator
+     */
+    private $urlRewriteGenerator;
+
+    /**
+     * @return void
+     */
+    protected function setUp()
+    {
+        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->storeManager = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
+            ->getMockForAbstractClass();
+        $this->urlRewriteFactory = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory::class)
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->urlPathGenerator = $this->getMockBuilder(\Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->urlRewriteGenerator = $this->objectManager->getObject(
+            \Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator::class,
+            [
+                'storeManager' => $this->storeManager,
+                'urlRewriteFactory' => $this->urlRewriteFactory,
+                'cmsPageUrlPathGenerator' => $this->urlPathGenerator
+            ]
+        );
+    }
+
+    public function testGenerateForAllStores()
+    {
+        $initializesStores = [0];
+        $cmsPageId = 1;
+        $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
+        $store = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
+            ->setMethods(['getStoreId'])
+            ->getMockForAbstractClass();
+        $this->storeManager->expects($this->any())->method('getStores')->willReturn([$store]);
+        $store->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
+        $urlRewrite = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
+            ->getMockForAbstractClass();
+        $this->urlRewriteFactory->expects($this->any())->method('create')->willReturn($urlRewrite);
+        $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
+        $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
+        $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
+            ->willReturn('cms/page/view/page_id/' . $cmsPageId);
+
+        $urls = $this->urlRewriteGenerator->generate($cmsPage);
+        $this->assertEquals($initializesStores[0], $urls[0]->getStoreId());
+        $this->assertFalse(isset($urls[1]));
+    }
+
+    public function testGenerateForSpecificStores()
+    {
+        $initializesStores = [1, 2];
+        $cmsPageId = 1;
+        $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
+        $firstStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
+            ->setMethods(['getStoreId'])
+            ->getMockForAbstractClass();
+        $secondStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
+            ->setMethods(['getStoreId'])
+            ->getMockForAbstractClass();
+        $this->storeManager->expects($this->any())->method('getStores')->willReturn(
+            [
+                1 => $firstStore,
+                2 => $secondStore
+            ]
+        );
+        $firstStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
+        $secondStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[1]);
+
+        $urlRewriteFirst = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
+            ->getMockForAbstractClass();
+        $urlRewriteSecond = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
+            ->getMockForAbstractClass();
+        $this->urlRewriteFactory->expects($this->at(0))->method('create')->willReturn($urlRewriteFirst);
+        $this->urlRewriteFactory->expects($this->at(1))->method('create')->willReturn($urlRewriteSecond);
+
+        $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
+        $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
+        $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
+            ->willReturn('cms/page/view/page_id/' . $cmsPageId);
+        $urls = $this->urlRewriteGenerator->generate($cmsPage);
+        $this->assertEquals(
+            [
+                $initializesStores[0],
+                $initializesStores[1]
+            ],
+            [
+                $urls[0]->getStoreId(),
+                $urls[1]->getStoreId(),
+            ]
+        );
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml b/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
index a341341cf7c1dfd873ed552c202a2ece65c4ef6c..fcf6e2ac0c4d0ece60aa742dfcb438456a0d9bd5 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
@@ -212,5 +212,21 @@
                 <item name="inherit" xsi:type="string">1</item>
             </field>
         </dataset>
+        <dataset name="enable_single_store_mode">
+            <field name="general/single_store_mode/enabled" xsi:type="array">
+                <item name="scope" xsi:type="string">default</item>
+                <item name="scope_id" xsi:type="number">0</item>
+                <item name="label" xsi:type="string">Yes</item>
+                <item name="value" xsi:type="number">1</item>
+            </field>
+        </dataset>
+        <dataset name="enable_single_store_mode_rollback">
+            <field name="general/single_store_mode/enabled" xsi:type="array">
+                <item name="scope" xsi:type="string">default</item>
+                <item name="scope_id" xsi:type="number">0</item>
+                <item name="label" xsi:type="string">No</item>
+                <item name="value" xsi:type="number">0</item>
+            </field>
+        </dataset>
     </repository>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageFormSingleStoreMode.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageFormSingleStoreMode.php
new file mode 100644
index 0000000000000000000000000000000000000000..4f96b2e3944751082b3371393d976e469bc7b81a
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageFormSingleStoreMode.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Cms\Test\Constraint;
+
+use Magento\Cms\Test\Fixture\CmsPage;
+use Magento\Cms\Test\Page\Adminhtml\CmsPageIndex;
+use Magento\Cms\Test\Page\Adminhtml\CmsPageNew;
+
+/**
+ * Assert that displayed CMS page data on edit page equals passed from fixture.
+ */
+class AssertCmsPageFormSingleStoreMode extends AssertCmsPageForm
+{
+    /**
+     * Assert that displayed CMS page data on edit page equals passed from fixture with enabled single store mode.
+     *
+     * @param CmsPage $cms
+     * @param CmsPageIndex $cmsIndex
+     * @param CmsPageNew $cmsPageNew
+     * @return void
+     */
+    public function processAssert(
+        CmsPage $cms,
+        CmsPageIndex $cmsIndex,
+        CmsPageNew $cmsPageNew
+    ) {
+        $cmsIndex->open();
+        $filter = ['title' => $cms->getTitle()];
+        $cmsIndex->getCmsPageGridBlock()->searchAndOpen($filter);
+
+        $cmsFormData = $cmsPageNew->getPageForm()->getData($cms);
+        $cmsFixtureData = $cms->getData();
+        $errors = $this->verifyData($cmsFixtureData, $cmsFormData);
+        \PHPUnit_Framework_Assert::assertEmpty($errors, $errors);
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
index 250c55ff00d444635f08c2ea4a5f31d8b225fe10..4f02e7c4caf245528fab63d09d959ff3b8981779 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
@@ -6,6 +6,7 @@
 
 namespace Magento\Cms\Test\TestCase;
 
+use Magento\Config\Test\Fixture\ConfigData;
 use Magento\Cms\Test\Fixture\CmsPage as CmsPageFixture;
 use Magento\Cms\Test\Page\Adminhtml\CmsPageIndex;
 use Magento\Cms\Test\Page\Adminhtml\CmsPageNew;
@@ -53,6 +54,13 @@ class CreateCmsPageEntityTest extends Injectable
      */
     protected $fixtureFactory;
 
+    /**
+     * Configuration data.
+     *
+     * @var string
+     */
+    private $configData;
+
     /**
      * Inject pages.
      *
@@ -73,10 +81,18 @@ class CreateCmsPageEntityTest extends Injectable
      *
      * @param array $data
      * @param string $fixtureType
+     * @param string $configData
      * @return array
      */
-    public function test(array $data, $fixtureType)
+    public function test(array $data, $fixtureType, $configData = '')
     {
+        $this->configData = $configData;
+
+        // Preconditions
+        $this->objectManager->create(
+            \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
+            ['configData' => $configData]
+        )->run();
         // Steps
         $cms = $this->fixtureFactory->createByCode($fixtureType, ['data' => $data]);
         $this->cmsIndex->open();
@@ -86,4 +102,19 @@ class CreateCmsPageEntityTest extends Injectable
 
         return ['cms' => $cms];
     }
+
+    /**
+     * Disable single store mode on config level.
+     *
+     * @return void
+     */
+    public function tearDown()
+    {
+        if ($this->configData) {
+            $this->objectManager->create(
+                \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
+                ['configData' => 'enable_single_store_mode', 'rollback' => true]
+            )->run();
+        }
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
index f8b6c8c3d9e06da90b122ba39d0c3f01eebc1978..fc024be14c699d1abb07629e701255ca0c6118f0 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
@@ -67,5 +67,17 @@
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPagePreview" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" />
         </variation>
+        <variation name="CreateCmsPageEntityTestVariation6" summary="Create CMS page with single store mode" ticketId="MAGETWO-59654">
+            <data name="tag" xsi:type="string">test_type:acceptance_test, test_type:extended_acceptance_test</data>
+            <data name="configData" xsi:type="string">enable_single_store_mode</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/is_active" xsi:type="string">Yes</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/identifier" xsi:type="string">identifier-%isolation%</data>
+            <data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageFormSingleStoreMode" />
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" />
+        </variation>
     </testCase>
 </config>