Magento Open Source 2.1.3 Release Notes

We are pleased to present Magento Open Source (formerly Community Edition) 2.1.3. This release includes many functional enhancements and fixes.

We republished these Release Notes with clarifications on December 16th, 2016.

Highlights

Magento 2.1.3 contains more than 90 bug fixes and enhancements, including these highlights:

  • New PayPal and Braintree payment features

    • Increase conversion rates through faster checkouts by empowering customers to save their PayPal account as a payment option. This feature eliminates the need to enter a PayPal ID and password when making future purchases.

    • Reduce chargebacks and support calls by customizing the business name, phone number, and URL that appears on credit card statements for each of your websites through Braintree.

    • Reduce your risk of accidently shipping products to customers flagged by Braintree’s fraud risk feature with a new process that requires you to confirm risk decisions before proceeding with orders.

    • Enable unregistered customers to reorder or add items to an existing order in the Admin without having to re-enter their credit card information. Merchant can now bill the last payment method used during a guest checkout.

    • Simplify the process of configuring payments for your store with a redesigned Payment Methods page in the Admin interface.

  • Increased storefront performance by removing excessive and slow SQL media queries.

  • Management of configurable products with many variations in the Admin interface without degrading performance.

  • Successful import or export CSV files with data that contains special symbols (that is, symbols that are not escaped during file processing).

  • The Sales module provides two new web API endpoints that allow you to process refunds from an order or invoice. Previously, these actions could only be performed from the Admin interface. After you install this patch, you can:

    • Create a credit memo (complete or partial) for a particular invoice or order.

    • Add details about refunded items to an invoice or order.

    • Update the status and state of an invoice or order after actions are performed.

    • Notify a customer about refunded items or invoice or order.

    REST integrators can use POST /V1/invoice/{invoiceId}/refund and /V1/order/{orderId}/refund to perform these actions. SOAP integrators can call salesRefundInvoiceV1 and salesRefundOrderV1.

  • Enhanced performance in the processing of large catalogs. The catalog/product indexer no longer requires a large temporary table memory allocation in MySQL for large catalogs.

Functional fixes and enhancements

We address the following functional issues in this release.

Cart and checkout

  • You can now reload a page during checkout without unintentionally changing shipping information.
  • Custom address attributes now appear in the Checkout summary.
  • Lengthy Order Status tables are now paginated as expected.
  • Magento now displays the product add validation message (“Product was added to the cart”) only after you have successfully added a product to your cart.
  • We’ve resolved an issue that prevented you from adding more than one product to a shopping cart from a wishlist. (GITHUB-5282)
  • The number of items in the minicart is now updated correctly when you run Magento in mixed HTTP/HTTPS mode. (GITHUB-6487)
  • The minicart now performs as expected in deployments that span multiple websites. Previously, in a Magento installation that had multiple websites, products you added to one website appeared in the other websites’ minicarts.
  • A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple cart rules are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. (GITHUB-6294)
  • Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the Ship to field if you refreshed your browser page during this process.
  • Magento no longer lets you add a product variation to your shopping cart if the item is out of stock. Previously, Magento permitted you to select an out-of-stock item and when you added it to your cart, displayed the “Product is out of stock” message.
  • We’ve corrected a problem with Magento displaying an HTTP ERROR 500 intermittently during checkout.
  • We fixed a JavaScript error that occurred on the Checkout page after you changed the country in the Estimate Shipping and Tax field.

Configurable products

We’ve enhanced the performance of configurable products in several ways:

  • You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product’s lowest price even after you disabled that price.
  • Magento no longer applies one simple product’s special price to another simple product of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. (GITHUB-4442), (GITHUB-5097), (GITHUB-6645)
  • You can now edit a product attribute for multiple configurable products. Previously, when you tried to bulk-edit an attribute on a collection of filtered, configurable products, Magento would complete the process without incorporating your edits, and then incorrectly tell you that the products had been edited.
  • Magento no longer displays an error when you add a configurable product by SKU if an associated simple product is out-of-stock.
  • Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the category page failed to list the product at all, rather than listing it as out of stock.

Email

  • Magento now successfully loads the New Order Email templates. (GITHUB-5101)
  • The Send Welcome Email From field now identifies the store that the customer is associated with.

