Friday, September 20, 2013

Email and PDF

static void sendabsenceEmailmail(Payperiod _Payperiod)
{
    SysMailer   mailer = new SysMailer();
        SysEmailParameters parameters = SysEmailParameters::find();
        str 500 String;

        HRMParameters   HRMParameters;
        MSCpayperiod    mscpayperiod;

        ;

        select * from MSCpayperiod where MSCpayperiod.Payperiod == _Payperiod;

        if (parameters.SMTPRelayServerName)
        {
            mailer.SMTPRelayServer(parameters.SMTPRelayServerName,
                               parameters.SMTPPortNumber,
                               parameters.SMTPUserName,
                               SysEmailParameters::password(),
                               parameters.NTLM);
        }
        else
        {
            mailer.SMTPRelayServer(parameters.SMTPServerIPAddress,
                               parameters.SMTPPortNumber,
                               parameters.SMTPUserName,
                               SysEmailParameters::password(),
                               parameters.NTLM);
        }


        mailer.subject(mscpayperiod.Description + " 2013 payroll needs to have approval");

        HRMParameters = HRMParameters::find();


        mailer.fromAddress(parameters.MSCSMTPEmail);//"somanna@msc-consulting.com.sg");
        mailer.ccs().appendAddress(Parameters.MSCSMTPEmail);
        //mailer.ccs().appendAddress(HRMParameters.AccountEmail);
        //mailer.ccs().appendAddress(CCemail);

       mailer.tos().appendAddress(HRMParameters.MSCHRMCIO);

        String = "Approved  payroll ";
        mailer.htmlBody(String);
        mailer.attachments().add("c:\\mscpayroll\\SR_paysReport.pdf");

        if(HRMParameters.MSCHRMCIO == "")
        {
            info(strFmt("Email can't be sent as Email Address for the CIO is not set in HRM parameters"));
        }
        else
        {
           mailer.sendMail();
            info(strFmt("Email is sent to CIO -> %1",HRMParameters.MSCHRMCIO));
       }


}
...............................................................................................................................................................

static void SR_SaveReportToPDFFromController(Payperiod _payperiod)
{
    MSCpayrollApprovalController  MSCpayrollApprovalController;
    mscPayrollApprovalContract    mscPayrollApprovalContract;
    Args                    args = new Args();
    SrsReportRunImpl        srsReportRun;
    CustInvoiceJour         custInvoiceJour;
    ReportName              reportName = "mscpayrollApprove.AutoDesign";
    ;

    select firstOnly custInvoiceJour;
    args.record(custInvoiceJour);

    MSCpayrollApprovalController = new MSCpayrollApprovalController();
    MSCpayrollApprovalController.parmReportName(reportName);

    mscPayrollApprovalContract = MSCpayrollApprovalController.parmReportContract().parmRdpContract();
    mscPayrollApprovalContract.parmPayPeriod(_payperiod);
    //mscPayrollApprovalContract.parmHcmWorkerRecId(5637144576);


    srsReportRun = MSCpayrollApprovalController.parmReportRun() as SrsReportRunImpl;

    MSCpayrollApprovalController.parmReportRun(srsReportRun);
    MSCpayrollApprovalController.parmReportContract().parmPrintSettings().printMediumType(SRSPrintMediumType::File);
    MSCpayrollApprovalController.parmReportContract().parmPrintSettings().overwriteFile(true);
    MSCpayrollApprovalController.parmReportContract().parmPrintSettings().fileFormat(SRSReportFileFormat::PDF);
    MSCpayrollApprovalController.parmReportContract().parmPrintSettings().fileName("c:\\mscpayroll\\SR_paysReport.pdf");
    MSCpayrollApprovalController.runReport();
}
...................................................................................................................................................................

Wednesday, September 11, 2013

lastpart interview Questions

