如何使用 BizTalk Server 2009/2010 集成 Microsoft Dynamics CRM 4.0 到其他业务应用程序





5.00/5 (1投票)
本文演示了如何使用 BizTalk Server 2009/2010 将 Microsoft Dynamics CRM 4.0 集成到其他业务应用程序。
引言
本文演示了如何使用 BizTalk Server 2009/2010 将 Microsoft Dynamics CRM 4.0 集成到其他业务应用程序。 关于如何使用 BizTalk Server 2009/2010 适配器与 Microsoft Dynamics CRM 通信,已经出现了一些问题。 本文将尝试对此进行阐明。
下载并安装 Microsoft BizTalk Server Adapter for Microsoft Dynamics CRM 4.0
使用此适配器,您可以将 Microsoft Dynamics CRM 4.0 与使用 Microsoft BizTalk Server 2006/2009 的任何其他业务应用程序集成。
验证适配器安装
打开 BizTalk Server 管理控制台并查找以下内容

如何生成所需的架构以映射并在 Microsoft CRM 中创建实体?
正确安装适配器后,在 Visual Studio 中打开一个新项目。
这些步骤将生成映射所需的架构。
步骤 1:右键单击项目 -> 添加 -> 添加生成的项 -> 选择添加适配器元数据。
步骤 2:选择 Microsoft Dynamics CRM 4.0,单击下一步,然后指定 CRM 连接详细信息。
步骤 3:选择实体和操作。
架构生成后,项目将如下所示

注意:如果您选择了多个实体,则 CRM 会使用实体名称作为架构名称的前缀(例如 Account_Query.xsd)。 请注意,这些是通用架构,对于每个实体都是相同的。 可以安全地删除这些通用架构,这将减小架构 DLL 的大小。
使用动态发送端口调用 CRM 适配器的步骤
步骤 1:找到 CRM 属性架构
在 Dynamics 适配器 CRM 安装文件夹中找到属性架构(通常位于 C:\Program Files\CRMDynamicsBizTalkAdapter4.0\Schemas)。
步骤 2:为属性架构分配值
设置属性架构中的各种属性
// NOTE: These are dynamic port assignments.
// These can changed at runtime without any impact!
CRMAdapterRequestMsg(PropertySchema.ServerUrl) = CRM_URL;
CRMAdapterRequestMsg(PropertySchema.UserName) = CRM_UserName;
CRMAdapterRequestMsg(PropertySchema.Password) = CRM_Password;
CRMAdapterRequestMsg(PropertySchema.CrmOrganization) = CRM_Organization;
CRMAdapterRequestMsg(PropertySchema.AuthType) = CRM_AuthType;
// NOTE: Specify the CRM full URL endpoint.
CRMDynamicSendPort(Microsoft.XLANGs.BaseTypes.Address) = CRM_URL;
// NOTE: match this with the adapter name in BizTalk Server
// Administration Console (Microsoft Dynamics CRM 4.0)
CRMDynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType) =
CRM_TransportType; // "Microsoft Dynamics CRM 4.0"
步骤 3:映射到各种 CRM 操作架构
需要为需要在 CRM 中创建或更新的每个实体生成架构。 在此示例中,我仅演示了对 fetch 请求的操作。 屏幕截图说明了传输到 fetch 请求所需的映射。
crm_action
属性可以采用以下值
创建
update (默认)
fetch
删除
// Custom Functoid code to send RAW XML
public string GetFetchQuery(string fetchQueryRequest)
{
return fetchQueryRequest;
}
可下载的源代码
此源代码包含两个业务流程。 一个业务流程调用 CRM 适配器,另一个业务流程使用调用业务流程形状调用它。 我已将其编码为尽可能通用。
请注意以下几点
- CRM 适配器使用以下命名空间将响应发送回业务流程。
xxx
值必须替换为您连接的特定 CRM 值。http://schemas.microsoft.com/crm/2007/BizTalkAdapter/xxx/Response
- CRM 的响应有两种形式,错误响应和正确响应。 错误响应显示在附加的屏幕截图中。 正确的响应位于
/Body/Message
标记下,并且ReturnCode
值将为1
。 业务流程代码从Message
标记中提取响应,并将其传输到逻辑发送端口。 - 请注意发送端口和接收端口设置。 这在生产环境中不是必需的,但运行此代码是必需的。
发送和接收端口设置
如何在 Microsoft Dynamics CRM 4.0 BizTalk 适配器中启用调试并接收友好的错误消息?
CRM 适配器通常会在应用程序事件日志中记录错误消息。 大多数错误消息都是通用的,没有提供足够的描述性含义。 以下是在日志文件中记录带有描述性错误消息的错误所需的步骤。
步骤 1:打开注册表编辑器
搜索以下键 '6B8335E2-9664-4ad8-A2F6-ADBFD60FF703'。
步骤 2:如下图所示设置以下键

步骤 3:重新启动与 CRM 适配器关联的 BizTalk 发送处理程序
您已准备好进行快乐的集成。
CRM 适配器日志中的典型错误消息
错误消息 |
Exception :: 0x80040203 :: serializedForm :: at
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(SoapClientMessage message, WebResponse response, Stream responseStream,
Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke
(String methodName, Object[] parameters)
at Microsoft.Crm.BizTalkAdapter.CrmService2007.CrmService.Execute
(Request Request)
at Microsoft.Crm.BizTalkAdapter.Runtime.SendToCrm.UpdateDynamicEntity
(EntityAttributesValidationResult attributeValidationResult,
String entityName)
|
解决方案 | 错误代码 0x80040203 表示未设置实体的主键,或者实体中缺少必需元素的值。 |
错误消息 |
Attribute :: xxx_currencyid, Attribute Type :: Lookup,
Attribute Value :: USD, Error :: There is an error in the XML document.
|
解决方案 |
首先请注意,属性类型是 Lookup。 每个查找类型都有以下四个属性
CRM 文档告诉我们,属性 解决方法:将值设置为属性 <xxx_currencyid name="USD" />
|
快速参考
我建议您先查看 Brajendra Singh 的以下文章,以及一些关于 CRM 适配器调试的注意事项。