Найти в Дзене

Переезд Битрикс24 из облака в коробку через API

Оглавление

Если вы задумываетесь о переезде из облака Битрикс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

2.1.2. Шаг 2: Инструменты

-3
  • Преобразовать телефон

Используем инструмент "Преобразование массива объектов" по полю source.PHONE (это поле "телефон"), сопоставляем поля и значения следующим образом:

VALUE - {{VALUE}}
VALUE_TYPE - {{VALUE_TYPE}}
VALUE - {{VALUE}} VALUE_TYPE - {{VALUE_TYPE}}
  • Преобразовать Email

Также используем инструмент "Преобразование массива объектов" по полю source.EMAIL, сопоставляем поля и значения аналогично предыдущему шагу:

-5
  • Ответственный

Настраиваем сопоставление ответственных по полю source.ASSIGNED_BY_ID с помощью инструмента Сопоставление данных:

-6

2.1.3. Шаг 3: Куда

Выбираем коробку Битрикс24, создаем контакт, подключаем доступ к коробке:

-7

2.1.4. Шаг 4: Сопоставление данных

Сопоставляем поля контакта (ФИО, дату рождения и комментарии в таймлайне):

-8

Также добавляем дополнительный запрос:

{
"fields":
{
"OPENED":"{{source.OPENED}}"
}
}

И пользовательские сопоставления:

Название организации
Тип: Тело
Название параметра: fields.UF_CRM_1718960766
Значение параметра: {{source.UF_CRM_1590411925265}}

Должность
Тип: Тело
Название параметра: fields.UF_CRM_1718960774
Значение параметра: {{source.UF_CRM_1590508476119}}

EMAIL
Тип: Тело
Название параметра: fields.EMAIL
Значение параметра: {{step2}}

PHONE
Тип: Тело
Название параметра: fields.PHONE
Значение параметра: {{step1}}
Название организации Тип: Тело Название параметра: fields.UF_CRM_1718960766 Значение параметра: {{source.UF_CRM_1590411925265}} Должность Тип: Тело Название параметра: fields.UF_CRM_1718960774 Значение параметра: {{source.UF_CRM_1590508476119}} EMAIL Тип: Тело Название параметра: fields.EMAIL Значение параметра: {{step2}} PHONE Тип: Тело Название параметра: fields.PHONE Значение параметра: {{step1}}

2.1.5. Запускаем интеграцию.

-10

2.2. Перенос компаний из облака в коробку

2.2.1. Выбираем облако, триггер - создание компании:

-11

2.2.2. Шаг 2: Инструменты

-12
  • Сопоставление ответственных с Облака и Коробки

Настраиваем сопоставление ответственных по полю source.ASSIGNED_BY_ID с помощью инструмента Сопоставление данных:

-13
  • Преобразовать телефон

Используем инструмент Преобразование массива объектов по полю source.PHONE (это поле "Телефон"), сопоставляем поля и значения следующим образом:

VALUE - {{VALUE}}
VALUE_TYPE - {{VALUE_TYPE}}
VALUE - {{VALUE}} VALUE_TYPE - {{VALUE_TYPE}}
  • Преобразовать Email

Также используем инструмент "Преобразование массива объектов" по полю source.EMAIL, сопоставляем поля и значения аналогично предыдущему шагу:

-15
  • Сфера деятельности

Используем сопоставление по полю source.INDUSTRY (группируем компании по признаку сферы деятельности):

-16
  • Получить контакты

Используем API-запрос GET-методом с указанием URL: /crm.company.contact.items.get?ID={{source.ID}}

-17

2.2.3. Шаг 3: Куда

Переносим компании в коробку:

-18

2.2.4. Шаг 4: Сопоставление данных

Сопоставляем поля компаний в облаке и коробке (название, тип, комменты в живой ленте и так далее):

-19

И добавляем пользовательские сопоставления:


Дилер
Тип: Тело
Название параметра: fields.UF_CRM_1719302813
Значение параметра: {{source.UF_CRM_1577182092830}}

ИНН
Тип: Тело
Название параметра: fields.UF_CRM_1719302822
Значение параметра: {{source.UF_CRM_1590410715543}}

ФИО контакта
Тип: Тело
Название параметра: fields.UF_CRM_1719302832
Значение параметра: {{source.UF_CRM_1590413365166}}

Адрес компании
Тип: Тело
Название параметра: fields.UF_CRM_1719302847
Значение параметра: {{source.UF_CRM_1591270199969}}

