Демо-карта

Пример карты интеграций: личный кабинет, CRM, ERP и WMS

Фрагмент карты интеграций, потоков данных и плана пилота: какие системы участвуют, кто владеет данными, как обрабатываются ошибки и по каким критериям запускать пилот.

Статус документа: демонстрационный пример. Документ ниже показывает структуру интеграционного артефакта, а не реальный контур конкретного заказчика.

1. Контекст интеграционного контура

Интеграция проектируется как управляемый бизнес-процесс

ПроектИнтеграция личного кабинета, CRM, ERP и складской системы
ЦельОбеспечить сквозной процесс от заявки клиента до статуса заказа, документов и уведомлений в личном кабинете
Ключевая задачаИсключить ручной перенос данных, дублирование сущностей, потерю заявок и расхождение статусов между системами
Граница документасистемы, владельцы, потоки данных, события обмена, статусы, мастер-источники, обработка ошибок, мониторинг, риски и план пилота
Бизнес-гипотеза: если заявка из личного кабинета автоматически проходит CRM и ERP и возвращает клиенту понятный статус, снижаются ручные операции, ошибки, нагрузка на менеджеров и обращения в поддержку.

2-3. Системы и целевая логика

Системы интеграционного контура

СистемаРоль в контуреТипВладелецКритичность
Личный кабинетТочка входа клиента, отображение заявок, статусов и документовFrontend + backendProduct / ITHigh
CRMУправление клиентами, сделками и менеджерской обработкойSaaS / internal CRMSales OpsHigh
ERPЗаказы, оплаты, документы, учет исполненияУчетная системаFinance / OperationsHigh
WMSСкладские остатки, комплектация, отгрузкаСкладская системаLogisticsMedium
Notification GatewayEmail/SMS-уведомленияВнешний сервисITMedium
DWHАналитика и отчетностьData platformAnalyticsMedium
SSO/AuthАвторизация, роли, токены доступаIdentity providerIT SecurityHigh
MonitoringЛоги, алерты, технические метрикиObservability platformIT OperationsHigh

Целевая логика интеграции

ПринципКак применяется
Одна бизнес-сущность — один внешний IDЗаявка, сделка и заказ связываются через external_request_id
Мастер-система определена для каждой сущностиКомпания — CRM, заказ — ERP, документы — ERP, заявка — ЛК
Ошибка API не должна приводить к потере данныхИспользуются retry-очереди, статусы синхронизации и журнал ошибок
Статусы клиента отделены от внутренних статусовERP-статусы маппятся в понятные клиентские статусы
Интеграция должна быть наблюдаемойДля каждого обмена есть лог, correlation ID и алерт по ошибкам
Запуск должен быть поэтапнымDry-run, shadow mode, ограниченный пилот, расширенный пилот, rollout

4. Организационная модель интеграций

Владельцы систем, данных и ключевых решений

ОбластьВладелецЗона ответственности
Личный кабинетProduct ownerПользовательские сценарии, статусы для клиента, adoption
CRMSales OpsСделки, менеджеры, воронка, правила обработки
ERPFinance / OperationsЗаказы, оплаты, документы, учетные статусы
WMSLogisticsСкладские статусы, отгрузка, наличие
Интеграционная архитектураIT ArchitectКонтур обменов, API, очереди, error handling
Информационная безопасностьIT SecurityДоступы, токены, персональные данные, аудит
ПоддержкаSupport leadОбработка инцидентов, обращения клиентов, эскалация
АналитикаAnalytics leadDWH, витрины данных, KPI процесса

RACI по ключевым решениям

Решение / ПроцессProductSales OpsOperationsFinanceITSecuritySupport
Правила создания заявкиA/RCCICII
Маппинг заявки в CRMCA/RIIRII
Создание заказа в ERPICA/RCRII
Маппинг статусов для клиентаA/RCCCRIC
Правила доступа к документамCIIA/RRA/RI
Error handling интеграцийCCCCA/RCI
Мониторинг и алертыIIIIA/RCR
Решение Go / No-Go пилотаACCCACC

