Thursday, December 25, 2008

infolog.errorsPerBatch();

Sometimes we get a huge list of repetitive messages in the infolog which I find is sometimes confusing rather than helping user to spot the problem. So in that case developer can use this statement to restrict the number of messages.


infolog.errorsPerBatch(3);


Note : You do not need to reset the value.

Saturday, November 29, 2008

Service Pack 1 for Microsoft Dynamics AX 2009

Microsoft Dynamics AX 2009 Service Pack 1 (SP1) contains the updates that have been issued for Microsoft Dynamics AX 2009 and a number of enhancements and new features to improve the product’s functionality and user experience.
You can download it from here (PartnerSource access required)

Tuesday, September 30, 2008

Microsoft Dynamics ax 4.0 data model overview

Well I was looking for this document from the time I started working on axapta. Finally I got it from the Kashperuk Ivan blog entry. This document is really helpful for beginners as well as experienced programmers. The link is here.

Friday, August 29, 2008

Group Masks

Sometimes in dynamics ax it is required to create the content of the project based upon some prefix. Good news is that it is supported in dynamics ax .U can do this by ‘group mask’ property of the groups. Groups are the folders in dynamics ax.U need to specify the ProjectGroupType property and a regular expression as the group mask property. This will automatically create the contents of project.

Thursday, July 24, 2008

Conditional Breakpoint

Recently while working for one of my projects I was looking for conditional breakpoints in X++.Then I came across BREAKPOINT statement.
This statement triggers the debugger.You could make this conditional by using if statement.

If(counter > 4)
breakpoint;

Sunday, June 22, 2008

WAN Performance Testing

When testing Dynamics Ax application performance over low-bandwidth network (ISDN), the client/server trace can be enabled to give an impression of the amount of activity taking place betweenclient and server for a given form or function. Especially in this respect, the number of calls from client to server or visa versa is decisive for the performance, as each call will cost on average 100 ms.Ideally the Wan performance should be tested using an ISDN connection from the test client to the server, but in lack of a better solution, the Axapta client can be configured to simulate low bandwidth and high latency. The command line is “-bwsim=8000:50:2“ which will simulate a bandwidth 8000 bits per second, a latency of 50 ms and will not delay calls that load application elements.

Wednesday, June 4, 2008

Axapta Filename Extension Naming Conventions

Microsoft Dynamics AX uses several file name extensions for the files that are installed as part of Microsoft Axapta. You can use the following naming conventions to understand the function of these files:

The first letter represents the owner of the file.A: ApplicationK: Kernel

The second letter represents the contents of the file.L: LabelO: ObjectT: TextD: Developer DocumentationH: Online Help

The third letter represents the type of file.D: DataI: IndexC: CacheT: Temporary
For example, a file that has the .ald extension is the Application Label Data file.You can find the following program file types in Microsoft Dynamics AX.

In Microsoft Dynamics AX 4.0, you can find these program file types in the C:\Program Files\Microsoft Dynamics AX\40\Application\Appl\Standard folder.

In Microsoft Dynamics AX 3.0, you can find these program file types in the %Systemdrive%\Documents and Settings\All Users\Application Data\Navision\Axapta Application\Standard folder.


Application Object Data file (Ax.aod)This file contains the Application Object Layer list that you use to change the layer on which you modify the application.

Application Online Help Data and Application Online Help Index files (Ax*.ahd and Ax*.ahi)These files contain the Help files. These files are arranged by language.

Application Developer Documentation Data and Application Developer Documentation Index files (Ax*.add and Ax*.adi)These files contain development Help files. These files are arranged by language.

Application Label Data and Application Label Index files (Ax*.ald and Ax*.ali)These files contain all label values. These values are arranged by language.

Application Label Temporary file (Ax*. alt)This file contains new labels. After Application Object Server (AOS) shuts down, the labels will be stored in .ald files.

Application Label Cache file (Ax*.alc)

Application Object Index file (Ax*. aoi)This file contains an index of all objects in Microsoft Dynamics AX.

User Database file (Ax*.udb)This file contains the list of users, the Component Object Model (COM), the AOS, the connections to Microsoft Dynamics AX, and the types of connections.Note This type is only available for Microsoft Dynamics AX 3.0.

Kernel Online Help Data and Kernel Online Help Index files (Ax*.khd and Ax*.khi)

Thursday, May 1, 2008

Meet Your ERP Implementation Goals and Objectives

