Microsoft Dynamics AX 2009 SP1 RU7 [hotfix rollup 7] download


Microsoft has released hotfix rollup 7 for Microsoft Dynamics AX 2009 Service Pack 1 (SP1). It contains information about how to obtain the hotfix rollup and about the issues that are fixed by the hotfix rollup.

This hotfix rollup includes all country specific-updates and hotfixes that are included in previous hotfix rollup releases for Microsoft Dynamics AX 2009 Service Pack 1.

[Requires partner source or customer source login]
Download here

Thanks!! Good day!!

Create projects or sub projects using X++ [Dynamics AX]

Friends, below code will help you to create projects and sub projects using code. If there is already a parent project and we need to create sub projects based on the format which is already defined, the sample job below is an example. [Please note: Try, test and modify as per your requirements]

static void SR_CreateProjects_subProjects(Args _args)

ProjInvoiceTable projInvoiceTable;
ProjTableType projTableType;
NumberSeq projNumberSeq;
ProjId projIdLastSon, projectId;
ProjTable projTable;
ProjId projMask;
Integer sonNum;

ProjType _projType = ProjType::TimeMaterial;
ProjGroupId _projGroupId = ‘TM1’;
ProjName _projName = “Construction – Prj”;
ProjInvoiceProjId _projInvoiceProjId = ‘100104’;
ProjParentId _projParentId = ‘121’; // define parent project here
NumberSequenceFormat _numberSequenceMask;
ProjLinePropertyId _projInvoiceStatusId;

if (_projParentId)

projIdLastSon = ProjTable::projIdLastSon(projTable.ParentId);

if (projIdLastSon)
projMask = substr(projIdLastSon, strlen(projTable.ParentId) + 1, (strlen(projIdLastSon) – strlen(projTable.ParentId) + 1));
sonNum = ProjTable::numRemTemplate(projMask, ProjTable::find(projTable.ParentId).Format);

projTable.ProjId = projTable.ParentId + NumberSeq::numInsertFormat(sonNum + 1, ProjTable::find(projTable.ParentId).Format);

projNumberSeq = NumberSeq::newGetNum(ProjParameters::numRefProjId(), true);

if (projNumberSeq)
projTable.ProjId = projNumberSeq.num();

projectId = projTable.ProjId;

projTable.Type = _projType;
projTable.ProjGroupId = _projGroupId;
projTable.Name = _projName;
projTableType = projTable.type();


projTable.ProjInvoiceProjId = _projInvoiceProjId;
projInvoiceTable = ProjInvoiceTable::find(_projInvoiceProjId);
projTable.CustAccount = projInvoiceTable.InvoiceAccount;
projTable.Format = _numberSequenceMask;
projTable.CheckBudget = ProjGroup::find(_projGroupId).CheckBudget;

if (_projInvoiceStatusId)
ProjLinePropertySetup::updateLinePropertyProj(projTable.ProjId, _projInvoiceStatusId, TableGroupAll::Table, true);

if (ProjTable::exist(projTable.ProjId))
// Project already exists.
throw error(“@SYS56494”);

if (!projTableType.validateWrite())
throw error (“Validations failed”);


if (projNumberSeq)

if (projNumberSeq)

info (strfmt(‘Project %1 successfully created ‘, projectId));

Sort a container [using X++ , Dynamics AX]


Recently I was in need of sorting the elements in the container and use them .

I am not sure how far this code is helpful to you guys. Below code will help to sort the elements in the container. If there is already any function to do this, then kindly ignore.

static void SR_sortContainer(Args _args)
container con = [5,1,2,’Sumit Loya’,9, ‘Ashish singh’, NoYes::No];
str temp1;
str temp2;
int i;
int j;
container sorCon;

sorCon = con;

// Sort the container
for (i = 1; i <= conlen(sorCon); i++)
for (j = i + 1; j <= conlen(sorCon); j++)
temp1 = conpeek(sorCon, j);
temp2 = conpeek(sorCon, i);

if (temp1 < temp2)
sorCon = condel(sorCon, j, 1);
sorCon = conins(sorCon, j, temp2);
sorCon = condel(sorCon, i, 1);
sorCon = conins(sorCon, i, temp1);


Please note: Even though you have different data types in the container, the above code will sort the elements. [Recommended is similar datatypes, next question would be y not use set which result in ascending order but disadvantage is set will not allow duplicates]

Happy Dax’ng.
Good day!!

Buffer to Buffer data and update only different fields with setFieldAsTouched method and Reflection class using X++ [Dynamics AX]

Friends, In many cases we might need to compare the data which is already stored in the table and only update the fields data that is different.

