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

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.
Showing 1 of 1All 1626 services
How to Migrate from Drupal to 1C-Bitrix and Preserve SEO Rankings
Medium
~1-2 weeks
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1356
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    943
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    828
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1073

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.

Why URL Structure Matters in Bitrix Migration?

Skipping URL mapping during a website migration to Bitrix crashes organic traffic by 50–80% in two weeks. WordPress uses /product/item-name/, OpenCart uses /index.php?route=product/product&product_id=123, Bitrix defaults to /catalog/section/element/. Without a 301 redirect map, search engines index mass 404s. We start every migration with Screaming Frog scanning the old site, then compile a complete redirect map before writing a single line of code. Proper migration requires full URL mapping — every indexed page gets a correspondent.

Over seven years we have completed 50+ projects: landing pages, catalogs with 300,000 products, e‑commerce stores. Typical duration 2–8 weeks. Contact us for a free project estimate within one day.

How Migration Preserves SEO Positions

Losing organic traffic is the biggest fear, and it's justified. Here is how we avoid it.

  • URL mapping 1:1 — where possible, via CUrlRewriter and infoblock SEF settings we keep the exact structure. When impossible — 301 redirect. Auto‑generation of redirect map: parse Screaming Frog export, match with new element slugs, generate nginx config. Each redirect verified with curl -I after switching.
  • Transfer of meta tags — title, description, h1 moved into properties ELEMENT_META_TITLE and ELEMENT_META_DESCRIPTION. Canonical via Bitrix SEO component. Duplicates cut: www/non‑www, http/https, sorting parameters. Sitemap: new sitemap.xml generated by Bitrix seo module, submitted to Search Console immediately after DNS switch.
  • Speed comparison — Bitrix processes a catalog of 100,000 products 3x faster than OpenCart due to tagged caching and query optimization for b_catalog_product.

What Data Gets Transferred?

Content — pages, articles, news → information infoblocks. Catalog: categories → sections, products → elements linked to b_catalog_product, properties → infoblock properties or highload directories. Images, reviews, FAQ.

E‑commerce — products with trade offers (SKUs), prices in b_catalog_price (multi‑currency via b_catalog_currency), stock balances b_catalog_store_product, discounts (b_sale_discount), order history (b_sale_order + b_sale_basket).

Users — client base b_user plus custom UF fields. Passwords are hashed differently: WordPress — phpass, OpenCart — SHA1+salt, Drupal — SHA512. We write a custom CUser::LoginByHash with fallback to old algorithm — client enters password once, system rehashes to Bitrix bcrypt.

SEO data — meta tags, alt attributes, URL structure. Main task: preserve every indexed URL or set 301.

Media — images, documents, videos — transferred preserving paths and optimized via CFile::MakeFileArray().

How to Plan a Successful Migration: 5 Key Steps

  1. Audit — scan with Screaming Frog: all URLs, status codes, meta tags. Analyze DB structure, custom modifications, integrations. Create migration map.
  2. Architecture design — map content types → infoblocks, fields → properties, directories → highload blocks. Architecture must be convenient for Bitrix administration.
  3. Migration scripts — PHP scripts read from old DB (or API), transform and write via Bitrix API (CIBlockElement::Add, \Bitrix\Sale\Order::create). Re‑run during testing.
  4. Staging — full migration to test server. Verify integrity: product count, properties, URLs, filters.
  5. Final migration & switching — delta import, DNS switch, monitoring.
Detailed stage timeline
Stage Duration Activities
Audit 1–3 days Full site scan, integration register
Architecture 2–5 days Infoblock design, field mapping
Scripts 3–10 days PHP based migration engine
Staging 1–2 days Full dry run, integrity checks
301 redirects 1–2 days Map in .htaccess or nginx.conf
Final migration 1 day Delta import, DNS switch
Post‑migration 2–4 weeks Monitor Search Console, fix crawl errors
Deliverable Description
Documentation Redirect map, mapping description, DB schema
Access Admin panel, FTP/SSH, API keys
Training Video tutorials or on‑boarding session
Support 2 weeks post‑migration monitoring, bug fixing
Guarantee Rollback to old site within 48 hours

Typical Migration Mistakes and How to Avoid Them

Each of these errors has caused loss of positions and clients.

  • Loss of URLs without redirects — the most destructive mistake. /product/123 instead of /catalog/item-name.html — without 301 this means mass 404s and traffic collapse. We auto‑generate the map and verify every redirect after switching.
  • Content duplication — one product accessible with and without www, via HTTP and HTTPS, with GET filter parameters → five URLs instead of one. SEO weight dilutes. Set up canonical, 301 for variants, robots.txt with Disallow for parameters.
  • Broken images — absolute URLs in content (src="https://old-site.ru/img/photo.jpg"), quality loss during compression. Replace with relative paths, transfer preserving structure, check HTTP 200 for each file.
  • Loss of meta tags and microdata — title, description, Schema.org may not transfer. Do full mapping and verify on staging.
  • Broken forms and integrations — changed IDs, API keys, webhooks. Compile integration register before start and test each after.
  • Mobile version — old m.site.ru → responsive Bitrix. Without mobile URL redirect → 404 for mobile users. Include in redirect map.

Timelines and Cost Savings

Project type Timeline Notes
Informational site (up to 500 pages) 2–4 weeks Content + design + redirects
E‑commerce store (up to 10,000 products) 4–8 weeks Catalog + orders + integrations
Large store (100,000+ products) 2–4 months Custom scripts + load testing

Businesses typically save $3,000–$8,000 annually after migration — no old CMS license fees, reduced plugin and hosting costs. Annual hosting savings alone can reach $1,200. Add the affordable licensing cost of 1C‑Bitrix — it pays off quickly.

Contact us for a free migration estimate. We also provide a preliminary calculation within one day — request a consultation with our Bitrix specialists.