-->
  1. What’s new in Dynamics AX 2012
  2. OOPs concepts
  3. Definition of AOT elements
  4. Layers & their usage.
  5. Differences:
    1. AX 4.0 & AX 2009
    2. MorphX & Intellimorph
    3. RunBase & RunBaseBatch
    4. Element & this
    5. COM & .NET Business Connector
    6. Concurrent user & Named user
    7. Primary key & Foreign key
    8. Construct & New methods
    9. Normal, field fixed & related field fixed relations
    10. Table & View in AOT
    11. Auto design & Generated design in reports
    12. Business connector & External Connector
    13. VSS & TFS
    14. Refresh(),reread(),research() & executeQuery()-(http://kashperuk.blogspot.com/2010/03/tutorial-reread-refresh-research.html)
    15. formDataSource.queryRun().query() & formDataSource.query()-(http://kashperuk.blogspot.com/2010/03/tutorial-reread-refresh-research.html)
  6. Delete actions & its types
  7. Table groups & its types
  8. Creation of PO & SO thru code
  9. Flow of SSRS report generation in Dynamics AX-
AX menu item from rich client->Report viewer opens->Issues request to report server-> Report server connects Dynamics AX(.NET BC)->Fetches the data->Return to client
  1. AOS Load balancer concept/Clustering
  2. Dynamics AX security hierarchy
  3. AX 2009 Workflow configuration
  4. AIF in Dynamics AX 2009
  5. Web Services concept
  6. Version Control System in AX 2009
  7. Reverse Engineering tool
  8. MS Visio UML(Data & Object),ERD
  9. Unit test framework
  10. Visual Form & Report designer
  11. AX 2009 Debugger concepts
  12. Cross reference tool
  13. Document Management
  14. Print Management
  15. Types of joins in AX
  16. Containers and its functions
  17. Data Crawler
  18. Intrinsic functions
  19. Application Hierarchy Tree
  20. Optimistic Concurrency Control
  21. Concept of cubes & MDX queries in SQL.
  22. Integration from .NET
  23. Caching mechanism in AX
  24. Events on a form & report
  25. Purpose of following methods in AX
    1. Init(),run(),validatewrite(),write(),close(),canClose() etc.
  26. What is cloud computing? How it is configured in AX?
Data dictionary

1.What is an EDT, Base Enum, how can we use array elements of an EDT,
2.Definition and use of Maps, how AddressMap (with methods) is used in standard AX
3.What is the difference between Index and Index hint?
Utility and use of find method.
4.How many types of data validation methods are written on table level?
5.How many types of relations are available in Axapta, Explain each of them.
6.When the recid is generated, what is its utility, what are the different types of Table groups defined on table properties.
7.Difference between Primary & Cluster index.
8.How many kind of lookups can be made and how.
9.How can we utilize field groups in forms
10.How many types of Delete Actions are there in Standard Ax and define the use of each
11.If any record is created in table I want to fetch the date & time stamp, how will you do that
12.What is the function of super()
Classes

1. What is an abstract class, what is the utility of an abstract method
2. Multiple inheritance possible or not, if not how can we overcome that.
3. What is an interface, Why do we implement it
4. Do we need to write main method, give reasons
5. What is difference between new & construct method
6. What is the utilty of the RunOn property
7. What is main class used in batch process OR which class will you inherit to make a batch job
8. How can we make a batch job occur at regular interval
9. What is the main utility of classes in standard Ax
10. Which class is called when we create a SO/PO.
11. What are classes used to write query.
12. What is a static method, why do we make static methods and where can we write it.
13. When do we make methods private or protected.Forms
1. What is the basic structure of a form
2. Utility of init(), run(), wait() methods
3. What are different types of Link Types available in a form datasource, justify each of them
4. Properties of a form datasource
5. 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
6. How can we call table level methods from form DS (similar methods)
7. What is the difference between form init() & DS init()
8. When a form opens what are the sequential methods called.
9. Where is the best place to write code to perform filter in a form
10. What are the different types of menu items available, explain each of them
11. A action type menu item is attached to a form but in the drop down the menu item is not appearing, what could be the problem
Reports

1. What are the two most important methods
2. When do block the super() method of fetch
3. Can we make a report from wizard, if yes from where
4. What is a Programmable Section, how we use it in reports
5. What is the difference between Auto Design Spec & Generated Design
6. How can we sort the DS, what facility we can get in by placing fields in Ranges
7. What is the role of executeSection
8. What are Queries, how do we use them
Menu Items

1. What is the use of Parameter, Enum TypeParameter/Enum Parameter properties of display
2. Why do we provide Configuration key & Security key
3. Normally what do we attach in Output
4. Normally what do we attach in Action
General Questions

1. What is difference between select & select firstonly statements
2. What are the keywords used to access data from "multiple companies" and "one company to another company".
3. How can we override a lookup
4. How do the following methods work in a form DS.
ds.refresh(), ds.research(), ds.reread(), in what situation we should these methods
5. On closing a form name the methods which are invoked
6. What are security key/configuration keys, how do we use it in Ax
7. How can we provide user level/user group level security
8. What is a virtual company
9. What is Visual MorphXplorer, what do we do with that?(Reverse engineering tool has replaced Visual MorphXplorer)
10. What is the function of Application Hierarchy Tree
11. If you want to monitor the database activity, where can you get that
12. Where can we find the Label log and what is its utility
13. What are the tools you will use to upgrade any object
14. What is the difference between display() and edit() methods, how do we use each
15. What is the use of System Documentation/Application Developer Documentation/Application Documentation
Few More Questions on DAX

1.What are the classes, Tables, Forms and Methods used to post the sales orders.
2. What are the classes, Tables, Forms and Methods used to post the purchase orders.
3. What are the classes, Tables, Forms and Methods used to post the Ledgers.
4. What are the classes, Tables, Forms and Methods used to post the Inventory.
5. What is the base class to send the on-boad E-mailing.
6. What are the storage Dimensions?
7. What are the Item Dimensions?
8. What is the difference between RunBase and RunBaseBatch?
9. How do you create a NumberSequence for existing Module and also fro new Module.
10.What is the difference between Insert and doinsert.
11.What is the Runbase Stack?

some more interview Questions

1.  Difference between following
condel :- Use condel to delete one or more items from a container.
confind :- Use confind to locate a sequence of items in a container. 
conins :- Use conins to insert some items into a container.
conlen :- Use conlen to find out how many items there are in a container.
connull :- Use connull to explicitly dispose of the contents of a container.
conpeek :- Use conpeek to extract an item from a container, and to convert it into another data type  
conpoke :- Use conpoke to replace (poke) an item in a container.
2. 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.     
3. 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.  
   4.What are the 4 types of files we need to copy to the standard folder?
 *.aod, *.ahd, *.ald, *.add, *.khd
    5.  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.
    6. How can we restrict a class to be further extended?
 using Final Keyword for ex: public final class
    7.Which are classes are used for data import export?
 SysDataImport and SysDataExport
    8. From which table u can get the user permissions stored in Ax?
 AccessRightList table.
    9.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.
    10. What is the sequence of events while a report is generated?
 Init, Run, Prompt, Fetch, Print
    11. Name few X++ classes/Coreclasses related to Queries?
     Query, QueryRun, QueryBuildRange, QueryBuildDataSource, QueryBuildLink
    12. 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

QUES: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.

QUES: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.

QUES:Define  X++   

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

QUES:Differenciate 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.
 

QUES: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

QUES: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:
First Tier – Intelligent Client • Second Tier – AOS • 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.

QUES: Difference between Index and Iindex 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).

QUES: 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
 

Data dictionary
1.What is an EDT, Base Enum, how can we use array elements of an EDT,
2.Definition and use of Maps, how AddressMap (with methods) is used in standard AX
3.What is the difference between Index and Index hint?
Utility and use of find method.
4.How many types of data validation methods are written on table level?
5.How many types of relations are available in Axapta, Explain each of them.
6.When the recid is generated, what is its utility, what are the different types of Table groups defined on table properties.
7.Difference between Primary & Cluster index.
8.How many kind of lookups can be made and how.
9.How can we utilize field groups in forms
10.How many types of Delete Actions are there in Standard Ax and define the use of each
11.If any record is created in table I want to fetch the date & time stamp, how will you do that
12.What is the function of super()

 
Classes

1. What is an abstract class, what is the utility of an abstract method
2. Multiple inheritance possible or not, if not how can we overcome that.
3. What is an interface, Why do we implement it
4. Do we need to write main method, give reasons
5. What is difference between new & construct method
6. What is the utilty of the RunOn property
7. What is main class used in batch process OR which class will you inherit to make a batch job
8. How can we make a batch job occur at regular interval
9. What is the main utility of classes in standard Ax
10. Which class is called when we create a SO/PO.
11. What are classes used to write query.
12. What is a static method, why do we make static methods and where can we write it.
13. When do we make methods private or protected.Forms
14. What is the basic structure of a form
15. Utility of init(), run(), wait() methods
16. What are different types of Link Types available in a form datasource, justify each of them
17. Properties of a form datasource
18. 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
19. How can we call table level methods from form DS (similar methods)
20. What is the difference between form init() & DS init()
21. When a form opens what are the sequential methods called.
22. Where is the best place to write code to perform filter in a form
23. What are the different types of menu items available, explain each of them
24. A action type menu item is attached to a form but in the drop down the menu item is not appearing, what could be the problem
 
Report
 
1. What are the two most important methods
2. When do block the super() method of fetch
3. Can we make a report from wizard, if yes from where
4. What is a Programmable Section, how we use it in reports
5. What is the difference between Auto Design Spec & Generated Design
6. How can we sort the DS, what facility we can get in by placing fields in Ranges
7. What is the role of executeSection
8. What are Queries, how do we use them

 Menu Items

1. What is the use of Parameter, Enum TypeParameter/Enum Parameter properties of display
2. Why do we provide Configuration key & Security key
3. Normally what do we attach in Output
4. Normally what do we attach in Action

 General Questions

1. What is difference between select & select firstonly statements
2. What are the keywords used to access data from "multiple companies" and "one company to another company".
3. How can we override a lookup
4. How do the following methods work in a form DS.
ds.refresh(), ds.research(), ds.reread(), in what situation we should these methods
5. On closing a form name the methods which are invoked
6. What are security key/configuration keys, how do we use it in Ax
7. How can we provide user level/user group level security
8. What is a virtual company
9. What is Visual MorphXplorer, what do we do with that?(Reverse engineering tool has replaced Visual MorphXplorer)
10. What is the function of Application Hierarchy Tree
11. If you want to monitor the database activity, where can you get that
12. Where can we find the Label log and what is its utility
13. What are the tools you will use to upgrade any object
14. What is the difference between display() and edit() methods, how do we use each
15. What is the use of System Documentation/Application Developer Documentation/Application Documentation

 Few More Questions on DAX

1.What are the classes, Tables, Forms and Methods used to post the sales orders.
2. What are the classes, Tables, Forms and Methods used to post the purchase orders.
3. What are the classes, Tables, Forms and Methods used to post the Ledgers.
4. What are the classes, Tables, Forms and Methods used to post the Inventory.
5. What is the base class to send the on-boad E-mailing.
6. What are the storage Dimensions?
7. What are the Item Dimensions?
8. What is the difference between RunBase and RunBaseBatch?
9. How do you create a NumberSequence for existing Module and also fro new Module.
10.What is the difference between Insert and doinsert.
11.What is the Runbase Stack?



DIFFERENCE BETWEEN SQL AND X++ STATEMENT--

SELECT-
1.Table buffer on the FROM in x++ clause ,not the table as in SQL
2.ORDER BY clause precedes the WHERE clause 
3.! for negation ,not NOT as in SQL
4.&& and || for logical operator ,not AND or OR as in SQL.
5.* and ? for like wildcards ,not % and _ as in SQL.

JOIN CLAUSE-

1.Join clause has no ON keyword in x++,use WHERE instead
2.Defauld JOIN direction is left .
3.there are no LEFT and RIGHT keyword for JOIN in x++
4.The FROM clause is optional when:
-No column is listed or
-Only one table is listed in the SELECT in x++

select * FROM CustTable;
select CustTable;

both are same.

OTHERS-
1.The WHILE SELECT statement provides an automatic cursor for return rows in x++
2.There is no HAVING keyword in x++
3.No null values are return in x++



LEARN SHORT CUT AND MAKE YOUR SELF MORE FASTER.....

Viewing/Navigation options


Accelerator Keys
Task Description
Alt+F1
Show Navigation Pane (if it is not in auto-hide mode)

This shortcut works from both MDI & SDI windows, so it is a good shortcut to get back to the main workspace.
Shift+Alt+F1
Enable/Disable auto-hide for the Navigation Pane
Ctrl+Shift+D
Toggles the Content Pane between Developer and Content modes.  Developer mode makes the content frame (where Area pages & List pages are viewed) restorable/minimizable so it is easier to work with developer windows.
Ctrl+F1
Open global search pane
Alt+F5
Toggle the docking status of a docking window
Alt+F6
Move to the next docked window
Alt+Shift+F6
Move to the previous docked window
Ctrl+F6
Move to the next MDI window
Ctrl+Shift+F6
Move to the previous MDI window
Ctrl+Shift+V
Open “Version control parameters” form
Ctrl+W
Open a new workspace
F11
Focus the Address Bar in edit mode (works from anywhere)
Alt+Left Arrow
Shortcut for the Back button on the Address bar
Alt+Right Arrow
Shortcut for the Forward button on the Address bar
From AreaPage, ListPage or developer (MDI) window

Alt+M
Show the Microsoft Dynamics AX Command Bar
Alt+W
Show Windows menu

Hint: do this then press “a” to close all windows.
Alt+V
Show View menu
Alt+H
Show Help menu
Alt
Show Keytips

Press the corresponding key to navigate directly to ActionPaneTab/Group/Button

There may be one or more ActionPaneTabs/Groups/Buttons with the same letter for a Keytip.  To execute a duplicate Keytip, keep pressing the letter until focus is on the one you want and then hit Enter.



Standard Forms

Accelerator Keys
Task Description
Ctrl+N
Create a new record
Ctrl+S
Save current record
Alt+F9
Delete record(s)
Ctrl+F4
Close the active window (saving changes)
Esc
or
Ctrl+Q
Close the active window (cancelling changes)
Alt+F4
Close the active window from SDI form (saving changes), Close the application from the main window
Ctrl+P
Print auto-report associated with current form
Ctrl+A
Select all rows in the currently active data source (works regardless of whether you are in a grid or not)
Alt+Down Arrow
Drops down a lookup field or drop-down-list
Ctrl+Alt+F4
or
Menu + G
Go to Main Table Form
F10
Activate the form’s menu bar (File, Edit, etc.)
Enter or Tab
Move to the next field

Enter will skip over buttons and will move to fields across tabs.

Tab will navigate to buttons and will always stay on the same tab page.
Shift+Enter or Shift+Tab
Move to the previous field (same caveats as previous row)
Ctrl+Shift+Home
Go to the first entry field in the form
Ctrl+Shift+End
Go to the last entry field in the form
Ctrl+Page Up
Go to the previous field group
Ctrl+Page Down
Go to the next field group
Shift+F10
Open context menu for current field
Page Up
Move to the previous page of records
Page Down
Move to the next page of records
Ctrl+Home
Move to the first record
Ctrl+End
Move to the last record
F5
Refresh all data sources on the current form
Ctrl+F5
Restore only the active record


Filtering Commands

Accelerator Keys
Task Description
Ctrl+F
Find by Field (clears previously applied filters)
Ctrl+K
Filter by Field (appends to previously applied filters)
Alt+F3
Filter by Selection
Ctrl+F3
Open Advanced Filter window
Ctrl+Shift+F3
Clear all filters
Within a Grid

Ctrl+G
Enable/Disable Filter by Grid
Ctrl+Up Arrow
From a grid cell, move focus to the Filter by Grid input cell for that column (Filter by Grid must be enabled)
On a ListPage

Shift+F3
Focus the Quick Filter (“Type to filter” area)
Focus in Quick Filter

Enter
Execute/Clear Quick Filter
Down Arrow
Drop down the Quick Filter’s Field Chooser menu


Actions Specific to Grids


Accelerator Keys
Task Description
Ctrl+E
Export to Excel (only contents of grid)
Ctrl+C
Copy:

1)      If Single cell is selected, copies just that cell contents
2)      If the entire row is selected or multiple rows are selected, copies values for ALL fields on all the rows (including those off the grid)
Up/Down Arrow
Move focus to the next/previous record, unselecting the current record
Ctrl+Up/Down Arrow
Move focus to the previous/next record, leaving the current record marked and not marking the newly focused record
Shift+Up/Down Arrow
Move focus to the previous/next record, leaving the current record marked and marking the newly focused record
Ctrl+Shift+Home/End
Mark all records between the currently selected record and the first/last record
Editable Grids

