Thursday, December 29, 2011

Global Number Sequences in AX 2012 (Going Global)

Number sequences in Dynamics AX probably only get technical types and a few bean counters excited.  But one man’s trash is another’s art.  In AX number sequences as in most ERP systems provide unique identifiers to transactions (SO, PO, JE, etc.) or master data (e.g. customers, items, vendors, etc.) In AX these user friendly identifiers can be maintained in continuous or non-continuous alphanumeric sequences.
With previous releases (AX 2009 and earlier) number sequences were system generated sequential strings with hard coded system or user (administrator) specified prefixes or suffixes. Size of the number sequence (number of digits) and smallest, largest, and next numbers can be specified as well as a unique code and name. AX 2009 also supports number sequence groups and additional advanced functionality.  In AX 2009 and earlier versions, the number sequences were specific to a company, and if the organization  maintained and supported multiple companies within the AX environment unique number sequences had to be maintained for each company.
With the introduction of the Organizational Model concept in AX 2012, number sequences functionality has been enhanced to allow sharing of number sequences across organizations and organization types. Without veering into a separate discussion of Organizational Models in AX, from a number sequence perspective the change allows association of a sequences to   not only multiples companies (or the comparable “legal entity” in AX2012), but  also multiple organizations such as operational units and legal entities or literally “shared”, with options within that matrix. This allows an association of a master data number sequence such as a product to be shared globally.
Two new concepts have been introduced in AX 2012 to the number sequence framework. These are scope and segment. A segment is a data entity such as a legal entity, operational unit, or perhaps a fiscal calendar. A number sequence can have more than one segment.   As scope is a valid combination of segments used for a specific transaction or master data entity.
AX 2012 ships with the following valid segment combinations (scope)-
  • Shared
  • Company (DataArea)
  • Company (DataArea) and fiscal calendar period
  • Legal entity
  • Operating unit
  • Legal entity and fiscal calendar period

Although scope is predefined for a data entity, the segments within that scope are configurable.
Shared scope uses a generated number across an instance of Microsoft Dynamics AX 2012, and has no segments.
Company or (DataArea) is essentially the same functionality as previous releases.
Combinations are apparently at face value, although there are limitations.
As one can see with AX2012 the number sequence framework is significantly enhanced. Users and partners are still learning the explosion of technical and functional improvements that the MS Dev team has created. Number sequences have greater power and complexity than presented in this brief entry. For a more in depth look please read the White Paper by Microsoft’s Madan Natu, Senior Program Manager-Using the Enhanced Number Sequence Framework in Microsoft Dynamics AX 2012, which was released earlier this week. Many of us have much to learn.

Sunday, October 30, 2011

Microsoft Dynamics AX 2012 Installation and Configuration Certification Exam Prometric Exam #MB6-872 Preparation Guide

Target Audience

This exam is intended for individuals who plan to install, implement, configure, consult on, or support Microsoft Dynamics AX 2012. This audience typically includes administrators, implementers, developers, and technical consultants who need to understand the technical aspects and administrative functionality of Microsoft Dynamics AX 2012.

Exam Specifics

Skills Being Measured:
This certification exam measures your ability to understand and articulate how to use, maintain, and support Microsoft Dynamics AX 2012 installation and configuration including planning a Microsoft Dynamics AX 2012 installation, understanding the organizational model, managing users and security, managing services and workflows, managing analytics and reporting, managing Enterprise Portals, and managing administration.
Time Requirements & Questions:Microsoft Dynamics exam times typically range between 60 – 160 minutes. Note that this time does not include any additional time required for validating your identification, reviewing instructions, providing comments, and calculating your score.

Microsoft Dynamics exams typically contain between 40 – 75 Multiple Choice and Multiple Answer questions.
Registration:Register for Prometric Exam MB6-872: Microsoft Dynamics AX 2012 Installation and Configuration Certification Exam at Prometric

Exam Preparation Tools

In addition to your hands-on experience working with the product, we highly recommend using the following tools and training to help you prepare for this exam:
Instructor-Led Training (Please check with your region to verify instructor-led training availability):
Training Materials:
Supplemental Learning Resources:
  • Online Help within the Microsoft Dynamics AX 2012 product.
  • Microsoft Dynamics AX 2012 What's New training
