Інтеграція Бітрікс24 з Jira

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція Бітрікс24 з Jira
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція Bitrix24 та Jira

Менеджери ставлять задачи в Bitrix24, розробники працюють у Jira. Результат передбачуваний: менеджер запитує статус у чаті, розробник переходить у B24 оновити задачу, забуває, менеджер бачить застарілу картину. Або навпаки — PM закриває issue у Jira, а в B24 задача висить відкритою ще тиждень. Подвійний облік даних — це не просто незручність, це системна втрата контролю над проектом.

Архітектура синхронізації

Інтеграція працює через двонаправлений обмін за REST API обох систем. Bitrix24 REST API видає та приймає дані про задачі, Jira REST API v3 — про issues. Між ними стоїть middleware, який обробляє події, трансформує дані та управляє конфліктами.

B24 Task (подія) → Webhook → Middleware → Jira REST API → Issue
Jira Issue (подія) → Jira Webhook → Middleware → B24 REST API → Task

Middleware зберігає таблицю маппінгу: кожна пара «задача B24 — issue Jira» пов'язана за ID. При оновленні однієї сутності middleware знаходить парну та оновлює її. Без цієї таблиці синхронізація неможлива — ID у системах різні, прямої зв'язку немає.

Маппінг полів

Поля в B24 та Jira не збігаються за назвами та форматом. Налаштовуємо відповідність:

Поле B24 (tasks.task) Поле Jira (issue) Примітка
TITLE summary Пряма відповідність
DESCRIPTION description B24 — HTML, Jira — ADF (Atlassian Document Format). Middleware конвертує
RESPONSIBLE_ID assignee (accountId) Через таблицю маппінгу користувачів
CREATED_BY reporter Аналогічно
DEADLINE duedate Формат дати: B24 — ISO 8601, Jira — YYYY-MM-DD
PRIORITY priority.id Маппінг значень: 1→Highest, 2→High, 3→Medium
STATUS status.id Окрема таблиця відповідностей (див. нижче)
GROUP_ID (проект) project.key Проект B24 → проект Jira
UF_* (кастомні поля) customfield_* Налаштовується індивідуально

Конвертація опису — окрема завдання. B24 зберігає описи в HTML, Jira v3 використовує Atlassian Document Format (JSON-дерево). Middleware парсить HTML у DOM, трансформує у ADF-ноди (paragraph, text, heading, bulletList) та назад.

Маппінг статусів

Найтонша частина. У кожної команди в Jira свій workflow, а в B24 — свої стадії задач та кастомні kanban-статуси. Middleware використовує конфігуровану таблицю:

Статус B24 Статус Jira Направлення
Нова (2) To Do
Виконується (3) In Progress
Чекає контролю (4) In Review B24 → Jira
На паузі (6) On Hold
Завершена (5) Done
QA Testing Jira → B24 (кастомне поле)

Направлення «↔» означає: при зміні статусу в будь-якій з систем парна сутність оновлюється. Направлення «→» — синхронізація тільки в один бік (зазвичай для статусів, яких немає в іншій системі).

Переход статусу у Jira — це не просто запис значення. Jira вимагає виклику POST /rest/api/3/issue/{id}/transitions з ID конкретного переходу. Middleware спочатку запитує доступні transitions для issue, знаходить потрібний та виконує переход.

Webhook-підписки

З боку B24:

Реєструємо обробники через event.bind:

  • ONTASKADD — нова задача → створення issue у Jira
  • ONTASKUPDATE — оновлення полів → оновлення issue
  • ONTASKCOMMENTADD — новий коментар → коментар до issue
  • ONTASKDELETE — видалення задачи → закриття або видалення issue (налаштовується)

З боку Jira:

Webhook через Settings → Webhooks або Jira App:

  • jira:issue_created — новий issue → створення задачи в B24
  • jira:issue_updated — оновлення полів/статусу → оновлення задачи
  • comment_created — коментар → коментар до задачи B24

Кожен webhook містить payload з повним набором даних. Middleware витягує змінені поля з changelog.items (Jira) або порівнює зі збереженим станом (B24, де changelog не надається).

Запобігання петлям

Критична проблема: B24 оновлює задачу → middleware оновлює issue → Jira відправляє webhook → middleware оновлює задачу B24 → нескінченний цикл.

Рішення — маркування джерела оновлення. Middleware при кожному оновленні записує прапор у кастомне поле:

  • У B24: UF_SYNC_SOURCE = "jira" при оновленні з Jira
  • У Jira: customfield_sync_source = "b24" при оновленні з B24

Коли middleware отримує webhook, він перевіряє цей прапор. Якщо оновлення прийшло від нього самого — пропускає обробку. Прапор скидається через 5 секунд (задача cron).

Синхронізація коментарів

Коментарі синхронізуються в обидва боки з зазначенням автора:

  • З B24 у Jira: POST /rest/api/3/issue/{id}/comment з тілом {body: {type: "doc", content: [...]}}. На початок додається ім'я автора з B24.
  • З Jira у B24: task.commentitem.add з текстом коментаря. Ім'я автора з Jira — у префіксі.

Вкладення до коментарів: файли скачуються з одного боку, завантажуються на інший. Для Jira — POST /rest/api/3/issue/{id}/attachments, для B24 — task.commentitem.add з попередньою завантаженням файлу на диск.

Початкова міграція

Перед включенням синхронізації необхідно перенести існуючі дані. Middleware підтримує bulk-операції:

  1. Вивантаження всіх задач з вибраних проектів B24 через tasks.task.list з пагінацією.
  2. Створення issues у Jira через bulk API (POST /rest/api/3/issue/bulk).
  3. Заповнення таблиці маппінгу ID.
  4. Зворотна вивантаження issues з Jira, яких немає в B24, та створення задач.

Міграція запускається однократно. Після цього включається real-time синхронізація через webhooks.

Права та безпека

  • Jira API вимагає OAuth 2.0 (для Cloud) або Personal Access Token (для Server/Data Center). Middleware зберігає токени зашифрованими.
  • B24 — OAuth 2.0 з scope task,user. Refresh-токен оновлюється автоматично.
  • Маппінг користувачів: таблиця відповідностей B24 User ID ↔ Jira Account ID. Заповняється за email або вручну.
  • Дані задач проходять тільки через ваш middleware — жодна з систем не отримує прямого доступу до іншої.

Що впроваджуємо

  • Middleware для двонаправленої синхронізації задач B24 та issues Jira
  • Конфігуровану маппінг полів, статусів та пріоритетів
  • Синхронізацію коментарів та вкладень
  • Захист від петель оновлення
  • Початкову міграцію існуючих задач
  • Маппінг користувачів між системами
  • Моніторинг та логування всіх операцій синхронізації