You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Patch code and release notes published on December 12, 2017.
Release notes updated on January 5, 2018.
We are pleased to present Magento Commerce 2.2.2. This release includes new tools and numerous functional fixes and enhancements, plus a substantial number of contributions from the wider Magento community.
Highlights
Look for the following highlights in this release:
Significant new features that streamline the customer experience and provide merchants with greater insight into their online business.
Numerous fixes and enhancements to core features, including significant improvements to the payment process.
Ninety-six community-submitted bug fixes and multiple pull requests.
New Features
Advanced Reporting powered by Magento Business Intelligence. Access easy-to-use order, product, and customer reports right from the Magento Admin to gain new insights and enable data-driven decision making. See [Advanced Reporting]({{ site.baseurl }}/guides/v2.2/advanced-reporting/overview.html) for more information.
Magento Shipping (powered by Temando). This new feature provides integrated advanced multi-carrier shipping and fulfillment. (In addition to these release notes, you can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html).)
Streamlined Instant Purchase checkout (contributed by Creatuity). Our new streamlined Instant Purchase option uses previously stored payment credentials and shipping information to bypass steps in the checkout process. See [Instant Purchase module]({{ site.baseurl }}/guides/v2.2/mrg/ce/instant-purchase/) for more information.
Integrated dotmailer marketing automation software. Magento is one of the first ecommerce solutions to include the dotmailer marketing automation with their core product. See Email Marketing Automation.
Magento Functional Testing Framework. The Magento Functional Testing Framework (MFTF) is our open-source, cross-platform testing solution. Its purpose is to facilitate functional testing and minimize efforts to perform regression testing. See [Introduction to Magento Functional Testing Framework]({{ site.baseurl }}/mftf/2.2/introduction.html).
Looking for more information on these new features as well as many others? Check out [Magento 2.2 Developer Documentation]({{ site.baseurl }}/guides/v2.2/) and the Magento Commerce User Guide.
Fixes and enhancements
Significant enhancements for payment methods. We've added support for the Indian Rupee (INR) to PayPal Express Checkout. We've also added a fix for an issue where some Braintree refunds did not work.
Improvements to multi-storeview sites. Switching store views multiple times no longer results in an error on the storefront.
New functionality for the command-line interface. We've added interactivity to the admin:user:create command and added the ability to handle CLI setup interactively (with prompts).
You can now use the Enter key (in addition to a mouse click) to search tables in the Admin.
Magento no longer creates duplicate shipments when merchants create shipments with bundled products via API.
Fixed issues
Installation, setup, and deployment
* We've increased the `memory_limit` of the `.user.ini` files to 2GB. [GitHub-11322](magento/magento2#11322)
* The contents of the `js-translation.json` files are now correct when you deploy static content with multiple locales.
* All cron dates are now saved in a single format and displayed according to user preference or needs. [GitHub-4237](magento/magento2#4237)
* Static versioning and minification no longer break email font styles. [GitHub-8241](magento/magento2#8241)
* You can now successfully upgrade from 2.1.x to 2.2.0. Previously, when you tried to upgrade from 2.1.9 to 2.2.0, Magento displayed the **postcode is a required field** error message, and `setup:upgrade` failed. *Fix submitted by [Mr. Lewis](https://github.com/lewisvoncken) in pull request 11651*. [GitHub-11095](magento/magento2#11095)
* We've replaced `FollowSymLinks` with `SymLinksIfOwnerMatch` in the `htaccess` templates. [GitHub-10811](magento/magento2#10811)
* The `htaccess` template now supports `apache2.4` commands. *Fix submitted by [Jonas Hünig](https://github.com/jonashrem) in pull request 11459*. [GitHub-10810](magento/magento2#10810) [GitHub-10810](magento/magento2#10810)
* `configVariables` now contains a variable for VAT numbers. *Fix submitted by [Jeroen](https://github.com/JeroenVanLeusden) in pull request 11486*. [GitHub-10996](magento/magento2#10996)
* We've fixed an issue with using the command line to install or remove `crontab`. Previously, installing or removing `crontab` via the command line appended `2>&1` to entries, even those not related to Magento. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11591*. [GitHub-11586](magento/magento2#11586)
* You can now install and uninstall `cron` via the `bin/magento cron:install` command. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11359*.
* The `admin:user:create` command now recognizes the configured table prefix. *Fix submitted by [Oscar Recio](https://github.com/osrecio) in pull request 11199*. [GitHub-11176](magento/magento2#11176)
* The default cron success or failure history is now seven days. *Fix submitted by [Max Chadwick](https://github.com/mpchadwick) in pull request 11505*.
* The `admin:user:create` command now asks for the input value if a required option is not passed. *Fix submitted by [Christian Münch](https://github.com/cmuench) in pull request 11510*.
* The `.user.ini` files at `/.user.ini` and `/pub/.user.ini` now specify a `memory_limit` value of at least 1G to 2G for debugging purposes. *Fix submitted by [Mr. Lewis](https://github.com/lewisvoncken) in pull request 11734*. [GitHub-11322](magento/magento2#11322)
* The `setup:install` command now has an `-i` flag. It validates parameters interactively. *Fix submitted by [Denis Ristic](https://github.com/denisristic) in pull request 11425*.
* Magento now restarts cron jobs as needed after a cron job was terminated during execution.
Catalog
* You can now enter strings that exceed 255 characters in Admin or frontend input fields. Previously, Magento saved only the first 255 characters of a long input string. [GitHub-6238](magento/magento2#6238)
* Magento now renders color attribute swatches correctly for the search result page if sorting for color attribute is enabled. *Fix submitted by [Roman K.](https://github.com/RomaKis) in pull request 12077*. [GitHub-10628](magento/magento2#10628)
* The `\Magento\Quote\Model\ResourceModel\Quote\Item\Collection` now returns items that have only existing relations in the `catalog_product_entity` table. Previously, Magento loaded quote items with non-existing products.
* Magento no longer duplicates attribute option values. Previously, Magento did not confirm the uniqueness of an attribute option value if you created it using REST. [GitHub-8846](magento/magento2#8846)
* Magento now saves the correct background color for images. Previously, product images always had a black background when using the Luma theme. [GitHub-8799](magento/magento2#8799)
* You can now save a product custom option price with a value of 0 (zero) by simply not entering a price. *Fix submitted by [Raul Mateos](https://github.com/raumatbel) in pull request 11843*. [GitHub-4808](magento/magento2#4808)
* You can now assign products to categories if those products are already assigned to the category tree. [GitHub-8970](magento/magento2#8970)
* The `apply_to` setting for attributes is no longer hard-coded. [GitHub-7225](magento/magento2#7225)
* The **Add to cart** checkboxes in Related Products are no longer visible on the storefront when **$canItemsAddToCart** is set to **false**. *Fix submitted by [Marc Rodriguez](https://github.com/mrodespin) in pull request 11610*. [GitHub-6891](magento/magento2#6891)
* You can now successfully save and duplicate a simple product. Previously, when you clicked the **Save and Duplicate** option for an existing simple product in the Catalog Manager, Magento did not duplicate the product, but threw an error. *Fix submitted by [Roman K.](https://github.com/RomaKis) in pull request 12001*. [GitHub-11532](magento/magento2#11532)
* The Magento Admin Product Edit page now displays product alerts as expected. *Fix submitted by [Raul Mateos](https://github.com/raumatbel) in pull request 11445*. [GitHub-10007](magento/magento2#10007)
* The `StockItemCriteriaInterface` method `setProductsFilter` now accepts an array of IDs. Previously, this method accepted either a single integer or an array, but returned only one item. *Fix submitted by [Kirill Morozov](https://github.com/kirmorozov) in pull request 11500*. [GitHub-7678](magento/magento2#7678)
* The `$sortByPostion` flag has been added to the `getChildren()` method. *Fix submitted by [Denis Ristic](https://github.com/denisristic) in pull request 11342*. [GitHub-11310](magento/magento2#11310)
* `ProductRepository` SKU cache is no longer corrupted when `cacheLimit` is reached . *Fix submitted by [Thomas](https://github.com/heldchen) in pull request 11553*.
* Magento no longer displays the perpetual spinner when you switch custom options types in the Product Edit page. *Fix submitted by [Paul Briscoe](https://github.com/briscoda) in pull request 11824*. [GitHub-10291](magento/magento2#10291)
Cart and checkout
* The default shipping-save-processor now has a payload extender. This feature allows third party extensions to modify the payload for the shipping address selection process. As a result, developers can now add `extension_attributes` while minimizing potential extension conflicts. *Fix submitted by [Navarr Barnier](https://github.com/navarr) in pull request 11249*.
* You can now view the **Products in cart** report if the cart contains a bundle or a grouped product. Previously, when you viewed the Products in Cart report, Magento threw an exception under these conditions. [GitHub-12079](magento/magento2#12079)
* Magento now recognizes zip codes without spaces for addresses located in the Netherlands. [GitHub-11898](magento/magento2#11898)
* Magento now accepts coupon codes with special characters during checkout. *Fix submitted by [Gabriel Queiroz Silva](https://github.com/gabrielqs-redstage) in pull request 11710*. [GitHub-9763](magento/magento2#9763)
* We've improved cache control headers.
* Magento no longer throws an exception when you place an order using a new address. Previously, Magento displayed this error, **An error occurred on the server. Please try to place the order again.**. [GitHub-10583](magento/magento2#10583)
* Magento now includes the Filter Groups and the Sort Order of the `$searchCriteria` parameter in the `searchCriteria` Object that is provided for the EAV set repository. *Fix submitted by [David Verholen](https://github.com/davidverholen) in pull request 11421*. [GitHub-11022](magento/magento2#11022)
* Magento no longer sets the product price to zero when you use REST to add a product to an empty cart. Previously, Magento displayed an error when you used REST to populate an empty cart. *Fix submitted by [Peter Jaap Blaakmeer](https://github.com/peterjaap) in pull request 11458*. [GitHub-2991](magento/magento2#2991), [GitHub-2991](magento/magento2#2991)
* You can now translate the placeholder text for the checkout password field. *Fix submitted by [Jeroen](https://github.com/JeroenVanLeusden) in pull request 11493*.
* Magento now redirects a user to the checkout page if he logs in after selecting the **Checkout** button. Previously, a user was redirected to the store home page. *Fix submitted by [@p-bystritsky](https://github.com/p-bystritsky) in pull request 11876*. [GitHub-10834](magento/magento2#10834)
Configurable products
* `Magento\ConfigurableProduct\Model\Product\Type\Configurable:::loadUsedProducts` no longer ignores array keys that are returned by product collections. [GitHub-11880](magento/magento2#11880)
Frameworks
* The NGINX configuration sample now contains a health check. *Fix submitted by [Andrew Howden](https://github.com/andrewhowdencom) in pull request 11690*. [GitHub-11157](magento/magento2#11157)
* Magento now allows underscore characters in module names and also permits their use when modules add a block to the layout via XML. Previously, Magento did not support underscore characters in module names to be added to the layout via XML. *Fix submitted by [Ben Tideswell](https://github.com/bentideswell) in pull request 11765*.
* You can now save using the mass action **Update attributes** option when multiselect attributes are set. *Fix submitted by [Manu Gonzalez Rodriguez](https://github.com/manuelson) in pull request 11349*. [GitHub-11329](magento/magento2#11329)
App framework
* Magento now correctly handles all meta keywords and description in categories and in every product in locales that use non-Latin characters. [GitHub-10682](magento/magento2#10682)
* You can now include negative values in an XML export file and open the file with Office XML handler. Previously, the export files did not open correctly, and an Office XML handler error log was created. *Fix submitted by [HausO](https://github.com/hauso) in pull request 11757*. [GitHub-11729](magento/magento2#11729), [GitHub-11729](magento/magento2#11729)
* The Magento custom URL rewrite functionality now works as expected when you include redirection of Magento controllers. *Fix submitted by [Marc Rodriguez](https://github.com/mrodespin) in pull request 11470*. [GitHub-10231](magento/magento2#10231), [GitHub-11469](magento/magento2#11469), [GitHub-11471](magento/magento2#11471)
* Magento now supports the setting of HTTP response status code in redirected responses. [GitHub-9028](magento/magento2#9028)
* Magento now throws a meaningful exception when a virtual theme does not have a physical parent theme. *Fix submitted by [David Fecke](https://github.com/leptoquark1) in pull request 11240*.
* `app:config:dump` no longer adds an extra space to multiline array values. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11439*. [GitHub-11328](magento/magento2#11328)
* The TRAVIS_BRANCH variable is now surrounded by double-quotes instead of single-quotes . *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11704*.
* The doc block of `setValue` in FilterBuilder now reflects that the `setValue` method will accept an array. *Fix submitted by [bytecreation](https://github.com/ByteCreation) in pull request 11854*.
* `htaccess` syntax now uses `Options -Indexes` instead of `Options All -Indexes`. Previously, Magento used `Options All -Indexes`, which resulted in Magento rendering a 500 error page because of high restrictions for Options overrides in shared hosting environments. *Fix submitted by [@Danny Verkade - Cream](https://github.com/dverkade) in pull request 11327*. [GitHub-10812](magento/magento2#10812)
Configuration framework
* The X-Magento-Tags header can now contain white space. *Fix submitted by [Malyovanets Nickolas](https://github.com/nmalevanec) in pull request 11767*. [GitHub-7640](magento/magento2#7640), [GitHub-7640](magento/magento2#7640)
* The config array can now read all settings from `config`. Previously, the config array was hardcoded to read three settings only. *Fix submitted by [Vova Yatsyuk](https://github.com/vovayatsyuk) in pull request 11643*.
JavaScript framework
* Magento no longer incorrectly overly encodes UTF-8 files when JavaScript Bundling is enabled. Previously, this issue resulted in poor character encoding on the storefront. [GitHub-10562](magento/magento2#10562), [GitHub-6733](magento/magento2#6733)
* Magento now exports the Confirmed email and Account Lock values when you export customer data. Previously, this information was missing from the exported CSV. *Fix submitted by [Luke Rodgers](https://github.com/convenient) in pull request 11437*. [GitHub-10765](magento/magento2#10765), [GitHub-10765](magento/magento2#10765)
* You can now submit the search form from the keyboard. *Fix submitted by [Romain Ruaud](https://github.com/romainruaud) in pull request 11250*. [GitHub-10275](magento/magento2#10275)
Session framework
* We've removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage.
* A typo in `sessionStorage` polyfill has been corrected. *Fix submitted by [mszydlo](https://github.com/mszydlo) in pull request 11219*.
Web API framework
* The `customerAccountManagementV1` interface now provides the `POST /V1/customers/resetPassword` endpoint.
General
* XHTML templates now use schema URNs. [GitHub-6661](magento/magento2#6661)
* The image size used as a cross-sell product placeholder now equals the size of the image used in product listing placeholder images. Previously, the cross-sell product placeholder image was too small. [GitHub-12017](magento/magento2#12017)
* Magento now downloads the backup `.tgz` file that you select for downloading. Previously, no matter which backup you selected, Magento downloaded the most recent backup. *Fix submitted by [Pieter Cappelle](https://github.com/PieterCappelle) in pull request 11595*. [GitHub-10032](magento/magento2#10032)
* Magento now leaves a product's date attribute's current date field blank if you do not enter a value. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11749*. [GitHub-9869](magento/magento2#9869), [GitHub-11636](magento/magento2#11636), [GitHub-6661](magento/magento2#6661)
* The Magento store code validation `regex` now supports uppercase letters in store code. [GitHub-11996](magento/magento2#11996)
* When you use a UI component-based form and add a custom regular expression pattern validation to an input field, the supplied pattern is now properly converted from a string to a JavaScript RegEx object. *Fix submitted by [Brett](https://github.com/bap14) in pull request 11565*. [GitHub-9919](magento/magento2#9919)
* Magento now sets ISO-valid language code in the HTML header. *Fix submitted by [Cristian Sanclemente](https://github.com/crissanclick) in pull request 11561*. [GitHub-11540](magento/magento2#11540)
* Magento now validates CMS blocks before creating one. *Fix submitted by [Thiago](https://github.com/thiagolima-bm) in pull request 11802*. [GitHub-8236](magento/magento2#8236), [GitHub-4831](magento/magento2#4831)
* A custom field's name attribute no longer remains empty during form creation. *Fix submitted by [Paul Briscoe](https://github.com/briscoda) in pull request 11637*. [GitHub-9944](magento/magento2#9944)
* `widget.xml` files can now contain multiple `depends` parameters. *Fix submitted by [Raul E Watson](https://github.com/diazwatson) in pull request 11495*. [GitHub-9783](magento/magento2#9783)
* You can now use an `adminhtml` URL that differs from `admin` and set **Add Store Code to Urls** to **Yes**. *Fix submitted by [Sylvain Rayé](https://github.com/diglin) in pull request 11460*. [GitHub-11140](magento/magento2#11140), [GitHub-11140](magento/magento2#11140)
* You can now add an HTML node to the page XML root of a theme without causing a validation error. [GitHub-11697](magento/magento2#11697)
* The `customer_data_object` firstname is no longer equal to `orig_customer_data_object` after you save an existing user account with a new name or address. *Fix submitted by [Roman K.](https://github.com/RomaKis) in pull request 11676*. [GitHub-7915](magento/magento2#7915)
* We removed a typo in the Paypal Module. [GitHub-7591](magento/magento2#7591)
* We’ve fixed the dashboard graph’s y-axis range. *Fix submitted by [Oscar Recio](https://github.com/osrecio) in pull request 11751*. [GitHub-7927](magento/magento2#7927)
* Magento no longer throws an error when you try to load a quote item collection. [GitHub-8954](magento/magento2#8954)
* Customer Groups are now located in the Magento Admin under **Customers > Customer Groups**. *Fix submitted by [Mr. Lewis](https://github.com/lewisvoncken) in pull request 11677*.
* Magento now wraps long label text by word instead of letter. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11745*. [GitHub-7099](magento/magento2#7099), [GitHub-711727](magento/magento2#11727)
* Magento now displays and expects the format of birth years to match `yyyy` instead of `yy`. *Fix submitted by [Manu Gonzalez Rodriguez](https://github.com/manuelson) in pull request 11351*. [GitHub-11332](magento/magento2#11332)
* Magento now displays the State/Province field after you edit the billing address on sales orders. *Fix submitted by [Raul Mateos](https://github.com/raumatbel) in pull request 11381*. [GitHub-10441](magento/magento2#10441)
* You can now successfully sync billing and shipping addresses on Admin Reorder and Admin Customer Create Order page for selected, existing addresses. *Fix submitted by [Ievgen Sentiabov](https://github.com/joni-jones) in pull request 11385*. [GitHub-10856](magento/magento2#10856)
* The `FixAccountManagementTest` unit test now works as expected. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11607*.
* You can now submit a form by pressing **Enter**. *Fix submitted by [Raul Encinas](https://github.com/bohemiorulo) in pull request 11827*. [GitHub-4696](magento/magento2#4696)
* The Store View switcher now works as expected. *Fix submitted by [Thiago](https://github.com/thiagolima-bm) in pull request 11337*. [GitHub-10908](magento/magento2#10908), [GitHub-11211](magento/magento2#11211)
* We've removed object manager references as well as deprecated calls to `$messageManager`. *Fix submitted by [Atish Goswami](https://github.com/atishgoswami) in pull request 12061*.
* Magento now prepares street data to guarantee that the street array will be converted to a string. *Fix submitted by [Vova Yatsyuk](https://github.com/vovayatsyuk) in pull request 12130*.
* Disabling and enabling the WYSIWYG editor with `ui/form/element/helper/service` checkbox now works as expected. *Fix submitted by [Vova Yatsyuk](https://github.com/vovayatsyuk) in pull request 12141*.
* The `sitemap.xml` `last mod` time stamp now contains the correct date. [GitHub-9151](magento/magento2#9151)
* The Visual Swatch Attribute drop-down menu (accessible from Manage Swatch tab) now works as expected. Previously, when you clicked the **Add Swatch** button from this tab, the drop-down menu was not displayed. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11747*. [GitHub-11534](magento/magento2#11534)
* Users are now subscribed by default to the Advanced Reporting service.
* The design rule hint message no longer includes a typo. *Fix submitted by [Javier Villanueva](https://github.com/jahvi) in pull request 11390*. [GitHub-8958](magento/magento2#8958)
* Storefront labels and messages now use the American English spelling of “optimization”. *Fix submitted by [David Angel](https://github.com/davidangel) in pull request 11345*.
* The **Add page** button now works as expected. Previously, when you clicked **Add page** while logged in to the Admin, and clicked **Save**, Magento did not create a new page, but returned you to the **Orders** page, and displayed this message: **Data key is missing: code-entity**. *Fix submitted by [Tomasz Gregorczyk](https://github.com/Tomasz-Silpion) in pull request 11205*. [GitHub-11163](magento/magento2#11163)
Import/export
* To improve performance, Magento now loads all relations using one query per bunch. Previously, Magento loaded relations one by one (multiple times for multiple attributes types). [GitHub-10920](magento/magento2#10920)
* Magento now provides more helpful error messages if problems occur during the import of products and images using **System > Import Products**. [GitHub-4711](magento/magento2#4711)
* Magento now provides better error reporting when an error occurs during the import of a CSV file with a semicolon delimiter. Previously, Magento stopped import, but did not provide a link to the error report CSV file. [GitHub-5015](magento/magento2#5015)
* Exception message was passed as a exception description argument instead of exception message. *Fix submitted by [Tim Bezhashvyly](https://github.com/tim-bezhashvyly) in pull request 11363*. [GitHub-6924](magento/magento2#6924)
* Importing an import file to update customer data no loner results in the `entity fields` being removed if the columns were not present on the imported file. *Fix submitted by [Juan Alonso](https://github.com/jalogut) in pull request 11968*.
Indexing
* Magento no longer re-indexes entities if they are unchanged, which improves the performance of the refresh index cron job without any loss of functionality. [GitHub-4893](magento/magento2#4893)
* Magento now correctly resets status to `StateInterface::STATUS_INVALID` if a fatal PHP error occurs during indexing. *Fix submitted by [Lars Roettig](https://github.com/larsroettig) in pull request 11183*. [GitHub-11166](magento/magento2#11166)
Infrastructure
* New static block tests now detect blocks without a name attribute. We've also added a missing block name to allow block customization, and added a name for the order items grid default renderer block. *Fix submitted by [Ihor Sviziev](https://github.com/ihor-sviziev) in pull request 11235*. [GitHub-10824](magento/magento2#10824)
* We've ported a fix for the Travis CI builds for the `2.2-develop` branch to the `2.3-develop` branch. *Fix submitted by [Ievgen Shakhsuvarov](https://github.com/ishakhsuvarov) in pull request 11555*.
* Integration tests now reset the integration test database when `TESTS_CLEANUP` is set to enabled. *Fix submitted by [Joshua Warren](https://github.com/joshuaswarren) in pull request 11499*. [GitHub-10025](magento/magento2#10025)
* A typo in `Paypal/Test/TestCase/OnePageCheckoutTest.xml` has been fixed. *Fix submitted by [Mr. Lewis](https://github.com/lewisvoncken) in pull request 11673*. [GitHub-7591](magento/magento2#7591)
* `FileClassScannerTest` no longer has a dependency upon `Magento_Catalog`. *Fix submitted by [WEXO team](https://github.com/wexo-team) in pull request 12144*. [GitHub-11230](magento/magento2#11230)
Newsletters
* Newsletter subscriptions now work as expected. Previously, Magento did not set the `create-date` field, and the `change_status_at` was broken. [GitHub-4004](magento/magento2#4004)
* When a customer with the same email address has an account on different stores in the same Magento installation, changes to the newsletter subscription in one account no longer affects the other subscription. *Fix submitted by [Sergio Baixauli](https://github.com/sbaixauli) in pull request 12035*. [GitHub-10014](magento/magento2#10014)
* Magento now sends email confirmation of newsletter subscription to a user only when the user is newly subscribed. *Fix submitted by [Oscar Recio](https://github.com/osrecio) in pull request 11317*. [GitHub-5439](magento/magento2#5439)
Orders
* Magento now retains an order's `relation_child_id` and `relation_child_real_id` field values when you edit the order. Previously, after you edited an order, the values of the `relation_child_id` and `relation_child_real_id` fields of the old order did not persist. [GitHub-10195](magento/magento2#10195)
* Magento no longer duplicates the **Add Products** button after you change the customer group. [GitHub-11868](magento/magento2#11868)
* New orders now appear as expected in the Order table after you migrating data. [GitHub-10185](magento/magento2#10185)
* You can now create an order from the Customer Edit page when working from the Admin. *Fix submitted by [Roman K.](https://github.com/RomaKis) in pull request 11952*. [GitHub-11832](magento/magento2#11832)
* The `getTracksCollection()` method now returns collection objects. Previously, this method returned either collections or arrays. *Fix submitted by [Roman K.](https://github.com/RomaKis) in pull request 12173*. [GitHub-8022](magento/magento2#8022)
* References to `Zend_Pdf_Color_RGB`now correctly use the camel-case class name (`Zend_Pdf_Color_Rgb`). Previously, the former class name resulted in references to wrong or nonexistent classes. *Fix submitted by [Danny Verkade - Cream](https://github.com/dverkade) in pull request 11830*. [GitHub-11581](magento/magento2#11581)
* The Order table now accurately reflects changes in order status.
* Invoices now display coupon code information. *Fix submitted by [Cristian Sanclemente](https://github.com/crissanclick) in pull request 11635*. [GitHub-10168](magento/magento2#10168)
* Magento no longer lets you cancel an invoice more than once. *Fix submitted by [Oscar Recio](https://github.com/osrecio) in pull request 11261*. [GitHub-9968](magento/magento2#9968)
* `guest.php` now handles breadcrumb performance as expected. *Fix submitted by [Juliano Vargas](https://github.com/lano-vargas) in pull request 11299*. [GitHub-11275](magento/magento2#11275)
* Magento now sends confirmation emails to customers for orders containing a grouped product. Previously, when you tried to submit an invoice for an order containing a grouped product, Magento threw an error and did not send confirmation email to the customer. *Fix submitted by [Michiel Gerritsen](https://github.com/michielgerritsen) in pull request 11297*. [GitHub-5105](magento/magento2#5105)
Payment methods
* Magento PayPal integration now supports the Indian Rupee currency (INR).
* Braintree online refunds now work when you are using two Braintree accounts on two separate websites. Previously, when using two Braintree accounts for two separate websites, Magento did not process the refund, and displayed this message: **Sorry, but something went wrong**.
* Administrators with limited privileges can now log in without errors. Previously, Magento threw an error, but did not log errors in either the server or Magento logs. [GitHub-11700](magento/magento2#11700)
* Corrected a typo in a translatable string. *Fix submitted by [Danny Verkade - Cream](https://github.com/dverkade) in pull request 11569*.
* Magento now displays the correct payment method string as displayed during checkout. Previously, the translated string associated the payment method title for a particular store view was not consistently displayed. *Fix submitted by [Bernhard](https://github.com/bka) in pull request 11165*. [GitHub-7582](magento/magento2#7582)
Reports
* The search for the Customer Review report now works as expected. *Fix submitted by [Oscar Recio](https://github.com/osrecio) in pull request 11522*. [GitHub-10301](magento/magento2#10301)
* Magento now reports handled exceptions to New Relic. Previously, Magento displayed only fatal errors. *Fix submitted by [Max Chadwick](https://github.com/mpchadwick) in pull request 11944*.
* The Admin's Most Viewed Products tab now displays all the products in all attribute sets, not simply the default attribute set. [GitHub-9768](magento/magento2#9768)
SalesRule
* You can now add a bundle product that includes a simple product with a price of 0 (zero) to your cart. Previously, Magento threw an error. [GitHub-8969](magento/magento2#8969)
* Cart Price rules are now applied to products if dropdown attributes are present. Previously, Magento checked only the items that were visible in the cart against the specified conditions. *Fix submitted by [Marina Gociu](https://github.com/marinagociu) in pull request 11274*. [GitHub-10477](magento/magento2#10477)
Search
* The search template now uses the custom URL specified in `Magento\Search\Helper\getSuggestUrl()` instead of the default. [GitHub-6802](magento/magento2#6802)
* Magento no longer throws an asymmetric transaction error on re-indexing when you use ElasticSearch as your search engine.
Shipping
{: .bs-callout .bs-callout-info }
You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html).
* Magento now displays by default of two shipping address lines even when the `street_lines` setting in customer configuration is set to 0 (zero). [GitHub-7995](magento/magento2#7995)
* Magento no longer displays a blank page at the shipping stage of checkout when the user tries to return to the Shipping page from the Payments page by clicking **Back**. [GitHub-11197](magento/magento2#11197)
* The Shipping report available from the Admin now uses the correct currency code. [GitHub-11793](magento/magento2#11793)
* An invoice's `grand_total` and `base_grand_total` now match as expected. Previously, these values differed, leading to a rounding error when calculating the `base_grand_total`.
* Magento now adds a customer note to a shipment invoice when the shipment is created by API and `appendComment` is set to **true**. *Fix submitted by [Jeroen](https://github.com/JeroenVanLeusden) in pull request 11383*. [GitHub-11207](magento/magento2#11207)
* Shipping method radio buttons no longer have duplicate element IDs on the cart page. Previously, these radio buttons had duplicate IDs, which made it impossible to select the second method. *Fix submitted by [Peter Jaap Blaakmeer](https://github.com/peterjaap) in pull request 11406*. [GitHub-10795](magento/magento2#10795)
* The **Shop By** button is now rendered as expected on Android platforms. Previously, the **Shop By** button and other contents were positioned incorrectly. *Fix submitted by [Lorenzo Stramaccia](https://github.com/slackerzz) in pull request 11430*. [GitHub-10941](magento/magento2#10941)
* The `freePackageValue` value is now required to be defined. Previously, this value could be undefined, but in some cases was still accessed. *Fix submitted by [Alexander Menk](https://github.com/amenk) in pull request 11720*.
* You can now implement translations from themes (in contrast to translations from modules).
* Previously missing translation strings have been added to the UI module. *Fix submitted by [Jeroen](https://github.com/JeroenVanLeusden) in pull request 11440*. [GitHub-5956](magento/magento2#5956)
* We've fixed an issue with the `` translate phrase in the `system.xml` file. [*Fix submitted by [Malyovanets Nickolas](https://github.com/nmalevanec) in pull request 11675*. [GitHub-7767](magento/magento2#7767)
* The update `button.phtml` translation has been simplified. *Fix submitted by [Karla Saaremäe](https://github.com/ChuckyK) in pull request 12136*.
Varnish
* Cache headers for documents now factor in the cookie for the store code as expected.
Known issues
General
Issue: In Swagger, the text area that contains the payload structure of some POST and PUT operations is not displayed. If a fraction of the text area is displayed, you can click on it to display the payload structure in a text area in the center of the page. If the text area is not displayed at all, then you cannot access the payload structure.
Workaround: Use the [static Swagger site]({{ site.baseurl }}/swagger) to navigate to the REST call you want to use, then copy the payload structure to your Swagger instance.
Magento Shipping issues
We’ve identified the following unresolved issues with this version of Magento Shipping:
Issue: Merchants should not use Magento Shipping to connect with FedEx at this time. This option will be removed by Friday, December 15, and any existing shipping options tied to FedEx will no longer work at that time. We will be re-enabling FedEx integration through Magento Shipping at a future date.
Issue: Currency conversion problem for shipping methods during checkout when store supports multiple currencies.
Workaround: Ensure that the experience currency, base currency, and display currency are the same. Additionally, incorporate these best practices into your shipping method configuration by ensuring that:
the Magento Core base currency is the same as the experience currency (Store > Configuration > Currency Set Up > Base Current).
the Magento Core base currency converter is the same as the experience and base currency (Store > Currency Rates)
Issue: Selecting a shipping method at checkout can sometimes result in two shipping methods being selected. This issue occurs during checkout. When a user selects a shipping method during checkout, Magento will select two shipping methods.
Workaround: Ensure that no two rules with a ‘Show Shipping Method’ outcome can both apply to the scenario. Consider these example rules:
Rule 1: Show ‘Free Shipping’ for Country is Canada and Cost is not greater than $99.99
Rule 2: Show ‘Free Shipping’ for Country is not Canada and Cost is greater than $100
*
Community contributions
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release.
The following table identifies contributions from our community members. This table lists the external pull requests, the GitHub issue number associated with it (if available), and the community member who contributed the pull request.
Our technology stack is built on PHP and MySQL. For details, see [Technology stack requirements]({{ page.baseurl }}/install-gde/system-requirements-tech.html)
For more information, [System Requirements]({{ site.baseurl }}/magento-system-requirements.html).
Installation and upgrade instructions
See [How to get the Magento software]({{ site.baseurl }}/guides/v2.2/install-gde/bk-install-guide.html) for complete installation and upgrade information.
The Code Migration Toolkit helps transfer existing Magento 1.x store extensions and customizations to Magento 2.0.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.