R - Responsible, A - Accountable, C - Consulted, I - Informed.

5. Master data

Master data и правила владения данными

СущностьMaster systemГде можно редактироватьГде только читатьКлюч связи
КомпанияCRMCRMЛК, ERP, DWHcompany_external_id
Контакт клиентаCRMCRM, ЛК с подтверждениемERP, DWHcontact_external_id
ПользовательSSO/AuthSSO/AuthЛК, CRMuser_id
ЗаявкаЛичный кабинетЛК до передачи в CRMCRM, DWHexternal_request_id
СделкаCRMCRMЛК, ERP, DWHcrm_deal_id
ЗаказERPERPЛК, CRM, DWHerp_order_id
Статус заказаERPERPЛК, CRMerp_order_id
ДокументERPERPЛКdocument_id
ОтгрузкаWMSWMSERP, ЛКshipment_id
УведомлениеЛК / GatewayЛКGateway, DWHnotification_id

6-8. Карта потоков данных

Карта потоков данных и end-to-end сценарий

IDИсточникПолучательСобытиеДанныеЧастотаКритичность
DF-01Личный кабинетCRMСоздана заявкаКомпания, контакт, состав заявки, файлы, комментарийReal-timeHigh
DF-02CRMERPСделка подтвержденаСделка, клиент, условия, сумма, ответственныйReal-time / batchHigh
DF-03ERPЛичный кабинетОбновлен статус заказаНомер заказа, внутренний статус, дата измененияКаждые 15 минутHigh
DF-04ERPЛичный кабинетСформированы документыСчет, акт, УПД, ссылка на файл, права доступаПо событиюHigh
DF-05WMSERPОбновлен статус отгрузкиЗаказ, склад, статус отгрузки, датаКаждые 30 минутMedium
DF-06Личный кабинетNotification GatewayНужно уведомить клиентаEmail, телефон, шаблон, событие, ссылкаПо событиюMedium
DF-07CRMDWHОбновлена сделкаСделка, менеджер, стадия, сумма, источникЕжедневноMedium
DF-08Личный кабинетMonitoringОшибка интеграцииCorrelation ID, payload ID, код ошибки, времяReal-timeHigh
DF-09ERPDWHФинальный статус заказаЗаказ, сумма, оплата, документыЕжедневноMedium

Логическая схема обменов

[Клиент]
   |
   v
[Личный кабинет] -- DF-01: заявка + external_request_id --> [CRM]
   |                                                        |
   |                                                        v
   |                                                     [ERP] <------ DF-05 ------ [WMS]
   |                                                        |
   +<--------------- DF-03: статус / DF-04: документы ------+
   |
   +-- DF-06 --> [Email/SMS Gateway]

[ЛК / CRM / ERP] ---- DF-08 ----> [Monitoring]
[CRM / ERP] --------- DF-07/09 --> [DWH]

Пример end-to-end потока

ШагСистемаДействиеКонтрольная точка
1ЛККлиент создает заявкуСоздан external_request_id
2ЛКЗаявка получает статус newСтатус виден клиенту
3ЛК → CRMЗаявка передается в CRMCRM возвращает crm_deal_id
4CRMМенеджер проверяет заявкуФиксируется первая реакция
5CRM → ERPПодтвержденная сделка передается в ERPERP возвращает erp_order_id
6ERPЗаказ получает учетный статусСтатус маппится в клиентский
7ERP → ЛКСтатус заказа обновляется в ЛККлиент видит понятный статус
8ERP → ЛКДокументы становятся доступныПроверяются права доступа
9ЛК → GatewayКлиент получает уведомлениеОтправка залогирована
10Все системыДанные попадают в мониторинг и аналитикуЕсть correlation ID

9. Контракт данных: ЛК → CRM

Контракт данных: ЛК → CRM