Shift+Space
Mark the current record, leaving previously marked records marked.
Read-only Grids
(such as on a ListPage)

Enter
Execute default action (only on ListPage grids, usually opens the corresponding details form for selected record)

For, Non-ListPage forms, Enter will move to the next field
Left Arrow
Move focus one field to the left.  If focus is already in the left-most column, hitting Left Arrow will “mark” the row.
Right Arrow
Move focus one field to the right.
Ctrl+Space
Mark the current record, leaving previously marked records marked.
Shift+Space
Mark all records between the current record and the top-most marked record (or the top record if none are marked), leaving previously marked records marked.
Shift+Page Up/Page Down
Mark all records between the currently selected record and the previous/next page of records.

Interview Questions New Sets

Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
101 Dynamics AX
Interview Questions
Mukesh Hirwani
Follow me @
BlogSpot: http://mukesh-ax.blogspot.in/

Microsoft Community:
http://community.dynamics.com/product/ax/axtechnical/b/mukeshhirwani_dynamicsax/default.aspx
Page | 1
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
AX 2012 Technical
1. What’s new in Dynamics AX 2012
SSAS - Analysis service project wizard.
AOS - Validfrom and validto columns, Unit of work class, Inheritance among the tables
Client -Form styles, Search and parts
EP - Sharepoint 2010, listpge famework, windows live authentication
Morphe x - Models and model store, dev. workspace, some layers renamed and powershell
SSRS – Labels in reports, auto reports, cross reference can access, unlimited dimensions
X++ -Eventing, attributes, .Net proxies to X++ classes, faster compilition
2. What are the architecture changes done in AX 2012 R2?
The model store and the transaction data are stored in separate OLTP databases. In other versions
of Microsoft Dynamics AX 2012 prior to Microsoft Dynamics AX 2012 R2, the model store and
transaction data are stored in a single OLTP.
3. What are Partitions? What is the purpose of partitions in Microsoft Dynamics AX 2012 R2?
http://msdn.microsoft.com/en-us/library/jj677285.aspx
4. What are Models and Model store? Managing Models?
http://technet.microsoft.com/en-us/library/hh335184.aspx
5. Table Keys: Surrogate, Alternate, Replacement, Primary, and Foreign [AX 2012]
http://msdn.microsoft.com/en-us/library/hh812105.aspx
6. Table properties
Property
Abstract
Description
Specifies whether or not the table supports inheritance.
The default value is No. If the value is Yes, the table cannot be a direct target
of X++ SQL statements such as update_recordset and select.
This property is unavailable when the SupportInheritance property is set
to No. For more information, see http://msdn.microsoft.com/en-
in/library/gg881053.aspx.
CountryRegionCodes
Specifies the country region codes where the table is applicable or valid. The
client framework and application may make use of this property to enable
or disable country or region specific features. This is implemented as a
comma-separated list of ISO country codes in a single string. The values must
match data contained in the global address book.
Page | 2
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
CountryRegionContextField Specifies the field that will be used to identify the country context. This
                         relates to the CountryRegionCodes property.
