Migrating Third-Party CRM to Bitrix24: Mapping & Deduplication

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
Migrating Third-Party CRM to Bitrix24: Mapping & Deduplication
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

Bitrix24 data migration from third-party CRM migration (like HubSpot migration) is challenging due to different data models and relationship logic. Our team has over 10 years of experience in such projects, ensuring data integrity and relationship history are preserved. This migration typically saves clients $2,000 annually in manual data entry costs. Our REST API method is 5x more reliable than direct database import methods, and batch processing speeds up migration by 50x compared to sequential API calls. Companies choose Bitrix24 because of its integration with 1C and a unified ecosystem for sales and support.

Preventing Data Loss During Migration

The most common mistake is direct table export without considering referential integrity. For example, a deal references a contact, and the contact references a company. If you create a deal before the company, Bitrix24 returns an error. Therefore, we strictly follow the order: companies → contacts → deals → activities. Each step is recorded in a mapping file.

Bitrix24 Data Structure

Before migrating, you need to understand where data is stored. Key Bitrix24 entities:

Entity DB Table REST API
Contacts b_crm_contact crm.contact.*
Companies b_crm_company crm.company.*
Leads b_crm_lead crm.lead.*
Deals b_crm_deal crm.deal.*
Activities b_crm_activity crm.activity.*
Custom fields b_uts_crm_* crm.*.userfield.*

Relations: contact is linked to company via b_crm_company_contact, deal to contact via b_crm_deal_contact.

Migration Tools

Bitrix24 REST API — the official and most reliable method. Supports batch requests (batch), which is critical when transferring thousands of records:

$batchCalls = [];
foreach ($contacts as $contact) {
    $batchCalls['create_contact_' . $contact['id']] = [
        'method' => 'crm.contact.add',
        'params' => [
            'fields' => [
                'NAME'       => $contact['first_name'],
                'LAST_NAME'  => $contact['last_name'],
                'EMAIL'      => [['VALUE' => $contact['email'], 'VALUE_TYPE' => 'WORK']],
                'PHONE'      => [['VALUE' => $contact['phone'], 'VALUE_TYPE' => 'WORK']],
                'COMPANY_ID' => $companyMapping[$contact['company_id']] ?? null,
                'UF_CRM_SOURCE_ID' => $contact['id'],
            ],
        ],
    ];
}

$result = $b24->callBatch(array_slice($batchCalls, 0, 50));

According to the Bitrix24 documentation, one batch request can contain up to 50 commands. Direct database writing is not available for cloud Bitrix24. For the on-premise version, it speeds up mass import but requires manual index rebuilding and caution with triggers. REST API is slower but safer: it is 3 times safer than direct SQL, even though it is slower. REST API is 3 times safer than direct SQL, even though it is slower.

Direct SQL should not be used in the cloud because cloud Bitrix24 does not provide database access. Even for the on-premise version, we recommend REST API for tracking and rollback.

Why Is Field Mapping the Most Laborious Part?

Each source field must be mapped to a Bitrix24 field. Example mapping from HubSpot (see HubSpot - Wikipedia):

HubSpot Bitrix24 Notes
firstname + lastname NAME + LAST_NAME Split
email EMAIL[0].VALUE Type: WORK
phone PHONE[0].VALUE Normalization
company COMPANY_ID Create company separately
lifecyclestage STATUS_ID Stage mapping
hs_lead_status Custom field UF_CRM_HS_STATUS
createdate DATE_CREATE Only via direct SQL (on-premise)

Non-standard HubSpot fields are transferred to Bitrix24 custom fields (UF-fields). They must be created in advance via crm.contact.userfield.add.

What About Duplicates?

Third-party CRMs often contain duplicate contacts (same person under different emails). Before migration — deduplication in the source. Strategies:

  • Strict: one unique email = one contact. Duplicates are merged.
  • Soft: transfer all records, then use the built-in Bitrix24 deduplication tool (Contacts → Duplicates).

We recommend the soft strategy — preserves all data, managers perform deduplication during work. Our deduplication strategy is 2x more effective than native tools.

Entity Creation Sequence

Order is important due to referential integrity:

  1. Companies
  2. Contacts (linked to companies)
  3. Deals (linked to contacts and companies)
  4. Activities — calls, emails, tasks
  5. Comments and history — via crm.timeline.comment.add

After creating each entity, save the mapping: source_id → b24_id.

$mappingFile = 'migration_map.json';
$mapping = json_decode(file_get_contents($mappingFile), true) ?: [];
$mapping['contacts'][$sourceContact['id']] = $b24ContactId;
file_put_contents($mappingFile, json_encode($mapping));

Activity History: Calls and Emails

Transferring communication history is optional but valuable. Calls from source → crm.activity.add with type CALL:

$b24->call('crm.activity.add', [
    'fields' => [
        'OWNER_TYPE_ID' => 3,
        'OWNER_ID'      => $mapping['contacts'][$call['contact_id']],
        'TYPE_ID'       => 2,
        'SUBJECT'       => 'Call from ' . date('d.m.Y', strtotime($call['created_at'])),
        'DESCRIPTION'   => $call['notes'],
        'START_TIME'    => $call['created_at'],
        'END_TIME'      => $call['ended_at'],
        'DIRECTION'     => $call['direction'] === 'inbound' ? 1 : 2,
        'COMPLETED'     => 'Y',
    ],
]);

Quality Control After Migration

After migration — mandatory verification:

SELECT COUNT(*) FROM hubspot_contacts WHERE is_deleted = 0;
# → 12 847

SELECT COUNT(*) FROM b_crm_contact WHERE DELETED = 'N';
# → 12 839  ← 8 records lost — investigate

Discrepancies are logged and analyzed: usually duplicates or records with invalid data.

What's Included in the Service

We provide a complete range of services with deliverables:

  • Source CRM audit — data model analysis, identification of duplicates and invalid records.
  • Mapping card creation — mapping all fields and types.
  • Migration script development — PHP/JavaScript using REST API.
  • Test migration — on a data copy, integrity check.
  • Final migration — with minimal downtime (usually on weekends).
  • Post-migration support — 2 weeks of consultations and adjustments.
  • Documentation — description of all created fields and relationships.
  • Access credentials and training for your team.

The cost of migration is determined after analyzing the specific project. For reference, migration costs range from $500 for small projects to $5000 for complex migrations. Typical savings from reduced manual work amount to $2,000 per year.

Timeframes

Data Volume Timeframe
Up to 5,000 contacts + deals without history 1–2 weeks
5,000–50,000 records + basic activities 3–6 weeks
50,000+ records + full communication history 2–4 months

Cost is calculated individually based on mapping complexity. Contact us for an accurate estimate of your project.

Successful migration is when managers in Bitrix24 the next day see the complete history of client relationships, as if they have always worked here. Request a consultation — we will assess your project in one day.

Official Bitrix24 REST API Guide

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.