Подразделение
Тип: Тело
Название параметра: fields.UF_CRM_1719302868
Значение параметра: {{source.UF_CRM_1591341279657}}

PHONE
Тип: Тело
Название параметра: fields.PHONE
Значение параметра: {{step2}}

EMAIL
Тип: Тело
Название параметра: fields.EMAIL
Значение параметра: {{step3}}
Дилер Тип: Тело Название параметра: fields.UF_CRM_1719302813 Значение параметра: {{source.UF_CRM_1577182092830}} ИНН Тип: Тело Название параметра: fields.UF_CRM_1719302822 Значение параметра: {{source.UF_CRM_1590410715543}} ФИО контакта Тип: Тело Название параметра: fields.UF_CRM_1719302832 Значение параметра: {{source.UF_CRM_1590413365166}} Адрес компании Тип: Тело Название параметра: fields.UF_CRM_1719302847 Значение параметра: {{source.UF_CRM_1591270199969}} Подразделение Тип: Тело Название параметра: fields.UF_CRM_1719302868 Значение параметра: {{source.UF_CRM_1591341279657}} PHONE Тип: Тело Название параметра: fields.PHONE Значение параметра: {{step2}} EMAIL Тип: Тело Название параметра: fields.EMAIL Значение параметра: {{step3}}

2.2.5. Запускаем интеграцию.

2.3. Компания - добавить реквизиты

2.3.1. Шаг 1 - Откуда

Выбираем Пинкит, триггер - Успех интеграции, выбираем интеграцию по созданию компаний и указываем доступ к Пинкит:

-21

2.3.2. Шаг 2 - Инструменты

-22
  • Получить реквизиты у Компании в Облаке

Используем API-запрос GET-методом с указанием URL: /crm.requisite.list?filter[ENTITY_TYPE_ID]=4&filter[ENTITY_ID]={{source.int6700.source.ID}}

-23
  • Продолжить если Реквизиты есть

Используем инструмент Проверка, Название поля - step1.result, Условие - Не пустое значение, Действие - Продолжить, если проверка пройдена.

-24

2.3.3. Шаг 3: Куда

Выбираем коробку, действие - Создать реквизиты:

-25

2.3.4. Шаг 4: Сопоставление данных

Сопоставляем реквизиты (наименование организации, дата государственной регистрации и так далее):



ID типа родительской сущности - 4
​
ID родительской сущности - {{source.int6700.result.result}}

ID шаблона реквизитов - {{step1.result.0.PRESET_ID}}
​
Название реквизита - {{step1.result.0.NAME}}
​
Дата создания - {{step1.result.0.DATE_CREATE}}
​
Дата изменения - {{step1.result.0.DATE_MODIFY}}
​
Сокращенное наименование организации - {{step1.result.0.RQ_COMPANY_NAME}}
​
Полное наименование организации - {{step1.result.0.RQ_COMPANY_FULL_NAME}}
​
Дата государственной регистрации - {{step1.result.0.RQ_COMPANY_REG_DATE}}
​
Ген. директор - {{step1.result.0.RQ_DIRECTOR}}
​
Гл. бухгалтер - {{step1.result.0.RQ_ACCOUNTANT}}
​
ФИО первого руководителя - {{step1.result.0.RQ_CEO_NAME}}
​
Должность первого руководителя - {{step1.result.0.RQ_CEO_WORK_POS}}
​
Контактное лицо - {{step1.result.0.RQ_CONTACT}}
​
E-Mail - {{step1.result.0.RQ_EMAIL}}
​
Телефон - {{step1.result.0.RQ_PHONE}}
​
Факс - {{step1.result.0.RQ_FAX}}
​
ИНН - {{step1.result.0.RQ_INN}}
​
КПП - {{step1.result.0.RQ_KPP}}
​
ИФНС - {{step1.result.0.RQ_IFNS}}
​
ОГРН - {{step1.result.0.RQ_OGRN}}
​
ОГРНИП - {{step1.result.0.RQ_OGRNIP}}
​
ОКПО - {{step1.result.0.RQ_OKPO}}
​
ОКТМО - {{step1.result.0.RQ_OKTMO}}
​
ОКВЭД - {{step1.result.0.RQ_OKVED}}
​
ЄДРПОУ - {{step1.result.0.RQ_EDRPOU}}
​
ДРФО - {{step1.result.0.RQ_DRFO}}
​
КБЕ - {{step1.result.0.RQ_KBE}}
​
ИИН - {{step1.result.0.RQ_IIN}}

