Magento Open Source 2.2.1 Release Notes

Patch code and release notes published on November 7, 2017.

We are pleased to present Magento Open Source 2.2.1. This release includes numerous functional fixes and enhancements.

Highlights

Look for the following highlights in this release:

  • Integrated Signifyd Fraud Protection is now available in Magento Open Source. See Signifyd fraud protection for more information.

  • Ability to implement translations from themes. We’ve also significantly reduced JavaScript-related translation issues.

  • Improvements to how the PayPal Express Checkout payment method processes virtual products.

  • Multiple enhancements to product security. See Magento Security Center for more information.

  • Twenty-two community-submitted bug fixes and multiple pull requests.

Looking for more information on these new features as well as many others? Check out Magento 2.2 Developer Documentation.

Security enhancements

Magento 2.2.1 includes multiple security enhancements. Although this release includes these enhancements, no confirmed attacks related to these issues have occurred to date. However, certain vulnerabilities can potentially be exploited to access customer information or take over administrator sessions, so we recommend that you upgrade your Magento software to the latest version as soon as possible.

See Magento Security Center for more information.

Fixed issues

Installation, upgrade, deployment

  • We’ve improved the message that Magento displays during upgrade if any schema or data version in the setup_modules database is higher than the current module version in the code. Fix submitted by community member Fabian Schmengler in pull request 11064.
  • When a callback during commit throws an exception, the calling plugin can now distinguish this exception from a unsuccessful commit, and logs an exception. Previously, Magento threw an “Asymmetric transaction rollback error”. GitHub-9955
  • We’ve resolved a fatal error in the repository generator. Both InputException and NoSuchEntityException now require a Phrase object as their first constructor argument. GitHub-10601

Catalog

  • Magento now displays products that are filtered to a particular store view even when the corresponding store view has been deleted. Previously, Magento displayed a continuously spinning spinner widget and this error message: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
  • LowestPriceOptionsProvider now returns products with the tax_class_id attribute, which is used for price calculation operations such as tax adjustment. GitHub-6729, GitHub-6457, GitHub-7362
  • The grouped product page now shows the lowest price for a simple product. GitHub-9266
  • We’ve fixed an issue with priceScope that had resulted in the storefront not displaying product prices that should be displayed.

Configurable products

  • Magento no longer displays the inappropriate product price when a configurable product has two price options. Previously, Magento displayed the out-of-stock price of a configurable product when both an out-of-stock and in-stock price were configured.
  • Configurable products no longer show up on category page when all children are disabled by a mass action, and the display out-of-stock products setting is off.
  • If a configurable product is part of a shipment that is being created by REST, only the parent’s quantity will count towards the total quantity of shipped items. Previously, Magento counted both child and parent products when calculating quantity.

Frameworks

  • You can now run Magento in an environment where Redis cache is installed and the PHPRedis extension is enabled.
  • Magento now properly loads default values for ArraySerialized fields.
  • You can now set a default value to fields with config field type image or file. GitHub-10253
  • We’ve replaced the usage of Zend_Json::encode in the setup marketplace tests. GitHub-10329
  • We’ve removed the usage of Zend_Json from the JSON controller. GitHub-10342
  • We’ve removed Zend_Json from Setup/Migration.php. GitHub-10341
  • We have replaced Zend_Json with \Magento\Framework\Serialize\JsonConverter::convert in customer data. GitHub-10259

General

  • We’ve fixed JavaScript date validation on the store front. Previously, validation of the date of birth field during customer registration when changing the default locale did not work. Fix submitted by community member Joachim Vanthuyne in pull request 11067.
  • We’ve added a CSS selector to remove an additional top-margin that was rendered when you added a link widget to the footer in the Luma theme. Previously, when you added a new footer links, the block of footer links did not line up with the default footer links. Fix submitted by community member Sandro Wagner in pull request 11063.
  • String localizations now work as expected when phrases include text wrapped with single quotation marks.
  • PHPCS can now correctly parse the syntax of PHP 7.x return types.
  • You can now generate unsecure URLs even when the current URL is secure.
  • The Reset button no longer causes a JavaScript error on the URL rewrite creation page. GitHub-10462
  • Websites that conduct transactions in multiple currencies can now send currency to Google Analytics. GitHub-10508
  • The Products Ordered report now shows the simple (child) products of configurable products.
  • Cookie lifetime works as expected when you set the form_key value to zero (0). GitHub-10528
  • We’ve fixed an issue where Magento did not retrieve relevant data when displaying reviews if $displayIfNoReviews was set to false. GitHub-4530
  • You can now remove the system customer address and customer attributes from specific forms and prevent them from displaying on the frontend.

Indexing

  • We’ve fixed multiple issues where indexes were invalidated as a result of typical import, scheduled import, and catalog permission tasks.

