Migration from Joomla to 1C-Bitrix: Step-by-Step Guide and Timelines
Joomla is a versatile CMS with a flexible extension structure. Most sites on it are corporate portals, news outlets, or catalogs without full-fledged commerce. When a business grows and needs a proper online store with 1C, CRM, and ERP integration, they start looking towards Bitrix. The migration task is nontrivial: Joomla lacks a unified data model—everything depends on installed extensions. We handle the full migration cycle: from audit to final testing. We restore structure, SEO, and functionality turnkey.
Why Migration from Joomla to Bitrix Is Complex
The main challenge is the non-standardized data schema of Joomla. The database almost always contains custom extensions—VirtueMart, HikaShop, JEvents, Phoca Gallery. Each stores data in its own tables. For example, VirtueMart uses jos_virtuemart_products, while HikaShop uses jos_hikashop_product. During the audit stage, we map out the extensions and determine which data is critical for transfer.
Audit of the Source Site
Before writing the migration script, we inventory the data. In Joomla, data is stored in tables with a prefix (usually jos_ or custom):
- Articles —
jos_content, fields:title,alias,introtext,fulltext,catid,created,modified,metadesc,metakey,images(JSON). - Categories —
jos_categories(shared table for all content types, filter byextension = 'com_content'). - Users —
jos_users,jos_user_profiles,jos_usergroups. - Menu —
jos_menu,jos_menu_types. -
Tags —
jos_tags,jos_contentitem_tag_map.
If VirtueMart is present—separate tables jos_virtuemart_products, jos_virtuemart_product_prices, jos_virtuemart_categories. If HikaShop—its own jos_hikashop_product. We determine this during the audit and build a migration plan for the specific configuration.
Data Structure in Bitrix
Joomla news articles and static pages are migrated to information blocks (b_iblock_element). For a corporate site, we usually create information blocks "News", "Articles", "Blog" with the necessary properties. Joomla categories → information block sections (b_iblock_section).
If Joomla ran VirtueMart and you need to transfer to a Bitrix online store, the approach is similar to migrating from OpenCart: products go to the catalog information block, prices to b_catalog_price.
Joomla menu items are converted to Bitrix menu items using the bitrix:menu component—the structure is stored in .menu.php files in site directories.
How to Transfer Content Without Loss
The bulk of the data is articles. The transfer scheme:
- Read from
jos_contentJOINjos_categories— get the article with the category path. - Create an information block section via
CIBlockSection::Add()if not yet created (keep a mapping ofcatid → SECTION_ID). - Create an information block element via
CIBlockElement::Add():NAME = title,PREVIEW_TEXT = introtext,DETAIL_TEXT = fulltext,CODE = alias,ACTIVE_FROM = created. - Meta-tags are written into element properties or via the
mainmodule into the tableb_iblock_element_property.
Images in Joomla are stored in the images field as JSON: {"image_intro":"images/catalog/photo.jpg","image_fulltext":""}. Parse JSON, download files, register via CFile::SaveFile().
HTML content. Joomla editors often insert non-standard extension shortcodes—{loadmodule mod_name}, {phocagallery ...}, etc. Before migration, we run the content through regex, removing unrecognizable tags or replacing them with Bitrix analogs (embedding components inside text via <?$APPLICATION->IncludeComponent(...)?> is undesirable—better to remove and handle logic separately).
Users
jos_users stores passwords in bcrypt—an algorithm compatible with PHP password_hash(). Bitrix can work with bcrypt if BX_SECURITY_SESSION_CACHE_MODE is configured. However, the standard path is to create users via CUser::Add() with a temporary password and send password reset emails. Joomla groups (jos_usergroups) are mapped to Bitrix groups.
SEO and Redirects
Joomla constructs URLs based on component templates. With SEF enabled, the URL looks like /news/category-alias/article-alias.html or /news/article-alias. Without SEF: /index.php?option=com_content&view=article&id=42&catid=5.
We create a mapping table of old and new URLs. For each article, the old URL is determined by alias and the category path. The new URL in Bitrix depends on the SEF settings of the component. Redirects are set up via UrlRewriter::add() or in the web server config.
Special attention goes to sitemap.xml and robots.txt. If the site had accumulated SEO weight, we do not change the URL structure without 301 redirects.
Extensions Without Direct Analogs
| Joomla Extension | Bitrix Analogue |
|---|---|
| JComments / K2 Comments | forum module or custom component |
| AcySailing (mailings) | subscribe module |
| Akeeba Subscriptions | Custom development or sale module |
| JEvents | Information block with "Date" property |
| Phoca Gallery | bitrix:photogallery component |
What's Included in the Migration Service
We provide a full package:
- Detailed audit of the current CMS and extensions.
- Data transfer scheme: which tables are mapped, which require custom handling.
- Migration scripts (PHP console commands) tested on a copy of the site.
- Transfer of images, media files, and their attachment to elements.
- Setup of SEO redirects (301) for all pages.
- Transfer of users with access groups.
- Final testing and training for your team on working with Bitrix.
Timelines
| Stage | Typical Duration |
|---|---|
| Extension and data structure audit | 1–2 days |
| Design of information blocks and properties | 1 day |
| Writing and debugging migration scripts | 2–4 days |
| Transfer of images and media files | 1–2 days |
| Transfer of users | 0.5 day |
| Setup of SEO redirects | 1 day |
| Final testing | 1 day |
| Total | 7–11 business days |
The timeline increases if Joomla had VirtueMart with a large catalog (over 5000 products) or many non-standard extensions with their own tables.
We guarantee data integrity and a transparent process. We can assess your project for free—contact us, and our engineer will conduct an audit within one day.
According to the official Bitrix documentation, information blocks v2.0 support up to 16 million elements—enough for large catalogs. Our experience confirms stability under loads of up to 100,000 products with the trade catalog enabled.