ПолеИсточникПолучательОбязательностьПравило
external_request_idЛКCRMRequiredУникальный ID заявки, используется для идемпотентности
company_external_idЛК / CRMCRMRequiredКомпания должна существовать в CRM
contact_external_idЛК / CRMCRMRequiredКонтакт должен быть привязан к компании
request_typeЛКCRMRequiredЗначение из справочника типов заявок
priorityЛКCRMOptionalРассчитывается по правилам приоритизации
comment_rawЛКCRMOptionalПередается без редактирования
attachmentsЛКCRMOptionalПередаются ссылки на файлы с правами доступа
created_atЛКCRMRequiredДата и время создания заявки
sourceЛКCRMRequiredВсегда client_portal
sync_statusЛКCRMRequiredpending, sent, failed, retrying

Правила валидации

ПравилоОписаниеОшибка
Уникальность заявкиexternal_request_id не должен создавать вторую сделкуDuplicate request
Компания обязательнаНельзя передать заявку без компанииCompany missing
Контакт принадлежит компанииКонтакт не может быть связан с другой компаниейContact-company mismatch
Тип заявки из справочникаНельзя передать произвольное значениеInvalid request type
Файл доступен только владельцуСсылка на вложение должна учитывать права доступаAccess violation

10-12. Статусы, ошибки и надежность

Статусы заказа и правила синхронизации

Статус ERPКлиентский статус в ЛКПоказывать клиентуПравило
createdЗаявка созданаДаНачальный статус после создания заказа
in_reviewПроверяется менеджеромДаИспользуется до подтверждения условий
confirmedЗаказ подтвержденДаМожно отправлять уведомление клиенту
payment_pendingОжидает оплатыДаОтдельный финансовый статус
paidОплата полученаДаНе должен заменять статус исполнения
in_productionВ работеДаИспользуется для заказных позиций
ready_to_shipГотов к отгрузкеДаМожет запускать уведомление
shippedОтгруженДаТребуется дата отгрузки
closedЗавершенДаДокументы должны быть доступны
cancelledОтмененДаТребуется причина отмены
errorТребует проверкиНетВнутренний технический статус

Правила обработки ошибок

СитуацияЧто делает системаЧто видит пользовательЧто видит поддержка
CRM API недоступенЗаявка сохраняется, ставится в retry-очередьЗаявка создана, обработка займет больше времениОшибка с correlation ID
CRM вернула duplicateЛК связывает заявку с существующей сделкойСтатус заявки не меняетсяЗапись о дубле и CRM ID
ERP не вернула статусЛК сохраняет последний успешный статусСтатус обновляетсяАлерт, если задержка больше SLA
Документ недоступенСсылка скрыта, создается инцидентДокумент готовитсяОшибка доступа или генерации
Gateway не отправил уведомлениеПовторная отправка по retry-политикеНичего или сообщение в ЛКСтатус доставки уведомления
Ошибка прав доступаДоступ блокируетсяОшибка доступаSecurity-событие и алерт

Idempotency, retry и correlation ID

МеханизмГде применяетсяЗачем нужен
Idempotency keyСоздание заявки, передача в CRMЧтобы повторная отправка не создавала дубль
Retry-очередьCRM, ERP, GatewayЧтобы временный сбой API не приводил к потере данных
Dead-letter queueВсе критичные обменыЧтобы ошибки не терялись после исчерпания повторов
Correlation IDВсе системыЧтобы восстановить цепочку событий по заявке
Sync statusЛК, CRMЧтобы видеть, отправлена ли сущность во внешнюю систему
Audit logЛК, ERP, CRMЧтобы понять, кто и когда изменил данные

13-17. Риски, контроль и сверка

Риски расхождения данных