Buf2Buf() – will help to copy the 2 buffers. But If we want to compare and then update the data which is different in the fields along with any other fields that are dependent on the field[SetFieldAsTouched] below code will help you. [Corrected from the old message/post]

The method setFieldAsTouched takes a field ID as a parameter, and when it is executed, it marks that the field has already been assigned a value. Executing modify or save will thereafter resolve the intra-table field relations, and default, any other fields that depend on the field, which is set as touched.

Note: I am using VendTable in the below example to check and compare using reflection class in combination of AXBC class AXVendTable and SysDictTable. You can use traditional way of updating table instead of using AXBC classes as well

static void SR_SetFieldAsTouched(Args _args)
AxVendTable axVendTable;
SysDictTable sysDictTable = new SysDictTable(tablenum(VendTable));
int i;
int fieldCnt;
fieldId fieldId;
VendTable _vendTable, vendTable; // Try out the _vendTable buffer with some modified values

axVendTable = AxVendTable::newVendTable(_vendTable);
vendTable = VendTable::findRecId(_vendTable.RecId);

fieldCnt = sysDictTable.fieldCntWithoutSys(); // Get the fieldcount ignoring the system fields

for (i=1;i <= fieldCnt;i++)
fieldId = sysDictTable.fieldCnt2Id(i);
if (vendTable.(fieldId) != _vendTable.(fieldId))


Dynamics AX 2012 Certifications and TBD List


Below are the Dynamics AX 2012 certifications available starting from September and TBD list

Good day!!

Dynamics AX 2012 – Hands on Labs

Dynamics AX 2012- Hands on Labs now available on PartnerSource, please follow Fee Nolan’s post below

Fee Nolan’s post – click here

Microsoft Dynamics AX 2012 white papers:CodeUpgrade are available for download on MSDN


This series of white papers related to Microsoft Dynamics AX 2012 code upgrade are available for download.

Click here to download
The overview of the white papers are listed below[ from MSDN]

The following white papers are included in this series:


•Code Upgrade Overview – Discusses changes in the code upgrade for Microsoft Dynamics AX 2012.

Application Foundation

•Implementing and Extending the Organization Model – Discusses the organization model in Microsoft Dynamics AX 2012, and provides guidelines for extending the organization model for new types of operating units that are required to support industry vertical scenarios.
•Using the Enhanced Number Sequence Framework – Explains the changes in the number sequence framework for Microsoft Dynamics AX 2012, and provides scenarios for the setup and customization of the framework to match developers’ needs.


•Developing with Table Inheritance – Outlines the developer experience of creating and programming with the table inheritance data model in Microsoft Dynamics AX 2012.
•Eventing – Describes the concept of events and how they can be used in Microsoft Dynamics AX.
•Migrating Extended Data Type Relations – Describes how developers can migrate EDT relations to table relations in the Application Object Tree (AOT) in Microsoft Dynamics AX 2012.
•Using the Policy Framework – Outlines the developer experience of adding a new policy type or extending existing policy types in Microsoft Dynamics AX 2012.

Customer Relationship Management

•Implementing the Global Address Book Framework – Describes the address book framework in Microsoft Dynamics AX 2012, which allows information to be shared across Microsoft Dynamics AX companies and entities through a central repository of users and organizations. It has been enhanced to facilitate easier sharing.


•Implementing Budgeting – Describes new development patterns in budgeting and the implementation of those patterns.
•Implementing the Account and Financial Dimensions Framework – Highlights new patterns used to represent accounts and financial dimensions and describes how to convert the existing patterns to the new Microsoft Dynamics AX 2012 patterns.
•Implementing the Budget Control Framework – Highlights the new budget control framework that was added to Microsoft Dynamics AX 2012. Includes information about key integration patterns for new financial frameworks, how to make budget requests, and how to use the ledger budget control framework with core integration patterns.
•Shared Currencies and Exchange Rates – Highlights the key concepts and APIs that are related to the calculation, display, and storage of currency and exchange rate information.

Human Capital Management

•Implementing and Updating the Human Resources Framework – Describes changes to the human resources framework and how to convert existing data patterns to the Microsoft Dynamics AX 2012 functionality.

Supply Chain Management

•Implementing InventTrans Refactoring – Discusses the refactoring of the InventTrans table and common design patterns. Also discusses how to implement these changes when developing new features or updating existing features.
•Implementing the Item-Product Data Management Framework – Highlights the new patterns that are used to represent item-product master data. When detailing the new patterns, the document also describes the pattern that is being replaced and how developers should approach updating their code.
•Implementing the Operations Resource Model – Describes new patterns that are used for representing resources, resource capabilities, and resource groups, and provides instruction for upgrading and implementing the new operations resource models.