Receive or Pull Data from CRM using BizTalk

 

Receive or Pull Data from CRM using BizTalk

(Article works with CRM Dynamics 3.0 and BizTalk Server 2004 onwards)

BizTalk CRM adapter can be used to send or push data to CRM system from any other application system. For example, account data can be pushed to CRM server from commerce server. But when it comes to receiving or pulling data out of CRM, Adapter is not the way because it comes with send adapter only. Well, one can design to run a scheduled orchestration which pools CRM server to fetch required data using SOAP adapter and CRM web service. But pooling is not a smart way. Ideally, any scalable design should pull incremental data when any data change happens. You can call this event (data change/addition) driven incremental data receive.

Understanding Fundamentals

To design event driven incremental data receive, you have to use some of the in-house features of CRM. These features are – “Workflow” and “BizTalk Logic Extension” or “Callout”. Let’s talk little about these.

Microsoft CRM provides an event driven workflow framework on which developers can write custom logic. You can write a .net component and make it work under a workflow rule definition. Workflow rules can be bound to the following events that can be performed on an entity instance –

·         Create

·         Assign

·         Change Status

For example, if you create a workflow which has a rule which is bound to run on create event for “contact” entity instance, then whenever an instance of “contact” entity is created, it will trigger workflow rule and rule will in reverse call .net component. You can learn more about CRM workflow @ http://msdn2.microsoft.com/en-us/library/aa685987.aspx .

“Business Logic Extensions” or “Callout” is another event driven framework in CRM. Callouts can be configured to run (a .net component) upon occurrence of some event. Callouts support following event for CRM entities –

·         Create

·         Update

·         Delete

·         Assign

·         Status Change

·         Merge

·         Send Mail

Callouts can be two types of –

·         Pre Callout – executes before occurrence of event

·         Post Callout – executes after occurrence of event

For example, if you configure a post callout on create event of “contact” entity, then whenever an instance of “contact” entity is created, it will trigger configured post callout and callout will in reverse call .net component. You can learn more about CRM callout @ http://msdn2.microsoft.com/en-us/library/aa680495.aspx.

Both of these features are simple, configurable, require .net based coding and are very powerful. You are not required to be a CRM expert to use or implement them.

Designing Event Driven Incremental Data Import

There are few things which make “workflow” and “callout” a great instrument to design event based data pull –

·         Both run when events like create, update, delete etc. occurs on CRM entities. Since these events occur when changes happen to entity instances; you can put logic in workflow or callout to read entity instance data just change and play with it. In other world, you can fetch incremental data change.

·         Both are configurable

·         As an event action, both can run .net components.

Let’s take a scenario and see how these things work together to give desired design.

Scenario: Contoso is an online retail company. It has an e-commerce site with commerce server at back end. And its customer care offices run CRM. Customers can call Contoso customer care center agents to update their profile, credit card and demographic information. Agents use CRM web client to perform job. Customers can also do the same job using self care portal which in reverse uses CRM web service to update information in CRM system. In both of these cases, customer contact information is updated in CRM system. Requirement is that “as soon as customer contact information is updated in CRM system; it should get synchronized to commerce server”.

In this overall requirement, underline statement requires customer contact data to be pulled from CRM system and get pushed into commerce system. You want to do incremental data update and want pull to happen only when any customer contact information is changed. Let’s see a simple possible solution for this -

Solution: here are step by step things I will like to do to implement this solution.

·         I am assuming that customer accounts are implemented as “contact” entity in CRM system.

 

·         First you create a BizTalk project. You add a schema having those fields or properties which we need to synchronize between CRM and Commerce.

 

·         Then you add an orchestration. Orchestration will use a “Request-Response” port to read messages of schema type defined above. Once message is read, orchestration uses this message and commerce profile send adapter to send contact information into commerce system. Off course, there will some logic and data mapping between your schema and commerce profile schema. Well, I am sure smart implementation will have more decoupled and scalable orchestration design.

 

·         When orchestration logic is complete, expose orchestration as web service and perform necessary port binding in BizTalk administrator.

 

·         You are done with orchestration which can carry data between CRM and Commerce system. Now, we need to hook this orchestration with CRM in such a way that whenever contact entity instance is updated in CRM; it should trigger orchestration and pass required contact data from CRM to Commerce system.

 

·         To perform required clip, create a workflow or post callout in CRM on “contact” entry and subscribe it to “update” event. As an action, workflow or callout will call a .net component and pass contact instance information to it.

 

·         .Net component will call BizTalk web service exposed above and will use contact instance information to populate fields of schema in web service and finally call web service.

 

·         And it works. Whenever, a contact entity instance is updated in CRM, configured workflow or callout will get triggered. Workflow or callout will fire .net component execution. Component will call web service passing contact instance information. Web service will pass data to orchestration and orchestration will push data into commerce system using adapters.

 

·         That’s it. Solution triggers data synchronization only when any data change happens. Only incremental data is passed between systems.

 

·         Well web service is one way. You can also used file, ftp or any other channel based integration.

Choosing between workflow and business logic extension (callout)

 You saw that we can use both callout and workflow to implement pull solutions. Question is when to use workflow and when callout? You can use following guidelines –

·         Callout supports more events than workflow.

·         Workflows run asynchronous while callouts work synchronous.

·         Callouts support all entities in CRM but workflow has reservations for few.

·         Workflow can be run manually but callout cannot be.

·         Callouts can be managed using automated deployment but workflow is not. One has to use workflow manager for workflow deployment.

Conclusion

Workflow and callout are two wonderful features in CRM which can be leveraged by BizTalk to write a smart pull operation. You just need to use their potential and fit in design. Hope you find this article useful.

采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值