РискГде возникаетПоследствиеВероятностьВлияниеМитигирующее действие
Дубли заявокЛК → CRMНесколько сделок по одному запросуMediumHighIdempotency key, проверка external ID
Потеря заявки при сбое CRM APIЛК → CRMКлиент думает, что заявка создана, менеджер ее не видитMediumHighRetry-очередь, dead-letter queue, алерты
Разные статусы в ERP и ЛКERP → ЛККлиент видит устаревшую или неверную информациюHighMediumМаппинг статусов, журнал обновлений, SLA синхронизации
Несовпадение справочников компанийCRM ↔ ERPОшибки в документах и заказахMediumHighMaster data owner, единый внешний ID
Ошибка доступа к документамERP → ЛККлиент видит чужой документLowCriticalПроверка владельца, access control, security audit
Невозможность сверкиВсе системыНельзя доказать, где потерялась сущностьMediumHighCorrelation ID, reconciliation report

Контрольные точки интеграции

IDКонтрольная точкаУспешный результат
CP-01Создание заявки в ЛКЗаявка создана, имеет уникальный external_request_id
CP-02Передача заявки в CRMСделка создана, crm_deal_id сохранен в ЛК
CP-03Ошибка CRM APIЗаявка поставлена в очередь и не потеряна
CP-04Повторная отправка заявкиДубль сделки не создается
CP-05Передача сделки в ERPЗаказ создан с корректной компанией и суммой
CP-06Обновление статуса из ERPЛК показывает актуальный клиентский статус
CP-07Передача документовДокументы доступны только владельцу
CP-08Уведомление клиентаEmail/SMS отправлены и залогированы
CP-09Сверка данныхНет дублей, потерь и конфликтующих статусов
CP-10МониторингОшибка интеграции создает алерт

Мониторинг и SLA интеграций

МетрикаЦелевое значениеИсточникАлерт
Успешность передачи ЛК → CRM≥ 99%Логи интеграцииНиже 98% за 30 минут
Среднее время передачи заявки в CRMДо 30 секундЛК / CRMБольше 2 минут
Количество заявок в retry0–5 в нормеRetry queueБольше 10 или старше 15 минут
Количество сообщений в dead-letter queue0DLQЛюбое сообщение
Задержка обновления статуса ERP → ЛКДо 15 минутЛК / ERPБольше 30 минут
Ошибки доступа к документам0Security logЛюбое событие
Дубли по external ID0CRM / ЛКЛюбой дубль
Доставка уведомлений≥ 98%GatewayНиже 95% за 1 час
Время восстановления после сбояДо 2 часовIT OperationsНарушение MTTR

Reconciliation report

ПроверкаОжидаемое значениеДопустимое расхождениеДействие при расхождении
Количество заявок в ЛК и сделок в CRM1:10Проверить idempotency и retry
Количество CRM-сделок и ERP-заказовПо подтвержденным сделкам0–1 объясненное расхождениеПроверить статус подтверждения
Наличие external_request_id100%0Заблокировать пилотный rollout
Наличие crm_deal_id в ЛК100% отправленных заявок0Проверить CRM response handling
Наличие erp_order_id для подтвержденных заказов100%0Проверить CRM → ERP обмен
Корректность клиентских статусов100% выборки0Проверить маппинг статусов
Доступность документов100% опубликованных документов0Проверить ERP → ЛК и права доступа
Отсутствие чужих документов100%0Security incident
Вывод по экономике интеграционных рисков: интеграционный контур должен проектироваться не только как набор API, а как механизм защиты данных, денег, SLA и доверия клиента.

18-19. План пилота

Пилот запускается поэтапно и только после контрольных проверок

Тестовые клиенты и заявки

1. Технический dry-run

Проверить связность систем

Критерий успеха
Все обмены проходят без ручного вмешательства
Реальные данные без влияния на клиента

2. Shadow mode

Сравнить результаты интеграции с текущим ручным процессом

Критерий успеха
Расхождения объяснены и не критичны
3–5 клиентов или один сегмент

3. Ограниченный пилот

Проверить end-to-end процесс на реальных пользователях

