Microsoft Dynamics AX Interview Questions

Q. What is Microsoft Dynamics AX?
Microsoft Dynamics AX is multi-language, multi-currency, industry-specific, global ERP Product and one of the Microsoft’s Dynamics ERP Family.

Q. Difference between edit and display method
Display Indicates that the method’s return value is to be displayed on a form or a report.
The value cannot be altered in the form or report
Edit Indicates that the method’s return type is to be used to provide information for a field that is used in  in a form. The value in the field can be edited.

Q. Difference between perspectives and table collection
Perspectives can organize information for a report model in the Application Object Tree (AOT).
A perspective is a collection of tables. You use a report model to create reports.
Table collection is a collection of table, which sharing across all the virtual companies.

Wish to Learn Microsoft Dynamics AX? Enroll now for FREE demo on Microsoft Dynamics AX Training.

Q. Why we use virtual companies?
Virtual company accounts contain data in certain tables that are shared by any number of company accounts. This allows users to post information in one company that will be available to another company.

Q. How can we restrict a class to be further extended?
Using Final Keyword for ex: public final class

Q. Which classes are used for data import export?
SysDataImport and SysDataExport

Q. From which table u can get the user permissions stored in Ax?
AccessRightList table.

Q. What should we do if we need last record to be active when a form is opened?
In properties of datasource table set the StartPosition property as last.

Q. What is the sequence of events while a report is generated?
Init, Run, Prompt, Fetch, send,Print

Q. Name few X++ classes/Coreclasses related to Queries?
Query, QueryRun, QueryBuildRange, QueryBuildDataSource, QueryBuildLink

Q. What is an index?
An index is a table-specific database structure that speeds the retrieval of rows from the table. Indexes are used to improve the performance of data retrieval and sometimes to ensure the existence of unique records.

Q. Define IntelliMorph
IntelliMorph is the technology that controls the user interface in Microsoft Dynamics AX. The user interface is how the functionality of the application is presented or displayed to the user.
IntelliMorph controls the layout of the user interface and makes it easier to modify forms, reports, and menus.

Q. Define MorphX  
The MorphX Development Suite is the integrated development environment (IDE) in Microsoft Dynamics AX used to develop and customize both the Windows interface and the Web interface.

Q. Define X++  
X++ is the object-oriented programming language that is used in the MorphX environment.

Q. Differentiate refresh(), reread(), research(), executequery()
refresh() will not reread the record from the database.  It basically just refreshes the screen with whatever is stored in the form cache.
reread() will only re-read the CURRENT record from the DB so you should not use it to refresh the form data if you have added/removed records.  It’s often used if you change some values in the current record in some code, and commit them to the database using .update() on the table, instead of through the form datasource.  In this case .reread() will make those changes appear on the form.
research() will rerun the existing form query against the data source, therefore updating the list with new/removed records as well as updating existing ones.  This will honour any existing filters and sorting on the form.
executeQuery() is another useful one.  It should be used if you have modified the query in your code and need to refresh the form.  It’s like
research() except it takes query changes into account.

Q. Define AOT
The Application Object Tree (AOT) is a tree view of all the application objects within Microsoft Dynamics AX. The AOT contains everything you need to customize the look and functionality of a Microsoft Dynamics AX application

Q. Define AOS  
The Microsoft Dynamics AX Object Server (AOS) is the second-tier application server in the Microsoft Dynamics AX three-tier architecture.
The 3-tier environment is divided as follows:
1. First Tier – Intelligent Client
2. Second Tier – AOS
3. Third Tier – Database Server
In a 3-tier solution the database runs on a server as the third tier; the AOS handles the business logic in the second tier. The thin client is the first tier and handles the user interface and necessary program logic.

Q. Difference between temp table and container.
1. Data in containers are stored and retrieved sequentially, but a temporary table enables you to define indexes to speed up data retrieval.
2. Containers provide slower data access if you are working with many records. However, if you are working with only a few records, use a container.
3. Another important difference between temporary tables and containers is how they are used in method calls. When you pass a temporary table into a method call, it is passed by reference. Containers are passed by value. When a variable is passed by reference, only a pointer to the object is passed into the method. When a variable is passed by value, a new copy of the variable is passed into the method. If the computer has a limited amount of memory, it might start swapping memory to disk, slowing down application execution. When you pass a variable into a method, a temporary table may provide better performance than a container

