ΓΫΆΉΚΣΖ΅

Apply patches

and the deliver patches to your installed ΓΫΆΉΚΣΖ΅ Commerce application.

  • The Cloud Patches for Commerce package delivers required patches with critical fixes
  • Quality Patches deliver optional, low-impact quality fixes as individual patches that do not contain backward incompatible changes

See Available Patches in the Commerce Operations Tools Guide to review a full list of released patches.

Both packages improve the integration of all ΓΫΆΉΚΣΖ΅ Commerce versions with Cloud environments and support quick delivery of critical, optional, and custom fixes. You can use these packages to apply, revert, and view general information about all individual patches that are available for Commerce.

TIP
You can use the Quality Patches Tool and Cloud Patches for Commerce as stand-alone packages for Magento Open Source and ΓΫΆΉΚΣΖ΅ Commerce projects. We recommend using the Quality Patches Tool for non-Cloud projects.

When you deploy changes to the remote environment, the ece-tools package uses magento/magento-cloud-patches and magento/quality-patches to check for pending patches and applies them automatically in the following order:

  1. Apply all required Commerce patches included in the Cloud Patches for Commerce package.
  2. Apply selected optional Commerce patches included in the Quality Patches Tool.
  3. Apply custom patches in the /m2-hotfixes directory in alphabetical order by patch name.
NOTE
When you update the ece-tools package or the Cloud Patches for Commerce package, the latest required patches are applied the next time you deploy your project, or you can deploy them immediately using the ece-patches apply CLI command and redeploying your Cloud environment. You cannot skip during the deployment process.

Prerequisites

TIP
Before beginning an upgrade or a patching process, create an active branch from the Integration environment and check out the new branch to your local workstation. Dedicating a branch to the upgrade or the patch process helps to avoid interference with your work in progress.

The Quality Patches Tool is a dependency for the Cloud Patches for Commerce and the ece-tools package. To apply the latest patches, you must have the latest version of ECE-Tools installed. The minimum required version of ECE-Tools is 2002.1.2.

View available patches and status

To view the list of available individual patches:

php ./vendor/bin/ece-patches status

Sample response:

More detailed information about patches you can find on https://support.magento.com/
╔════════════════╀═════════════════════════════════════════════════╀══════════╀═════════════╀═════════════════════════════════╗
β•‘ Id             β”‚ Title                                           β”‚ Type     β”‚ Status      β”‚ Details                         β•‘
╠════════════════β•ͺ═════════════════════════════════════════════════β•ͺ══════════β•ͺ═════════════β•ͺ═════════════════════════════════╣
β•‘ MAGECLOUD-5069 β”‚ FPC is getting disabled during deployments      β”‚ Required β”‚ Applied     β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-page-cache    β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MCLOUD-5650    β”‚ Hold deployment config after reading from file  β”‚ Required β”‚ Applied     β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/framework            β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MCLOUD-5684    β”‚ Pagination Not working - product_list_limit=all β”‚ Required β”‚ Applied     β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-elasticsearch β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MC-65837       β”‚ Fix load balancer issue                         β”‚Deprecatedβ”‚ Applied     β”‚ Recommended replacement: MC-1   β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/framework            β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ BUNDLE-2554    β”‚ Set Payment info bug                            β”‚ Required β”‚ Not applied β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - amzn/amazon-pay-module       β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MC-1           β”‚ Fixes issue 1                                   β”‚ Optional β”‚ Applied     β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-cms           β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MC-2           β”‚ Fixes issue 2                                   β”‚ Optional β”‚ Not applied β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-cms           β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ MC-3           β”‚ Fixes issue 3                                   β”‚ Optional β”‚ Not applied β”‚ Required patches:               β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - MC-2                         β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-cms           β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ N/A            β”‚ ../m2-hotfixes/MDVA_custom__2.3.5_ce.patch      β”‚ Custom   β”‚ N/A         β”‚ Affected components:            β•‘
β•‘                β”‚                                                 β”‚          β”‚             β”‚  - magento/module-framework     β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
Magento 2 Enterprise Edition, version 2.3.5.0

