Monday, April 28, 2008

Wednesday, April 16, 2008

What’s New in Dynamics AX 2009 / Dynamics AX 2009 Features

Sr.No.

Feature

Description

1

Layers

3 new Solution Layers SL1, SL2 and SL3 have replaced DIP, LOS and LOP to enable Microsoft Dynamics Industry Solutions deployments. DIS Layer renamed to HFX layer which can be used for hotfixes.

2

WorkFlow

New node in AOT named Workflow. It enables to create workflow templates, categories, tasks and approvals.

3

Business Connector

COM Business Connector no longer supported in future release although a command-line interface is still there for installing the same.

4

Best Practices check

New Best practice checks have been updated for Dynamics AX 2009

5

VCS Integration

Integration with more VCMS systems. New features for TFS Integration

6

XML Documentation

XML Documentation can be written in X++ source code to document classes, tables and table methods and this can be extracted from the source code to create an XML Documentation file.

7

Enterprise Portal

A new framework for Enterprise portal wherein controls for EP can be developed using VS IDE

8

Reporting Tools

Integration with Visual Studio IDE to develop and deploy reports. Reporting projects created in VS IDE can be packaged and added to AOD

9

Reverse Engineering Tool

Supports new model type to generate .erx files that can be used to create an ER data model.

10

Navigation Pages

Includes primary list page, secondary list page, content page and area page to view data records and open forms.

11

Queries and Views

AOT Query object enables construction of query that represents union of two or more existing datasources. AOT View object enables to use query as datasource

12

TimeZone Support

Timezone support and new datatype utcdatetime

13

Composite Query

Composite queries uses another query as it's datasource and helps in reusing code and objects.

14

Cross Company Support

A cross company query can return data for several companies in a single run. Central to this functionality is the new X++ keyword crossCompany, and the new property AllowCrossCompany on Query objects in the AOT.

15

X++ SQL Enhancements

SQL statements in X++ have been enhanced to bring them closer to the functionality of industry standard SQL. It includes better support for inner and outer join clauses, better group by and order by clauses, and better support or using variables as a source of data to be inserted or updated.

16

CLR Interop Enhancements

ByRef keyword for out or ref parameters, .NET Framework array and Enum Support

17

Debug Batch Jobs on Server

In Microsoft Dynamics AX 2009, the default is for each batch job to run on the Application Object Server (AOS). Yet the developer might want to debug the batch from his client computer. The utility AxDebug.exe can now do this.

18

AT.exe for updating Cross References

The Microsoft Windows Task Scheduler interface (or AT.exe) can be used to run a cross-reference update beginning in the late evening, so it completes before morning

19

E-Signature support

Microsoft Dynamics AX 2009 does not provide a complete system for the capture and processing of electronic signatures. But it does provide a kernel event and an editable event method. These can be the foundation for an electronic signature subsystem to be developed by partners

20

AIF

CRUD (Create, Read, Update & Delete) operations supported, AIF Framework enables developers to expose X++ business logic as WCF services, ASMX webservices replaced with WCF Services, consume web services




Wednesday, April 9, 2008

Debugging AX via .Net Business Connector

In this blog, I will take you through a step-by-step debugging approach using .Net Business Connector.
Note: The .Net code is extracted from a custom solution which we built to hear to MSMQ messages and then logon to AX and pass on the message to an AX API.
Step1:
Launch Vision Connector Test Application (Start => Programs => Vision Connector => Vision Connector Test Application).
Note: Make sure message queues are set properly in Send queue and Receive queue.






Step2:
Launch TestVisionConnector.sln (.Net Solution) using VS 2005. Insert a breakpoint by going
to the event VICO_NewMessageXML and press F9 key.

Step3:
Press F5 key inorder to initiate the debugging process. Now, a window will open and the status of the title bar for the project will show Running.









Step4:
Launch Microsoft Dynamics AX and Navigate to AOT/Classes/ VCMSMQMgt as shown below:
Tip: Press “Ctrl + D” key to launch AOT (Application Object Tree) in AX.










Step5:
Open Class VCMSMQMgt and go to the method NewMessageXML and press F9 key to insert a breakpoint.







Step6:
Launch Debugger in AX by going to Tools => Development tools => Debugger as shown below:











Step7:
This should open a new Debugger Window as shown below:








Step8:
Start the communication flow by sending a request from the test application i.e. by pressing the “Send Request to Queue” button shown below:














Step9:
Automatically, the breakpoint will be hit in TestVisionConnector application. (.Net solution).









Step10:
Step over the code line by line by clicking the F10 key till the execution reaches the following line:
axobj.Call("NewMessageXML", InXML.xml);










Step11:
Now, press F11 key to step in to AX Debug environment.









The above steps completes one cycle of debugging through the entire communication chain between Vision connector test application to Dynamics AX routing via .Net code.

Friday, April 4, 2008

GetTempFileName using WinAPI in X++

This job does the same task of getting file name but by using WinAPI. It also prefixes 'DAX' (any tag) to your newly generated file. Njoy!

GetTempFileName using CLR Interop

This job is used to get temporary file. It creates a random temp file in the system and retreives it.


Wednesday, April 2, 2008

How to display a custom form at startup

Add the following code in the startupPost method of the Info class.

How to test AIF in Dev or Test env

static void RunAIF(Args _args)
{
AifGatewayReceiveService agrs = new AifGatewayReceiveService();
AifInboundProcessingService aip = new AifInboundProcessingService();
AifGatewaySendService agss = new AifGatewaySendService();
AifOutboundProcessingService aop = new AifOutboundProcessingService();
;
agrs.run();
aip.run();
agss.run();
aop.run();
}