diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml
index 459dd377e36bac315d1d56f6e8dd4e499986c149..760bba1fc12f4c1c3096ad6f422bf645ed174d06 100644
--- a/app/code/Magento/Backend/etc/config.xml
+++ b/app/code/Magento/Backend/etc/config.xml
@@ -11,6 +11,9 @@
             <template>
                 <minify_html>0</minify_html>
             </template>
+            <static>
+                <sign>1</sign>
+            </static>
         </dev>
         <system>
             <media_storage_configuration>
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
index 6dae249865157d1c5960c8be6cefa9bdf27b3126..43114cb83ad149ff07a2310ec1924dcd6f9faa25 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
@@ -84,6 +84,11 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product
         $productIds = $collection->getAllIds();
         $storeId = (int) $this->getRequest()->getParam('store', 0);
         $status = (int) $this->getRequest()->getParam('status');
+        $filters = (array)$this->getRequest()->getParam('filters', []);
+
+        if (isset($filters['store_id'])) {
+            $storeId = (int)$filters['store_id'];
+        }
 
         try {
             $this->_validateMassStatus($productIds, $status);
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 0fff613c56e2e4edc5a6765826730ffefac89f10..6f7809d89e5bda52429f5c365f1fdd8519996189 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
@@ -6,32 +6,74 @@
  */
 namespace Magento\Catalog\Test\Unit\Controller\Adminhtml\Product;
 
+use Magento\Ui\Component\MassAction\Filter;
+use Magento\Backend\Model\View\Result\Redirect;
+use Magento\Catalog\Model\Indexer\Product\Price\Processor;
+use Magento\Catalog\Controller\Adminhtml\Product\Builder;
+use Magento\Framework\Data\Collection\AbstractDb;
+use Magento\Catalog\Model\Product\Action;
+
+/**
+ * Class MassStatusTest
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
 class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\ProductTest
 {
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var Processor|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $priceProcessor;
+    private $priceProcessorMock;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Backend\Model\View\Result\Redirect */
-    protected $resultRedirect;
+    /**
+     * @var Redirect|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $resultRedirectMock;
+
+    /**
+     * @var Filter|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $filterMock;
+
+    /**
+     * @var Builder|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $productBuilderMock;
+
+    /**
+     * @var AbstractDb|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $abstractDbMock;
+
+    /**
+     * @var Action|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $actionMock;
 
     protected function setUp()
     {
-        $this->priceProcessor = $this->getMockBuilder(\Magento\Catalog\Model\Indexer\Product\Price\Processor::class)
+        $this->priceProcessorMock = $this->getMockBuilder(Processor::class)
             ->disableOriginalConstructor()->getMock();
+        $this->productBuilderMock = $this->getMockBuilder(Builder::class)
+            ->setMethods(['build'])
+            ->disableOriginalConstructor()
+            ->getMock();
 
-        $productBuilder = $this->getMockBuilder(
-            \Magento\Catalog\Controller\Adminhtml\Product\Builder::class
-        )->setMethods(['build'])->disableOriginalConstructor()->getMock();
-
-        $product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)->disableOriginalConstructor()
-            ->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])->getMock();
-        $product->expects($this->any())->method('getTypeId')->will($this->returnValue('simple'));
-        $product->expects($this->any())->method('getStoreId')->will($this->returnValue('1'));
-        $productBuilder->expects($this->any())->method('build')->will($this->returnValue($product));
+        $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])
+            ->getMock();
+        $productMock->expects($this->any())
+            ->method('getTypeId')
+            ->willReturn('simple');
+        $productMock->expects($this->any())
+            ->method('getStoreId')
+            ->willReturn('1');
+        $this->productBuilderMock->expects($this->any())
+            ->method('build')
+            ->willReturn($productMock);
 
-        $this->resultRedirect = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
+        $this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
             ->disableOriginalConstructor()
             ->getMock();
         $resultFactory = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class)
@@ -41,47 +83,71 @@ class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\Pro
         $resultFactory->expects($this->atLeastOnce())
             ->method('create')
             ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
-            ->willReturn($this->resultRedirect);
+            ->willReturn($this->resultRedirectMock);
 
-        $abstractDbMock = $this->getMockBuilder(\Magento\Framework\Data\Collection\AbstractDb::class)
+        $this->abstractDbMock = $this->getMockBuilder(AbstractDb::class)
             ->disableOriginalConstructor()
             ->setMethods(['getAllIds', 'getResource'])
             ->getMock();
-        $abstractDbMock->expects($this->any())
-            ->method('getAllIds')
-            ->willReturn([]);
-
-        $filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
+        $this->filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
             ->disableOriginalConstructor()
             ->setMethods(['getCollection'])
             ->getMock();
-        $filterMock->expects($this->any())
-            ->method('getCollection')
-            ->willReturn($abstractDbMock);
-        
-        $collectionFactoryMock = $this->getMockBuilder(
-            \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class
-        )
+        $this->actionMock = $this->getMockBuilder(Action::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $collectionFactoryMock =
+            $this->getMockBuilder(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class)
             ->disableOriginalConstructor()
             ->setMethods(['create'])
             ->getMock();
         $collectionFactoryMock->expects($this->any())
             ->method('create')
-            ->willReturn($abstractDbMock);
+            ->willReturn($this->abstractDbMock);
+
+        $additionalParams = [
+            'resultFactory' => $resultFactory
+        ];
+        /** @var \Magento\Backend\App\Action\Context $context */
+        $context = $this->initContext($additionalParams, [[Action::class, $this->actionMock]]);
 
-        $additionalParams = ['resultFactory' => $resultFactory];
         $this->action = new \Magento\Catalog\Controller\Adminhtml\Product\MassStatus(
-            $this->initContext($additionalParams),
-            $productBuilder,
-            $this->priceProcessor,
-            $filterMock,
+            $context,
+            $this->productBuilderMock,
+            $this->priceProcessorMock,
+            $this->filterMock,
             $collectionFactoryMock
         );
     }
 
     public function testMassStatusAction()
     {
-        $this->priceProcessor->expects($this->once())->method('reindexList');
+        $storeId = 1;
+        $status = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED;
+        $filters = [
+            'store_id' => 2,
+        ];
+
+        $this->filterMock->expects($this->once())
+            ->method('getCollection')
+            ->willReturn($this->abstractDbMock);
+        $this->abstractDbMock->expects($this->once())
+            ->method('getAllIds')
+            ->willReturn([3]);
+        $this->request->expects($this->exactly(3))
+            ->method('getParam')
+            ->willReturnMap([
+                ['store', 0, $storeId],
+                ['status', null, $status],
+                ['filters', [], $filters]
+            ]);
+        $this->actionMock->expects($this->once())
+            ->method('updateAttributes')
+            ->with([3], ['status' => $status], 2);
+        $this->priceProcessorMock->expects($this->once())
+            ->method('reindexList');
+
         $this->action->execute();
     }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php
index 9a21de70b4f114fceb5950ea716c580068584669..524bdceae10e03cfc9678f10d19b881588ff8de8 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Catalog\Test\Unit\Controller\Adminhtml;
 
+use Magento\Catalog\Api\Data\ProductInterface;
+
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
@@ -25,17 +27,33 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject */
     protected $request;
 
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $objectManagerMock;
+
     /**
      * Init context object
      *
      * @param array $additionalParams
+     * @param array $objectManagerMap Object Manager mappings
      * @return \PHPUnit_Framework_MockObject_MockObject
      */
-    protected function initContext(array $additionalParams = [])
+    protected function initContext(array $additionalParams = [], array $objectManagerMap = [])
     {
         $productActionMock = $this->getMock(\Magento\Catalog\Model\Product\Action::class, [], [], '', false);
-        $objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
-        $objectManagerMock->expects($this->any())->method('get')->will($this->returnValue($productActionMock));
+
+        $this->objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
+
+        if ($objectManagerMap) {
+            $this->objectManagerMock->expects($this->any())
+                ->method('get')
+                ->willReturnMap($objectManagerMap);
+        }
+
+        $this->objectManagerMock->expects($this->any())
+            ->method('get')
+            ->willReturn($productActionMock);
 
         $block = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class)
             ->disableOriginalConstructor()->getMockForAbstractClass();
@@ -93,7 +111,7 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
         $this->context->expects($this->any())->method('getEventManager')->will($this->returnValue($eventManager));
         $this->context->expects($this->any())->method('getRequest')->will($this->returnValue($requestInterfaceMock));
         $this->context->expects($this->any())->method('getResponse')->will($this->returnValue($responseInterfaceMock));
-        $this->context->expects($this->any())->method('getObjectManager')->will($this->returnValue($objectManagerMock));
+        $this->context->expects($this->any())->method('getObjectManager')->willReturn($this->objectManagerMock);
 
         $this->context->expects($this->any())->method('getMessageManager')
             ->will($this->returnValue($managerInterfaceMock));
diff --git a/app/code/Magento/CatalogImportExport/Model/Export/Product.php b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
index 86b150062d3c057afe500a6d76aac3665690ba87..c9d155177e48a588a655d603234482ac53cbe545 100644
--- a/app/code/Magento/CatalogImportExport/Model/Export/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
@@ -953,7 +953,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                         if (is_scalar($attrValue)) {
                             if (!in_array($fieldName, $this->_getExportMainAttrCodes())) {
                                 $additionalAttributes[$fieldName] = $fieldName .
-                                    ImportProduct::PAIR_NAME_VALUE_SEPARATOR . $attrValue;
+                                    ImportProduct::PAIR_NAME_VALUE_SEPARATOR . $this->wrapValue($attrValue);
                             }
                             $data[$itemId][$storeId][$fieldName] = htmlspecialchars_decode($attrValue);
                         }
@@ -963,7 +963,7 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
                             $additionalAttributes[$code] = $fieldName .
                                 ImportProduct::PAIR_NAME_VALUE_SEPARATOR . implode(
                                     ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR,
-                                    $this->collectedMultiselectsData[$storeId][$productLinkId][$code]
+                                    $this->wrapValue($this->collectedMultiselectsData[$storeId][$productLinkId][$code])
                                 );
                         }
                     }
@@ -994,6 +994,25 @@ class Product extends \Magento\ImportExport\Model\Export\Entity\AbstractEntity
         return $data;
     }
 
+    /**
+     * Wrap values with double quotes if "Fields Enclosure" option is enabled
+     *
+     * @param string|array $value
+     * @return string|array
+     */
+    private function wrapValue($value)
+    {
+        if (!empty($this->_parameters[\Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE])) {
+            $wrap = function ($value) {
+                return sprintf('"%s"', str_replace('"', '""', $value));
+            };
+
+            $value = is_array($value) ? array_map($wrap, $value) : $wrap($value);
+        }
+
+        return $value;
+    }
+
     /**
      * @return array
      */
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
index 16df0866135a7f07760134c7aff9a0b15bc6fb01..afb2e86b6248a79523405c78acd1cf27953b90c2 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
@@ -644,6 +644,13 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
      */
     private $productEntityIdentifierField;
 
