In Microsoft Dynamics AX 2012, the Application Integration Framework (AIF) underwent a number of dramatic changes and is now known as Services. There are more number of WCF service hosts and simplified forms and concepts.
There are new terms like Service Groups and Ports (Basic, Enhanced), which we need to understand.
Service group - collection of Services. Why would you collect multiple services under a group? Consider a case of creation of a sales order and customer specified doesn't exist in AX. You will need another service for creation of customer. Both these services can be now clubbed together under one Service group. Also, with a single WSDL, you only need to add one service reference in Microsoft Visual Studio to access all of the objects from the services in the Service group.
Ports - Erstwhile (read AX 2009) local endpoints, channels and endpoints have been consolidated into a port.
Basic port - created automatically as soon as you have deployed your Service group. Also, Basic ports are deployed as WCF services only to the AOS and use the NetTcp adapter.
Enhanced port - created manually. They give you several options around hosting, adapter types, document processing, error handling and security. The choices of adapter types are:
• File system adapter
• HTTP- To consume services over the Internet, you must use the HTTP Adapter and host services on IIS. IIS routes all service requests to the AOS. Regardless of the origin of the service request, Internet or Intranet, all the service requests are processed on the AOS.
• MSMQ - Similar to File adapter. For the URI of the Address and Response addresses browse to the directories that are mail queue directories.
• NetTcp- Use this adapter when you want to use a service on the Intranet and not on the Internet.
Using the File Adapter
In this example, you will configure an enhanced port to use the file system adapter. Then you will import a sales order using the port.
Overview of the task
1. Create a new enhanced port.
2. Set the Adapter to File system adapter.
3. Set the default file owner to the administrator account.
4. Add the SalesOrder create operation to the list of service operations exposed on this port.
5. Activate the port.
6. Create an xml document that contains a sales order.
7. Run an X++ job that runs the AIF classes and imports the sales order.
Step by Step Instructions
Create and Activate an Enhanced Port
Create and Activate an Enhanced Port
1. In Windows Explorer, create a
Services directory and inside of it create an Inbound and an Outbound
directory.
2. In Microsoft Dynamics AX under System
administration, click Setup, click Services and Application
Integration Framework, click Inbound ports and then click New.
3. Enter the name FileSystemAdapterPort
for the port.
4. Click Register Adapters to
ensure you see all of the adapters available in the environment.
5. Click Register services to
ensure you see all of the service operations available in the environment.
6. In the Address section for the
Adapter field, select File system adapter.
7. In the Address section for the URI
field, click the dropdown and navigate to the Services - Inbound directory.
8. In the Response address section
for the Adapter name, select File system adapter.
9. In the Response
address section for the URI field, click the dropdown and navigate to the Services
- Outbound directory.
10. In the Address section, click Configure.
11. Mark the Enable default file
owner and select the Admin user. Admin will be the default owner of
the xml files submitted to the Inbound directory.
12. Click Services operations.
13. From the Remaining service
operations list, select SalesSalesOrderService.create and click the <
arrow.
14. Click Close.
15. Click Activate.
16. Close the ports
form.
Create a XML File
1. In Windows, open Notepad.
2. Copy the
following to a new Notepad document:
(Note: Not able to display the below XML code in the blog, somehow displays junk characters, workaround i found is to use # in front of each row. Take care to remove the # in your actual code.)
3. Save the file in the Services - Inbound directory. Name the file SalesOrder.xml.
# ## # #Body #northamerica\dyndust #CEU #http://schemas.microsoft.com/dynamics/2008/01/services/SalesOrderService/create ## #/Body ## ## #DAT-000001 #2011-01-16 #en-us #PO123 ## #1001 #88.00 #ea ## #HD #01 #2 #42 #
3. Save the file in the Services - Inbound directory. Name the file SalesOrder.xml.
Create a Job
1. In the AOT,
create a new job with the following code in it:
AifGatewayReceiveService agrs = new AifGatewayReceiveService(); AifInboundProcessingService aip = new AifInboundProcessingService(); AifOutboundProcessingService aop = new AifOutboundProcessingService(); AifGatewaySendService agss = new AifGatewaySendService(); ; agrs.run(); aip.run(); aop.run(); agss.run();
2. Save the job.
3. Execute the job.
Verify the Results
In AX,
navigate to Sales and marketing, click Common, click Sales
orders and then click All sales orders. You should have a new order
created for the customer account 1101. If you do not have a new sales order in
Microsoft Dynamics AX, navigate to System administration, click Services
and Application Integration Framework and then click Exceptions to
see the exceptions logged.