CreatedDateTime Indicates whether the system maintains the CreationDate and
               CreationTime fields for the records in a table. This field contains the date
              when a record was created.
Extends Derives the table from another table that is chosen as the property value.
       The value is null when the SupportInheritance property is set to Yes. For more
      information, see http://msdn.microsoft.com/en-in/library/gg881053.aspx.
ListPageRef Specifies a display menu item that points to a form that can show a list of this
           record type.
Model Specifies which model the table is in. A model is a logical grouping of elements
     in a layer. An element can exist in exactly one model in a layer. Examples of
    elements are a table or class. The same element can exist in a customized
   version in a model in a higher layer.
PreviewPartRef Specifies the Info Part or Form Part to be used in the enhanced preview.
              An info part shows a collection of data fields from a specified query. An info part
             uses metadata to describe how the data appears. A form part represents a
            pointer to a form.
ReplacementKey Specifies the fields to display as the identifier for data in some form controls.
SupportInheritance Setting this property to Yes enables you to set a value for other inheritance
                  related properties such as Extends and Abstract.
When you set the value to Yes, any fields on the table are dropped and must be
created again.
TableType Replaces the Temporary property found in Microsoft Dynamics AX 2009. For
         more information, see http://msdn.microsoft.com/en-
        in/library/gg863308.aspx.
ValidTimeStateFieldType Specifies the type of date-time field for the system to use when it tracks data
                       within time spans.
Page | 3
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
AX 2012 R2
Property
Description
Shows whether the table has a system field named Partition. This is meant to be
a read-only system field.
SaveDataPerPartition
If the table has a Partition field, each record is assigned to one partition. Each
record is kept hidden from data access operations that are run under the context
of other partitions.
7. AOT Elements
Node
Description
Contains the data types and tables that make up the database. Also contains objects to
control access to the data. It contains the following sub nodes:
Tables: Tables that contain the Microsoft Dynamics AX data.
Maps: Enables you to create associations between closely related (but non-identical) table
fields and methods.
Views: Enables you to join data from different tables, and then to select which fields you
want to display.
Extended Data Types: Data types that extend one of the primitive data types or another
extended data type.
Base Enums: Enumerable types that contain a list of literals.
Data Dictionary
Macros
License Codes: Determines which components of Microsoft Dynamics AX functionality are
available to a company.
Configuration Keys: Allows administrators to enable or disable features in the application
for all users.
Security Keys: Security keys are obsolete in Microsoft Dynamics AX 2012 and only exist to
use for reference during a code upgrade. There is a new security framework, which is called
role-based security. For more information on the new security framework, see What's New:
Security for Developers in Microsoft Dynamics AX 2012 and Role-based Security in the AOT
for Developers.
Table Collections: Collections of tables that contain data that is often shared between
companies.
Perspectives: Collections of tables that were used to organize information for report
models.
Contains the source code for the macros used by the standard application. In addition to
viewing the existing code, you can add your own macros.
Contains the source code for the application (X++) classes.
Classes You can also use system classes (also known as kernel classes). They are listed in the System
       Documentation\Classes node.
Forms Dialog boxes in the user interface that are used to access the database.
Parts Contains controls you can use to retrieve and show a collection of data. For more
     information, see Parts.
Page | 4
Mukesh Hirwani
Data Sets
SSRS Reports
BlogSpot: http://mukesh-ax.blogspot.in/
Provides a generic data access layer that allows for external presentation layers to bind to
Microsoft Dynamics AX tables and data types. For more information, see Data Sets for
Enterprise Portal.
Contains SQL Server Reporting Services reports that are included with Microsoft Dynamics
AX.
Reports Enables users to print or display summary information from the database.
Visual Studio Projects Contains projects created in Visual Studio and added to Microsoft Dynamics AX by using
                      Application Explorer. Project types that can be added to this node include Dynamics AX
                     Model Projects, C Sharp Projects, Visual Basic Projects, Web Application Projects, and
                    Analysis Services Projects. For more information, see Visual Studio Integration and How to:
                   Add a Visual Studio Project to the AOT.