Критерий успеха
Нет потерь заявок, дублей и критичных дефектов
20–30 клиентов

4. Расширенный пилот

Проверить нагрузку, поддержку, мониторинг

Критерий успеха
SLA соблюдается, поддержка понимает процесс
Все клиенты

5. Production rollout

Запустить целевой процесс

Критерий успеха
Метрики стабильны, инциденты контролируемы

Go / No-Go критерии пилота

КритерийGoNo-Go
Передача заявок100% заявок доходят до CRMЕсть потерянные заявки
ДублиНет дублей по external_request_idЕсть повторяющиеся сделки
СтатусыСтатусы корректно маппятсяКлиент видит неверный статус
ДокументыДокументы доступны только владельцуЕсть ошибка доступа или документ не открывается
Ошибки APIОшибки логируются и переотправляютсяОшибки теряются
Retry / DLQОчереди работают, DLQ пустаяСообщения зависают без обработки
МониторингАлерты настроены и провереныОшибки можно увидеть только вручную
ПоддержкаЕсть инструкция и владельцыНепонятно, кто решает инциденты
ОткатЕсть план rollbackОткат не описан
Сверка данныхРасхождений нет или они объясненыЕсть необъясненные расхождения

20-21. Roadmap согласования интеграционного решения

От инвентаризации систем к controlled rollout

Карта систем

1. Инвентаризация систем

Понятен состав контура

Участники
IT, Product, владельцы систем
Артефакт
Карта систем
Master data matrix

2. Определение master data

Назначены владельцы сущностей

Участники
CRM, ERP, Finance, Product
Артефакт
Master data matrix
Data flow map

3. Описание потоков данных

Зафиксированы события и обмены

Участники
IT Architect, аналитик, подрядчики
Артефакт
Data flow map
Status mapping table

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

Внутренние статусы переведены в клиентские

Участники
Product, Operations, Finance
Артефакт
Status mapping table
Retry / DLQ rules

5. Проектирование error handling

Ошибки не приводят к потере данных

Участники
IT, разработка, поддержка
Артефакт
Retry / DLQ rules
Monitoring checklist

6. Требования к мониторингу

Инциденты обнаруживаются автоматически

Участники
IT Operations, Support
Артефакт
Monitoring checklist
Security checklist

7. Security review

Проверены доступы, токены, документы

Участники
Security, IT, Product
Артефакт
Security checklist
Pilot plan

8. План пилота

Запуск разбит на управляемые этапы

Участники
Business, IT, Support
Артефакт
Pilot plan
Launch decision protocol

9. Go / No-Go решение

Решение о запуске зафиксировано

Участники
Product, IT, Business
Артефакт
Launch decision protocol
Rollout report

10. Production rollout

Контур запущен и контролируется

Участники
Все владельцы
Артефакт
Rollout report

Итоговая рекомендация по архитектуре запуска

  1. Использовать единый external_request_id для связи ЛК, CRM и ERP.
  2. Реализовать idempotency для создания заявок и сделок.
  3. Настроить retry-очереди и dead-letter queue для критичных обменов.
  4. Разделить внутренние ERP-статусы и клиентские статусы.
  5. Назначить master-систему для каждой бизнес-сущности.
  6. Настроить мониторинг, correlation ID и алерты по ошибкам.
  7. Провести shadow mode до реального пилота.
  8. Запускать production только после сверки данных и Go / No-Go решения.
Финальная подпись для сайта: на выходе клиент получает не «список API», а карту управляемой интеграции: какие системы участвуют, какие данные ходят между ними, кто владеет сущностями, где возможны расхождения, как обрабатываются ошибки и по каким критериям запускать пилот.

Заявка

Обсудить похожий интеграционный контур

Опишите системы, которые нужно связать, текущие ошибки обмена и желаемый результат. Вернемся с безопасным первым этапом.

Нажимая кнопку, вы соглашаетесь с обработкой персональных данных.