Настройка интеграции Битрикс24 с Redmine

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка интеграции Битрикс24 с Redmine
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка интеграции Битрикс24 с Redmine

Часть команды работает в Redmine — привыкли, настроили workflow, не хотят переезжать. Другая часть — в Битрикс24, потому что там CRM, телефония и чаты. Результат: задачи дублируются вручную, статусы расходятся, а при попытке собрать отчёт по проекту нужно открыть обе системы и сводить данные в таблице. Redmine и Б24 можно связать через API и перестать тратить время на ручной перенос.

Архитектура интеграции

Связка работает через Redmine REST API и Б24 REST API. Redmine предоставляет JSON/XML API для работы с issues, проектами, пользователями и записями времени. У Redmine нет встроенных webhooks — middleware использует polling для отслеживания изменений.

Б24 (событие задачи) → Webhook → Middleware → Redmine REST API → Issue
Redmine (polling) → Middleware → Б24 REST API → Задача

Polling работает так: middleware каждые 30–60 секунд запрашивает GET /issues.json?updated_on=>=<last_check_time>&status_id=* — получает все issues, обновлённые после последней проверки. Для Б24 используются стандартные вебхуки через event.bind.

Маппинг полей

Поле Б24 (tasks.task) Поле Redmine (issue) Примечание
TITLE subject Прямое соответствие
DESCRIPTION description Б24 HTML → Redmine Textile/Markdown
RESPONSIBLE_ID assigned_to_id Через таблицу маппинга
CREATED_BY author_id Аналогично
DEADLINE due_date YYYY-MM-DD
PRIORITY priority_id Маппинг значений
STATUS status_id Отдельная конфигурация
GROUP_ID (проект) project_id Таблица соответствий

Redmine использует Textile (по умолчанию) или Markdown для описаний. Middleware конвертирует HTML из Б24 в нужный формат: заголовки, списки, ссылки, выделение.

Маппинг статусов

Redmine позволяет создавать произвольные статусы и переходы (workflow). Middleware поддерживает гибкий маппинг:

Статус Б24 Статус Redmine ID Redmine (типичное)
Новая New 1
Выполняется In Progress 2
Ждёт контроля Resolved 3
Завершена Closed 5
На паузе Feedback 4

Важный нюанс: Redmine проверяет допустимые переходы статусов через workflow. Middleware перед обновлением запрашивает доступные переходы и выполняет промежуточные шаги, если прямой переход невозможен.

Кастомные поля

Redmine активно использует кастомные поля (Custom Fields). Middleware поддерживает маппинг произвольных полей:

  • Текстовые (string/text) ↔ UF_CRM_* строковые поля Б24.
  • Списки (list) ↔ select-поля Б24. Middleware маппит значения по ID или названию.
  • Числовые (int/float) ↔ числовые поля Б24.
  • Дата ↔ поля даты Б24.
  • Логические (bool) ↔ чекбоксы Б24.

Конфигурация маппинга хранится в middleware и редактируется через панель администрирования.

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

Redmine-проекты маппятся на проекты (группы) Б24:

Проект Redmine Проект Б24 Трекер
web-frontend Фронтенд-разработка Bug, Feature
mobile-app Мобильное приложение Bug, Feature, Support
internal-tools Внутренние инструменты Feature

Трекер Redmine (Bug, Feature, Support) определяет тип задачи. Middleware может маппить трекер на тег или кастомное поле в Б24.

Привязка тикетов к задачам

Middleware хранит таблицу маппинга b24_task_id ↔ redmine_issue_id. При создании задачи в одной системе автоматически создаётся парная в другой. Критерий синхронизации — принадлежность к маппированному проекту.

Комментарии (journals в Redmine) синхронизируются в обе стороны:

  • Из Redmine: middleware парсит journals с notes при polling и создаёт комментарии в задаче Б24.
  • Из Б24: по событию ONTASKCOMMENTADD middleware вызывает PUT /issues/{id}.json с полем notes.

Первоначальная миграция

Перед включением синхронизации middleware переносит существующие данные:

  1. Выгрузка issues из Redmine через GET /issues.json?project_id={id}&limit=100&offset={n}.
  2. Создание задач в Б24 через tasks.task.add с маппингом всех полей.
  3. Обратная выгрузка задач Б24, которых нет в Redmine.
  4. Заполнение таблицы маппинга ID.

Аутентификация

  • Redmine: API Key (My Account → API access key). Передаётся в заголовке X-Redmine-API-Key. API необходимо включить в Administration → Settings → API.
  • Б24: OAuth 2.0 с scope task,user.
  • Middleware хранит ключи зашифрованными. Для Redmine на self-hosted — middleware должен иметь сетевой доступ к серверу.

Что внедряем

  • Middleware для двунаправленной синхронизации задач Б24 и тикетов Redmine
  • Polling-механизм для отслеживания изменений в Redmine
  • Маппинг полей, статусов, приоритетов и кастомных полей
  • Синхронизацию комментариев между системами
  • Маппинг проектов и трекеров
  • Первоначальную миграцию существующих данных