Improve AX performace by fixing bad Query plans

Sometimes the Purchase invoicing department has complained that posting took a very long time to complete. We could correlate this with the slow performing SQL statements alert explained in my previous post to identify the cause, now it is time to improve AX performace by fixing bad Query plans. My colleague, Peter Prokopecz provided some great insights on resolving this problem.

Either an AX trace, or the SQL alert could reveal the bad code. In our case it was the standard functionality of matching Tax transactions with the General journal entries, which can be found in \Data Dictionary\Tables\TaxTransGeneralJournalAccountEntry\Methods\create. It is a very large insert_recordset statement with multiple inner and exists joins:



By |2016-01-08T17:57:45+01:00January 8th, 2016|Categories: AX 2012|Tags: , , , , , , , , |4 Comments

AX clients with an outdated kernel executable version (SCOM, Blocking)

There are AX installations that do not fully rely on Remote Desktop Services technology, but rich clients are used which may connect to the AX AOS with a potentially outdated Ax32.exe kernel binary version. If a new kernel binary hotfix is installed on the AOS, then the clients must also be patched up, since the communication protocol could have been changed. It is absolutely crucial to get the kernel hotfix applied to the AX clients, but it is not always that convenient to find whom to patch.

If someone connects with an old kernel version, the AX AOS creates an event log entry, that we can get notifications for if we use System Center Operations Manager (SCOM): Application warning: Object Server 01: Internal version mismatch. Microsoft Dynamics AX client from COMPUTER (6.0.1108.3733) tried to attach with 6.0.1108.7309 revision of kernel

In SCOM 2012 AX management pack the alert is generated as “Internal AOCP revision mismatch”, and the actual computer name can be seen under View additional knowledge > Alert context > Event data.

The next step is to block access for these clients.


By |2015-11-23T17:40:40+01:00November 11th, 2015|Categories: AX 2012|Tags: , , , , |0 Comments

Image resources in reports

When I was playing around with images and resources in AX, I have found that Menu nodes have an AOT property called NormalImage. On this property you can provide a file name which was imported into AX under the Resource node, so your module would have this image shown in the Main menu.

But when you want to use the resource in a report, the kernel does not associate your custom image with a resource ID, and you also do not have a property similar to the menus.

The only solution that you have is to add a Bitmap control to your report, then read out the data that is being stored under the node and return the container as a Bitmap value. Here is the code:


By |2015-11-23T17:56:58+01:00August 18th, 2010|Categories: AX 2009, AX 2012, Microsoft Dynamics AX|Tags: , , , , , , , |2 Comments

Non-visible fields in the Table browser

As developers and consultants often require the ability to check the content of hidden fields without writing a select statement / query, or taking a quick look in the database for retrieving information, I was wondering if there is a way to do that.

The SysTableBrowser class is using the FormBuildControl.addDataField(int dataSourceId, fieldId fieldId) method for bound and FormBuildControl.addControl(FormControlType controlType, str controlName) as an unbound control. These methods are on kernel level, and they are forcing to hide any bound controls where the field property Visible is set to No.

We can add the hidden fields as extra columns in the SysTableBrowser class with a highlighted color, but as the display grid is tied to the datasource we are using it is not possible to populate it with the right values per record.


By |2015-11-23T18:06:51+01:00April 19th, 2010|Categories: AX 2009|Tags: , , , , , , , |2 Comments
Go to Top