General fixes

  • Admin users with restricted permissions can now log in successfully as determined by those permissions. Previously, Magento displayed a fatal error upon login under these conditions.
  • We’ve removed the duplicated PHP settings from the sample web server configuration files.
  • We’ve improved and streamlined the Magento Admin PayPal configuration interface.
  • Magento now displays the State/Province field on the Add New Address page. (GITHUB-5279)
  • When creating a new page with the Add New Page feature, Magento no longer throws a JavaScript error when Layout is set to empty.
  • You can now upload changes to the robots.txt file from the Admin panel.
  • We’ve removed the sample password from the Setup Wizard.
  • You can now sort and filter on the New Review page. (GITHUB-5391)
  • Magento now displays server-side Ajax error messages.
  • Magento now validates the uniqueness of product attribute values as you create or edit them. Previously, you could add identically named values to an attribute. (GITHUB-4881)
  • Magento no longer displays the “as low as” label for a disabled price on the Category page.
  • The Magento Framework now makes its dependency upon the zendframework/zend-stdlib library explicit in composer.json. (GITHUB-6442)
  • Custom themes now inherit parent XML configuration information as expected.

Images

  • Magento now successfully saves images that you edit in a WYSIWYG editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes.
  • You can now preview uploaded images.
  • You can now set an image size for product watermarks. (GITHUB-5270)
  • Graphics now scroll as expected on mobile devices. (GITHUB-5302)

Import/Export

  • You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed.
  • We’ve fixed an issue with the correct representation of date and time zones of items in a product catalog during import or export. Previously, Magento exported all dates in the default format (UTC-8), including values that you set to be displayed using another standard.
  • You can now import negative quantities.
  • Magento now imports custom options correctly. Previously, when you tried to import a custom option, the import failed, and Magento displayed this error: Javascript Error: Uncaught RangeError: Maximum call stack size exceeded. (GITHUB-5573)
  • We’ve added a new way to import images: You can now successfully import images when you set your document root to /pub. Previously, you needed to set document root to `/magento` to import images. Both ways of importing now work. (GITHUB-5359)
  • Magento now removes category URL keys from the url_rewrite table as expected during import. Previously, Magento did not remove these keys, which triggered a failure during import. This subsequently caused Magento to quickly reach the maximum error count, returning this error: “Maximum error count has been reached or system error is occurred!”. (GITHUB-1471)
  • You can now export a bundle product that contains a custom text area attribute. Previously, if you tried to export this type of bundle product, the export would fail, and Magento displayed the message, “There is no data for the export”.

Indexing

  • We’ve improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories.
  • The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: “Error 1114: Table is full”.

Installation, upgrade, and deployment

  • We fixed an issue that blocked using the web installer to successfully set up Magento. Previously, if you tried to install Magento with the web installer, Magento would indicate that the readiness check failed, and installation would not complete.
  • Magento no longer incorrectly shows products as “out of stock” after you update your installation from 2.0.7 to 2.1.0. (GITHUB-5222)
  • Magento 2.0.x and 2.1.x now supports the use of table prefixing during installation. Previously, when you used table prefixing, your Magento installation failed with this error: “Duplicate key on write or update”. (GITHUB-5688)
  • You can now successfully upgrade your Magento installation from CE 2.1.1 to EE 2.1.3. Previously, Magento displayed this error, “Default website not defined” when upgrading because Magento read the list of websites from the database. It now reads from the config file.

Orders

  • We’ve added PHP interfaces that add the ability to change the status of a shipment. The new Creditmemo interface supports tasks you can already do through the Magento Admin, including the ability to:

    • support returning multiple units of a configurable product. Previously, when you tried to refund an order, you could refund only one unit of a configurable product, not the amount in the original order.

    • return the product to stock

    • change order status after a credit memo has been created.

  • You can now set the customer group when creating a new order from the Admin interface. (GITHUB-6162)
  • You can now print invoices and credit memos from the Order page.

Payment methods

  • We’ve enhanced our PayPal and Braintree implementations so that merchants can now:

    • Save customer PayPal account information in the Braintree Vault when using Braintree as a service. This enhancement provides a secure method for charging my customers without prompting them to enter a payment information for multiple purchases or for purchases from multiple devices. We’ve also added support for Maestro and Discover bins added to the credit card form both for Braintree and PayPal solutions.

    • Configure dynamic descriptors (Company Name, Phone and URL) for Braintree. This enhancement supports customers easily identifying a source of transactions in their bank statements. (This will potential simplify the resolution of disputed transactions by supporting the display of the Kount status for Braintree in the Admin interface.)

  • The Braintree payment method now works as expected with Vault table prefixing.
  • Magento no longer throws an error when using the Braintree Vault payment GET order API call. (GITHUB-6215)
  • You can now use JCB and Diners Club credit cards with the Authorize.net payment method.
  • Fixed issue with credit card capture information failing to remain associated with its first authorization. (GITHUB-6716)
  • You can now successfully place orders with Braintree when using an alternative merchant account ID. (The merchant account does not need to match the 3D Secure authorization merchant account.) (GITHUB-5910)
  • Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: Uncaught Error: [paypal-container] is not a valid DOM Element.

Performance

We’ve improved the performance of these tasks:

  • Creating many (2500 - 5000) product variants, both simple and complex product types
  • Loading many configurable products with multiple images (for example, configurable products with three attributes and 250 options) (GITHUB-6979)
  • Resizing images on the frontend

