22

I have a store running in Magento Enterprise Edition, would like to migrate to Community Edition, can you please suggest how I can do this?

  • 2
    Was your question answered? Is there any additional information you were looking for that I can help you with? – philwinkle Aug 16 '13 at 2:43
21

Edit 3/10/14

Yanted has written a fabulous guide to this - some of the EE features in >= 1.13 actually make upgrades a little more painful than the below writeup would lead you to believe. As Marius points out in the comments that all passwords will have to be reset as encryption methods are handled differently between EE/CE.

See the blog for more details.

https://web.archive.org/web/20150208220803/ http://blog.yanted.com/2014/02/21/downgrading-magento-enterprise-to-community


Original post:

Migrating is actually very easy - point your CE codebase at your production database. There's little more to it than that (see below for some folder removal information).

If you're using a well-built EE-compatible theme it should be backward compatible.

Here are some little-known EE features you'll need to watch out for when downgrading to Community:

  • No access to Customer Attributes from Admin Panel
  • Customer segments will go away
  • Catalog events, private sales, Invitations etc. will go away
  • CMS hierarchies are not supported in CE
  • Banners are not supported in CE
  • RMA - people always seem to forget about RMA (information will be resident in db)
  • Admin Logging information will be inaccessible (still resident in db)

If you have a large portion of your CMS built in EE I recommend you take a very thorough and methodical approach and make sure that your new CE theme (or backwardly-compatible EE theme) support the data that is still resident.

I also suggest not dropping any tables from the db prefixed with enterprise - as well as not removing any enterprise folders from your 3rd party themes. These are not considered as part of the EE install and you should take them along with you when you leave. You will need to remove the files and folders from the following locations:

  • app/code/core/Enterprise
  • app/design/frontend/enterprise
  • app/design/adminhtml/default/default/layout/enterprise
  • app/design/adminhtml/default/default/template/enterprise
  • skin/adminhtml/default/enterprise
  • skin/frontend/enterprise
  • app/etc/modules/Enterprise_*.xml
  • js/enterprise
  • LICENSE_EE.txt
  • LICENSE_EE.html

And of course, you need to consider the real biggie: Full Page Cache. I highly recommend that you find a decent 3rd party Full Page cache.

Best of luck!

  • 1
    Very nice explanation. +1 without hesitation, but I want to add a problem that appears after the migration. The existing customer passwords (and admin passwords I think) will not be valid because of the different encryption models (and methods) used in EE and CE. – Marius Aug 13 '13 at 19:11
  • Marius - Have you tried this? I think it would only apply to 1.10+ – philwinkle Aug 13 '13 at 19:33
  • I actually had the problem the other way around. When I've upgraded from CE to EE. But it was EE 1.9. I had to change the encryption model to keep the passwords valid in EE. I'm not sure of how things work on later versions. – Marius Aug 13 '13 at 19:36
  • 1
    'murica, marius. 'murica – philwinkle Mar 10 '14 at 21:38
  • 1
    A few months back I did exactly this, using this guide. I added some instruction on what I did here: proxiblue.com.au/blog/downgrade-ee-to-ce - you will find a ref to a stackexchange answer about the encryption, as well as a database migration script (i think adapted form the post noted in this answer) The downgrade has been running well since. – ProxiBlue Nov 26 '15 at 3:13
7

The Yanted guide is okay but forgets some steps. There are items in tables that contain wrong references and you should remove those. These are config data, permissions data, scheduled cronjobs, Enterprise extension versioning data and enterprise eav attributes;

DELETE FROM core_config_data WHERE path LIKE '%enterprise%';
DELETE FROM admin_rule WHERE resource_id LIKE '%enterprise%';
DELETE FROM api_rule WHERE resource_id LIKE '%enterprise%';
DELETE FROM api_rule WHERE resource_id LIKE '%giftcard%';
DELETE FROM cron_schedule WHERE job_code LIKE '%enterprise%';
DELETE FROM core_resource WHERE code LIKE '%enterprise%';
DELETE FROM catalog_eav_attribute WHERE frontend_input_renderer LIKE '%enterprise%';
DELETE FROM cms_block WHERE identifier = 'catalog_events_lister';
DELETE FROM eav_entity_type WHERE entity_model LIKE '%enterprise%';
DELETE FROM eav_attribute WHERE source_model LIKE 'enterprise_%';
DELETE FROM eav_attribute WHERE backend_model LIKE 'enterprise_%';
DELETE FROM eav_attribute WHERE attribute_code IN ('gift_wrapping_available', 'gift_wrapping_price');

Delete enterprise-only widgets;

DELETE FROM widget_instance WHERE instance_type LIKE '%enterprise%';

Delete custom layout updates that reference enterprise widgets;

DELETE FROM core_layout_update WHERE xml LIKE '%enterprise%';

Truncate your session table in order to avoid people not being able to log in due to instantiation of old enterprise models;

TRUNCATE TABLE core_session;

Set correct model for URL key for product;

UPDATE eav_attribute SET backend_model = 'catalog/product_attribute_backend_urlkey', backend_table = null WHERE attribute_code = 'url_key' AND entity_type_id = 4;

