Friday, January 27, 2012

How to view all Embedded Resources in AX 2012

Are you trying to create a form, report, etc and want to find an image for it that exists in base?  There are a lot that exist within AX that are currently used (in the form ribbon bars for example).  The trick is finding the perfect image for your application.

While it may be fun tireless searching through hundreds of forms looking at all the images then finding the resource number (ImageLocation = EmbeddedResource), there is a much faster way.  There is a form that contains all of these images as well as the number that correlates to them.

To get to this form, go into the AOT (Ctrl+D), expand out the forms node, type (or move scroll bar) to the 'SysImageResources' form. Open this form (Right click -> Open or Ctrl+O).  When I did this for the first time, it opened underneath the properties window as a right docking window.  To get this to be a movable window, right click on the header of the embedded window and select 'No Docking'.  This will allow you to move the window around. There used to be a report that had it all on there but it doesn't look like its there anymore.  Oh well.

This embedded resource number can be used on the 'NormalImage' property of the object (like a form button).  If you use it, make sure you set the 'Big' property of the button to 'Yes'.

Wednesday, January 25, 2012

Assign a date to DateTime in AX 2012

I was working with a client where we were seeing an issue with a data import and the table OMHierarchyRelationship's ValidFrom and ValidTo date fields were importing wrong for the Organizational hierarchies in AX2012.

We wanted to set the ValidFrom to the date of 1/1/2005 (not derived from an AX function) and the ValidTo as the maximum date.  The maximum date seemed to be set to the valid of 'Never' but that was actually a max date of 12/31/2154.  Really, this is stupid because the world will 'end' on December 21, 2012.   That is 142 wasted daysYEARS of real estate my Microsoft friends... 

There is often a 'developer' issue of remembering how to set dates not using an AX function.  Unless you do it all the time, its always a subject that takes a few minutes to remember how to do things with. Don't lie... You know its true...  If you're coming from AX 4.0, welcome to the UTC shock.

AX 4.0 always stored the data type 'Date' behind the scenes as a DateTime but just hacked off the time part on the AX end. There was a time EDT which was stored in seconds. Not too bad as long as you don't mind dividing by 60 all the time... There were some huge improvements in AX 2009 and 2012 wiht the UTCDateTime functionality. The biggest is the ability to see the date and time in AX as it is in SQL as well as be able to dynamically display timezone changes to the users based on where they are located.

Anyways... There can be issues with the code needed to do paragraph two above.  Here is how to do it:
omHierarchyRelationship.ValidFrom  = DateTimeUtil::newDateTime(1\1\2005, 0);
omHierarchyRelationship.ValidTo    = DateTimeUtil::maxValue();

The maxValue() function will put the dateTime as the max date of 2154.  The newDateTime() function will allow you to set the field for what you specify if you use MM\DD\YYYY.  Make sure the slashes are '\' and not '/'.  It MUST be 1\1\2005 and not be 1/1/2005; note the back vs forward slashes.  There do not need to be single colon's around the variable.

I hope this helps!! Please put a comment below if it doesn't.  I'll make sure that it does.

Friday, January 20, 2012

AX 2012 SSRS Error: Error while setting server report parameters.

AX 2012 SSRS Error: "Error while setting server report parameters. Error message: The permissions granted to user '[DOMAIN\USERNAME]' are insufficient for performing this operation. (rsAccessDenied). The permissions granted to user '[DOMAIN\USERNAME]' are insufficient for performing this operation. (rsAccessDenied)"
Figure 1 - SSRS Permissions error
Replication of the error: Trying to run any SSRS report within AX

About the error: This is actually not AX specific.  It is with permissions on the SSRS site.  The user may need to be granted access to get to the SSRS reports or it could be an issue with a setting.

Resolution: Some things to check to resolve the issue

