Migration of a site from Joomla to 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

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):

  • Articlesjos_content, fields: title, alias, introtext, fulltext, catid, created, modified, metadesc, metakey, images (JSON).
  • Categoriesjos_categories (common table for all content types, filter by extension = 'com_content').
  • Usersjos_users, jos_user_profiles, jos_usergroups.
  • Menujos_menu, jos_menu_types.
  • Tagsjos_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:

  1. Read jos_content JOIN jos_categories — get article with category path.
  2. Create iblock section via CIBlockSection::Add() if not created yet (save catid → SECTION_ID mapping).
  3. Create iblock element via CIBlockElement::Add(): NAME = title, PREVIEW_TEXT = introtext, DETAIL_TEXT = fulltext, CODE = alias, ACTIVE_FROM = created.
  4. Write meta-tags to element properties or via main module to b_iblock_element_property table.

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.