Magento 2.1.18 is the final 2.1.x release. After June 2019, Magento 2.1.x will no longer receive security patches, quality fixes, or documentation updates.
To maintain your site's performance, security, and PCI compliance, upgrade to the latest version of Magento.

Magento Commerce 2.1.3 Release Notes

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

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 accidentally 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.

  • Upgrade to Magento 2.1.3 without issue when using multiple master databases for checkout, order management, and product data.

  • 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 Admin. 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 fixes and enhancements 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 that 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 throwing 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 throws an exception 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 when you logged in under these conditions.
  • You can now select and add a category to a Cart Price rule. Previously, Magento displayed this error: “Uncaught ReferenceError: sales_rule_form is not defined”, and did not add the selected category to the condition. (GITHUB-5526)
  • We’ve removed the duplicated PHP settings from the sample web server configuration files.
  • The order of products in a category display no longer changes when you add a new product to the category.
  • 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)
  • With valid permissions, you can now regain access to your Admin account after it is temporarily disabled due to invalid credentials. Previously, you could not unlock the account of a valid Admin user if it were disabled due to multiple invalid login attempts.
  • You can now make Return Merchandise Authorization (RMA) comments visible from the storefront by setting Stores > Settings > Configuration > Sales > RMA Settings > Enable RMA on Storefront.
  • 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.
  • The magento queue:consumers:start command now works correctly when you provide the max-messages argument.
  • 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)
  • You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date.
  • 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)
  • We’ve eliminated difficulties saving product information when logged in as Admin. Previously, the Product Save feature worked erratically for Admin users.
  • Custom themes now inherit parent XML configuration information as expected.

Gift cards

  • Order emails now specify the amount of the gift card that you have purchased.
  • The Checkout page no longer freezes when you order a virtual gift card using the Authorize.net Payment Action value set to Authorize and Capture.
  • You can now complete the purchase of a gift card in environments where you have set the Braintree payment method Payment Action to Authorize and Capture. Previously, any order made under these conditions would remain indefinitely in the processing stage.
  • You can now add a gift card with an undefined amount to the Items Ordered table. Previously, Magento did not permit you to add a gift card of an open value to this table.

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. Previously, when importing a product quantity of ‘-1’, Magento returned an error.
  • 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)](https://github.com/magento/magento2/issues/5359){:target="_blank"}
  • 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.
  • Magento no longer displays an indexing error when Elasticsearch is enabled. Previously, Magento displayed this indexing error when Elasticsearch was enabled: mapper_parsing_exception.
  • 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

  • You can now upgrade your Magento installation when using multiple master databases for checkout, order management, and product data.
  • We’ve resolved multiple issues with the upgrade process from 2.0.7 to 2.1.x (for example, editing a category post-upgrade no longer results in a 500 error).
  • 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 now successfully updates the queue table during upgrade. Previously, Magento omitted the catalog_product_removed_queue row of the queue table during upgrade from Magento 2.0.x to 2.1.x.
  • You can now deploy build processes on a different staging machine than the one you’re running your production environment on.
  • 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

  • The Braintree payment method now works as expected with Vault table prefixing.
  • Magento no longer encounters an error when using the Braintree Vault payment GET order API call. (GITHUB-6215)
  • 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.)

  • 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:

  • Opening many products from the Admin interface
  • 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)

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

Scope

  • Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the store view level overrode the price set in website scope. (GITHUB-5133)
  • 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.

Staging

  • The CMS page now refreshes as expected after an update.

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 1000. (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 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:

    1
    
    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:

    1
    2
    
    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: You cannot successfully change and save your settings for gift cards. (Settings include “allow open amount” or “open amount minimum”.)
  • Issue: Installing with Varnish results in products not appearing on the frontend even after purging the cache.
  • Issue: You cannot successfully edit and save a gift card product.
  • 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. Clearing this checkbox and then changing the title affects all storeviews.
  • 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](/devdocs/2.1/guides/v2.1/install-gde/system-requirements_tls1-2.html by default.

  • Issue: Saving a category in a catalog that contains 20,000 or more products is very slow.
  • 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.

  • Issue If using Nginx to serve static content you will see 404 responses for CSS/JS. This is due to requirements for a rewrite which has been added in pub/static/.htaccess

    1
    2
    
       # Remove signature of the static files that is used to overcome the browser cache
       RewriteRule ^version.+?/(.+)$ $1 [L]
    

    Workaround You can add the equivalent Nginx rewrite in your Nginx configuration as below.

    1
    2
    3
    4
    5
    6
    
     	server {
     		...
     		# Needed for M2 2.1.3+
                   rewrite ^/pub/static/version.+?/(.*)$ /pub/static/$1 last;
     		....
     	}
    

System requirements

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

Install the Magento software

See one of the following sections:

Get Magento Commerce using Composer

Magento Commerce (formerly Enterprise Edition) is available from repo.magento.com. Before installing the Magento Commerce software using Composer, familiarize yourself with these prerequisites, then run:

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

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

For example, to install 2.1.1 in the magento2 directory:

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

Get Magento Commerce using a compressed archive

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

  • Magento Commerce software only
  • Magento Commerce 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 Commerce archive:

  1. Go to your account on magento.com.
  2. Log in with your Magento username and password.
  3. In the left navigation bar, click Downloads.
  4. In the right pane, click Magento Commerce 2.X > Full Release or Magento Commerce 2.X > Full Release + Sample Data for the software.
  5. Follow the instructions on your screen to complete the Magento Commerce download:

    • Magento-EE-<version>.* (without sample data)
    • Magento-EE-<version>+Samples.* (with sample data)
  6. Transfer the installation package to your development system.

Complete the installation

After you get the Commerce software:

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

Upgrade from an earlier version

To upgrade to Magento Commerce 2.1 from an earlier version, see 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.

Updated