We’ve optimized compiler performance (that is, the setup:di:compile command).

Scope

  • The list of allowed countries is now configured as part of website scope, not store view scope. (GITHUB-2946)
  • A restricted user can now change storeview- or website- level attributes that are defined within his scope.
  • You can now select the scope for an action that you are running from the Catalog page’s product table.
  • The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level.

Static file processing

  • We’ve corrected a problem with _requirejs asset retrieval via static.php in static content versioning.
  • Versioning of static files (including CSS, JS, font, and image files) is now enabled by default.
  • We’ve improved the speed of static asset deployment. See Deploy static view files for more information about available options.

Tier pricing

  • Magento no longer resets the tier price during quote recalculation. Previously, when you triggered an automatic quote recalculation (by changing the shipping address, for example), the tier price was lost. (This issue occurred only if the product record in the database had values for row_id and entity_id that didn’t match.)
  • Magento no longer adds a thousands separator ( , ) to representations of quantities that exceed 1,000. (GITHUB-5745)

Tracking and shipping

  • UPS now generates shipping rates for Puerto Rico postal codes.

Varnish

  • We’ve changed the behavior of the Varnish X-header. Only the parent (meta) SKU is now included in the list – not the SKUs of all child products. (GITHUB-6401)

Web APIs

  • The Swagger documentation erroneously indicated that search queries can return detailed information about multiple objects. The description of these APIs now state which API to use to return detailed information about a single object.
  • We’ve improved the process of using the WebAPI interface to save a product stock item. Previously, this type of save action worked inconsistently.
  • You can now update a product’s media gallery through the REST API.

Breaking changes

We’ve introduced a backward-incompatible change to the Magento_Vault module. We’ve bumped the version of this module from 100.1.1 to 100.2.0 to identify this change and resolve it with Composer configuration.

New method

This release introduces the Magento\Vault\Block\TokenRendererInterface::getToken method. This method provides details about payment tokens to renderer components, such as public hash (allows to place orders) and available card or account details. Third-party developers can use this method to implement this functionality in their payment integrations.

Known issues

  • Issue: A payment method configuration is not displayed in the Magento Admin if the sort order for the group is not specified or is less than 5.

    Workaround: In <Payment module base dir>/etc/adminhtml/system.xml, file set group sortOrder greater than 5.

    Example for the Braintree module.

    GITHUB-7891

  • Issue: Deploying static content deployment for multiple locales at the same time causes JavaScript translations to fail. Example of a command that demonstrates this issue:

    bin/magento setup:static-content:deploy --theme=Magento/luma en_US de_DE
    

    Workaround: Execute static content deployment command for every locale separately. For example:

    bin/magento setup:static-content:deploy --theme=Magento/luma en_US
    bin/magento setup:static-content:deploy --theme=Magento/luma de_D
    

    GITHUB-7862

  • Issue: You receive the following fatal error while installing 2.1.3 from repo.magento.com.

    Fatal error: Cannot instantiate interface Magento\Framework\App\Config\Scope\ReaderPoolInterface in /var/www/html/magento2ce/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php on line 73.

    Workaround: You can avoid this fatal error by taking one of these actions:

    • If your Magento root directory is <Magento install dir>/pub, then start the Web Setup Wizard from http://<Magento host or IP>/setup instead of from http://<Magento host or IP>

    • Install Magento using the command line.

  • Issue: When editing a product, you cannot edit customizable options on the storeview level. That is, a change to one option affects products on all stores. Also, the ‘Use Default Value’ checkbox for the option title does not work. Un-checking this box and then changing the title affects all storeviews.
  • Issue: When you add a new product and re-index using Varnish, Magento does not display the product on the frontend, even after you purge the cache and re-index.
  • Issue: Magento fails to validate required Customer Address or Customer attributes.
  • Issue: A Paypal SSL curl communication error can occur if your Magento installation is not running the minimal required TLS version. Older versions of Magento might not run the minimal version, which is TLS 1.2.

    If it isn’t, then Magento throws this error: curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).

    Workaround: Upgrade your version of curl to the latest possible version that will enable the use of [TLS 1.2](/guides/v2.1/install-gde/system-requirements_tls1-2.html by default.

  • Issue: Mass actions can be slow and consume excessive memory unless you increase the PHP memory_limit setting. The default settings typically supports processing about 1,000 variables. If you try an mass action that involves 1,000 or more variables, the mass action might fail.

    Workaround: You can reduce processing time and performance by increasing your PHP memory_limit setting to 1 GB.

System requirements

Our technology stack is built on PHP and MySQL. For more information, see System Requirements.

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.

Credits

Dear community members, thank you for your suggestions and bug reports.