Q. What is an EDT, Base Enum, how can we use array elements of an EDT?
EDT – To reuse its properties. The properties of many fields can change at one time by changing the properties on the EDT. Relations can be assigned to an edt are known as Dynamic relations.
EDT relations are Normal and Related field fixed.
Why not field fixed – field fixed works on only between two tables 1- 1 relation. And Related field fixed works on 1- many edt uses related field fixed.
BaseEnum – which is a list of literals. Enum values are represented internally as integers. you can declare up to 251 (0 to 250) literals in a single enum type. To reference an enum in X++, use the name of the enum, followed by the name of the literal, separated by two colons . ex -NoYes::No.

Q. Definition and use of Maps, how AddressMap (with methods) is used in standard AX?
Maps define X++ elements that wrap table objects at run time. With a map, you associate a map field with a field in one or more tables. This enables you to use the same field name to access fields with different names in different tables. Map methods enable to you to create or modify methods that act on the map fields.
Address map that contains an Address field. The Address map field is used to access both the Address field in the CustTable table and the ToAddress field in the CustVendTransportPointLine table

Q. What is the difference between Index and Index hint?
Adding the “index” statement to an Axapta select, it does NOT mean that this index will be used by the database. What it DOES mean is that Axapta will send an “order by” to the database. Adding the “index hint” statement to an Axapta select, it DOES mean that this index will be used by the database (and no other one).

Q. How many types of data validation methods are written on table level?
aosvalidateInsert(), aosvalidateRead(),aosvalidateUpdate().

Q. How many types of relations are available in Axapta, Explain each of them.
Normal Relation: enforce referential integrity such as foreign keys. For displaying lookup on the child table.
Field fixed: works as a trigger to verify that a relation is active, if an enum field in the table has a specific value then the relation is active. It works on conditional relations and works on enum type of data.
Ex- Dimension table
Related field fixed: works as a filter on the related only shows records that match the specified value for an enum field on the related table.

Q. When the recid is generated, what is its utility?
When the record is entered in the table the recid is generated by the is unique for each table.

Q. Difference between Primary & Cluster index.
Primary index: It works on unique indexes. The data should be unique and not null. Retrieve data from the database.
Clustered Index: It works on unique and non unique indexes.retrieve data from the AOS.
The advantages of having a cluster index are as follows:
1. Search results are quicker when records are retrieved by the cluster index, especially if records are retrieved sequentially along the index.
2. Other indexes that use fields that are a part of the cluster index might use less data space.
3. Fewer files in the database; data is clustered in the same file as the clustering index. This reduces the space used on the disk and in the cache.
4. The disadvantages of having a cluster index are as follows:
5. It takes longer to update records (but only when the fields in the clustering index are changed).
6. More data space might be used for other indexes that use fields that are not part of the cluster index (if the clustering index is wider than approximately 20 characters).

Check Out Microsoft Dynamics AX Tutorials

Q. How many kind of lookups can be made and how.
By using table relations
1. Using EDT relations.
2. Using morphx  and using X++ code(Syslookup class).

Q. How many types of Delete Actions are there in Standard Ax and define the use of each
1. None
2. Cascade
3. Restricted
4. Cascade+Restricted.

Q. What is the function of super()
This method calls the system methods to execute.
It is used to instantiating the variables at the parent class. Used for code redundancy.

Q. Utility and use of find method.
All the tables should have at least one find method that selects and returns one record from the table that matches the unique index specified by the input parameters. The last input parameter in a find method should be a Boolean variable called for update or update that is defaulted to false. When it is set to true, the caller object can update the record that is returned by the find method.

Q. What  are the different types of Table groups defined on table properties?
1. Miscellaneous
2. Parameter
3. Group
4. Main
5. Transaction
6. WorkSheetHeader
7. WorkSheetLine

Q. Multiple inheritance possible or not, if not how can we overcome that.
In X++, a new class can only extend one other class; multiple inheritance is not supported. If you extend a class, it inherits all the methods and variables in the parent class (the superclass).
We can use Interfaces instead of multiple inheritance in Ax.

