Краткий ответ

«Единый источник истины» — это не технический вопрос, а вопрос полномочий: кто в организации имеет право определять правильность определённого значения. Если такое решение не принимается явно, оно принимается тайно — тем, кто написал последнюю интеграцию.

Ключевое правило: право собственности определяется на уровне поля, а не на уровне системы. Попытки объявить «ERP является источником истины для клиента» терпят крах, как только отдел обслуживания обновляет номер телефона в Salesforce, а ночная синхронизация удаляет это обновление.

Три вопроса, определяющие право собственности

Для каждой сущности, а затем для каждой группы полей следует задать вопросы: где данные были первоначально созданы, кто уполномочен в бизнес-процессе изменять их, и кто несёт ответственность в случае их некорректности. Во всех трёх случаях ответом должна быть должность, а не название системы. Система определяется должностью.

Если ответы указывают на две разные должности, это почти всегда признак того, что два разных поля были объединены в одно.

Пример матрицы прав собственности

Сущность / ПолеИсточник истиныSalesforceНаправление синхронизации
Юридическое название, ИНН, условия оплатыERPТолько для чтенияERP → Salesforce
Контактное лицо, должность, предпочтенияSalesforceРедактированиеSalesforce → Маркетинговые системы
Каталог продукции и базовый прайс-листERP / PIMТолько для чтенияERP → Salesforce
Коммерческое предложение и утверждённая скидкаSalesforceРедактированиеSalesforce → ERP
Подтверждённый заказ и статус доставкиERPТолько для чтенияERP → Salesforce
Задолженность и статус взысканияФинансовая системаТолько для чтенияФинансовая система → Salesforce
Активность, обращения и коммуникацииSalesforceРедактированиеБез внешней синхронизации

Эта таблица является результатом. Она компактна, содержится в одном документе, и каждая новая интеграция проверяется по ней до начала разработки.

Разделение между представлением и полномочиями

Большинство конфликтов между системами устраняются, когда становится понятно, что представление данных не требует их копирования. Остаток задолженности, отображаемый продавцу, не обязательно должен быть полем в Salesforce, которое обновляется каждую ночь; это может быть удалённое представление или слой федерации.

Каждое скопированное поле — это операционное обязательство: синхронизация, сбой, расхождение и время. Прежде чем копировать, следует задаться вопросом, требуется ли автоматизация или историческая отчётность. Если нет — предпочтительнее отображать, а не копировать. Более подробное описание этого подхода представлено в статье «Zero Copy и федерация в Data 360».

Конфликты: принятие решений заранее, а не в реальном времени

Даже при наличии чёткого определения прав собственности возникают ситуации одновременного обновления. Возможны три правила: приоритет системы (владелец всегда выигрывает), последняя временная метка или пометка для ручной обработки. Третье правило является наиболее безопасным для конфиденциальных полей — при условии, что существует очередь обработки с назначенным ответственным, а не просто запись в журнале, которая накапливается.

Сценарий: организация с двумя истинами для одного адреса

Компания, оказывающая услуги инфраструктуры, управляла адресом клиента в двух системах: ERP для выставления счетов и системой выездного обслуживания для координации работы технических специалистов. Обе системы синхронизировались с Salesforce двунаправленно. Результат: адрес постоянно менялся туда-обратно, а технические специалисты прибывали по адресу для выставления счетов.

Решение заключалось не в исправлении синхронизации, а в декомпозиции сущности. Были определены два отдельных поля — адрес для выставления счетов, принадлежащий ERP, и адрес обслуживания, принадлежащий системе выездного обслуживания. Оба поля были только для чтения в Salesforce, со ссылкой на запрос на изменение, направляемый соответствующему владельцу. Количество сервисных обращений, закрытых как «неверный адрес», значительно снизилось в течение следующего квартала.

Урок: когда системы «борются» за поле, часто речь идёт о двух разных бизнес-данных, которым присвоено одно и то же имя.

Обеспечение: от документа к реальности

Матрица прав собственности работает только в том случае, если она реализована в трёх ключевых точках: Field-Level Security, которая предотвращает редактирование на стороне, не являющейся владельцем; интеграционный пользователь с ограниченными разрешениями только к полям, находящимся в его владении; и ежемесячный отчёт, показывающий поля, которые были обновлены в нарушение политики. Последний отчёт выявляет давно существующие интеграции, о которых никто не помнит.

Документирование значения каждого поля напрямую связано с картой данных для миграции.

Распространённые риски и профилактические меры

РискКак проявляется на практикеПревентивная мера
Право собственности на уровне системыПротиворечия внутри одной и той же сущностиПринятие решения на уровне поля или группы полей
Двусторонняя синхронизация по умолчаниюЗначения, периодически изменяющиесяОдностороннее направление + режим чтения на другой стороне
Избыточное копированиеДесятки синхронизированных полей без потребителяОтображать вместо копирования
Документ без обеспеченияПолитика размывается в течение нескольких месяцевРазрешения на уровне поля + мониторинг отклонений
Отсутствие очереди конфликтовПротиворечия накапливаются незаметноОчередь обработки с назначенным ответственным и SLA

Как измерить успех

ОбластьЧто измеряетсяЧастота проверки
СогласованностьДоля несоответствий в ключевых полях между системамиЕжемесячно
Отклонения от политикиЗаписи в полях, сделанные вне определённого владельцаЕжемесячно
КонфликтыКоличество и время закрытия элементов в очередиЕженедельно
Операционное воздействиеСбои, вызванные некорректными даннымиЕжеквартально

Разработка и обеспечение выполнения матрицы прав собственности осуществляется в рамках услуг по интеграции и работе с данными.

Чек-лист для определения «единого источника истины»

  • ☐ Список центральных сущностей в организации
  • ☐ Для каждой сущности: где создана, кто уполномочен, кто отвечает за ошибку
  • ☐ Право собственности определено на уровне поля или группы полей
  • ☐ Явное направление синхронизации для каждой группы
  • ☐ Каждое копируемое поле проходит проверку «имеет потребителя»
  • ☐ Выбрано и задокументировано правило разрешения конфликтов
  • ☐ Существует очередь ручной обработки с назначенным ответственным и SLA
  • ☐ Field-Level Security соответствует матрице
  • ☐ Интеграционный пользователь ограничен полями, находящимися в его владении
  • ☐ Ежемесячный отчёт по отклонениям от политики

Профессиональные ресурсы