Skip to main content

Posts

Showing posts with the label AX2012

Daxeam Mobile Solution Released on Apple App Store and Google Play Store

I am very happy to say Daxeam Mobile is now available on Apple App store and Google Play Store. Daxeam Mobile fully working on both Dynamics 2012 and Dynamics 365 for Finance and Operations, Enterprise Edition. Daxeam is an Enterprise Asset Management (EAM) solution available exclusively for Microsoft Dynamics AX 2012 and Dynamics 365 for Finance and Operations, Enterprise Edition. The Daxeam solution extends the functionality of AX, delivering integration to EAM across Projects, Inventory, Finance and Fixed Assets. Some key items to note about the Mobile solution: Daxeam Mobile is an application built from the ground up to work with the Daxeam Login is managed security via Azure Active Directory Works for both AX2012 and D365O Offline capable – has sophisticated sync capabilities to download your data locally and syncs back up when connection is available Features available Asset hierarchy Asset management such as meter updates, view attributes, structures and related history Work ord...

Hybrid connection - Web Api App for AX 2012 to Azure-part 4

This is the final post of this series. Web Api App for AX 2012 to Azure–Intro Deploy a Web Api App for AX 2012 to Azure–part 1 Application settings - Web Api App for AX 2012 to Azure-part 2 Authentication - Web Api App for AX 2012 to Azure-part 3 Hybrid connection - Web Api App for AX 2012 to Azure-part 4 (this one) In this post we will set up a Hybrid Connection. This is basically a listener that sits on your on-premise server. It will expose internal port to Azure. More information on Hybrid connection on Microsoft’s site. https://docs.microsoft.com/en-us/azure/biztalk-services/integration-hybrid-connection-overview In your Api App, click on Networking. Then click on “Configure your hybrid connection endpoints”. First download the connection manager. Install this on your on-premise server that you want to install the listener. You don’t have to run the connection manager just yet. Set up the hybrid connection by clicking on the “Add hybrid connection” Click on the “Create new hybrid...

Authentication - Web Api App for AX 2012 to Azure-part 3

Lets set up the authentication in this post. You should always secure your application and never leave it exposed out to the web. Click on Authentication menu and turn it on. In the drop down, select Azure Active Directory. In the Authentication providers click on Azure Active Directory to start configuring it. Select the Express mode. This will create an web App registration. Once authentication is configured. Lets set up a native Application registration. This step is only required if you are trying to communicate to the web service via a desktop applications, mobile application, third party tools to access your web services. More information on application permissions and authentication on the Microsoft article. https://docs.microsoft.com/en-au/azure/active-directory/develop/active-directory-authentication-scenarios Navigate the the Active directory menu and click on Application permissions. You will see the “Web app/API” application registration. We will create a Native application...

Application settings - Web Api App for AX 2012 to Azure-part 2

Last post showed how to publish your solution to Azure. This post will show you where to modify the the application settings. In visual studio you would be modifying the web config file. In the cloud you will modify the Application settings. Find your Api App. Click on Application settings. Scroll down to App settings.

Deploy a Web Api App for AX 2012 to Azure–part 1

Continuation from previous post. In this post I will show how  publish your solution to Azure. I assume you have followed the instruction from the GitHub wiki to download and configure. https://github.com/ffilardi/AxaptaAPI/wiki Now that you have done that. Lets deploy. Create a new Api App. You might have to search for it if its not available on the menu. Give it a name and select a Resource Group. Obviously pick a data centre location that is close to your AOS. If I am not sure, I like to use this site to find the closest with the lowest latency. http://www.azurespeed.com/ Now you have an empty Api App. Grab the Publish file by clicking the “Get publish profiles”. This is not necessary but if you have other developers who don’t have access but you want them to publish. This one of the ways. In Visual Studio right click on your project and click Publish. Follow the wizard. You can sign in and select the Azure resource to deploy it to. Otherwise, use the publish file to import and ...

Web Api App for AX 2012 to Azure–Intro

Last year I did a plug for a colleague who had developed this super nice solution which you can use to expose your AIF SOAP services as RESTful services. http://dynamicsnavax.blogspot.com.au/2016/04/expose-ax-2012-aif-services-soap-as.html Fabio has done a great job in sharing a great piece of work and also documenting it really well. What is missing is to take it to the next level. So, in a series of posts, I will show how to deploy this to Azure via Azure Api App and communicate with your on premise AOS. There are many benefits to this solution in the cloud Integration with Azure Logic Apps – this uses swagger and Logic Apps will work really nicely Expose for 3rd parties to securely integrate with your AX solution No need setting up complicated IIS/Firewalls/DMZ servers etc. Use Azure Authentication without a need to build anything Scale easily with the cloud Allows you to build mobile apps

Azure Logic with AX–callable endpoint

