Book Review: Learning MS Dynamics AX 2012 Programming

I recently read Learning MS Dynamics AX 2012 Programming, by Mohammed Rasheed and Erlend Dalen, published 2014 by Packt Publishing, and wanted to share my thoughts with you.

First, the basics. Dalen has published before (Microsoft Dynamics AX 2009 Programming: Getting Started), whereas this appears to be Rasheed’s first foray into authoring. The chapters in this book are organized as follows:

Chapter 1: Understanding Dynamics AX 2012Learning MS Dynamics AX 2012 Programming
Chapter 2: The X++ Language
Chapter 3: Storing Data
Chapter 4: Data User Interaction
Chapter 5: Searching for Data
Chapter 6: Manipulating Data
Chapter 7: Integrating Data
Chapter 8: Integrating with Standard AX
Chapter 9: Creating a New Module
Chapter 10: Working with .NET and AX
Chapter 11: Web Services
Chapter 12: Enterprise Portal
Appendix A: Links
Appendix B: Debugger

Target audience: “This book is for developers who are new to Microsoft Dynamics AX and consultants who know the functional side of AX, but would like to learn how AX works behind the scenes. Experienced AX developers might also pick up some good pointers here and there.” The book definitely assumes prior knowledge of object-oriented programming; if you are starting in AX development and not familiar with OOP principles, please check them out first.

R3: As this book is so recently published (Dec 2014), I would have liked to have seen it be about R3; but it’s not (example: “The Application Object Tree (AOT) is where you find all code elements in AX”). R3 is acknowledged. In addition, the links include InformationSource, which was decommissioned prior to the book’s publication.

Pros: The chapters flowed well, both within and between. There is a lot of good discussion about best practices, which is important to start with and should not be a later add-on. There is a superb reference in Chapter 2, which any developer should bookmark for later. There are good code examples; for instance, a form splitter. The Integrating Data chapter discusses TextIO, XMLWriter, ODBC etc. which are not usually found in a beginner book but very useful. The selling point of the standard AX chapter is its discussion of inventory dimensions – this is key to AX 2012. I appreciated the chapter on creating a new module, as this material is not often covered. The .NET chapter is one that I personally plan to go back to and study; as an old-timer in AX since version 3.0, I need to “fresh up” on the newer technologies.

Cons: I found Chapter 1 to be confusing; I would not want it to be my first exposure to AX. The book is sorely lacking in SDK links (the SDK in general is linked in the appendix, but topical relevant links within the text would be much appreciated). There is not too much explanation of why you do things; just the statement that you do.

Recommendation: If you are new to developing in AX, and are working in 2012, especially RTM, this is a good book to purchase and keep on your (virtual) bookshelf. If you have experience, then weigh the chapters above. With intermediate level developers, the chapter two reference probably makes it for you. With more advanced developers, consider if you want to study inventory dimensions, new modules, or .NET – if so, this is likely to be something you’ll want. Personally, I would buy it, as it is a value add to my AX book collection.

Disclaimer: I was given a free e-copy of the book for review, and have strived to do a fair and impartial one. I thank the publishers for their consideration.

To buy it: It can be purchased at

Happy DAXing!


About janeteblake

Dynamics AX developer
This entry was posted in Dynamics AX and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s