+    /**
+     * Escaped separator value for regular expression.
+     * The value is based on PSEUDO_MULTI_LINE_SEPARATOR constant.
+     * @var string
+     */
+    private $multiLineSeparatorForRegexp;
+
     /**
      * @param \Magento\Framework\Json\Helper\Data $jsonHelper
      * @param \Magento\ImportExport\Helper\Data $importExportData
@@ -2438,14 +2445,40 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
     }
 
     /**
-     * Retrieves additional attributes as array code=>value.
+     * Retrieves additional attributes in format:
+     * [
+     *      code1 => value1,
+     *      code2 => value2,
+     *      ...
+     *      codeN => valueN
+     * ]
      *
-     * @param string $additionalAttributes
+     * @param string $additionalAttributes Attributes data that will be parsed
      * @return array
      */
     private function parseAdditionalAttributes($additionalAttributes)
     {
-        $attributeNameValuePairs = explode($this->getMultipleValueSeparator(), $additionalAttributes);
+        return empty($this->_parameters[Import::FIELDS_ENCLOSURE])
+            ? $this->parseAttributesWithoutWrappedValues($additionalAttributes)
+            : $this->parseAttributesWithWrappedValues($additionalAttributes);
+    }
+
+    /**
+     * Parses data and returns attributes in format:
+     * [
+     *      code1 => value1,
+     *      code2 => value2,
+     *      ...
+     *      codeN => valueN
+     * ]
+     *
+     * @param string $attributesData Attributes data that will be parsed. It keeps data in format:
+     *      code=value,code2=value2...,codeN=valueN
+     * @return array
+     */
+    private function parseAttributesWithoutWrappedValues($attributesData)
+    {
+        $attributeNameValuePairs = explode($this->getMultipleValueSeparator(), $attributesData);
         $preparedAttributes = [];
         $code = '';
         foreach ($attributeNameValuePairs as $attributeData) {
@@ -2463,6 +2496,75 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
         return $preparedAttributes;
     }
 
+    /**
+     * Parses data and returns attributes in format:
+     * [
+     *      code1 => value1,
+     *      code2 => value2,
+     *      ...
+     *      codeN => valueN
+     * ]
+     * All values have unescaped data except mupliselect attributes,
+     * they should be parsed in additional method - parseMultiselectValues()
+     *
+     * @param string $attributesData Attributes data that will be parsed. It keeps data in format:
+     *      code="value",code2="value2"...,codeN="valueN"
+     *  where every value is wrapped in double quotes. Double quotes as part of value should be duplicated.
+     *  E.g. attribute with code 'attr_code' has value 'my"value'. This data should be stored as attr_code="my""value"
+     *
+     * @return array
+     */
+    private function parseAttributesWithWrappedValues($attributesData)
+    {
+        $attributes = [];
+        preg_match_all('~((?:[a-z0-9_])+)="((?:[^"]|""|"' . $this->getMultiLineSeparatorForRegexp() . '")+)"+~',
+            $attributesData,
+            $matches
+        );
+        foreach ($matches[1] as $i => $attributeCode) {
+            $attribute = $this->retrieveAttributeByCode($attributeCode);
+            $value = 'multiselect' != $attribute->getFrontendInput()
+                ? str_replace('""', '"', $matches[2][$i])
+                : '"' . $matches[2][$i] . '"';
+            $attributes[$attributeCode] = $value;
+        }
+        return $attributes;
+    }
+
+    /**
+     * Parse values of multiselect attributes depends on "Fields Enclosure" parameter
+     *
+     * @param string $values
+     * @return array
+     */
+    public function parseMultiselectValues($values)
+    {
+        if (empty($this->_parameters[Import::FIELDS_ENCLOSURE])) {
+            return explode(self::PSEUDO_MULTI_LINE_SEPARATOR, $values);
+        }
+        if (preg_match_all('~"((?:[^"]|"")*)"~', $values, $matches)) {
+            return $values = array_map(function ($value) {
+                return str_replace('""', '"', $value);
+            }, $matches[1]);
+        }
+        return [$values];
+    }
+
+    /**
+     * Retrieves escaped PSEUDO_MULTI_LINE_SEPARATOR if it is metacharacter for regular expression
+     *
+     * @return string
+     */
+    private function getMultiLineSeparatorForRegexp()
+    {
+        if (!$this->multiLineSeparatorForRegexp) {
+            $this->multiLineSeparatorForRegexp = in_array(self::PSEUDO_MULTI_LINE_SEPARATOR, str_split('[\^$.|?*+(){}'))
+                ? '\\' . self::PSEUDO_MULTI_LINE_SEPARATOR
+                : self::PSEUDO_MULTI_LINE_SEPARATOR;
+        }
+        return $this->multiLineSeparatorForRegexp;
+    }
+
     /**
      * Set values in use_config_ fields.
      *
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
index 8461e617431d64fe3529162d54841d7da4740cdf..0d19b9fcbedc85e4df47ab745759282f4824b060 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
@@ -490,23 +490,25 @@ abstract class AbstractType
         $resultAttrs = [];
 
         foreach ($this->_getProductAttributes($rowData) as $attrCode => $attrParams) {
-            if (!$attrParams['is_static']) {
-                if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) {
-                    $resultAttrs[$attrCode] = in_array($attrParams['type'], ['select', 'boolean'])
-                        ? $attrParams['options'][strtolower($rowData[$attrCode])]
-                        : $rowData[$attrCode];
-                    if ('multiselect' == $attrParams['type']) {
-                        $resultAttrs[$attrCode] = [];
-                        foreach (explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData[$attrCode]) as $value) {
-                            $resultAttrs[$attrCode][] = $attrParams['options'][strtolower($value)];
-                        }
-                        $resultAttrs[$attrCode] = implode(',', $resultAttrs[$attrCode]);
+            if ($attrParams['is_static']) {
+                continue;
+            }
+            if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) {
+                if (in_array($attrParams['type'], ['select', 'boolean'])) {
+                    $resultAttrs[$attrCode] = $attrParams['options'][strtolower($rowData[$attrCode])];
+                } elseif ('multiselect' == $attrParams['type']) {
+                    $resultAttrs[$attrCode] = [];
+                    foreach ($this->_entityModel->parseMultiselectValues($rowData[$attrCode]) as $value) {
+                        $resultAttrs[$attrCode][] = $attrParams['options'][strtolower($value)];
                     }
-                } elseif (array_key_exists($attrCode, $rowData)) {
+                    $resultAttrs[$attrCode] = implode(',', $resultAttrs[$attrCode]);
+                } else {
                     $resultAttrs[$attrCode] = $rowData[$attrCode];
-                } elseif ($withDefaultValue && null !== $attrParams['default_value']) {
-                    $resultAttrs[$attrCode] = $attrParams['default_value'];
                 }
+            } elseif (array_key_exists($attrCode, $rowData)) {
+                $resultAttrs[$attrCode] = $rowData[$attrCode];
+            } elseif ($withDefaultValue && null !== $attrParams['default_value']) {
+                $resultAttrs[$attrCode] = $attrParams['default_value'];
             }
         }
 
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
index e57983796f695fcac97325123d102cbe5a9854b7..0ca40e916c85b0fe50886f36fe502538a370ae50 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator.php
@@ -71,6 +71,32 @@ class Validator extends AbstractValidator implements RowValidatorInterface
         return $valid;
     }
 
+    /**
+     * Check if value is valid attribute option
+     *
+     * @param string $attrCode
+     * @param array $possibleOptions
+     * @param string $value
+     * @return bool
+     */
+    private function validateOption($attrCode, $possibleOptions, $value)
+    {
+        if (!isset($possibleOptions[strtolower($value)])) {
+            $this->_addMessages(
+                [
+                    sprintf(
+                        $this->context->retrieveMessageTemplate(
+                            RowValidatorInterface::ERROR_INVALID_ATTRIBUTE_OPTION
+                        ),
+                        $attrCode
+                    )
+                ]
+            );
+            return false;
+        }
+        return true;
+    }
+
     /**
      * @param mixed $attrCode
      * @param string $type
@@ -166,23 +192,15 @@ class Validator extends AbstractValidator implements RowValidatorInterface
                 break;
             case 'select':
             case 'boolean':
+                $valid = $this->validateOption($attrCode, $attrParams['options'], $rowData[$attrCode]);
+                break;
             case 'multiselect':
-                $values = explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData[$attrCode]);
-                $valid = true;
+                $values = $this->context->parseMultiselectValues($rowData[$attrCode]);
                 foreach ($values as $value) {
-                    $valid = $valid && isset($attrParams['options'][strtolower($value)]);
-                }
-                if (!$valid) {
-                    $this->_addMessages(
-                        [
-                            sprintf(
-                                $this->context->retrieveMessageTemplate(
-                                    RowValidatorInterface::ERROR_INVALID_ATTRIBUTE_OPTION
-                                ),
-                                $attrCode
-                            )
-                        ]
-                    );
+                    $valid = $this->validateOption($attrCode, $attrParams['options'], $value);
+                    if (!$valid) {
+                        break;
+                    }
                 }
                 break;
             case 'datetime':
diff --git a/app/code/Magento/CatalogInventory/Helper/Stock.php b/app/code/Magento/CatalogInventory/Helper/Stock.php
index 6169efca64bd08e06181bddbf37f06e6e0648dd1..4c177c09d4b79a62f2a5b07c7b208c37d1c05ec3 100644
--- a/app/code/Magento/CatalogInventory/Helper/Stock.php
+++ b/app/code/Magento/CatalogInventory/Helper/Stock.php
@@ -154,7 +154,10 @@ class Stock
                 \Magento\Store\Model\ScopeInterface::SCOPE_STORE
             );
             $resource = $this->getStockStatusResource();
-            $resource->addStockDataToCollection($collection, !$isShowOutOfStock);
+            $resource->addStockDataToCollection(
+                $collection,
+                !$isShowOutOfStock && $collection->getFlag('require_stock_items')
+            );
             $collection->setFlag($stockFlag, true);
         }
     }
diff --git a/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php b/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php
index 51345c2b7609cb8e39cf25fb9a4f4f202cba6f65..8a006c8154b4b97eb6d39c1d41f8363b3e4df761 100644
--- a/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php
+++ b/app/code/Magento/Deploy/Console/Command/DeployStaticContentCommand.php
@@ -3,7 +3,6 @@
  * Copyright © 2016 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\Deploy\Console\Command;
 
 use Magento\Framework\App\Utility\Files;
@@ -19,6 +18,8 @@ use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\App\State;
 use Magento\Deploy\Console\Command\DeployStaticOptionsInterface as Options;
 use Magento\Deploy\Model\DeployManager;
+use Magento\Framework\App\Cache;
+use Magento\Framework\App\Cache\Type\Dummy as DummyCache;
 
 /**
  * Deploy static content command
@@ -29,7 +30,7 @@ class DeployStaticContentCommand extends Command
     /**
      * Key for dry-run option
      * @deprecated
-     * @see Magento\Deploy\Console\Command\DeployStaticOptionsInterface::DRY_RUN
+     * @see \Magento\Deploy\Console\Command\DeployStaticOptionsInterface::DRY_RUN
      */
     const DRY_RUN_OPTION = 'dry-run';
 
@@ -87,6 +88,7 @@ class DeployStaticContentCommand extends Command
      * @param ObjectManagerFactory $objectManagerFactory
      * @param Locale $validator
      * @param ObjectManagerInterface $objectManager
+     * @throws \LogicException When the command name is empty
      */
     public function __construct(
         ObjectManagerFactory $objectManagerFactory,
@@ -96,6 +98,7 @@ class DeployStaticContentCommand extends Command
         $this->objectManagerFactory = $objectManagerFactory;
         $this->validator = $validator;
         $this->objectManager = $objectManager;
+
         parent::__construct();
     }
 
@@ -373,6 +376,7 @@ class DeployStaticContentCommand extends Command
     /**
      * {@inheritdoc}
      * @throws \InvalidArgumentException
+     * @throws LocalizedException
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
@@ -394,9 +398,9 @@ class DeployStaticContentCommand extends Command
         list ($deployableLanguages, $deployableAreaThemeMap, $requestedThemes)
             = $this->prepareDeployableEntities($filesUtil);
 
-        $output->writeln("Requested languages: " . implode(', ', $deployableLanguages));
-        $output->writeln("Requested areas: " . implode(', ', array_keys($deployableAreaThemeMap)));
-        $output->writeln("Requested themes: " . implode(', ', $requestedThemes));
+        $output->writeln('Requested languages: ' . implode(', ', $deployableLanguages));
+        $output->writeln('Requested areas: ' . implode(', ', array_keys($deployableAreaThemeMap)));
+        $output->writeln('Requested themes: ' . implode(', ', $requestedThemes));
 
         /** @var $deployManager DeployManager */
         $deployManager = $this->objectManager->create(
@@ -415,11 +419,13 @@ class DeployStaticContentCommand extends Command
             }
         }
 
+        $this->mockCache();
         return $deployManager->deploy();
     }
 
     /**
      * @param Files $filesUtil
+     * @throws \InvalidArgumentException
      * @return array
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      * @SuppressWarnings(PHPMD.NPathComplexity)
@@ -476,4 +482,18 @@ class DeployStaticContentCommand extends Command
 
         return [$deployableLanguages, $deployableAreaThemeMap, $requestedThemes];
     }
+
+    /**
+     * Mock Cache class with dummy implementation
+     *
+     * @return void
+     */
+    private function mockCache()
+    {
+        $this->objectManager->configure([
+            'preferences' => [
+                Cache::class => DummyCache::class
+            ]
+        ]);
+    }
 }
diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php
index a56642d1dda33952bdb8d238dc074428a170b54b..fec1684f39f36ca7e259863bba817119cc896054 100644
--- a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php
+++ b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Edit/Form.php
@@ -86,6 +86,16 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
                 'values' => $this->_formatFactory->create()->toOptionArray()
             ]
         );
+        $fieldset->addField(
+            \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE,
+            'checkbox',
+            [
+                'name' => \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE,
+                'label' => __('Fields Enclosure'),
+                'title' => __('Fields Enclosure'),
+                'value' => 1,
+            ]
+        );
 
         $form->setUseContainer(true);
         $this->setForm($form);
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 1511f58d4b039c5376ef293b8c011d4e2b0e7396..435a663923306da40741c2c9a43a6a234944a98a 100644
--- a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php
+++ b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php
@@ -174,6 +174,16 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
                     'value' => Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR,
                 ]
             );
+            $fieldsets[$behaviorCode]->addField(
+                $behaviorCode . \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE,
+                'checkbox',
+                [
+                    'name' => \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE,
+                    'label' => __('Fields enclosure'),
+                    'title' => __('Fields enclosure'),
+                    'value' => 1,
+                ]
+            );
         }
 
         // fieldset for file uploading
diff --git a/app/code/Magento/ImportExport/Model/Export.php b/app/code/Magento/ImportExport/Model/Export.php
index 2785327326e89359c6aabbbedb4e38cb136c1dfa..3b833cd4ab8834fc07a86ef9a52b51d66140ea3a 100644
--- a/app/code/Magento/ImportExport/Model/Export.php
+++ b/app/code/Magento/ImportExport/Model/Export.php
@@ -20,6 +20,11 @@ class Export extends \Magento\ImportExport\Model\AbstractModel
 
     const FILTER_ELEMENT_SKIP = 'skip_attr';
 
+    /**
+     * Allow multiple values wrapping in double quotes for additional attributes.
+     */
+    const FIELDS_ENCLOSURE = 'fields_enclosure';
+
     /**
      * Filter fields types.
      */
diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php
index 157887ec62c526458377d5d0103a992fab60a63d..89b5f88f0e9c2d4e071cdc0ec46d97bf731e64e8 100644
--- a/app/code/Magento/ImportExport/Model/Import.php
+++ b/app/code/Magento/ImportExport/Model/Import.php
@@ -78,6 +78,11 @@ class Import extends \Magento\ImportExport\Model\AbstractModel
      */
     const FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR = '_import_multiple_value_separator';
 