Report Libraries Used to store Microsoft Dynamics AX 2009 SQL Server Reporting Services report libraries
                that are being upgraded for the Microsoft Dynamics AX 2012 AOT environment.
Queries Used as the source of records for forms and reports.
Jobs Typically holds small X++ programs that are used to test new code.
Menus Contains the menus you want the end user to see.
Menu Items Contains a complete list of the items that can be presented in a menu. Menu items act as a
          higher layer of abstraction for forms, reports, and so on.
Web Contains objects related to Web development.
Services Contains services that are exposed by Microsoft Dynamics AX.
Service Groups Contains collections of services that are frequently consumed and managed together. All
              the services in a service group are published in a single WSDL file.
Contains the workflow model elements used to create a workflow configuration. This node
contains Categories, Tasks, Approvals, and Templates. For more information, see
Implementing Workflow for Microsoft Dynamics AX.
Contains the objects you use to implement application security, such as roles and
permissions.
Workflow
Security
Resources Contains references to image and animation files.
Label Files Contains label files that store labels for all user interface elements. For more information,
           see Label Editor.
References Contains references to Microsoft .NET assemblies and to external Web services. Both types
          of references can be used in X++ statements.
Help Documentation Specifies the documentation sets on the Help Server.
Sets
System Documentation Contains items that represent system (kernel) classes, functions, tables, and so on.
8. Layers & their usage.
Layer Description
USR The user layer is for user modifications, such as reports.
CUS The customer layer is for modifications that are specific to a company.
VAR Value Added Resellers (VAR) can make modifications or new developments to the VAR layer
   as specified by the customers or as a strategy of creating an industry specific solution.
ISV When an Independent Software Vendor (ISV) creates their own solution, their modifications
   are saved in the ISV layer.
Page | 5
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
SLN The solution layer is used by distributors to implement vertical partner solutions.
FPK The FPK layer is an application object patch layer reserved by Microsoft for future patching
   or other updates. For more information, see Patch Layers.
GLS When the application is modified to match country or region specific legal demands, these
   modifications are saved in the GLS layer.
SYS The standard application is implemented at the lowest level, the SYS layer. The application
   objects in the standard application can never be deleted.
