This article begins a series of eight planned articles discussing various aspects and experiences using the Dynamics AX 4.0 adapter for BizTalk Server 2006. The topics for upcoming articles include “What is this IPC Port Exception?” and “Integrating Commerce Server 2007 and Dynamics AX 4.0”. Today’s article reviews the project I have been working on and outlines a few key developer experiences.
My current project is a social networking site where customers may buy items and make recommendations. When a member purchases items, other related members receive commissions based on proprietary rules. The concept is called Multi-Level Marketing.
Central to the web site is the Commerce Server 2007 system. Several third party vendors are used for fulfillment. A customized implementation of Dynamics AX 4.0 is used for the financials. A bulk of the customization to the AX application is related to the MLM functionality.
When this project started, documentation for the Dynamics AX 4.0 adapter for BizTalk Server 2006 consisted of a single webcast that showed a rather trivial integration example. In the webcast, the BizTalk Server installation was the default, single server configuration, and the Dynamics AX installation was on the same server. So, developing a non-trivial integration between a Commerce Server order and profile system and a Dynamics AX would prove to be a challenge.
In order to assist folks about to embark on their own implementation, I offer a few experiences to consider.
Design Experiences
%u00d8 Consider canonical messages to abstract out Dynamics AX schemas
o This is particularly important when dealing with a difficult schema, such as the Commerce Server Orders schema. The mapping between the CS Order schema and the AX Order schema proved to be quite complex. Because I did not include a canonical format, each time the Commerce Server schema changed, I had to rework a number of transformations.
o Potential issues with reworking the complex transformations outweigh the additional level of indirection caused by a canonical message.
%u00d8 Consider separate BizTalk project for the AX schemas
o This approach is certainly better than mixing the AX schemas with the internal schemas.
BizTalk Administration Experiences
%u00d8 Create a separate Application for the Dynamics AX artifacts and associate this application to the main application
o This will allow the AX artifacts to be used in other applications
o Consider situations where the Standard edition of BizTalk Server 2006 is installed. This edition allows for only five applications.
Implementation Experiences
%u00d8 The string “Dynamics” in namespace name for either the Schema or the Orchestration project will cause compilation error in any orchestration containing a Dynamics AX message
o Namespace was “Company.Integration.Dynamics.AX.Schemas” and “Company.Integration.Dynamics.AX.Orchestrations”.
o The compilation error occurs when importing the EntityKey or EntitySet schema from the Dynamics AX assembly
o The solution was to remove the string “Dynamics” from the namespace
%u00d8 Sync operation is the recommended option
o This was recommended by Microsoft
o I was not able to get the asynchronous operation to work
%u00d8 EntityKey and EntitySet Messages
o EntityKey is the response for operation involving a single entity
o EntitySet is the response for operation involving a collection of entities
o Both entities contain the internal keys from AX and are really only useful for bi-directional interfaces
The remaining seven articles in this series will review other experiences in more detail.