diff --git a/app/code/Magento/Backup/Model/Db.php b/app/code/Magento/Backup/Model/Db.php
index 776141249f92bc40dc448ff50fe443f7affd8891..98b04149cc7ead396c968b09168a6a319402846b 100644
--- a/app/code/Magento/Backup/Model/Db.php
+++ b/app/code/Magento/Backup/Model/Db.php
@@ -173,6 +173,7 @@ class Db implements \Magento\Framework\Backup\Db\BackupDbInterface
             }
         }
         $backup->write($this->getResource()->getTableForeignKeysSql());
+        $backup->write($this->getResource()->getTableTriggersSql());
         $backup->write($this->getResource()->getFooter());
 
         $this->getResource()->commitTransaction();
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Db.php b/app/code/Magento/Backup/Model/ResourceModel/Db.php
index 3fbaf44ebb063bc275c735cf7479d64a1b81305f..f50a3c5b091ad2a7b5b891cfb0143d0055e51092 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Db.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Db.php
@@ -114,6 +114,30 @@ class Db
         return $fkScript;
     }
 
+    /**
+     * Return triggers fro table(s)
+     *
+     * @param string|null $tableName
+     * @param bool $addDropIfExists
+     * @return string
+     */
+    public function getTableTriggersSql($tableName = null, $addDropIfExists = true)
+    {
+        $triggerScript = '';
+        if (!$tableName) {
+            $tables = $this->getTables();
+            foreach ($tables as $table) {
+                $tableTriggerScript = $this->_resourceHelper->getTableTriggersSql($table, $addDropIfExists);
+                if (!empty($tableTriggerScript)) {
+                    $triggerScript .= "\n" . $tableTriggerScript;
+                }
+            }
+        } else {
+            $triggerScript = $this->getTableTriggersSql($tableName, $addDropIfExists);
+        }
+        return $triggerScript;
+    }
+
     /**
      * Retrieve table status
      *
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Helper.php b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
index b5418865339c34fb3826cde0672fc2cb4c5a9891..6d7084a87546c189034b79b3da6f6a560cc9ebe3 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Helper.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
@@ -337,4 +337,40 @@ class Helper extends \Magento\Framework\DB\Helper
     {
         $this->getConnection()->query('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
     }
+
+    /**
+     * Get create script for triggers
+     *
+     * @param string $tableName
+     * @param boolean $addDropIfExists
+     * @param boolean $stripDefiner
+     * @return string
+     */
+    public function getTableTriggersSql($tableName, $addDropIfExists = false, $stripDefiner = true)
+    {
+        $script = "--\n-- Triggers structure for table `{$tableName}`\n--\n";
+        $triggers = $this->getConnection()->query('SHOW TRIGGERS LIKE \''. $tableName . '\'')->fetchAll();
+
+        if (!$triggers) {
+            return '';
+        }
+        foreach ($triggers as $trigger) {
+            if ($addDropIfExists) {
+                $script .= 'DROP TRIGGER IF EXISTS ' . $trigger['Trigger'] . ";\n";
+            }
+            $script .= "delimiter ;;\n";
+
+            $triggerData = $this->getConnection()->query('SHOW CREATE TRIGGER '. $trigger['Trigger'])->fetch();
+            if ($stripDefiner) {
+                $cleanedScript = preg_replace('/DEFINER=[^\s]*/', '', $triggerData['SQL Original Statement']);
+                $script .= $cleanedScript . "\n";
+            } else {
+                $script .= $triggerData['SQL Original Statement'] . "\n";
+            }
+            $script .= ";;\n";
+            $script .= "delimiter ;\n";
+        }
+
+        return $script;
+    }
 }
