CRM 4.0 Web服务是否强制更新所有实体字段,即使它们没有更改

时间:2011-05-31 22:37:26

标签: dynamics-crm crm

我有一个应用程序,我每天运行以从外部源向CRM发送合同更新。我使用的过程是:

  1. 通过SQL查询从CRM下载所有现有实体。
  2. 创建一个包含所有填充值的适当CRM实体对象
  3. 在外部源中查找相应的条目并更新已更改的字段
  4. 如果任何字段被标记为已更改,则将实体更新回CRM。
  5. 我的问题是:即使值没有改变,CRM中的所有字段都已更新?或者CRM是否足够智能,只能更新具有不同值的字段?

    由于

1 个答案:

答案 0 :(得分:2)

在幕后,我相信Microsoft CRM正在使用SQL更新来处理属性包中非空的所有属性。您还可以打开选项以覆盖空值。

这听起来像是一个典型的增量过程。我将就我认为使用Microsoft CRM看到的两种最佳方式提供建议 -

  1. (效率最高)如果您可以将一些触发器/插件连接到外部源,以实时将更改传播到包含更改类型(插入/更新/删除)的临时数据库,则每晚进行同步处理表(标记具有状态的受影响记录)并将每行推入CRM。完成将更改推送到CRM后,它可以从登台数据库中删除所有已标记为已处理的增量行。

  2. (如果实时推送不可用)如果源系统是所有数据的记录系统,则需要从Microsoft CRM读取所有值(可以直接执行此操作或将其加载到临时数据库中)想要在CRM上节省负担)。在执行读取操作时,您应该在记录上有一个ID,以便将它们追溯到源数据。将每个值与源数据库进行比较时,请将任何差异写入具有差异类型(插入/更新/删除)的登台表。构建delta登台数据库后,将所有这些记录以与第1部分相同的方式处理到CRM中。