Also truncate core_url_rewrite since they should be regenerated;

TRUNCATE TABLE core_url_rewrite;

Don't forget to also delete the triggers from your tables after removing the enterprise_* tables;

DROP TABLE IF EXISTS enterprise_admin_passwords;
DROP TABLE IF EXISTS enterprise_banner_catalogrule;
DROP TABLE IF EXISTS enterprise_banner_content;
DROP TABLE IF EXISTS enterprise_banner_customersegment;
DROP TABLE IF EXISTS enterprise_banner_salesrule;
DROP TABLE IF EXISTS enterprise_banner;
DROP TABLE IF EXISTS enterprise_catalog_category_rewrite;
DROP TABLE IF EXISTS enterprise_catalog_product_rewrite;
DROP TABLE IF EXISTS enterprise_catalogevent_event_image;
DROP TABLE IF EXISTS enterprise_catalogevent_event;
DROP TABLE IF EXISTS enterprise_catalogpermissions;
DROP TABLE IF EXISTS enterprise_catalogpermissions_index;
DROP TABLE IF EXISTS enterprise_catalogpermissions_index_product;
DROP TABLE IF EXISTS enterprise_cms_hierarchy_lock;
DROP TABLE IF EXISTS enterprise_cms_hierarchy_metadata;
DROP TABLE IF EXISTS enterprise_cms_hierarchy_node;
DROP TABLE IF EXISTS enterprise_cms_increment;
DROP TABLE IF EXISTS enterprise_cms_page_revision;
DROP TABLE IF EXISTS enterprise_cms_page_version;
DROP TABLE IF EXISTS enterprise_customer_sales_flat_order;
DROP TABLE IF EXISTS enterprise_customer_sales_flat_order_address;
DROP TABLE IF EXISTS enterprise_customer_sales_flat_quote;
DROP TABLE IF EXISTS enterprise_customer_sales_flat_quote_address;
DROP TABLE IF EXISTS enterprise_customerbalance_history;
DROP TABLE IF EXISTS enterprise_customerbalance;
DROP TABLE IF EXISTS enterprise_customersegment_customer;
DROP TABLE IF EXISTS enterprise_customersegment_event;
DROP TABLE IF EXISTS enterprise_customersegment_website;
DROP TABLE IF EXISTS enterprise_giftcard_amount;
DROP TABLE IF EXISTS enterprise_giftcardaccount_history;
DROP TABLE IF EXISTS enterprise_giftcardaccount_pool;
DROP TABLE IF EXISTS enterprise_giftcardaccount;
DROP TABLE IF EXISTS enterprise_giftregistry_data;
DROP TABLE IF EXISTS enterprise_giftregistry_item_option;
DROP TABLE IF EXISTS enterprise_giftregistry_item;
DROP TABLE IF EXISTS enterprise_giftregistry_label;
DROP TABLE IF EXISTS enterprise_giftregistry_person;
DROP TABLE IF EXISTS enterprise_giftregistry_type_info;
DROP TABLE IF EXISTS enterprise_giftregistry_entity;
DROP TABLE IF EXISTS enterprise_giftregistry_type;
DROP TABLE IF EXISTS enterprise_giftwrapping_store_attributes;
DROP TABLE IF EXISTS enterprise_giftwrapping_website;
DROP TABLE IF EXISTS enterprise_giftwrapping;
DROP TABLE IF EXISTS enterprise_index_multiplier;
DROP TABLE IF EXISTS enterprise_invitation_status_history;
DROP TABLE IF EXISTS enterprise_invitation_track;
DROP TABLE IF EXISTS enterprise_invitation;
DROP TABLE IF EXISTS enterprise_logging_event_changes;
DROP TABLE IF EXISTS enterprise_logging_event;
DROP TABLE IF EXISTS enterprise_mview_metadata_event;
DROP TABLE IF EXISTS enterprise_mview_subscriber;
DROP TABLE IF EXISTS enterprise_mview_event;
DROP TABLE IF EXISTS enterprise_mview_metadata;
DROP TABLE IF EXISTS enterprise_mview_metadata_group;
DROP TABLE IF EXISTS enterprise_reminder_rule_coupon;
DROP TABLE IF EXISTS enterprise_reminder_rule_log;
DROP TABLE IF EXISTS enterprise_reminder_rule_website;
DROP TABLE IF EXISTS enterprise_reminder_template;
DROP TABLE IF EXISTS enterprise_reminder_rule;
DROP TABLE IF EXISTS enterprise_reward_history;
DROP TABLE IF EXISTS enterprise_reward_rate;
DROP TABLE IF EXISTS enterprise_reward_salesrule;
DROP TABLE IF EXISTS enterprise_reward;
DROP TABLE IF EXISTS enterprise_rma_grid;
DROP TABLE IF EXISTS enterprise_rma_item_eav_attribute_website;
DROP TABLE IF EXISTS enterprise_rma_item_eav_attribute;
DROP TABLE IF EXISTS enterprise_rma_item_entity_datetime;
DROP TABLE IF EXISTS enterprise_rma_item_entity_decimal;
DROP TABLE IF EXISTS enterprise_rma_item_entity_int;
DROP TABLE IF EXISTS enterprise_rma_item_entity_text;
DROP TABLE IF EXISTS enterprise_rma_item_entity_varchar;
DROP TABLE IF EXISTS enterprise_rma_item_entity;
DROP TABLE IF EXISTS enterprise_rma_item_form_attribute;
DROP TABLE IF EXISTS enterprise_rma_shipping_label;
DROP TABLE IF EXISTS enterprise_rma_status_history;
DROP TABLE IF EXISTS enterprise_rma;
DROP TABLE IF EXISTS enterprise_sales_creditmemo_grid_archive;
DROP TABLE IF EXISTS enterprise_sales_invoice_grid_archive;
DROP TABLE IF EXISTS enterprise_sales_order_grid_archive;
DROP TABLE IF EXISTS enterprise_sales_shipment_grid_archive;
DROP TABLE IF EXISTS enterprise_scheduled_operations;
DROP TABLE IF EXISTS enterprise_staging_action;
DROP TABLE IF EXISTS enterprise_staging_item;
DROP TABLE IF EXISTS enterprise_staging_log;
DROP TABLE IF EXISTS enterprise_staging_product_unlinked;
DROP TABLE IF EXISTS enterprise_staging;
DROP TABLE IF EXISTS enterprise_targetrule_customersegment;
DROP TABLE IF EXISTS enterprise_targetrule_index_crosssell_product;
DROP TABLE IF EXISTS enterprise_targetrule_index_crosssell;
DROP TABLE IF EXISTS enterprise_targetrule_index_related_product;
DROP TABLE IF EXISTS enterprise_targetrule_index_related;
DROP TABLE IF EXISTS enterprise_targetrule_index_upsell_product;
DROP TABLE IF EXISTS enterprise_targetrule_index_upsell;
DROP TABLE IF EXISTS enterprise_targetrule_index;
DROP TABLE IF EXISTS enterprise_targetrule_product;
DROP TABLE IF EXISTS enterprise_targetrule;
DROP TABLE IF EXISTS enterprise_url_rewrite_category_cl;
DROP TABLE IF EXISTS enterprise_url_rewrite_product_cl;
DROP TABLE IF EXISTS enterprise_url_rewrite_redirect_cl;
DROP TABLE IF EXISTS enterprise_url_rewrite_redirect_rewrite;
DROP TABLE IF EXISTS enterprise_url_rewrite_redirect;
DROP TABLE IF EXISTS enterprise_url_rewrite;
DROP TABLE IF EXISTS enterprise_customersegment_segment;