Q. Do we need to write main method, give reasons
Yes, but to open the class from action menu item we have to create main method of class.

Q. What is difference between new & construct method
new(): used to create a memory to the object.
Construct():  You should create a static construct method for each class. The method should return an instance of the class.

Q. What is the utility of the RunOn property
Application objects such as reports, tables, and methods can run on the application object server (AOS) or the client. An object can also have the RunOn property value set to Called from. Objects set to Called from can run from either the client or server, depending on where the object is called from. This topic describes the RunOn property, tiers that class objects can run on, and hints about using AOSRunMode.
Default value of RunOn for Classes     –         Called from
MenuItems                 –         Client

Q. What is main class used in batch process OR which class will you inherit to make a batch job
RunBaseBatch  class

Q. How can we make a batch job occur at regular interval
– Using RunbaseBatch

Q. What is the main utility of classes in standard Ax
–   For business logic

Q. Which class is called when we create a SO/PO.
SalesFormLetter and PurchFormLetter

Q. What is the basic structure of a form

Q. Properties of a form datasource
Name, Table, Index, AllowCheck, AllowEdit, AllowCreate,
AllowDelete, StartPosition,JoinSource, LinkType.

Q. validateWrite() method can be written in form datasource as well as table level, when should we write it in form DS and when in table. Similar in case of write() method
When we want the validation at the table level means in every form where this table is uses, we can write at the table level.
If we want validations at the particular form and it doesn’t effect to the other forms where this table was used, then we can use form level validations.

Q. How can we call table level methods from form DS (similar methods)
By creating the variable to the table and with tablevariable.methodname()

Q. What is the difference between form init() & DS init()
Form init(): init is activated immediately after new and creates the run-time image of the form.
DS init(): Creates a data source query based on the data source properties.
The form data source init method creates the query to fetch data from the database and sets up links if the form is linked to another form.

Q. When a form opens what are the sequential methods called.
Form init(), DataSource init(), Form run(), DataSource executeQuery(), canClose(), close().

Q. Where is the best place to write code to perform filter in a form
FormDataSource  – executeQuery() and call this method in the design field of the form.

Q. What are the different types of menu items available, explain each of them
Display – for Form
Output  – for Report
Action   – for classes.

Q. Difference between pass by reference and pass by value?
Pass By Reference: In Pass by reference address of the variable is passed to a function. Whatever changes made to the formal parameter will affect to the actual parameters
– Same memory location is used for both variables.(Formal and Actual)-
– it is useful when you required to return more than 1 values
Pass By Value:
– In this method value of the variable is passed. Changes made to formal will not affect the actual parameters.
– Different memory locations will be created for both variables.
– Here there will be temporary variable created in the function stack which does not affect the original variable.
In case of pass by value, the change in the sub-function will not cause any change in the main function whereas in pass by reference the change in the sub-function will change the value in the main function.
Pass by value sends a COPY of the data stored in the variable you specify, pass by reference sends a direct link to the variable itself. So if you pass a variable by reference and then change the variable inside the block you passed it into, the original variable will be changed. If you simply pass by value, the original variable will not be able to be changed by the block you passed it into but you will get a copy of whatever it contained at the time of the call.

Q. What are the two most important methods on the Report?

Q. Visual SourceSafe and MDAX 4.0
I have installed Visual SourceSafe version 6 sp6. I want to use it inside AX. When I use the development tools version control – setup system settings and add a database, I receive this error:
“COM object of class ‘SourceDepot.SDConnection’ could not be created. Ensure that the object has been properly registered on computer ‘WMLI009230’”.
If I then use version control – setup – Version control parameters and change the Version control system to Visual Source Safe I receive this error:
“Cannot create instance of CLSID_VSSDatabase. Check that Visual SourceSafe client is installed properly”.
Do you have any solution to this problem?
A: Yes, there is a solution. You need to use VSS 2005.

