#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