Skip to content
* / softthoughts

Use AIF features or AMM features for integration?

When we are in a situation in which we need to integrate an Ax module with other Ax modules, or the Dynamics Ax application with other applications some solutions arise and some considerations need to be made.

(Some comparisons are made between the AIF and the AMM but with no intention to fully clarify the differences.)

One solution is the Ax Messaging Module (AMM). Generally speaking it tackles integration on a fine scale.

  • Ax modules can be integrated without direct knowledge of one another and without predefined processors or processing types (sync/async).
  • An Ax module can be integrated with other applictions like MSMQ, Biztalk, or … also without direct knowledge of one another and without predefined processors or processing types (sync/async).
  • A class message definition is the core definition for integration. A message doesn’t need to be mapped with a business enity. It can be of any type: a full customer entity, a processing status, an execution command… 
  • When message handlers process a message and an exception occurs, an exception message can be send just like any other message in the AMM. Because all kinds of message handlers can be subscribed to exception messages the exceptions can be brought visible easily.

All these aspects show some light weight characteristic of the AMM and put it in a strong position to provide a uniform way to introduce the messaging concept in the Ax application and cross applications.

The Application Integration Frame (AIF) also tackles integration but in a more coarse grained way than the AMM.

  • The focus of the AIF is mainly on providing and consuming services between applications like MSMQ, Biztalk, Web service providers…
    • Compared to the AMM: Integrating  different Ax modules with loose coupling is not easy in the AIF. The focus of the AIF is on application integration.
  • Services that Ax modules provided can be called from x++ in a strong coupling manner.
    • Compared to the AMM: In the AMM no knowledge is required of other modules. The business logic of other modules can be called in a very loose coupling manner.
  • (Document/Web) Services are responsible of adding, deleting, quering, or changing data in the Dynamics Ax database. A table is the core definition for integration.
    • Compared to the AMM: In the AMM the core definition for integration is a class instead of a table.
  • AIF provides an easy way to provide quickly (no coding) services for other applications so they can do CRUD operations on the Ax tables  (enitities). 
    • Compared to the AMM: The AMM provides no quick way to do these operations on tables. The AMM is a frame where tables are not positioned as important data containers, classes are. Providing those services requires coding them for every table. Delivering data of one or more Ax tables (mostly business data) to another application is in the AMM less flexible than the AIF.
  • In the standard Ax package the focus of exchanging data is on business entities. This is the most important data of a business to exchange between applications.
    • Compared to the AMM: Any data that needs to be exchanged can be exchanged inside or outside Ax easily with the AMM without using tables and so table operations.

The post about Event Driven Architecture describes how events  (messages) can be seen as extensions of services. In the same way the AMM can be seen as an extension to the AIF. Although AMM certainly doesn’t replace the AIF at all. It is just a different way to tackle problems and so with different design characteristics. With the AMM a shift is made from tables as the main data containers (AIF) to classes as the main data containers (AMM). The message data in the AMM is not data that essentially is required to be queried. In the AIF the data are mainly business entities which probably need to be used at different moments in time and for maybe different business processes. In the AMM it are just messages with a short life span, with in its essence no intention to have its data to be stored for flexible querying. The AMM is a frame for carrying messages and processing messages, like the temporary messages in our nervous system which carry information and initiate activities.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: