Saturday, 6 September 2014

Creating Custom Web Service AIF 2012

Microsoft Dynamics AX 2012 Application Integration Framework – Custom Web Service (Strongly typed)
Purpose: The purpose of this document is to illustrate how to create and use Microsoft Dynamics AX 2012 AIF Custom Web Service in integration scenarios for certain type of custom data.
Challenge: Data model changes in Microsoft Dynamics AX 2012 related to high normalization and introduction of surrogate keys made some integrations more complex. In fact the process of custom AIF Web Service creation remains the same. Generic Document AIF Web Service can be used in Microsoft Dynamics AX 2012 to synchronize different (may be similar) types of custom data in dynamic, loosely typed fashion. However in the case when you need to synchronize certain types of custom data with complex data sets or where a lot of custom business logic and validations is involved it makes sense to create dedicated AIF Web Service(s) which increases code readability and facilitates maintenance effort.
Solution: Microsoft Dynamics AX 2012 out-of-the-box ships with number of AIF Web Services which can be used in integration scenarios. In this simple example I'm going to synchronize Customer groups information with Microsoft Dynamics AX 2012 from external .NET application. Please note that there is no Customer groups AIF Web Service in Microsoft Dynamics AX 2012 out-of-the-box. That's why in this walkthrough I'll demonstrate how to create and call custom Customer groups AIF Web Service in C#.NET Console application in order to create a customer group in Microsoft Dynamics AX 2012. Similar logic can be used to create another custom AIF Web Service for any particular type of custom data. 
 
LINK 
Data Model:
Table Name
Table Description
CustGroup
The CustGroup table contains a list of groups into which customers can be added. Every customer must specify a customer group with which it is associated. The group contains information such as default payment terms and settlement periods, and is also used for reporting.
Data Model Diagram:
Please note that I'm going to synchronize Customer groups information with Microsoft Dynamics AX 2012 from external .NET application and I only want to expose 2 fields: CustGroup andName
Walkthrough:
Custom AIF Web Service in Microsoft Dynamics AX 2012 is based on static query. That's why the first step in creating custom AIF Web Service is data set (query) definition.
Query
After query has been defined you can launch "Create document service" Wizard in Development workspace by going to Tools > Integration Application Framework > Create document service
AIF Document Service Wizard: Select document parameters
Please note that AxdCustomerGroup query is specified as a basis for custom AIF Web Service creation
AIF Document Service Wizard: Select code generation parameters
Please note that create operation will be enabled for custom CustomerGroupService AIF Web Service
AIF Document Service Wizard: Generate code
AIF Document Service Wizard: Completed
Project
Please note that upon completion of Create document service Wizard the system generatedAxdCustomerGroup X++ project
Namespace
By default custom CustomerGroupService AIF Web Service namespace is empty, that's why I define it right after AIF Web Service creation
Service group
In order to deploy custom CustomerGroupService AIF Web Service I included it intoAccountsReceivableServices Service group
Inbound port
After you deploy AccountsReceivableServices Service group correspondingAccountsReceivableServices port will be activated
Service Reference:
After successful deployment you can consume custom Customer groups AIF Web Service from .NET application by adding Service reference to it. Please note that CustomerGroupService AIF Web Service exposes create operation which will be used to create Customer groups information in Microsoft Dynamics AX 2012.
Source code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplication1.ServiceReference1;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            CustomerGroupServiceClient client = newCustomerGroupServiceClient();
            CallContext context = new CallContext();
            context.Company = "ceu";
            AxdCustomerGroup document = new AxdCustomerGroup();
            document.CustGroup = new AxdEntity_CustGroup[1];
            document.CustGroup[0] = new AxdEntity_CustGroup();
            document.CustGroup[0].CustGroup = "Alex";
            document.CustGroup[0].Name = "Alex";
            try
            {
                EntityKey[] entityKey = client.create(context, document);
                Console.WriteLine("Done!");
            }
            catch (Exception e)
            {
                Console.WriteLine("Error:" + e.Message);               
            }
            Console.ReadLine();
        }
    }
}
Result:
Dynamics AX – Customer group