Q. Sub-contract in AX4
I’ve been looking at the new sub-contracting processes in AX 4 for vendor production. This is where a company supplies raw material to a sub-contractor and in a single operation the sub-contractor makes a finished product or sub-assembly.
I can get the sub-contractor’s route operation updated when I post a purchase order delivery note onto the related sub-contract purchase order. After which I get it to post a route card journal onto that operation, but I still have to post a report as finished journal (or update report as finished) on the production order. Normally, when you post a route card journal you have the option of posting report as finished if you’re updating the last operation.
Is there a setup I need to do to accomplish this?
A: Unfortunately, it is currently not possible to use automatic report as finished feature when posting a purchase order from sub-contractor. It simply follows same rules as for the rest of automatic journal postings.
Automatic report as finished parameter is always copied from Production parameters to the header of route card journal, but copied to the journal lines only when a user manually enter the lines. That is the common rule for route card journal.

Q. ABC Codes
I am doing data conversion for the item form. There is a field called ABC codes (Items form- others tab). Now, these item codes have values None, A, B, and C. I don’t know what these stand for. I also checked the base enums but they all say just A, B, and C under the properties field.
I have to update the ABC codes for something called “fast pick items” which I guess is a customized value.
Can you give an idea what this particular value is for?
A: ABC is a classification of your inventory based on sales. You have a few different categories in which to rank the items too.
Here is an example from my company:
The A items account for the top 80% of sales performance, B is 15% and C is 5%. Some items may be ranked high on the revenue scale (A), but margin could be lower (B or C), which would represent an item that we don’t get great margin on, but sell quite a bit of.
I hope the example makes it a bit clearer to grasp.

Q. User Admin is not connected to employee
I am getting the following error when I click on HR > Journal > Absence > Request.
“User admin is not connected to employee”
What does it mean? What do I do from here?
A: You need to check Administration menu > Users > select Admin user > User relations (button) and finally relate the user to an employee (General tab).

