We have successfully implemented GST patches for India localization for Dynamics AX. You can go through the link below:
Please contact us at firstname.lastname@example.org in case you need help in implementing GST patches for DAX.
My long time friends Yogesh Kasat of Real Dynamics and Jilajeet Yadav of Ignify have come out with an excellent book on handling Microsoft Dynamics AX Implementation Projects with ease and higher success rate.
The book describes about the common errors, issues and some real life experiences about AX implementation projects. This book caters to wide range of audience and is an all-in-one guide for DAX implementations.
Do get a copy for yourself. I have got mine 🙂
Here is a good article by Cognitive Group on reasons as to why other ERP consultants should rush to try their expertise in Dynamics AX. It’s a good read.
Thanks for following my blog religiously. Now you can also follow me in Twitter. My tag is @sumitloya
So lets twitter DAX now.
The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.
Here’s an excerpt:
19,000 people fit into the new Barclays Center to see Jay-Z perform. This blog was viewed about 61,000 times in 2012. If it were a concert at the Barclays Center, it would take about 3 sold-out performances for that many people to see it.
In my previous post on Replacing default dimensions, I had provided a job to replace one financial dimension within a default dimension. The job was pretty big and I always thought that Microsoft should have provided some way to do these operations easily. Luckily I found a class that has helped me to condense that job and make it pretty small. I am sharing that job here:
The dimensions for Customer record looks like this before running the job:
Here is the job to change the values. We will change the values for Business Unit, Department and Worker all with this simple job:
static void replaceDefaultDimensionsCondense(Args _args)
* In this job, we will replace the Business Unit Value from BU-001 to BU-002
* and fill in the values for Department as Dep-001 and Worker as 114
CustTable custTable = CustTable::find(‘CUS-00004’); //Customer Record containing Financial Dimension
Struct struct = new Struct(); //Structure to hold the dimension values to replace
container defDimensionCon; //Container to prepare the required values and dimension attribute combination
DimensionDefault dimensionDefault; //Get the replaced dimension recid
DimensionAttributeSetItem dimAttrSetItem; //Table to get active dimensions for the legal entity
DimensionAttribute dimAttribute; //Table to get the Financial dimensions
int i; //For looping
//Loop for required dimensions
while select Name, BackingEntityType from dimAttribute
where dimAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeHcmWorker) &&
dimAttribute.Type != DimensionAttributeType::DynamicAccount
where dimAttrSetItem.DimensionAttribute == dimAttribute.RecId &&
dimAttrSetItem.DimensionAttributeSet == DimensionCache::getDimensionAttributeSetForLedger()
//Add the Dimension name and display value to struct
if (dimAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit))
else if (dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment))
else if (dimAttribute.BackingEntityType == tableNum(DimAttributeHcmWorker))
//Prepare the container
defDimensionCon += struct.fields();
for (i = 1; i <= struct.fields(); i++)
defDimensionCon += struct.fieldName(i);
defDimensionCon += struct.valueIndex(i);
//if there are fields in struct
//Get the DimensionAttributeValueSet table’s Record ID
dimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(defDimensionCon);
//Update to Customer
custTable.DefaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(dimensionDefault, custTable.DefaultDimension);
custTable.DefaultDimension = dimensionDefault;
Dimensions after running the job:
The class AxdDimensionUtil is pretty handy to do all these stuff.
In this post, I will explain how to use data methods in Reports. We will use the same Report model and report that we created in Building a Simple Report–Precision Design.
In AX 2009, AX SSRS had good use of these data methods. But with much better integration, and Reporting framework in AX improving, Data Methods in AX SSRS are reduced to minimal use.
Also the reason is that MS is soon going to do away with .Net Business Connector from next version hence the usage of data methods for many things will be redundant. What I have also noticed is the data methods have return type only as System.String and you will not be able to change this return type. This means, data methods can only return strings.
What I will try and demonstrate here is how to add links in AX reports (to open the corresponding forms).
To achieve this first we will add the reference to SRSDrillThroughCommon project. Do the following:
public partial class SKL_SampleReportPrecision
[DataMethod(), PermissionSet(SecurityAction.Assert, Name = “FullTrust”)]
public static string CustDrillDown(string reportContext, string custAccount)
return DrillThroughCommonHelper.ToCustomerForm(reportContext, custAccount);