≡ Menu

How to integrate Dynamics AX 2012 R3 AIF Document Service with BizTalk server

Purpose: Purpose of this post is help to Consume AIF Document service in BizTalk and call its method.

Assumption: that target audience has deep knowledge of BizTalk, mapping, schema and orchestration.


First of all you have to create service group that is gateway to your document service. For this post I have to consume VendVendGroupService. I create a new service group  in AOT and drop VendVendGroupService to that node as follow




Right click and deploy the service group.


Deploy Service Group



Wait for generate Increment CIL and Infobox shows deployment of All possible Service group



Now to System Administration module of dynamics Ax. Click on System Administrationè Setup è Services and Integration frameworkè inbound port.


InBound Port



Now create a visual studio project for BizTalk. There are three sub solution, One for Schema, Map and third for orchestration.


In Schema solution. Add the generate Items and then select consume wcf Service



Now add copy wsdl to generate Schemas.

Select metadata Exchange (MEX) endpoint





Click next and generate schema


Schema Generation





Schema is generated.




Go to Schema project and delete the Vendor Group Service Orchestration.



Required Services


Important Schema which will used in mapping.



EntityKeyList Schema has following fields which are used to set values in Request response methods.


Entity List Schema


This key value pair used for search , Field represent table field Name and value is search field.




VendorGroup schema is replicate of VendorGroup table, here we use SenderId is used legal entity where operation will perform.


If we see the Service Schema, here all request and response methods are generated.





One Schema I create to take input to Interface, and decide which operation is performed I called it for InputSchema.




This Schema will use for input to Interface. We will discuss it later when we start mapping one by one.




As compare to other wcf service, when we consume wcf service, empty binding files are generated, so we have create binding operations manually.

These operations are based on AIF service Object not AIF service Group, where I wasted hours on it.

Please consider the following screenshot for Service operations used in binding files.



The operations in BtsAction will be generated as follow.

Namespace +/+ExternalName+”/”+method name. All Action are similar. For example




Settings for BizTalk Send Receive port is as follow.





Pipeline settings:

Send Pipeline should be XML Transmit.

Receive Pipeline should be XML Receive.

Click on Configure Button and set as following.


WCF Settings.


Remember the Operation Name in SOAP action header mast be identical to Operation Name in logical port in Orchestration.



All action mapping is as follow.


<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<Operation Name="ReadOP" Action="http://schemas.microsoft.com/dynamics/2008/01/services/VendGroupService/read" />

<Operation Name="CreateOP" Action="http://schemas.microsoft.com/dynamics/2008/01/services/VendGroupService/create" />

<Operation Name="UpdateOP" Action="http://schemas.microsoft.com/dynamics/2008/01/services/VendGroupService/update" />

<Operation Name="DeleteOP" Action="http://schemas.microsoft.com/dynamics/2008/01/services/VendGroupService/delete" />

<Operation Name="FindOP" Action="http://schemas.microsoft.com/dynamics/2008/01/services/VendGroupService/find" />



I attached  screenshots for mapping used for calling AIF methods.


Read Method:


Read method is two-step process, first step map the input to Entity list, and then Entity list  to VendGroupReadRequest








Create Method:

In the case of Create Mapping is as follow.






Delete Method:






Update Method:

Update is little tricky, There is field in Update Request Schema, _DocumentHASH, This Field is hidden and every row has its unique value, without that row is did not updated. According to Microsoft Documentation, First you get /find required record using read or find method and then use response data to Update it. For saving time and for the sake of this tutorial, I just pic the_docuemntHash key form previously read response method and hardcode it in map. This is not generic way, but this solve the temporary and my wants to run the Update AIF document method.





Find method:

Find method is works wonder, if you want to search more than one or all records you can call Find method, where is field with Operation, where you can mentions, value Equal, not equal, greater then equal etc. I want to get all vendor group from Dynamics In response, so I sent its value “not equal”. Response message return all values.




The code of this tutorial is attached, you can download it from here.

{ 0 comments… add one }

Leave a Comment