Additional Skills Recommended:General working knowledge of Microsoft Dynamics AX 2012, including all required deployment platforms; Windows 7; Windows Server 2008; Active Directory, including the security model; IIS; and Microsoft SQL Server 2008, including SQL Server Reporting Services and SQL Server Analysis Services.

Exam Topics

Planning to Install Microsoft Dynamics AX 2012 and Understanding the Organizational Model – 16%
  • Setting up the server.
    • This topic may include: minimum server setup; complete server setup; other servers in the environment; Kerberos authentication; firewall settings
  • Planning domain accounts.
    • This topic may include: identifying necessary service accounts; service account requirements
  • Managing pre-installation tasks.
    • This topic may include: pre-installation checklists; planning system topology; planning hardware and software; managing the RAID system; disaster recovery; reviewing staff skills
  • Planning components.
    • This topic may include: prerequisites; databases; Application Object Server (AOS); Help Server; clients; .NET Business Connector; Debugger; Trace Parser; Microsoft Visual Studio tools; Microsoft Office add-ins; management utilities; Enterprise Portal for Microsoft Dynamics AX 2012; business intelligence components
  • Identifying organizational model concepts.
    • This topic may include: legal entities; operating units; hierarchy purposes
  • Managing organizational hierarchies.
    • This topic may include: creating organizations; creating hierarchies; assigning a hierarchy purpose; adding organizations to a hierarchy
Installing Microsoft Dynamics AX 2012 – 15%
  • Working with the setup utility.
    • This topic may include: using the Microsoft Dynamics AX Setup Wizard; automatic update installer; validation prerequisites; installing an environment; post-installation configuration steps; simplifying single-computer deployments; troubleshooting
  • Working with configuration utilities.
    • This topic may include: servers; clients
  • Working with Office add-ins.
    • This topic may include: configuring add-ins; using add-ins
  • Deploying clients.
    • This topic may include: creating a group policy logon script; deploying multiple clients; creating a shared configuration file; creating a batch file to install clients
  • Working with the initialization checklist.
    • This topic may include: preparing initialization; synchronizing the database; initializing the system
Managing Users and Security – 16%
  • Managing security.
    • This topic may include: default and sample security definitions; compliance, auditing, and reporting; custom authentication; integrating security with the organizational model
  • Managing authentication, users, and Active Directory user groups.
    • This topic may include: Active Directory users; Active Directory groups; claims users for Enterprise Portal; manually creating users; importing users from Active Directory; manually creating Active Directory user groups
  • Managing role-based security.
    • This topic may include: aligning application security with business needs; reusable permissions; role-based security concepts; roles, duties, and process cycles; privileges and permissions; role design principles; goals for security changes in Microsoft Dynamics AX 2012; assigning roles to users; assigning users to roles; assigning roles based on an organizational model
  • Managing the extensible data security framework.
    • This topic may include: applying the extensible data security framework to a user; record-level security
  • Customizing security.
    • This topic may include: adding a role; modifying a role; adding duties to a role; removing duties from a role; editing a duty
Managing Services and Workflow – 12%
  • Managing administration and integration.
    • This topic may include: metadata service; query service; service groups; integration ports; inbound versus outbound ports; basic versus enhanced ports; websites; support for non-XML files
  • Managing infrastructure and deployment.
    • This topic may include: improving performance; the data model; system services; services and the Windows Communication Foundation (WCF) runtime; hosting services on the AOS; IIS service hosting with the .NET Business Connector; deploying services on a web farm; debugging services by using Visual Studio .NET; viewing logs
  • Working with the architecture.
    • This topic may include: organization model integration; hosting workflow on the AOS; identifying workflow types and uses
  • Working with the graphical workflow editor.
    • This topic may include: adding approvals; adding conditional decisions; adding manual decisions; adding parallel activities; adding and working with sub-workflows; working with line-level workflows; adding tasks and automated tasks
  • Managing inquiries and reports.
    • This topic may include: performance analysis reports; viewing workflow history
Managing Analytics and Reporting – 13%
  • Working with cubes.
    • This topic may include: types of cubes; cube features; Date dimension and Gregorian calendar
  • Deploying analytics.
    • This topic may include: setup wizard; SQL Server Analysis Services Project wizard
  • Configuring analytics.
    • This topic may include: fixed schemas; configuring default cubes; analysis servers; exchange rate information; time periods; maintenance plans
  • Managing batch support and deployment.
    • This topic may include: reporting architecture; reporting services; Windows PowerShell report deployment
  • Managing report servers.
    • This topic may include: creating a new Report Server; validating settings