Summary: For the purposes of complex integration scenarios dedicated custom AIF Web Services in Microsoft Dynamics AX 2012 can be created in order to synchronize custom data. In this walkthrough I used simple example of Customer groups AIF Web Service to illustrate the process of custom AIF Web Services creation in Microsoft Dynamics AX 2012. Custom AIF Web Service data set is defined based on static query in Microsoft Dynamics AX 2012.  For example, in order to synchronize Customer groups and Vendor groups information with Microsoft Dynamics AX 2012 from external .NET application you may implement static, strongly typed integration scenarios meaning that you may create dedicated custom AIF Web Services for each type of custom data which increases development effort. However it makes perfect sense to do so for complex data sets and in the case where a lot of custom business logic and validations is involved. As the result by having dedicated AIF Web Services code readability will be increased and maintenance effort will be facilitated. Alternatively for relatively simple integrations with simple data sets Generic Document AIF Web Service can be used which allows for dynamic, loosely typed integration scenarios.

No comments:

Post a Comment

Labels

#veryusefulcode (1) AIF (8) AOT Maps (1) Args (1) Ax 2009 Reports (2) AX 2012 navigation (1) Ax 2012 Interview Questions (1) AX 7 (2) AX Architecture (1) Ax Backup (1) AX Workflow (2) AX2012 (1) AX2012 R2 (1) Ax2012R3 (1) AX2012R3 Dynamics Connector Step by Step Installation and Configuration (1) AX2012R3 EP Step by Step Installation and Configuration EP R3 (1) AX2012R3 HelpServer Step by Step Installation and Configuration (1) AX2012R3 Rapid Start Connector Step by Step Installation and Configuration (1) AX2012R3 Report Server and Analysis Server Step by Step Installation and Configuration (1) AX7 (1) Best practices (1) Blocking user to enter (1) Collection Classes (1) Container (1) D365FO (3) Data Migration Frame Work ax 2012R3 (1) Deleting duplicate Record from Table – Ax2012 (1) Delivery due date notification workflow in Ax 2012 (1) Development Steps EP (1) Dimensions (1) DIXF (1) DMF in Ax 2012 R3 (1) Dynamics Ax 2012 Interview Questions (1) DYNAMICS AX 2012 INTERVIEW QUESTIONS PART 2 (1) DYNAMICS AX 7 (1) EDT relation Migration Tool (1) EP AX 2012 (1) Ep Lookup (1) Error (1) Event Handler (1) F5 (1) File Handling (4) Filter on AX2012 Listpage (1) filtering (2) financial dimensions in AX 2012 (3) form (1) images (1) Installation and Configration (4) Installation and Configuration (11) Installation of Management Reporter 2012 for AX 2012 (1) Interaction class in ax 2012 (1) Interview Question (1) Interview Questions For Ax 2012 (1) Invent DIm (1) Jobs (2) license (1) List page and form menuitem enable code (1) Methods (1) microsoft Dynamics AX 365FO (1) Number Sequence Generation – AX 2012 (5) Number Sequence2012 (1) OLTP-OLAP (1) Passing Args (1) Passing form caller and menu item caller in ax 2012 (1) Passing Multiple Records Args (1) Posting in Ax 2012 (1) POSTING PURCHASE ORDER (1) Query (1) Query Filter Form (2) Query Ranges in X++ (1) Question and Answer (1) Report (1) Reports Controller class (1) RLS in ax 2009 (1) SALES ORDER IMPORT/EXPORT FRAMEWORK BY DMF (1) Security (1) security roles (1) Security Sysqueryrangeutil (1) Sharepoint 2016 (1) SQL SERVER (1) SSRS (2) SSRS Reports Controller class (2) Table collections & Virtual company (1) Time (1) TIPS AND TRICKS (1) Web service AIF (3) Web Services on IIS (AIF) Step by Step Installation and Configuration (1) workflow ax2012 (1) Workflow installation (1) Workflow Method (3) X++ (1)