Magento Commerce 2.2.9 Release Notes
Patch code and release notes published on June 25, 2019.
We are pleased to present Magento Commerce 2.2.9. This release includes 75 critical enhancements to product security, over 100 core code fixes and enhancements, and over 200 community-submitted pull requests.
Look for the following highlights in this release:
Substantial security enhancements
This release is focused on substantial security enhancements:
75 security enhancements that help close cross-site scripting (XSS), remote code execution (RCE), and sensitive data disclosure vulnerabilities as well as other security issues. 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. See Magento Security Center for a comprehensive discussion of these issues. All known exploitable security issues fixed in this release (2.2.9) have been ported to 2.3.2, 2.1.18, 184.108.40.206, and 220.127.116.11, as appropriate.
Google reCAPTCHA module for PayPal Payflow checkout. The new Paypal Recaptcha module adds Google reCAPTCHA and CAPTCHA to the Payflow Pro checkout form. This enhanced functionality has been added in response to malicious targeting of Magento deployments that implement Payflow Pro. Configuration information can be found in Google reCAPTCHA.
This release contains 150 enhancements to core quality, which improve the quality of the Framework and these modules:
Checkout/One Page Checkout,
UI. Here are some additional core enhancements:
- Braintree payment method is now supported for checkout with multiple addresses. Previously, you could not use Braintree and Braintree PayPal when checking out an order that was being shipped to multiple addresses.
The CGI URL gateway in UPS module has been updated from HTTP to HTTPS. The CGI URL gateway endpoint in the UPS module has been updated from HTTP to HTTPS in response to the disablement of the HTTP gateway by UPS in mid-2019. See Magento User Guide for a discussion of using the UPS shipment method. Shipping method configuration settings are described in the Shipping methods.
Google chart API updated to the Image-Charts. Magento now uses the Image-Charts free service to render static charts in Admin dashboards. Earlier deployments used Google Image Charts, which was deprecated in 2012 and turned off on March 18, 2019.
In addition to security enhancements, this release contains the following functional fixes.
Installation, setup, and deployment
- Magento no longer displays an extraneous blank option in the country drop-down menu on the Country Options page for store configuration settings (Stores > Settings > Configuration > General > Country Options).
- Magento no longer throws an error when executing
bin/magento setup:static-content:deployin parallel mode if theme or locale deployment takes more than 400 seconds. Previously, Magento threw the following error under these conditions:
2436; Status: 0. Fix submitted by David Alger in pull request 22282. GitHub-15090
- All fields are now hidden with appropriate dependencies as assigned in the backup configuration settings. Fix submitted by Keyur Kanani in pull request 22499. GitHub-22474
- Magento now sets the
id_prefixoption on prefix cache keys for the cache front end during installation. If this option is not set, Magento uses the first 12 bits of the md5 hash of the absolute path to the Magento
app/etcdirectory. But if this value is not exactly the same on all web servers, cache invalidation will not work. Fix submitted by Cash and Carry Furniture in pull request 22439. GitHub-15828
- The total displayed on the widgets table (Content > Elements > Widgets) now reflects only the widgets for which the administrator has privilege. Previously, in a multi-site installation, the total displayed included widgets that the administrator did not have access to.
- Magento now displays the Cart Price Rules list (Marketing > Promotions > Cart Price Rules) as expected when you add a new rule. Previously, the grid was not visible.
minifyfield on Stores > Configuration > Advanced > Developer is now disabled as expected. Fix submitted by Ananth Iyer in pull request 21800. GitHub-21384
- Magento now displays the correct date in the Admin for scheduled design changes. Previously, Magento displayed the current date instead of the scheduled date on Content > Design > Schedule. Fix submitted by Pratik Oza in pull request 21568. GitHub-21425
- Fixed the alignment of the time fields in Admin > Configuration > General > Advanced Reporting in tablet landscape view. Fix submitted by Amol Chaudhari in pull request 20602. GitHub-20580
- Magento now displays a success message when you create an order through the Admin and the create shipment and Email copy of invoice checkboxes are checked. Fix submitted by Govind Sharma in pull request 20776. GitHub-19942
- Fixed the alignment of the reload CAPTCHA icon on the Admin login page. Fix submitted by Pratik Oza in pull request 21162. GitHub-20911
- The Web Setup Wizard now uses the correct base path to check if the setup folder exists. Previously, the wizard checked
/data/web/magento2/pub/setup. Fix submitted by JeroenVanLeusden in pull request 22369. GitHub-11892, GitHub-7623
- Store switcher now works as expected in deployments that use the shared catalog structure. Previously, the store switcher in the shared catalog structure configuration used the store’s
group_idinstead of the
store_idto filter product collection.
catalogpermissions_categoryindexer in Update On Schedule mode now correctly picks up on the structure of a shared catalog.
- You can now add backordered products to the cart when backorders are enabled.
- When you move a customer from one company to another, quotes now remain associated with the customer who generated the quotes. Previously, a quote did not appear in the customer’s account on the storefront after the move.
- Fixed the alignment of the bundle product radio button on the Product page when you click Customize and Add to cart. Fix submitted by Amol Chaudhari in pull request 20743. GitHub-20518
- Magento now calculates and displays the correct tier price for bundle products. Fix submitted by Amol Chaudhari in pull request 21844. GitHub-21467
- Fixed the alignment of the Add to cart button on the bundle product page in portrait orientation in mobile view. Fix submitted by Amol Chaudhari in pull request 20554. GitHub-20193
- Magento now displays the correct price on the storefront for products whose prices have been updated in a shared catalog. Previously, Magento did not update storefront prices when a price in the shared catalog was updated.
- CMS block cache keys now contain the appropriate store ID in deployments with multiple store views. Previously, Magento always loaded the cached version of the block for the first store view. Fix submitted by Amol Chaudhari in pull request 22534. GitHub-22299
- Dates in the Admin are now formatted correctly for French locales (dd/mm/yyyy).
- You can now use the term configurable as a group name in attribute sets. Previously, Magento threw an error when you used this term as a group name and subsequently tried to add or edit a product. GitHub-6123
- URLS in Arabic now resolve as expected. Previously, when you created a URL rewrite in Arabic, the browser returned a 404.
- Magento now creates unique values for product attributes as expected when you duplicate a product. Previously, Magento duplicated a product, but both products had the same attribute values.
- During product creation, Magento now displays default attribute values from the Admin column on the Manage Options (Values of Your Attribute) window when creating options. Previously, Magento displayed attribute options from the default storeview. GitHub-6507
- Magento now displays informative messages when you create a new product and try to set its SKU to one that is assigned to an existing product. Previously, under these circumstances, Magento displayed an informative message, but also imported the configurabe options from the newly created product to the older product. GitHub-9457
- Tax recalculation has been moved out of the transaction into the background for negotiable quotes running in an environment where B2B is deployed. This improves performance and helps avoid server timeouts.
- Catalog Permission rules that are set for a category now remain applied when a new category is created at the same level.
- You can now use storeview-level attributes to filter products on the products list.
- The selected store scope view now affects the categories displayed on the product edit page’s category tree.
- Magento now calculates and displays the correct tier price for bundle products.
- Magento no longer permits you to change an attribute set if the new set does not have the same attributes as the original set. Previously, Magento sometimes threw the following exception when you tried to change attribute sets:
Attempt to load value of nonexistent EAV attribute.
- You can now add grouped products to the shopping cart as expected when category permissions are enabled.
- Magento does not display the Country of Manufacture field under the More Information tab of the product page when this value is empty.
- Scope assigned to prices in Catalog Price Scope (set in Configuration > Price) are now maintained when price is set to empty. Previously, you could not leave special prices empty.
- Clicking on the root category for a store now causes only that root category to expand. Previously, Magento expanded all other Root Categories into the top-level categories.
- Magento now displays breadcrumbs in the proper format. Previously, subcategories did not appear in breadcrumbs. Fix submitted by Brandon Brown in pull request 19760. GitHub-7967
- Fixed the alignment of the Schedule Update From field on the Admin category page when displayed in a browser set to 768 x 1147 resolution. Fix submitted by Amol Chaudhari in pull request 20404. GitHub-20402
- Fixed the alignment of product page tab content in mobile view. Fix submitted by Amol Chaudhari in pull request 20476. GitHub-20468
- Magento now displays currency symbols as expected for products in the Cost column of the Admin catalog list. Fix submitted by Pratik Oza in pull request 21157. GitHub-20906
- Corrected the behavior of the dropdown menu on the Option Type field in the New Option section of the Customizable Option page. Fix submitted by Pratik Oza in pull request 21159. GitHub-20989
- Magento now correctly calculates multi-currency custom option prices when the option price type is
percentage. Fix submitted by Amol Chaudhari in pull request 21263. GitHub-19561
- You can now create a new product with a special price. Previously, when you saved the newly created product, Magento threw the following error:
Special price date from" Failed to parse time string. Fix submitted by Milan Osztromok in pull request 21273. GitHub-18158
product_typeattribute now contains the correct value in the CVS file that is created during export after you create a
custom type_idattribute. Fix submitted by Amol Chaudhari in pull request 21208. GitHub-19891
product:price:amountmetatag for a product now contains the price converted to the appropriate base currency in multistore deployments with stores that use different base currencies. Previously, price in this metatag was always calculated in the base currency. Fix submitted by Pratik Oza in pull request 21202. GitHub-20010
- Magento no longer adds tax twice when adding a new product with tier pricing. Previously,the
MinimalTierPriceCalculatorfunction applied the tax twice when calculating the minimal price. Fix submitted by Eduard Chitoraga in pull request 21527. GitHub-21383
export.xsdfiles now allow modules with names that contain numbers. Fix submitted by Lisovyi Yevhenii in pull request 21598. GitHub-14882
- Magento now correctly displays the mass product update attributes page when Minimum Qty Allowed in Shopping Cart is set. Previously, Magento displayed the following warning:
Exception #0 (Exception): Warning: A non-numeric value encountered in /var/www/html/vendor/magento/module-catalog/view/adminhtml/templates/catalog/product/edit/action/inventory.phtml on line 109 is present. Fix submitted by Nazar Klovanych in pull request 21080. GitHub-21073
- You can now open the product details page from the compare products side bar. Fix submitted by Eduard Chitoraga in pull request 21238. GitHub-21101
- Magento no longer increments stock for products for which stock managing has been disabled. Previously, Magento increased the product quantity count when an order failed if Manage Stock was disabled. Fix submitted by Amol Chaudhari in pull request 20644. GitHub-19482
- We have replaced the incorrect proxy
resourceStockargument for the
<argument name="resourceStock" xsi:type="object">Magento\CatalogInventory\Model\ResourceModel\Stock\Proxy</argument>has been replaced with the following argument:
<argument name="resourceStockItem" xsi:type="object">Magento\CatalogInventory\Model\ResourceModel\Stock\Item\Proxy</argument>. ) Fix submitted by VitaliyBoyko in pull request 21793. GitHub-167
- You can now add a product to an order by using the Add products by SKU button. Previously, when you tried to add a product using this method, Magento displayed the following message:
The SKU was not found in the catalog.
- Magento now increments product quantity correctly when a guest user adds products to the cart and later logs in. Previously, Magento added items separately instead. Fix submitted by Amol Chaudhari in pull request 22378. GitHub-21375
- Meta Keywords and Meta Description are now defined as
textareathroughout product forms. Previously, they were defined as
input. Fix submitted by Amol Chaudhari in pull request 21199. GitHub-20555
- Catalog rules are applied as expected after a customer uses Visual Merchandiser to drag and drop products in a category. Previously, discounts that were applied to products through a catalog rule were lost after the product was dragged and dropped.
Cart and checkout
- Magento now persists the shipping quote in the shopping cart for guest customers when the Persistent Shopping Cart feature is enabled.
- Magento now applies the correct tier price for a product based on the customer’s assigned group when they log in, even if the item was added in a previous session when the customer was logged in as a guest. Previously, Magento did not apply the correct tier price to products added when the customer was still a guest.
- Magento now correctly updates the minicart if a selected product is disabled during the shopping session.
- Corrected the alignment of the order item details label and subtotal label in mobile view. Fix submitted by Rajneesh Gupta in pull request 21243. GitHub-20299
- The title of the shipping method no longer overlaps with the Edit button on the checkout page. Fix submitted by Amol Chaudhari in pull request 20443. GitHub-20427
- Fixed issue displaying numbers that exceed two digits in the Qty: field of the Proceed to Checkout pop- up. Fix submitted by Amol Chaudhari in pull request 20738. GitHub-20611
- Fixed problems with the display of the tooltip drop-down pointer on the checkout page in tablet view. Fix submitted by Amol Chaudhari in pull request 20490. GitHub-20487
- Fixed the alignment of the View and Edit Cart link in the mini cart. Fix submitted by Rajneesh Gupta in pull request 21124. GitHub-20382
- Magento now persists customer-related values after a guest customer converts her account to a customer account after checkout. Previously, Magento saved these customer-related values as null when an account was created after checkout. Fix submitted by Nazar Klovanych in pull request 21325. GitHub-19166
- Magento now displays an error message as expected when a customer clicks on Add to cart without selecting at least one product from the recently ordered product list. Fix submitted by Prince Patel in pull request 21538. GitHub-21398
- The Cancel button on the checkout page now works as expected. Fix submitted by Pratik Oza in pull request 21569. GitHub-21327
- Magento no longer runs
UpdateItemQtyvalidation before a Clear Shopping Cart action is triggered. Previously, due to the timing of this validation, you could not empty the shopping cart if any product in the cart was out-of-stock. Fix submitted by Wojtek Naruniec in pull request 21528. GitHub-21294
Cannot read property 'quoteData' of undefined. Fix submitted by Amol Chaudhari in pull request 21432. GitHub-14412
- Magento no longer empties the shopping cart when you click Enter after changing the product quantity. Fix submitted by Leandro F. L. in pull request 21512. GitHub-21499
- Screen readers can now identify the
labelelements that are linked to
inputfields for street address fields on the checkout page. Previously, screen readers could not identify these fields because the elements were not populated. Fix submitted by Amol Chaudhari in pull request 22070. GitHub-10893
- Magento now factors in cart price rule discounts before assessing whether free shipping order minimums have been reached for an order. Previously, Magento assessed free shipping before discounts were applied.
- The Close button on the mini cart no longer overlaps with the shipping section when the checkout page is opened on a mobile device. Fix submitted by Pratik Oza in pull request 20844. GitHub-20614
Cart Price rule
- Added a new condition type Subtotal (Excl. Tax) to configure discounts that exclude the sales tax when calculating the subtotal on a Total Amount cart rule. See Price rules. Fix submitted by Eduard Chitoraga in pull request 21845. GitHub-12396
- Magento no longer throws SQL errors when table prefixes are used. Fix submitted by Vishal Gelani in pull request 18866. GitHub-18357, GitHub-18954
Clean up and minor refactoring
- Removed excessive white space from the top of CMS pages when displayed in mobile view. Fix submitted by Amol Chaudhari in pull request 20781. GitHub-20755
- Corrected rendering of the apply discount code field in the Tab portrait view of the shopping cart. Fix submitted by Amol Chaudhari in pull request 20586. GitHub-20278
- Added missing bottom border to the list of customizable options on the Product page when accessed from the Admin. Fix submitted by Eduard Chitoraga in pull request 20821. GitHub-20497
- Fixed the alignment of the Orders and Returns section that is accessed from the footer of the orders page. Fix submitted by Amol Chaudhari in pull request 21163. GitHub-20816
- Fixed the alignment of reviews under My Recent Reviews area of the My account dashboard. Fix submitted by Amol Chaudhari in pull request 21172. GitHub-20800
- The Widget Options left navigation block on the Add New Widget page now displays correctly in tablet view. Fix submitted by Amol Chaudhari in pull request 20529. GitHub-20492
- Added a missing asterisk adjacent to the Checkout Agreements checkbox. Fix submitted by Amol Chaudhari in pull request 21838. GitHub-21648
- Magento no longer throws an error when you try to export a customer report with a description filter.
- Configurable products can no longer be added as a variation of another configurable product in the Admin.
- Magento no longer describes a configurable product as in-stock in the product list when the product is set to out-of-stock.
- Fixed the alignment of fields on the Configure Product page that is accessed from the Wish List. Fix submitted by Amol Chaudhari in pull request 21173. GitHub-20760
- You can now successfully run
bin/magento setup:upgradeto upgrade your Magento instance when your deployment lacks the
manufacturerattribute. Previously, set up did not complete, and Magento displayed the following error:
Attribute with ID "Manufacturer" does not exist. Fix submitted by Suneet K. in pull request 19551. GitHub-18134
- Corrected the position of the labels in the configurable product variations table. Fix submitted by Eduard Chitoraga in pull request 21691. GitHub-20527
- Configurable products can now be successfully updated through the bulk API using the following API endpoint:
POST rest/async/bulk/V1/configurable-products/bySku/child). Fix submitted by Amol Chaudhari in pull request 22295. GitHub-20366
We have modified the required permissions for updating the
designfieldset of categories, products, and CMS pages:
Existing roles that have save permission for these entities can save everything.
New roles must be granted permission to edit design manually.
If you do not have permission to edit the
designfieldset or use web API endpoints to update a category, Magento does not save your changes and the design properties remain unchanged.
- The HTML source editor Update and Cancel buttons now appear as expected in browsers running Internet Explorer 11.x.
- Improved the display of images that are uploaded when you click the Insert Image button on a CMS page. Fix submitted by Eduard Chitoraga in pull request 21110. GitHub-20786
- Customers who are not logged in can now see the dynamic blocks that have been created for guest accounts. Previously, only customers logged in to the registered guests segment could see these dynamic blocks.
- Magento now uses the value of the default billing address attribute as expected during checkout. GitHub-8777
- Custom customer attributes now show as expected in the Admin customer create and edit forms. Previously, these attributes were not displayed unless configured for display on the Customer Registration or Customer Account Edit forms. GitHub-14456
- Removed an unneeded space from the title of the My Account page in mobile view. Fix submitted by Amol Chaudhari in pull request 20782. GitHub-20723
- Removed an empty block on the My Account page sidebar. Fix submitted by Pratik Oza in pull request 20845. GitHub-19139
- The Customer Name Prefix on the customer configuration page no longer displays extraneous white space when an extra separator is added. Fix submitted by Pratik Oza in pull request 21245. GitHub-17861
- The customer login block (defined as
Magento\Customer\Block\Form\Login) no longer sets the page title. Fix submitted by Amol Chaudhari in pull request 21434. GitHub-13982
- The default sort order setting for the shopping cart and customer orders page is now
by create date in descending order. Fix submitted by Pratik Oza in pull request 21694. GitHub-21493
- Magento now respects the number of lines permitted in a street address as set in Store > Configuration > Customer > Customer Configuration > Name and Address Options. Previously, Magento displayed the last saved values instead of the default value. Fix submitted by Ievgenii Gryshkun in pull request 20566. GitHub-13675
- The State/Province field is no longer marked as mandatory in the Admin customer address form. Previously, this field was always marked by an asterisk, even when the field was not required.
Magento no longer applies the default customer group settings to customers that have already been assigned to another group.
Customer groups can now be reassigned successfully during order creation in the Admin.
Added support for Zookeeper and flock lock providers. We have also added new options to configure locks during installation:
--lock-provider=LOCK-PROVIDER—Lock provider name
--lock-db-prefix=LOCK-DB-PREFIX—Installation specific lock prefix to avoid lock conflicts
--lock-zookeeper-host=LOCK-ZOOKEEPER-HOST—Host and port to connect to Zookeeper cluster. For example, 127.0.0.1:2181
--lock-zookeeper-path=LOCK-ZOOKEEPER-PATH—The path where Zookeeper will save locks. The default path is /magento/locks
--lock-file-path=LOCK-FILE-PATH—The path where file locks will be saved.
Customer custom attributes
- Magento now saves dates that are associated with custom customer attributes of type
date. Previously, Magento did not save these dates, but displayed the following message:
Please enter a valid date.
- Magento now loads the customer attribute page as expected, and users can edit attributes when attributes are set to default values. Previously, Magento did not completely load this page when attributes values were set to default.
- The Swagger definition for
eav-data-attribute-option-interfacehas been corrected. Previously, when you created a REST call to an endpoint that returns an object of
is_defaultis set to
is_defaultreturns an object instead of the expected Boolean. Fix submitted by Pratik Oza in pull request 21164. GitHub-18525
- You can now successfully download a downloadable product by clicking the link to the product in your downloadable products list. When you previously clicked this link. the page did not open correctly, and Magento threw the following error:
Something went wrong while getting the requested content. Fix submitted by Amol Chaudhari in pull request 21262. GitHub-18944
- Added missing sort order to columns on Downloadable Product links page. Fix submitted by Pratik Oza in pull request 21662. GitHub-21278
- You can now successfully change the sample file for an existing downloadable product. Previously, when you tried to change this sample file, Magento did not save the new file, and did not display an error message. Fix submitted by Ravi Chandra in pull request 22471. GitHub-6272
- A logged-in user’s My Downloads page now displays links to the relevant downloadable products when Order Item Status to Enable Downloads is set to Pending. Previously, Magento displayed only the names of the pending products, and no links for downloadable products were displayed. Fix submitted by James in pull request 22072. GitHub-21753
- Initialization has been added to two class variables that can be returned by class methods as parameters of type
array. Without this initialization, both variables are returned as null, which can cause Magento to throw an
Invalid argument supplied for foreach()warning. Fix submitted by Wojtek Naruniec in pull request 22086. GitHub-21134
- Magento no longer throws an exception when the
fixed-Quantity_and_stock_statusattribute has Change Visible on Catalog Pages on Storefront enabled. Fix submitted by Amol Chaudhari in pull request 21802. GitHub-13612
\Magento\Eav\Model\Entity\Collection\AbstractCollection::importFromArray()method now returns a usable collection. Previously, the
_isCollectionLoadedproperty was false, and every interaction threw an exception. Fix submitted by Lorenzo Stramaccia in pull request 22422. GitHub-21868
- Corrected problems with disabling and enabling order-related emails. Fix submitted by Serhiy Zhovnir in pull request 20954. GitHub-18698
- Magento no longer sends via asynchronous email sending any sales-related emails that were created when email sending was disabled once email sending is enabled. Fix submitted by Serhiy Zhovnir in pull request 22108. GitHub-21786
- Magento now sorts media directories alphabetically during image upload.
- Fixed the alignment of the import successful message icon in the Admin. Fix submitted by Kajal Solanki in pull request 19333. GitHub-19328
- Added the
lib/internal/Magento/Framework/View/Layout/etc/head.xsdwith three possible options:
font. Fix submitted by Amol Chaudhari in pull request 21261. GitHub-18347
- The use of the
SessionManagerInterfaceclass has replaced the direct use of
SessionManager. Fix submitted by Pratik Oza in pull request 21357. GitHub-19274
- The module ranking in
app/etc/confignow remains consistent when a new module is added but no other changes are made. Previously, a module addition affected the module ranking, which resulted in multiple unnecessary conflicts. Fix submitted by Eduard Chitoraga in pull request 21423. GitHub-8479,GitHub-16116
- Magento now logs exceptions during autoloading instead of throwing exceptions. This conforms with PSR-4 guidelines. Fix submitted by Amol Chaudhari in pull request 21435. GitHub-20773
- We corrected a syntax error in
magento2/lib/internal/Magento/Framework/Cache/Backend/Database.php. Fix submitted by Nirav Kadiya in pull request 21078. GitHub-13309
validate-per-page-value-listvalidation rule resulted in a failure for every non-empty value in the field to which it as applied. Fix submitted by Roman Kis in pull request 21813. GitHub-21734
- Sorting on stores from the Admin (Stores > All Stores) now works as expected. Fix submitted by afirlejczyk in pull request 17371. GitHub-7283
- Product attribute labels are no longer translated but maintain their store-specific values. Fix submitted by Pratik Oza in pull request 21864. GitHub-21750
- You can now change customer groups when creating a new customer during order creation on the Admin. Fix submitted by Amol Chaudhari in pull request 21239. GitHub-7974
- PayPal Express now creates a gift card as expected when payment for the card is captured. Previously, Magento did not create a gift card under these circumstances, even when payment action was set to Authorize and Capture and Generate Gift Card Account when Order Item is was set to Invoiced.
Gift card account
- Gift card accounts are now created as expected when gift card orders are authorized and captured with PayPal Express.
- The Skip error entries validation method for the import now works as expected. Previously, Magento did not let you skip an invalid entry and prevented import.
- Magento now correctly saves product URL keys in Arabic. Previously, keys in Arabic returned 404 errors.
- You can now access a list of Admin indexers after creating a custom index. Previously, when you tried to access the Admin indexer list, Magento threw a fatal error. Fix submitted by Cristiano Casciotti in pull request 21576. GitHub-21510
productAvailabilityChecksargument has been added to
Magento\Sales\Model\Order\Reorder\OrderedProductAvailabilityChecker. Previously, this required argument was missing. Fix submitted by Amol Chaudhari in pull request 21920. GitHub-20825
- Logic has been removed from the constructor of
Magento\Sales\Model\Order\Address\Validator. Previously, installation of the product could fail if this class was injected in the constructor through a command in a custom module when this class contained logic. Fix submitted by Bartłomiej Szubert in pull request 21719. GitHub-21692
- You can now use a period (
.) for inline CMS content edits. Previously, if you included a period (
.) in your edits, Magento displayed the following error:
There are 1 messages requires your attention. Please make corrections to the errors in the table below and re-submit. Fix submitted by Hiren Pandya in pull request 21939. GitHub-21374
QuoteManagement::submitQuotenow logs all root exceptions. Previously, Magento logged only the second exception in
exception.log. Fix submitted by Lars Roettig in pull request 22037. GitHub-14926, GitHub-18752
- Widget parameters can now contain multidimensional arrays. Fix submitted by Stanislav Ilnytskyi in pull request 22214. GitHub-19909
- Setting Price Navigation Step Calculation for layered navigation to Automatic (equalize product counts) now works as expected. Previously, results were not in the equals range, but omitted products. Fix submitted by Nazar Klovanych in pull request 22453. GitHub-6715, GitHub-21960
- Editing a theme now creates an entry in the Admin action log as expected.
- MAP (minimum advertised price) prices for the simple products that belong to a configurable product are now supported. MAP prices for these products are now successfully handled and displayed on the configurable product page and the category page display of the configurable product.
- The newsletter subscription input box now displays all text in mobile view. Fix submitted by dipti2jcommerce in pull request 20370. GitHub-20163
- We fixed an issue that caused a long delay when you tried to navigate away from the Admin newsletter subscribers page (Marketing > Communications > Newsletter Subscribers). Now, you can navigate away from this page as expected.
- Magento no longer displays a negative number in the dashboard to represent a canceled order. Fix submitted by Eduard Chitoraga in pull request 21944. GitHub-18754, GitHub-21281
- Page caching is no longer active when maintenance mode is enabled. Previously, Magento cached pages from all IP addresses during maintenance mode.
- Magento creates an order using PayPal Payflow Pro as expected when a customer enters all the credit card information that PayPal needs to create the transaction. Previously, Magento did not create the order even if a customer had entered all required credit card information.
- Magento now displays the account owner name that you have specified when you add a shipping address when using Braintree through PayPal and are redirected to Magento. Previously, Magento displayed the account owner’s name, not the name you specified.
- The PayPal
securetokenidare no longer vulnerable to compromise.
- The transfer cart line items and transfer shipping options in the the Shipping step of checkout now work for PayPal. GitHub-19064
- We improved accessibility by adding Alt attribute text that describes credit card type or stored payment methods during checkout. Fix submitted by Amol Chaudhari in pull request 21206. GitHub-21089
- You can now place an order using Cybersource payment from the Admin.
- Product search results now display the correct special price as set by a scheduled update. Previously, search results displayed the original special price, not the price set by the scheduled update.
- Magento now saves customizable option price input on the store-view level when Catalog Price Scope is set to Global.
- The quick order form now handles the SKUs that you enter for configurable products as expected. Previously, Magento threw an error when you tried to enter the SKU for a configurable product.
- Tier pricing for bundle products now works as expected: Magento displays the correct price in the cart, and reminds customers that they can buy a specific quantity of the product for a discount. Previously, Magento did not calculate the price correctly, and did not display any informative messages about tier pricing on the category and product pages.
- Reports now include orders from only the websites that the administrator has permissions for in multisite deployments. Previously, a report run by an administrator with access to one website only contained information about products and sales on other websites.
- The date range in reports no longer displays the same start and end dates. Fix submitted by Pratik Oza in pull request 21589. GitHub-20128
- The downloads report table (Admin > Reports > Downloads) now displays an accurate count of all downloadable products and the number of times they have been downloaded. Fix submitted by Shikha Mishra in pull request 22523. GitHub-22223
- Fixed rendering of the Add your text link on the Product page. Fix submitted by Amol Chaudhari in pull request 20257. GitHub-20221
- Pending Reviews are now correctly labeled under System > User Roles > Add New Role > Role Resources, and Magento now displays a new Pending reviews menu under Marketing > User Content. Previously, Magento displayed the Reviews menu twice. Fix submitted by Eduard Chitoraga in pull request 21849. GitHub-20924
- Product-level RMA disabling now works as expected.
- When you place an Admin order for a product with a custom price, the
sales_order_itemtable now behaves the same as it would for an order of a product with a regular price. Specifically, the price column contains the custom price excluding tax. Previously, the
sales_order_itemtable’s price column displayed the custom price including tax.
- Magento now lets you enter new orders in the Admin on non-default websites in multisite deployments where some countries have been restricted.
- Corrected the alignment of page elements on the Admin product reorder page. Fix submitted by Amol Chaudhari in pull request 21241. GitHub-20919
transportBuilderByStoreclass has been removed. Previously, this class was the cause of undesired repeat emails. Fix submitted by gwharton in pull request 18472. GitHub-11740, GitHub-14945, GitHub-14952, GitHub-16355
- You can now successfully re-order a virtual product. Fix submitted by Shikha Mishra in pull request 21513. GitHub-15059
- You can now change customer groups when creating a new customer during order creation on the Admin. Fix submitted by Amol Chaudhari in pull request 21239. GitHub-6162
- Fixed display of the Luma theme My Account Order status tabs in mobile view. Fix submitted by suryakant-krish in pull request 21250. GitHub-21070
- Magento now displays the Cart Price Rule code on the order details Admin page if free shipping applies. Previously, Magento did not display information about the Sales rule or why shipping was free.
- Sales rule validation has been refactored to eliminate a leak in the salesrule collection. Previously, a poorly constructed SQL query resulted in poor performance. Fix submitted by David Führ in pull request 21699. GitHub-19117
- We have fixed an error in discount calculations that prevented merchants from creating a rule that set a tax rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. Fix submitted by Stanislav Ilnytskyi in pull request 22227. GitHub-10790
- Layered navigation results no longer includes price ranges that contain no products.
- Elasticsearch now correctly returns only products whose SKUs contain dashes when your search criteria specifies SKUs that contain dashes. Previously, search results contained unmatched products as well as products whose SKUs contained dashes. Fix submitted by Nazar Klovanych in pull request 20876. GitHub-20716
- Fixed the alignment of the advanced search page price field in mobile view. Fix submitted by Amol Chaudhari in pull request 21114. GitHub-20157
- Corrected formatting of the Advance Search link in page footers. Fix submitted by Amol Chaudhari in pull request 21892. GitHub-20809
- The performance of the catalog search indexing that occurs after Elasticsearch upgrades has been improved substantially.
- The search icon on Admin page headers now works as expected. Fix submitted by Saphal Jha in pull request 22441. GitHub-22152
- The tracking pop-up window now displays an accurate value for the delivery date for FedEx shipments in transit.
- Magento now provides quotes for DHL shipments when DHL Content Type is set to Non Documents. Fix submitted by gwharton in pull request 19488. GitHub-19485
- If you retrieve an order, and then use the
getShippingMethodas an object function to retrieve the shipping method, Magento now returns
nullif no shipping method has been defined. Previously, this function returned an undefined index error if a shipping method was not available. Fix submitted by Mahesh Singh in pull request 20866. GitHub-20380
- Product images now display the color option you chose when you applied a color filter in layered navigation. Previously, the wrong colors were randomly displayed.
- You can now change an attribute type from swatch to dropdown without losing data. Previously, changing an attribute type from
dropdowndeleted swatch options for all attributes. Fix submitted by Amol Chaudhari in pull request 20745. GitHub-20396
- When you configure a price rule for configurable products with swatches, Magento now a shows the special price for products that match the price rule. Previously, Magento displayed both the old price and the special price for the matching configurable products. Fix submitted by Pratik Oza in pull request 21695. GitHub-19276
- You can now successfully search for a tax rule based on both the Name and Tax Rate fields. Previously, Magento threw a MySQL error. Fix submitted by Tuyen Nguyen in pull request 21535. GitHub-21521
- The value of
product_price_valuein the shopping cart data section now includes taxes if the configuration settings are set accordingly (Stores > Configuration > Sales > Tax > Shopping Cart Display Settings > Display Prices > Including Tax). Fix submitted by Pratik Oza in pull request 21570. GitHub-20310
- The tax that is applied to a simple child product is now based on the tax class of that product. Previously, Magento based the tax for a child product on the tax class of its parent product.
- The tax that is applied to simple child product is now based on the tax Class of that product. Previously, the tax was based on the tax class of the parent product.
- The shopping cart full tax summary now displays total tax as expected instead of individual tax values. Fix submitted by Hiren Pandya in pull request 21961. GitHub-19701, GitHub-11358
- We added the
phpcslinter rule to the static test rules. Fix submitted by Maksym Novik in pull request 21543. GitHub-21062
- Integration and functional tests no longer fail when tests encounter filtered configuration values. Previously, Magento threw an error and tests failed if some configuration values were intentionally excluded. Fix submitted by Bettina in pull request 22415. GitHub-22307
- Form fields of type multiline now work as expected on Admin forms. Fix submitted by Vivek Kumar in pull request 21561. GitHub-8086, GitHub-18115
- The default design of the Edit and Remove items buttons on the Wish List page now match. Fix submitted by Amol Chaudhari in pull request 21118. GitHub-20790
- Magento no longer throws a console error during a guest checkout when the list of allowed countries is modified from the Admin page. Fix submitted by Amol Chaudhari in pull request 20885. GitHub-20631
errorevent now bubbles upwards when an abstract element is nested in a field set. Fix submitted by Prince Patel in pull request 20510. GitHub-17926
- The drop-down toggle arrow on product pages now closes as closing as expected. Fix submitted by Nirav Patel in pull request 20616. GitHub-20240
- Fixed the alignment of drop-down menus on the Advanced Pricing page. Fix submitted by Pratik Oza in pull request 21229. GitHub-18775
- The icon that identifies a drop-down menu throughout the product interface now reflects the changing state of the drop-down menu status (expanded or collapsed). Fix submitted by Eduard Chitoraga in pull request 21320. GitHub-21196
- You can now programmmatically upload an image for the customer attribute. Previously, Magento threw the following error:
error: Base64 is not defined. Fix submitted by Nazar Klovanych in pull request 21437. GitHub-19983
- Corrected tabbing issue on the product page. Fix submitted by Amol Chaudhari in pull request 21588. GitHub-21077
- If you retrieve an order, and then use the
getShippingMethodas object function to retrieve the shipping method, Magento now returns
nullif no shipping method has been defined. Previously, this function returned an undefined index error if a shipping method was not available. Fix submitted by Mahesh Singh in pull request 20866. GitHub-20380
- Magento now cancels previous scrolling actions as expected when you click Add to cart on a product page. Previously, Magento scrolled back to the
qtyinput box the same number of times as you clicked Add to cart. Fix submitted by Amol Chaudhari in pull request 22358. GitHub-21715
- Magento now properly renders double hyphens (–) in attribute tags. Previously, Magento replaced the double hyphen (—-) in classes with a single hyphen (-), which caused classes that contained the – to be rewritten. Fix submitted by Amol Chaudhari in pull request 21804. GitHub-10645
- Magento now retains filter terms after you have applied a filter to the Admin
url_rewritestable, then click the back button. Fix submitted by Amol Chaudhari in pull request 21805. GitHub-21805
- The import process now retains permanent redirects for outdated product URLs as expected. Previously, the import process removed these redirects, and when you tried to open the changed product by the old URL key, Magento displayed a 404 page. Fix submitted by Shikha Mishra in pull request 20737. GitHub-20282
- The store switcher now works in multistore deployments. Previously, the switcher redirected the user to the home page, not to the alternative store view as expected. Fix submitted by Janak Bhimani in pull request 21140. GitHub-19714
- Magento can now validate Greek VAT numbers. Fix submitted by Amol Chaudhari in pull request 21169. GitHub-6960
Web API framework
- Magento now throws an error as expected when you send an API request that specifies
currentPagevalues that exceed the number of products in the catalog that you are querying. Previously, when you queried a catalog and specified values that exceeded catalog size, the API would ignores the specified
currentPagevalue, and return the same results as the highest valid
- You can now use REST in scope
allto save an existing category that does not have a name attribute. Previously, Magento threw the following exception:
Could not save category with message. The "Name" attribute value is empty. Set the attribute and try again. Fix submitted by Saphal Jha in pull request 22440. GitHub-22309
PUT /V1/products/:sku/media/:entryIdAPI operation now updates product images as expected. Previously, this operation updated the label, types, and disabled settings, but the actual
file-contentwas not replaced with the values that were provided in
base64_encoded_data. Fix submitted by Nirav Patel in pull request 22533. GitHub-22402
- The wish list quantity field now has limits on both the type and number of characters that you can enter. Previously, you could enter an extremely large quantity of both number and letters into this field, which resulted in undesirable, inaccurate quantity changes
- Customer wish lists now include review summaries for included products. Fix submitted by Amol Chaudhari in pull request 21759. GitHub-21419
- Issue: The Async/Bulk Web APIs support only the default store view. A hot fix for this issue will be available in the near future.
This release includes substantial community contributions: over 100 GitHub issues resolved and over 350 pull requests merged. We are grateful to the wider Magento community for this effort and would like to acknowledge their contributions to this release.
Individual contributor contributions
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.
|Contributing community member||Pull Requests||Related GitHub Issues|
|amol2jcommerce||#21239||6162, 7974, 21144|
|gwharton||#18472||11740, 14945, 14952, 16355|
The following table highlights contributions made by Partners. This table lists the Partner who contributed the pull request, the external pull request, and the GitHub issue number associated with it (if available).
|Partner||Pull Request||Related GitHub Issue|
|Atwix||22108, 22267, 21944, 21945, 22214||21786, 22238, 21281, 18754, 19909|
|Krish Technologies||22440, 22441, 22465, 22543, 20844, 21203, 22536, 21961, 22471, 21118, 22473, 22582, 21944, 21961, 22440, 22441, 22465, 22473, 22533, 22536, 22543||22309, 22152, 21596, 20614, 9155, 19701, 11358, 6272, 20790, 20917, 21281, 18754, 19701, 11358, 22309, 22152, 22402|
|TechDivision||22037, 22037||18752, 14926, 20391|
|MageSpecialist||22422, 22078||7906, 21868|
|Two Jay||21118, 21892, 22039, 22069, 22070, 22181, 21946, 22295, 22378, 22358, 22534, 22551, 22579, 22535||20790, 21611, 21805, 10893, 21375, 20209, 20366, 22270, 21978, 22299, 21715|
|Mediotype||22282, 22086, 22413||21134, 15090|
|integer_net GmbH||21946, 22439||20209, 15828|
Our technology stack is built on PHP and MySQL. For details, see Technology stack requirements.
Installation and upgrade instructions
See How to get the Magento software for complete installation and upgrade information.
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.2.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.