Managing Enterprise Portals – 13%
  • Installing enterprise portals.
    • This topic may include: prerequisites; installation tasks; search
  • Deploying enterprise portals.
    • This topic may include: simplified deployment; deploying from the Application Object Tree (AOT); deploying changes to the Enterprise Portal
  • Configuring enterprise portals.
    • This topic may include: Enterprise Portal parameters; publishing images; websites; collaboration workspace settings; configuring search; updating the search crawler role
Managing Administration – 15%
  • Managing models.
    • This topic may include: models and model files; SQL Server–based model store; model store uses; baseline model store; managing label files
  • Managing system administration.
    • This topic may include: management packs; Microsoft Baseline Configuration Analyzer; server configuration; cluster configuration; Help system parameters; client performance options; system service accounts; license configuration and information; system parameters
  • Setting up and managing email.
    • This topic may include: email parameters and retry schedules; email batch jobs; email inquiries; email broadcasts
  • Setting up batches.
    • This topic may include: batch groups; batch jobs; batch processing; batch job history
  • Managing alerts.
    • This topic may include: alert parameters; alert rules; creating alerts; processing alerts; notification lists; notification clean up

Wednesday, October 5, 2011

Create & Post Inventory Journal in AX 2009

Following is job which will create and post the Inventory Journal in ax 2009 :-

static void createMovJournal(Args _args)
{ InventJournalTable journalTable;
InventJournalTrans journalTrans;
InventJournalTableData journalTableData;
InventJournalTransData journalTransData;
InventTable inventTable;
InventDim inventDim;
Counter cnt;
InventJournalCheckPost journalCheckPost = new InventJournalCheckPost();
DialogButton dbtn;

journalTableData = JournalTableData::newTable(journalTable);
journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);

// Init JournalTable


journalTable.JournalId = journalTableData.nextJournalId();
journalTable.JournalType = InventJournalType::Movement;
journalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);


// Init JournalTrans
select firstonly inventTable;

journalTrans.TransDate = systemdateget() + 1 div 2;
journalTrans.ItemId ='1103';    //inventTable.ItemId;
journalTrans.Qty = 100;
journalTrans.CostAmount = 100;

// Dimension details

inventDim.InventLocationId = '11';
journalTrans.InventDimId ='00000061_069'; //InventDim::findOrCreate(inventDim).inventDimId;




// Call the static method to post the journal

if(box::yesNo("Do you want to Post Now?",DialogButton::No)==DialogButton::Yes)
 box::info("Not Posted");


Monday, October 3, 2011

A Now() or GetDate() Method for AX

It should be noted, that after I made this post, it was revealed to me that the DateTimeUtil::utcNow() method accomplishes this goal...

If we need to be able to obtain the current date & time; something similar to the DateTime.Now() function in .NET or the getdate() function in SQL Server; However as far as I can tell, AX provides no quick function for this, so I wrote my own:
public utcdatetime Now()
str tDate;
str tTime;
utcdatetime utc3;


tDate = date2str(systemDateGet(), 321, DateDay::Digits2, DateSeparator::Hyphen, DateMonth::Digits2, DateSeparator::Hyphen, DateYear::Digits4);
tTime = time2Str(TimeNow(), TimeSeparator::Colon, TimeFormat::AMPM);
return str2datetime(tDate + " " + tTime, 321);

Enjoy DAX !!!

Monday, September 19, 2011

Dynamics AX Technical Consultant Interview Questions Series 1

I am going to share some frequent interview questions that generally asked for Dynamics AX Technical consultant position:
  1. How can we create primary key for a table?
  2. what precautions you need for overriding fetch() method for a report?
  3. Difference between OCC and PCC?
  4. How many types of MAP there in Dynamics AX? 
  5. What is cache lookup what is it used for?
  6. Difference between table and views?
  7. why we use dialog? and how to accomplished it?
  8. what are the different type of index?
  9. Difference b/w cascade + restricted and restricted delete actions?
  10. In which case delete_from and delete() have same result?
  11. Explain sales/purchase order processes in AX.
I will share more questions in my next post.

Enjoy DAX !!!

