Adobe Commerce 2.4.1 introduces enhancements to performance and security plus significant additions to the B2B feature set. Security enhancements include support for the SameSite
attribute for cookies and the addition of CAPTCHA protection for payment-related and order-related API endpoints and the Place Order storefront page. B2B improvements focus on the order approval process, B2B shipping methods, expanded logging of Admin actions, and enhanced security on storefront.
This release includes all improvements to core quality that were included in 2.4.0, over 150 new fixes to core code, and over 15 security enhancements. It includes the resolution of almost 300 GitHub issues by our community members. These community contributions range from minor clean-up of core code to significant enhancements in GraphQL.
All known issues identified in 2.4.0 have been fixed in this release.
Adobe Commerce and Magento Open Source releases may contain backward-incompatible changes (BICs). To review backward-incompatible changes, see BIC reference. Major backward-incompatible issues are described in BIC highlights. Not all releases introduce major BICs.
AC-3022.patch
to continue offering DHL as a shipping carrierDHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply AC-3022.patch
at their earliest convenience to continue offering DHL as a shipping carrier. See the Apply a patch to continue offering DHL as shipping carrier Knowledge Base article for information about downloading and installing the patch.
Merchants can now install time-sensitive security fixes without applying the hundreds of functional fixes and enhancements that a full quarterly release (for example, 2.4.0-p1) provides. Patch 2.4.0.1 (Composer package 2.4.0-p1) is a security patch that provides fixes for vulnerabilities that have been identified in our previous quarterly release, 2.4.0. All hot fixes that were applied to the 2.4.0 release are included in this security patch. (A hot fix provides a fix to a released version that addresses a specific problem or bug.)
For general information about security patches, see Introducing the New Security Patch Release. For instructions on downloading and applying security patches (including patch 2.3.5-p2), see Quick start on-premises installation. Security patches include security bug fixes only, not the additional security enhancements that are included in the full patch.
Although code for these features is bundled with quarterly releases , several of these projects (for example, B2B, Page Builder, and Progressive Web Applications (PWA) Studio) are also released independently. Bug fixes for these projects are documented in the separate, project-specific release information that is available in the documentation for each project.
Look for the following highlights in this release.
This release includes over 15 security fixes and platform security improvements. All security fixes have been backported to 2.4.0-p1 and 2.3.6.
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. Most of these issues require that an attacker first obtains access to the Admin. As a result, we remind you to take all necessary steps to protect your Admin, including but not limited to these efforts: IP allowlisting, two-factor authentication, use of a VPN, the use of a unique location rather than /admin
, and good password hygiene. See Security Updates Available for Magento for a discussion of these fixed issues.
Security improvements for this release include:
CAPTCHA protection has been added to the following product areas:
CAPTCHA protection for these additional pages is disabled by default. It can be enabled on the Admin in the same way that other pages covered by CAPTCHA are. This protection has been added as an anti-brute force mechanism to protect stores against carding attacks. See CAPTCHA.
Support for the SameSite attribute for cookies. To support the Google Chrome enforcement of the new cookie classification system, the application classes that handle cookies have been updated to support the SameSite
cookie attribute. This attribute is set to Lax
by default but can be explicitly overridden.
Enhanced Security Scan Tool. Adobe has partnered with Sanguine Security, a leader in preventing digital skimming, to integrate their database of over 8700 threat signatures into the Security Scan Tool. This partnership will enable merchants to get real-time insights into the security status of their site through proactive detection of malware and reduction of false positives. Merchants can register for the tool by visiting https://account.magento.com/scanner
. For more information, see the Secure Your Storefront With the Enhanced Security Scan Tool blog post.
Starting with the 2.3.2 release, we will assign and publish indexed Common Vulnerabilities and Exposures (CVE) numbers with each security bug reported to us by external parties. This allows users to more easily identify unaddressed vulnerabilities in their deployment. You can learn more about CVE identifiers at CVE.
This release contains enhancements to core quality, which improve the quality of the Framework and these functional areas: Customer Account, Catalog, CMS, OMS, Import/Export, Promotions and Targeting, Cart and Checkout, B2B, and Staging and Preview.
Reduction in the size of network transfers between Redis and Magento. Plugin list configuration is now generated during the execution of the bin/magento di:compile
command. This configuration information is written to generated metadata folders based on scope. Previously, this information was stored in cache. Resulting performance improvements include a decrease in network cache size and execution time for many scenarios.
Enhanced message queue consumer performance. Three new configuration settings support a decrease in consumer queue CPU consumption. These optional parameters provide increased control over consumers and save server resources. See Configure message queues for a description of the maxIdleTime
, sleep
, and onlySpawnWhenMessageAvailable
parameters.
Improved execution time for bin/magento
commands.
This release includes Adobe Stock Integration v2.1.0.
The New Media Gallery is now enabled by default in the Admin. Merchants can now perform these actions on images in the Media Gallery:
Page Builder now supports full screen mode, which supports easier editing of content and provides a consistent experience editing content across the Admin. See Workspace.
This release adds GraphQL coverage for the following features:
Product reviews. Customers and guests can write product reviews. Customers can retrieve their product review histories. See Create a product review and productReviewRatingsMetadata query for information on retrieving information about the reviews infrastructure.
Gift options. All customers and guests can add a gift message to their order. On Adobe Commerce installations, they can also add gift wrapping, gift receipts, and printed cards to the order. See setGiftOptionsOnCart
mutation and updateCartItems
mutation
Reward points. Customers can apply or remove reward points to their carts. They can also view their reward point history. See applyRewardPointsToCart
and removeRewardPointsFromCart
for a discussion of managing reward points within a cart.
Order history. All customers can view details about their order histories, including invoices, shipping, and refunds.
Add to cart. The addProductsToCart
mutation allows you to add any type of product to the active cart. We recommend using this mutation instead of single-purpose mutations such as addSimpleProductsToCart
. Fix submitted by Yaroslav Rogoza in pull request 27914. GitHub-28524
Stored payment methods. Logged-in customers can now store payment details (including Braintree credit card and Braintree with PayPal) in My Account.
Support for wish lists in Magento Open Source. You can add items to, update items in, and remove items from a wish list.
Improved management of customer accounts. We have added the createCustomerV2
and updateCustomerV2
mutations to manage customer accounts. These new mutations require different input objects than the createCustomer
and updateCustomer
mutations. To change a customer’s email address, use the new updateCustomerEmail
mutation.
Support for Payflow Pro Vault. Added GraphQL Vault support for the Payflow Pro Vault payment method. Fix submitted by Oleh Usik in pull request 28821. GitHub-28520
Updated the GraphQL storeConfig
query to include new customer configuration settings. Fix submitted by Oleh Usik in pull request 27876. GitHub-28521
Added the requestPasswordResetEmail
mutation, which triggers the password reset email for the provided email address. Fix submitted by Oleh Usik in pull request 27876. GitHub-28521
Klarna GraphQL. Added or updated topics on Klarna GraphQL in Klarna’s payment method and createKlarnaPaymentsSession
See the GraphQL Developer Guide for details on these enhancements.
PWA Studio v8.0.0 introduces new features and enhancements:
Updates to the Venia style guide that apply to design tokens, typography, colors, core components, and page layouts
Improvements to the Venia mini-cart experience
Initial support for multiple locales and localized content on the Venia storefront
Numerous improvements to the MyAccount experience of the Venia storefront
See compatibility for a list of PWA Studio versions and their compatible versions. For information about enhancements and bug fixes, see PWA Studio releases.
Version 2.4.1 introduces B2B v1.3.0. This release includes improvements to order approvals, shipping methods, shopping cart, and logging of Admin actions.
B2B order approvals have been enhanced to improve usability and to allow for bulk actions on purchase orders.
Improvements to order approval and rejection include the following:
New View Rule page for users without edit privileges. B2B buyers can now view rules that apply to their company on the new View Rule page when they do not have permission to edit them.
Count alert icon on the Requires My Approval tab. The Requires My Approval tab in the My Purchase Orders view now displays a counter that indicates the number of pending approval actions.
Bulk order approvals and rejections. B2B managers and Company Administrators can now perform bulk rejection and approval of purchase orders. These changes allow approvers to approve or reject multiple purchase orders in a single action.
Merchants can now search the Applies to and Requires approval from fields of the My Purchase Orders view and can select multiple user roles during rule creation.
Examples of how to configure Order Approval rules are provided on the Rule Configuration page.
See Approval rules
B2B merchants can now control shipping methods that are offered to each Company. Merchants can configure the following from the Admin:
Merchants can now allow users to clear the contents of their shopping cart in a single action and can configure this ability independently on each website.
B2B buyers can now add individual items or the entire contents of their shopping cart directly to a requisition list.
See B2B Features.
To reduce creation of fraudulent or spam accounts, merchants can now enable Google reCAPTCHA on the New Company Request form on the storefront. See reCAPTCHA.
Admin actions taken in the Company modules are now logged in the Admin Actions Log. Actions are logged from all relevant company modules: Company
, NegotiableQuote
, CompanyCredit
, SharedCatalog
.
This release also includes multiple bug fixes. See B2B Release Notes.
MFTF 3.1.0 is now available. See Functional Testing Framework Changelog.
See the following articles for updates on features and changes for this release:
We have fixed hundreds of issues in the 2.4.1 core code.
The default website isn't defined. Set the website and try again
. This was a known issue in 2.4.0.bin/magento setup:di:compile
no longer throws a fatal error. Previously, the application threw an error the first time you ran this command, but the second execution resulted in successful compilation.Magento\Framework\Encryption\Encryptor
.bin/magento setup:static-content:deploy
. Previously, when deployment completed successfully but not all packages were deployed, the application did not display an error. When this command is executed with enabled parallel processing and each theme requires more time to be deployed then the specified maximum execution time, this command can finish successfully, although themes are not deployed./bin/magento config:show vendor_module/general/value
now returns 0
or an empty string as expected. Previously, it returned Configuration for path: "vendor_module/general/value" doesn't exist
. Fix submitted by Vadim Malesh in pull request 28549. GitHub-23290MEMORY
to InnoDB
. At this point, the content of these tables became out-of-sync between the nodes of the Galera cluster. GitHub-25334bin/magento sampledata:deploy
to deploy sample data as expected after installing Adobe Commerce using Composer. Previously, the application threw this error: Git installations must deploy sample data from GitHub; see https://devdocs.magento.com/guides/v2.3/install-gde/install/sample-data-after-clone.html for more information
. Fix submitted by Andrii Beziazychnyi in pull request 27481. GitHub-19481Datepicker
component. Fix submitted by Mateusz Krzeszowiak in pull request 27860. GitHub-28823bin/magento setup:upgrade
now completes as expected. Previously, the application displayed printed array content for caches. Fix submitted by Sathish Subramanian in pull request 27567. GitHub-27091bin/magento setup:static-content:deploy --language=all
now deploys all languages that are used on the storefront and all languages configured by Admin users when no language parameter is set. (en_US
is always deployed by default.) Fix submitted by Anton Evers in pull request 28922. GitHub-29218DataObject
. Fix submitted by jmonteros422 in pull request 29435. GitHub-1711\Magento\MediaGallery\Model\ResourceModel\Keyword\SaveAssetsKeywords::execute
now deletes the links to the keywords that are not specified on the parameters and insert the new ones when deleting keyword tags while editing image details. Fix submitted by jmonteros422 in pull request 29207. GitHub-1391Login failed
message that the application displays when a merchant clicks License for a previously saved, unlicensed Adobe Stock image no longer contains HTML tags. Fix submitted by yolouiese in pull request 29398. GitHub-1684page
and category
) is now listed corrected in the image Details page. Fix submitted by Nazar Klovanych in pull request 29367. GitHub-1747UrlFilterApplier
component to apply filters on product,cms_page
, and cms_block
grids using the GET URL parameter. Fix submitted by Gabriel da Gama in pull request 28932. GitHub-1501Amazon Pay now checks whether a user is already logged in before rendering payment options.
Issues with multi-factor authentication and abandoned carts have been resolved.
Amazon Pay now correctly populates the store name
in emails and other displayed locations. If the Store Name field in Amazon Pay configuration is empty, the extension retrieves the store’s default name (that is, the name you give your store in the Admin).
Localization/translation issues for Decline scenarios have been addressed. Displayed text is no longer always in English.
quotes.csv
file to Inventory, and as a result, Inventory did not generate the expected reports.Braintree now sends the correct amount to PayPal when a promotion code is applied on the checkout page.
Apple Pay now works as expected when Terms & Conditions are enabled on the checkout page.
Browser errors no longer occur during checkout on desktop devices when Venmo is enabled from the Admin.
Checkout no longer fails when the shopper enters special characters in the Name fields of the checkout workflow. Previously, authentication failed because the Braintree 3DS API did not support non-ASCII characters.
The application now displays the correct recipient name in the shipping section of the checkout workflow when placing an order using PayPal.
The application now updates the Order Review page as expected when a shopper changes the shipping method more than once during checkout.
Magento_InventoryBundleProduct
module is disabled.radio
and dropdown
with multiple choices. Previously, the application displayed a message about invalid input for BundleItem.type: radio/dropdown
. Fix submitted by Michał Derlatka in pull request 29256. GitHub-26110config
has been reduced. Fix submitted by Lukasz Bajsarowicz in pull request 28992. GitHub-29159Connection reset by peer
error when a large catalog is reindexed on schedule. Fix submitted by Matthew O’Loughlin in pull request 26256. GitHub-26255Please specify a regionId in shipping address
.The shipping address is missing. Set the address and try again
. GitHub-24218closeSidebar
function. The appropriate click binding has been added to the [data-action="close"]
element. Fix submitted by lumnn in pull request 28906. GitHub-29161children_count
values now remain positive when an administrator deletes categories. Previously, when an administrator deleted categories, the children_count
for remaining categories was negative. Fix submitted by Vitaliy Prokopov in pull request 28044. GitHub-27969page_layout
attribute when creating a new product. Previously, your selected default value was not applied.Notice: Undefined offset: 32000 in /Users/kodithuw/sites/m23inventory/inventory/InventoryCatalogAdminUi/view/adminhtml/templates/catalog/product/edit/action/inventory.phtml on line 24
{products(filter: {sku: {eq: "some sku"}}) {…}
query now returns values that have been converted into the expected currency. Previously, price_tiers.final_price.value
displayed special prices in the base currency. Fix submitted by Petkovski Marjan in pull request 28890. GitHub-26121If ALL of these conditions are FALSE:, If ALL of these conditions are TRUE:, Attribute set is default
getRegionNameExpresion
method name to getRegionNameExpression
. Fix submitted by Pierre Grimaud in pull request 28832. GitHub-28829init
method has been removed from app/code/Magento/AdvancedPricingImportExport/Model/Import/AdvancedPricing/Validator/Website.php
and app/code/Magento/AdvancedPricingImportExport/Model/Import/AdvancedPricing/Validator/TierPriceType.php
. Fix submitted by Oleh Usik in pull request 28650. GitHub-29009localStorage
polyfill has been moved from base
to frontend
. Fix submitted by Ihor Sviziev in pull request 28749. GitHub-28900overflowed
class has been removed from the mini cart sidebar widget. Fix submitted by lumnn in pull request 28963. GitHub-29160lib/internal/Magento/Framework/App/Request/Http.php
file has been simplified by optimizing logic and removing redundant variable assignments and over-usage of returns within a function. Fix submitted by Chris Snedaker in pull request 28608. GitHub-29381bin/magento module:status
command now accepts multiple module names as arguments. Fix submitted by Chandru Rajendran in pull request 28250. GitHub-29344\Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable
. Fix submitted by Benjamin Rosenberger in pull request 29451. GitHub-29470TierPriceManagement
class has been refactored to remove redundant code. Fix submitted by Lukasz Bajsarowicz in pull request 29202. GitHub-29477autoload.php
has been refactored to improve readability and return speed. Fix submitted by Vitaliy Ryaboy in pull request 28923. GitHub-29527Notice: Undefined index: value_index in 23develop/app/code/Magento/ConfigurableProduct/Helper/Product/Options/Factory.php on line 101
./V1/products
to a configurable product with an int
value of 0. Previously, the application threw this error: Product with id "%1" does not contain required attribute "%2"."
Fix submitted by Vadim Malesh in pull request 29001. GitHub-13210size
attribute. Fix submitted by Abel Truong in pull request 27339. GitHub-26449mage-translation-file-version
and mage-translation-storage
cookie per session. Fix submitted by Ihor Sviziev in pull request 27364. GitHub-27355maxIdleTime
, sleep
, and onlySpawnWhenMessageAvailable
parameters.cron
expressions such as 3/10 * * * *
are now scheduled as expected. Fix submitted by Anton Evers in pull request 28930. GitHub-29240sales_clean_quotes
no longer loads all expired quotes at once. Previously, the applicationfailed with this fatal error because all expired quotes were loaded simultaneously: PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 20480 bytes) in /path/to/magento2/vendor/magento/framework/Model/AbstractModel.php on line 359
,bin/magento setup:static-content:deploy -f
. Previously, the application did not import the remote files and threw an error. GitHub-25119Internal error: Make sure you are using reCaptcha V3 api keys
."0":"No such entity with customerId = 3","1":"#1 Magento\\Customer\\Model CustomerRegistry->retrieve() called at [app\/code\/Magento\/Customer\/Model\/ResourceModel\/CustomerRepository.php:340"
.sortOrder
number of links in layout XML has been corrected. Previously, this order was reversed and used descending order. Fix submitted by Tu Nguyen in pull request 27340. GitHub-27162SQLSTATE[42S02]: Base table or view not found
.Order sync no long fails when an order contains product SKUs that no longer exist in the catalog.
Empty product categories are no longer included in web insight data.
Web behavior tracking now works for merchants with certain theme configurations. A new fallback selector addresses this.
The subscriber status data field no loner includes empty values when customer sync was run using cron. (App emulation addresses this issue.)
Address book mapping now works as expected when a dotdigital account is enabled at the default level but disabled for the main website.
Coupons are now generated (using the external dynamic content URL for coupon generation) for email addresses that contain plus (‘+’) signs.
Contacts are no longer resubscribed when their last_subscribed_at
value is null.
Upgrade errors (dating from 4.5.2) that affected earlier versions have been resolved.
A regression issue that was introduced in 4.5.3 that affected using a method to obtain the subscriber status when preparing subscriber export has been fixed.
The total figure for synced subscribers (presented in the logs and on screen) is now correctly calculated.
The product that was requested doesn't exist. Verify the product and try again
.stock_item
data is updated and downloadable product links and samples are preserved as expected when you use a REST PUT call to update stock_item
values. Previously, after the product update, the product no longer contained links to download content. Fix submitted by Vadim Malesh in pull request 28799. GitHub-21811processing
to another state, the order email did not reflect the status change.You already have an account with us. Sign in or continue as guest
.Content-Type: "text/plain"
. Previously, the applicationignored the content type specified in the template. Fix submitted by twoonesixdigital in pull request 26474. GitHub-26471customer.name
variable has been removed from the email template. Fix submitted by Paweł Tylek in pull request 29054. GitHub-29087You have placed no orders
. This was a known issue for 2.4.0.X-Magento-Tags
headers no longer exceed the size permitted by the HTTP specification. Previously, category pages that contain many products returned an X-Magento-Tag
header that resulted in a 503 error.sales_order_shipment_track_save_commit_after
is now triggered as expected when you used the REST API to create a shipment.di compile
fails due to a nonexistent dependency. Previously, the message displayed did not identify the class in which the exception occurred.report.CRITICAL: OOM command not allowed when used memory > 'maxmemory'
.Persistent
module is disabled. GitHub-14486tracking.phtml
have been removed.var/log/system.log
now displays a more accurate message when a user tries to access a non-existing resource file under the static directory and SCD OnDemand and production mode are enabled. The application now logs a 404 error. Previously, the application logged the same message that is logged when the error occurs in developer mode.ctx
, origNameToUrl
, and baseUrl
variables under window were leaked. Fix submitted by Mateusz Krzeszowiak in pull request 27622. GitHub-28110TypeError: Cannot read property 'map' of null
. Fix submitted by Mateusz Krzeszowiak in pull request 27690. GitHub-28340localStorage
or sessionStorage
are not available. Fix submitted by Mateusz Krzeszowiak in pull request 27619. GitHub-28381You have placed no orders
. Fix submitted by Vadim Malesh in pull request 28417. GitHub-28488addWarning
method has been replaced with the addWarningMessage
method in the security module. Fix submitted by kishorekumarkesavan in pull request 28264. GitHub-28308bin/magento
command-line commands is now consistent with requirements and coding standards. Fix submitted by Lukasz Bajsarowicz in pull request 28351. GitHub-28376backend_type = static
no longer removes the content of the frontend_class
field. Fix submitted by jiten-patel in pull request 27369. GitHub-27051responsive.js
have been removed from files that are loaded by themes. Fix submitted by Mateusz Krzeszowiak in pull request 27617. GitHub-28811updated_at table
, which re-set the expiry time.toolbar.js
twice. Fix submitted by Paweł Tylek in pull request 28838. GitHub-25934setGiftOptionsOnCart
mutation and updateCartItems
mutation. Fix submitted by Oleh Usik in pull requests 28519, 27956, 28072, 28072, and 246 in private repo partners-magento2ee. GitHub-253applyRewardPointsToCart
and removeRewardPointsFromCart
for a discussion of managing reward points within a cart. Fix submitted by Petkovski Marjan in pull request 285 in private repo partners-magento2ee and Dmitriy Gallyamov in pull requests 284 and 281 in private repo partners-magento2ee. GitHub-28835, GitHub-28833addProductsToCart
mutation allows you to add any type of product to the active cart. We recommend using this mutation instead of single-purpose mutations such as addSimpleProductsToCart
. Fix submitted by Yaroslav Rogoza in pull request 27914. GitHub-28524availableStores
query returns a list of configuration attributes for multiple stores available under the same website (based on the current store). It does not expose the list of websites. See availableStores
query. Fix submitted by Dmitriy Gallyamov in pull request 28794. GitHub-28569createCustomerV2
and updateCustomerV2
mutations to manage customer accounts. These new mutations require different input objects than the createCustomer
and updateCustomer
mutations. To change a customer’s email address, use the new updateCustomerEmail
mutation. Fix submitted by Michał Derlatka in pull request 28888. GitHub-28570updateCustomer
no longer allows you to set an invalid INT
value in the gender
argument. Fix submitted by Alexander Taranovsky in pull request 28487. GitHub-28481subscribeEmailToNewsletter
mutation to subscribe customers to a newsletter. See subscribeEmailToNewsletter
mutation. Fix submitted by Alexander Taranovsky in pull request 27586. GitHub-27337setShippingMethodsOnCart
mutation resolver. Fix submitted by Alexander Taranovsky in pull request 27349. GitHub-28262Please provide Email of sender
error associated with the sendEmailToFriend
mutation. Fix submitted by Alexander Taranovsky in pull request 28034. GitHub-28138products
query now returns product attribute option labels for the default store view as expected. Previously, this query returned the product attribute option labels that were set for the Admin. Fix submitted by Dmitriy Gallyamov in pull request 28647. GitHub-28568categoryList
query now returns the correct response when using fragments. Fix submitted by Ulzii in pull request 28710. GitHub-28584partners-magento2ee
. GitHub-28563You can now add a product to a cart using addSimpleProductToCart
when other items in the cart are out-of-stock. Previously, the applicationreturned this error: Some of the products are out of stock
. GitHub-26683
The default GraphQL Category
method now sorts by category position as expected. Fix submitted by Derrik Nyomo in pull request 29301. GitHub-104
Added support for wish lists in Magento Open Source. You can add items to, update items in, and remove items from a wish list. Fix submitted by Eduard Chitoraga in pull requests 28205 and 264 in private repo partners-magento2ee. GitHub-28551
The addProductsToCart
mutation allows you to add any type of product to the active cart. We recommend using this mutation instead of single-purpose mutations such as addSimpleProductsToCart
. Fix submitted by Yaroslav Rogoza in pull request 27914. GitHub-28524
Added GraphQL Vault support for the Payflow Pro Vault payment method. Fix submitted by Oleh Usik in pull request 28821. GitHub-28520
Updated the GraphQL storeConfig
query to include new customer configuration settings. Fix submitted by Oleh Usik in pull request 27876. GitHub-28521
Added the resetPassword
mutation. Fix submitted by Oleh Usik in pull request 27876. GitHub-28521
Added the requestPasswordResetEmail
mutation, which triggers the password reset email for the provided email address. Fix submitted by Oleh Usik in pull request 27876. GitHub-28521
Added discussion about Klarna GraphQL in Klarna’s payment method andcreateKlarnaPaymentsSession
error_report.csv
file now downloads with content and is available inside the var/import_history/
directory as expected. Previously, this file was not generated after import.error_report.csv
file as expected. Previously, the applicationgenerated the file but removed it after the import completed. Fix submitted by Vadim Malesh in pull request 28460. GitHub-28420Please enter a valid region
.catalog_category_product
table now updates as expected when an administrator creates a product in the Admin and assigns it to a category. Previously, the position of new products was always assigned a 0 value.AdvancedPricing.php
. GitHub-29531Magento_CacheInvalidate
now handles large tag patterns correctly when doing a PURGE
. sendPurgeRequest
has been refactored to handle an array of tags instead of requiring the caller to use implode()
. Fix submitted by Matthew O’Loughlin in pull request 26256. GitHub-26255bin/magento indexer:status
after re-indexing. Previously, shared indexers had an invalid status after a full re-index.There has been an error processing your request. Exception printing is disabled by default for security reasons
. GitHub-29502var/report
). Previously, the application logged these messages in the system log as critical issues.ipcre.backtrack_limi
t and pcre.recursion_limit
to approximately 1000000. Fix submitted by Mateusz Krzeszowiak in pull request 27270. GitHub-26026} else {
statements have been removed from interceptors, and array_map
has replaced foreach
. Fix submitted by Lukasz Bajsarowicz in pull request 27902. GitHub-28383app/code/Magento/Sales/Model/Order/Pdf/Items/Invoice/DefaultInvoice.php
). Fix submitted by Nathan de Graaf in pull request 28515. GitHub-28795Undefined class constant
error when an interceptor is generated. Fix submitted by Vova Yatsyuk in pull request 28797. GitHub-28981X-Forwarded-For
headers to 32 characters. Fix submitted by Ihor Sviziev in pull request 27221. GitHub-28693styles-old.less
file have been eliminated, and linting no longer identifies errors. Fix submitted by Tu Nguyen in pull request 28895. GitHub-24004NonComposerComponentRegistration.php
has been refactored. Fix submitted by Vitaliy Ryaboy in pull request 28975. GitHub-29308ResourceConnection.php
has been refactored to improve class readability. Fix submitted by Lukasz Bajsarowicz in pull request 29341. GitHub-29389Magento\CmsUrlRewrite\Plugin\Cms\Model\Store\View::aftersSave
plugin now returns a value as expected. Previously, this plugin did not return a value, and as a result, saving a store view resulted in an error. Fix submitted by Pieter Hoste in pull request 29035. GitHub-29034Added the following support for magic methods for DataObject
:
get/set/has/uns
magic methods (with usage of __call
)ScopeConfigInterface
can now be more than a string. The restriction of magentoConfigFixture
to string only was the inadvertent result of a previous pull request and has been reverted. Fix submitted by Kristof, Fooman in pull request 29305. GitHub-29345convertConfigTimeToUtc
method no longer throws a fatal error due to sending incorrect parameters to the Phrase
constructor. Fix submitted by Kos Rafał in pull request 29483. GitHub-29525Magento\Backend\Block\Widget\Grid\Column\Filter\Price::getCondition
and Magento\Backend\Block\Widget\Grid\Column\Filter\Price::getValue()
return an array with indexes that contain from
or to
string data. Previously, the application threw this error: Notice: A non well formed numeric value encountered in vendor/magento/module-backend/Block/Widget/Grid/Column/Filter/Price.php on line 197
. Fix submitted by Nikita Sarychev in pull request 29214. GitHub-29213app/code/Magento/CatalogInventory/Model/StockState.php
. Fix submitted by Vitaliy Prokopov in pull request 27758. GitHub-26702AdminSubmitAdvancedInventoryFormActionGroup
, AdminClickOnAdvancedInventoryLinkActionGroup
, and AdminSetStockStatusConfigActionGroup
action groups are now used within tests according to best practice. Fix submitted by Oleh USIA in pull request 29386. GitHub-29420SearchProductGridByKeywordActionGroup
is now used for search in the product grid. Fix submitted by Oleh Usik in pull request 29385. GitHub-29434AdminCategoriesClickDoneButtonOnPopupActionGroup
is now used to click Done on the Search Categories popup. Fix submitted by Oleh Usik in pull request 28989. GitHub-29380LoginToStorefrontActionGroup
is now used to replace a sequence of actions that is used for store front customer login. Fix submitted by Sathish Subramanian in pull request 28113. GitHub-28165AdminUpdateCustomURLRewritesPermanentTest
has been refactored to meet MFTF best practices. Fix submitted by Kate Kyzyma in pull request 28361. GitHub-28393StorefrontCheckoutClickNextButtonActionGroup
Fix submitted by Oleh Usik in pull request 29472. GitHub-29539AdminProductFormSaveActionGroup
Fix submitted by Oleh Usik in pull request 29142. GitHub-29292AdminSaveCategoryActionGroup
Fix submitted by Oleh Usik in pull request 28993. GitHub-29388AdminProductGridSectionClickFirstRowActionGroup
Fix submitted by Oleh Usik in pull request 29000. GitHub-29295AdminProductFormCategoryExistInCategoryListActionGroup
and AdminProductFormCategoryNotExistInCategoryListActionGroup
Fix submitted by Alexander Steshuk in pull request 28287. GitHub-28392AdminExpandCategoryTreeActionGroup
Fix submitted by Oleh Usik in pull request 29133. GitHub-29289AdminTaxRateGridOpenPageActionGroup
Fix submitted by Oleh Usik in pull request 29007. GitHub-29281AdminNavigateNewCustomerActionGroup
Fix submitted by Oleh Usik in pull request 29134. GitHub-29287Added test for deleting a CMS page as an Admin user. Fix submitted by Dmitry Tsymbal in pull request 28112. GitHub-28202
Added the StorefrontShareCustomerWishlistActionGroup
test for customer wishlist sharing with invalid email addresses. The existing test for wish list sharing (StorefrontShareWishlistEntityTest
) has been refactored. StorefrontCustomerShareWishlistActionGroup
has been deprecated.
Excel XML
option now results in the export of all rows as expected. Previously, exported data included only the page pagination value, not all rows.VerifyRegistredLinkDisplayedForGuestSubscriptionNoTest
and StorefrontCreateNewSubscriberActionGroup
. Fix submitted by Dmitry Tsymbal in pull request 28872. GitHub-29039GetAssetIdByContentFieldInterface
and its implementation on MediaContent
modules now permits Adobe Stock Integration to extend MediaGallery
filter functionality. Fix submitted by Gabriel da Gama in pull request 29058. GitHub-1464CustomerAddressI
values for a newly created customer is now validated in quotes. Fix submitted by Andrii Kalinich in pull request 29139. GitHub-28793Closed
. Previously, the applicationreported its order status as Complete
. Fix submitted by Andrii Kalinich in pull request 29023. GitHub-22762description
and short_description
product attributes have been re-ordered to better accommodate planned changes to Page Builder content staging. Fix submitted by Matt Walters in pull request 29238. GitHub-543Declined: 10601-Authorization has expired
.maxIdleTime
, sleep
, and onlySpawnWhenMessageAvailable
parameters.Plugin list configuration is now generated during the execution of the di:compile
command. This configuration information is written to generated metadata folders based on scope. Previously, this information was stored in cache. Resulting performance improvements include:
PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock
. GitHub-8933MC-35984-2.4.0-CE-composer.patch
addressed this issue for 2.4.0.entity_pk_value-entity_type-store_id
has been added to the review_entity_summary
table, which prevents the creation of duplicate rows for the same product ID (entity_pk_value
). Previously, this lack of unique key resulted in duplicate rows for the same product ID and SQL errors.Complete
after invoicing to an order that requires zero payment./rest/V1/shipment
endpoint now update orders properly. Previously, the application created a shipment, but shipment status remained in the processing state.We can't find any items matching these search criteria. Modify your search
.404 Not Found
error when a customer clicked the Remove button to remove points for any address. This was a known issue in 2.4.0.robots.txt
is now store-specific. Fix submitted by Vadim Malesh in pull request 29331. GitHub-28901sitemap.xml
file. Previously, when you included encoded characters in a product name or image title, the generated sitemap was invalid./V1/products/special-price
to update a product’s special price without specifying a price_to
parameter value. Previously, attempts to set the price update without the price_to
parameter specified were unsuccessful.config.php
and default website code from one website to install and configure the application on a second website in a multi website deployment. Previously, the default store and view disappeared after the export, and errors occurred on the storefront.The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later
. Fix submitted by Vadim Malesh in pull request 28822. GitHub-27098The performance of the product page under the following conditions has improved:
SynchronizeFilesInterface
is now covered by integration tests. Fix submitted by jmonteros422 in pull request 29493. GitHub-1742\Magento\TestFramework\TestCase\WebapiAbstract
that enables the comparison of large nested arrays of expected and actual outcomes in tests and permits testers to ignore irrelevant keys in the actual outcome. Fix submitted by Jekabs in pull request 29458. GitHub-29498app/code/Magento/Newsletter/Test/Unit/Model/SubscriptionManagerTest.php
. Fix submitted by Lukasz Bajsarowicz in pull request 29271. GitHub-29283ObjectManager
for instantiating classes during test has been replaced with the new keyword in unit tests. Fix submitted by Lukasz Bajsarowicz in pull request 29272. GitHub-29346updateCustomer
mutation: invalid date of birth, invalid email address, and empty customer last name. Fix submitted by Alexander Taranovsky in pull request 28304. GitHub-28394ApiFunctional TestFramework
GraphQL client now parses headers correctly. GitHub-26425bin/magento catalog:images:resize
. Previously, only themes that were assigned to stores were affected when bin/magento catalog:images:resize
was run.adminhtml
) before rendering inline translation markup. Previously, making an API call to /rest/V1/integration/admin/token
with bad credentials while inline translation was enabled results in the inclusion of inline translation markup around the error message in the API response. Fix submitted by Zach Nanninga in pull request 28856. GitHub-28656directory_country_region
table. Fix submitted by Nikola Lardev in pull request 27957. GitHub-28215tax_rates.csv
file as expected. Previously, merchants had to click on the edge of the Export Tax Rates button. This was a known issue in 2.4.0.this.disabled(true)
no longer appear on the storefront. GitHub-29098We received your order!
. Fix submitted by Angelo Romano in pull request 29410. GitHub-29416inside
. Fix submitted by Sean van Zuidam in pull request 29077. GitHub-29076Uncaught ReferenceError
error no longer appears in the dev console when you add a new tag and move the mouse cursor over it. Fix submitted by Nazar Klovanych in pull request 29392. GitHub-1700AdminAnalytics
test (TrackingScriptTest
). Fix submitted by Lukasz Bajsarowicz in pull request 28605. GitHub-28850Moving a store view to a different website no longer resets URLs. Previously, the applicationincorrectly regenerated CMS and product URL rewrites.
You can now successfully preview the staging schedule for a CMS block. Previously, the application threw a fatal error.
/V1/order/:id/invoice
to invoice the order did not display the gift card code or gift card amount applied./rest/V1/customers
requests. Previously, the application did not display an error message when you used an invalid group_id
in these requests. Fix submitted by Vadim Malesh in pull request 28903. GitHub-28064info_buyRequest
were deleted. Fix submitted by Vadim Malesh in pull request 28483. GitHub-22431V1/customers/me
now honors Share Customer Accounts setting (Admin Stores > Configuration > Customers > Customer Configuration > Account Sharing Options) when retrieving user information. Fix submitted by Pavel Bystritsky in pull request 28213. GitHub-26089extension_attributes
was sent to estimate-shipping-methods
. This bug, which was introduced by a previous commit, affected any extension attribute set on Magento\Quote\Api\Data\AddressInterface
that were not objects. Fix submitted by Alexander Menk in pull request 27338. GitHub-26682V1/customers/:id
endpoint. Previously, the endpoint required you to specify the customer email and other fields that are required to create a customer. Fix submitted by Vadim Malesh in pull request 28332. GitHub-21237Invalid Form Key. Please refresh the page
.Map
, WeakMap
, FormData
, and MutationObserver
are now loaded only as needed. Fix submitted by Dmitry Tsymbal in pull request 28330 and Mateusz Krzeszowiak in pull request 27618. GitHub-28377, GitHub-28382StorefrontShareWishlistEntityTest
has been refactored. StorefrontCustomerShareWishlistActionGroup
has been deprecated. Fix submitted by Dmitry Tsymbal in pull request 28330. GitHub-28377Issue: The new CAPTCHA feature for checkout does not work as expected on the Place Order page when using third-party payment providers. Merchants running 2.3.6 or 2.4.1 who have enabled CAPTCHA protection on the Place Order storefront page will see this error when checking out using a third-party payment provider such as PayPal: Please provide CAPTCHA code and try again
. Workaround: A fix for this issue is now available. See the Adobe Commerce v2.3.6/2.4.1 CAPTCHA in checkout not working Knowledge Base article. A fix will also be included in our next quarterly patch (Q12021).
Issue: Users without administrator privileges cannot currently set up their personal 2FA access. 2FA includes two ACL roles. One role affects global system configuration and it is needed only when configuring the system. The second ACL role affects individual user 2FA accounts. An admin user must configure this second type of 2FA ACL. Workaround: After the user has logged in and seen the Access denied screen, they can visit https://<magento store>/<admin_path>/tfa/tfa/requestconfig/
to force configuration. Note: We do not recommend disabling security settings. However, this workaround is effective only when Admin URL secret keys are disabled.
Issue: The Create an Account button on the Create New Account page remains disabled if a shopper has entered invalid data. This prevents shoppers from re-attempting to create an account after making an error. Workaround: Apply patch MC-38509
. A fix will also be included in our next quarterly releases (2.4.2, 2.4.1-p1 and 2.3.6-p1), which are scheduled for release in Q1 2021. See the 2.4.1 and 2.3.6 create an account button disabled hotfix Knowledge Base article. GitHub-30513
Issue: Merchants cannot log in to dotdigital from the Admin in Safari when dotdigital is enabled. See the It’s impossible to login in the dotdigital via admin panel when dotdigital account is enabled Knowledge Base article.
Issue: Vertex address validation does not work during payment when the shopper selects a shipping address that differs from the billing address. The issue will be fixed in 2.4.2. See the 2.4.1 known issue: Vertex Address Validation message does not disappear after updating address Knowledge Base article.
Issue: The application displays an empty page when a merchant saves a dotdigital Page Builder form on the Safari browser. Workaround: Reload the page to apply your changes. See the 2.4.1 known issue: empty page after saving dotdigital Page Builder form Knowledge Base article.
Issue: Under certain conditions, the application automatically signs in customers to previously used Amazon accounts rather prompting them to log in during checkout with Amazon Pay. See the 2.4.1 known issue: unable to change Amazon account in Google Chrome Knowledge Base article.
Issue: The application briefly displays an error message on the billing page of the checkout workflow when PayPal Braintree payment and multiple addresses shipment are selected. See the 2.4.1 known issue: error popping up on Checkout with PayPal Braintree Knowledge Base article.
Issue: The application displays a non-informative error message when a guest customer tries to place an order with PayPal through Braintree when guest checkout is disabled. See the 2.4.1 known issue: non-informative error message during guest checkout using Paypal through Braintree Knowledge Base article.
We are grateful to the wider Magento Open Source community and would like to acknowledge their contributions to this release. Check out the following ways you can learn about the community contributions to our current releases:
If a community member has provided a fix for this release, we identify the fix in the Fixed Issue section of these notes with the phrase, “Fix provided by community member”.
The Community Engineering team Magento Contributors maintains a list of top contributing individuals and partners by month, quarter, and year. From that Contributors page, you can follow links to their merged PRs on GitHub.
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).
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 |
---|---|---|
Nazar Klovanych | #28048 | |
Volodymyr Zaets | #27948 | |
Volodymyr Zaets | #27662 | |
Ajith | #26704 | |
Tu Nguyen | #27572 | 27058 |
Dzung Nguyen | #27455 | 23440 |
Rohan Hapani | #27359 | 27358 |
Mateusz Krzeszowiak | #27622 | 28110 |
Mateusz Krzeszowiak | #27270 | 26026 |
Serhii Dzhepa | #28168 | |
Oleg Aleksin | #28150 | 28149 |
Sathish Subramanian | #28113 | 28165 |
Nikola Lardev | #27957 | 28215 |
Marvin Hinz | #26572 | 26550 |
Sathish Subramanian | #28174 | 28201 |
Vadim Malesh | #28108 | 5477 |
Dmitry Tsymbal | #28112 | 28202 |
Tu Nguyen | #27828 | 27543 |
Tu Nguyen | #27642 | 27633 |
Alok Patel | #27134 | 28167 |
Tu Nguyen | #28084 | 28059 |
Tu Nguyen | #28083 | 27095 |
Ajith | #28039 | |
Tu Nguyen | #28032 | 22702, 26022 |
Oleh Usik | #27670 | |
Ivan Chepurnyi | #22829 | |
Oleh Usik | #28466 | |
Oleh Usik | #28450 | |
Oleh Usik | #28449 | |
Kate Kyzyma | #28418 | |
Kate Kyzyma | #28408 | |
Kate Kyzyma | #28391 | |
Kate Kyzyma | #28361 | 28393 |
Dmitry Tsymbal | #28330 | 28377 |
Alexander Taranovsky | #28304 | 28394 |
Nikolaj Malevanec | #28287 | 28392 |
Oleh Usik | #28105 | 253 |
Alexander Taranovsky | #28034 | 28138 |
Oleh Usik | #27956 | 253 |
Lukasz Bajsarowicz | #27903 | |
Lukasz Bajsarowicz | #27902 | 28383 |
Mateusz Krzeszowiak | #27871 | 28339 |
Evgeny Levinsky | #27839 | 28305 |
Mateusz Krzeszowiak | #27690 | 28340 |
Mateusz Krzeszowiak | #27619 | 28381 |
Mateusz Krzeszowiak | #27618 | 28382 |
Alexander Taranovsky | #27586 | 27337 |
Andrii Beziazychnyi | #27481 | 19481 |
Alexander Taranovsky | #27373 | 28040 |
Paweł Tylek | #27356 | 28433 |
Paweł Tylek | #27357 | 28166 |
Ihor Sviziev | #27260 | 28342 |
Oleh Usik | #28467 | |
Kate Kyzyma | #28407 | |
WK | #28547 | 28685 |
Eduard Chitoraga | #28222 | 28261 |
Bartłomiej Szubert | #28015 | 28011 |
Kate Kyzyma | #28631 | |
Kate Kyzyma | #28629 | |
Oleh Usik | #28498 | |
Oleh Usik | #28496 | |
Kate Kyzyma | #28469 | |
Vadim Malesh | #28417 | 28488 |
Lukasz Bajsarowicz | #28606 | |
Lukasz Bajsarowicz | #28601 | |
kishorekumarkesavan | #28264 | 28308 |
Vitaliy Prokopov | #27854 | 27489 |
Eduard Chitoraga | #27451 | 21101 |
Abel Truong | #27339 | 26449 |
Alexander Menk | #27338 | 26682 |
Dipesh Rangani | #27106 | 27099 |
Bartłomiej Szubert | #28735 | 26504 |
Kate Kyzyma | #28725 | |
Vadim Malesh | #28332 | 21237 |
Oleh Usik | #27549 | 28755 |
Oleksandr Melnyk | #28666 | |
Petkovski Marjan | #28714 | |
Dmitriy Gallyamov | #28647 | 28568, 28572 |
Dmitry Tsymbal | #28641 | 28720 |
Dmitry Tsymbal | #28632 | 28721 |
Dmitry Tsymbal | #28635 | 28744 |
Kate Kyzyma | #28457 | |
Eduard Chitoraga | #28205 | |
Oleh Usik | #28072 | 253, 246, 28519 |
Vitaliy Prokopov | #28044 | 27969 |
Mateusz Krzeszowiak | #27616 | 28807 |
Toan Nguyen | #27064 | 27063 |
Nazar Klovanych | #28798 | 1474 |
Lukasz Bajsarowicz | #28605 | 28850 |
Pavel Bystritsky | #28213 | 26089 |
Sathish Subramanian | #28004 | 27985 |
Mateusz Krzeszowiak | #27860 | 28823 |
Nazar Klovanych | #28739 | |
Nathan de Graaf | #28515 | 28795 |
Vadim Malesh | #28460 | 28420 |
Vadim Malesh | #28421 | 28357 |
Lukasz Bajsarowicz | #28351 | 28376 |
Lukasz Bajsarowicz | #27965 | 27962 |
Sathish Subramanian | #27567 | 27091 |
quangdo-aligent | #27429 | 28306 |
Kate Kyzyma | #28727 | |
Kate Kyzyma | #28684 | |
Kate Kyzyma | #28679 | |
Kate Kyzyma | #28401 | |
jiten-patel | #27369 | 27051 |
Vadim Malesh | #28483 | 22431 |
Mateusz Krzeszowiak | #27617 | 28811 |
Vadim Malesh | #28822 | 27098 |
Oleksandr Melnyk | #28855 | |
Dmitriy Gallyamov | #28745 | 28628 |
Petkovski Marjan | #28743 | |
Michał Derlatka | #28713 | 28561 |
Ulzii | #28710 | 28584 |
Alexander Taranovsky | #28506 | |
Alexander Taranovsky | #28492 | |
Alexander Taranovsky | #28487 | 28481 |
Alexander Taranovsky | #27349 | 28262, 28427 |
Oleh Usik | #28991 | |
Dmitry Tsymbal | #28972 | 29032 |
Kate Kyzyma | #28869 | |
Konstantin | #28810 | 28982 |
Oleh Usik | #28696 | 29012 |
Oleh Usik | #28956 | |
Oleh Usik | #28942 | |
Oleh Usik | #28941 | |
Dmitry Tsymbal | #28872 | 29039 |
Oleh Usik | #28854 | |
Pierre Grimaud | #28832 | 28829 |
Kate Kyzyma | #28661 | |
Maciej Pawłowski | #26534 | 28968 |
Vadim Malesh | #28898 | 23638 |
Oleh Usik | #28852 | |
Dmitry Tsymbal | #28812 | 28969 |
Oleh Usik | #28650 | 29009 |
Michał Derlatka | #28904 | 26107 |
Dmitriy Gallyamov | #28794 | 28569 |
Petkovski Marjan | #28757 | 28563 |
Oleksandr Melnyk | #28747 | |
Eduard Chitoraga | #27882 | 250 |
Paweł Tylek | #29054 | 29087 |
Oleh Usik | #29002 | |
Oleh Usik | #28959 | |
Oleh Usik | #28955 | |
Gabriel da Gama | #28932 | 1501 |
Oleh Usik | #28925 | |
Vadim Malesh | #28903 | 28064 |
Andrii Kalinich | #28839 | 26723 |
Vadim Malesh | #28799 | 21811 |
Vova Yatsyuk | #28797 | 28981 |
Vadim Malesh | #28752 | 24922 |
Ihor Sviziev | #28749 | 28900 |
Vadim Malesh | #28549 | 23290 |
Nazar Klovanych | #28366 | 824, 972 |
Madhu Rajawat | #27516 | 26191 |
Aditya Yadav | #26660 | 28143 |
Nazar Klovanych | #29144 | |
Nazar Klovanych | #29071 | |
Oleh Usik | #29053 | |
Michał Derlatka | #28888 | 28570 |
Slava Mankivski | #29179 | |
Max Mezhensky | #28210 | |
Pavlo Sydorenko | #27850 | |
Nazar Klovanych | #29149 | |
Oleh Usik | #29143 | |
Vadim Malesh | #29001 | 13210 |
Paweł Tylek | #28838 | 25934 |
Petkovski Marjan | #28890 | 26121 |
Oleh Usik | #29156 | |
Gabriel da Gama | #29058 | 1464 |
Oleh Usik | #29004 | |
Rafael Corrêa Gomes | #28891 | 29056 |
Bartłomiej Szubert | #28285 | 26427 |
Oleh Usik | #29162 | |
Sean van Zuidam | #29077 | 29076 |
Oleh Usik | #28999 | |
Anton Evers | #28922 | 29218 |
Zach Nanninga | #28856 | 28656 |
Tu Nguyen | #27340 | 27162 |
Ihor Sviziev | #27221 | 28693 |
Andrii Kasian | #27377 | |
jmonteros422 | #29207 | 1391 |
Sathish Subramanian | #29137 | 28270 |
Oleh Usik | #29134 | 29287 |
Oleh Usik | #29133 | 29289 |
Vadim Malesh | #29066 | 28943 |
Oleh Usik | #29007 | 29281 |
Oleh Usik | #29000 | 29295 |
lumnn | #28963 | 29160 |
lumnn | #28906 | 29161 |
Tu Nguyen | #28895 | 24004 |
Tu Nguyen | #28639 | 28345, 29261 |
RowenaS | #29170 | |
John Carlo Octabio | #28594 | |
Pavlo Sydorenko | #27917 | 28705 |
Hazel Joie Caquicla | #29290 | |
Lukasz Bajsarowicz | #29271 | 29283 |
Anton Evers | #29244 | 29329 |
Andrii Kalinich | #29139 | 28793 |
Oleh Usik | #29135 | |
Lukasz Bajsarowicz | #28992 | 29159 |
Vitaliy Ryaboy | #28975 | 29308 |
Anton Evers | #28930 | 29240 |
Tu Nguyen | #28842 | |
Oleh Usik | #27537 | 28800 |
Maciej Pawłowski | #26032 | 7213 |
Rani Priya | #23972 | 23971 |
Sathish Subramanian | #29206 | 28947 |
Oleh Usik | #29142 | 29292 |
Nazar Klovanych | #29402 | |
Matt Walters | #29238 | 543 |
Nazar Klovanych | #29422 | |
Hazel Joie Caquicla | #29412 | |
Nazar Klovanych | #29405 | |
Hazel Joie Caquicla | #29404 | |
Hazel Joie Caquicla | #29401 | |
jmonteros422 | #29399 | |
Sergii Ivashchenko | #29396 | |
jmonteros422 | #29393 | |
Nazar Klovanych | #29392 | 1700, 1693 |
Oleh Usik | #29386 | 29420 |
Oleh Usik | #29385 | 29434 |
Lukasz Bajsarowicz | #29341 | 29389 |
Vadim Malesh | #29331 | 28901 |
Yevhenii Dumskyi | #29300 | 29299 |
Nazar Klovanych | #29285 | |
Eden Duong | #29222 | 29280 |
Eden Duong | #29199 | 29198 |
Pieter Hoste | #29035 | 29034 |
Andrii Kalinich | #29023 | 22762 |
Oleh Usik | #28993 | 29388 |
Oleh Usik | #28989 | 29380 |
Konstantin | #28902 | 29327 |
Chris Snedaker | #28608 | 29381 |
Chandru Rajendran | #28250 | 29344 |
Ihor Sviziev | #28137 | 24353 |
Ajith | #27977 | 29097 |
Oleksandr Kravchuk | #27905 | 28303 |
Ledian Hymetllari | #27582 | 27570 |
Ihor Sviziev | #27364 | 17195, 27355 |
Michał Derlatka | #29256 | 26110 |
Yaroslav Rogoza | #27914 | 28524 |
Hazel Joie Caquicla | #29441 | |
Nazar Klovanych | #29438 | |
jmonteros422 | #29424 | |
Nazar Klovanych | #29367 | 1747, 1704, 1702, 1699, 1694 |
Benjamin Rosenberger | #29451 | 29470 |
Kristof, Fooman | #29305 | 29345 |
Lukasz Bajsarowicz | #29272 | 29346 |
Tu Nguyen | #28480 | 26498 |
Vadim Malesh | #28238 | 18823 |
Matthew O’Loughlin | #26256 | 8815, 26255 |
jmonteros422 | #29493 | 1742 |
Sergii Ivashchenko | #29449 | |
Oleh Usik | #29427 | |
Tu Nguyen | #28642 | 29468 |
Lukasz Bajsarowicz | #28599 | |
Vitaliy Prokopov | #27758 | 26702 |
Pavel Bystritsky | #26175 | 28319, 29313 |
Nazar Klovanych | #29492 | 1750 |
Nazar Klovanych | #29490 | 1749 |
Oleh Usik | #29485 | |
Sergii Ivashchenko | #29484 | |
Nazar Klovanych | #29475 | |
Oleh Usik | #29472 | 29539 |
Vadim Malesh | #29455 | 25211 |
yolouiese | #29398 | 1684 |
Lukasz Bajsarowicz | #29376 | 29453 |
iGerchak | #29291 | 29286 |
Nikita Sarychev | #29214 | 29213 |
Lukasz Bajsarowicz | #29202 | 29477 |
Vitaliy Ryaboy | #28923 | 29527 |
Our technology stack is built on PHP and MySQL. For more information, see System Requirements.
You can install Adobe Commerce 2.4.1 using Composer.
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 Data Migration repository.
The Code Migration Toolkit helps transfer existing Magento 1.x store extensions and customizations to Magento 2.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.