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

Картирование данных — это не просто таблица соответствия полей, а документ, в котором организация определяет значение каждого фрагмента данных, переносимого в Salesforce. Практически любая ошибка загрузки, кажущаяся технической — неверный формат даты, неопознанное значение Picklist, разорванная связь — изначально является следствием непринятого бизнес-решения.

Порядок действий: сначала определяется, какие сущности будут переноситься, затем, кто является бизнес-владельцем каждой сущности, далее, какие поля имеют реального потребителя, и только потом пишутся правила преобразования. Если начать с обратного, техническая команда принимает бизнес-решения незаметно — и это обнаруживается спустя три месяца после Go-Live, когда отчет о доходах не сходится.

Общая информация о планировании миграции данных доступна по ссылке: Миграция данных в Salesforce.

Три типа пробелов, выявляемых при картировании

Тип пробелаРаспространенный примерКто принимает решение
Семантический пробел«Активный клиент» = совершил покупку в этом году в одной системе, = не заблокирован в другой системеВладелец бизнес-процесса
Структурный пробелОдин клиент с пятью адресами против модели Account/ContactАрхитектор данных
Пробел в качестве18% записей без действительного внутреннего номера НДСВладелец данных + регулирующие органы

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

Семантический уровень: Data Dictionary до Mapping-таблицы

Перед тем как сопоставлять поля, составляется глоссарий для каждой ключевой сущности: что такое Account (клиент), чем Lead (потенциальный клиент) отличается от Contact (контакта) в данной организации, когда Opportunity (возможность) закрывается. Эти определения коротки — две строки на сущность — но именно они позволяют разрешать разногласия, а не указывать на них.

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

Анатомия правильной строки картирования

Каждая строка в таблице должна отвечать на семь вопросов: из какого исходного объекта и поля, в какой объект и поле в Salesforce, каков тип данных и его длина, каково правило преобразования, что происходит с пустым значением, каково значение по умолчанию и кто утвердил. Строка, в которой отсутствует один из этих столбцов, вернется в качестве вопроса в процессе ночной загрузки Cutover.

Три рабочих правила, которые помогают избежать ошибок:

  • Нет тихих преобразований. Все значения, которые система «исправляет» самостоятельно, должны быть записаны в лог исключений.
  • Значение по умолчанию — это бизнес-решение. Тот, кто устанавливает Country = IL в качестве значения по умолчанию, должен нести ответственность за отчеты по регионам.
  • Внешние ключи превыше всего. Для каждой сущности сохраняется External ID из исходной системы. Без него нет Reconciliation и повторного запуска.

Преобразования: где совершаются ошибки

Наибольший ущерб наносят именно простые преобразования. Даты без часового пояса смещают записи на день; имена, которые обрезаются и переводятся в верхний регистр без единого правила, создают новые дубликаты сразу после удаления старых; суммы, конвертированные в единую валюту по дневному курсу, создают расхождения в отчетах с ERP.

Правило: любое числовое или денежное преобразование проверяется путем сравнения сумм, а не путем сравнения записей. Одинаковый подсчет не является доказательством корректности.

Те, кто еще не решил вопрос об источнике истины, найдут информацию в Source of Truth в организации, а само окно переноса — в Cutover и Reconciliation в Salesforce.

Сценарий: Сервисная компания с двумя исходными системами

Организация, предоставляющая услуги, с 90 тысячами клиентов приступила к миграции из двух систем: старой системы выставления счетов и системы обслуживания, приобретенной вместе с дочерней компанией. Первая таблица картирования была отмечена как «готова» в течение двух недель — 340 полей было сопоставлено.

При первом тестовом прогоне (Rehearsal) было загружено 97% записей. Проблема обнаружилась при сверке (Reconciliation): общая сумма остатков в Salesforce была на 4,1% ниже, чем в ERP. Причиной была не неудачная загрузка, а то, что все записи с отрицательным остатком (кредитовые ноты) были сопоставлены с полем, имеющим правило валидации, которое предотвращало отрицательное значение — и тихо устанавливались как ноль.

Исправление было на двух уровнях: явное правило преобразования для кредитовых нот, а также изменение политики — каждое правило, которое обнуляет или укорачивает значение, должно генерировать строку исключения. При втором прогоне количество исключений увеличилось до 1900, и это был прогресс: исключения стали видимыми вместо скрытых. Третий прогон свел количество исключений к 40 задокументированным, и только тогда была назначена дата Cutover.

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

РискКак проявляется на практикеПрофилактические меры
Перенос всей историиОбъем, дубликаты и бесполезная информация переносятся в новую системуОпределить политики Retention и пороговые значения качества
Только техническое картированиеПоля переносятся без понимания бизнес-значенияData Dictionary и бизнес-владельцы
Тихие преобразованияЗначения исправляются автоматически, и никто об этом не знаетЛогирование исключений обязательно для каждого правила преобразования
Отсутствие тестовых прогонов (Rehearsal)Окно простоя увеличивается, возникают сюрпризыМинимум два полных тестовых прогона
Отсутствие External IDНевозможно проверить, исправить или повторно запуститьДля каждой сущности сохраняется исходный ключ

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

ОбластьЧто измеряемЧастота проверки
Полнота (Completeness)Доля заполненных обязательных полей в целевой системеДо и после каждой загрузки
Сверка (Reconciliation)Соответствие подсчетов, сумм и связей исходным даннымПри каждом тестовом прогоне (Rehearsal) и Cutover
ИсключенияКоличество открытых строк исключений по степени серьезностиЕжедневно в период миграции
Поля без потребителяСколько перенесенных полей не использовались за 90 днейОдин раз после Go Live

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

Организации, предпочитающие профессиональное сопровождение в построении картирования, делают это в рамках услуги интеграции и данных.

Контрольный список перед первой загрузкой

  • ☐ Краткий словарь терминов для каждой ключевой сущности, утвержденный бизнесом
  • ☐ Список полей с определенным потребителем; остальное в архив
  • ☐ External ID для каждой перенесенной сущности
  • ☐ Полная таблица сопоставления значений (Value Mapping), включая значение для неопознанных значений
  • ☐ Явное правило для каждого пустого значения и для каждого значения по умолчанию
  • ☐ Каждое правило преобразования генерирует строку исключения вместо тихого исправления
  • ☐ Сценарий сверки (Reconciliation): подсчет, сумма, связь, ручная выборка
  • ☐ Согласованный порог исключений, выше которого Cutover не выполняется
  • ☐ Версия и подпись на листе картирования
  • ☐ План отката (Rollback) и повторного запуска

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