Common AX Questions
9. OOPs concepts
Class : Class is the 1st OOPs concept .Class defines the characteristics of objects which includes its
attributes , fields properties and behavior . Let us say we have a class called car , then the color ,
model number , top speed can be its attributes and properties . Accelerating , breaking , turning
will be its behavior .
Objects: Objects can be considered as a thing that performs a set of related functions
.Programming objects are used to model real worlds objects. An object is also an instant of a class
. For our class Car , Ferrari will be our object
Instance : One can have an instance of a class; the instance is the actual object created at runtime.
The set of values of the attributes of a particular object is called its state. The object consists of
state and the behaviour that’s defined in the object’s class.
Method :Also called as functions in some programming languages , methods defines the
behavior of particular objects . For our Car class , turning() , breaking () will be our methods .
Inheritance : a parent class can inherit its behavior and state to children classes. This concept was
developed to manage generalization and specialization in OOP .Lets say we have a class called Car
and Racing Car . Then the attributes like engine no. , color of the Class car can be inherited by the
class Racing Car . The class Car will be Parent class , and the class Racing Car will be the derived
class or child class
Abstraction : representing only the important details without including all the details . For
example the car Ferrari can be treated as simple car only .
Encapsulation:The wrapping up of data and functions into a single unit is called as encapsulation
. For example the class car has a method turn () .The code for the turn() defines how the turn will
occur . So we don’t need to define how Mercedes will turn and how the Ferrari will turn separately
. turn() can be encapsulated with both.
Page | 6
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
Polymorphism: Its an important OOPs concept , Polymorphism means taking more than one
forms .Polymorphism allows the programmer to treat derived class members just like their parent
class’s members. More precisely, Polymorphism in object-oriented programming is the ability of
objects belonging to different data types to respond to calls of methods of the same name .If a
Dog is commanded to speak(), this may elicit a bark(). However, if a Pig is commanded to speak(),
this may elicit an oink(). Each subclass overrides the speak() method inherited from the parent
class Animal.
10. Differences:
a. MorphX & Intellimorph
MorphX is the Microsoft Dynamics AX IDE( Integrated Development Environment) which
includes:
- Data Dictionary
- Tools for creating menus, forms and reports for Windows- and Web clients
- Compiler and debugger for the object oriented programming language X++
- Version control system
- Label (multi language text) systems
IntelliMorph is the Runtime Environment embedded in Microsoft Dynamics AX, that
draws menus, forms, and reports for Windows- and Web-clients with the correct
contents, size, and layout according to:
- The language your texts are displayed in.
- What features you can access.
- How wide you want the fields on your installation.
- The formats you are using for dates and numbers.
b. RunBase & RunBaseBatch
RunBase class: The RunBase class is a framework for classes that need a dialog for user
interaction and that need the dialog values to be saved per user. The RunBase application
framework runs or batches an operation. An operation is a unit of work, such as the
posting of a sales order or calculation of a master schedule.The RunBase framework uses
the Dialog framework to prompt a user for data input. It uses the SysLastValue framework
to persist usage data and the Operation Progress framework to show operation progress.
class RunBase extends Object implements SysSaveable, SysRunable
RunBaseBatch class: All jobs that must be able to run in a batch must inherit from this
class. The RunBaseBatch framework extends the RunBase framework, and X++ classes
that extend this framework can have their operations enlisted in the batch queue.
class RunBaseBatch extends RunBase implements Batchable
Page | 7
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
RunBaseReport class: The RunBaseReport class makes all reports batchable and creates
a standard dialog box.
class RunBaseReport extends RunBaseBatch
This class is instantiated through the SysReportRun Class. It should be used by all
reports. The purpose of the class is to:
- Make all reports batchable
- Create a standard dialog
If you are creating more complex reports, it might be necessary to inherit from this
class. If this is the case, you must create the following methods:
lastValueElementName(). Returns the report name.
description(). Static.
main(). Static.
c. Element & this
"this" can be used in any objects to reference the current object and member methods.
MorphX forms and reports are composite objects.
In forms the collection of objects is contained within a FormRun object. You can reference
members in the outer FormRun object by using the "element" reference.
If your code is placed at the top level there are no functional difference between "this"
and "element".
If your code is placed in a FormDataSource "this" will reference the datasource but
"element" will reference the "FormRun".
d. COM & .NET Business Connector
.NET Business Connector provides interoperability with the .NET Framework. This is
enabled by providing Windows Server SDK managed classes.
COM Business Connector provides Microsoft COM interoperability. This is enabled by
providing a Microsoft COM-based interface. COM Business Connector is no longer going
to be supported in Ax 2012
e. Concurrent user & Named user
Named User: specific individuals are licensed
Concurrent user: you may have ‘N’ number but you can access only few use the Ax
simultaneously.
Page | 8
Mukesh Hirwani
f.
BlogSpot: http://mukesh-ax.blogspot.in/
Primary key & Foreign key
Primary key is the unique key of a table, for example ID.
Say, you have a student table, the primary key is usually student id, as there won't be
two students with the same id.
As for foreign key, it's a key to define the relationship between two tables.
Say, there is another table called StudentEvent, which it contains a PersonInCharge field.
In this StudentEvent table, the primary key is EventID, where the PersonInCharge is
actually storing the StudentID, which it is the foreign key to the Student table. This actually
defines the relationship between Student table and StudentEvent table.
g. Construct & New methods
Method new() actually constructs a class and finalize() destructs.
Method construct() is a best practice to use when creating an instance. In this method
you code how to construct a specific class.
h. Normal, field fixed & related field fixed relations
Lets say you have ClothesTable and ClothesOrders.
ClothesTable has the following fields: ClotheId, Name and CollectionTypeId
MenClothesOrder has the following fields: OrderId, ClotheId, Qty OrderId could be a
number sequence and Qty entered manually bby the user.
CollectionTypeId has the following elements:
0 - Men
1 - Women
2 - Children
Example 1: Related Fixed Field
On MenClothesOrder we create a new relation to ClothesTable and specify the follwing
two:
1. Normal = ClotheId to ClotheId (Best practice to specify this on the EDT) and
2. Related Fixed Field 0 = ClothesTable.CollecTionTypeId.
Page | 9
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
This shows that the lookup to the clothes table should show only clothes with the same
ClotheId (point 1) AND clothes that are of type Men (point 2) because the our table deals
with order for mens' clothes. We use 0 because Menis element 0 in the Enum.
Example 2: Fixed Field
This kinda works the other way round:
Imagine you have a ClothesOrders table (generic) and you have seperate tables for
MenClothesTable, WomenClothesTable and ChildrenClothesTable. Fixed field says that
the specified normal relation (on ClotheId) to MenClothesTable only works if the
CollectionTypeId of the current record is set to 0 (Men) else the relation is disabled.
i.
Table & View in AOT
Table : Relational Database is composed of tables that contain related data.
View :
1. Views are created from one or more than one table by joins, with selected columns.
2. Views are created to hide some columns from the user
3. Views reduces the effort for writing queries to access specific columns every time.
4. View doesn't contain any data.
j.
Auto design & Generated design in reports
Auto designs take full advantage of MorphX, they allow for dynamic templates, auto
headers and auto sums based on criteria established in the query.
Generated designs are static, and will not automatically adjust to changes made in the
query or report template. It is recommended using auto designs. You should only consider
using generated designs in special cases where a fixed layout is needed. Generated
designs are generally only required where the layout is fixed by contract or statute, or
when you need to use pre-printed forms such as checks and purchase orders. Generated
designs have some extra sections for adding headers and footers to body sections. Beside
that auto designs and generated designs use the same type of sections.
k. Business connector & External Connector
l. VSS & TFS
Visual source safe for versioning – VSS last version is 2005
TFS- Tem foundation server - versioning
m. Refresh(),reread(),research() & executeQuery()-
1. Refresh
Page | 10
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
This method basically refreshes the data displayed in the form controls with whatever is
stored in the form cache for that particular datasource record. Calling refresh() method
will NOT reread the record from the database. So if changes happened to the record in
another process, these will not be shown after executing refresh().
2.refreshEx
This method should be used sparingly, in cases where multiple rows from the grid are
updated, resulting in changes in their display Options, as an example. So you should avoid
using it as a replacement for refresh(), since they actually have completely different
implementations in the kernel.
3. Reread
Calling reread() will query the database and re-read the current record contents into the
datasource form cache. This will not display the changes on the form until a redraw of the
grid contents happens
4. Research
Calling research() will rerun the existing form query against the database, therefore
updating the list with new/removed records as well as updating all existing rows. This will
honor any existing filters and sorting on the form, that were set by the user.
5. ExecuteQuery
Calling executeQuery() will also rerun the query and update/add/delete the rows in the
grid. The difference in behavior from research is described below.
ExecuteQuery should be used if you have modified the query in your code and need to
refresh the form to display the data based on the updated query.
n. formDataSource.queryRun().query() & formDataSource.query()-
An important thing to mention here is that the form has 2 instances of the query object -
one is the original datasource query (stored in formDataSource.query()), and the other is
the currently used query with any user filters applied (stored in
formDataSource.queryRun().query()).
When the research method is called, a new instance of the queryRun is created, using the
formDataSource.queryRun().query() as the basis. Therefore, if the user has set up some
filters on the displayed data, those will be preserved.
This is useful, for example, when multiple users work with a certain form, each user has
his own filters set up for displaying only relevant data, and rows get inserted into the
underlying table externally (for example, through AIF).
Calling executeQuery, on the other hand, will use the original query as the basis, therefore
removing any user filters.
Page | 11
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
This is a distinction that everyone should understand when using research/executeQuery
methods in order to prevent possible collisions with the user filters when updating the
query.
11. Delete actions & its types
Types of delete action
a. Cascade
A cascading deletion action will delete all records in the related table, where the foreign key is
equivalent to the primary key of the current table. That is, deleting the parent record will also
delete the child record(s) in the related table.
This cascading will take place whether the deletion is performed in code or directly by a user
through the user interface.
b. Restricted
A restricting delete action will raise an error message if the user tries to delete a record, where
records exist in the related table where the foreign key is equivalent to the primary key of the
current table.
This error will only appear if the deletion is performed through the user interface. A deletion from
X++ code will be allowed to proceed and will not be cascaded to the related table. In this case the
programmer should call .validateDelete() themselves prior to the call to .delete()
c. Cascade+Restricted
This delete action normally works as a Restricted delete action. However if the deletion is
performed through X++ code, no error will be raised and the deletion will be cascaded to the
related table.
12. Table groups & its types
Table groups provide a method for categorizing tables according to the type of data they contain.
When exporting data, you can use table groups to filter records. For example, if you wanted to
specify that customers should be exported but customer transactions should not. The table group
that a table belongs to is defined by the TableGroup property of the table.
The available table group values are listed in the following table.
Table group Use this group for a table with these characteristics
Parameter The table contains data primarily used as parameters or setup information
         for one of the main tables (a table that has a TableGroup property of Main).