БИН - {{step1.result.0.RQ_BIN}}
ID типа родительской сущности - 4 ​ ID родительской сущности - {{source.int6700.result.result}} ID шаблона реквизитов - {{step1.result.0.PRESET_ID}} ​ Название реквизита - {{step1.result.0.NAME}} ​ Дата создания - {{step1.result.0.DATE_CREATE}} ​ Дата изменения - {{step1.result.0.DATE_MODIFY}} ​ Сокращенное наименование организации - {{step1.result.0.RQ_COMPANY_NAME}} ​ Полное наименование организации - {{step1.result.0.RQ_COMPANY_FULL_NAME}} ​ Дата государственной регистрации - {{step1.result.0.RQ_COMPANY_REG_DATE}} ​ Ген. директор - {{step1.result.0.RQ_DIRECTOR}} ​ Гл. бухгалтер - {{step1.result.0.RQ_ACCOUNTANT}} ​ ФИО первого руководителя - {{step1.result.0.RQ_CEO_NAME}} ​ Должность первого руководителя - {{step1.result.0.RQ_CEO_WORK_POS}} ​ Контактное лицо - {{step1.result.0.RQ_CONTACT}} ​ E-Mail - {{step1.result.0.RQ_EMAIL}} ​ Телефон - {{step1.result.0.RQ_PHONE}} ​ Факс - {{step1.result.0.RQ_FAX}} ​ ИНН - {{step1.result.0.RQ_INN}} ​ КПП - {{step1.result.0.RQ_KPP}} ​ ИФНС - {{step1.result.0.RQ_IFNS}} ​ ОГРН - {{step1.result.0.RQ_OGRN}} ​ ОГРНИП - {{step1.result.0.RQ_OGRNIP}} ​ ОКПО - {{step1.result.0.RQ_OKPO}} ​ ОКТМО - {{step1.result.0.RQ_OKTMO}} ​ ОКВЭД - {{step1.result.0.RQ_OKVED}} ​ ЄДРПОУ - {{step1.result.0.RQ_EDRPOU}} ​ ДРФО - {{step1.result.0.RQ_DRFO}} ​ КБЕ - {{step1.result.0.RQ_KBE}} ​ ИИН - {{step1.result.0.RQ_IIN}} БИН - {{step1.result.0.RQ_BIN}}

2.3.5. Запускаем интеграцию.

2.4. Компания - привязать контакт

2.4.1. Выбираем Пинкит, триггер - Успех интеграции, выбираем интеграцию по созданию компаний и указываем доступ к Пинкит:

2.4.2. Шаг 2 - Инструменты

-27
  • Проверить, что Контакты есть

Используем проверку по значению поля source.int6700.step5, Условие - Не пустое значение, Действие - Продолжить, если проверка пройдена.

-28
  • Для каждого контакта

Используем инструмент "Для каждого", Название поля - source.int6700.step5.result.

-29
  • Найти ID контакта из Коробки

Используем Поиск ID соответствующий сущности, Название поля - step2.CONTACT_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Контакт.

-30
  • Добавить контакты в Компанию

Используем API-запрос GET-методом с указанием URL: /crm.company.contact.add?id={{source.int6700.result.result}}&fields[CONTACT_ID]={{step3}}.

-31

2.4.3. Шаг 3: Куда

Обновляем компании в коробке:

-32

2.4.4. Шаг 4: Сопоставление данных

Сопоставляем ID компании с полем {{source.int6700.result.result}}.

-33

2.4.5. Запускаем интеграцию.

2.5. Перенос сделок из облака в коробку

2.5.1. Шаг 1: Откуда

Указываем облако Битрикс24, триггер - создание сделки:

-34

2.5.2. Шаг 2: Инструменты

-35
  • Получить направления в Облаке

Используем API-запрос GET-методом с указанием URL: /crm.category.get?entityTypeId=2&id={{source.CATEGORY_ID}}

-36
  • Получить стадии сделок в облаке

Используем API-запрос GET-методом с указанием URL: /crm.dealcategory.stage.list?id={{source.CATEGORY_ID}}

-37
  • Отфильтровать стадию в Облаке

Используем "Фильтр элементов массива", Название поля - step2.result, Название поля внутри элемента массива - STATUS_ID, Условие - ТекстСодержит, Сравниваемое значение - source.STAGE_ID.

-38
  • Получить направления в Коробке

Используем API-запрос GET-методом с указанием URL: /crm.category.get?entityTypeId=2&id={{source.CATEGORY_ID}}

-39
  • Получить стадии сделок в Коробке

Используем API-запрос GET-методом с указанием URL: /crm.dealcategory.stage.list?id={{source.CATEGORY_ID}}