The status table contains the following types of information:

  • Type:

    • Optionalβ€”All patches from the Quality Patches Tool and the Cloud Patches package are optional for ΓΫΆΉΚΣΖ΅ Commerce and Magento Open Source installations. For ΓΫΆΉΚΣΖ΅ Commerce on cloud infrastructure, all patches are optional.
    • Requiredβ€”All patches from the Cloud Patches for Commerce package are required for Cloud customers.
    • Deprecatedβ€”The individual patch is marked as deprecated and we recommend reverting it if you have applied it. After you revert a deprecated patch, it will no longer be displayed in the status table.
    • Customβ€”All patches from the β€˜m2-hotfixes’ directory.
  • Status:

    • Appliedβ€”The patch has been applied.
    • Not appliedβ€”The patch has not been applied.
    • N/Aβ€”The status of the patch cannot be defined due to conflicts.
  • Details:

    • Affected componentsβ€”The list of affected modules.
    • Required patchesβ€”The list of required patches (dependencies).
    • Recommended replacementβ€”The patch that is a recommended replacement for a deprecated patch.

Apply a patch in a local environment

You can apply patches manually in a local environment and test them before you deploy.

To apply individual patches in a local development environment:

  1. Add the β€˜QUALITY_PATCHES’ variable to the .magento.env.yaml file and list the required patches underneath.

    code language-yaml
    stage:
      build:
        QUALITY_PATCHES:
          - MCTEST-1002
          - MCTEST-1003
    
  2. From the project root, apply the patches.

    code language-bash
    php ./vendor/bin/ece-patches apply
    

    The ece-patches apply command applies patches in the following order:

    • Required patches
    • Optional individual patches
    • Custom patches from the /m2-hotfixes directory
  3. Clear the cache.

    code language-bash
    php ./bin/magento cache:clean
    
  4. Test the patches, make any necessary changes to custom patches.

Apply a patch in a remote environment

WARNING
We strongly recommend testing all patches in an integration or Staging environments before deploying to the Production environment.

To apply patches in a remote environment:

  1. Add the QUALITY_PATCHES variable to the .magento.env.yaml file and list the required patches underneath.

    code language-yaml
    stage:
      build:
        QUALITY_PATCHES:
          - MCTEST-1002
          - MCTEST-1003
    
    note note
    NOTE
    After upgrading to a new version of ΓΫΆΉΚΣΖ΅ Commerce, you must re-apply patches if the patches are not included in the new version.
  2. Add, commit, and push the updated .magento.env.yaml file.

    code language-bash
    git add .magento.env.yaml
    
    code language-bash
    git commit -m "Apply patch"
    
    code language-bash
    git push origin <branch-name>
    

Apply a custom patch

When you deploy, ECE-Tools applies all ΓΫΆΉΚΣΖ΅ patches and any custom patches that you add to the /m2-hotfixes directory in the project root.

NOTE
All patch file names must end with the .patch extension.

To apply and test a custom patch on a Cloud environment:

  1. In the project root, create a directory called m2-hotfixes if it does not exist

    code language-bash
    mkdir m2-hotfixes
    
  2. Copy the patch file to the /m2-hotfixes directory.

  3. Add, commit, and push code changes.

    code language-bash
    git add m2-hotfixes/
    
    code language-bash
    git commit -m "Apply patch"
    
    code language-bash
    git push origin <branch-name>
    
    note note
    NOTE
    Make sure to test all patches in a pre-production environment. For ΓΫΆΉΚΣΖ΅ Commerce on cloud infrastructure, you can create branches with the magento-cloud environment:branch <branch-name> CLI command.

Revert a custom patch

To revert or uninstall a previously applied custom patch:

  1. Delete the patch file from the /m2-hotfixes directory.

  2. Add, commit, and push code changes.

    code language-bash
    git add m2-hotfixes/
    
    code language-bash
    git commit -m "Revert patch"
    
    code language-bash
    git push origin <branch-name>
    
    note note
    NOTE
    Make sure to test in a pre-production environment. For ΓΫΆΉΚΣΖ΅ Commerce on cloud infrastructure, you can create branches with the magento-cloud environment:branch <branch-name> CLI command.

Apply patches to a non-Cloud project

Use the for Magento Open Source and ΓΫΆΉΚΣΖ΅ Commerce projects.

Revert a patch in a local environment

You can revert all previously applied patches in a local development environment using the ece-patches CLI.

To revert all applied patches:

php ./vendor/bin/ece-patches revert

This command reverts all patches in the following order:

  • Reverts all applied custom patches from the /m2-hotfixes directory.
  • Reverts all applied optional individual patches.
  • Reverts all applied required patches.

Logging

The Quality Patches Tool logs all operations to the <Project_root>/var/log/patch.log file.

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26