Importing data to AX from a fillable PDF form

Recently, a requirement came up for importing data from a fillable PDF form into Dynamics AX 2012.  With the right tools, this is actually quite straightforward.

PDF Labs have a product called PDFTK Server, which is a free download.  However, if you need commercial support from them that’s a paid service.  Likewise, if you want to redistribute the software and your software is not licensed under the GPL (Hint, Dynamics AX is most certainly not GPL-licensed…), you’ll need a redistribution license.  The link to the license is here, and the product download is here.

Continue reading “Importing data to AX from a fillable PDF form”

Adding retained messages to Adafruit's MQTT library

Recently, when building a weather station based on Adafruit’s Huzzah ESP8266 breakout board, I needed the ability to send messages that should be retained on the MQTT server.

I am using mosquitto on my home server, acting as a message broker.  My weather stations send messages to it and these are then forwarded to the subscribers who have signed up for them.  At the moment, these subscribers are a weather logging system, a current weather display panel on the different computers at home, and, occasionally, a command-line client used for troubleshooting.

As the weather stations are battery powered, they will not run always on, always connected, but they wake up every few minutes, check the weather, and transmit the results to the MQTT server before they go to sleep again.

Any subscribers will receive these messages as soon as they are sent.  However, when a subscriber starts running and connects to the MQTT server, it will not receive any messages until the relevant weather station sends one.  By default, there’s no concept of the most recent values.  This is kind of inconvenient for the weather panel application on the computers, as they will not show any values until the next time the weather station wakes up.  Depending on the battery levels and configuration, that could be quite a while…

Continue reading “Adding retained messages to Adafruit's MQTT library”

Dynamics AX CIL is not incremental, just mental…

In Dynamics AX 2012, you may some times get this error message when generating CIL code:

Cannot create a record in SysXppAssembly (SysXppAssembly). The record already exists.

I see this quite frequently when generating incremental CIL, to the point where I consider incremental CIL to be thoroughly broken.  Do yourself a favour and do full CIL generation every time, you will save time in the long run from not having to troubleshoot weird and wonderful errors…

Also, I have made it a habit to delete the files directly under the xppIl folder for the relevant AOS when this happens.

Another form trick, copy-down in grids

A function I have often been asked for, but which does not exist in standard Dynamics AX 2012 is copy-down, or the ability to press a key on the keyboard to copy values into the currently selected field from the row immediately above it.  In my implementation, I have chosen the F11 key, as it was not used for anything else.

The function will be available on all grid-based forms, even in the table browser.

Continue reading “Another form trick, copy-down in grids”

Show environment bar in Dynamics AX forms

When working with multiple Dynamics AX environments, it’s quite useful to have a visual reminder of which environment you’re working in.

It is possible to use the instance name in the client configuration to provide this hint, but the instance name is not validated, nor does it indicate to the client which instance to connect to.  The connection is established only based on the host name, port name and WSDL port.  It is, in fact, possible to specify anything at all as the instance name:

My production server does NOT have an instance named MickeyMouse.  I promise…  Really…

Continue reading “Show environment bar in Dynamics AX forms”