-40
  • Отфильтровать нужную стадию в Коробке

Используем "Фильтр элементов массива", Название поля - step5.result, Название поля внутри элемента массива - NAME, Условие - ТекстПолностьюСовпадает, Сравниваемое значение - step3.0.NAME.

-41
  • Сопоставление ответственных с Облака и Коробки

Используем Сопоставление данных по полю source.ASSIGNED_BY_ID:

-42
  • Статус авторизации

Используем "Сопоставление данных" по полю source.UF_CRM_1573026857068:

-43
  • Статус

Используем "Сопоставление данных" по полю source.UF_CRM_1573136853919:

-44
  • Проверить вложенность файлов

Используем инструмент Если-Иначе, Название полей -source.UF_CRM_1573137064242, source.UF_CRM_1573137121082, source.UF_CRM_1574154767427, source.UF_CRM_1577257618478, source.UF_CRM_1590509446826, условие - Логическое(Истина). Результат при успешной проверке - 1, при неуспешной - 0.

-45
  • Скачать КП

Используем инструмент "Скачать файл", Условие выполнения - step10.source_UF_CRM_1573137064242, и API-запрос GET-методом с указанием URL: адрес_вашего_портала/{{source.UF_CRM_1573137064242.downloadUrl|default()}}:

-46
  • Скачать Техническое описание

Используем инструмент "Скачать файл", Условие выполнения - step10.source_UF_CRM_1573137121082, и API-запрос GET-методом с указанием URL: адрес_вашего_портала/{{source.UF_CRM_1573137121082.downloadUrl|default()}}:

-47
  • Вытащить формат файла

Используем инструмент "Замена по регулярному выражению", Название поля - step11, step12, step13, step14, step15, Регулярное выражение - /.+\//.

-48
  • Поиск контакта

Используем "Поиск ID" соответствующий сущности, Условие выполнения - source.CONTACT_ID, Название поля - source.CONTACT_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Контакт.

-49
  • Поиск Компании

Используем "Поиск ID" соответствующий сущности, Условие выполнения - source.COMPANY_ID, Название поля - source.COMPANY_ID, даем доступ к сервису-источнику и приемнику, указываем сущность Компания.

-50

2.5.3. Шаг 3: Куда

Создаем сделку в коробке:

-51

2.5.4. Шаг 4: Сопоставление данных

Сопоставляем поля сделок:


Название - Название сделки

Тип - ID типа
​
ID Стадии сделки - {{step6.0.STATUS_ID}}
​
Вероятность - {{source.PROBABILITY}}
​
Валюта - Валюта

Сумма - Сумма сделки

Ставка налога - {{source.TAX_VALUE}}
​
ID компании - {{step18}}
​
ID контакта - {{step17}}
​
Дата начала - Дата начала

Дата завершения - {{source.CLOSEDATE}}
​
Регулярная сделка - {{source.IS_RECURRING}}

Доступна для всех - {{source.OPENED}}
​
Закрыта - {{source.CLOSED}}
​
Комментарий - {{source.COMMENTS}}

ID источника - {{source.SOURCE_ID}}
​
Дополнительно об источнике - {{source.SOURCE_DESCRIPTION}}
​
Дополнительная информация - {{source.ADDITIONAL_INFO}}
Название - Название сделки Тип - ID типа ​ ID Стадии сделки - {{step6.0.STATUS_ID}} ​ Вероятность - {{source.PROBABILITY}} ​ Валюта - Валюта Сумма - Сумма сделки Ставка налога - {{source.TAX_VALUE}} ​ ID компании - {{step18}} ​ ID контакта - {{step17}} ​ Дата начала - Дата начала Дата завершения - {{source.CLOSEDATE}} ​ Регулярная сделка - {{source.IS_RECURRING}} Доступна для всех - {{source.OPENED}} ​ Закрыта - {{source.CLOSED}} ​ Комментарий - {{source.COMMENTS}} ID источника - {{source.SOURCE_ID}} ​ Дополнительно об источнике - {{source.SOURCE_DESCRIPTION}} ​ Дополнительная информация - {{source.ADDITIONAL_INFO}}

Добавляем пользовательские сопоставления:

Текст комментария
Тип: Тело
Название параметра: 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.
Алексей Окара, основатель Пинол и продакт-менеджер Пинкит
-53

#пинол #пинкит #pinall #pinkit #bitrix24#битрикс24 #amo #amocrm #амо #амоцрм #crm #црм #црмсистема #црм_система #внедрениецрм #интеграция #миграция #обмен