Purpose:
The purpose of this document is to illustrate how we can develop AIF document service, what are the important methods available that can be overridden to do the customization and finally how we can consume/unit test the document service through an external .NET application.
Business requirement:
Ability to integrate Dynamics AX with external systems.
Assumptions:
Application Integration Framework (AIF) has been configured to process inbound and outbound messages.
Development:
- Create an AOT query. Prefix it with Axd to follow the naming convention for document service.
- Run AIF document service wizard to generate/regenerate:
- Service node
- Service class
- Document class (Axd class).
- Document object class
- Data object classes
- AxBC classes, if chosen
- Change namespace property of service node (optional).
- Generate incremental CIL.
- Register the service
- Create security privilege for each service operation (optional).
- Create an enhanced inbound port
- Choose an adapter
- File system adapter
- HTTP
- ISABEL SEPA credit transfer
- MSMQ
- NetTcp
- Windows Azure Service Bus
- Choose service operations
- Activate
Important methods:
- Axd class
- prepareForSave/prepareForSaveExtended method
- Validation code goes here. For example checkPurchParmTable in II7
- updateNow method
- Business logic to be executed post insert/update of document. For example, post receipt in II7.
- expandSurrogateForeignKeys method
- To automatically resolve the surrogate foreign keys to natural keys, so that user sees natural key in the XML instead of RecId.
- getSurrogateForeignKeyValue method
- To manually resolve the surrogate foreign keys to natural keys.
- prepareForSave/prepareForSaveExtended method
- AxBC class
- initMandatoryFieldsExemptionList method
- To make a field optional which is mandatory at the table level.
- initMandatoryFieldsMap method
- To make a field mandatory which is optional at the table level.
- set<FieldName> method
- To set default value of a field in service. This method calls parm<FieldName> method to set the default value.
- initMandatoryFieldsExemptionList method
Consuming service:
- Create console application in Visual Studio
- Add service reference
- Sometimes, setting some fields doesn’t work in C#. We use specified parm methods for them. For example:
- Course.Name = “Name”;
- Course.NameSpecified = true;
- Course.Description = “Desc”;
- Course.DescriptionSpecified = true;