diff --git a/app/code/Magento/Customer/Setup/UpgradeData.php b/app/code/Magento/Customer/Setup/UpgradeData.php
index b5aba18a92f2871b442393246cc7d0dab78dddeb..0ad36b1d6d11c35f55f2ebc15d05a8a36cd60ac1 100644
--- a/app/code/Magento/Customer/Setup/UpgradeData.php
+++ b/app/code/Magento/Customer/Setup/UpgradeData.php
@@ -159,6 +159,10 @@ class UpgradeData implements UpgradeDataInterface
             $this->upgradeVersionTwoZeroTwelve($customerSetup);
         }
 
+        if (version_compare($context->getVersion(), '2.0.13', '<')) {
+            $this->upgradeVersionTwoZeroThirteen($customerSetup);
+        }
+
         $indexer = $this->indexerRegistry->get(Customer::CUSTOMER_GRID_INDEXER_ID);
         $indexer->reindexAll();
         $this->eavConfig->clear();
@@ -663,4 +667,36 @@ class UpgradeData implements UpgradeDataInterface
             ['path = ?' => \Magento\Customer\Model\Customer::XML_PATH_CUSTOMER_RESET_PASSWORD_LINK_EXPIRATION_PERIOD]
         );
     }
+
+    /**
+     * @param CustomerSetup $customerSetup
+     */
+    private function upgradeVersionTwoZeroThirteen(CustomerSetup $customerSetup)
+    {
+        $entityAttributes = [
+            'customer_address' => [
+                'firstname' => [
+                    'input_filter' => 'trim'
+                ],
+                'lastname' => [
+                    'input_filter' => 'trim'
+                ],
+                'middlename' => [
+                    'input_filter' => 'trim'
+                ],
+            ],
+            'customer' => [
+                'firstname' => [
+                    'input_filter' => 'trim'
+                ],
+                'lastname' => [
+                    'input_filter' => 'trim'
+                ],
+                'middlename' => [
+                    'input_filter' => 'trim'
+                ],
+            ],
+        ];
+        $this->upgradeAttributes($entityAttributes, $customerSetup);
+    }
 }
diff --git a/app/code/Magento/Customer/etc/module.xml b/app/code/Magento/Customer/etc/module.xml
index 3f0d42b12649ae4e096808e126566498289ce19a..2dfe561d0da8fb8afb17db8e8ddd24f96938acbf 100644
--- a/app/code/Magento/Customer/etc/module.xml
+++ b/app/code/Magento/Customer/etc/module.xml
@@ -6,7 +6,7 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
-    <module name="Magento_Customer" setup_version="2.0.12">
+    <module name="Magento_Customer" setup_version="2.0.13">
         <sequence>
             <module name="Magento_Eav"/>
             <module name="Magento_Directory"/>
diff --git a/app/code/Magento/Payment/view/adminhtml/templates/info/substitution.phtml b/app/code/Magento/Payment/view/adminhtml/templates/info/substitution.phtml
index ad24b113ffdead50ef0443fa609123b42b5e063f..582b8ca8a24bec1d5646812a38d77ee61d39f2ff 100644
--- a/app/code/Magento/Payment/view/adminhtml/templates/info/substitution.phtml
+++ b/app/code/Magento/Payment/view/adminhtml/templates/info/substitution.phtml
@@ -10,6 +10,8 @@
  */
 ?>
 <div>
-    <?php $block->escapeHtml($block->getMethod()->getTitle());?>
+    <?= $block->getMethod()->getTitle()
+        ? $block->escapeHtml($block->getMethod()->getTitle())
+        : $block->escapeHtml(__('Payment method')); ?>
     <?= $block->escapeHtml(__(' is not available. You still can process offline actions.')) ?>
 </div>
diff --git a/app/code/Magento/Sales/view/frontend/templates/email/creditmemo/items.phtml b/app/code/Magento/Sales/view/frontend/templates/email/creditmemo/items.phtml
index 297e31d6d2c981151b1b7f6c5edbd109782d763e..8cef5d57664a9c139a1f3fd423f6d69d2523734c 100644
--- a/app/code/Magento/Sales/view/frontend/templates/email/creditmemo/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/email/creditmemo/items.phtml
@@ -25,14 +25,11 @@
             </tr>
         </thead>
         <?php foreach ($_creditmemo->getAllItems() as $_item): ?>