1. Navigate to the Report Manager url (http://SSRSREPORTSERVERNAME/Reports/Pages/Folder.aspx), go to the Folder Settings and click on 'New Role Assignment'. Add the appropriate user or group. Make sure they have access to 'Browser. Content Manager, and DynamicsAXBrowser'.
Figure 2 - Adding a role assignment to SSRS 
2. IIS: Check to make sure the Reports virtual directory is NOT set to allow anonymous access on the properties (VirtDir > Properties > Security).  The Visual Studio ReportsServer virtual directory defaults to deny anonymous access. 
3. Check Windows User Account Control (UAC) restrictions.
If this still doesn't fix things, you can reset all the changes by going to the virtual directory tab on the left hand side of the SQL Server Reporting services config, make sure the check box 'Apply default settings' is checked.  Then try tinkering around some more.

Wednesday, January 18, 2012

AX 2012 SSRS Error: The default Report Server Configuration ID could not be found in the SSRSServers table.

There is an AX 2012 SSRS error that is hit when running any reports in AX 2012 that says 'The default Report Server Configuration ID could not be found in the SSRSServers table'.

The issue is thankfully just a result of configuration. It is caused by the AX 2012 Reporting Services data not being filled in.  The configuration data can be found under System administration > Setup > Business intelligence > Reporting Services > 'Report Servers'.  Just fill in the appropriate fields according to your company specific situation and you are good to go!

Figure 1 - 'Report Servers' setup form

Monday, January 16, 2012

AX 2012 for Retail Big News at NRF in New York!

Retailers to Enhance Customer Experience With Microsoft Dynamics AX 2012 for Retail Seamless multichannel insight and customer connection enable retailers to deliver a complete shopping experience.

NEW YORK, Jan. 16, 2012 /PRNewswire via COMTEX/ -- At the National Retail Federation's annual conference today, Microsoft Corp. (Nasdaq: MSFT) announced the upcoming release of Microsoft Dynamics AX 2012 for Retail, which will provide midsize and enterprise retailers with an end-to-end solution that includes cross-channel capabilities, social and mobile commerce, enriched point of sale (POS), and powerful enhancements for merchandising. These capabilities are designed to help retailers deliver uniquely consistent, convenient and personalized experiences for shoppers.

Mattress Firm is the largest mattress retailer in the U.S. and an early adopter of Microsoft Dynamics AX 2012 for Retail. The company needed a solution to support aggressive growth plans while empowering store and company associates who are passionate about offering best-in-class customer shopping experiences.

"We chose Microsoft Dynamics AX 2012 for Retail because it provides us with a scalable platform to support our future growth and a differentiated customer and sales associate experience at the point of sale," said Patty Wade, chief information officer and vice president of Strategy and Technology, Mattress Firm. "Microsoft Dynamics AX 2012 for Retail gives us what other solutions could not -- ease of use and simplicity in operations, coupled with the ability to scale and reliably deliver on our brand promise." Microsoft Dynamics AX 2012 for Retail helps retailers do the following: Connect to customers. Multichannel capabilities enable customers to buy, pick up, return or replace items on their terms. Support for social and mobile commerce means retailers can offer promotions, discounts or coupons targeted to marketplaces or social networks -- creating critical new opportunities for customer engagement.

Empower employees. Orders can be created and managed at the POS, offering the sales associate increasing amounts of valuable face-to-face time with customers.

Employees can also make highly accurate, timely and consistent decisions because they are armed with relevant details delivered through enhanced Role Centers, dashboards that deliver a succinct set of information relevant to each individual user.

Execute with insight. Integrated multichannel management allows complete insight to help retailers be proactive in anticipating trends. In addition, powerful merchandising functionality puts control into the retailers' hands with unlimited categories and hierarchies possible for assortment and replenishment to best meet customer demand accurately and efficiently.

Retailers worldwide, including AkzoNobel Decorative Paints, Ashley Furniture Industries, DavidsTea., Kwit-Fit Nederland Groep B.V., Malabar Gold, Mattress Firm, P.F. Chang's China Bistro Inc., Simon Pearce and Turisme de Barcelona, have chosen Microsoft Dynamics AX for Retail during the past year.

Global partners are also a core part of the retail business solution.

"Enterprise customers require core retail data and advanced tools to leverage and create value through analytics," said Janet Hoffmann, managing director of Accenture's Retail practice. "Accenture, in close collaboration with global Microsoft specialists Avanade, is developing and delivering solutions built on Microsoft Dynamics AX 2012 for Retail, which enable clients to connect better with their customers." "Today's retail paradigm puts increased pressure on retailers to build lasting customer loyalty by keeping up with fast-moving trends and exceeding shopper expectations," said Michael Griffiths, global product director of retail, Microsoft Business Solutions. "Microsoft is all in when it comes to retail -- from our stores and consumer devices to the customers already running Microsoft Dynamics AX for Retail in more than 30 countries. We are taking that investment to the next level with Microsoft Dynamics AX 2012 for Retail." Microsoft Dynamics AX 2012 for Retail will be available in more than 25 countries starting Feb. 1, 2012. Retailers interested in learning more about Microsoft Dynamics solutions for the retail industry can visit http://www.microsoft.com/en-us/dynamics/erp-ax-retail.aspx.

The Microsoft Dynamics ERP team is on Twitter at @MSFTDynamicsERP and at the hashtag #MSDYNERP, as well as on Facebook, YouTube and The Edge Blog.

About Microsoft Dynamics Microsoft Dynamics CRM and ERP solutions empower your people to be more productive and your systems to last longer and scale as your business grows, while enabling you to derive the insights necessary to respond quickly in an ever-changing world of business.

About Microsoft Founded in 1975, Microsoft (Nasdaq "MSFT") is the worldwide leader in software, services and solutions that help people and businesses realize their full potential.

SOURCE Microsoft Corp.

www.prnewswire.com Copyright (C) 2012 PR Newswire. All rights reserved -0- KEYWORD: New York INDUSTRY KEYWORD: CPR

Tuesday, January 3, 2012

New email address for DAX Dude: AXIsForCoolPeople@gmail.com!!

Hey all!  I just got a new email address for my DAX Dude blog.  You can now reach me at AXIsForCoolPeople@gmail.com. Yes that is really my email address... jealous? No? I'm jealous of it and I have it...

Picking an email address is a fun thing to do.  Even though I always claimed to not put much thought into it, I really do. When you think about it, the name will be people's main point of contact for a blog and anyone trying to contact you will have to add it to their address book.

An email should be memorable (DAX Win) and short (DAX Fail).  One out of two isn't bad...  Add this name to your address book. Any time you type A in your address line, I hope you see this funny name pop up.

Why the goofy long name?  These are the kinds of things that are funny and memorable. Think of it as a method of guerilla marketing. I wish I could be in a project implementation meeting where people say they found an answer on DAX Dude and contacted me at my email, AXIsForCoolPeople. If people laugh and remember that name, Winning!!

Sunday, January 1, 2012

Explanation of Intellimorph (not MorphX!)

AX has functionality in it which allows end users, not developers, to customize their user experience. It is called Intellimorph. This is not to be confused with MorphX which is AX's IDE and fully contained within the AX 2009 application (in AX 2012, Visual Studio 2012 can be leveraged also). I hear it often where people call this feature MorphX and it creates a whole bunch of confusion when they reference it assertively for various points. An example of this is when they say 'You can do that through MorphX development, right?' when they really mean 'Our people can do that through Intellimorph, right?'.

AX's Intellimorph functionality will allow you to customize what fields the user can see and in what location/order. It is incredibly versatile for allowing multiple users to each see different views without needing to bring in a developer. Technically, it stores the changes to the form in the system's Usage data for the user so all changes are user to user. Usage data is stored as a container. Since the forms displays are unique to a given user, this is good for satisfying requirements for form changes are not universal and the security requirements for field access exist.

As seen in Figure 1 below, by right-clicking on a field or column (in AX, rows are data and columns are fields), there is the option to select 'Hide'. This feature will essentially hide the field from the user. Not shown in this blog (sorry) is the option right below this 'Hide' option called 'Show' where the fields hidden by the user can be revealed.


A given user can store multiple different views of a form (via the 'Save' button in Figure 2) and the template layout can be recalled at any given time for use later (via the 'Load' button in Figure 2). At any time, the current layout can be cleared and reverted back to the target form without any Intellimorph modifications by clicking the 'Reset' button in Figure 2. These features are all user to user. They do not apply cross-user.

Since these modifications are unique to the current user, it may be desired to apply the tireless blood, sweat, and tears that went into a custom template from someone else to another user's form. The target user can then use the 'Retrieve from user' button in Figure 2 to select from a list of users that have other templates for the current form (Figure 5). Of the list of these users, when one is selected (from Figure 5), it will show the user what templates that user has created (Figure 6). When a template is selected, it will be immediately applied to the user. The user can then save the template for use later.

Through usage data, a user will automatically be brought into the view of the last template that was used. This means that if a user selects someone else's template, it will be there's until they change it or the usage data for the user is erased.

Unfortunately, there is no way to mass deploy a template to users or groups of users.


If you need to make a change to an existing template of yours, you will need to remember the exact name of the template and it can be updated. To do this automatically would be another modification.

This is a good alternative to some other things that people come up with during the design phase. This is even something overlooked by developers because Intellimorph is not in the same thought vein as the 'modification' mindset. I know this for a fact as I am functional/technical and used to be solely technical.

Hope this helps.


Figure 1 – Right click on the form
Figure 2 - User Setup View

Figure 3 – The screen that appears from clicking the 'Save' option from Figure 2 for entering the name for a user template

Figure 4 – The screen that appears from clicking the 'Load' button from Figure 2 for applying a previously saved form

Figure 5 – The names of the AX users that have templates that you can browse

Figure 6 – The templates saved by the user from the previous figure for the current form