It’s no secret that an ERP implementation gone wrong can lead to serious problems for any business. Cost overruns, an inability to meet client requirements and, in the worst case, - damage to client relationships, are just some of the negative side effects caused by a poorly deployed ERP system. I’ve seen several companies invest significant resources in various ERP implementations that have failed to takeoff. One of the fundamental reasons for this that I see time and again is a lack of user acceptance.
For the most part, the problem isn’t the ERP software itself the potentially leading cause of a failed implementation is limited user adoption – the failure to win over the people tasked with using the system on a daily basis. Other causes include improper user training and the quality of third-party support. What i recommend is why not go for phased wise implementation rather than going for one time implementation.
Because this gives time for the employee to understand the system well and gives time to adapt to the new technology...say for example, Your company is divided into departments that each will need to be converted to the new ERP structure. Without a phased approach, your entire company will suffer; because, it will turn your company into a mess if you attempt to convert everyone at once.
With a planned phase wise implementation you will have less problem Setting down guidelines to measure the success of any ERP implementation is a requirement of any project manager. A project manager needs to have experience in developing and implementing ERP solutions. To be sure you have a good project manager, it may be necessary to bring in a consultant who has experience in ERP implementation. This way the goals set will be more guaranteed of success and you will more than likely be able to accomplish the goals in the prescribed order.
Getting people to accept new processes and systems is probably the biggest challenge with any ERP implementation. However, with proper training, most employees will take to a new ERP system once everything is up and running and they start to experience the direct benefits brought on by the solution as a whole.
Implementing an ERP solution all at once can be overwhelming to employees. You can’t take an older employee who’s been doing their books the same way for the past 20 years and throw them into an advanced ERP. This can lead to serious problems!!!

Monday, February 4, 2008

INDIA LOCALISATION ON AX4.0SP2

India localisation on AX4.0SP2 has been released on 21st January,2008 on PartnerSource & CustomerSource.

AX4.0SP2 India localisation is a re-design of the existing India taxes based on the standard tax engine, fully redesigned and reengineered Tax Deducted at Source (TDS) and Tax Collected at Source (TCS). The criterion for redesign and new localisation is that it offers the same functionality as the existing localisation and it expands localisation features by adding taxes like VAT and Service Tax. Custom duty feature is introduced to address import and export transactions.

The following are the highlights of redesigned of AX4.0SP2:
· India features are controlled by a separate configuration key.
· Tax features are parameterized. User will activate only those taxes which are applicable to their business.
· India localisation can be implemented in parallel with the standard AX taxes and countries available in the SYS layer
· User defined tax components and codes
· India taxes can be calculated on all forms in AP, AR and GL modules where standard AX taxes can be calculated
· Calculated tax amounts can be adjusted manually before posting a transaction
· Tax setoff process can be carried out between multiple taxes and multiple registration numbers.
· India Direct taxes – TDS/TCS integrated with the standard AX WHT setup
· Master records include an additional tab for the extensive tax information for the reporting of the different tax types per multiple tax registration. These master records are Company Information, Vendor and Customer including alternate addresses
· The redesigned India Tax engine will be based on the standard tax engine bit establishing additional tabs and fields to be able to accommodate the complex tax requirements. There are many tax types that need to be calculated. These are Sales Tax, VAT, Excise, Service Tax, custom duty and charges. Tax types are made up of components and various tax types and components can be calculated on one document. The tax engine consists of the following :-

o Formulae builder – is a flexible tool which allows a user to devise formulae with
tax component for the different tax types.
o Sales Tax setups, rates, calculations, surcharges and rebates
o VAT setups and calculations
o Excise setups of components, tax on tax calculation formulae
o Service Tax setups and calculations
o Custom duty setups and calculation formulae

· All GL, AP and AR transaction forms are localised to calculate India taxes by means of tabs for India, fields and reports.
· End to end functionality of VAT (Setup to Settlement).
· Posting of service tax on cash basis. Service tax posted to interim accounts on invoicing and transferred to actual accounts on receipt or payment of cash.
· Stock Transfer – localisation of transfer order for Indian taxes and documents
· Inter-company localisation for India Taxes
· Tax Deducted at Source (TDS) – WHT on purchase transactions
· Tax Collected at Source (TCS) – WHT on sales transactions
· Calculation of customs duty on orders and journals.
· Calculation of assessable value in the order forms, as per the legal requirements for customs

Wednesday, January 30, 2008

Number Sequence Framework Part I


Class: NumberSequence

Purpose:
This class is used for generating the sequence from code.It takes following parameters

NumberSequenceCode : This is the sequence code defined on the defined in the numberSequence table.

_makeDecisionLater : Decides whether the number generated is saved in the NumberSequenceList Table or not.If true it is saved , if false it is deleted on ttscommit call.


Flow and methods:

NumberSequence.Num() method is used to get the number. Then the following methods are called in sequence.

NumberSequence.runNumber(): This function calls the checkSetup() Function which apply some validations . Then getNumInternal() is called.

NumberSequence .getNumInternal() : This function calls the function getNumFromList() which returns the number from NumberSequenceList table with status free if any.If no number is returned from the getNumFromList() function then it calls the getNumFromTable() function which generates the new number.This function also insert the newly created number into the numberSequenceList Table with status active.

Other functions:
NumberSequence.abort() : This function should be used when the number generated is discarded. This function set the status of number number in numberSequenceList table to free.

NumberSequence.used() : This function should be called when the number generated is used. This function deletes the generated number from the numberSequenceList table.


Table: NumberSequenceList

On the call of NubmerSeq.GetNumFromTable() function.The generated number is inserted in the NumberSequenceList table with status active.
On the call of NubmerSeq.GetNumFromList() function.The number is updated in the NumberSequenceList table with status active from free status.

On the call of ttscommit after NubmerSeq.abort() function the status of the generated number is changed to the free.NumberSeq.abort() function sets the number Sequence to abort in the application container AbortIdx[];

On the call of NubmerSeq.used() function puts the value of globaltransId in NumberSequenceList Table which is deleted on ttscommit call.