Process Industries Add-On for Microsoft Dynamics AX 2009


Recently  I got a requirement to install PI 2009 on one of my client. What I figured is the sequence of installation is very important

Here are the steps to follow:

1. Install AX2009 RTM (SYS layer)
2. Install SP1 (SYP layer)
3. Install GLS layer if needed
4. Install Process Industries (BUS layer (compatible with existing GLS))
5. Install RU7 (SYP (+ GLP layer))
6. Install PI BUP layer (specific to localization)
7. Open AX client and run Installation Checklist


BUP layers Installation file Download link is here


Hope this will save Some on time 🙂


Change No of Decimal Places in Dynamics AX


My scenario is to change the number of decimal places through out AX to 4 .It is possible and we can change all the amount fields in AX to 4 decimal places or any no of decimal places.

But the challenge is what will happen to the documents which are in open state or are in progress, for example, open work lines, an open wave, open purchase order lines, open sales order lines, production order at any stage other than ended.

Do this AT YOUR OWN RISK and test everything fully.


All open document especially the production orders, work and waves should be closed prior to do this customization.

To change the number of decimal places in Microsoft AX 2012, follow these steps:
1. Change the NoOfDecimals property of the AmountCur, Amount, Qty and RealBase ExtendDataTypes to do this, follow these steps:
a. Open the Application Object Table (AOT) by pressing CTRL-D on the keyboard.
b. Click Data Dictionary, and then click Extended Data Types.
c. Locate the AmountCur and Qty fields, and then change the NoOfDecimals property to 4.
d. Save the changes that you made in the AOT.

2. Change the round-off value for the exchange rates. To do this, follow these steps:
General Ledger -> Setup -> Currency -> Currency Exchange Rates.
a. Select the Currency -> Click the Round-off tab.
b. Set the round-off value to .0001 on all four modules. These are the following:
∴ General
∴ Sales Order
∴ Purchase Order
∴ Prices


The AmountCur ExtendDataType is used for pricing, and the Qty ExtendDataType is used for quantity amounts. When you change the NoOfDecimals property to 4, all fields and controls that are using these ExtendDataTypes are changed globally. The user can then type values with up to four decimal places.

When you change the round-off value, the value that the user types is saved correctly to the database. Make sure that you add enough zeros for the NoOfDecimals property that you specified. You must make sure to correctly set the NoOfDecimals property so that all four decimal places are used. For example, if you leave the round-off value at .0100, the Net Amount on a purchase order will be rounded to two decimals instead of four.

To make the changes to the decimal place visible for Production sessions and for Master Planning sessions, follow these steps:
1.FOR ax 2009: In the Main Menu window, click Basic, click Setup, click Units, and then click Units.

For ax 2012  Organization Administration -> Setup -> Units -> Units
2. Locate the unit of measure that you want to affect.
In the Decimals field, type 4.

As my scenario was to change all values to 4 decimal places so i have updated all the units listed here to 4 decimal precision


Reference Blog

Steps to perform after DB restoration


Whenever we Restore DB from other machine (Like PROD to SandBox ) we always need to change some parameter configuration settings so that our machine will not point to the source machine (Like PROD). Its a general practice to copy PROD on Prod replica machines so its easy to list down some areas so that we can hammer on the right spot.

Here are some steps to remember so that every thing will point to the desired machine


System administration -> Setup -> Business Intelligence – > Analysis Server

System administration -> Setup -> Business Intelligence – > SSRS Server

System administration -> Setup -> System -> Help Server

AOT-> Tables -> Ledger Parameter – > Fieldname (ManagmentReporterURL) change MR server path (if installed)

System administration -> Setup -> Setup -> System -> Email parameters

System administration -> Setup -> EP-> Websites ->Sites

AOT-> Classes -> WHSMobileClases -> change in main method-> Mobile portal path (if installed)

System administration -> Setup -> Setup ->   Batch Group (change assigned server)

System administration -> Setup -> Setup -> System -> Server configuration (delete extra servers)

System administration -> Setup -> Setup -> System -> Service account

System administration -> Setup -> Setup -> System -> Load balancing

Add Code Templates/ Shortcuts /Comments


If you’ve got any blocks of code that you use frequently, e.g. specific comment blocks, you can very easily add code short cuts in AX 2012 to auto-insert  them in to your X++ code.

For example you can setup AX to automatically create surrounding comment such as



whenever you type “mycom” and press the tab key.

How do you accomplish this. Very easily!



Step1: Locate the class EditorScripts in the AOT.
Step2: Create a new method with the format public void template_flow_[shortcut](Editor editor)
Step3: User the editor parameter to add code the code that you would like inserted. e.g. editor.insertLines(“\\test comment”);
Step4: Add your method to the case statement in the isApplicableMethod() method in the section relating to template “editor scripts that does not apply to Macros” 




Thats it, now if you type your shortcut into any editor in AX and press tab, the “\\test comment” code will be inserted.

Here’s a full example method

Comments are very Much self Explanatory

Public void template_flow_mycom(Editor editor)


xppSource xppSource = new xppSource(editor.columnNo());

int currentLine  = editor.currentLineNo();

int currentCol = editor.columnNo();

//add opening comment , You can add what ever you want 

Source template = “//–>(Code added by ” +curUserId()+ ” date On ” + date2str(today(),123,2,2,2,2,2) +”).\n”;


//add an empty line

template += strRep(” “, currentCol)+ “\n”;

//add closing comment with the correct number of spaces, You can add what ever you want 

template += strRep(” “, currentCol)+ “//<–(Code ended by ” + curUserId()+ ” date On ” +date2str(today(),123,2,2,2,2,2) + “).”;


//move cursor to the empty line between the comments