Если вы задумываетесь о переезде из облака Битрикс24 в коробку с помощью REST API (так как бэкап облака не предоставляется с 1 сентября 2023 года, а вручную переносить данные долго и ресурсозатратно), то важно понимать, что у этого процесса есть некоторые нюансы и подводные камни. Узнайте, как лучше организовать процесс миграции, чтобы избежать больших затрат времени и потери данных при переезде в коробку через API, а также как настроить интеграции для миграции контактов, компаний и сделок без разработки.
1. Переезд из облака в коробку с помощью API: проблема и решение
Один из наших заказчиков обратился с задачей выгрузки базы CRM из облака Битрикс24 (контактов, связанных с компаниями, сделкок и реквизитов компаний) в коробочную версию.
О том, как перенести из облака в коробку задачи с комментариями, вложениями, чек-листами и таймингом читайте здесь.
Заказчик имел представление о том, как работает выгрузка через REST API, и был знаком с нашим продуктом Пинкит, но в его облаке были некоторые отличия. А именно, перед началом работ в нашем сервисе необходима авторизация Битрикс24, обычно ее можно сделать через Битрикс24.Маркет, но у заказчика не было возможности установить наше приложение по подписке на Маркет.
Как корректно перенести данные из разных CRM в Битрикс24 и сохранить не только все данные, но и связи между ними, читайте в этом кейсе.
Для решения этой задачи мы использовали билдер (это решение находится пока в стадии тестирования), через который можно авторизовать облако клиента в Пинкит через вебхук и добавить необходимые действия на первом шаге интеграции без дополнительной разработки.
Переносим сделки, клиентов, товары, задачи с портала А на портал Б: подробности в статье.
Как мы писали выше, нужно было перенести контакты, компании и их связи, реквизиты компаний и сделки. Для этого потребовалось настроить пять интеграций в личном кабинете Пинкит. Подробнее о настройке расскажем далее.
2. Настройка интеграций для выгрузки облака Битрикс24 в коробку по API
2.1. Создание контакта из облака в коробке
2.1.1. Шаг 1: Откуда
Выбираем облако, триггер - создание контакта, подключаем доступ:
2.1.2. Шаг 2: Инструменты
- Преобразовать телефон
Используем инструмент "Преобразование массива объектов" по полю source.PHONE (это поле "телефон"), сопоставляем поля и значения следующим образом:
- Преобразовать Email
Также используем инструмент "Преобразование массива объектов" по полю source.EMAIL, сопоставляем поля и значения аналогично предыдущему шагу:
- Ответственный
Настраиваем сопоставление ответственных по полю source.ASSIGNED_BY_ID с помощью инструмента Сопоставление данных:
2.1.3. Шаг 3: Куда
Выбираем коробку Битрикс24, создаем контакт, подключаем доступ к коробке:
2.1.4. Шаг 4: Сопоставление данных
Сопоставляем поля контакта (ФИО, дату рождения и комментарии в таймлайне):
Также добавляем дополнительный запрос:
{
"fields":
{
"OPENED":"{{source.OPENED}}"
}
}
И пользовательские сопоставления:
2.1.5. Запускаем интеграцию.
2.2. Перенос компаний из облака в коробку
2.2.1. Выбираем облако, триггер - создание компании:
2.2.2. Шаг 2: Инструменты
- Сопоставление ответственных с Облака и Коробки
Настраиваем сопоставление ответственных по полю source.ASSIGNED_BY_ID с помощью инструмента Сопоставление данных:
- Преобразовать телефон
Используем инструмент Преобразование массива объектов по полю source.PHONE (это поле "Телефон"), сопоставляем поля и значения следующим образом:
- Преобразовать Email
Также используем инструмент "Преобразование массива объектов" по полю source.EMAIL, сопоставляем поля и значения аналогично предыдущему шагу:
- Сфера деятельности
Используем сопоставление по полю source.INDUSTRY (группируем компании по признаку сферы деятельности):
- Получить контакты
Используем API-запрос GET-методом с указанием URL: /crm.company.contact.items.get?ID={{source.ID}}
2.2.3. Шаг 3: Куда
Переносим компании в коробку:
2.2.4. Шаг 4: Сопоставление данных
Сопоставляем поля компаний в облаке и коробке (название, тип, комменты в живой ленте и так далее):
И добавляем пользовательские сопоставления:
2.2.5. Запускаем интеграцию.
2.3. Компания - добавить реквизиты
2.3.1. Шаг 1 - Откуда
Выбираем Пинкит, триггер - Успех интеграции, выбираем интеграцию по созданию компаний и указываем доступ к Пинкит:
2.3.2. Шаг 2 - Инструменты
- Получить реквизиты у Компании в Облаке
Используем API-запрос GET-методом с указанием URL: /crm.requisite.list?filter[ENTITY_TYPE_ID]=4&filter[ENTITY_ID]={{source.int6700.source.ID}}
- Продолжить если Реквизиты есть
Используем инструмент Проверка, Название поля - step1.result, Условие - Не пустое значение, Действие - Продолжить, если проверка пройдена.
2.3.3. Шаг 3: Куда
Выбираем коробку, действие - Создать реквизиты:
2.3.4. Шаг 4: Сопоставление данных
Сопоставляем реквизиты (наименование организации, дата государственной регистрации и так далее):
2.3.5. Запускаем интеграцию.
2.4. Компания - привязать контакт
2.4.1. Выбираем Пинкит, триггер - Успех интеграции, выбираем интеграцию по созданию компаний и указываем доступ к Пинкит:
2.4.2. Шаг 2 - Инструменты
- Проверить, что Контакты есть
Используем проверку по значению поля source.int6700.step5, Условие - Не пустое значение, Действие - Продолжить, если проверка пройдена.
- Для каждого контакта
Используем инструмент "Для каждого", Название поля - source.int6700.step5.result.
- Найти ID контакта из Коробки
Используем Поиск ID соответствующий сущности, Название поля - step2.CONTACT_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Контакт.
- Добавить контакты в Компанию
Используем API-запрос GET-методом с указанием URL: /crm.company.contact.add?id={{source.int6700.result.result}}&fields[CONTACT_ID]={{step3}}.
2.4.3. Шаг 3: Куда
Обновляем компании в коробке:
2.4.4. Шаг 4: Сопоставление данных
Сопоставляем ID компании с полем {{source.int6700.result.result}}.
2.4.5. Запускаем интеграцию.
2.5. Перенос сделок из облака в коробку
2.5.1. Шаг 1: Откуда
Указываем облако Битрикс24, триггер - создание сделки:
2.5.2. Шаг 2: Инструменты
- Получить направления в Облаке
Используем API-запрос GET-методом с указанием URL: /crm.category.get?entityTypeId=2&id={{source.CATEGORY_ID}}
- Получить стадии сделок в облаке
Используем API-запрос GET-методом с указанием URL: /crm.dealcategory.stage.list?id={{source.CATEGORY_ID}}
- Отфильтровать стадию в Облаке
Используем "Фильтр элементов массива", Название поля - step2.result, Название поля внутри элемента массива - STATUS_ID, Условие - ТекстСодержит, Сравниваемое значение - source.STAGE_ID.
- Получить направления в Коробке
Используем API-запрос GET-методом с указанием URL: /crm.category.get?entityTypeId=2&id={{source.CATEGORY_ID}}
- Получить стадии сделок в Коробке
Используем API-запрос GET-методом с указанием URL: /crm.dealcategory.stage.list?id={{source.CATEGORY_ID}}
- Отфильтровать нужную стадию в Коробке
Используем "Фильтр элементов массива", Название поля - step5.result, Название поля внутри элемента массива - NAME, Условие - ТекстПолностьюСовпадает, Сравниваемое значение - step3.0.NAME.
- Сопоставление ответственных с Облака и Коробки
Используем Сопоставление данных по полю source.ASSIGNED_BY_ID:
- Статус авторизации
Используем "Сопоставление данных" по полю source.UF_CRM_1573026857068:
- Статус
Используем "Сопоставление данных" по полю source.UF_CRM_1573136853919:
- Проверить вложенность файлов
Используем инструмент Если-Иначе, Название полей -source.UF_CRM_1573137064242, source.UF_CRM_1573137121082, source.UF_CRM_1574154767427, source.UF_CRM_1577257618478, source.UF_CRM_1590509446826, условие - Логическое(Истина). Результат при успешной проверке - 1, при неуспешной - 0.
- Скачать КП
Используем инструмент "Скачать файл", Условие выполнения - step10.source_UF_CRM_1573137064242, и API-запрос GET-методом с указанием URL: адрес_вашего_портала/{{source.UF_CRM_1573137064242.downloadUrl|default()}}:
- Скачать Техническое описание
Используем инструмент "Скачать файл", Условие выполнения - step10.source_UF_CRM_1573137121082, и API-запрос GET-методом с указанием URL: адрес_вашего_портала/{{source.UF_CRM_1573137121082.downloadUrl|default()}}:
- Вытащить формат файла
Используем инструмент "Замена по регулярному выражению", Название поля - step11, step12, step13, step14, step15, Регулярное выражение - /.+\//.
- Поиск контакта
Используем "Поиск ID" соответствующий сущности, Условие выполнения - source.CONTACT_ID, Название поля - source.CONTACT_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Контакт.
- Поиск Компании
Используем "Поиск ID" соответствующий сущности, Условие выполнения - source.COMPANY_ID, Название поля - source.COMPANY_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Компания.
2.5.3. Шаг 3: Куда
Создаем сделку в коробке:
2.5.4. Шаг 4: Сопоставление данных
Сопоставляем поля сделок:
Добавляем пользовательские сопоставления:
Текст комментария
Тип: Тело
Название параметра: fields.UF_CRM_1719396476
Значение параметра: {{source.UF_CRM_5DBEFA4B5ED8D}}
Статус авторизации
Тип: Тело
Название параметра: fields.UF_CRM_1719396500
Значение параметра: {{step8}}
ASSIGNED_BY_ID
Тип: Тело
Название параметра: fields.ASSIGNED_BY_ID
Значение параметра: {{step7}}
Через дилера
Тип: Тело
Название параметра: fields.UF_CRM_1719396548
Значение параметра: {{source.UF_CRM_1573027367669}}
DATE_CREATE
Тип: Тело
Название параметра: fields.DATE_CREATE
Значение параметра: {{Дата создания}}
DATE_MODIFY
Тип: Тело
Название параметра: fields.DATE_MODIFY
Значение параметра: {{Дата модификации}}
Статус
Тип: Тело
Название параметра: fields.UF_CRM_1719396575
Значение параметра: {{step9}}
КП 1 (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396596.fileData.0
Значение параметра: {{step16.step11|default()}}
Новое поле
Тип: Тело
Название параметра: fields.UF_CRM_1719396659
Значение параметра: {{source.UF_CRM_1622810080961}}
Техническое описание (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396608.fileData.0
Значение параметра: {{step16.step12|default()}}
Техническое описание (Содержимое)
Тип: Тело
Название параметра: fields.UF_CRM_1719396608.fileData.1
Значение параметра: {{step12|get_http_content()|base64_encode()}}
КП 1 (Содержимое)
Тип: Тело
Название параметра: fields.UF_CRM_1719396596.fileData.1
Значение параметра: {{step11|get_http_content()|base64_encode()}}
Договор (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396620.fileData.0
Значение параметра: {{step16.step13|default()}}
Договор (Содержимое)
Тип: Тело
Название параметра: fields.UF_CRM_1719396620.fileData.1
Значение параметра: {{step13|get_http_content()|base64_encode()}}
Reference List (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396631.fileData.0
Значение параметра: {{step16.step14|default()}}
КП 2 (Содержимое)
Тип: Тело
Название параметра: fields.UF_CRM_1719396645.fileData.1
Значение параметра: {{step15|get_http_content()|base64_encode()}}
Reference List (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396631.fileData.0
Значение параметра: {{step16.step14|default()}}
КП 2 (Название)
Тип: Тело
Название параметра: fields.UF_CRM_1719396645.fileData.0
Значение параметра: {{step16.step15|default()}}
Reference List (Содержимое)
Тип: Тело
Название параметра: fields.UF_CRM_1719396631.fileData.1
Значение параметра: {{step14|get_http_content()|base64_encode()}}
2.5.5. Запускаем интеграцию.
3. Итог
Таким образом, с помощью нескольких интеграций можно автоматизироваь перенос контактов, компаний и сделок, чтобы ваши сотрудники могли приступить к работе в коробке уже с актуальной информацией. Связи между контактами и компаниями при этом будут сохранены.
Если вы хотите протестировать интеграции для переноса данных из облака в коробку по нашим инструкциям, регистрируйтесь по ссылке в личном кабинете Пинкит: https://lk.pinkit.io/register.
Алексей Окара, основатель Пинол и продакт-менеджер Пинкит
#пинол #пинкит #pinall #pinkit #bitrix24#битрикс24 #amo #amocrm #амо #амоцрм #crm #црм #црмсистема #црм_система #внедрениецрм #интеграция #миграция #обмен