问题描述
||
我有一个每天运行的应用程序,用于从外部来源向CRM发送合同更新。我使用的过程是:
通过SQL查询从CRM下载所有现有实体。
创建一个适当的CRM实体对象,并填充所有值
在外部源中找到适当的条目并更新更改的字段
如果任何字段被标记为已更改,则将实体更新回CRM。
我的问题是:即使值未更改,CRM中的所有字段也会更新吗?还是CRM足够智能以仅更新具有不同值的字段?
谢谢
解决方法
在幕后,我相信Microsoft CRM正在对该属性包中所有不为null的属性使用SQL更新。您也可以打开选项以覆盖空值。
这听起来像一个典型的增量过程。我将就我认为使用Microsoft CRM的两种最佳方法提供建议-
(最有效)如果您可以将一些触发器/插件连接到外部源,以将更改实时传播到包含更改类型(插入/更新/删除)的登台数据库,则可以进行每晚同步处理该表(标记具有状态的受影响记录),并将每一行推送到CRM中。完成将更改推送到CRM后,它可以从登台数据库中删除所有已标记为已处理的增量行。
(如果实时推送不可用)如果源系统是所有数据的记录系统,则您需要从Microsoft CRM中读取所有值(如果要保存CRM的负载,可以直接执行此操作或将其加载到临时数据库中)。进行读取时,记录上应有一个ID,以将其追溯到源数据。将每个值与源数据库进行比较时,请使用差异类型(插入/更新/删除)将任何差异写入到登台表中。构建增量暂存数据库后,以与第1部分相同的方式将所有这些记录处理到CRM中。