Find missing objects behind menu items

As part of our code cleanup exercise we have discovered that there were menu items pointing to objects which no longer exists in our environments, ie. legacy reports which were upgraded to SSRS but their menu items were never removed.

The following job could be used to identify such missing objects for any of your menu items. I would also recommend to double-check the xRef references to find connected objects, like security privileges/roles, to completely remove whatever you do not need.


DAXRunBase / 2015-10-27 / AX 2012 / 0 Comments

AIF port changes without deactivating

For troubleshooting the Application Integration Framework in AX sometimes we have to enable logging of all XML document messages. However the AIF inbound ports cannot be edited by default without deactivating them first. It is a common misbelief that you need to do this.

If you deactivate and reactivate a port, in the background it just regenerates the server-side WCF settings in table AIFWCFConfiguration, that stores the XML string in a container field. Most of the values in there does not actually relate to a lot of fields that you should be able to change. In our case the LoggingMode field was in the scSC parent table of AIFPort.

What we could do instead of deactivating and reactivating our service in question to switch the logging on and off was to simply edit the record in the table browser, which does in fact take immediate effect and the logging will commence or get suspended once you save the row. Please keep in mind that for other fields such as user restrictions or service operations you should do your own research in a Test environment first to decide if it is safe to go ahead with the modification.

DAXRunBase / 2015-10-15 / AX 2012 / 0 Comments

SysOperation Framework Data contract parameter name

With so many new AX 2012 R3 implementations and upgrades and the soon-to-be-released AX 7 (Rainier) around the corner I thought it is time to get back in business to publish interesting articles, now using a new home for hosting my blog:

It is always recommended to write best practice error-free code, however in some cases Microsoft forces our hands to fall back to hardcoded values. This is the case with today’s topic as well, when we would like to override values in a SysOperation Framework Data contract.

The SysOperationServiceController.getDataContractObject() method has an optional parameter, where they expect the value of ‘_dataContract’ in the example below. However we can choose to refrain from hardcoding and extract the value with Reflection.


DAXRunBase / 2015-10-07 / AX 2012 / 0 Comments