+    /**
+     * Allow multiple values wrapping in double quotes for additional attributes.
+     */
+    const FIELDS_ENCLOSURE = 'fields_enclosure';
+
     /**#@-*/
 
     /**
diff --git a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml
index b8acac6a1ab64dbec581785293c16ad18c5218f2..ce4f61cef4febc90a3e802c7dacc9b2e09fb28c3 100644
--- a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml
+++ b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/before.phtml
@@ -80,6 +80,9 @@ require([
             var oldAction = form.action;
             var url = oldAction + ((oldAction.slice(-1) != '/') ? '/' : '') + 'entity/' + $F('entity')
                 + '/file_format/' + $F('file_format');
+            if ($F('fields_enclosure')) {
+                url += '/fields_enclosure/' + $F('fields_enclosure');
+            }
             form.action = url;
             form.submit();
             form.action   = oldAction;
diff --git a/app/code/Magento/Paypal/Model/Payflow/Transparent.php b/app/code/Magento/Paypal/Model/Payflow/Transparent.php
index b5803c5ace3925b75e81df43992f714a74ed9905..f65edd71daa5b82b5191cd20a7f01a4b90b79b8c 100644
--- a/app/code/Magento/Paypal/Model/Payflow/Transparent.php
+++ b/app/code/Magento/Paypal/Model/Payflow/Transparent.php
@@ -186,6 +186,7 @@ class Transparent extends Payflowpro implements TransparentInterface
         $this->createPaymentToken($payment, $token);
 
         $payment->unsAdditionalInformation(self::CC_DETAILS);
+        $payment->unsAdditionalInformation(self::PNREF);
 
         return $this;
     }
diff --git a/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php b/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php
index 2d757147cec6a89dc1b6b6b28f283fd29b98f640..e2d5d348dda2cf96da1789806a43814c8960c49a 100644
--- a/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Model/Payflow/TransparentTest.php
@@ -428,6 +428,13 @@ class TransparentTest extends \PHPUnit_Framework_TestCase
             ->method('setVaultPaymentToken')
             ->with($paymentTokenMock);
 
+        $this->paymentMock->expects($this->at(8))
+            ->method('unsAdditionalInformation')
+            ->with(Transparent::CC_DETAILS);
+        $this->paymentMock->expects($this->at(9))
+            ->method('unsAdditionalInformation')
+            ->with(Transparent::PNREF);
+
         $this->assertSame($this->object, $this->object->authorize($this->paymentMock, 33));
     }
 }
diff --git a/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js b/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js
index d87b6b6b665ca0d070287474edb41eb5ced41c33..dca12f832cd15e1cdc197ec909df92557c45da60 100644
--- a/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js
+++ b/app/code/Magento/Ui/view/base/web/js/grid/data-storage.js
@@ -79,6 +79,10 @@ define([
         getData: function (params, options) {
             var cachedRequest = this.getRequest(params);
 
+            if (params && params.filters && params.filters['store_id']) {
+                cachedRequest = false;
+            }
+
             options = options || {};
 
             return !options.refresh && cachedRequest ?
diff --git a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
index c949d827b4879599685bca266e12edfd2eb3a384..d4cf5dab742aa37684e8b5ee884bd6164c88426f 100644
--- a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
@@ -6,12 +6,12 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-    <testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net payment method.">
-        <variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="Check Out as a Guest with Authorize.Net and Offline Shipping method" ticketId="MAGETWO-12832">
+    <testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net Direct Post payment method.">
+        <variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="CheckOut with Authorize.Net Direct Post" ticketId="MAGETWO-59170">
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
-            <data name="shippingAddress/dataset" xsi:type="string">US_address_1</data>
-            <data name="checkoutMethod" xsi:type="string">guest</data>
+            <data name="checkoutMethod" xsi:type="string">login</data>
+            <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="prices" xsi:type="array">
@@ -26,7 +26,7 @@
                 <item name="isClosed" xsi:type="string">No</item>
                 <item name="transactionType" xsi:type="string">Authorization</item>
             </data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php
index 3aa435226553555a927cf7695060e5392a72a65c..9f20ae953c2117bae7e5c9765bc36d5d4e43d873 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Store/Edit/Form/StoreForm.php
@@ -22,6 +22,13 @@ class StoreForm extends Form
      */
     protected $store = '//option[contains(.,"%s")]';
 
+    /**
+     * Store dropdown selector
+     *
+     * @var string
+     */
+    protected $storeGroupId = '//select[@id="store_group_id"]';
+
     /**
      * Check that Store visible in Store dropdown
      *
@@ -32,4 +39,16 @@ class StoreForm extends Form
     {
         return $this->_rootElement->find(sprintf($this->store, $name), Locator::SELECTOR_XPATH)->isVisible();
     }
+
+    /**
+     * Select store view by name from dropdown
+     *
+     * @param string $name
+     * @return bool
+     */
+    public function selectStore($name)
+    {
+        return $this->_rootElement->find($this->storeGroupId, Locator::SELECTOR_XPATH, 'optgroupselect')
+            ->setValue($name);
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php
index 6601bd44892c93e30573c5342e483eb232573e70..dda155f7fd66bd33a5532ab4a36c937a1d10178b 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php
@@ -38,6 +38,7 @@ class BraintreeSettlementReportTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml
index 183dc6ac906074fb6dc918e765d648ea437fd05b..e80f6071ae5d1d33b37bb7c26c7389ed08aa8962 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml
@@ -22,7 +22,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php
index a0bf482705f552318a7cdd09951aaff14eaf1cb2..c9d0904c85d675d7a4aa360ac6a2f8c00c6b0862 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php
@@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalCartTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml
index 09b33bfa79958668ceef14a20e48cf0ecce2646e..9e1090d6a22f91102be14f0f4319921651f01841 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml
@@ -20,7 +20,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -42,7 +42,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php
index f0f0291b33e20428765c110dbb23600ba463bdde..9ee6bfb7c4e29b84043fd3b116a09153bfab4233 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php
@@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalMinicartTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml
index b426e7578729dd3b0ba514440b7b425b373ae20b..b41ea91e4598255a67e3e44180895873358a9b1a 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.xml
@@ -20,7 +20,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -42,7 +42,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php
index 6554845d5ff81af96b887a9dbcb8e05761b21463..9e6cf0991db4e5fb2c3dd2c45de7d365e67395f6 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.php
@@ -25,6 +25,7 @@ class CreateOnlineCreditMemoBraintreePaypalTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
index 56c33af7a82b986b23372c9cbf0f2e8e915876a3..53847e55fd9f91e29fbeeb6c71a0402a1fb6a6f6 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineCreditMemoBraintreePaypalTest.xml
@@ -22,9 +22,8 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
             <data name="paymentAction" xsi:type="string">sale</data>
-            <data name="orderButtonsAvailable" xsi:type="string">Back, Send Email, Credit Memo, Hold, Ship, Reorder</data>
             <data name="data/items_data/0/qty" xsi:type="string">-</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
@@ -42,12 +41,11 @@
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
-            <data name="orderButtonsAvailable" xsi:type="string">Back, Send Email, Credit Memo, Hold, Ship, Reorder</data>
             <data name="data/items_data/0/qty" xsi:type="string">2</data>
             <data name="refundData/items_data/0/qty" xsi:type="string">1</data>
             <data name="order/dataset" xsi:type="string">default</data>
             <data name="isCreditMemoPartial" xsi:type="string">Yes</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab" />
             <constraint name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml
index 702a732e937eabedff8f6525e651fe4c16de942c..d9f382e4b650e5ce48955e264c67b36c893dbb84 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOnlineInvoiceEntityTest.xml
@@ -29,7 +29,7 @@
             <data name="data/items_data/0/qty" xsi:type="string">-</data>
             <data name="data/form_data/do_shipment" xsi:type="string">No</data>
             <data name="data/form_data/comment_text" xsi:type="string">comments</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" />
             <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" />
@@ -58,7 +58,7 @@
             <data name="data/items_data/0/qty" xsi:type="string">1</data>
             <data name="data/form_data/do_shipment" xsi:type="string">No</data>
             <data name="data/form_data/comment_text" xsi:type="string">comments</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" />
             <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml
index 80596fb577b970d41e01e8e98d26c86a28262b70..9614923691c6c097702c3a222bfc52edfcd2489a 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderBackendTest.xml
@@ -8,7 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Sales\Test\TestCase\CreateOrderBackendTest" summary="Checkout with Braintree Credit Card from Admin">
         <variation name="CreateOrderBackendTestBraintreeVariation1" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize Only)" ticketId="MAGETWO-46294">
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data>
             <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data>
@@ -32,11 +32,10 @@
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
-            <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGridOnFrontend" />
         </variation>
         <variation name="CreateOrderBackendTestBraintreeVariation2" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize and Capture)" ticketId="MAGETWO-38316">
-            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data>
             <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data>
@@ -63,7 +62,6 @@
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" />
-            <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGridOnFrontend" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
index df6e56eb14826dbcda2ed7c780d2bb02d823b3ea..c9b26df050cfc9cf9ef4913a4f538459cee1923f 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
@@ -8,7 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Vault\Test\TestCase\CreateVaultOrderBackendTest" summary="Create Order from Admin via Braintree with saving Credit Cards">
         <variation name="CreateVaultOrderBackendTestBraintreeVariation1" summary="Checkout with Braintree Credit Card from Admin (Payment Action = Authorize Only)" ticketId="MAGETWO-47137, MAGETWO-47139">
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php
index 7048984886582f7e74ffaa6d5d0597ee4ae5b018..062de338d8921e15b786de0fd4b656e824354d80 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePayPalBraintreeTest.php
@@ -29,6 +29,7 @@ class InvoicePayPalBraintreeTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml
index bae626a427818b115d897d06dd33b4a894da1cba..352e0ed684919a43df66b429d5b8250d90cae351 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/InvoicePaypalBraintreeTest.xml
@@ -26,7 +26,7 @@
             <data name="data/items_data/0/qty" xsi:type="string">-</data>
             <data name="data/form_data/do_shipment" xsi:type="string">No</data>
             <data name="data/form_data/comment_text" xsi:type="string">comments</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" />
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceItems" />
@@ -51,7 +51,7 @@
             <data name="data/items_data/0/qty" xsi:type="string">1</data>
             <data name="data/form_data/do_shipment" xsi:type="string">No</data>
             <data name="data/form_data/comment_text" xsi:type="string">comments</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" />
             <constraint name="Magento\Sales\Test\Constraint\AssertInvoiceItems" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php
