Magento 2 Enterprise Edition (EE) is the premium paid version of Magento 2 Community Edition (CE).
If you are a business that aspires to grow and expect huge website traffic volumes, then EE is the best solution for your company.
Moreover, the Enterprise edition is completely backed by the Magento team. And subscribers get full support by phone and email.
License pricing also includes security updates, special features, and exclusive product enhancements.
But all this comes with a heavy price of 25K USD / year or more depending upon the company’s revenue.
P/S: Note that Magento has renamed it’s Magento 2 products
- Magento Enterprise Edition (EE) now referred to as Magento Commerce
- Magento Community Edition (CE) now referred to as Magento Open Source
Why downgrade from Enterprise to Community?
The short answer is, It’s really not needed unless you want to.
Nobody likes a downgrade of anything. But sometimes you have to due to some constraints.
The merchant who thinks the license fee is expensive and not leveraging any of the enterprise features sooner or later might think of using community version instead.
In this post, I will summarise how we can migrate/downgrade from Magento Enterprise Edition (EE) to Community Edition (CE) successfully.
How to downgrade/migrate from EE to CE?
For the sake of brevity, migration of custom themes & modules is not considered.
1. Create a new branch from master
git fetch --all
git checkout master
git pull origin master
git checkout -b feature/magento2ce-downgrade
2. Update composer.json
Update the meta-package reference of magento/product-enterprise-edition
to magento/project-community-edition
.
Also, you can add/remove other required packages manually.
Try to use the exact version instead of using *
, ~
, <
& >
operators.
In our case, the composer.json file looked like
{
"name": "magento/project-community-edition",
"description": "eCommerce Platform for Growth (Community Edition)",
"type": "project",
"version": "2.1.1",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/product-community-edition": "2.1.1",
"composer/composer": "@alpha",
// … third party packages goes here
},
"require-dev": {
"phpunit/phpunit": "4.1.0",
"squizlabs/php_codesniffer": "1.5.3",
"phpmd/phpmd": "@stable",
"pdepend/pdepend": "2.2.2",
"fabpot/php-cs-fixer": "~1.2",
"lusitanian/oauth": "~0.3 <=0.7.0",
"sebastian/phpcpd": "2.0.0"
},
"config": {
"use-include-path": true
},
"autoload": {
"psr-4": {
"Magento\Framework\": "lib/internal/Magento/Framework/",
"Magento\Setup\": "setup/src/Magento/Setup/",
"Magento\": "app/code/Magento/"
},
"psr-0": {
"": "app/code/"
},
"files": [
"app/etc/NonComposerComponentRegistration.php"
]
},
"autoload-dev": {
"psr-4": {
"Magento\Sniffs\": "dev/tests/static/framework/Magento/Sniffs/",
"Magento\Tools\": "dev/tools/Magento/Tools/",
"Magento\Tools\Sanity\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
"Magento\TestFramework\Inspection\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
"Magento\TestFramework\Utility\": "dev/tests/static/framework/Magento/TestFramework/Utility/"
}
},
"minimum-stability": "alpha",
"prefer-stable": true,
"repositories": [
{
"type": "composer",
"url": "https://repo.magento.com/"
}
],
"extra": {
"magento-force": "override"
}
}
3. Remove EE related license files (Not Required)
cd /path/to/magento2/root/
rm -f./LICENSE_EE.txt
Check & delete if there are any remaining EE modules
find . -name LICENSE_EE.txt
EDIT – No need to manually delete the EE license files as they will be removed automatically by the composer update
operation.
4. Disable EE modules
Disable all the EE modules manually in app/etc/config.php
.
We will share the config.php generator in the future to make the manual process much easier & faster.
The available EE modules at the time of writing were:
- module-amqp
- module-banner
- module-banner-customer-segment
- module-bundle-staging
- module-catalog-event
- module-catalog-import-export-staging
- module-catalog-inventory-staging
- module-catalog-permissions
- module-catalog-rule-staging
- module-catalog-staging
- module-catalog-url-rewrite-staging
- module-checkout-staging
- module-cms-staging
- module-configurable-product-staging
- module-custom-attribute-management
- module-customer-balance
- module-customer-custom-attributes
- module-customer-finance
- module-customer-segment
- module-cybersource
- module-downloadable-staging
- module-elasticsearch
- module-enterprise
- module-eway
- module-gift-card
- module-gift-card-account
- module-gift-card-import-export
- module-gift-card-staging
- module-gift-message-staging
- module-gift-registry
- module-gift-wrapping
- module-gift-wrapping-staging
- module-google-optimizer-staging
- module-google-tag-manager
- module-grouped-product-staging
- module-invitation
- module-layered-navigation-staging
- module-logging
- module-message-queue
- module-msrp-staging
- module-multiple-wishlist
- module-mysql-mq
- module-payment-staging
- module-persistent-history
- module-price-permissions
- module-product-video-staging
- module-promotion-permissions
- module-reminder
- module-resource-connections
- module-review-staging
- module-reward
- module-rma
- module-rma-staging
- module-sales-archive
- module-sales-rule-staging
- module-scalable-checkout
- module-scalable-inventory
- module-scalable-oms
- module-scheduled-import-export
- module-search-staging
- module-solr
- module-staging
- module-support
- module-target-rule
- module-versions-cms
- module-visual-merchandiser
- module-website-restriction
- module-weee-staging
- module-worldpay
5. Update composer
composer update
This process may take some time.
This will remove all the EE packages and install CE packages.
The sample output looks like
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 52 updates, 85 removals
Removing magento/product-enterprise-edition (2.1.1)
Removing Magento/ProductEnterpriseEdition
Removing magento/magento2-ee-base (2.1.1)
Removing Magento/Magento2EeBase
Removing magento/module-amqp (100.1.0)
Removing Magento/Amqp
Removing php-amqplib/php-amqplib (v2.5.2)
Removing Php-amqplib/PhpAmqplib
Removing magento/module-worldpay (100.1.0)
Removing Magento/Worldpay
Removing magento/module-catalog-url-rewrite-staging (100.1.0)
Removing Magento/CatalogUrlRewriteStaging
Removing magento/module-bundle-staging (100.1.0)
Removing Magento/BundleStaging
Removing magento/module-checkout-staging (100.1.0)
Removing Magento/CheckoutStaging
Removing magento/module-cms-staging (100.1.1)
Removing Magento/CmsStaging
Removing magento/module-configurable-product-staging (100.1.0)
Removing Magento/ConfigurableProductStaging
Removing magento/module-downloadable-staging (100.1.0)
Removing Magento/DownloadableStaging
Removing magento/module-grouped-product-staging (100.1.0)
Removing Magento/GroupedProductStaging
Removing magento/module-payment-staging (100.1.0)
Removing Magento/PaymentStaging
Removing magento/module-support (100.1.0)
Removing Magento/Support
Removing magento/module-solr (100.1.0)
Removing Magento/Solr
Removing solarium/solarium (3.3.0)
Removing Solarium/Solarium
Removing magento/module-message-queue (100.1.0)
Removing Magento/MessageQueue
Removing magento/module-mysql-mq (100.1.0)
Removing Magento/MysqlMq
Removing magento/module-eway (100.1.0)
Removing Magento/Eway
Removing magento/module-google-tag-manager (100.1.0)
Removing Magento/GoogleTagManager
Removing magento/module-admin-gws (100.1.0)
Removing Magento/AdminGws
Removing magento/module-banner-customer-segment (100.1.0)
Removing Magento/BannerCustomerSegment
Removing magento/module-catalog-import-export-staging (100.1.0)
Removing Magento/CatalogImportExportStaging
Removing magento/module-customer-finance (100.1.0)
Removing Magento/CustomerFinance
Removing magento/module-enterprise (100.1.0)
Removing Magento/Enterprise
Removing magento/module-catalog-event (100.1.0)
Removing Magento/CatalogEvent
Removing magento/module-catalog-permissions (100.1.0)
Removing Magento/CatalogPermissions
Removing magento/module-gift-card-staging (100.1.0)
Removing Magento/GiftCardStaging
Removing magento/module-gift-card-account (100.1.0)
Removing Magento/GiftCardAccount
Removing magento/module-customer-balance (100.1.0)
Removing Magento/CustomerBalance
Removing magento/module-gift-card-import-export (100.1.0)
Removing Magento/GiftCardImportExport
Removing magento/module-gift-registry (100.1.0)
Removing Magento/GiftRegistry
Removing magento/module-gift-wrapping (100.1.0)
Removing Magento/GiftWrapping
Removing magento/module-logging (100.1.0)
Removing Magento/Logging
Removing magento/module-multiple-wishlist (100.1.0)
Removing Magento/MultipleWishlist
Removing magento/module-advanced-checkout (100.1.1)
Removing Magento/AdvancedCheckout
Removing magento/module-cybersource (100.1.0)
Removing Magento/Cybersource
Removing magento/module-persistent-history (100.1.0)
Removing Magento/PersistentHistory
Removing magento/module-price-permissions (100.1.0)
Removing Magento/PricePermissions
Removing magento/module-gift-card (101.0.1)
Removing Magento/GiftCard
Removing magento/module-promotion-permissions (100.1.0)
Removing Magento/PromotionPermissions
Removing magento/module-banner (100.1.0)
Removing Magento/Banner
Removing magento/module-reminder (100.1.0)
Removing Magento/Reminder
Removing magento/module-reward (100.1.0)
Removing Magento/Reward
Removing magento/module-invitation (100.1.0)
Removing Magento/Invitation
Removing magento/module-rma (100.1.0)
Removing Magento/Rma
Removing magento/module-customer-custom-attributes (100.1.0)
Removing Magento/CustomerCustomAttributes
Removing magento/module-custom-attribute-management (100.1.0)
Removing Magento/CustomAttributeManagement
Removing magento/module-sales-archive (100.1.0)
Removing Magento/SalesArchive
Removing magento/module-advanced-catalog (100.1.0)
Removing Magento/AdvancedCatalog
Removing magento/module-advanced-sales-rule (100.1.0)
Removing Magento/AdvancedSalesRule
Removing magento/module-scalable-checkout (100.1.0)
Removing Magento/ScalableCheckout
Removing magento/module-scalable-inventory (100.1.0)
Removing Magento/ScalableInventory
Removing magento/module-scalable-oms (100.1.0)
Removing Magento/ScalableOms
Removing magento/module-scheduled-import-export (100.1.0)
Removing Magento/ScheduledImportExport
Removing magento/module-target-rule (100.1.1)
Removing Magento/TargetRule
Removing magento/module-customer-segment (100.1.0)
Removing Magento/CustomerSegment
Removing magento/module-advanced-rule (100.1.0)
Removing Magento/AdvancedRule
Removing magento/module-versions-cms (100.1.0)
Removing Magento/VersionsCms
Removing magento/module-visual-merchandiser (100.1.0)
Removing Magento/VisualMerchandiser
Removing magento/module-website-restriction (100.1.0)
Removing Magento/WebsiteRestriction
Removing magento/module-resource-connections (100.1.0)
Removing Magento/ResourceConnections
Removing magento/module-elasticsearch (100.1.0)
Removing Magento/Elasticsearch
Removing magento/module-advanced-search (100.1.0)
Removing Magento/AdvancedSearch
Removing elasticsearch/elasticsearch (v2.3.0)
Removing Elasticsearch/Elasticsearch
Removing guzzlehttp/ringphp (1.1.0)
Removing Guzzlehttp/Ringphp
Removing guzzlehttp/streams (3.0.0)
Removing Guzzlehttp/Streams
Removing react/promise (v2.5.0)
Removing React/Promise
Removing magento/module-catalog-rule-staging (100.1.1)
Removing Magento/CatalogRuleStaging
Removing magento/module-sales-rule-staging (100.1.1)
Removing Magento/SalesRuleStaging
Removing magento/module-search-staging (100.1.0)
Removing Magento/SearchStaging
Removing magento/module-layered-navigation-staging (100.1.0)
Removing Magento/LayeredNavigationStaging
Removing magento/module-catalog-inventory-staging (100.1.0)
Removing Magento/CatalogInventoryStaging
Removing magento/module-gift-message-staging (100.1.0)
Removing Magento/GiftMessageStaging
Removing magento/module-gift-wrapping-staging (100.1.0)
Removing Magento/GiftWrappingStaging
Removing magento/module-google-optimizer-staging (100.1.0)
Removing Magento/GoogleOptimizerStaging
Removing magento/module-msrp-staging (100.1.0)
Removing Magento/MsrpStaging
Removing magento/module-review-staging (100.1.0)
Removing Magento/ReviewStaging
Removing magento/module-rma-staging (100.1.0)
Removing magento/module-weee-staging (100.1.0)
Removing Magento/RmaStaging
Removing Magento/WeeeStaging
Removing magento/module-product-video-staging (100.1.0)
Removing Magento/ProductVideoStaging
Removing magento/module-catalog-staging (100.1.1)
Removing Magento/CatalogStaging
Removing magento/module-staging (100.1.1)
Removing Magento/Staging
Removing magento/framework-message-queue (100.1.0)
Removing Magento/FrameworkMessageQueue
Removing magento/framework-foreign-key (100.1.0)
Removing Magento/FrameworkForeignKey
Updating magento/magento-composer-installer (0.1.12 => 0.1.13): Loading from cache
Updating oyejorge/less.php (v1.7.0.10 => v1.7.0.14): Loading from cache
Updating phpseclib/phpseclib (2.0.4 => 2.0.17): Downloading (100%)
Updating zendframework/zend-stdlib (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-eventmanager (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-code (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-di (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-modulemanager (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-loader (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-view (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-validator (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-escaper (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-uri (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-server (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-soap (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-console (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-servicemanager (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-text (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-i18n (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-config (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-math (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-json (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-serializer (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-log (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-crypt (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-http (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-filter (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-inputfilter (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-form (2.4.11 => 2.4.13): Loading from cache
Updating zendframework/zend-mvc (2.4.11 => 2.4.13): Loading from cache
Updating mongodb/mongodb (1.1.1 => 1.4.2): Downloading (100%)
Updating psr/log (1.0.2 => 1.1.0): Loading from cache
Updating phpunit/php-timer (1.0.8 => 1.0.9): Loading from cache
Installing symfony/polyfill-ctype (v1.11.0): Loading from cache
Updating symfony/yaml (v2.8.17 => v2.8.50): Loading from cache
Updating symfony/filesystem (v2.8.17 => v2.8.50): Loading from cache
Updating symfony/config (v2.8.17 => v2.8.50): Loading from cache
Updating symfony/dependency-injection (v2.8.17 => v2.8.50): Loading from cache
Updating algolia/algoliasearch-client-php (1.18.0 => 1.28.0): Downloading (100%)
Updating sebastian/diff (1.4.1 => 1.4.3): Loading from cache
Updating symfony/stopwatch (v3.2.3 => v3.4.28): Loading from cache
Updating symfony/process (v2.8.17 => v2.8.50): Loading from cache
Updating symfony/finder (v3.2.3 => v3.4.28): Downloading (100%)
Updating symfony/event-dispatcher (v2.8.17 => v2.8.50): Loading from cache
Updating fabpot/php-cs-fixer (v1.13.1 => v1.13.3): Loading from cache
Updating composer/semver (1.4.2 => 1.5.0): Loading from cache
Updating composer/spdx-licenses (1.1.5 => 1.5.1): Loading from cache
Updating seld/cli-prompt (1.0.2 => 1.0.3): Loading from cache
Updating seld/jsonlint (1.5.0 => 1.7.1): Loading from cache
Updating sebastian/recursion-context (1.0.2 => 1.0.5): Loading from cache
Updating phpunit/php-token-stream (1.4.9 => 1.4.12): Loading from cache
Updating theseer/fdomdocument (1.6.1 => 1.6.6): Loading from cache
Updating sebastian/finder-facade (1.2.1 => 1.2.2): Loading from cache
Package sjparkinson/static-review is abandoned, you should avoid using it. Use phpro/grumphp instead.
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Package fabpot/php-cs-fixer is abandoned, you should avoid using it. Use friendsofphp/php-cs-fixer instead.
Writing lock file
Generating autoload files
6. DB Cleansing
Delete entries for EE modules from setup_module
table, for example
DELETE FROM setup_module WHERE module IN (
'Magento_Amqp', 'Magento_BundleStaging', 'Magento_CatalogEvent', 'Magento_CatalogImportExportStaging', 'Magento_CatalogInventoryStaging', 'Magento_CatalogPermissions', 'Magento_CatalogRuleStaging', 'Magento_CatalogStaging', 'Magento_CatalogUrlRewriteStaging', 'Magento_CheckoutStaging', 'Magento_CmsStaging', 'Magento_ConfigurableProductStaging', 'Magento_CustomerBalance', 'Magento_CustomerFinance', 'Magento_Cybersource', 'Magento_DownloadableStaging', 'Magento_Elasticsearch', 'Magento_Enterprise', 'Magento_Eway', 'Magento_GiftCardAccount', 'Magento_GiftCardImportExport', 'Magento_GiftCardStaging', 'Magento_GiftMessageStaging', 'Magento_GiftRegistry', 'Magento_GiftWrapping', 'Magento_GiftWrappingStaging', 'Magento_GoogleOptimizerStaging', 'Magento_GroupedProductStaging', 'Magento_Invitation', 'Magento_LayeredNavigationStaging', 'Magento_MessageQueue', 'Magento_MsrpStaging', 'Magento_MultipleWishlist', 'Magento_MysqlMq', 'Magento_PaymentStaging', 'Magento_PersistentHistory', 'Magento_PricePermissions', 'Magento_ProductVideoStaging', 'Magento_PromotionPermissions', 'Magento_Reminder', 'Magento_ResourceConnections', 'Magento_ReviewStaging', 'Magento_Reward', 'Magento_RmaStaging', 'Magento_SalesArchive', 'Magento_SalesRuleStaging', 'Magento_ScalableCheckout', 'Magento_ScalableInventory', 'Magento_ScalableOms', 'Magento_ScheduledImportExport', 'Magento_SearchStaging', 'Magento_Solr', 'Magento_Staging', 'Magento_Support', 'Magento_VersionsCms', 'Magento_WebsiteRestriction', 'Magento_WeeeStaging', 'Magento_Worldpay'
);
You can also delete EE module related attributes, fields & tables if you want to.
But it should work just fine even leaving them as it is.
7. Clear cache
# Prior Magento 2.3
# rm -rf var/cache/ var/page_cache/ var/view_preprocessed/ var/generation/
# Magento 2.3+
rm -rf var/cache/ var/page_cache/ var/view_preprocessed/ generated/
8. Verify the Magento Edition
Make sure the Magento Edition is now purely community edition with the following methods:
- Browse
{magento-2-base-rl}/magento_version
URL to check the version. It should result asMagento/2.x (Community)
- Check if
composer.json
file points tomagento/project-community-edition
repo. - Check if there’s no EE license file(
LICENSE_EE.txt)
. You can use the commandfind . -name LICENSE_EE.txt
- Check if there’s no any EE di.xml in path
app/etc/enterprise/di.xml
- Check if there’a no EE related modules (see the list above)
If codebase verifies the community edition, then go ahead for testing.
9. Browse the website & check thoroughly
Check the website thoroughly in developer mode (with error reporting turned on).
If everything is working fine as expected, viola you have successfully downgraded the Magento edition to the community.
10. Live Deployment
If everything works as expected, then you can create a release tag and deploy in LIVE.
# get latest code for master
git fetch --all
git checkout master
git pull origin master
# rebase the branch with master
git checkout feature/magento2ce-downgrade
git pull origin feature/magento2ce-downgrade
git rebase master
git push origin feature/magento2ce-downgrade --force
# create release tag
git tag -a v1.0.1 -m 'Downgrade to CE'
git push origin v1.0.1 --follow-tags
In summary:
Magento 2 Enterprise Edition, is a better option for larger merchants who have a budget and don’t want to deal with customizations and enhancements. We highly recommend Magento 2 Enterprise Edition to customers who are the right fit for it.
Though we strongly recommend using the Enterprise Edition to experience the advanced e-commerce platform and scale your business, we feel the expensive license fee is a big concern for some of the merchants.
Need professional help in downgrading/migrating from EE to CE?
Get in touch with our Magento Certified experts who’ll be happy to answer all your questions.