How to Migrate from Drupal to 1C-Bitrix and Preserve SEO Rankings

Migrating from Drupal to 1C-Bitrix is a task we tackle regularly. Clients come with complaints about complex 1C integration, lack of corporate tools (Bitrix24), or import substitution requirements. Migration from Drupal is technically more challenging than from most other CMS due to its flexible but

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    995
  • 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
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    863
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

Migrating from Drupal to 1C-Bitrix is a task we tackle regularly. Clients come with complaints about complex 1C integration, lack of corporate tools (Bitrix24), or import substitution requirements. Migration from Drupal is technically more challenging than from most other CMS due to its flexible but non-standard data storage model. A typical scenario: an online store on Drupal Commerce that can no longer handle the load and requires 1C integration. Moving to Bitrix not only solves these issues but also reduces data exchange time with the accounting system by 2–3 times thanks to ready-made exchange modules. Our clients save up to 40% of development budget on integrations compared to customizing Drupal. Contact us for an audit of your project, we'll discuss the details of your move.

Why migration from Drupal is technically harder than from other CMS?

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

  • node — base record: nid, type, title, uid, status, created, changed.
  • node_revision — revision history.
  • field_data_body — body content: body_value, body_summary, body_format.
  • field_data_{custom_field} — custom 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, the architecture is similar but stores via Doctrine DBAL and configs in YAML. Tables: node__body, node__field_{name} (one table per field, all revisions in node_revision__*). According to official documentation, this structure provides flexibility but complicates direct migration.

Designing the structure in Bitrix

Each Drupal content type becomes an information block in Bitrix. Taxonomy becomes information block sections or list-type properties. Node fields are mapped to information block properties.

Before writing the script, we create a 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: the script reads data via PDO from the 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, a separate JOIN or subquery. The result is an array for CIBlockElement::Add().

Media files. In Drupal, files are registered in file_managed with a uri field in the format public://photos/image.jpg. The physical file is in sites/default/files/photos/image.jpg. We copy files, register them via CFile::SaveFile(), and attach to the element.

Taxonomy. Taxonomy terms (taxonomy_term_data) are transferred as information block sections or as list-type property values. If one material has multiple terms from the same vocabulary, we create a multiple property in Bitrix.

How to migrate a multilingual site?

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

Views and blocks

Drupal Views — dynamic lists of materials with filtering and sorting. In Bitrix, the equivalent is the bitrix:news.list component with filter parameters. There is no direct transfer of Views: each View is analyzed manually and implemented as a component or custom code.

Drupal blocks (region/block) — in Bitrix these are areas ($APPLICATION->ShowPanel()) and components in the template. The page structure is transferred during design development, not during data migration.

Drupal modules without analogues

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

How to preserve SEO positions during migration?

Key element — 301 redirects. We create a mapping of old Drupal URLs to new Bitrix addresses. Additionally, we configure sitemap, robots.txt, and transfer meta tags from Drupal fields. For images, we preserve alt texts and file names.

How to perform the migration: step-by-step plan

  1. Audit of the Drupal database: analyze structure, content types, volumes.
  2. Design information blocks and field mapping: complete mapping scheme.
  3. Develop the migration script: PHP script using PDO, process all entities.
  4. Transfer media files: copy files preserving paths and attributes.
  5. Set up SEO redirects: generate .htaccess with 301 redirects.
  6. Test and verify data: compare element counts, check links.
  7. Documentation and admin training: transfer knowledge.
  8. Post-migration support: technical support for 2 weeks.

Timeline

Stage Typical duration
Content types and fields audit 1–2 days
Information blocks design and field mapping 1–2 days
Migration script development 3–6 days
Media files transfer 1–2 days
Multilingual (if present) 2–3 days
SEO redirects 1 day
Testing and fixes 1–2 days
Total 10–18 working days

Drupal is one of the most difficult CMS for migration precisely because of its non-standard storage structure and abundance of possible modules. The actual timeline is always confirmed after auditing the source database. To estimate the workload for your project, get a consultation — we will conduct an audit and offer a turnkey migration plan. We guarantee quality and preservation of rankings.