There are lots of ways to work with Azure Logic. This will be my first of many hopefully to show you how you can use Azure Logic with AX. Have a read of this post from the Azure Logic team first. It explains how you can create a callable endpoint in Azure Logic. Logic apps as callable endpoints In my post I will show you how you can use AX to call an Azure Logic endpoint. (I am not a graphics guy but the little fire on the end of the rocket is my addition) First start by writing a job that sends a post message to request bin . Request bin is a good site which you can use to send a message to it and it displays the results in a readable way. Navigate to request bin and copy the URL into the job. Then run the job to see the result. static void _jsonJob(Args _args) {     RetailWebRequest    request;     RetailWebResponse   response;     str           ...

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 bat...

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 ex...

KB3034554 - Ledger journal performance [AX 2012]

A bit of a spotlight on this KB. I wasn’t aware of for some time and now it is included in AX2012R3CU9. Problem was that each line insert/update/delete caused a tax calculation. This was more prominent when importing large journals (several thousand lines). The solution Microsoft provides in this KB is a technical solution. It gives you the ability to ignore tax calculations if you wanted to do it while importing (via AIF or custom code). I have written something previously that discusses this. http://dynamicsnavax.blogspot.com.au/2014/04/tips-to-improve-ledger-journal-import.html   https://fix.lcs.dynamics.com/Issue/Resolved/616114?kb=3034554&bugId=3360809&qc=0872aea67f72bae9e4f30e1e2f653e6071a7556b6589633dd4fdf521cd720f5b Note: This new field is not part of the DIXF journal entity. Here is a work around. Because the Fields in the query are set to Dynamic=No. Lets add it ourselves Right click and add the field. Refresh the target entity by either deleti...

“Error in getting SID” when running Named user license count report [AX 2012]

Recently I tried running the Named user license count report and got this error. “Error in getting SID” From the error I know what the problem is. One of the users can not be found in Active directory. I wrote a quick job to find me the invalid users. static void navax_findBadUserNames ( Args _args ) { UserInfo userInfo ; container con ; ;    while select forUpdate userInfo where userInfo . Enable && userInfo . AccountType != UserAccountType :: ADGroup { con = SysUserLicenseMiner :: getUserRoles ( [ userInfo . Id , userInfo . company ] ) ; if ( conLen ( con ) == 0 ) { warning ( strFmt ( "Userid: %1, username: %2" , UserInfo . networkAlias , UserInfo . name ) ) ; } } } You will get something like this in the infolog.

Bringing copy company back [AX 2012]

Back in 2013 I wrote a blog post on how to duplicate a company. I basically summarised Microsoft's guide on MSDN. http://dynamicsnavax.blogspot.com.au/2013/07/duplicate-company-in-ax-2012.html The big issue with those steps are that it is very manual and can scare a lot of people. Imagine having to copy a company set up for 10 plus companies. This can be very tedious and time consuming. Plus there are some references that have to be set up manually like the journal names voucher series. So, why not automate. I have put my project on codeplex which you can download and use (READ here carefully). User guide Download the class from https://dax2012copycompany.codeplex.com/ under source codes tab Import it into your AOT Run the class NAVAX_CopyCompany – Right click Open. From company – Enter the from company id To company – Enter the new company id (if company doesn’t exit it will create it) Use record ID compression – RecIds are recreated and in sequence Release produc...

Remember Index Hint is deprecated [AX 2012]

I still see code around that uses the Index Hint. We have to remember that it has been deprecated for a long time now and is ignored. http://technet.microsoft.com/en-us/library/dn507158.aspx Item Description Reason for deprecation This feature was rarely used. This feature began to create complications in the evolving development environment, so the feature was removed. Replaced by another feature No. There is no supported replacement for this feature. Modules affected This feature was not particular to any application module. Changes to installation This change does not affect application installation. Changes to upgrade Any legacy custom X++ code that uses the index hint clause still compiles and runs in Microsoft Dynamics AX 2012.

Manipulate the controls on a list page [AX 2012]

With list pages in AX 2012 where there is no code on the form. The right way is to have the code in the ListPageInteraction class. With the ListPageInteraction class – manipulating controls is a little hard because there is no obvious formRun or controls to manipulated. You can do basic enabling/disabling but not full control. Below I will show how you can get the formRun. Below screenshot is what I had developed recently - where I added attributes dynamically to a list page. So, that it can be sorted and filtered on. I won’t give out the full code just yet. I might do it at a later time. :-) But I will give code snippets on how I manipulated the list page. I created a Display menu item that calls a class to launch the list page. Then in that method I called my newly created formInitialize method. A typical way to launch a list page through a class is like this. Code: formRun = SysListPageHelper::runFormWithModeledQuery(formName, querystr(MyListPage), "My new list page...

Security Global Address Book by Legal entity[AX 2012]

There is enough detail on msdn regarding this topic. But what I wanted to make clear is what actually happens in the background. MSDN tells you to tick the Secure by legal entity or by address book. http://technet.microsoft.com/en-us/library/gg731852.aspx This triggers a change in the AOT by enabling two policies.   The reason I mention this is – if you happen to do this in the usr layer. Remember to move it to a layer that will be part of the release.