Принудительно ли обновлять все поля сущностей веб-сервисами CRM 4.0, даже если они не изменились - PullRequest
1 голос
/ 01 июня 2011

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

  1. Загрузка всех существующих сущностей из CRM с помощью SQL-запроса.
  2. Создать соответствующий объект сущности CRM со всеми заполненными значениями
  3. Найдите соответствующую запись во внешнем источнике и обновите измененные поля
  4. Если какое-либо из полей было помечено как измененное, обновите сущность обратно до CRM.

Мой вопрос: все ли поля обновлены в CRM, хотя значение не изменилось? или CRM достаточно интеллектуален, чтобы обновлять только поля с разными значениями?

Спасибо

1 Ответ

2 голосов
/ 01 июня 2011

За кулисами, я считаю, что Microsoft CRM использует обновление SQL для всех атрибутов из набора свойств, которые не равны NULL. Вы также можете включить опции для перезаписи пустых значений.

Это звучит как типичный дельта-процесс. Я дам совет о двух лучших способах решения этой проблемы, которые я видел в Microsoft CRM -

  1. (Наиболее эффективный) Если вы можете подключить некоторые триггеры / плагины к внешнему источнику для распространения изменений в реальном времени в промежуточную базу данных, которая содержит тип изменения (вставка / обновление / удаление), тогда выполняйте ночную синхронизацию который обрабатывает таблицу (помечает затронутые записи статусом) и помещает каждую строку в CRM. После завершения отправки изменений в CRM он может удалить все дельта-строки из промежуточной базы данных, которые были помечены как обработанные.

  2. (если push-уведомление в реальном времени недоступно) Если исходная система является системой записи всех данных, вам потребуется прочитать все значения из Microsoft CRM (можете сделать это напрямую или загрузить их во временную базу данных, если вы хочу сохранить нагрузку на CRM). Во время чтения у вас должен быть идентификатор для записей, чтобы отслеживать их до исходных данных. Когда вы сравниваете каждое значение с исходной базой данных, записывайте любые различия в промежуточную таблицу с типом различий (вставка / обновление / удаление). После создания промежуточной базы данных дельты обработайте все эти записи в CRM так же, как в части 1.

...