#1683: Как мигрировать заявки из Omnidesk в Swarmica
Отредактирована: 37 дней назадДанная инструкция работает в Swarmica версии 5.11 и выше! Инструкции по обновлению.
Рекомендации:
- Скрипт умеет объединять повторяющихся клиентов и агентов, однако во избежание потенциальных проблем и несоответствий рекомендуется производить миграцию из Omnidesk на "чистую" установку Swarmica.
- Удостоверьтесь, что лицензия Swarmica позволяет создать соответствующее количество Администраторов и Агентов. Скрипт переносит всех сотрудников по схеме:
Администратор Omnidesk -> Администратор Swarmica
Сотрудник Omnidesk -> Агент Swarmica
Инструкция
Скрипты, используемые в этой инструкции берут данные о заявках (с комментариями и вложениями), клиентах, компаниях и сотрудниках из Omnidesk и импортируют эти данные в Swarmica.
0. Отключите почту: в Swarmica - Настройки - Настройки Swarmica переключите Email конфигурация на Файл.
Если этого не сделать, по всем мигрированным тикетам уйдут письма клиентам!
1. Авторизуйтесь в Swarmica как Администратор.
2. Добавьте новый скрипт в Swarmica - Настройки - Скрипты
3. Загрузите скрипт prefetch_tickets.py и добавьте следующие Параметры веб-формы и нажмите Сохранить:
[
{
"name": "omnidesk_url",
"type": "string",
"required": true,
"displayName": "Omnidesk URL"
},
{
"name": "omnidesk_user",
"type": "string",
"required": true,
"displayName": "API Пользователь Omnidesk"
},
{
"name": "omnidesk_token",
"type": "string",
"required": true,
"displayName": "API токен"
},
{
"name": "omnidesk_delay",
"type": "number",
"required": true,
"displayName": "Таймаут API запроса(10 с. по умолчанию)"
},
{
"name": "date_from",
"type": "date",
"required": true,
"displayName": "Дата с"
},
{
"name": "date_to",
"type": "date",
"required": true,
"displayName": "Дата по"
}
]
Выглядеть это должно вот так:

здесь:
Omnidesk URL - URL панели Omnidesk. Например, https://domain.omnidesk.tld
API Пользователь Omnidesk - логин(email) администратора Omnidesk
API Токен - сгенерированный API токен
Задержка для API запроса(10 с. по умолчанию) - промежуток времени между API запросами(по умолчанию 10 сек.)
Дата с - дата создания заявок, с которой будет производится выборка
Дата по - дата создания заявок, до которой будет производится выборка
4. В панели администратора Omnidesk создайте API токен, заполните поля веб-формы и нажмите Отправить.
Как результат, в контейнере swarmica-django-1 будет создана директория /swarmica/swarmica/uploads/omnidesk_migration со следующей структурой:
└── omnidesk_migration
├── {case1_id}
│ ├── {attachment1_id}.data
│ ├── {attachment2_id}.data
│ ├── attachments.json
│ ├── comments.json
│ └── ticket.json
├── {case2_id}
│ ├── comments.json
│ └── ticket.json
├── companies.json
├── omnidesk_to_swarmica.log
├── staff.json
└── users
├── {user_id}.json
5. Создайте резервную копию Swarmica по этой инструкции. Данный пункт можно пропустить, если миграция производится на чистую установку Swarmica.
6. Создайте скрипт в Swarmica - Настройки - Скрипты. Загрузите скрипт convert_import_omnidesk.py и добавьте следующие Параметры веб-формы и нажмите Сохранить:
[
{
"name": "omnidesk_data_path",
"type": "string",
"required": false,
"displayName": "Путь к папке с данными (omnidesk_migration)"
},
{
"name": "force_use_existing_users",
"type": "boolean",
"required": false,
"displayName": "Принудительно привязывать пользователей при конфликте ext_id"
},
{
"name": "force_use_existing_orgs",
"type": "boolean",
"required": false,
"displayName": "Принудительно привязывать организации при конфликте ext_id"
}
]
Выглядеть это должно вот так:

Поле Путь к папке с данными (omnidesk_migration) можно оставить пустым, если данные полученные в шаге 4 не перемещались.
7. Нажмите Отправить
В результате скрипт сконвертирует данные из полученных данных и импортирует их в Swarmica в виде заявок, пользователей, клиентов и организаций.
8. Создайте скрипт в Swarmica - Настройки - Скрипты. Загрузите скрипт post_migration.py, добавьте следующие Параметры веб-формы и нажмите Сохранить:
[
{
"name": "omnidesk_data_path",
"type": "string",
"required": false,
"displayName": "Путь к папке с данными (omnidesk_migration)"
}
]
Выглядеть должно вот так:

9. Нажмите Отправить
В результате произойдет пост-обработка заявок в виде создания внутренних соответствующих тасок для статусов.
10. Включите почту в Swarmica - Настройки - Настройки Swarmica переключите Email конфигурация на SMTP.
Траблшутинг
Для прерывания и повторного запуска скрипта перезапустите celeryworker контейнер:
docker compose up -d --scale celeryworker=0; docker compose up -d
в логах можно отследить процесс и что пошло не так:
docker logs swarmica-celeryworker-1 2>&1 | grep "Omnidesk import:" > script.log