Skip to main content

Posts

Showing posts from April, 2016

Expose AX 2012 AIF services (SOAP) as RESTful web services

A colleague of mine Fabio Filardi has published his work on Github. It has two samples for the Expense services and UserSession services. He has documented it really well. Get onto it if you are going to expose your web services as RESTful. It does save you a lot of time. Github project https://github.com/ffilardi/AxaptaAPI Documentation under wiki https://github.com/ffilardi/axaptaapi/wiki   Here are some additional notes. Microsoft has documented it really well too. So, get your head around the concepts and the above links should be of great benefit to you. This is a good summary of the Azure service bus adapter with AX. http://blogs.msdn.com/b/aif/archive/2013/04/29/aif-windows-azure-service-bus-adapter.aspx Whitepaper from Microsoft on how to extend it. Microsoft provides an example by talking about mobile app. Concept is how to expose your web services securely outside the domain. https://www.microsoft.com/en-us/download/details.aspx?id=38413 Fabio has written a blog on

Multi threading–Adding run time tasks

Last year I posted about multi threaded operation using BOF Also uploaded a sample project you could use to test it out or use as a template. Multithreading with Business Operation Framework [AX 2012] One thing I picked up after testing it in a large scale project which required scheduling it on a non default (blank) batch group. This had a few issues: Originally I was using the  batchHeader.addTask(this.newTaskController(recIdSet)); Below are the two issues of using this method like this. 1. There is a known issue to set the controller execution mode to be Synchronous. Whitepaper: https://www.microsoft.com/en-us/download/details.aspx?id=29215 Screenshot of the known issue. This separates it as its own batch job which disappears after it is finished. This is not the desired result when we are adding tasks at runtime. We want to keep them as tasks under the main batch. 2. Another issue is it will set the batch group as the default batch (blank). In my case the blank batch g

AX7 Recurring File (folder) integration

The new Dynamics AX is 100% in the cloud and that means some complication when it comes to file based integration. The AOS is hosted on the cloud and has no way of accessing folders. What we have is web services which we can stream a file to. This is explained nicely in the wiki site. https://ax.help.dynamics.com/en/wiki/recurring-integrations/ Microsoft has released a github project to process local/network folders and stream to the web service. https://github.com/Microsoft/Dynamics-AX-Integration Run the DIXF sample .NET project and you will get this window. The future where I see this heading is using Azure Logic Apps . Azure Logic Apps allows you to integrate with multiple connectors. I hope we get AX as one of the connectors. Today you can make it work using a wrapper web API app with swagger. Then the fields are recognized as part of the user interface. These comments around Azure Logic is personal and not from Microsoft. The future is looking really cool.

Dynamics AX 2012–How to investigate SSRS errors

Recently I was investigating an issue when printing customer statements, randomly I was getting errors. The error wasn’t really helpful as it gave a generic error in the infolog. So, in this post I will explain how to investigate SSRS errors and hope it helps others out there. What is the Error An error occurred rendering the report. Accessing the report server URL  caused an error. The remote server returned an error: (500) Internal Server Error. Microsoft.Dynamics.Ax.Xpp.ErrorException: Exception of type 'Microsoft.Dynamics.Ax.Xpp.ErrorException' was thrown.    at Dynamics.Ax.Application.SrsPrintMgmtController.Outputreports() in SrsPrintMgmtController.outputReports.xpp:line 96    at Dynamics.Ax.Application.CustAccountStatementExtController.Runprintmgmt() in CustAccountStatementExtController.runPrintMgmt.xpp:line 129 Step 1 – Check SSRS log files The first place is obviously the event viewer. That generally won’t give that much more information from my experience when it