Коротко
- Сначала описываются сущности, связи и правила преобразования, а не только столбцы выгрузки.
- Старые идентификаторы сохраняются в отдельном поле и связываются с новыми ID через журнал соответствий.
- До переключения проводится полная репетиция на копии данных и сверка по количеству, связям и бизнес-сценариям.
- План отката готовится до запуска: фиксируются точка возврата, допустимое окно переключения и правила обработки новых изменений.
Клиентская база — это не таблица контактов
Перенос клиентской базы часто представляют как экспорт одного файла и импорт его в новую CRM. Такой подход работает только для простого списка адресов. В рабочей системе карточка клиента связана с контактными лицами, компаниями, сделками, задачами, письмами, документами, ответственными, источниками и согласиями. Если перенести значения полей, но не восстановить отношения, формально заполненная база перестанет поддерживать реальные процессы.
Полезно рассматривать миграцию как перенос графа. Узлами являются сущности, а рёбрами — связи между ними: сделка принадлежит компании, контакт представляет компанию, задача назначена сотруднику, файл относится к документу, документ — к клиенту. Порядок загрузки определяется зависимостями. Сначала в целевой системе появляются справочники и родительские записи, затем дочерние сущности и только после этого история, файлы и вычисляемые данные.
Составьте инвентаризацию и карту соответствий
До написания скрипта нужно зафиксировать состав источников. Данные могут находиться одновременно в старой CRM, таблицах менеджеров, телефонии, почтовом сервисе, облачном хранилище и бухгалтерской системе. Для каждого источника указывают владельца, способ выгрузки, формат, кодировку, часовой пояс, частоту обновления и ограничения доступа. Эта инвентаризация показывает, где находится основная запись и какой источник считается авторитетным при расхождении.
Следующий документ — карта полей. В ней исходное поле сопоставляется с целевым, описываются тип и обязательность, правила нормализации, значение по умолчанию и поведение при ошибке. Для справочников нужен отдельный словарь: старые статусы, категории, валюты, города и роли редко совпадают с новой моделью буквально. Неизвестное значение безопаснее отправить в отчёт исключений, чем незаметно заменить ближайшим вариантом.
| Объект | Что фиксировать в карте | Что проверить |
|---|---|---|
| Клиент и компания | Имена, реквизиты, контакты, источник, владелец | Уникальность и правила объединения |
| Сделка | Клиент, воронка, стадия, ответственный, валюта | Существование всех связанных записей |
| Активность | Тип, дата, автор, объект, текст | Часовой пояс и хронология |
| Документ или файл | Владелец, категория, путь, доступ | Файл открывается только разрешённой роли |
Сохраните стабильные идентификаторы
Имя, телефон и электронная почта не являются надёжными ключами миграции. Они могут повторяться, меняться, отсутствовать или храниться в разных форматах. Для каждой исходной записи нужен стабильный технический идентификатор. Если новая CRM создаёт собственный ID, старый идентификатор сохраняют в специальном поле, а пара «старый ID — новый ID» попадает в журнал соответствий. Этот журнал нужен для загрузки зависимых сущностей, повторного запуска и расследования расхождений.
Первичные ключи однозначно определяют записи, а внешние ключи поддерживают ссылочную целостность между таблицами. В прикладной миграции тот же принцип следует применять даже тогда, когда целевая CRM скрывает физическую структуру базы за API. Сделка должна ссылаться на созданного клиента по его новому ID, а не искать клиента по имени во время каждого импорта. Иначе одинаковые названия и исправленные контакты создадут непредсказуемые связи.
- Не изменяйте исходный ID при повторной выгрузке одной и той же записи.
- Храните журнал соответствий версионированно вместе с протоколом запуска.
- Запрещайте создание дочерней записи, если родительский ID не найден.
- Отдельно учитывайте объединённые записи, когда нескольким старым ID соответствует один новый клиент.
- Сделайте импорт идемпотентным: повторный запуск обновляет уже найденную запись, а не создаёт копию.
Разделите очистку, объединение и загрузку
Миграция быстро становится неуправляемой, если в одном скрипте одновременно исправлять телефоны, угадывать дубли, преобразовывать статусы и записывать результат. Лучше построить несколько наблюдаемых этапов. Сначала выгрузка сохраняется без изменения как исходный снимок. Затем отдельный слой нормализует форматы. После этого правила сопоставления формируют готовые записи, а загрузчик отвечает только за передачу в целевую систему и журналирование ответа.
Объединение дублей требует бизнес-решений. Совпадение телефона может быть сильным сигналом, но не доказывает, что две карточки принадлежат одному человеку: общий номер бывает у семьи или организации. Совпадение имени ещё слабее. Поэтому правила делят на автоматические и требующие проверки. Для каждого объединения сохраняют причину, исходные ID и правило выбора значений. В противном случае исправить ошибочное слияние после запуска будет трудно.
Проведите полную репетицию миграции
Первая полная загрузка не должна происходить в рабочую CRM. Репетиция проводится на отдельном окружении с копией конфигурации, справочников, ролей и интеграций. В неё входят все этапы: выгрузка, преобразование, загрузка, присоединение файлов, построение индексов и контрольные отчёты. Команда измеряет длительность каждого этапа не для обещания точного срока, а чтобы понять, укладывается ли процесс в доступное окно переключения.
-
01
Зафиксировать снимок
Сохранить исходные выгрузки, контрольные суммы файлов, версии схемы и миграционного кода.
-
02
Загрузить в правильном порядке
Начать со справочников и пользователей, затем перенести клиентов, сделки, активности, документы и файлы.
-
03
Собрать исключения
Не скрывать ошибки; сформировать список непринятых записей с причиной и исходным идентификатором.
-
04
Пройти рабочие сценарии
Попросить представителей ролей найти клиента, открыть сделку, проверить документ, продолжить задачу и сформировать доступный отчёт.
Репетицию считают законченной не после успешного завершения команды, а после разбора расхождений и повторного запуска исправленной версии. Желательно проверить и восстановление из резервной копии: наличие файла резервной копии само по себе не доказывает, что из него можно вернуть систему в известное рабочее состояние.
Спланируйте переключение и дельту изменений
Между тестовой выгрузкой и запуском пользователи продолжают менять клиентов и сделки. Эти изменения образуют дельту. Для небольшого процесса можно согласовать короткое окно, когда старая CRM доступна только для чтения. Для системы, которую нельзя остановить, потребуется захват изменений: журнал событий, повторная выгрузка записей по времени обновления или специализированная репликация. Выбор зависит от возможностей источника, но правило одно: каждая запись должна иметь понятное состояние на момент переключения.
План запуска назначает ответственных за выгрузку, импорт, проверку, решение об откате и коммуникацию с сотрудниками. В нём есть контрольные точки, после которых команда либо продолжает, либо возвращается к старой системе. На время переключения следует остановить интеграции, способные создавать данные в обоих контурах, а затем включать их в определённом порядке. Иначе новый сайт может отправить заявку в старую CRM уже после финальной выгрузки.
- Объявить точное время прекращения изменений в старой системе.
- Снять финальную резервную копию и проверить, к какому моменту она относится.
- Выполнить полную загрузку или применить проверенную дельту.
- Переключить формы, телефонию, почту и автоматизации на новую CRM.
- Сохранить старую систему в режиме чтения до завершения приёмки.
Сверяйте не только количество строк
Одинаковое количество клиентов в двух системах не доказывает сохранность базы. Один важный клиент может потеряться, а случайный дубль компенсирует число. Сверка должна идти на нескольких уровнях: количество по сущностям и статусам, наличие ключевых полей, существование всех связей, агрегаты по бизнес-показателям и выборочная проверка конкретных карточек. Для автоматической проверки удобно формировать машиночитаемый отчёт с перечнем совпавших, отсутствующих и отличающихся записей.
| Уровень проверки | Пример контроля | Как реагировать |
|---|---|---|
| Структура | Все обязательные поля и справочники существуют | Остановить загрузку до исправления схемы |
| Количество | Клиенты и сделки совпадают по статусам и подразделениям | Найти пропуски и неожиданные повторы |
| Связи | Нет сделок, задач и документов без владельца | Проверить журнал ID и порядок импорта |
| Содержание | Контакты, даты и суммы совпадают с источником | Разобрать правила преобразования |
| Сценарий | Сотрудник продолжает работу с выбранной карточкой | Исправить права, статусы или интерфейс |
Официальная документация AWS DMS описывает сравнение строк источника и цели и отдельный учёт несовпавших записей. Конкретный инструмент может быть другим, но принцип переносим: результат сверки должен быть воспроизводимым и оставлять список исключений. Ручная фраза «визуально всё похоже» не подходит для приёмки клиентской базы.
Подготовьте откат и контролируемую приёмку
Откат проектируется до начала миграции. Команда определяет, какие условия делают запуск неприемлемым: недоступна критичная роль, нарушены связи, не работают формы, невозможно открыть документы или сверка показывает необъяснимые расхождения. Также фиксируется крайний момент принятия решения. Чем дольше сотрудники работают в новой CRM, тем сложнее вернуть изменения назад без второй миграции.
Простой откат возможен, если старая система оставалась доступной только для чтения, а новые операции ещё не начались. После начала работы нужен план обратного переноса дельты либо осознанное решение исправлять новую систему без возврата. Резервная копия, инструкции восстановления и список внешних интеграций должны быть доступны ответственному специалисту. Рекомендации NIST по восстановлению подчёркивают важность возвращения системы в известное состояние и проверки процедур, а не только наличия резервных данных.
После технической сверки проводится бизнес-приёмка. Представители продаж, поддержки, руководства и администрирования проверяют сценарии в рамках своих прав. Например, в подтверждённом кейсе Crypto Exchange CRM клиенты, документы, сделки, офисы и кассы связаны с организацией, а сервер применяет ролевые ограничения к API, отчётам и файлам. Для такой модели перенос считается корректным только тогда, когда восстановлены не просто записи, но и принадлежность организации, рабочий контекст сотрудника и допустимый доступ к связанным данным.
Перенос завершён не тогда, когда импортировано последнее поле, а тогда, когда подтверждены связи, права и продолжение ключевых операций.
Принцип миграции Agentix Labs
Частые вопросы
Можно ли перенести базу обычным импортом CSV?
Да, если данные представляют один независимый список. Для CRM с компаниями, контактами, сделками, задачами и документами CSV является лишь транспортом: всё равно нужны стабильные ID, порядок загрузки, карта соответствий и проверка связей.
Как не создать дубли при повторном запуске?
Сохраните старый идентификатор в целевой записи и ведите журнал соответствий старых и новых ID. Загрузчик должен сначала искать уже перенесённую запись по этому ключу и обновлять её, а не каждый раз создавать новую.
Нужно ли очищать клиентскую базу до миграции?
Нормализацию и дедупликацию лучше делать отдельным контролируемым этапом. Автоматически объединяйте только однозначные случаи, а спорные отправляйте на проверку, сохраняя исходные значения и причины решения.
Как проверить, что все связи сохранились?
Сверьте количество сущностей по сегментам, найдите дочерние записи без владельца, сравните ключевые поля и пройдите реальные сценарии пользователей. Все несовпадения должны попадать в воспроизводимый отчёт с исходными ID.
Когда можно отключить старую CRM?
После технической сверки, бизнес-приёмки, проверки интеграций и завершения согласованного периода наблюдения. До этого старую систему безопаснее держать в режиме чтения и сохранять готовность к восстановлению.
Источники
- PostgreSQL: ограничения, первичные и внешние ключиПроверено 30 июля 2026 г.
- AWS Database Migration Service: проверка перенесённых данныхПроверено 30 июля 2026 г.
- NIST SP 800-34 Rev. 1: планирование восстановления информационных системПроверено 30 июля 2026 г.