-            <?php
-                if ($_item->getOrderItem()->getParentItem()) {
-                    continue;
-                }
-            ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem())  : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
         <tfoot class="order-totals">
             <?= $block->getChildHtml('creditmemo_totals') ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/email/invoice/items.phtml b/app/code/Magento/Sales/view/frontend/templates/email/invoice/items.phtml
index 10e07d1365470ed9a2de75a4c9e220d35fd27784..4c377dea47da2768d1443172dd8ceb1f8063ddcc 100644
--- a/app/code/Magento/Sales/view/frontend/templates/email/invoice/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/email/invoice/items.phtml
@@ -25,14 +25,11 @@
             </tr>
         </thead>
         <?php foreach ($_invoice->getAllItems() as $_item): ?>
-            <?php
-                if ($_item->getOrderItem()->getParentItem()) {
-                    continue;
-                }
-            ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem()) : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
         <tfoot class="order-totals">
             <?= $block->getChildHtml('invoice_totals') ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/email/items.phtml b/app/code/Magento/Sales/view/frontend/templates/email/items.phtml
index 358264463d49a67f1c83b3ab6fb0215af1bca77c..37469582865dc8e3c6288d97cef14fc792e0c038 100644
--- a/app/code/Magento/Sales/view/frontend/templates/email/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/email/items.phtml
@@ -25,14 +25,11 @@
             </tr>
         </thead>
         <?php foreach ($_items as $_item): ?>
-            <?php
-                if ($_item->getParentItem()) {
-                    continue;
-                }
-            ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
+            <?php if (!$_item->getParentItem()) : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
         <tfoot class="order-totals">
             <?= $block->getChildHtml('order_totals') ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/email/shipment/items.phtml b/app/code/Magento/Sales/view/frontend/templates/email/shipment/items.phtml
index 2d2b7b2c2b26ee5afcdb0f49150e3f5584571db7..022511ae3cfd0304b93195144c319d93d99d1988 100644
--- a/app/code/Magento/Sales/view/frontend/templates/email/shipment/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/email/shipment/items.phtml
@@ -22,14 +22,11 @@
             </tr>
         </thead>
         <?php foreach ($_shipment->getAllItems() as $_item): ?>
-            <?php
-                if ($_item->getOrderItem()->getParentItem()) {
-                    continue;
-                }
-            ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem()) : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
     </table>
 <?php endif; ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
index ddd623a7b97032e9d2a9434db2c8707e2fca9263..dc2cf2433ac8dd6cb1962ac4843769913f774a52 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
@@ -41,12 +41,11 @@
         </thead>
         <?php $_items = $_creditmemo->getAllItems(); ?>
         <?php foreach ($_items as $_item): ?>
-        <?php if ($_item->getOrderItem()->getParentItem()) {
-    continue;
-} ?>
-        <tbody>
-            <?= $block->getItemHtml($_item) ?>
-        </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem()): ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
         <tfoot>
             <?= $block->getTotalsHtml($_creditmemo) ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
index 58ce8bff0b9bf4bbffab76ec1df52669b5c8bbdb..0f3236ec25bc30b20ed8061923dda5b13bb09014 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
@@ -38,12 +38,11 @@
         </thead>
         <?php $_items = $_invoice->getAllItems(); ?>
         <?php foreach ($_items as $_item): ?>
-        <?php if ($_item->getOrderItem()->getParentItem()) {
-    continue;
-} ?>
-        <tbody>
-            <?= $block->getItemHtml($_item) ?>
-        </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem()) : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
         <tfoot>
             <?= $block->getInvoiceTotalsHtml($_invoice) ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