Q. Axapta Object Server 4.0 not restarting
We have single test server AXTST for Ax 40sp1 with 2 AOS installation and 2 Application files and SQL server 2005 on it with 2 AX databases. We have plans for restarting AXTST every Sunday at 03:50:00 after midnight. But after restarting the server on AOS, server 02 restarted automatically but 2nd server did not restart automatically. I got these error messages instead:
Time: 04:07:11
Source: MSSQL$SQL2005
Type: FailureAud
Event ID: 18456
Computer: AXTST
Login failed for user ‘NT AUTHORITYSYSTEM’. [CLIENT: ]
Time: 04:07:11
Source: Report Server Windows
Type: Error
Event ID: 107
User: NA
Computer: AXTST
Report Server Windows Service (SQL2005) cannot connect to the report server database.
Time: 04:07:12
Source: MSSQL$SQL2005
Type: FailureAud
Event ID: 18456
Computer: AXTST
Time: 04:07:12
Source: Dynamics Server 01
Type: Error
Event ID: 140
User NA
Computer: AXTST
Object Server 01: Fatal SQL condition during login. Error message:
“[Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database
“Demo5Ax40” requested by the login. The login failed.
Time: 04:07:12
Source: Dynamics Server 01
Type: Error
Event ID: 163
User NA
Computer: AXTST
Object Server 01: SQL diagnostics: [Microsoft][ODBC SQL Server Driver][SQL
Server]Cannot open database “Demo5Ax40” requested by the login. The login
failed.. Connect information was: Userid = [], Database = [Demo5Ax40], Server
= [AXTSTSQL2005], DSN = [], Other = []
Time: 04:07:12
Source: Dynamics Server 01
Type: Information
Event ID: 110
User NA
Computer: AXTST
Object Server 01: Server main session is being destroyed.
Time: 04:07:12
Source: Dynamics Server 01
Type: Information
Event ID: 108
User NA
Computer: AXTST
Object Server 01: Dynamics Server has been stopped
Can you give some tips on how to deal with this?
A: Try a delayed service restart after the reboot (net stop/net start). It is most probable that the SQL is not accessible in current time.

Q. Reporting Server Role for AX 4.0
I am installing the AX Reporting Server Role, and I have to specify the source database. I have several databases (development, testing, UAT, training) and I want to be able to use them all.
Do I have to install the role on four separate servers?
A: There is no need to install the role on separate servers. If you look in Administration > Setup > Business analysis > Reporting services, you will see on the advanced tab, SSRS options AX report folder (defaults to Dynamics) and data source name (defaults to Dynamics Database).
The installer, when you specify the source database, creates the Dynamics Database data source that will contain “data source= SQL server you specified; initial catalog=AX database you specified”.
You can use as many AX databases as you like from a single reporting server, but you have to set up the different AX report folder names and the data source name in each AX environment. You can then create these folders and data sources on the reporting server. Use the ones created by install as a template and you are set to go.

Q. Enterprise Portal Error message
I have two Windows 2003 standard server with the latest updates under one domain. The first server SQLDB01 has SQL server 2000 with sp4 installed and Axapta database. The 2nd server AXSRV01 has Axapta server and I have two installations on it with Ax 3.0 sp4.
I now want to install the enterprise portal on the server. But when I tried to install at the SQL server SQLDB01 and change the Identity to local administrator and to TEST in Axapta, I got this error message:
“The Microsoft Axapta Business Connector was loaded without problems. Could not logon to Microsoft Axapta.
This may be due to wrong or unspecified user name and password for COM-logon in Axconfig.axc, or permissions to the COM-logon do not exist.
Error information
Method ‘logon2’ in COM object of class ‘AxaptaComConnector.Axapta2’ returned
error code 0x80004005 (E_FAIL) which means : Microsoft Axapta Error : An illegal directory structure for Axapta has been detected.
The sub-directory V:Axapta Application SP4 in does not exist. Please restart the Axapta Business Connector before logging on.
“V:” is shared Directory for Application on the AXSRV01 server.
Then I tried to register Enterprise Portal at Axapta server AXSRV01 then “identity” to local Administrator. I got this error message instead:
“The Microsoft Axapta Business Connector was loaded without problems.
Could not logon to Microsoft Axapta
This may be due to wrong or unspecified user name and the password for COM-logon in Axconfig.axc, or that permissions to the COM-logon do not exist.
Error information
Method ‘logon2’ in COM object of class ‘AxaptaComConnector.Axapta2’ returned Error code 0x80004005 (E_FAIL) which means : SQL error : SQL has reported the following error:
[Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server does not exist or access denied.. Connect information was: Userid = [bmssa], Database =
Server = [WMSI002561E], DSN = [], Other = [] You may refer to the error log file for further details. Retry the operation?
Please restart the Microsoft Axapta Business Connector before logging on.
On both servers, the Administrator has the same password.
Can you tell me what might have caused the problem?
A: You need to use a domain user account to use the .NET Business Connector. A local administrator account will not do. Check the implementation guide for more information.

Q. Can’t find Rapid Configuration Toolkit (RCT) anymore
The RCT download site somehow disappeared from PartnerSource. I know it was there because I just saw it the other day.
Do you know where I can get it?
A: Yes. Try visiting this site to download:


Q. Microsoft.Dynamics.BusinessConnectorNet.Axapta in BatchRuns
I am successfully using the Microsoft.Dynamics.BusinessConnectorNet.AxaptaClassLibrary to connect several independent AX-Installations. Now I am trying to work with BatchRuns to have my Systems connected.
Although I am using <> the Logon Method of my Axapta-Object does not work at all.
The BatchQue and the BatchJob are running under my User Id, so I don’t see any User Rights problem.
Is it a known bug, that the dotNet -Connector cannot be used in BatchRuns?
Do you have any ideas on how to deal with this sort of problem?
A: Class BatchRun is instantiated on the server. You will need to check your properties settings.

Q. Active Directory import wizard
I installed Dynamics AX 4.0 for evaluation. I am now trying to add a user importing users from the Active Directory.
The user Id was not filled out. When I tried to fill out the user Id manually I noticed that the next button is not enabled. It is enabled only for users with a user ID filled out.
Is there another way to add users?
A: Yes, there is. You need to add the user id and check the ‘select’ checkbox; then the ‘Next’ button should become enabled.

Q. AX4 SP 1 Location wizard
I’m trying to create locations in a warehouse (in the usual Aisle-Rack-Shelf sequence), but the Wizard only creates Aisles. I don’t know if I’m missing something or the wizard is broken in AX4.
Can you help me out?
A: I don’t think anything’s wrong with the wizard.
In the warehouse, look for tab Location names. For instance, Rack, Level and Bin/Position should be switched on. Then the wizard will create locations as well.

Q. Delete BOM records
Is it possible to delete bill of material records using the excel import/export tool?
If not, what would be my best option?
A: Your best option would be to use the SQL table browser or SQL code to delete the BOM.

Q. Changing the language in Axapta 4.0
How can we change the language in Axapta 4.0?
A: You can change the default language by a user in the Tools/Options/Language and change the language. Your option is limited to the languages that you have purchased – under the language tab in the License information.
You have to close and re-open AX for the language change to take effect.
The default language codes (for sending out invoices, etc.) are setup under the Company information in the ‘Other tab’.

Q. 4.0 SP1 User session no longer valid
I’ve recently upgraded a 3.0 SP4 Application to a 4.0 SP1. Everything went fine, but when users (or me, the Admin user) try to post a Purchase Order or a Sales Order or any type of document doesn’t matter, this message is displayed:
“Your Microsoft Dynamics AX user session is no longer valid. Logoff your computer and logon again. If the problem persists, contact your Microsoft Dynamics administrator.
Tracing code shows that error appears in Formletter.dialog() method, not always in same line code.”
Can you help me with this?
A: You will need to verify if you have Windows Server 2003 hot fix 913184 for the Remote Procedure Call engine. If you don’t have it, you need to get it to fix your problem.

Explore Microsoft Dynamics AX Sample Resumes! Download & Edit, Get Noticed by Top Employers!Download Now!

Q. Invite multiple attendees in MDY AX CRM-module
Do you know how to invite multiple attendees for an activity in the CRM-module of AX when these attendees are not fellow employees?
A: Yes. It is possible to do this in AX 4.0 where you press the attendees’ button on the activities form and add attendees by adding records. The only field required is the attendees’ e-mail addresses.
In AX3.0 and earlier versions, it is not possible. The attendees’ functionality is primarily a quick way of generating activities for your co-workers.

Q. Synchronizing Data-Dictionary-ERROR
On which tables does synchronization have the highest probability of failing?
Error message is as follows:
“Error Synchronize cannot execute a data definition language command on ().
The SQL database has issued an error.
Error Synchronize cannot execute a data definition language command on ().
The SQL database has issued an error.
Error Synchronize cannot execute a data definition language command on ().
The SQL database has issued an error.
Error Synchronize Problems during SQL data dictionary synchronization.
The operation failed.
Info Synchronize failed on 3 table(s)”
Can you enlighten me concerning this matter?
A: Yes, definitely. On the SQL administration form, verify the Check / Synchronize option under Table actions is activated. This should fix the error message that you got.

Q. Maintenance Strategy
We recently went live with Axapta 3.0 and feel the need to develop a strategy for maintaining our data.
What is considered the best practices for data maintenance? When and how often do you perform the following?
-Consistency Checks
-Database Log Cleanup
-Performance Analysis
Plus, are there any other tasks deemed important to properly maintain the database?
A: These are the standard maintenance strategy:
> Re-indexing
This is done once a year after end of year activities.
> Consistency Checks
It is a good practice to run checks after you set up new static data, for instance customers, items, routes, etc.
> Synchronization
This is needed only when upgrading the data structure; for instance tables or EDTs.
> Database Log Cleanup
There must be some reason why you are logging and what. You should determine this issue according to your company security policy.
> Performance Analysis
This is done the first time when you go live and then once a year after end of year activities and re-indexing.
Meanwhile, other tasks deemed important to proper database maintenance include the following:
– Watch that your backups do not fill the data or log disk.
– Take backups also from the document directories.
– Run SQL trace on selected users to find long running queries.
– Monitor reloading time and count of records of entire table cached tables.

Q. Rename AOS instance
I installed 2 instances of AX40 in one computer.
Can I rename one of the instances?
Or do I have to uninstall the instance first, then reinstall and assign the new name?
A: You have to uninstall the instance and reinstall it with the new name. AOS in AX 4.0 is now a service and services cannot be renamed.


Get Updates on Tech posts, Interview & Certification questions and training schedules