Перенесення даних з іншої CRM у Бітрікс24: маппінг та дедуплікація

При перенесенні 50 000 контактів з Salesforce в Бітрікс24 менеджери втратили зв'язки угод з контактами — знайома ситуація? Кожна CRM має власну модель даних, логіку зв'язків та специфіку полів. Бітрікс24 — теж. Головне завдання міграції: зберегти цілісність даних та історію відносин. Наша команда ма
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Перенесення даних з іншої CRM у Бітрікс24: маппінг та дедуплікація
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    735
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1134

При перенесенні 50 000 контактів з Salesforce в Бітрікс24 менеджери втратили зв'язки угод з контактами — знайома ситуація? Кожна CRM має власну модель даних, логіку зв'язків та специфіку полів. Бітрікс24 — теж. Головне завдання міграції: зберегти цілісність даних та історію відносин. Наша команда має понад 10 років досвіду в таких проектах, тому ми знаємо всі підводні камені.

Компанії обирають Бітрікс24 через інтеграцію з 1С та єдину екосистему для продажів і підтримки. Перенесення даних — складний процес, що вимагає глибокого розуміння обох систем. Наш досвід гарантує, що після перенесення менеджери побачать повну історію відносин з клієнтами, наче завжди працювали в Бітрікс24.

Як уникнути втрати даних при перенесенні?

Найпоширеніша помилка — прямий експорт таблиць без урахування посилальної цілісності. Наприклад, угода посилається на контакт, а контакт — на компанію. Якщо створити угоду раніше за компанію, Бітрікс24 поверне помилку. Тому ми суворо дотримуємося порядку: компанії → контакти → угоди → активності. Кожен етап фіксується в маппінг-файлі.

Структура даних Бітрікс24

Перш ніж мігрувати, потрібно зрозуміти, куди кладуться дані. Ключові сутності Бітрікс24:

Сутність Таблиця БД REST API
Контакти b_crm_contact crm.contact.*
Компанії b_crm_company crm.company.*
Ліди b_crm_lead crm.lead.*
Угоди b_crm_deal crm.deal.*
Активності b_crm_activity crm.activity.*
Користувацькі поля b_uts_crm_* crm.*.userfield.*

Зв'язки: контакт прив'язаний до компанії через b_crm_company_contact, угода — до контакту через b_crm_deal_contact.

Інструменти перенесення

REST API Бітрікс24 — офіційний і найнадійніший метод. Підтримує пакетні запити (batch), що критично при перенесенні тисяч записів:

$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)); 

Згідно з документацією Бітрікс24, один batch-запит може містити до 50 команд. Прямий запис у БД — для хмарного Бітрікс24 недоступний. Для коробкової версії — прискорює масовий імпорт, але вимагає ручної перебудови індексів та обережності з тригерами. REST API повільніший, але безпечніший: у 2-3 рази повільніший при пакетному записі, зате дає повний контроль і можливість відкату. REST API безпечніший за прямий SQL у 3 рази, хоча й повільніший.

Прямий SQL не варто використовувати в хмарі, оскільки хмарний Бітрікс24 не надає доступ до бази даних. Навіть у коробковій версії ми рекомендуємо REST API для відстеження та відкату.

Чому маппінг полів — найтрудомісткіша частина?

Кожне поле джерела потрібно зіставити з полем Бітрікс24. Приклад маппінгу з HubSpot (див. HubSpot - Wikipedia):

HubSpot Бітрікс24 Примітка
firstname + lastname NAME + LAST_NAME Розділення
email EMAIL[0].VALUE Тип: WORK
phone PHONE[0].VALUE Нормалізація
company COMPANY_ID Створити компанію окремо
lifecyclestage STATUS_ID Маппінг стадій
hs_lead_status Користувацьке поле UF_CRM_HS_STATUS
createdate DATE_CREATE Тільки через прямий SQL (коробка)

Нестандартні поля HubSpot переносяться в користувацькі поля Бітрікс24 (UF-поля). Їх потрібно створити заздалегідь через crm.contact.userfield.add.

Що робити з дублікатами?

Сторонні CRM часто містять дублі контактів (одна людина під різними email). Перед міграцією — дедуплікація в джерелі. Стратегії:

  • Жорстка: один унікальний email = один контакт. Дублі об'єднуються.
  • М'яка: переносимо всі записи, потім використовуємо вбудований інструмент дедуплікації Бітрікс24 (Контакти → Дублікати).

Рекомендується м'яка стратегія — зберігає всі дані, дедуплікацію менеджери роблять у процесі роботи.

Послідовність створення сутностей

Порядок важливий через посилальну цілісність:

  1. Компанії
  2. Контакти (прив'язка до компаній)
  3. Угоди (прив'язка до контактів та компаній)
  4. Активності — дзвінки, листи, завдання
  5. Коментарі та історія — через crm.timeline.comment.add

Після створення кожної сутності зберігаємо маппінг: 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)); 

Історія активностей: дзвінки та листи

Перенесення історії комунікацій — опціональна, але цінна частина. Дзвінки з джерела → crm.activity.add з типом CALL:

$b24->call('crm.activity.add', [ 'fields' => [ 'OWNER_TYPE_ID' => 3, 'OWNER_ID' => $mapping['contacts'][$call['contact_id']], 'TYPE_ID' => 2, 'SUBJECT' => 'Дзвінок від ' . 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', ], ]); 

Контроль якості після перенесення

Після міграції — обов'язкова звірка:

SELECT COUNT(*) FROM hubspot_contacts WHERE is_deleted = 0; # → 12 847 SELECT COUNT(*) FROM b_crm_contact WHERE DELETED = 'N'; # → 12 839 ← 8 записів втрачено — розслідуємо 

Розбіжності логуються та аналізуються: зазвичай це дублі або записи з невалідними даними.

Що входить у роботу

Ми надаємо повний комплекс послуг:

  • Аудит вихідної CRM — аналіз моделі даних, виявлення дублів та невалідних записів.
  • Створення маппінг-карти — зіставлення всіх полів та типів.
  • Розробка скриптів міграції — на PHP/JavaScript з використанням REST API.
  • Тестова міграція — на копію даних, перевірка цілісності.
  • Фінальне перенесення — з мінімальним даунтаймом (зазвичай у вихідні).
  • Пост-міграційна підтримка — 2 тижні консультацій та доробок.
  • Документація — опис усіх створених полів та зв'язків.

Вартість міграції визначається після аналізу обсягу даних та складності маппінгу. Економія при замовленні комплексної міграції замість поетапного перенесення може бути значною.

Строки виконання

Обсяг даних Строк
До 5 000 контактів + угоди без історії 1–2 тижні
5 000–50 000 записів + базові активності 3–6 тижнів
50 000+ записів + повна історія комунікацій 2–4 місяці

Вартість розраховується індивідуально залежно від складності маппінгу. Зв'яжіться з нами для точної оцінки вашого проекту.

Успішна міграція — це коли менеджери в Бітрікс24 наступного дня бачать повну історію відносин з клієнтами, наче завжди працювали тут. Замовте консультацію — ми оцінимо проект за один день.

Офіційний посібник з REST API Бітрікс24