Tuesday, August 30, 2011

ForceLiterals and ForcePlaceHolders in AX

When you use forceliterals keywords in Axapta, Axapta will issue SQL statements directly to the database as text string.
SELECT forceLiterals * FROM purchTable
    WHERE purchId == ‘EN00009’ ;
In SQL server, it will be:
Conversely, using ForcePlaceHolders in Axapta, Axapta will issue SQL statements to the database, and a temporary stored procedure being created for this statement. This stored procedure then remains within the database for as long as the connection that was used when issuing the statement remains.
SELECT forcePlaceHolders * FROM purchTable
    WHERE purchId == ‘EN00009’ ;
In SQL server, it will be:
Using forcePlaceHolders will help SQL Server to save the time to recompile the execution plan, that is, reuse the execution plan.
Excess use of the forcePlaceHolders can degrade performance. If a statement is executed only once, forceLiterals is preferred because it requires only one network round trip to the server. While using forcePlaceHolders for a statement executed only one time requires an extra network round-trip; one trip to prepare the statement and one trip to execute it.

Monday, August 29, 2011

DictTable and DictField Class

Hi ,
    Take a look below on DictTable and DictField class in AX.

Note : DictTable class is used to access information ralated to table.

Note : DictField class is used to access information ralated to table fields.

DictTable dt;

dt = new DictTable(tablenum(Address));

if (dt)
    print (strfmt("The table is saved on a %1 basis.", dt.dataPrCompany() ? "per company" : "global"));

DictField df;

int       nFlags;


df = new DictField(tablenum(CustTable), fieldnum(CustTable, AccountNum));

