Интеграция · CLI

AmoCRM Migration & Sync

Два CLI-инструмента на TypeScript для миграции лидов/контактов/заметок между аккаунтами amoCRM и синхронизации responsible-юзеров.

2024·Backend
TypeScriptNode.jsaxiosamoCRM API v4

Контекст

При смене подписки и реорганизации отдела продаж потребовалось перенести данные между двумя аккаунтами amoCRM с сохранением связей: лид → контакт → заметки, и переназначить ответственных по mapping-таблице.

Решение

Два независимых CLI:

  • Миграция — итерирует лиды старого аккаунта постранично, для каждого тянет контакты и заметки, создаёт сущности в новом аккаунте, связывает их (linkContactsToLead) и переносит заметки. Поддерживает TEST_MODE для холостого прогона.
  • Синхронизация responsible — обходит лиды, применяет mapping USER_MAP, переназначает responsible_user_id через PATCH, имеет DRY_RUN и TEST_LIMIT для предпрогона.

Стек и архитектура

  • Runtime: Node.js, TypeScript 5.
  • HTTP: axios c retry-обёрткой amoGet / amoPatch.
  • Конфиг: dotenv (токены, base-URLs, mapping-таблица).
  • Сборка: tsc → dist/.

Роль и результат

Мы сделали оба инструмента под конкретные конфиги, обходя rate-limit amoCRM и сохраняя историю заметок и связей. Перенос прошёл без потерь данных, переназначение responsible — за одну ночь.

Похожий проект?

Обсудить подобную задачу

Опишите задачу — расскажем про релевантный опыт и оценим реализацию.