OpenCart works well for small stores, but once your catalog grows to tens of thousands of products, you need 1C integration, complex discount logic, or marketplace connectors — OpenCart hits a ceiling. We handle these requests regularly and migrate to 1C-Bitrix turnkey. With over 30 completed migrations, we have saved clients an average of 40% on support time by building the right architecture. Migration to 1C-Bitrix solves these limitations, but requires careful data handling: the storage structures are fundamentally different.
For example, in OpenCart, products are stored in normalized tables (oc_product, oc_product_description), while in Bitrix they are infoblock elements with properties. Prices, stock, and SKUs are separate entities. If these differences are ignored, attributes become garbage, orders become number sets without context. So we don't just copy the database — we design a new architecture for your needs.
Problems We Solve
- Data inconsistency: Mismatched product-to-category links, orphaned images, duplicate properties.
- Order integrity: Lost order histories, broken user references.
- SEO degradation: Missing 301 redirects lead to 404s and ranking drops.
- Performance loss: Badly structured data multiplies page load times; on one project with 15,000 products we reduced load from 8 s to 1.2 s after a proper migration.
How We Do It: A Real Case
On a project with 12,000 products, 500 categories, and 40 custom attributes, we migrated from OpenCart 2.3 to 1C-Bitrix 22.0. The main challenge was mapping OpenCart options (color, size) to Bitrix SKUs. We created a custom PHP script that reads oc_option and oc_product_option, then creates an SKU infoblock with PROPERTY_CML2_LINK linking back to the parent product. For each option combination, a unique SKU element was generated with its own price and stock. The migration ran on a copy first, uncovered 3% of products with missing images (fixed by repathing), and completed in 9 days. The client saw a 50% reduction in admin page load times due to proper indexing.
What Exactly Migrates
From OpenCart, we take everything accumulated in the database:
- Products — tables
oc_product,oc_product_description,oc_product_image,oc_product_attribute. Each product has a main image, gallery, SEO fields, and arbitrary attributes. - Categories —
oc_category,oc_category_description. Unlimited depth tree. - Orders —
oc_order,oc_order_product,oc_order_history. Full history with items, statuses, shipping addresses. - Customers —
oc_customerwith addresses fromoc_address. - Reviews —
oc_review. - Manufacturers —
oc_manufacturer.
We also inspect installed extensions; third-party modules often store data in their own oc_* tables.
Data Structure Comparison
| Entity | OpenCart | 1C-Bitrix |
|---|---|---|
| Product | oc_product + oc_product_description |
Infoblock element + properties |
| Category | oc_category + oc_category_description |
Infoblock section |
| Order | oc_order + oc_order_product |
b_sale_order + b_sale_basket |
| Customer | oc_customer |
User (group "Buyers") |
| Attribute | oc_attribute + oc_product_attribute |
Infoblock property (string, list, number) |
| Option (variant) | oc_option + oc_product_option |
SKU (trade offer) |
| Image | oc_product_image |
CFile::MakeFileArray() + MORE_PHOTO field |
Migration Process
-
Analysis and preparation — 1–2 days. Dump the OpenCart database, inventory: product count, category depth, attribute count, unique options. If OpenCart used options (
oc_option,oc_product_option), design the SKU structure in Bitrix. - Bitrix setup — 1 day. Install the required 1C-Bitrix edition. For an online store, at least "Small Business"; for a full catalog with multiple price lists and warehouses, "Business". Configure catalog infobocks, create properties for OpenCart attributes.
-
Data import — 3–5 days. Write a PHP migration script that reads from the OpenCart MySQL dump via PDO and creates elements in Bitrix via
CIBlockElement::Add()or, for speed, direct insertion intob_iblock_elementfollowed by\Bitrix\Iblock\IblockTable. For large catalogs (50,000+ items), direct batch inserts are 10–20× faster than the API. Categories are migrated first — build a section tree viaCIBlockSection::Add(), save mappingoc_category_id → IBLOCK_SECTION_IDfor later product binding. -
Image transfer — 1–2 days. Copy images from
/image/catalog/OpenCart to the Bitrix server. Register each image via\CFile::MakeFileArray()and bind to the element viaMORE_PHOTOproperty. Main image goes toPREVIEW_PICTUREof the infoblock element. -
Orders and customers — 1–2 days. Orders are transferred to
b_sale_order/b_sale_order_props_value/b_sale_basket. Customers are created viaCUser::Add()with the "Buyers" group. OpenCart passwords (MD5 with salt) are incompatible — send users a password reset email. -
SEO and redirects — 1 day. Map old OpenCart URLs (e.g.,
/index.php?route=product/product&product_id=42or SEO-friendly/product-slug) to new Bitrix URLs. Generate a 301 redirect table and load via themainmodule (\Bitrix\Main\UrlRewriter) or.htaccess/nginx config. - Final validation and launch — 1 day.
Timeline Estimates
| Stage | Typical Duration |
|---|---|
| Data analysis and structure design | 1–2 days |
| Migration script writing and testing on copy | 3–5 days |
| Image transfer | 1–2 days |
| Orders, customers, history | 1–2 days |
| SEO redirects and URL check | 1 day |
| Final validation and launch | 1 day |
| Total | 8–13 working days |
Typical Challenges
| Challenge | Description |
|---|---|
| OpenCart attributes → Bitrix properties | OpenCart attributes (oc_attribute) are simple text pairs "name: value". Bitrix properties are typed. Before migration, inventory attributes and decide which become "List", "String", "Number". |
| Product options | OpenCart options (color, size) with separate prices and stock become SKUs. Create a SKU infoblock and transfer options as individual elements linked via PROPERTY_CML2_LINK. |
| Multi-currency | OpenCart stores multiple currencies in oc_currency. In Bitrix, currencies are configured in the currency module, each price type (b_catalog_price_type) can have its own currency. |
| Extensions | Third-party modules require analogs from the Bitrix marketplace or custom development. We help create a replacement map. |
What's Included in Our Work
- Full audit of the current OpenCart database.
- Design of infoblock and property structure in Bitrix.
- Development and execution of the migration script (with testing on a copy).
- Transfer of images and media files.
- Setup of 301 redirects (up to 2,000 URLs).
- Transfer of order history and users.
- Instructions for password reset for customers.
- 30-day guarantee on correctness of migrated data.
What Remains for the Client
After migration, you need to set up the design (OpenCart theme doesn't transfer), payment systems via the sale module, and shipping services. If the store works with 1C, we configure exchange via CommerceML and the standard handler /bitrix/admin/1c_exchange.php. This goes beyond data migration but is best done in the same project.
Contact us for a free project evaluation. Get a consultation — we'll tell you how to optimize your budget. Order a free audit of your project before migration — it helps avoid surprises.