Orders

  • You can now use PayPal Express Checkout to place an order in a split-database environment.
  • If a credit card error occurs on an order, the user can now correct the error and successfully create a new order. Previously, Magento displayed the following error on any subsequent order, even when you entered accurate credit card information: “A customer with the same email already exists in an associated website”.
  • We’ve added a name attribute to the layout default renderer, and you can now add a new column to the Admin Sales > Order table . Previously, the layout default renderer lacked a name attribute. Fix submitted by community member Gabriel Somoza in pull request 11076.

Payment methods

  • Double-clicking the Place Order button when using the Braintree payment method to place an order no longer creates duplicate order requests. GitHub-10767
  • Magento now completes processing an order if the customer needs to re-enter credit card information during the order process. Previously, Magento returned this error No such entity with customerId = 0.
  • Search terms from the same synonym group now return the same results.
  • A search query results are now more consistent. Previously, identical search terms entered in different browser tabs resulted in different search results.
  • You can now search for attribute values on the store-view level.

Sitemap

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.

Pull request Related GitHub issue Contributing community member
11067 4248, 6350, 6858, 6831, 9743 Joachim Vanthuyne
11054 N/A Fabian Schmengler />
11056 N/A Steven Vandeputte
11058 N/A Quinten Clause
11063 6712 Sandro Wagner
11064 9008, 9981 Fabian Schmengler />
11076 10824 Gabriel Somoza
11048 10417 Pieter Cappelle
11049 10697 @avdb
11069 10474 Stijn Duynslaeger
11127 N/A @niccifor
11138 N/A Joke Puts
11147 N/A Raul Mateos
11154 9877 Denys Babenko
11160 10803 Roman Strelenko
11200 7356 Oscar Recio
11168 10738 Max Yekaterynenko
11223 9900 Luke Rodgers
11229 10611 Luke Rodgers
11050 11044 Fabian Schmengler />
11134 10775 Alexander Turiak
11084 9920 Rubén Rodríguez
11246 11231 @crissanclick
11254 10317 Romain Ruaud
11155 11089 Julian
11291 9243 @dverkade
11165 7582 Bernhard
11297 5105 Michiel Gerritsen
11327 10812 @dverkade
11081 N/A Rakesh Jesadiya
11183 11166 Lars Roettig
11205 11163 Tomasz Gregorczyk
11219 N/A @mszydlo
11249 N/A Navarr Barnier
11345 N/A David Angel
11349 11329 Manu Gonzalez Rodriguez
11390 8958 Javier Villanueva

System requirements

Our technology stack is built on PHP and MySQL. For details, see Technology stack requirements

For more information, System Requirements.

Installation and upgrade instructions

You can install Magento Open Source 2.2 General Availability (GA) using Composer.

Install the Magento software

You can get Magento Open Source (formerly Community Edition) 2.1 from Github, Composer, or using a compressed archive.

See one of the following sections for more information:

Get the Magento Open Source software using Composer

The Open Source software is available from repo.magento.com. Before getting the Open Source software, familiarize yourself with the Composer metapackage prerequisites, then run

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=<version> <installation directory name>

where <version> is 2.1.0, 2.1.1, and so on

For example, to install Magento Open Source 2.1.1 in the magento2 directory:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.1.1 magento2

Get a compressed archive

The following table discusses where to get the Magento software. We provide the following downloads:

  • Magento Open Source software only
  • Magento Open Source software with sample data (designed to help you learn Magento faster)

These packages are easy to get and install. You don’t need to use Composer, all you need to do is to upload a package to your Magento server or hosted platform, unpack it, and run the web-based Setup Wizard.

Archives are available in the following formats: .zip, .tar.bz2, .tar.gz

To get the Magento Open Source software archive:

  1. Go to http://magento.com/download.
  2. Choose either the software or the software and sample data:

    • Magento-CE-<version>.* (without sample data)
    • Magento-CE-<version>+Samples.* (with sample data)

    <version> is the three-digit release number (for example, 2.0.7, 2.1.0, and so on).

Complete the installation

After you get the Open Source software:

  1. Set file system ownership and permissions.
  2. Install the software:

Upgrade from an earlier version

See the following sections for more information.

Upgrade an existing installation from the GitHub repository

Developers who contribute to the Open Source codebase can upgrade manually from the Magento Open Source GitHub repository.

  1. Go to the Contributing Developers page.

  2. Follow the instructions to pull the updates from the repository and update using Composer.

Other upgrades

Other types of upgrades are discussed in Upgrade to Magento version 2.1 (June 22, 2016).

Migration toolkits

The Data Migration Tool helps transfer existing Magento 1.x store data to Magento 2.x. This command-line interface includes verification, progress tracking, logging, and testing functions. For installation instructions, see Install the Data Migration Tool. Consider exploring or contributing to the Magento Data Migration repository.

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.