Showing posts with label Microsoft. Show all posts
Showing posts with label Microsoft. Show all posts

Tuesday, June 4, 2013

Certifications

After working in the industry for over a decade I finally took a Microsoft certification. A few weeks ago I took and passed the Microsoft Dynamics AX 2012 Development test. I've been reading through some of the E-Learning material and highly recommend anyone working with AX go over this training.

 

Thursday, May 2, 2013

Using Record Info and the importance of field groups on a form

I've often wondered about the Best Practice check in AX that requires all fields to be in a field group and why that is there. I assumed it was some sort of encouragement to use field groups on forms and reports, but today it occurred to me that there is another very valuable tool that uses this information (there are probably many others as well).

If you have the appropriate permissions in Dynamics AX you can right click on any field on a form, select record info, and then select "Show all fields" to open a new form which displays all of the fields in the table and their values regardless of if the field is on the form or not. This is useful for some power users if they are interested in knowing when a record was created or when it was last modified for instance.


Show all Fields
Show all Fields
 
I shared this functionality with a user this week, but it wasn't until today that I realized how this form organizes fields into groups based on field groups to help the user find them. So in the future take some time and consideration when creating field groups or adding fields to groups so that users can find these more easily on the Record info screen.

Wednesday, April 10, 2013

Slow Inventory Reports

A user over on the AXUG Community recently posted a question about poor performance on the standard AX Inventory reports, specifically Physical Inventory by Dimension. It turns out the fix ended up being to clear the records in two tables in the database that are used only for building this report. Normally the records are created, the report run, and then the records are deleted. However if the process is cancelled the records can be left behind. Multiple users reported the same issue.

If you are having this issue or even minor performance issues with these reports, look into deleting all of the records in the InventSumDateTable and InventSumDateTrans tables via SQL.

If you haven't joined the AXUG Community forum yet go check it out. It's a great free resource for users.

Wednesday, March 27, 2013

Using secondary currency and exchange adjustments

If you are using secondary currency (also called reporting currency) in Dynamics AX you might not be aware that the ledger exchange adjustment program does not update AmountMSTSecond values in Dynamics AX 2009.

One reason to use the secondary currency in a company is to report on both your primary currency and your secondary currency.

Say you have a company in Canada that does transactions in both US Dollars and Canadian Dollars. If your master currency is set to USD your ledger transactions will have the USD equivalent in the AmountMST field and the amount in the transaction currency in the AmountCur field. For transactions that are in CAD then will have both the USD and CAD values, but for transactions in USD both fields will be in USD. Setting your secondary currency in the company to CAD means that all transactions will have the USD amount in AmountMST and the CAD amount in AmountMSTSecond.

Currency Code Master currency amount Transactional currency amount Secondary/Reporting currency amount
USD $100 USD $100 USD $98 CAD
CAD $100 USD $98 CAD $98 CAD


Saturday, March 2, 2013

Microsoft Advanta campus

Most people know that Redmond, Washington is home of the Microsoft Corporate campus, but the offices for Dynamics AX are actually in Bellevue, Washington. I took a few photos today for my online photography class at Proud Photography and I thought I'd share one of the images here.

Microsoft Advanta Campus

The other offices where Microsoft has major Dynamics AX development that I know about and have worked with teams from are Fargo, North Dakota and Vedbaek, Denmark.

Friday, February 22, 2013

Adding a color bar per company

A common question users often ask for is to change the color of AX forms when logged in to a different company. This comes from may legacy systems having this behavior. It turns out changing the background color on AX form results in a pretty ugly experience due to the many different layouts of form, group and subgroups, and other controls that would all have to have their backgrounds changed.

However one interesting way I found to provide similar behavior to this is to add a color bar across the top of forms similar to the workflow status bar indicating the company logged in to.


Disable "Changing company accounts to: " infolog warning

If you are using multiple companies in Dynamics AX you likely have seen the "Changing company accounts to: <company>" infolog warning when changing between companies. This is particularly annoying when working with intercompany sales orders and purchase orders when your business process has you switching back and forth between companies. This is pretty easy to disable with a simple modification to the Application.setDefaultCompany() method.



Friday, July 27, 2012

Adding fields to the Batch (InventBatchId) lookup

Background

By default in Dynamics AX the lookup control for the inventory dimension Batch uses your item dimensions for the breakdown of inventory when providing a list of On Hand lots to choose from. However, we've re-used the Serial Number dimension (InventSerialId) as a sub dimension to break inventory down by and set it as both a Primary stocking and a Physical inventory dimension. Because of this we want to select an inventory dimension combination when choosing a lot that matches the values for all primary stocking and physical inventory dimension.