DROP TRIGGER IF EXISTS trg_catalog_category_entity_after_insert;
DROP TRIGGER IF EXISTS trg_catalog_category_entity_after_update;
DROP TRIGGER IF EXISTS trg_catalog_category_entity_after_delete;
DROP TRIGGER IF EXISTS trg_catalog_category_entity_url_key_after_insert;
DROP TRIGGER IF EXISTS trg_catalog_category_entity_url_key_after_update;
DROP TRIGGER IF EXISTS trg_catalog_category_entity_url_key_after_delete;
DROP TRIGGER IF EXISTS trg_catalog_product_entity_url_key_after_insert;
DROP TRIGGER IF EXISTS trg_catalog_product_entity_url_key_after_delete;
DROP TRIGGER IF EXISTS trg_catalog_product_entity_url_key_after_update;
DROP TRIGGER IF EXISTS trg_catalog_eav_attribute_after_insert;
DROP TRIGGER IF EXISTS trg_catalog_eav_attribute_after_update;
DROP TRIGGER IF EXISTS trg_catalog_eav_attribute_after_delete;
DROP TRIGGER IF EXISTS trg_core_config_data_after_insert;
DROP TRIGGER IF EXISTS trg_core_config_data_after_update;
DROP TRIGGER IF EXISTS trg_core_config_data_after_delete;
DROP TRIGGER IF EXISTS trg_core_store_group_after_insert;
DROP TRIGGER IF EXISTS trg_core_store_group_after_update;
DROP TRIGGER IF EXISTS trg_core_store_group_after_delete;
DROP TRIGGER IF EXISTS trg_core_store_after_insert;
DROP TRIGGER IF EXISTS trg_core_store_after_delete;
DROP TRIGGER IF EXISTS trg_core_store_after_update;
DROP TRIGGER IF EXISTS trg_core_website_after_delete;
DROP TRIGGER IF EXISTS trg_customer_group_after_insert;

And reindex!

0

Here are 2 cents from my side (but this is for Magento 2 and approach can be similar).

  1. Create a new branch from master
  2. Update composer.json
  3. Remove EE related license files (Not Required)
  4. Disable EE modules
  5. Update composer
  6. DB Cleansing
  7. Clear cache
  8. Verify the Magento Edition
  9. Browse the website & check thoroughly
  10. Live Deployment

The detailed explanation can be found in
https://blog.magepsycho.com/migrate-downgrade-magento-2-from-enterprise-to-community-edition/

Not the answer you're looking for? Browse other questions tagged or ask your own question.