Migration of a site from Drupal 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

Website Migration from Drupal to 1C-Bitrix

Drupal is a powerful CMS with developed entity/field architecture. Often chosen for complex portals, government sites, multilingual platforms. Switch to Bitrix usually driven by corporate requirements: 1C integration, unified ecosystem with Bitrix24, or need for Russian-certified CMS. Migration from Drupal technically harder than from most other CMS due to flexible but non-standard data storage model.

Drupal Data Model

In Drupal 7, content stored via Field API system. Each node field stored in separate table named field_data_{field_name} and field_revision_{field_name}. Main tables:

  • node — basic record: nid, type, title, uid, status, created, changed.
  • node_revision — revision history.
  • field_data_body — material body: body_value, body_summary, body_format.
  • field_data_{custom_field} — arbitrary fields, one table per field.
  • taxonomy_term_data, taxonomy_vocabulary — taxonomy (categories, tags).
  • file_managed — media files.
  • users, users_roles, role — users.

In Drupal 8/9, architecture similar, but storage via Doctrine DBAL and configs in YAML. Tables: node__body, node__field_{name} (one table per field, all revisions in node_revision__*).

Structure Design in Bitrix

Each Drupal content type becomes iblock in Bitrix. Taxonomy — iblock sections or "List" properties. Node fields mapped to iblock properties.

Before writing script, create mapping table:

Drupal Type Bitrix Property Type
field_data_body.body_value text_long DETAIL_TEXT
field_data_image.field_image_fid image PREVIEW_PICTURE
field_data_field_tags term_reference PROPERTY_TAGS List
field_data_field_price decimal PROPERTY_PRICE Number

Migration Script

Drupal 7: script reads data via PDO from Drupal MySQL database. For each node:

SELECT n.nid, n.title, n.created, b.body_value, b.body_summary
FROM node n
LEFT JOIN field_data_body b ON b.entity_id = n.nid AND b.bundle = 'article'
WHERE n.type = 'article' AND n.status = 1

Then for each field — separate JOIN or subquery. Result — data array for CIBlockElement::Add().

Media files. In Drupal files registered in file_managed with uri field format public://photos/image.jpg. Physically file in sites/default/files/photos/image.jpg. Copy files, register via CFile::SaveFile(), attach to element.

Taxonomy. Taxonomy terms (taxonomy_term_data) transferred as iblock sections or "List" property values. If Drupal had multiple terms from one vocabulary for one material — create "Multiple" property in Bitrix.

Multilingual Support

Drupal has built-in multilingual support via i18n modules (Drupal 7) or built-in Content Translation (Drupal 8+). Translations stored in field_data_* with different language values. Bitrix supports multilinguality via infoblocks with LANGUAGE_ID or via different sites in one installation. If site multilingual — this stage requires separate design.

Views and Blocks

Drupal Views — dynamic content lists with filtering and sorting. In Bitrix their analog is bitrix:news.list component with filter parameters. No direct Views transfer exists: each View analyzed manually and implemented as component or custom code.

Drupal Blocks (region/block) — in Bitrix these are areas ($APPLICATION->ShowPanel()) and components in template. Page structure transferred when developing design, not during data migration.

Drupal Modules Without Analogs

Webform → forms via bitrix:form. Commerce (Drupal Commerce) → catalog + sale modules. Rules → Bitrix business processes or event handlers. Feeds (import) → agent or cron task.

Timeline

Stage Typical Duration
Audit content types and fields 1–2 days
Design infoblocks and field mapping 1–2 days
Develop migration script 3–6 days
Transfer media files 1–2 days
Multilinguality (if present) 2–3 days
SEO-redirects 1 day
Testing and fixes 1–2 days
Total 10–18 working days

Drupal is one of most complex CMS for migration precisely because of non-standard storage structure and abundance of possible modules. Actual timeline always clarified after audit of source database.