index 41f637d52941d463223e1706e1175939e8c817ee..68d36f3c754cf6ff5bca786cb314fd89e51f9c5d 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.php
@@ -8,17 +8,25 @@ namespace Magento\Braintree\Test\TestCase;
 use Magento\Mtf\TestCase\Scenario;
 
 /**
- * Class OnePageCheckoutAcceptPaymentTest
+ * Preconditions:
+ * 1. Order is placed with Braintree Credit Card from Storefront with Advanced Fraud Protection.
  *
- * This scenario places order via Braintree payment with
- * enabled Advanced Fraud protection and accept payment for placed order
- * to future processing
+ * Steps:
+ * 1. Log in to Admin.
+ * 2. Go to Sales > Orders page.
+ * 3. Open the placed order.
+ * 4. Click Accept button.
+ * 5. Perform assertions.
+ *
+ * @group Braintree
+ * @ZephyrId MAGETWO-56023
  */
 class OnePageCheckoutAcceptPaymentTest extends Scenario
 {
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = 'acceptance_test, 3rd_party_test';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml
index f42054b4a07325512db19b497627d0099dbc7a3a..841145d7a5fdfaa92f1a82ac00c9bf51f0601643 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutAcceptPaymentTest.xml
@@ -21,7 +21,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree,braintree_fraudprotection</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertAcceptPaymentSuccessMessagePresent" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertAcceptPaymentMessageInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php
index 69fd4a8323eca15728d9c6f5b65c91a4929dc562..143ecb5a65d7d4a6af6a9b00d4b15175230cd0f4 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.php
@@ -8,16 +8,25 @@ namespace Magento\Braintree\Test\TestCase;
 use Magento\Mtf\TestCase\Scenario;
 
 /**
- * Class OnePageCheckoutDenyPaymentTest
+ * Preconditions:
+ * 1. Order is placed with Braintree Credit Card from Storefront with Advanced Fraud Protection.
  *
- * This scenario places order via Braintree payment with
- * enabled Advanced Fraud protection and deny payment for placed order
+ * Steps:
+ * 1. Log in to Admin.
+ * 2. Go to Sales > Orders page.
+ * 3. Open the placed order.
+ * 4. Click Deny button.
+ * 5. Perform assertions.
+ *
+ * @group Braintree
+ * @ZephyrId MAGETWO-56024
  */
 class OnePageCheckoutDenyPaymentTest extends Scenario
 {
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = 'acceptance_test, 3rd_party_test';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml
index 45476abfdfd12c18dc8a7b36782bc0b8f30ed3c0..95d07079ef36c9ae66672ec8cc465325273ecda4 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutDenyPaymentTest.xml
@@ -21,7 +21,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree,braintree_fraudprotection</data>
             <data name="status" xsi:type="string">Canceled</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertDenyPaymentSuccessMessagePresent" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertDenyPaymentMessageInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
index a1ceaa53da045345a1e4a7a5a51089a5623a85b8..1e9c539c8c0d379d6e5b69929e9270b21a8cc593 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
@@ -25,7 +25,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data>
             <data name="configData" xsi:type="string">braintree, braintree_3d_secure_not_triggered_due_threshold</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -48,7 +48,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data>
             <data name="configData" xsi:type="string">braintree, braintree_3d_secure_uk</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -71,13 +71,13 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
         </variation>
-        <variation name="OnePageCheckoutBraintreeTestVariation4" summary="Checkout with Braintree for payment action Authorize and Capture" ticketId="MAGETWO-38420">
+        <variation name="OnePageCheckoutBraintreeTestVariation4" summary="Checkout with Braintree for payment action Authorize and Capture" ticketId="MAGETWO-59403">
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="products/1" xsi:type="string">configurableProduct::with_one_option</data>
             <data name="products/2" xsi:type="string">bundleProduct::bundle_fixed_100_dollar_product</data>
@@ -98,7 +98,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree, braintree_sale</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php
index 32599aa090651c76f7d9d2663309ea3a219f79f6..e4b7d82094db5a615b3df3000f18fbd9a1f41b6d 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.php
@@ -39,6 +39,7 @@ class OnePageCheckoutWith3dSecureTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml
index 4cb5b1702dd3baac27c41b3c7367456299e8ef8e..295a9dcd5c5332dce7d6e5fad9dfcdc6f5352596 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWith3dSecureTest.xml
@@ -31,7 +31,7 @@
             <data name="secure3d/dataset" xsi:type="string">secure3d_braintree</data>
             <data name="configData" xsi:type="string">braintree, braintree_3d_secure</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php
index 9cf0e9c90c1215649e50e0a708bcae5db371d9fd..a984f666c435680c68b97d0481b8b86a3f487b0e 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.php
@@ -37,6 +37,7 @@ class OnePageCheckoutWithBraintreePaypalTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
index 8f2177209f37b7f83d2b5ad97e2599ed7f7ff67c..7e38e6f0303b64e55ce6e126a2653f0ce7420df7 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
@@ -21,7 +21,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -44,7 +44,7 @@
             <data name="payment/method" xsi:type="string">braintree_paypal</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml
index 89d67936ab0c610cd67054d428c39cd8da341b53..23fc729edb99f9645f7587d8e350464c81083fcd 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithDiscountTest.xml
@@ -25,12 +25,10 @@
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">braintree, braintree_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
-            <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
-            <constraint name="Magento\Sales\Test\Constraint\AssertOrderButtonsAvailable" />
         </variation>
     </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
index 2ab0134e62b7add65f9189e89123443099283032..ad4d5cc06e92e260aed4c90e6f534f2540d25034 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
@@ -24,7 +24,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree, braintree_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php
index f6813b74e40d7b09edf48369f6dc79ca28fefa7d..8845f2a78629da6d2c3994b1e691cce117efa8bc 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.php
@@ -43,6 +43,7 @@ class SaveUseDeleteVaultForPaypalBraintreeTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml
index 6e214d4c205aacc72fa8b93cbd4c082d2d02fa96..c7a5182a1dfb3d693dc03eb5c77d9d2c26622a58 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/SaveUseDeleteVaultForPaypalBraintreeTest.xml
@@ -23,7 +23,7 @@
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Vault\Test\Constraint\AssertStoredPaymentDeletedMessage" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml
index 00eb9c4802db6216bd1dbc0202231612166b306c..35d55784b676236d808cf0f54fc969fc65193b0b 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultOnCheckoutTest.xml
@@ -22,7 +22,7 @@
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">braintree, braintree_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php
index 13b8240d4c49ebe4b047e59f6bfdb63102fbcf47..d2723a300285df0b560ece526e463b495f201d8f 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.php
@@ -43,6 +43,7 @@ class UseVaultWith3dSecureOnCheckoutTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml
index 0f00ff93612b8b1ef7792971b38846efbe3d2b43..a5aa7645148e158ad62a174bc26d08abfd037192 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/UseVaultWith3dSecureOnCheckoutTest.xml
@@ -27,7 +27,7 @@
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">braintree, braintree_use_vault, braintree_3d_secure</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml
index be2d771e47f5bfaf9c93ac9ac909d87ef723bff1..7bdfca2f713f20a9f41b4c19d9bb1e36f55a59c1 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/di.xml
@@ -8,12 +8,12 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <type name="Magento\Braintree\Test\Constraint\Assert3dSecureInfoIsPresent">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S1</argument>
         </arguments>
     </type>
     <type name="Magento\Braintree\Test\Constraint\AssertTransactionIsPresentInSettlementReport">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S1</argument>
         </arguments>
     </type>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php
new file mode 100644
index 0000000000000000000000000000000000000000..401042c031259f4c9e473e8ed7c0fbabb063b5fc
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php
@@ -0,0 +1,52 @@
+<?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\CmsPage as FrontCmsPage;
+use Magento\Mtf\Client\BrowserInterface;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert that created CMS page with expected contents displayed on Frontend.
+ */
+class AssertCmsPageOnFrontend extends AbstractConstraint
+{
+    /**
+     * Assert that created CMS page with expected contents displayed on Frontend.
+     *
+     * @param CmsPage $cms
+     * @param FrontCmsPage $frontCmsPage,
+     * @param BrowserInterface $browser
+     * @param string $displayContent
+     * @return void
+     */
+    public function processAssert(
+        CmsPage $cms,
+        FrontCmsPage $frontCmsPage,
+        BrowserInterface $browser,
+        $displayContent = null
+    ) {
+        $browser->open($_ENV['app_frontend_url'] . $cms->getIdentifier());
+        $fixtureContent = $cms->getContent();
+        \PHPUnit_Framework_Assert::assertContains(
+            $displayContent != null ? $displayContent : $fixtureContent['content'],
+            $frontCmsPage->getCmsPageBlock()->getPageContent(),
+            'Wrong content is displayed.'
+        );
+    }
+
+    /**
+     * CMS Page content equals to data from fixture.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'CMS Page content equals to data from fixture.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php
index 51e9b428892cc53a2db873550f0e0c76d6d997d0..6db35e88efe49e92043b4d85127c74510fb18926 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php
@@ -30,6 +30,7 @@ class AssertCmsPagePreview extends AbstractConstraint
      * @param FrontCmsPage $frontCmsPage
      * @param CmsPage $cms
      * @param BrowserInterface $browser
+     * @param string $displayContent
      * @return void
      */
     public function processAssert(
@@ -37,7 +38,8 @@ class AssertCmsPagePreview extends AbstractConstraint
         FrontCmsIndex $frontCmsIndex,
         FrontCmsPage $frontCmsPage,
         CmsPage $cms,
-        BrowserInterface $browser
+        BrowserInterface $browser,
+        $displayContent = null
     ) {
         $cmsIndex->open();
         $filter = ['title' => $cms->getTitle()];
@@ -46,7 +48,7 @@ class AssertCmsPagePreview extends AbstractConstraint
 
         $fixtureContent = $cms->getContent();
         \PHPUnit_Framework_Assert::assertContains(
-            $fixtureContent['content'],
+            $displayContent != null ? $displayContent : $fixtureContent['content'],
             $frontCmsPage->getCmsPageBlock()->getPageContent(),
             'Wrong content is displayed.'
         );
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 67b4421182848ebb9b2633c4d9212e6679cccf51..f8b6c8c3d9e06da90b122ba39d0c3f01eebc1978 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
@@ -54,5 +54,18 @@
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend" />
         </variation>
+        <variation name="CreateCmsPageEntityTestVariation5" summary="Block Cache Exploit" ticketId="MAGETWO-48017">
+            <data name="tag" xsi:type="string">severity:S2</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/identifier" xsi:type="string">identifier-%isolation%</data>
+            <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="data/is_active" xsi:type="string">Yes</data>
+            <data name="data/content/content" xsi:type="string">\\{{block class=&apos;Magento\Framework\View\Element\Text&apos; text=&apos;bla bla bla&apos; cache_key=&apos;BACKEND_ACL_RESOURCES&apos; cache_lifetime=999\}}</data>
+            <data name="displayContent" xsi:type="string">bla bla bla</data>
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPagePreview" />
+            <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" />
+        </variation>
     </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml
index f4b96844b27383679f0f2a65f63e5445b4e9b6e7..0d3e1b4ea97103d1fb941843f3c419b62f20d49b 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml
@@ -6,24 +6,84 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
-    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage">
+    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S1</argument>
         </arguments>
     </type>
-    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage">
+    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotInGrid">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S3</argument>
         </arguments>
     </type>
     <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotOnCategoryPage">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S3</argument>
         </arguments>
     </type>
-    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage">
+    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageDeleteMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageDuplicateErrorMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageNotInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPagePreview">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Cms\Test\Constraint\AssertUrlRewriteCmsPageRedirect">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S1</argument>
         </arguments>
     </type>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php
index 9f05188e2ebb483ea16edc9ccb8eab15f309c781..e1e8f2ddebb709e17d8a977668f420d803247558 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.php
@@ -110,4 +110,92 @@ class CustomerForm extends Form
             $mapping['lastname']['strategy']
         )->getValue();
     }
+
+    /**
+     * Set 'Change Email' checkbox value.
+     *
+     * @param boolean $value
+     * @return void
+     */
+    public function setChangeEmail($value)
+    {
+        $mapping = $this->dataMapping();
+        $this->_rootElement->find(
+            $mapping['change_email']['selector'],
+            $mapping['change_email']['strategy'],
+            'checkbox'
+        )->setValue($value ?  "Yes" : "No");
+    }
+
+    /**
+     * Set 'Change Password' checkbox value.
+     *
+     * @param boolean $value
+     * @return void
+     */
+    public function setChangePassword($value)
+    {
+        $mapping = $this->dataMapping();
+        $this->_rootElement->find(
+            $mapping['change_password']['selector'],
+            $mapping['change_password']['strategy'],
+            'checkbox'
+        )->setValue($value ?  "Yes" : "No");
+    }
+
+    /**
+     * Check if Current Password field is visible.
+     *
+     * @return boolean
+     */
+    public function isCurrentPasswordVisible()
+    {
+        $mapping = $this->dataMapping();
+        return $this->_rootElement->find(
+            $mapping['current_password']['selector'],
+            $mapping['current_password']['strategy']
+        )->isVisible();
+    }
+
+    /**
+     * Check if Password field is visible.
+     *
+     * @return boolean
+     */
+    public function isPasswordVisible()
+    {
+        $mapping = $this->dataMapping();
+        return $this->_rootElement->find(
+            $mapping['password']['selector'],
+            $mapping['password']['strategy']
+        )->isVisible();
+    }
+
+    /**
+     * Check if Confirmation field is visible.
+     *
+     * @return boolean
+     */
+    public function isConfirmPasswordVisible()
+    {
+        $mapping = $this->dataMapping();
+        return $this->_rootElement->find(
+            $mapping['confirmation']['selector'],
+            $mapping['confirmation']['strategy']
+        )->isVisible();
+    }
+
+    /**
+     * Check if Email field is visible.
+     *
+     * @return boolean
+     */
+    public function isEmailVisible()
+    {
+        $mapping = $this->dataMapping();
+        return $this->_rootElement->find(
+            $mapping['email']['selector'],
+            $mapping['email']['strategy']
+        )->isVisible();
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml
index 9bbc247787e62322e5178bf486dce1ee80097356..20610b0672722a5b53cf8028593b2f457412b673 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/CustomerForm.xml
@@ -9,6 +9,12 @@
     <fields>
         <firstname />
         <lastname />
+        <change_email>
+            <input>checkbox</input>
+        </change_email>
+        <change_password>
+            <input>checkbox</input>
+        </change_password>
         <email />
         <current_password />
         <password />
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml
index 66a7e57279113b3fe8318498279398daccf9f296..362e66aa19d43ddb361bb4eb790d766d3d10d9a3 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Page/CustomerAccountEdit.xml
@@ -9,5 +9,6 @@
   <page name="CustomerAccountEdit" mca="customer/account/edit" module="Magento_Customer">
     <block name="accountInfoForm" class="Magento\Customer\Test\Block\Form\CustomerForm" locator="#form-validate" strategy="css selector"/>
     <block name="messages" class="Magento\Backend\Test\Block\Messages" locator=".page.messages" strategy="css selector"/>
+    <block name="accountMenuBlock" class="Magento\Customer\Test\Block\Account\Links" locator=".nav.items" strategy="css selector"/>
   </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml
index 7d4a961b7686733323d2683ef335c72223f6b460..9bec14fd9575d945218bffd258cde0d06b766d92 100644
--- a/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Dhl/Test/TestCase/OnePageCheckoutTest.xml
@@ -20,7 +20,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">Express easy</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, dhl_eu, shipping_origin_CH, config_base_currency_ch</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
diff --git a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
index 9d6b7d119e09ce6f65529c028b24e190d0f8d42f..fcf8331d18ba7fd02427602013b1674aadfb11fd 100644
--- a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
@@ -20,7 +20,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">International Economy</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, fedex, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
@@ -39,7 +39,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">Ground</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, fedex, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php
index b1c2d71a43bdd7d77cabb00d010261245b599d00..37d85bd91b1d68ddea5ae0c1fd250547810d6d19 100644
--- a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php
+++ b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.php
@@ -16,6 +16,7 @@ class ConflictResolutionTest extends Scenario
     /* tags */
     const MVP = 'no';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml
index dc2ba760025fb71427e2ea50a7e3cce4e1c305e5..163c33f7306bac0f8d859ea9cddbf98e6e2eb2a3 100644
--- a/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Payment/Test/TestCase/ConflictResolutionTest.xml
@@ -40,7 +40,7 @@
                     <item name="Authorize.net Direct Post" xsi:type="string"/>
                 </item>
             </data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data>
         </variation>
     </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc6a35a7c52c1b91792252cf08d13ff20d50a88f
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Payment/Test/etc/di.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Payment\Test\Constraint\AssertCardRequiredFields">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Payment\Test\Constraint\AssertFieldsAreActive">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Payment\Test\Constraint\AssertFieldsAreDisabled">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Payment\Test\Constraint\AssertFieldsAreEnabled">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Payment\Test\Constraint\AssertFieldsArePresent">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php
index d4ec11acd51bf53c38de3be6e927b8a24037c1d8..3e510ab12ec3219a10ccabf6d20c0e2e8e70e0ba 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.php
@@ -35,6 +35,7 @@ class CreatePayFlowOrderBackendNegativeTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml
index 04b34813e59ceacd332657d66366d2789f469e71..4ad751de68a71f0330aa547bf74481c3e306f379 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreatePayFlowOrderBackendNegativeTest.xml
@@ -8,7 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Paypal\Test\TestCase\CreatePayFlowOrderBackendNegativeTest" summary="Verify required fields validation for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-58934">
         <variation name="CreatePayFlowOrderBackendNegativeTestPayflowProVariation1" summary="Verify required fields validation for credit card on admin order creation" ticketId="MAGETWO-58934">
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
index f431bf4d6a5edf4c9cd67cf97796558ffadb59b8..ca26ad42a020c80ab0540c21a2928b8a1874cae7 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
@@ -8,7 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Vault\Test\TestCase\CreateVaultOrderBackendTest" summary="Use saved for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-47350">
         <variation name="CreateVaultOrderBackendTestPayflowProVariation1" summary="Use saved for PayPal Payflow Pro credit card on admin order creation" ticketId="MAGETWO-47350">
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="customer/dataset" xsi:type="string">default</data>
             <data name="billingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php
index c8fb3e4f30f19834d1587cf1a1290aeeace7b958..8a10d08e0f6c3e6cdfddc7ec1a52d8796d54fca3 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.php
@@ -31,6 +31,7 @@ class ExpressCheckoutFromProductPageTest extends Scenario
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
     const TO_MAINTAIN = 'yes';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml
index 4373523471cffc5e8e13b6bc01dffc9902516cd0..1d92fa149efbc336eb0910a451a1740f2eda6c14 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromProductPageTest.xml
@@ -27,7 +27,7 @@
             </data>
             <data name="payment/method" xsi:type="string">paypal_express</data>
             <data name="configData" xsi:type="string">paypal_express, freeshipping</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php
index 7fc35ff1eb6fd83e929886bcdeac741de868fe68..6ecf356e27ff8c61a04329cb3211f0f6e1e9c05f 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.php
@@ -31,6 +31,7 @@ class ExpressCheckoutFromShoppingCartTest extends Scenario
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
     const TO_MAINTAIN = 'yes';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml
index e4a4cd484a45a3b0ed0d8e015d791c207563b96a..38c876719bc3d82c772ff6f86cd507229ec5cf2b 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutFromShoppingCartTest.xml
@@ -28,7 +28,7 @@
                 <item name="grandTotal" xsi:type="string">145.98</item>
             </data>
             <data name="configData" xsi:type="string">payflowpro</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php
index b40adf986dbe9a7311fec484411bb8a7ed50810d..5d7056d32703dbe6b79c6b099ab9a11fa2b9d41f 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.php
@@ -35,6 +35,7 @@ class ExpressCheckoutOnePageTest extends Scenario
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
     const TO_MAINTAIN = 'yes';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml
index df02c3293b50c5ed1bb2394bdeb6fc378f677874..e52ed631ae46f983dc8860e7bf628f95a5a6a7fb 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ExpressCheckoutOnePageTest.xml
@@ -26,7 +26,7 @@
             </data>
             <data name="payment/method" xsi:type="string">paypal_express</data>
             <data name="configData" xsi:type="string">paypal_express</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
@@ -51,7 +51,7 @@
             </data>
             <data name="payment/method" xsi:type="string">paypal_express</data>
             <data name="configData" xsi:type="string">payflowlink</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php
index 07f03b1c931cfc0c547f781451630fa828101294..66ca21d8d0f3eae424d9b3f926bf0003ff3dd9d6 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.php
@@ -32,6 +32,7 @@ class InContextExpressCheckoutFromShoppingCartTest extends Scenario
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
     const TO_MAINTAIN = 'yes';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml
index 979a8c2f32db3fd9333adbfe6fd8b52263edf462..bbc566d1e31ec620746316d2e3ebcfe76c6883ae 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressCheckoutFromShoppingCartTest.xml
@@ -10,7 +10,7 @@
         <variation name="InContextExpressCheckoutFromShoppingCartTestVariation1" summary="In-Context Checkout with PayPal Express Checkout (API Credentials) from shopping cart " ticketId="MAGETWO-47213">
             <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="configData" xsi:type="string">paypal_express, paypal_express_in_context</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php
index ff06e6b10266ef4b723811bf143b648aa59853e9..b96f6a3e4a70a4ce320b0bf7b424675a0eee8fc4 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.php
@@ -32,6 +32,7 @@ class InContextExpressOnePageCheckoutTest extends Scenario
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
     const TO_MAINTAIN = 'yes';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml
index cbdd9c3b6d6d31d13acac40ef5c8420b51054f85..5fa8e6e8b775dfb4e0bae646d431196823312f98 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/InContextExpressOnePageCheckoutTest.xml
@@ -18,7 +18,7 @@
             </data>
             <data name="payment/method" xsi:type="string">paypal_express</data>
             <data name="configData" xsi:type="string">paypal_express_in_context, paypal_express, freeshipping</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..379e90eb72c0d15c28b4de340f019ed21e9978c5
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/NavigateMenuTest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Backend\Test\TestCase\NavigateMenuTest" summary="Navigate through admin menu" ticketId="MAGETWO-34874">
+        <variation name="NavigateMenuTest50">
+            <data name="tag" xsi:type="string">severity:S0</data>
+            <data name="menuItem" xsi:type="string">Reports > PayPal Settlement</data>
+            <data name="pageTitle" xsi:type="string">PayPal Settlement Reports</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertBackendPageIsAvailable"/>
+        </variation>
+        <variation name="NavigateMenuTest51">
+            <data name="tag" xsi:type="string">severity:S0</data>
+            <data name="menuItem" xsi:type="string">Sales > Billing Agreements</data>
+            <data name="pageTitle" xsi:type="string">Billing Agreements</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertBackendPageIsAvailable"/>
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
index d74d93053196b39f32c2430c70d0dfddee0d5c50..b1da43e473bc5d78d4bfaf0fbcbb718dac6acd3e 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
@@ -24,7 +24,7 @@
             <data name="creditCard/dataset" xsi:type="string">visa_default</data>
             <data name="configData" xsi:type="string">payflowpro, payflowpro_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderSuccessCreateMessage" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml
index bde3837d71fda02bad93ac1ced7c3c08835deafe..92b4be03b5937ffa318f9d3cd05f6e6d2290f6bc 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/UseVaultOnCheckoutTest.xml
@@ -21,7 +21,7 @@
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">payflowpro, payflowpro_use_vault</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <data name="status" xsi:type="string">Processing</data>
             <data name="orderButtonsAvailable" xsi:type="string">Back, Cancel, Send Email, Hold, Invoice, Ship, Reorder, Edit</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e56386d5e0eacc346bfb5ddaf84319a1d1d16313
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/etc/di.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Paypal\Test\Constraint\Sandbox\AssertTotalPaypalReview">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Paypal\Test\Constraint\AssertExpressCancelledMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php
new file mode 100644
index 0000000000000000000000000000000000000000..68384aacbc70cc4759f99ab9cb0d1cb42ac2ca9d
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertCustomerEmailChanged.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Security\Test\Constraint;
+
+use Magento\Customer\Test\Fixture\Customer;
+use Magento\Customer\Test\Page\CustomerAccountIndex;
+use Magento\Mtf\Constraint\AbstractConstraint;
+use Magento\Mtf\Fixture\FixtureFactory;
+
+/**
+ * Check that login again to frontend with new email was successful.
+ */
+class AssertCustomerEmailChanged extends AbstractConstraint
+{
+    /**
+     * Assert that login again to frontend with new email was successful.
+     *
+     * @param FixtureFactory $fixtureFactory
+     * @param CustomerAccountIndex $customerAccountIndex
+     * @param Customer $initialCustomer
+     * @param Customer $customer
+     * @return void
+     */
+    public function processAssert(
+        FixtureFactory $fixtureFactory,
+        CustomerAccountIndex $customerAccountIndex,
+        Customer $initialCustomer,
+        Customer $customer
+    ) {
+        $customer = $fixtureFactory->createByCode(
+            'customer',
+            [
+                'data' => [
+                    'email' => $customer->getEmail(),
+                    'password' => $initialCustomer->getPassword()
+                ],
+            ]
+        );
+
+        $this->objectManager->create(
+            \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class,
+            ['customer' => $customer]
+        )->run();
+
+        \PHPUnit_Framework_Assert::assertTrue(
+            $customerAccountIndex->getAccountMenuBlock()->isVisible(),
+            'Customer Account Dashboard is not visible.'
+        );
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Customer email was changed.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php
new file mode 100644
index 0000000000000000000000000000000000000000..642db5925157414db3220aceae8049af209ed2d6
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/Constraint/AssertDefaultAccountInformation.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Security\Test\Constraint;
+
+use Magento\Customer\Test\Page\CustomerAccountEdit;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert fields visibility in customer account information tab.
+ */
+class AssertDefaultAccountInformation extends AbstractConstraint
+{
+    /**
+     * Assert fields visibility in customer account information tab.
+     *
+     * @param CustomerAccountEdit $customerAccountEdit
+     * @return void
+     */
+    public function processAssert(
+        CustomerAccountEdit $customerAccountEdit
+    ) {
+        $infoForm = $customerAccountEdit->getAccountInfoForm();
+
+        \PHPUnit_Framework_Assert::assertFalse(
+            $infoForm->isEmailVisible(),
+            'Email text field should not be visible.'
+        );
+
+        \PHPUnit_Framework_Assert::assertFalse(
+            $infoForm->isCurrentPasswordVisible(),
+            'Current Password text field should not be visible.'
+        );
+
+        \PHPUnit_Framework_Assert::assertFalse(
+            $infoForm->isPasswordVisible(),
+            'New Password text field should not be visible.'
+        );
+
+        \PHPUnit_Framework_Assert::assertFalse(
+            $infoForm->isConfirmPasswordVisible(),
+            'Password Confirmation text field should not be visible.'
+        );
+    }
+
+    /**
+     * String representation of success assert.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Default customer account information tab is correct.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9f1acd69d92a2e3ba02e52ad4e563932924f2305
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Security\Test\TestCase;
+
+use Magento\Mtf\TestCase\Injectable;
+use Magento\Customer\Test\Fixture\Customer;
+use Magento\Customer\Test\Page\CustomerAccountEdit;
+
+/**
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1.  Customer is created
+ *
+ * Steps:
+ * 1. Login to fronted as customer from preconditions
+ * 2. Navigate to Account Information tab
+ * 3. Check "Change Email" checkbox
+ * 4. Fill form according to data set and save
+ * 5. Perform all assertions
+ *
+ * @group Security
+ * @ZephyrId MAGETWO-49041
+ */
+class SecureChangingCustomerEmailTest extends Injectable
+{
+    /* tags */
+    const MVP = 'yes';
+    const SEVERITY = 'S1';
+    /* end tags */
+
+    /**
+     * CustomerAccountEdit page.
+     *
+     * @var CustomerAccountEdit
+     */
+    protected $customerAccountEdit;
+
+    /**
+     * Preparing page for test.
+     *
+     * @param CustomerAccountEdit $customerAccountEdit
+     * @return void
+     */
+    public function __inject(
+        CustomerAccountEdit $customerAccountEdit
+    ) {
+        $this->customerAccountEdit = $customerAccountEdit;
+    }
+
+    /**
+     * Change customer password in Account Information tab.
+     *
+     * @param Customer $initialCustomer
+     * @param Customer $customer
+     * @return void
+     */
+    public function test(Customer $initialCustomer, Customer $customer)
+    {
+        // Preconditions
+        $initialCustomer->persist();
+
+        // Steps
+        $this->objectManager->create(
+            \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class,
+            ['customer' => $initialCustomer]
+        )->run();
+
+        $this->customerAccountEdit->getAccountMenuBlock()->openMenuItem('Account Information');
+        $this->customerAccountEdit->getAccountInfoForm()->SetChangeEmail(true);
+        $this->customerAccountEdit->getAccountInfoForm()->fill($customer);
+        $this->customerAccountEdit->getAccountInfoForm()->submit();
+    }
+
+    /**
+     * Logout customer from frontend account.
+     *
+     * @return void
+     */
+    public function tearDown()
+    {
+        $this->objectManager->create(\Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep::class)->run();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dc3ad06e842fd17d9eebb7fd4fdbb2a0815e9d4f
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerEmailTest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Security\Test\TestCase\SecureChangingCustomerEmailTest" summary="Secure Changing Customer Email" ticketId="MAGETWO-49041">
+        <variation name="SecureChangingEmailV1" summary="Change Email checkbox is checked, enter new email, correct password">
+            <data name="tag" xsi:type="string">severity:S1</data>
+            <data name="initialCustomer/dataset" xsi:type="string">default</data>
+            <data name="customer/data/email" xsi:type="string">JaneDoe_%isolation%@example.com</data>
+            <data name="customer/data/current_password" xsi:type="string">123123^q</data>
+            <constraint name="Magento\Customer\Test\Constraint\AssertCustomerInfoSuccessSavedMessage" />
+            <constraint name="Magento\Security\Test\Constraint\AssertCustomerEmailChanged" />
+        </variation>
+        <variation name="SecureChangingEmailV2" summary="Change Email checkbox is checked, enter new email, wrong password">
+            <data name="tag" xsi:type="string">severity:S2</data>
+            <data name="initialCustomer/dataset" xsi:type="string">default</data>
+            <data name="customer/data/email" xsi:type="string">JaneDoe_%isolation%@example.com</data>
+            <data name="customer/data/current_password" xsi:type="string">123123123</data>
+            <constraint name="Magento\Customer\Test\Constraint\AssertChangePasswordFailMessage" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..225ef6b397aa4b3c9cf70d2d0ef32adccb73edf6
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Security\Test\TestCase;
+
+use Magento\Mtf\TestCase\Injectable;
+use Magento\Customer\Test\Fixture\Customer;
+use Magento\Customer\Test\Page\CustomerAccountEdit;
+
+/**
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1.  Customer is created
+ *
+ * Steps:
+ * 1. Login to fronted as customer from preconditions
+ * 2. Navigate to Account Information tab
+ * 3. Check "Change Password" checkbox
+ * 4. Fill form according to data set and save
+ * 5. Perform all assertions
+ *
+ * @group Security
+ * @ZephyrId MAGETWO-49043
+ */
+class SecureChangingCustomerPasswordTest extends Injectable
+{
+    /* tags */
+    const MVP = 'yes';
+    const SEVERITY = 'S1';
+    /* end tags */
+
+    /**
+     * CustomerAccountEdit page.
+     *
+     * @var CustomerAccountEdit
+     */
+    protected $customerAccountEdit;
+
+    /**
+     * Preparing page for test.
+     *
+     * @param CustomerAccountEdit $customerAccountEdit
+     * @return void
+     */
+    public function __inject(
+        CustomerAccountEdit $customerAccountEdit
+    ) {
+        $this->customerAccountEdit = $customerAccountEdit;
+    }
+
+    /**
+     * Change customer password in Account Information tab.
+     *
+     * @param Customer $initialCustomer
+     * @param Customer $customer
+     * @param boolean $check
+     * @return void
+     */
+    public function test(Customer $initialCustomer, Customer $customer, $check)
+    {
+        // Preconditions
+        $initialCustomer->persist();
+
+        // Steps
+        $this->objectManager->create(
+            \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class,
+            ['customer' => $initialCustomer]
+        )->run();
+
+        $this->customerAccountEdit->getAccountMenuBlock()->openMenuItem('Account Information');
+        if ($check) {
+            $this->customerAccountEdit->getAccountInfoForm()->SetChangePassword(true);
+            $this->customerAccountEdit->getAccountInfoForm()->fill($customer);
+            $this->customerAccountEdit->getAccountInfoForm()->submit();
+        }
+    }
+
+    /**
+     * Logout customer from frontend account.
+     *
+     * @return void
+     */
+    public function tearDown()
+    {
+        $this->objectManager->create(\Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep::class)->run();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9fc2f50435a98a13ea42f800efd51b503e11d218
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Security/Test/TestCase/SecureChangingCustomerPasswordTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Security\Test\TestCase\SecureChangingCustomerPasswordTest" summary="Secure Changing Customer Password" ticketId="MAGETWO-49043">
+        <variation name="SecureChangingPasswordV1" summary="Change Password checkbox is checked, enter correct password">
+            <data name="tag" xsi:type="string">severity:S1</data>
+            <data name="initialCustomer/dataset" xsi:type="string">default</data>
+            <data name="customer/data/current_password" xsi:type="string">123123^q</data>
+            <data name="customer/data/password" xsi:type="string">123123Qa</data>
+            <data name="customer/data/password_confirmation" xsi:type="string">123123Qa</data>
+            <data name="check" xsi:type="string">1</data>
+            <constraint name="Magento\Customer\Test\Constraint\AssertCustomerInfoSuccessSavedMessage" />
+            <constraint name="Magento\Customer\Test\Constraint\AssertCustomerPasswordChanged" />
+        </variation>
+        <variation name="SecureChangingPasswordV2" summary="Change Password checkbox is checked, enter wrong password">
+            <data name="tag" xsi:type="string">severity:S2</data>
+            <data name="initialCustomer/dataset" xsi:type="string">default</data>
+            <data name="customer/data/current_password" xsi:type="string">123123123</data>
+            <data name="customer/data/password" xsi:type="string">123123Qa</data>
+            <data name="customer/data/password_confirmation" xsi:type="string">123123Qa</data>
+            <data name="check" xsi:type="string">1</data>
+            <constraint name="Magento\Customer\Test\Constraint\AssertChangePasswordFailMessage" />
+        </variation>
+        <variation name="SecureChangingPasswordV3" summary="Change Password checkbox is unchecked">
+            <data name="tag" xsi:type="string">severity:S3</data>
+            <data name="initialCustomer/dataset" xsi:type="string">default</data>
+            <data name="check" xsi:type="string">0</data>
+            <constraint name="Magento\Security\Test\Constraint\AssertDefaultAccountInformation" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php b/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php
index 93bf1a9001cbfcc4825afee549e3873d1d623ae9..a5fa6d4a83cbe63cbcf6d6b15e5935787d5d2694 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/Fixture/Store/GroupId.php
@@ -43,6 +43,15 @@ class GroupId extends DataSource
             $this->storeGroup = $data['fixture'];
             $this->data = $this->storeGroup->getWebsiteId() . "/" . $this->storeGroup->getName();
         }
+
+        if (isset($data['storeGroup']) && $data['storeGroup'] instanceof StoreGroup) {
+            $this->storeGroup = $data['storeGroup'];
+            $this->data = $data['storeGroup']->getWebsiteId() . "/" . $data['storeGroup']->getName();
+        }
+
+        if (isset($data['value'])) {
+            $this->data = $data['value'];
+        }
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml b/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml
index 12ca9f5e03a20568423ee565030c785e9eec5bba..37faba3d75524304919c65cf391ee4211ef9fdae 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/Repository/Store.xml
@@ -52,5 +52,14 @@
             <field name="code" xsi:type="string">store_%isolation%</field>
             <field name="is_active" xsi:type="string">Enabled</field>
         </dataset>
+
+        <dataset name="custom_group_custom_store">
+            <field name="group_id" xsi:type="array">
+                <item name="dataset" xsi:type="string">custom</item>
+            </field>
+            <field name="name" xsi:type="string">Custom_Store_%isolation%</field>
+            <field name="code" xsi:type="string">code_%isolation%</field>
+            <field name="is_active" xsi:type="string">Enabled</field>
+        </dataset>
     </repository>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php
index 804111c497cca364fc749a477ee85e356c686d53..56ec632ffd09f6c063d21eb747d114219fe9b022 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.php
@@ -34,6 +34,7 @@ class CreateStoreEntityTest extends Injectable
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = 'acceptance_test, extended_acceptance_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml
index d0fb3738910cd171f190ee4a5f1c8acc157d298f..26d9aa9beba0acc098558d8fd1f6aacb9083cb5d 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreEntityTest.xml
@@ -8,28 +8,27 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\CreateStoreEntityTest" summary="Create Store View" ticketId="MAGETWO-27647">
         <variation name="CreateStoreEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S1</data>
             <data name="store/data/group_id/dataset" xsi:type="string">default</data>
             <data name="store/data/name" xsi:type="string">store_name_%isolation%</data>
             <data name="store/data/code" xsi:type="string">storecode_%isolation%</data>
             <data name="store/data/is_active" xsi:type="string">Enabled</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" />
         </variation>
         <variation name="CreateStoreEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S3</data>
             <data name="store/data/group_id/dataset" xsi:type="string">default</data>
             <data name="store/data/name" xsi:type="string">store_name_%isolation%</data>
             <data name="store/data/code" xsi:type="string">storecode_%isolation%</data>
             <data name="store/data/is_active" xsi:type="string">Disabled</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" />
         </variation>
         <variation name="CreateStoreEntityTestVariation3">
+            <data name="tag" xsi:type="string">severity:S1</data>
             <data name="store/data/group_id/dataset" xsi:type="string">custom</data>
             <data name="store/data/name" xsi:type="string">store_name_%isolation%</data>
             <data name="store/data/code" xsi:type="string">storecode_%isolation%</data>
@@ -41,7 +40,7 @@
             <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" />
         </variation>
         <variation name="CreateStoreEntityTestVariation4" summary="Create New Localized Store View" ticketId="MAGETWO-12405">
-            <data name="tag" xsi:type="string">test_type:acceptance_test, test_type:extended_acceptance_test</data>
+            <data name="tag" xsi:type="string">test_type:acceptance_test, test_type:extended_acceptance_test, severity:S0</data>
             <data name="store/data/group_id/dataset" xsi:type="string">default</data>
             <data name="store/data/name" xsi:type="string">DE_%isolation%</data>
             <data name="store/data/code" xsi:type="string">de_%isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php
index 5d638d781d173ab22923ad2772fd31a984dd944e..76589026b70a031ecea639bb4303b5d38bff9bc0 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.php
@@ -29,6 +29,7 @@ class CreateStoreGroupEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml
index d3644ff6ddc59c2efab74f853c48c26ca1780aa8..39adbb9c418403469cfd5f82697619c5d89218be 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateStoreGroupEntityTest.xml
@@ -8,15 +8,16 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\CreateStoreGroupEntityTest" summary="Create Store Group" ticketId="MAGETWO-27345">
         <variation name="CreateStoreGroupEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S1</data>
             <data name="storeGroup/data/website_id/dataset" xsi:type="string">main_website</data>
             <data name="storeGroup/data/name" xsi:type="string">store_name_%isolation%</data>
             <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">default_category</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupForm" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm" />
         </variation>
         <variation name="CreateStoreGroupEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S1</data>
             <data name="storeGroup/data/website_id/dataset" xsi:type="string">custom_website</data>
             <data name="storeGroup/data/name" xsi:type="string">store_name_%isolation%</data>
             <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">root_category</data>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php
index 766e030b3f61880551fd4b82ffc217ce0aa5179a..3e0b3670f49453c884aa22ce82dbf19eed56cf61 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.php
@@ -29,6 +29,7 @@ class CreateWebsiteEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml
index e5ec1371587a6ee52955b5b34a6bdc93be5dfbc6..810a4b9ac88f2840c5b160d36a64540f568a626d 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/CreateWebsiteEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\CreateWebsiteEntityTest" summary="Create Website" ticketId="MAGETWO-27665">
         <variation name="CreateWebsiteEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S1</data>
             <data name="website/data/name" xsi:type="string">website_%isolation%</data>
             <data name="website/data/code" xsi:type="string">code_%isolation%</data>
             <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessSaveMessage" />
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php
index cbe261fe750a8c7c8fd61244edd5387aea6152cb..baee46f8697034061b748f4d45b5fe62e72b1f5e 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.php
@@ -36,6 +36,7 @@ class DeleteStoreEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml
index 05132aeefda4cd55afea8f9515023cfd9819b3a0..b888ba1f778370d11e19ded0f8c40cfd543541ea 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\DeleteStoreEntityTest" summary="Delete Store View" ticketId="MAGETWO-27942">
         <variation name="DeleteStoreEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="store/dataset" xsi:type="string">custom</data>
             <data name="createBackup" xsi:type="string">Yes</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteAndBackupMessages" />
@@ -16,10 +17,10 @@
             <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" />
         </variation>
         <variation name="DeleteStoreEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="store/dataset" xsi:type="string">custom</data>
             <data name="createBackup" xsi:type="string">No</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteMessage" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreNotInGrid" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php
index e7ba27b44c1a845bd513a55bf22d042b3100d1cc..5890298650c5c8ddac676d7198f40ba20dc0a26e 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.php
@@ -38,6 +38,7 @@ class DeleteStoreGroupEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S3';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml
index bbedbfc8d103786cdef08c5a4dbdc1f94d9af8e9..16c0aeb358bb0fe5e7f0e18216300161c6dfbbf1 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteStoreGroupEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\DeleteStoreGroupEntityTest" summary="Delete Store Group" ticketId="MAGETWO-27596">
         <variation name="DeleteStoreGroupEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S3</data>
             <data name="storeGroup/dataset" xsi:type="string">custom</data>
             <data name="createBackup" xsi:type="string">Yes</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteAndBackupMessages" />
@@ -15,6 +16,7 @@
             <constraint name="Magento\Backup\Test\Constraint\AssertBackupInGrid" />
         </variation>
         <variation name="DeleteStoreGroupEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S3</data>
             <data name="storeGroup/dataset" xsi:type="string">custom</data>
             <data name="createBackup" xsi:type="string">No</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteMessage" />
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php
index 5d4af70cb03e3154364e03611be4347104d09db0..94e14b4a42317edaa2b1f151a3858c770a74fc68 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.php
@@ -38,6 +38,7 @@ class DeleteWebsiteEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S3';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml
index 93c63d42d4de51df71e8fee8eeb62e2286c7bcfc..21327a0ced20bd407f331d8a15c07e42199dfa0d 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/DeleteWebsiteEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\DeleteWebsiteEntityTest" summary="Delete Website" ticketId="MAGETWO-27723">
         <variation name="DeleteWebsiteEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S3</data>
             <data name="website/dataset" xsi:type="string">custom_website</data>
             <data name="createBackup" xsi:type="string">Yes</data>
             <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteAndBackupMessages" />
@@ -15,6 +16,7 @@
             <constraint name="Magento\Backup\Test\Constraint\AssertBackupInGrid" />
         </variation>
         <variation name="DeleteWebsiteEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S3</data>
             <data name="website/dataset" xsi:type="string">custom_website</data>
             <data name="createBackup" xsi:type="string">No</data>
             <constraint name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteMessage" />
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9a335e1cbd0e362cda015be6ae1e309fe1f179f6
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.php
@@ -0,0 +1,107 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Store\Test\TestCase;
+
+use Magento\Backend\Test\Page\Adminhtml\EditStore;
+use Magento\Backend\Test\Page\Adminhtml\StoreIndex;
+use Magento\Store\Test\Fixture\Store;
+use Magento\Mtf\TestCase\Injectable;
+use Magento\Mtf\Fixture\FixtureFactory;
+
+/**
+ * Test Move Store view to another store within same website (Store Management)
+ *
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1.Create store STA with store view SVA
+ * 2.Create store STB with store view SVB
+ * 3.STA and STB belong to the same website
+ *
+ * Steps:
+ * 1. Open Backend
+ * 2. Go to Stores -> All Stores
+ * 3. Open store view SVB from grid
+ * 4. Change store group setting from STB to STA
+ * 5. Save store entity
+ * 6. Perform all assertions
+ *
+ * @group Store_Management
+ * @ZephyrId MAGETWO-54026
+ */
+class MoveStoreToOtherGroupSameWebsiteTest extends Injectable
+{
+    /* tags */
+    const MVP = 'yes';
+    const SEVERITY = 'S1';
+    /* end tags */
+
+    /**
+     * Page StoreIndex
+     *
+     * @var StoreIndex
+     */
+    protected $storeIndex;
+
+    /**
+     * Page EditStore
+     *
+     * @var EditStore
+     */
+    protected $editStore;
+
+    /**
+     * Preparing pages for test
+     *
+     * @param StoreIndex $storeIndex
+     * @param EditStore $editStore
+     * @return void
+     */
+    public function __inject(StoreIndex $storeIndex, EditStore $editStore)
+    {
+        $this->storeIndex = $storeIndex;
+        $this->editStore = $editStore;
+    }
+
+    /**
+     * Move store view to another store group within a website
+     *
+     * @param FixtureFactory $fixtureFactory
+     * @param Store $storeInitialA
+     * @param Store $storeInitialB
+     * @return array
+     */
+    public function test(FixtureFactory $fixtureFactory, Store $storeInitialA, Store $storeInitialB)
+    {
+        // Prepare data for constraints
+        $store = $fixtureFactory->createByCode(
+            'store',
+            [
+                'data' => [
+                    'name' => $storeInitialB->getName(),
+                    'code' => $storeInitialB->getCode(),
+                    'is_active' => $storeInitialB->getIsActive(),
+                    'group_id' => [
+                        'storeGroup' => $storeInitialA->getDataFieldConfig('group_id')['source']->getStoreGroup()
+                    ],
+                ],
+            ]
+        );
+
+        // Preconditions
+        $storeInitialA->persist();
+        $storeInitialB->persist();
+
+        // Steps
+        $this->storeIndex->open();
+        $this->storeIndex->getStoreGrid()->searchAndOpenStore($storeInitialB);
+        $this->editStore->getStoreForm()->selectStore($storeInitialA->getGroupId());
+        $this->editStore->getFormPageActions()->save();
+
+        return ['store' => $store];
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6353d8379532e5b3a77dda4696e214d15663c90
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/MoveStoreToOtherGroupSameWebsiteTest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Store\Test\TestCase\MoveStoreToOtherGroupSameWebsiteTest" summary="Move Store View" ticketId="MAGETWO-54026">
+        <variation name="MoveStoreTestVariation1">
+            <data name="storeInitialA/dataset" xsi:type="string">custom_group_custom_store</data>
+            <data name="storeInitialB/dataset" xsi:type="string">custom_group_custom_store</data>
+            <constraint name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage" />
+            <constraint name="Magento\Store\Test\Constraint\AssertStoreInGrid" />
+            <constraint name="Magento\Store\Test\Constraint\AssertStoreForm" />
+            <constraint name="Magento\Store\Test\Constraint\AssertStoreBackend" />
+            <constraint name="Magento\Store\Test\Constraint\AssertStoreFrontend" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php
index 38250d958bc10273d3918789b6b00559bdf0c567..43a219cba62e6404ae9c690050ff582ad712bd39 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.php
@@ -33,6 +33,7 @@ class UpdateStoreEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml
index 92028c303a5292e7130ced0ae2541aa79111fc29..c32df2c53396b37a89b3419891d2c2bc9e3873ac 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\UpdateStoreEntityTest" summary="Update Store View" ticketId="MAGETWO-27786">
         <variation name="UpdateStoreEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="storeInitial/dataset" xsi:type="string">custom</data>
             <data name="store/data/group_id/dataset" xsi:type="string">default</data>
             <data name="store/data/name" xsi:type="string">storename_updated%isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php
index 7e9143a5c91df4775bc2222a4281171ffb6681b7..f81d0989e24813cf20e1be734beecc5b5b2c5f32 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.php
@@ -34,6 +34,7 @@ class UpdateStoreGroupEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml
index ce1a67575c67588ff4b9af854b579f5d21859f4b..07309135f607a4bc49584e9aa11819358336a984 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateStoreGroupEntityTest.xml
@@ -8,16 +8,17 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\UpdateStoreGroupEntityTest" summary="Update Store Group" ticketId="MAGETWO-27568">
         <variation name="UpdateStoreGroupEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="storeGroupOrigin/dataset" xsi:type="string">custom</data>
             <data name="storeGroup/data/website_id/dataset" xsi:type="string">main_website</data>
             <data name="storeGroup/data/name" xsi:type="string">store_name_updated_%isolation%</data>
             <data name="storeGroup/data/root_category_id/dataset" xsi:type="string">default_category</data>
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage" />
-            <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupForm" />
             <constraint name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm" />
         </variation>
         <variation name="UpdateStoreGroupEntityTestVariation2">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="storeGroupOrigin/dataset" xsi:type="string">custom</data>
             <data name="storeGroup/data/website_id/dataset" xsi:type="string">custom_website</data>
             <data name="storeGroup/data/name" xsi:type="string">store_name_updated_%isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php
index b187f05856670a1807b904a8b87bfca78ee51357..28fcfd79131faef12d35ad54457deb152b5858ec 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.php
@@ -35,6 +35,7 @@ class UpdateWebsiteEntityTest extends Injectable
 {
     /* tags */
     const MVP = 'yes';
+    const SEVERITY = 'S2';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml
index 94f0a891e61ccb6f62563d65a3a0f2c86ed9d1f3..c1b3af6749727a658d8bf3635322bd5da6402567 100644
--- a/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/TestCase/UpdateWebsiteEntityTest.xml
@@ -8,6 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Store\Test\TestCase\UpdateWebsiteEntityTest" summary="Update Website" ticketId="MAGETWO-27690">
         <variation name="UpdateWebsiteEntityTestVariation1">
+            <data name="tag" xsi:type="string">severity:S2</data>
             <data name="websiteOrigin/dataset" xsi:type="string">custom_website</data>
             <data name="website/data/name" xsi:type="string">website_upd%isolation%</data>
             <data name="website/data/code" xsi:type="string">code_upd%isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml
new file mode 100644
index 0000000000000000000000000000000000000000..737f33ebebe1f9ec23a4140cc43e74538d6c48a3
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Store/Test/etc/di.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Store\Test\Constraint\AssertStoreBackend">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreFrontend">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupNotInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupOnStoreViewForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteAndBackupMessages">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessDeleteMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreGroupSuccessSaveMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreNotInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreNotOnFrontend">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteAndBackupMessages">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreSuccessDeleteMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertStoreSuccessSaveMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteNotInGrid">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteOnStoreForm">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteAndBackupMessages">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessDeleteMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S3</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Store\Test\Constraint\AssertWebsiteSuccessSaveMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
index b27bc81d2866045de5c9e1d18fa4689a09a360d1..45076e90aab202b1cae7fbc5abcefbfc6c11e317 100644
--- a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
@@ -20,7 +20,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">UPS Ground</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, ups, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/>
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/>
@@ -39,7 +39,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">UPS Worldwide Expedited</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, ups, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/>
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/>
diff --git a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
index 28c2b0f16239c735c927a8d3f7ef8eb0ebc1b01b..0bd219bab3bfff2103ea9f7a1ff2934ca8e1ad59 100644
--- a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
@@ -20,7 +20,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">Priority Mail 1-Day</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, usps, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/>
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/>
@@ -37,7 +37,7 @@
             <data name="cart/data/shipping_method" xsi:type="string">Priority Mail Express International Flat Rate Envelope</data>
             <data name="payment/method" xsi:type="string">checkmo</data>
             <data name="configData" xsi:type="string">checkmo, usps, shipping_origin_US_CA</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage"/>
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid"/>
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php
index 3c306280215ea1a2ee460db6f7838fd7c33caf7c..a5194b3915191e7c5ef893bcb5958d610544ddf7 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/CreateVaultOrderBackendTest.php
@@ -38,6 +38,7 @@ class CreateVaultOrderBackendTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = 'acceptance_test, extended_acceptance_test, 3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php
index 17db35df1b44e6d2be519426ba962f6696fee23d..e6462e4697aa612c1239b92b3c7b7e847bd252ba 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.php
@@ -32,6 +32,7 @@ class DeleteSavedCreditCardTest extends Injectable
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S1';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
index ae303b695277c53272efedc40231bf305b66fea5..ac69bfb9f47e4550e6ab4592cccbdf56cf682da3 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
@@ -52,7 +52,7 @@
             </data>
             <data name="creditCardSave" xsi:type="string">Yes</data>
             <data name="configData" xsi:type="string">braintree, payflowpro, braintree_use_vault, payflowpro_use_vault</data>
-            <data name="tag" xsi:type="string">test_type:3rd_party_test</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
         </variation>
     </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php
index c3b82af6949c4a0ea114324abae90aa7ccab3a24..e426662d30e5447599f0b2f4bc47b67902aeb7c9 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/ReorderUsingVaultTest.php
@@ -36,6 +36,8 @@ class ReorderUsingVaultTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = 'extended_acceptance_test, 3rd_party_test';
+    const SEVERITY = 'S1';
+
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php
index 902ccc62af7f57c23db399bc22d5d3530b0a7515..fb8b3575ee72e463254038446ce55561123e3103 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/UseVaultOnCheckoutTest.php
@@ -39,6 +39,7 @@ class UseVaultOnCheckoutTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aba54057312ea3491655b5ea6e75c9fef4dfc2ae
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/di.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Vault\Test\Constraint\AssertCreditCardNotPresentOnCheckout">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Vault\Test\Constraint\AssertStoredPaymentDeletedMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+</config>
diff --git a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml
index 4b4ab839d3463cbef4c766161e41874d0d65e446..6836259eb671ac908ad017138bde36a86e764766 100644
--- a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml
+++ b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/basic.xml
@@ -7,11 +7,6 @@
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/mtf/Magento/Mtf/TestRunner/etc/testRunner.xsd">
-    <rule scope="testcase">
-        <deny>
-            <tag group="test_type" value="3rd_party_test_deprecated" />
-        </deny>
-    </rule>
     <rule scope="variation">
         <deny>
             <tag group="test_type" value="3rd_party_test" />
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 2c9d6ca91e9f9cd2487067389fc119b24ca4a3bc..963de3e46fea69c821902b8d4266681adc0d5ea8 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute.php
@@ -40,7 +40,7 @@ $attribute->setData(
                 'option_1' => ['Option 1'],
                 'option_2' => ['Option 2'],
                 'option_3' => ['Option 3'],
-                'option_4' => ['Option 4 "!@#$%^&*'],
+                'option_4' => ['Option 4 "!@#$%^&*']
             ],
             'order' => [
                 'option_1' => 1,
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php
new file mode 100644
index 0000000000000000000000000000000000000000..1ab2f9ef65bffca50886f8c7ef4764c550da0aa5
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/* Create attribute */
+/** @var $installer \Magento\Catalog\Setup\CategorySetup */
+$installer = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+    \Magento\Catalog\Setup\CategorySetup::class
+);
+/** @var $attribute \Magento\Catalog\Model\ResourceModel\Eav\Attribute */
+$attribute = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+    \Magento\Catalog\Model\ResourceModel\Eav\Attribute::class
+);
+$attribute->setData(
+    [
+        'attribute_code' => 'multiselect_attribute',
+        'entity_type_id' => $installer->getEntityTypeId('catalog_product'),
+        'is_global' => 1,
+        'is_user_defined' => 1,
+        'frontend_input' => 'multiselect',
+        'is_unique' => 0,
+        'is_required' => 0,
+        'is_searchable' => 0,
+        'is_visible_in_advanced_search' => 0,
+        'is_comparable' => 0,
+        'is_filterable' => 0,
+        'is_filterable_in_search' => 0,
+        'is_used_for_promo_rules' => 0,
+        'is_html_allowed_on_front' => 1,
+        'is_visible_on_front' => 0,
+        'used_in_product_listing' => 0,
+        'used_for_sort_by' => 0,
+        'frontend_label' => ['Multiselect Attribute'],
+        'backend_type' => 'varchar',
+        'backend_model' => \Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend::class,
+        'option' => [
+            'value' => [
+                'option_1' => ['Opt|,=ion 1'],
+                'option_2' => ['Opt||,ion 2'],
+                'option_3' => ['Option 3 "!@#$%^&*, "|"']
+            ],
+            'order' => [
+                'option_1' => 1,
+                'option_2' => 2,
+                'option_3' => 3,
+            ],
+        ],
+    ]
+);
+$attribute->save();
+
+/* Assign attribute to attribute set */
+$installer->addAttributeToGroup('catalog_product', 'Default', 'General', $attribute->getId());
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php
index 9b06764ce264cfe9aaa6be03a6e61f2f01210631..0afede93546f2c8ba69f8af9b64b70013b5d2c22 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Export/ProductTest.php
@@ -206,4 +206,28 @@ class ProductTest extends \PHPUnit_Framework_TestCase
         $data = $model->setWriter($exportAdapter)->export();
         $this->assertEmpty($data);
     }
+
+    /**
+     * Verify if fields wrapping works correct when "Fields Enclosure" option enabled
+     *
+     * @magentoDataFixture Magento/CatalogImportExport/_files/product_export_data.php
+     */
+    public function testExportWithFieldsEnclosure()
+    {
+        $this->model->setParameters([
+            \Magento\ImportExport\Model\Export::FIELDS_ENCLOSURE => 1
+        ]);
+
+        $this->model->setWriter(
+            $this->objectManager->create(
+                \Magento\ImportExport\Model\Export\Adapter\Csv::class
+            )
+        );
+        $exportData = $this->model->export();
+
+        $this->assertContains('""Option 2""', $exportData);
+        $this->assertContains('""Option 3""', $exportData);
+        $this->assertContains('""Option 4 """"!@#$%^&*"""', $exportData);
+        $this->assertContains('text_attribute=""!@#$%^&*()_+1234567890-=|\:;"""', $exportData);
+    }
 }
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
index a5c1f07c164156a0941b0f8da05c43bdff644b5e..9ab7db147d811d370a4c2609d5baf5ea35225680 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
@@ -1380,4 +1380,55 @@ class ProductTest extends \Magento\TestFramework\Indexer\TestCase
             array_values($actualProductSkus)
         );
     }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/multiselect_attribute_with_incorrect_values.php
+     * @magentoDataFixture Magento/Catalog/_files/product_text_attribute.php
+     * @magentoAppIsolation enabled
+     * @magentoDbIsolation enabled
+     */
+    public function testProductWithWrappedAdditionalAttributes()
+    {
+        $filesystem = $this->objectManager->create(\Magento\Framework\Filesystem::class);
+        $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
+        $source = $this->objectManager->create(
+            \Magento\ImportExport\Model\Import\Source\Csv::class,
+            [
+                'file' => __DIR__ . '/_files/products_to_import_with_additional_attributes.csv',
+                'directory' => $directory
+            ]
+        );
+        $errors = $this->_model->setParameters(
+            [
+                'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
+                'entity' => 'catalog_product',
+                \Magento\ImportExport\Model\Import::FIELDS_ENCLOSURE => 1
+            ]
+        )->setSource(
+            $source
+        )->validateData();
+
+        $this->assertTrue($errors->getErrorsCount() == 0);
+
+        $this->_model->importData();
+
+        /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
+        $productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            \Magento\Catalog\Api\ProductRepositoryInterface::class
+        );
+
+        /** @var \Magento\Eav\Api\AttributeOptionManagementInterface $multiselectOptions */
+        $multiselectOptions = $this->objectManager->get(\Magento\Eav\Api\AttributeOptionManagementInterface::class)
+            ->getItems(\Magento\Catalog\Model\Product::ENTITY, 'multiselect_attribute');
+
+        $product1 = $productRepository->get('simple1');
+        $this->assertEquals('\'", =|', $product1->getData('text_attribute'));
+        $this->assertEquals(implode(',', [$multiselectOptions[3]->getValue(), $multiselectOptions[2]->getValue()]),
+            $product1->getData('multiselect_attribute'));
+
+        $product2 = $productRepository->get('simple2');
+        $this->assertEquals('', $product2->getData('text_attribute'));
+        $this->assertEquals(implode(',', [$multiselectOptions[1]->getValue(), $multiselectOptions[2]->getValue()]),
+            $product2->getData('multiselect_attribute'));
+    }
 }
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv
new file mode 100644
index 0000000000000000000000000000000000000000..eb882be4c6bb1dcb804cd284e1ce376c31feec37
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/_files/products_to_import_with_additional_attributes.csv
@@ -0,0 +1,3 @@
+sku,product_type,name,price,attribute_set_code,categories,additional_attributes
+simple1,simple,"simple 1",25,Default,"Default Category/Category 1","text_attribute=""'"""", =|"",multiselect_attribute=""Option 3 """"!@#$%^&*, """"|""""""|""Opt||,ion 2"""
+simple2,simple,"simple 2",34,Default,"Default Category/Category 1","multiselect_attribute=""Opt|,=ion 1""|""Opt||,ion 2"",text_attribute="""""
diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php
index 52fbe5ed7b6afbbd85f65aa864c453e46810facb..a463a426dd647cde6d352be51f63bd82a59db5d1 100644
--- a/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php
+++ b/dev/tests/integration/testsuite/Magento/ImportExport/Block/Adminhtml/Export/Edit/FormTest.php
@@ -30,7 +30,11 @@ class FormTest extends \PHPUnit_Framework_TestCase
      *
      * @var array
      */
-    protected $_expectedFields = ['base_fieldset' => ['entity' => 'entity', 'file_format' => 'file_format']];
+    protected $_expectedFields = ['base_fieldset' => [
+        'entity' => 'entity',
+        'file_format' => 'file_format',
+        'fields_enclosure' => 'fields_enclosure'
+    ]];
 
     protected function setUp()
     {
diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php
index 9decf617d50ae1ca0b8c895b3d45e5c255d846cd..de9379d1494d3925590f228ea52c69934fd9bd8b 100644
--- a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php
+++ b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/ExportTest.php
@@ -84,6 +84,6 @@ class ExportTest extends \Magento\TestFramework\TestCase\AbstractBackendControll
 
         $body = $this->getResponse()->getBody();
         $this->assertSelectCount('fieldset#base_fieldset', 1, $body);
-        $this->assertSelectCount('fieldset#base_fieldset div.field', 2, $body);
+        $this->assertSelectCount('fieldset#base_fieldset div.field', 3, $body);
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php b/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php
new file mode 100644
index 0000000000000000000000000000000000000000..ea6a3c3e92e7e615740990170d218608aff99836
--- /dev/null
+++ b/lib/internal/Magento/Framework/App/Cache/Type/Dummy.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Cache\Type;
+
+use Magento\Framework\App\CacheInterface;
+
+/**
+ * Dummy cache adapter
+ *
+ * for cases when need to disable interaction with cache
+ * but no specific cache type is used
+ */
+class Dummy implements CacheInterface
+{
+    /**
+     * Required by CacheInterface
+     *
+     * @return null
+     */
+    public function getFrontend()
+    {
+        return null;
+    }
+
+    /**
+     * Pretend to load data from cache by id
+     *
+     * {@inheritdoc}
+     */
+    public function load($identifier)
+    {
+        return null;
+    }
+
+    /**
+     * Pretend to save data
+     *
+     * {@inheritdoc}
+     */
+    public function save($data, $identifier, $tags = [], $lifeTime = null)
+    {
+        return false;
+    }
+
+    /**
+     * Pretend to remove cached data by identifier
+     *
+     * {@inheritdoc}
+     */
+    public function remove($identifier)
+    {
+        return true;
+    }
+
+    /**
+     * Pretend to clean cached data by specific tag
+     *
+     * {@inheritdoc}
+     */
+    public function clean($tags = [])
+    {
+        return true;
+    }
+}
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
index 30f398b4f6000bdd2824ed19b8c625a6e4e21566..187c043945d059992d6dc59a8713fc413b1a9752 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
@@ -5,7 +5,8 @@
  */
 namespace Magento\Framework\App\Test\Unit\View\Deployment;
 
-use \Magento\Framework\App\View\Deployment\Version;
+use Magento\Framework\App\View\Deployment\Version;
+use Magento\Framework\Exception\FileSystemException;
 
 /**
  * Class VersionTest
@@ -18,29 +19,39 @@ class VersionTest extends \PHPUnit_Framework_TestCase
     private $object;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject
      */
-    private $appState;
+    private $appStateMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\View\Deployment\Version\StorageInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    private $versionStorage;
+    private $versionStorageMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $loggerMock;
 
     protected function setUp()
     {
-        $this->appState = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false);
-        $this->versionStorage = $this->getMock(\Magento\Framework\App\View\Deployment\Version\StorageInterface::class);
-        $this->object = new Version($this->appState, $this->versionStorage);
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->appStateMock = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false);
+        $this->versionStorageMock = $this->getMock(
+            \Magento\Framework\App\View\Deployment\Version\StorageInterface::class
+        );
+        $this->loggerMock = $this->getMock(\Psr\Log\LoggerInterface::class);
+        $this->object = new Version($this->appStateMock, $this->versionStorageMock);
+        $objectManager->setBackwardCompatibleProperty($this->object, 'logger', $this->loggerMock);
     }
 
     public function testGetValueDeveloperMode()
     {
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
             ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEVELOPER));
-        $this->versionStorage->expects($this->never())->method($this->anything());
+        $this->versionStorageMock->expects($this->never())->method($this->anything());
         $this->assertInternalType('integer', $this->object->getValue());
         $this->object->getValue(); // Ensure computation occurs only once and result is cached in memory
     }
@@ -51,12 +62,12 @@ class VersionTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetValueFromStorage($appMode)
     {
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
             ->will($this->returnValue($appMode));
-        $this->versionStorage->expects($this->once())->method('load')->will($this->returnValue('123'));
-        $this->versionStorage->expects($this->never())->method('save');
+        $this->versionStorageMock->expects($this->once())->method('load')->will($this->returnValue('123'));
+        $this->versionStorageMock->expects($this->never())->method('save');
         $this->assertEquals('123', $this->object->getValue());
         $this->object->getValue(); // Ensure caching in memory
     }
@@ -70,20 +81,106 @@ class VersionTest extends \PHPUnit_Framework_TestCase
         ];
     }
 
-    public function testGetValueDefaultModeSaving()
-    {
+    /**
+     * $param bool $isUnexpectedValueExceptionThrown
+     * $param bool $isFileSystemExceptionThrown
+     * @dataProvider getValueDefaultModeDataProvider
+     */
+    public function testGetValueDefaultMode(
+        $isUnexpectedValueExceptionThrown,
+        $isFileSystemExceptionThrown = null
+    ) {
         $versionType = 'integer';
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
-            ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEFAULT));
-        $storageException = new \UnexpectedValueException('Does not exist in the storage');
-        $this->versionStorage
-            ->expects($this->once())
-            ->method('load')
-            ->will($this->throwException($storageException));
-        $this->versionStorage->expects($this->once())->method('save')->with($this->isType($versionType));
+            ->willReturn(\Magento\Framework\App\State::MODE_DEFAULT);
+        if ($isUnexpectedValueExceptionThrown) {
+            $storageException = new \UnexpectedValueException('Does not exist in the storage');
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->will($this->throwException($storageException));
+            $this->versionStorageMock->expects($this->once())
+                ->method('save')
+                ->with($this->isType($versionType));
+            if ($isFileSystemExceptionThrown) {
+                $fileSystemException = new FileSystemException(
+                    new \Magento\Framework\Phrase('Can not load static content version')
+                );
+                $this->versionStorageMock
+                    ->expects($this->once())
+                    ->method('save')
+                    ->will($this->throwException($fileSystemException));
+                $this->loggerMock->expects($this->once())
+                    ->method('critical')
+                    ->with('Can not save static content version.');
+            } else {
+                $this->loggerMock->expects($this->never())
+                    ->method('critical');
+            }
+        } else {
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->willReturn(1475779229);
+            $this->loggerMock->expects($this->never())
+                ->method('critical');
+        }
         $this->assertInternalType($versionType, $this->object->getValue());
-        $this->object->getValue(); // Ensure caching in memory
+        $this->object->getValue();
+    }
+
+    /**
+     * @return array
+     */
+    public function getValueDefaultModeDataProvider()
+    {
+        return [
+            [false],
+            [true, false],
+            [true, true]
+        ];
+    }
+
+    /**
+     * @param bool $isUnexpectedValueExceptionThrown
+     * @dataProvider getValueProductionModeDataProvider
+     */
+    public function testGetValueProductionMode(
+        $isUnexpectedValueExceptionThrown
+    ) {
+        $this->appStateMock
+            ->expects($this->once())
+            ->method('getMode')
+            ->willReturn(\Magento\Framework\App\State::MODE_PRODUCTION);
+        if ($isUnexpectedValueExceptionThrown) {
+            $storageException = new \UnexpectedValueException('Does not exist in the storage');
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->will($this->throwException($storageException));
+            $this->loggerMock->expects($this->once())
+                ->method('critical')
+                ->with('Can not load static content version.');
+        } else {
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->willReturn(1475779229);
+        }
+        $this->assertInternalType('integer', $this->object->getValue());
+        $this->object->getValue();
+    }
+
+    /**
+     * @return array
+     */
+    public function getValueProductionModeDataProvider()
+    {
+        return [
+            [false],
+            [true],
+        ];
     }
 }
diff --git a/lib/internal/Magento/Framework/App/View/Deployment/Version.php b/lib/internal/Magento/Framework/App/View/Deployment/Version.php
index 8e927e47921a0c428493de2bb6e13b17407483ad..7f6dc7fa9285ccc3987d84091bc9edb76d09f794 100644
--- a/lib/internal/Magento/Framework/App/View/Deployment/Version.php
+++ b/lib/internal/Magento/Framework/App/View/Deployment/Version.php
@@ -6,6 +6,9 @@
 
 namespace Magento\Framework\App\View\Deployment;
 
+use Psr\Log\LoggerInterface;
+use Magento\Framework\Exception\FileSystemException;
+
 /**
  * Deployment version of static files
  */
@@ -26,6 +29,11 @@ class Version
      */
     private $cachedValue;
 
+    /**
+     * @var LoggerInterface
+     */
+    private $logger;
+
     /**
      * @param \Magento\Framework\App\State $appState
      * @param Version\StorageInterface $versionStorage
@@ -59,23 +67,49 @@ class Version
      */
     protected function readValue($appMode)
     {
-        switch ($appMode) {
-            case \Magento\Framework\App\State::MODE_DEFAULT:
-                try {
-                    $result = $this->versionStorage->load();
-                } catch (\UnexpectedValueException $e) {
-                    $result = (new \DateTime())->getTimestamp();
-                    $this->versionStorage->save($result);
+        if ($appMode == \Magento\Framework\App\State::MODE_DEVELOPER) {
+            $result = $this->generateVersion();
+        } else {
+            try {
+                $result = $this->versionStorage->load();
+            } catch (\UnexpectedValueException $e) {
+                $result = $this->generateVersion();
+                if ($appMode == \Magento\Framework\App\State::MODE_DEFAULT) {
+                    try {
+                        $this->versionStorage->save($result);
+                    } catch (FileSystemException $e) {
+                        $this->getLogger()->critical('Can not save static content version.');
+                    }
+                } else {
+                    $this->getLogger()->critical('Can not load static content version.');
                 }
-                break;
+            }
+        }
+        return $result;
+    }
 
-            case \Magento\Framework\App\State::MODE_DEVELOPER:
-                $result = (new \DateTime())->getTimestamp();
-                break;
+    /**
+     * Generate version of static content
+     *
+     * @return int
+     */
+    private function generateVersion()
+    {
+        return time();
+    }
 
-            default:
-                $result = $this->versionStorage->load();
+    /**
+     * Get logger
+     *
+     * @return LoggerInterface
+     * @deprecated
+     */
+    private function getLogger()
+    {
+        if ($this->logger == null) {
+            $this->logger = \Magento\Framework\App\ObjectManager::getInstance()
+                ->get(LoggerInterface::class);
         }
-        return $result;
+        return $this->logger;
     }
 }
diff --git a/lib/internal/Magento/Framework/View/Config.php b/lib/internal/Magento/Framework/View/Config.php
index 917f632323ea0cda55ab95b55cd663292b5b31d6..b72fe87c4acc4b7155437bc8b478571caa4e72b2 100644
--- a/lib/internal/Magento/Framework/View/Config.php
+++ b/lib/internal/Magento/Framework/View/Config.php
@@ -62,7 +62,7 @@ class Config implements \Magento\Framework\View\ConfigInterface
         if (isset($params['themeModel'])) {
             /** @var \Magento\Framework\View\Design\ThemeInterface $currentTheme */
             $currentTheme = $params['themeModel'];
-            $key = $currentTheme->getCode();
+            $key = $currentTheme->getFullPath();
             if (isset($this->viewConfigs[$key])) {
                 return $this->viewConfigs[$key];
             }
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
index 4295b5d3e24e73810f66e1a16e83f1d0cb6e84f1..2a09783c710e4e4c9334079a67025b452d673974 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/ConfigTest.php
@@ -40,17 +40,17 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
 
     public function testGetViewConfig()
     {
-        $themeCode = 2;
+        $themeCode = 'area/theme';
 
         $themeMock = $this->getMock(
             \Magento\Theme\Model\Theme::class,
-            ['getCode'],
+            ['getFullPath'],
             [],
             '',
             false
         );
         $themeMock->expects($this->atLeastOnce())
-            ->method('getCode')
+            ->method('getFullPath')
             ->will($this->returnValue($themeCode));
         $params = [
             'themeModel' => $themeMock,