Problem

When viewing the lookup control there is an option to "Range inventory dimensions". If this is selected then the InventSerialId field will show in the On Hand grid, but it will only show rows that match the dimension value for the selected line. If the "Range inventory dimension" option is not selected then the lookup does not display the dimension in the grid and furthermore it does not consider the field in the group by fields, thereby aggregating all values together. Since our goal is to return the selected value to the caller form this is problematic because not only can users not select based on this field, the InventDim record returned has the field as blank.

Solution

The solution is two-fold. First we must set the dimension field to display in the grid and second we must make it as part of the group by field so that the values are returned to the caller.

The Batch lookup form is InventBatchIdLookup. This form uses the InventDimCtrl_Frm_Lookup class to control it's appearance and behavior. Our changes can be made to this class.

InventDimCtrl_Frm_Lookup.findGroupByDimensions() is the method which sets the visibility of fields in the grid. For my purposes adding the following line of code as the last line in the method makes the field visible.

dimParmVisibleGrid.(InventDim::dim2dimParm(fieldNum(InventDim, InventSerialId))) = NoYes::Yes;

InventDimCtrl_Frm_Lookup.executeInventDimQueryDatasource() is the method which controls the shape of the query used to display and return data in the lookup (the group by fields). Adding the following line of code to make InventSerialId a sort field to this method also puts the field in the group by.

qbdsDim.addSortField(fieldNum(InventDim, InventSerialId));

Monday, May 28, 2012

Enabling a new inventory dimension and the AllBlank dimension Id

I recently explored the idea of enabling a new inventory dimension to track a new type of inventory in Dynamics AX. There were a few goals that I wanted to stick to.
  1. Use one of the existing inventory dimensions rather than adding a new dimension. InventColor, InventSizeId, InventBatchId, and InventSerialId were all candidates.
  2. While technically we would allow blank values, I wanted to have two explicit values to use rather than assuming blank was a meaningful value.
  3. Due to #2, update all existing transactions in the system to be one of the explicit values.
The steps necessary to complete this are straight forward, but there are some words of caution I want to add along the way which I discovered in my investigation.

Tuesday, April 3, 2012

Aggregate, Group by, and Having functions in SysQueryForm

Have you ever wanted to use the SysQueryForm in Microsoft Dynamics AX to define a query that had an aggregate (sum, min, max, etc.) and a group by clause? In Microsoft Dynamics AX 2012 this is now possible. Read on to learn more about this little known feature.


Saturday, March 17, 2012

ParseXPOs

Many people may be familiar with the CombineXPOs.exe utility for Dynamics AX that mfp has shared on his blog. This utility is useful to take many individual xpo files and create a single large xpo file that can be imported into Microsoft Dynamics AX either from the command line or manually in the client. I recently had a scenario where I wanted to do the opposite, export a large project from Dynamics AX and then parse the project into individual XPO's. This was useful to compare all of the objects installed in a layer in multiple enviroments. Hit the jump for the source code and binaries.

Friday, March 16, 2012

Migrating from MorphX version control to TFS version control - Part 2

In Part 1 of this article I described a method to migrate MorphX version control data into TFS version control using the TF.exe command line utility and an x++ job. In Part 2 I will touch on some of the difficulties I faced and give a little more detail on how I overcame them.

Saturday, February 25, 2012

Migrating from MorphX version control to TFS version control - Part 1

There are quite a few good topics on the web about how to use TFS for source control in Dynamics AX but one thing I couldn't find was anyone with a way to migrate from MorphX version control to TFS version control.

Wednesday, February 22, 2012

Welcome

Welcome to my new blog about Dynamics AX.

I've spent the last 5 years working for a vendor for Microsoft helping build the public sector solution for Dynamics AX. I worked on versions of AX before 2009, on the entire release for 2012, and also on the start of the next yet to be released version of AX.

Recently I started working as the Sr. Dynamics AX developer for a private company that uses Dynamics AX internally.

Most of my prior experience working on AX was admittedly in the financials module but in my new job I will be getting very familiar with the inventory module. I'm also very interested in architecture and the build environment so some of my initial posts will be in the area of setting up a development environment for a private company.

I hope you enjoy my posts and that I'm able to offer some of my unique insights to the online discussion of Dynamics AX.