index 75f210d46bb7f03d012ed65c0d4fc0736d2bf1c9..567dfc20f2de270ec5d03a84d0fc3b9d6ea6c7b7 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
@@ -35,12 +35,11 @@
             </thead>
             <?php $_items = $_creditmemo->getAllItems(); ?>
             <?php foreach ($_items as $_item): ?>
-            <?php if ($_item->getOrderItem()->getParentItem()): ?>
-                continue;
-            <?php endif; ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
+                <?php if (!$_item->getOrderItem()->getParentItem()): ?>
+                    <tbody>
+                        <?= $block->getItemHtml($_item) ?>
+                    </tbody>
+                <?php endif; ?>
             <?php endforeach; ?>
             <tfoot>
                 <?= $block->getTotalsHtml($_creditmemo) ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
index db6b7ba5ba74ddb219bc181316a8f50c81d2747c..6fe6da9e7520962da97e7a67b9b1f36c8113d204 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
@@ -33,12 +33,11 @@
             </thead>
             <?php $_items = $_invoice->getItemsCollection(); ?>
             <?php foreach ($_items as $_item): ?>
-                <?php if ($_item->getOrderItem()->getParentItem()): ?>
-                    continue;
+                <?php if (!$_item->getOrderItem()->getParentItem()): ?>
+                    <tbody>
+                        <?= $block->getItemHtml($_item) ?>
+                    </tbody>
                 <?php endif; ?>
-            <tbody>
-                <?= $block->getItemHtml($_item) ?>
-            </tbody>
             <?php endforeach; ?>
             <tfoot>
                 <?= $block->getInvoiceTotalsHtml($_invoice) ?>
diff --git a/app/code/Magento/Shipping/view/frontend/templates/items.phtml b/app/code/Magento/Shipping/view/frontend/templates/items.phtml
index 197823b1e0764806a8caf41abe5497b17452863f..ebc6163a7bd06dfe4427444fc66f46bed46cf40b 100644
--- a/app/code/Magento/Shipping/view/frontend/templates/items.phtml
+++ b/app/code/Magento/Shipping/view/frontend/templates/items.phtml
@@ -67,12 +67,11 @@
         </thead>
         <?php $_items = $_shipment->getAllItems(); ?>
         <?php foreach ($_items as $_item): ?>
-        <?php if ($_item->getOrderItem()->getParentItem()) {
-    continue;
-} ?>
-        <tbody>
-            <?= $block->getItemHtml($_item) ?>
-        </tbody>
+            <?php if (!$_item->getOrderItem()->getParentItem()) : ?>
+                <tbody>
+                    <?= $block->getItemHtml($_item) ?>
+                </tbody>
+            <?php endif; ?>
         <?php endforeach; ?>
     </table>
 </div>
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/region.js b/app/code/Magento/Ui/view/base/web/js/form/element/region.js
index 1b2ce8889af10112ddcd654a875e73c4823576ea..0edb4c1966b54e7f81fe921177e0d26f198d3697 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/region.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/region.js
@@ -35,6 +35,11 @@ define([
                 return;
             }
             option = options[value];
+
+            if (typeof option === 'undefined') {
+                return;
+            }
+
             defaultPostCodeResolver.setUseDefaultPostCode(!option['is_zipcode_optional']);
 
             if (this.skipValidation) {
diff --git a/app/design/adminhtml/Magento/backend/web/css/source/_structure.less b/app/design/adminhtml/Magento/backend/web/css/source/_structure.less
index 098d43e25757efe6ea6dd04ab468e86db4a0f08e..a74642152ec33dbf907b85e4cd258bacea856513 100644
--- a/app/design/adminhtml/Magento/backend/web/css/source/_structure.less
+++ b/app/design/adminhtml/Magento/backend/web/css/source/_structure.less
@@ -36,6 +36,7 @@ body {
 //  ToDo UI: should be moved to messages
 .notices-wrapper {
     margin: 0 3rem;
+    min-height: 5rem;
     .messages {
         margin-bottom: 0;
     }
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/_module.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/_module.less
index 51b02a76d0d49dcd78b159e8f636242224e6926b..2dd8463308a2cecf51ebe52f27bc7e2c5a044ef7 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/_module.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/_module.less
@@ -497,6 +497,16 @@
         }
     }
 
+    //
+    //  Category page 1 column layout
+    //  ---------------------------------------------
+
+    .catalog-category-view.page-layout-1column {
+        .column.main {
+            min-height: inherit;
+        }
+    }
+
 }
 
 //
diff --git a/app/design/frontend/Magento/luma/Magento_Catalog/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_Catalog/web/css/source/_module.less
index 92225804ecc044166f2792ced298159ebb0bd617..6f7da202c16e62f7c303627781ef7902f1b834a8 100644
--- a/app/design/frontend/Magento/luma/Magento_Catalog/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_Catalog/web/css/source/_module.less
@@ -566,6 +566,16 @@
             }
         }
     }