The table typically contains only one record per company.
Group
Main
The table contains data primarily used to categorize one of the main tables
(a table that has a TableGroup property of Main).
There is a one-to-many relationship between a Group table and a Main
table.
The table is one of the principal tables in the application and contains data
for a central business object.
Examples
CustParameters,
VendParameters
CustGroup,
VendGroup
CustTable,
VendTable
Page | 12
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
The table typically holds static, base information.
There is a one-to-many relationship between a Main table and a
Transaction table.
Transaction
The table contains transaction data.
CustTrans,
VendTrans
The table is typically not used for data entry directly.
The table typically categorizes information in the WorkSheetLine tables.
WorksheetHeader
SalesTable
There is a one-to-many relationship between a WorkSheetHeader table and
a WorkSheetLine table.
The table contains information to be validated and made into transactions.
WorksheetLine
Miscellaneous
In comparison to the data contained in a Transaction table, the data in
WorkSheetLine tables is temporary and may be deleted without affecting
system stability.
SalesLine
The table does not fit in any of the other categories. This is the default
value for a new table.
TableExpImpDef
13. Creation of PO & SO thru code (AX 2009)
Code for creating Sales order:
SalesTableType and SalesLinetype. Insert() should be called for creating the sales order.
static void createSalesTable(CustAccount _custAccount)
{
SalesTable salesTable;
NumberSeq NumberSeq;
;
NumberSeq =
NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId().numberSequence);
salesTable.SalesId = NumberSeq.num();
salesTable.initValue();
salesTable.CustAccount = _custAccount;
salesTable.initFromCustTable();
salesTable.insert();
}
Example: Create a Sales Line
static void createSalesLine(SalesId _salesId, ItemId _itemId)
{
SalesLine salesLine;
;
salesLine.clear();
salesLine.SalesId = _salesId;
Page | 13
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
salesLine.ItemId = _itemId;
salesLine.createLine(NoYes::Yes, // Validate
NoYes::Yes, // initFromSalesTable
NoYes::Yes, // initFromInventTable
NoYes::Yes, // calcInventQty
NoYes::Yes, // searchMarkup
NoYes::Yes); // searchPrice
}
//Code for posting Sales order Invoice
static void createSalesOrder(Args _args)
{
SalesFormLetter formLetterObj;
formLetterObj = SalesFormLetter::construct(DocumentStatus::Invoice);
formLetterObj.update(SalesTable::find(“SO-101248′′));
}
Code to Create Purchase Order and Post the Invoice:
Following Job creates the Purchase order from code and post the invoice by making use of
PurchFormLetter class. If you don't have demo data , please test with your input values.
static void Dev_CreatePO_and_Invoice(Args _args)
{
NumberSeq numberSeq;
Purchtable Purchtable;
PurchLine PurchLine;
PurchFormLetter purchFormLetter;
;
ttsbegin;
numberSeq =
NumberSeq::newGetNumFromCode(purchParameters::numRefPurchaseOrderId().NumberSequ
ence,true);
// Initialize Purchase order values
Purchtable.initValue();
Purchtable.PurchId = numberSeq.num();
Purchtable.OrderAccount = '3000';
Purchtable.initFromVendTable();
if (!Purchtable.validateWrite())
Page | 14
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
{
throw Exception::Error;
}
Purchtable.insert();
// Initialize Purchase Line items
PurchLine.PurchId = Purchtable.PurchId;
PurchLine.ItemId = 'B-R14';
PurchLine.createLine(true, true, true, true, true, false);
ttscommit;
purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
purchFormLetter.update(purchtable, // Purchase record Buffer
"Inv_"+purchTable.PurchId, // Invoice Number
systemdateget()); // Transaction date
if (PurchTable::find(purchTable.PurchId).DocumentStatus == DocumentStatus::Invoice)
{
info(strfmt("Posted invoiced journal for purchase order %1",purchTable.PurchId));
}
}
Change the DocumentStatus to packingSlip , if you want to post packing slip.
14. Flow of SSRS report generation in Dynamics AX-
AX menu item from rich client->Report viewer opens->Issues request to report server->
Report server connects Dynamics AX(.NET BC)->Fetches the data->Return to client
15.
How can we create primary key for a table?
Post by Amer atiya, explaining the process of Primary key creation
16.
What precautions you need for overriding fetch() method for a report?
MSDN link of how to override the fetch Method to Filter Data for Reports.
17.
Difference between OCC (Optimistic concurrency control) and PCC (Pessimistic
concurrency control)?
MSDN Link explaining OCC and PCC
Page | 15
Mukesh Hirwani
18.
BlogSpot: http://mukesh-ax.blogspot.in/
How many types of MAP there in Dynamics AX?
http://arsalanax.blogspot.com/2012/01/types-of-map-in-dynamics-ax.html
19.
What is cache lookup what is it used for?
Dynamics AX Caching
20.
Difference between table and views?
Table vs. views
21.
Why we use dialog? And how to accomplished it?
MSDN Link explaining dialog
22.
What are the different type of index?
Index Overview
23.
Difference b/w cascade + restricted and restricted delete actions?
Delete actions in AX
24.
In which case delete_from and delete() have same result?
Delete() will delete one record at a time.
Delete_from can delete multiple records at a time.
25. Explain sales/purchase order processes in AX.
Purchase Order
Sales Order
.
26. Table properties?
Tables Overview
27. Different types of relation? Explain it detail?
Relations in Tables
Page | 16
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
28. Explain Queries? What’s it used for?
AOT Query
X++ Query
29. Explain different types of reports? There are two types of reports in AX
SSRS Reports
X++ Reports
30. Differentiate auto design spec & Generated design? Which one is a preferable choice and Why?
Report Design for X++ Reports
31. What are all the add- on tools you used in Dynamics AX (It’s an indirect question for AIF)
http://technet.microsoft.com/en-us/library/gg731810.aspx
32. Explain primary index and Cluster index? Explain in detail?
http://msdn.microsoft.com/en-us/library/bb278358.aspx
33. What is the default index for a table?
Default Index in Table
34. Did you work with EP (Enterprise Portal & Workflow) how you can implement this features into
your projects?
EP in AX 2012
35. Can you just point out some best practice you used when u develop a project?
http://msdn.microsoft.com/en-us/library/aa658028.aspx
36. What is cache lookup what is it used for?
http://msdn.microsoft.com/en-in/library/bb278240.aspx
37. Different types of relation? Explain it detail?
http://msdn.microsoft.com/en-in/library/aa675395.aspx
38. What are all the add- on tools you used in Dynamics AX (It’s an indirect question for AIF)
http://technet.microsoft.com/en-us/library/gg731810.aspx
39. AOS Load balancer concept/Clustering
http://technet.microsoft.com/en-us/library/dd309627.aspx
Page | 17
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
40. Dynamics AX security hierarchy
http://technet.microsoft.com/en-us/library/aa496919.aspx
41. AX 2012 Workflow configuration
http://technet.microsoft.com/en-us/library/hh227472.aspx
42. Web Services concept
http://technet.microsoft.com/en-us/library/gg731848.aspx
43. Version Control System in AX 2012
http://msdn.microsoft.com/en-us/library/aa639568.aspx
44. Reverse Engineering tool
http://msdn.microsoft.com/en-us/library/aa499193.aspx
45. MS Visio UML(Data & Object),ERD
http://msdn.microsoft.com/en-us/library/aa552178.aspx
46. Unit test framework
http://msdn.microsoft.com/en-us/library/aa874515.aspx
47. AX 2012 Debugger concepts
http://msdn.microsoft.com/en-us/library/gg860898.aspx
48. Cross reference tool
http://msdn.microsoft.com/en-us/library/aa626961.aspx
49. Document Management
http://technet.microsoft.com/en-us/library/aa549988.aspx
50. Print Management
http://technet.microsoft.com/en-us/library/dd309604.aspx
51. Containers and its functions
http://msdn.microsoft.com/en-us/library/aa874816.aspx
52. Data Crawler
http://msdn.microsoft.com/en-in/library/bb190090.aspx
53. Intrinsic functions
http://msdn.microsoft.com/en-us/library/aa626893.aspx
Page | 18
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
54. Concept of cubes & MDX queries in SQL.
http://msdn.microsoft.com/en-us/library/cc615265.aspx
55. Integration from .NET
http://technet.microsoft.com/en-us/library/hh500187.aspx
56. Events on a form & report
http://msdn.microsoft.com/en-us/library/aa655101.aspx
57. Purpose of following methods in AX
a. Init(),run(),validatewrite(),write(),close(),canClose() etc.
58. What is an EDT, Base Enum, how can we use array elements of an EDT?
http://msdn.microsoft.com/en-us/library/aa675074.aspx
59. Definition and use of Maps, how AddressMap (with methods) is used in standard AX?
http://msdn.microsoft.com/en-us/library/bb278211.aspx
60. How can we utilize field groups in forms
http://msdn.microsoft.com/en-us/library/aa609505.aspx
61. What is an abstract class, what is the utility of an abstract method
http://www.axaptapedia.com/Abstract_classes
62. Multiple inheritance possible or not, if not how can we overcome that.
Multiple inheritance is not support. Use interfaces and/or composition instead
63. What is an interface, why do we implement it?
http://msdn.microsoft.com/en-us/library/aa892319.aspx
64. Do we need to write main method, give reasons?
http://msdn.microsoft.com/en-us/library/aa673265.aspx
65. What is the utility of the RunOn property?
Identifies where the logic will execute on Server, Client, and Called from (From where object is
called)
66. How can we make a batch job occur at regular interval?
http://technet.microsoft.com/en-us/library/hh208476.aspx
67. Which class is called when we create a SO/PO.
SalesFormLetter + SalesFormLetter_xxx, PurchFormLetter + PurchFormLetter_xxx
Page | 19
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
68. What is a static method, why do we make static methods and where can we write it?
http://msdn.microsoft.com/en-us/library/aa584754.aspx
69. When do we make methods private or protected?
http://msdn.microsoft.com/en-us/library/aa676482.aspx
70. Utility of init(), run(), wait() methods
71. What are different types of Link Types available in a form data source, justify each of them?
http://msdn.microsoft.com/en-us/library/gg844014.aspx
72. Properties of a form data source.
http://msdn.microsoft.com/en-us/library/aa676742.aspx
73. 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?
User input validation must be performed in form datasource validate. Validation which involves
data to be fetched from different table or validation with a complex logic must be written to
table validate write.
74. How can we call table level methods from form DS (similar methods)
Use Table name.
75. Where is the best place to write code to perform filter in a form
http://msdn.microsoft.com/en-us/library/aa892864.aspx
76. What are the different types of menu items available, explain each of them
http://msdn.microsoft.com/en-us/library/aa596556.aspx
77. Can we make a report from wizard, if yes from where
From the development workspace, click Tools, click Development tools, click Wizards, and then
click Report Wizard.
78. How can we sort the DS, what facility we can get in by placing fields in Ranges
http://mukesh-ax.blogspot.in/2011/04/query-ranges-in-x.html
79. Import Customer dimension using X++ in AX 2012?
http://mukesh-ax.blogspot.in/2012/09/update-customervendor-dimensions-ax-2012.html
80. Delete transactional data in AX 2012?
http://mukesh-ax.blogspot.in/2012/09/delete-transaction-data-ax-2012.html
Page | 20
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
81. How to add financial dimensions to a form?
http://mukesh-ax.blogspot.in/2012/09/how-add-financial-dimension-on-forms.html
82. Encrypt/Decrypt data in AX 2012?
http://mukesh-ax.blogspot.in/2012/09/encryptdecrypt-in-ax-2012.html
83. Electronic Payments for Vendor in AX 2012?
http://mukesh-ax.blogspot.in/2012/08/aif-vendor-electronic-payment-ax-2012.html
84. Automated Model deployment using scripts?
http://mukesh-ax.blogspot.in/2012/07/model-deployment-ax-2012.html
85. Ledger journal import using X++ in AX 2012?
http://mukesh-ax.blogspot.in/2012/06/ledger-journal-import-using-x.html
86. Creating vendors using X++ in AX 2012?
http://mukesh-ax.blogspot.in/2012/06/creating-vendors-thru-x-in-ax-2012.html
87. What is Product Information Management in AX 2012?
http://mukesh-ax.blogspot.in/2012/06/product-information-management-ax-2012.html
88. Develop new Workflow in AX 2012?
http://mukesh-ax.blogspot.in/2012/06/ax-2012-workflow-customization.html
89. What is Segmented Entry Control in AX 2012?
http://mukesh-ax.blogspot.com/2012/06/segmented-entry-control-on-forms-in.html
90. Security in AX 2012?
91. How to import CSV file in AX 2012?
http://mukesh-ax.blogspot.in/2012/02/dynamics-ax-2012-aif-import-csv-file.html
92. Employee data tables in AX 2012?
http://mukesh-ax.blogspot.in/2012/02/employee-data-tables-in-ax-2012.html
93. Reports development in AX 2012?
http://mukesh-ax.blogspot.in/2012/02/development-of-ssrs-reports-dynamics-ax.html
94. How to create a report using cube in AX 2012?
http://mukesh-ax.blogspot.in/2012/01/creating-reporting-services-report.html
Page | 21
Mukesh Hirwani
BlogSpot: http://mukesh-ax.blogspot.in/
95. How to import data using Excel Add-Inn?
http://mukesh-ax.blogspot.in/2012/01/dynamics-ax-2012-data-import-using.html
96. How to develop SSRS report using RDP class?
http://mukesh-ax.blogspot.in/2011/12/report-data-provider-rdp-as-data-source.html
97. How to debug .net code executing thru AX?
http://mukesh-ax.blogspot.in/2011/12/debugging-business-logic-in-ax-2009.html
98. How to consume web service in AX 2012?
http://mukesh-ax.blogspot.in/2011/10/consuming-web-services-in-ax-2012.html
99. How to execute Direct SQL Statement in X++?
http://mukesh-ax.blogspot.in/2011/08/direct-sql-statements-in-x.html
100. How to handle Number sequence?
http://mukesh-ax.blogspot.in/2011/08/direct-sql-statements-in-x.html
101. How to create new Role center?
http://mukesh-ax.blogspot.in/2011/04/new-role-center-in-ax.html
Page | 22

How to identify the user that was used to change an object from AOT in AX2012

Get the object name for which we need to track these (user and date&time) information's. Login to SQL Server Management Studio an...