diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Order/Create/Sidebar.php b/app/code/Magento/Bundle/Block/Adminhtml/Order/Create/Sidebar.php
new file mode 100644
index 0000000000000000000000000000000000000000..12a3d48d20c4bf596652cdd1635bfe27584cef67
--- /dev/null
+++ b/app/code/Magento/Bundle/Block/Adminhtml/Order/Create/Sidebar.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Bundle\Block\Adminhtml\Order\Create;
+
+class Sidebar
+{
+    /**
+     * Get item qty
+     *
+     * @param \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar $subject
+     * @param callable $proceed
+     * @param \Magento\Framework\DataObject $item
+     *
+     * @return string
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function aroundGetItemQty(
+        \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar $subject,
+        \Closure $proceed,
+        \Magento\Framework\DataObject $item
+    ) {
+        if ($item->getProduct()->getTypeId() == \Magento\Bundle\Model\Product\Type::TYPE_CODE) {
+            return '';
+        }
+        return $proceed($item);
+    }
+
+    /**
+     * Check whether product configuration is required before adding to order
+     *
+     * @param \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar $subject
+     * @param callable $proceed
+     * @param string $productType
+     *
+     * @return bool
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function aroundIsConfigurationRequired(
+        \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar $subject,
+        \Closure $proceed,
+        $productType
+    ) {
+        if ($productType == \Magento\Bundle\Model\Product\Type::TYPE_CODE) {
+            return true;
+        }
+        return $proceed($productType);
+    }
+}
diff --git a/app/code/Magento/Bundle/Model/Product/Type.php b/app/code/Magento/Bundle/Model/Product/Type.php
index 65742f76f261fc8d391bc992d7d56db848307148..2270f6cb149eb9dc14c15bc097824673cad24bc8 100644
--- a/app/code/Magento/Bundle/Model/Product/Type.php
+++ b/app/code/Magento/Bundle/Model/Product/Type.php
@@ -19,6 +19,11 @@ use Magento\Framework\Pricing\PriceCurrencyInterface;
  */
 class Type extends \Magento\Catalog\Model\Product\Type\AbstractType
 {
+    /**
+     * Product type
+     */
+    const TYPE_CODE = 'bundle';
+
     /**
      * Product is composite
      *
diff --git a/app/code/Magento/Bundle/etc/adminhtml/di.xml b/app/code/Magento/Bundle/etc/adminhtml/di.xml
index 0270ff9164b5980aa8c6b8b62c32bcea0e21a628..91970a4cdd9f3a145faff60f4d877bcba563ceda 100644
--- a/app/code/Magento/Bundle/etc/adminhtml/di.xml
+++ b/app/code/Magento/Bundle/etc/adminhtml/di.xml
@@ -9,6 +9,9 @@
     <type name="Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper">
         <plugin name="Bundle" type="Magento\Bundle\Controller\Adminhtml\Product\Initialization\Helper\Plugin\Bundle" sortOrder="60" />
     </type>
+    <type name="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar">
+        <plugin name="Bundle" type="Magento\Bundle\Block\Adminhtml\Order\Create\Sidebar" sortOrder="200"/>
+    </type>
     <type name="Magento\Catalog\Model\Product\CopyConstructor\Composite">
         <arguments>
             <argument name="constructors" xsi:type="array">
diff --git a/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php b/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
index 58de2b262c8ab7489b6f37691e592484dd7d624b..ab061a2c756c3a5a4eb5aa312312459e163720a1 100644
--- a/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
+++ b/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
@@ -55,6 +55,9 @@ class ColumnFactory
             'dataType' => $this->getDataType($attribute),
             'add_field' => true,
             'visible' => $attribute->getIsVisibleInGrid(),
+            'filter' => ($attribute->getIsFilterableInGrid())
+                ? $this->getFilterType($attribute->getFrontendInput())
+                : null,
         ], $config);
 
         if ($attribute->usesSource()) {
@@ -92,4 +95,17 @@ class ColumnFactory
             ? $this->dataTypeMap[$attribute->getFrontendInput()]
             : $this->dataTypeMap['default'];
     }
+
+    /**
+     * Retrieve filter type by $frontendInput
+     *
+     * @param string $frontendInput
+     * @return string
+     */
+    protected function getFilterType($frontendInput)
+    {
+        $filtersMap = ['date' => 'dateRange'];
+        $result = array_replace_recursive($this->dataTypeMap, $filtersMap);
+        return isset($result[$frontendInput]) ? $result[$frontendInput] : $result['default'];
+    }
 }
diff --git a/app/code/Magento/CustomerImportExport/Model/Import/Customer.php b/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
index ef92b5194c5d004e1fbbaa8bc4b86f0c14a78292..513c2a703b5d439ac5df946d9129af9cbce44819 100644
--- a/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
+++ b/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
@@ -377,7 +377,9 @@ class Customer extends AbstractCustomer
                 $attributeParameters = $this->_attributes[$attributeCode];
 
                 if ('select' == $attributeParameters['type']) {
-                    $value = $attributeParameters['options'][strtolower($value)];
+                    $value = isset($attributeParameters['options'][strtolower($value)])
+                        ? $attributeParameters['options'][strtolower($value)]
+                        : 0;
                 } elseif ('datetime' == $attributeParameters['type']) {
                     $value = (new \DateTime())->setTimestamp(strtotime($value));
                     $value = $value->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT);
diff --git a/app/code/Magento/Newsletter/Model/Queue/TransportBuilder.php b/app/code/Magento/Newsletter/Model/Queue/TransportBuilder.php
index 7ee8fc1c9f6aad5c28d8dd2e1f67f355ad23af8e..781c181eb903a4d6216a4da6fb0ca1ab6d6a3412 100644
--- a/app/code/Magento/Newsletter/Model/Queue/TransportBuilder.php
+++ b/app/code/Magento/Newsletter/Model/Queue/TransportBuilder.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Newsletter\Model\Queue;
 
+use Magento\Email\Model\AbstractTemplate;
+
 class TransportBuilder extends \Magento\Framework\Mail\Template\TransportBuilder
 {
     /**
@@ -26,17 +28,30 @@ class TransportBuilder extends \Magento\Framework\Mail\Template\TransportBuilder
         return $this;
     }
 
+    /**
+     * @param AbstractTemplate $template
+     * @return void
+     */
+    protected function setTemplateFilter(AbstractTemplate $template)
+    {
+        if (isset($this->templateData['template_filter'])) {
+            $template->setTemplateFilter($this->templateData['template_filter']);
+        }
+    }
+
     /**
      * @inheritdoc
      */
     protected function prepareMessage()
     {
+        /** @var AbstractTemplate $template */
         $template = $this->getTemplate()->setData($this->templateData);
+        $this->setTemplateFilter($template);
 
         $this->message->setMessageType(
             \Magento\Framework\Mail\MessageInterface::TYPE_HTML
         )->setBody(
-            $template->getProcessedTemplate()
+            $template->getProcessedTemplate($this->templateVars)
         )->setSubject(
             $template->getSubject()
         );
diff --git a/app/code/Magento/Newsletter/Model/Template/Filter.php b/app/code/Magento/Newsletter/Model/Template/Filter.php
index 43a68d085bbf9a1b079f8751d5a5d52a99b910ff..0a2abbcacfd6ce468b345f20d841f337ef168dcf 100644
--- a/app/code/Magento/Newsletter/Model/Template/Filter.php
+++ b/app/code/Magento/Newsletter/Model/Template/Filter.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Newsletter\Model\Template;
 
-class Filter extends \Magento\Widget\Model\Template\Filter
+class Filter extends \Magento\Widget\Model\Template\FilterEmulate
 {
     /**
      * Generate widget HTML if template variables are assigned
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
index 52a501f9ef3b6b15fd72079266db9629fef8fa98..dd7ff0eac5fb90056221ad1c244dc8ba69992f97 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
@@ -32,11 +32,13 @@ class TransportBuilderTest extends \Magento\Framework\Mail\Test\Unit\Template\Tr
         $messageType = MessageInterface::TYPE_HTML,
         $bodyText = '<h1>Html message</h1>'
     ) {
+        $filter = $this->getMock('Magento\Email\Model\Template\Filter', [], [], '', false);
         $data = [
             'template_subject' => 'Email Subject',
             'template_text' => $bodyText,
             'template_styles' => 'Styles',
             'template_type' => $templateType,
+            'template_filter' => $filter,
         ];
         $vars = ['reason' => 'Reason', 'customer' => 'Customer'];
         $options = ['area' => 'frontend', 'store' => 1];
@@ -52,8 +54,14 @@ class TransportBuilderTest extends \Magento\Framework\Mail\Test\Unit\Template\Tr
             $this->returnSelf()
         );
         $template->expects($this->once())->method('getSubject')->will($this->returnValue('Email Subject'));
-        $template->expects($this->once())->method('getProcessedTemplate')->will($this->returnValue($bodyText));
         $template->expects($this->once())->method('setData')->with($this->equalTo($data))->will($this->returnSelf());
+        $template->expects($this->once())
+            ->method('getProcessedTemplate')
+            ->with($vars)
+            ->will($this->returnValue($bodyText));
+        $template->expects($this->once())
+            ->method('setTemplateFilter')
+            ->with($filter);
 
         $this->templateFactoryMock->expects(
             $this->once()
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/Template/FilterTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/Template/FilterTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c099b048f07ad7c42d6c31e8fc7b50c4db65c864
--- /dev/null
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/Template/FilterTest.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Newsletter\Test\Unit\Model\Template;
+
+class FilterTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Newsletter\Model\Template\Filter
+     */
+    protected $filter;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManager;
+
+    /**
+     * @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $appState;
+
+    public function setUp()
+    {
+        $scopeConfig = $this->getMockForAbstractClass(
+            '\Magento\Framework\App\Config\ScopeConfigInterface',
+            [],
+            '',
+            false
+        );
+        $this->storeManager = $this->getMockForAbstractClass(
+            '\Magento\Store\Model\StoreManagerInterface',
+            [],
+            '',
+            false
+        );
+        $logger = $this->getMockForAbstractClass('\Psr\Log\LoggerInterface', [], '', false);
+        $layout = $this->getMockForAbstractClass('\Magento\Framework\View\LayoutInterface', [], '', false);
+        $urlModel = $this->getMockForAbstractClass('\Magento\Framework\UrlInterface', [], '', false);
+        $string = $this->getMock('\Magento\Framework\Stdlib\StringUtils', [], [], '', false);
+        $escaper = $this->getMock('\Magento\Framework\Escaper', [], [], '', false);
+        $assetRepo = $this->getMock('\Magento\Framework\View\Asset\Repository', [], [], '', false);
+        $coreVariableFactory = $this->getMock('\Magento\Variable\Model\VariableFactory', ['create'], [], '', false);
+        $layoutFactory = $this->getMock('\Magento\Framework\View\LayoutFactory', ['create'], [], '', false);
+        $this->appState = $this->getMock('\Magento\Framework\App\State', [], [], '', false);
+        $emogrifier = $this->getMock('\Pelago\Emogrifier', [], [], '', false);
+        $configVariables = $this->getMock('\Magento\Email\Model\Source\Variables', [], [], '', false);
+        $widgetResource = $this->getMock('\Magento\Widget\Model\ResourceModel\Widget', [], [], '', false);
+        $widget = $this->getMock('\Magento\Widget\Model\Widget', [], [], '', false);
+
+        $this->filter = new \Magento\Newsletter\Model\Template\Filter(
+            $string,
+            $logger,
+            $escaper,
+            $assetRepo,
+            $scopeConfig,
+            $coreVariableFactory,
+            $this->storeManager,
+            $layout,
+            $layoutFactory,
+            $this->appState,
+            $urlModel,
+            $emogrifier,
+            $configVariables,
+            $widgetResource,
+            $widget
+        );
+
+    }
+
+    public function testWidgetDirective()
+    {
+        $subscriber = $this->getMock('\Magento\Newsletter\Model\Subscriber', [], [], '', false);
+        $this->filter->setVariables(['subscriber' => $subscriber]);
+
+        $construction = '{{widget type="\Magento\Cms\Block\Widget\Page\Link" page_id="1"}}';
+
+        $store = $this->getMockForAbstractClass('Magento\Store\Api\Data\StoreInterface', [], '', false);
+        $store->expects($this->once())
+            ->method('getId')
+            ->willReturn(1);
+        $this->storeManager->expects($this->once())
+            ->method('getStore')
+            ->willReturn($store);
+        $this->appState->expects($this->once())
+            ->method('emulateAreaCode')
+            ->with(
+                'frontend',
+                [$this->filter, 'generateWidget'],
+                [
+                    [
+                        1 => $construction,
+                        2 => 'type="\Magento\Cms\Block\Widget\Page\Link" page_id="1" store_id ="1"'
+                    ]
+                ]
+            )
+            ->willReturn(
+                '<div class="widget block block-cms-link-inline">
+                    <a href="http://magento.test/">
+                        <span>Home page</span>
+                    </a>
+                </div>'
+            );
+
+        $this->filter->widgetDirective([
+                1 => $construction,
+                2 => 'type="\Magento\Cms\Block\Widget\Page\Link" page_id="1"'
+            ]);
+    }
+
+    public function testWidgetDirectiveWithoutRequiredVariable()
+    {
+        $construction = '{{widget type="\Magento\Cms\Block\Widget\Page\Link" page_id="1"}}';
+
+        $this->storeManager->expects($this->never())
+            ->method('getStore');
+        $result = $this->filter->widgetDirective(
+            [
+                0 => $construction,
+                1 => 'type="\Magento\Cms\Block\Widget\Page\Link" page_id="1"'
+            ]
+        );
+
+        $this->assertEquals($construction, $result);
+    }
+}