Website Migration from Joomla to 1C-Bitrix
Joomla is a versatile CMS with flexible extension structure. Most sites on it are corporate portals, news publications, catalogs without full commerce. When business grows and needs a full online store with 1C integration, CRM and ERP — people look at Bitrix. Migration task is non-trivial: Joomla has no unified data model, everything depends on installed extensions.
Audit of Source Site
Before writing migration script, conduct inventory. In Joomla, data stored in tables with prefix (usually jos_ or arbitrary):
-
Articles —
jos_content, fields:title,alias,introtext,fulltext,catid,created,modified,metadesc,metakey,images(JSON). -
Categories —
jos_categories(common 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 installed — separate tables jos_virtuemart_products, jos_virtuemart_product_prices, jos_virtuemart_categories. If HikaShop — their jos_hikashop_product. Find out at audit stage and build transfer plan for specific config.
Data Structure in Bitrix
Joomla news and articles transferred to infoblocks (b_iblock_element). For corporate site usually create infoblocks "News", "Articles", "Blog" with needed properties. Joomla categories → iblock sections (b_iblock_section).
If Joomla had VirtueMart and need transfer to Bitrix online store — approach same as OpenCart migration: products to catalog iblock, prices to b_catalog_price.
Joomla menu pages converted to Bitrix menu items via bitrix:menu component — structure stored in .menu.php files in site directories.
Content Transfer
Main data mass — articles. Transfer scheme:
- Read
jos_contentJOINjos_categories— get article with category path. - Create iblock section via
CIBlockSection::Add()if not created yet (savecatid → SECTION_IDmapping). - Create iblock element via
CIBlockElement::Add():NAME = title,PREVIEW_TEXT = introtext,DETAIL_TEXT = fulltext,CODE = alias,ACTIVE_FROM = created. - Write meta-tags to element properties or via
mainmodule tob_iblock_element_propertytable.
Images in Joomla stored in images field as JSON: {"image_intro":"images/catalog/photo.jpg","image_fulltext":""}. Parse JSON, download files, register via CFile::SaveFile().
HTML content. Editors often insert non-standard extension shortcodes — {loadmodule mod_name}, {phocagallery ...} etc. Before transfer, run content through regexes, remove unrecognized tags or replace with Bitrix analogs (components in text via <?$APPLICATION->IncludeComponent(...)?> undesirable — better remove and implement logic separately).
Users
jos_users stores passwords in bcrypt — algorithm compatible with PHP password_hash(). Bitrix can work with bcrypt if configure BX_SECURITY_SESSION_CACHE_MODE. But standard path — create users via CUser::Add() with temporary password and send reset emails. Map Joomla groups (jos_usergroups) to Bitrix groups.
SEO and Redirects
Joomla builds URLs by component templates. With SEF adapter enabled, 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.
Form table of old and new URL correspondence. For each article, old URL determined by alias and category path. New URL in Bitrix depends on component URL structure settings. Write redirects via UrlRewriter::add() or in web server config.
Special attention — sitemap.xml and robots.txt. If site accumulated SEO weight, don't change URL structure without 301-redirects.
Extensions Without Direct Analogs
| Joomla Extension | Bitrix Analog |
|---|---|
| JComments / K2 Comments | forum module or custom component |
| AcySailing (newsletters) | subscribe module |
| Akeeba Subscriptions | Custom development or sale module |
| JEvents | Iblock with Date property type |
| Phoca Gallery | bitrix:photogallery component |
Timeline
| Stage | Typical Duration |
|---|---|
| Audit extensions and data structure | 1–2 days |
| Design infoblocks and properties | 1 day |
| Write and debug migration script | 2–4 days |
| Transfer images and media files | 1–2 days |
| Transfer users | 0.5 day |
| Configure SEO-redirects | 1 day |
| Final testing | 1 day |
| Total | 7–11 working days |
Timeline increases if Joomla had VirtueMart with large catalog or many non-standard extensions with custom tables.







