Перейти к содержимому
N1
CRM / Bitrix24 · миграция данных · смарт-процессы

Перенос дел из сделок в цепочку смарт-процессов Bitrix24

Клиент: Юридическая компания, NDA Категория: CRM / Bitrix24 Стек: PHP 8, Bitrix24 D7 (CRM Factory, смарт-процессы, UF), CFile, Timeline, CLI, вебхук для роботов Срок: около 2 недель
Проблема

Юридическая компания вела дела по взысканию в обычных воронках сделок, где делопроизводство, работа юротдела и исполнение смешивались в одной карточке. Процесс переводили на цепочку смарт-процессов «делопроизводство → юротдел → исполнение» — и сотни живых дел нужно было перенести целиком, с документами и историей.

Ограничения

Коробочный портал в работе, откатить массовую запись нечем; у разных сценариев свои наборы полей и списков, а штатное хранение файловых полей на портале было повреждено — файлы при обычном сохранении терялись молча.

Что сделал
  • Общий движок миграции вместо копипасты под каждый сценарий: чтение источника, стадии, поля, файлы, запись и отчёт — сценарий задаётся только конфигом
  • Лестница безопасного запуска: --inspect-fields для составления карты полей, --dry-run с полным предпросмотром записи, --run и отдельный verify после прогона
  • Сопоставление списков между сущностями сначала по XML_ID, затем по тексту значения; все промахи и отброшенные значения пишутся в лог
  • Нормализация дат любого формата и копирование файлов с сохранением имён; при повреждённом хранении — прямая запись и обязательная сверка после сохранения
  • Перекрёстные комментарии в таймлайне «исходная сделка ↔ новый элемент», чтобы любой юрист нашёл историю дела в два клика; починка файлов по логу прогона
  • Копирование между смарт-процессами по вебхуку из робота Bitrix24: 4 профиля маршрутов, доступ по токену с проверкой через hash_equals
Архитектура
Воронки сделок → Движок миграции (карты полей) → Dry-run → run → verify → Смарт-процессы и таймлайн → Вебхук для роботов
Результат

Четыре сценария переноса (карты на ~49, ~61, ~77 и ~20 пар полей) прошли без единой ошибки в логах: например, 335 сделок перенесены за один прогон примерно за 40 секунд. Дальнейшее движение дел между смарт-процессами запускает сам робот через вебхук.

Что можно переиспользовать
Конфигурируемый движок миграции «сделка/смарт-процесс → смарт-процесс» Сопоставление списков по XML_ID с запасным вариантом по тексту Запись файловых полей со сверкой после сохранения