interview Questions AX 2012

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

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.

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

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.

f. 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

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

8. . 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.

Comments