≡ 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

 

ServiceGroup

 

Right click and deploy the service group.

 

Deploy Service Group

 

 

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

VendorServiceGroupInfolog

 

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

ConsumingAiFservice

 

Now add copy wsdl to generate Schemas.

Select metadata Exchange (MEX) endpoint

 

MetaData

 

 

Click next and generate schema

 

Schema Generation

 

Wsdl

 

 

Schema is generated.

 

VendorGroupSchema

 

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.

 

VendorGroupSchemaDetail

 

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.

 

ServiceSchema

 

 

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

 

CustomSchema

 

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

 

 

Bindings:

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.

ServiceOperations

 

The operations in BtsAction will be generated as follow.

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

 

http://WIN-IKPOSIU2SGD:8101/DynamicsAx/Services/VendorGroupService/read.

 

Settings for BizTalk Send Receive port is as follow.

 

NetTCPBindings

 

 

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.

1234

 

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" />

</BtsActionMapping>

Mappings:

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

 

 

Input_To_EntityList

 

Entitylist_to_VendGroupRequestRead

 

 

Create Method:

In the case of Create Mapping is as follow.

 

InputSchema_to_VendorGroup

 

VendorGroup_to_CreatVendorGroupRequest

 

Delete Method:

 

EntityList_To_DeleteRequest

 

 

 

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.

 

FindMessage

 

 

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.

 

FindMessage

 

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



				
{ 0 comments… add one }

Leave a Comment