if (df)
    nFlags = df.flags();
    if (bitTest(nFlags,#DBF_MANDATORY))
        print ("The field is mandatory.");
        print ("The field is not mandatory.");


Thursday, August 18, 2011

Service Accounts

        Local System : Completely trusted account, more so than the administrator account. There is nothing on a single box that this account can not do and it has the right to access the network as the machine (this requires Active Directory and granting the machine account permissions to something)
         Network Service : Limited service account that is meant to run standard least-privileged services. This account is far more limited than Local System (or even Administrator) but still has the right to access the network as the machine (see caveat above)

      Local Service : A limited service account that is very similar to Network Service and meant to run standard least-privileged services. However unlike Network Service it has no ability to access the network as the machine.


Sunday, July 31, 2011

Skype Integration with Dynamics AX

1. Application Area
Skype® is a popular utility for IP telephony. Skype Integration add-on integrates Skype with standard Dynamics AX (Axapta) in the same way, like phone integration is made in Dynamics AX (Axapta) CRM Telemarketing.
The functionality includes 2 main parts:
  • Everywhere in the application for all “phone” fields user has a possibility to make calls using standard Dynamics AX (Axapta) phone integration functionality (via TAPI) or by Skype.
  • It’s assumed that user is ready to receive inbound calls by phone and Skype.
Therefore, Skype-integration functionality provides an alternative way to make phone calls from Dynamics AX (Axapta), while standard Dynamics AX (Axapta) can do it (e.g. CRM Telemarketing) using usual modem and phone line only.

2. Prerequisites

Skype software is to be installed as client.
SkypeOut account is to be registered in order to make outbound calls to normal phones using Skype.

3. Workflow

3.1. Outbound call

Skype provides 2 ways of communication:
  • “Skype to Skype” using Skype account. Currently this service is free.
  • “Skype to Phone” using SkypeOut account. You must pay for such calls, but the cost is much lower than normal international phone calls (see

Skype to Skype calls

A new string field “Skype account” is implemented in relevant forms. At the moment, it is implemented in e.g. “CRM Contact Persons” table/forms, and located in the “Contact info” field group. When user presses lookup-button (an icon with image of phone), Dynamics AX (Axapta) makes a call to this Skype account using Skype software, installed on the client’s machine.
Skype to phone calls (using SkypeOut)
In this case, we already have usual phone number in standard ‘Phone’ field, and the only question is to decide, if we would like to call using standard Dynamics AX (Axapta) telemarketing functionality, or should we start the call via Skype? This is specified by a new parameter “CRM / Setup / CRM Parameters / [tab] Telemarketing / [field group] Skype integration/ [field] Outbound phone call”, which can have the following 3 values: Use telephone / Use Skype / Ask user.
In the first 2 cases appropriate interface is used without additional questions. In the third case, every time before placing a call, the user will see a dialog window, where he can specify if he would like to use Skype, or use standard way to place a call.

Figure 1: CRM Parameters
When user clicks a button to place a call using SkypeOut, the following steps are performed:
  •  Skype window pops up starting a call.
  • A new form “Skype call” is opened in Dynamics AX (Axapta). This form presents the information about current call, and looks similar to standard FRM smmPhoneDialog.

Figure 2: Call using SkypeOut
Dynamics AX (Axapta) form displays the following information:
  •  Telephone number or Skype account.
  •  Start time of call.
  •  Call duration.
  •  Contact information.
  •  Activity description. Functionality allows saving the call as activity, like it’s implemented in standard Dynamics AX (Axapta) telemarketing.
 The form allows to:
  •  Finish Skype call.
  •  Reinitiate Skype call.

3.2. Inbound call

When user receives inbound call, the following steps are performed:
  • Skype window pops up making a call.
  • Form described above is opened in Dynamics AX (Axapta) presenting information about current inbound call. (CRM/ Parameters/ CRM Parameters/ Employee options/ tab: Telephony/ field group: “Skype integration”/ field: “Activate answers” must be checked). At the moment, this feature does not work under Dynamics AX (Axapta) 3.0 SP3, but works under Dynamics AX (Axapta) 3.0 SP2.

4. Conclusion

Skype Integration is a useful add-on to reduce the costs of international calls for sales department of the company (if SkypeOut account is utilized), and add one more communication tool to Dynamics AX (Axapta) Telemarketing.

Source :

Thursday, July 14, 2011

X++ : lockWindowUpdate() vs. lock()/unlock()

There are two method pairs in X++, that are used throughout the application by everyone writing some processing on application forms. These are:




Now, not that many people know the difference between the two methods, and only very few think about why and when should each of them be used.
I will try to describe the behavior of these methods and at the end give some recommendations on how to use them. I have done some kernel code reading (with help of kernel dev. Andy Stach, who I would like to mention here), so what I write below is more or less backed up by code.
If you disagree with some of the recommendations though, please share your experience in using these methods through comments for this post.


is basically a wrapper around the LockWindowUpdate Win32 function. What it does is pretty simple:
When a window is locked, all attempt to draw into it or its children fail. Instead of drawing, the window manager remembers which parts of the window the application tried to draw into, and when the window is unlocked, those areas are invalidated so that the application gets another WM_PAINT message, thereby bringing the screen contents back in sync with what the application believed to be on the screen.
Note, that according to MSDN, it should not be used for general purpose suppression of redraw operations, but only when dealing with drag&drop operations. This does not hold true for AX, where this method is used all over the place to prevent redraw of controls on the form.
Another interesting point is that only one window can be locked at the same time. So, any nested calls tolockWindowUpdate will be ignored, but when unlocking, only the outer-most unlock will actually invoke the Win32 counterpart. Now, I have not seen this used in X++, which is for the better.


is internally invoking lockWindowUpdate to prevent the redraw of the window, and then also prevents the IntelliMorph control layout engine from running. This is commonly used in scenarios where control properties affecting control arrangement are being set in a loop, which provides a performance optimization as it avoids redundant arrange calls being processed. On the other hand, when calling FormRun.unlock, more work will need to be done, compared to usinglockWindowUpdate(false), where the control layout changes were actually processed by the layout engine, but simply not displayed.

So, based on my investigation, I would suggest to use the following recommendations when doing form development:

  • When formRun.resetSize() is used, specifically, when some controls become visible, increasing the form size, always use formRun.lock()/unlock(), otherwise the change in the size of the form might not get reflected on the screen correctly.
  • When changing multiple layout properties (Left, Width, etc.) on one or more controls, use lock/unlock
  • When you modify the properties that do not impact the layout of controls on the form, useformRun.lockWindowUpdate(), or, if there are only very few control properties being modified, do not lock the form window at all.

Monday, June 20, 2011

Microsoft Dynamics AX 2012 - Type Hierarchy

With the upcoming release of Microsoft Dynamics AX 2012, one of the rather interesting new elements about this release, is the introduction of table type hierarchies.

When you glance at this, just from a data layer level, it seems to be super normalization. That is actually correct, however, you must look at the total picture. That means, you must take and look at this from the data + application layers, together.

That is the only way, that this concept then actually works. In order to help understand this concept, and how the new data structures live within Microsoft Dynamics AX 2012, there is a new tool called the Type hierarchy browser.

You can get to this tool, from any object within AX actually. Classes, tables, etc. For this post, we will focus on tables, and how the tool can help us better understand the data structure.

Lets pick a new structure in Microsoft Dynamics AX 2012, EcoResProduct. This is part of the new Master Data Management (MDM) / Product Data Management (PDM), that will exists out of the box for this release of AX.

Once we have selected the EcoResProduct table, within the AOT, simply right click, add-ins, and then click on the 'Type hierarchy browser' menu item.

Once we do this, we then see the hierarchy that exists for the EcoResProduct table, which extends from the Common table object.

You will notice, that both Common and the EcoResProduct tables have RecId, revVersions & relationType. You will also notice that, DataAreaId is no longer listed. We will save that for another post.

In here we can see as well that the EcoResProduct table inherits methods, from the Common table object. Fields that exists at the EcoResProduct table, are marked with blue blocks, that exist beyond the Common table. We can also see that, in the tree view on the right hand side of the screen, that the hierarchy make up, that EcoResProduct is a part of.

Extending from the EcoResProduct table object, is the EcoResDistinctProduct, and the EcoResProductMaster. Extending from the EcoResDistinctProduct, is the EcoResDistinctProductVariant table object.

Now, if we step forward in the tree, and select the EcoResDistinctProduct, in the tree view, we should see something that looks like the following.

Now you will notice, that for the EcoResDistinctProduct table, the only fields it has, is the three system fields that we listed above. If you look at the data for this table, sure enough that's all that is there, from the data layer perspective.

What this suggests then, and shows, is that the actual field data that lives for a Distinct Product, vs. a Product, still lives within the EcoResProduct table. The EcoResDistinctProduct table inherits the fields for:SearchName, ProductType, InstanceRelationType, and DisplayProductNumber.

When the table is referenced within a form, or code, the EcoResDistinctProduct table has these fields as possible uses, becomes of the new way AX handles, allowing table structure hierarchy.

This does a lot of things for such structures, it cuts down, big time, on the amount of repeat data, size of databases, and enables the application layer, to be the only true way, of working with the data that lives within a Microsoft Dynamics AX 2012 instance.

With using the Type hierarchy browser, provided out-of-the-box for Microsoft Dynamics AX 2012, one can better understand the new data structures, and be able to connect all the new dots, that will exists with this release.

This is very powerful, and through the use of the application layer, the statement of Powerfully Simple, which is the tag term being used to describe Microsoft Dynamics AX 2012, is true!

Source :

Wednesday, June 15, 2011

Tips & Tricks - Number Sequence

When you are using a Number Sequence, keep in mind that a Continuous Number Sequence is slower than a non-continuous. The reason is that the system creates a record in the table NumberSequenceList (with the status Active) and cleans it up later during TTSCOMMIT.
Performance tip: You can improve the performance of a process that creates many numbers of one Number Sequence by using number pre-allocation. This loads a set of numbers into the memory and provides faster access. You can do this by using the NumberSeqGlobal, witch means that once it is instantiated, it is available until the session is closed. This function is only available for non-continuous Number Sequences. The numbers can only be retrieved from the cache by calling the getNumInternal() method in the NumberSeq_Fast class.

List of mandatory fields on a table

   The Following Code will let you know the List of Mandatory Fields in a table :-

static void CheckMandatoryFieldsOnTable(Args _args)
    DictTable dictTable;
    DictField dictField;
    int i;
    TableId tableId = tablenum(custtable);
    dictTable = new DictTable(tableId);
    for (i=1 ; i<=dictTable.fieldCnt() ; i++)
        dictField = new DictField(tableId, dictTable.fieldCnt2Id(i));
        if (dictField.mandatory())

Enjoy DAX !!!

AX 2012 Unleashed

On I found the first paperback concerning Ax 2012 ‘Microsoft Dynamics Ax 2012 Unleashed’. The book will be released Ocober/November this year. There is not much info availible at the moment, but if you’re intrested in pre-ordering go to
Author:David Weiner, Ivan Cole
Publish Date:October 2011

Cheers !!!