+
+    //
+    //  Category page 1 column layout
+    //  ---------------------------------------------
+
+    .catalog-category-view.page-layout-1column {
+        .column.main {
+            min-height: inherit;
+        }
+    }
 }
 
 //
diff --git a/app/design/frontend/Magento/luma/Magento_Newsletter/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_Newsletter/web/css/source/_module.less
index 94d7c7e4e5bff5618351cf61e2b8f54176f57197..9ccd6c190ec0ef480f1cf5ba0ce6322b11ef3f87 100644
--- a/app/design/frontend/Magento/luma/Magento_Newsletter/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_Newsletter/web/css/source/_module.less
@@ -67,6 +67,7 @@
             border-bottom-left-radius: 0;
             border-top-left-radius: 0;
             margin-left: -1px;
+            white-space: nowrap;
         }
     }
 }
diff --git a/dev/tests/api-functional/testsuite/Magento/Customer/Api/CustomerMetadataTest.php b/dev/tests/api-functional/testsuite/Magento/Customer/Api/CustomerMetadataTest.php
index 4ee936f83f537c0940f04fb2dae19680ae8d2736..f2632aa1481e4752e47e2af03ace6e51660c2a97 100644
--- a/dev/tests/api-functional/testsuite/Magento/Customer/Api/CustomerMetadataTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/Customer/Api/CustomerMetadataTest.php
@@ -63,7 +63,7 @@ class CustomerMetadataTest extends WebapiAbstract
                 Customer::FIRSTNAME,
                 [
                     AttributeMetadata::FRONTEND_INPUT   => 'text',
-                    AttributeMetadata::INPUT_FILTER     => '',
+                    AttributeMetadata::INPUT_FILTER     => 'trim',
                     AttributeMetadata::STORE_LABEL      => 'First Name',
                     AttributeMetadata::MULTILINE_COUNT  => 0,
                     AttributeMetadata::VALIDATION_RULES => [
diff --git a/lib/internal/Magento/Framework/Data/Form/Filter/Trim.php b/lib/internal/Magento/Framework/Data/Form/Filter/Trim.php
new file mode 100644
index 0000000000000000000000000000000000000000..0dbbcf6dbf8d056902f8be9193c2b7b0ed65d363
--- /dev/null
+++ b/lib/internal/Magento/Framework/Data/Form/Filter/Trim.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/**
+ * Form Input/Output Trim Filter
+ *
+ * @author      Magento Core Team <core@magentocommerce.com>
+ */
+namespace Magento\Framework\Data\Form\Filter;
+
+class Trim implements \Magento\Framework\Data\Form\Filter\FilterInterface
+{
+    /**
+     * Returns the result of filtering $value
+     *
+     * @param string $value
+     * @return string
+     */
+    public function inputFilter($value)
+    {
+        return trim($value, ' ');
+    }
+
+    /**
+     * Returns the result of filtering $value
+     *
+     * @param string $value
+     * @return string
+     */
+    public function outputFilter($value)
+    {
+        return $value;
+    }
+}