Showing posts with label Technical interview. Show all posts
Showing posts with label Technical interview. Show all posts

AX 2012 VS D365 Finance and Operations

 

Difference between AX 2012 and D 365 Finance and Operations

Apparently, in layman terms, we can say the Three main visible changes in D365 :

  • New Client
  • Cloud Readiness
  • New Development Stack
Key terms in D365:

Packages: A package is a deployable unit, which may have multiple models.

Model:  A model is a group of elements, a model is a collection of elements that represent a distributed software solution.

Element:  Element is any object residing in AOT.
eg: Base Enum, any EDT, Table, Form which you see in AOT tree is an element itself.  

Project: Projects are the logical container for everything that's needed to build your application.
A project can be associated with anyone model.

I got some detailed understanding of the changes from different blogs, which I am sharing below


Dynamics 365 for Operations is web/browser-based, hosted by Microsoft on Azure (like Office 365) is provides similar functionality, but has a completely new UI. It is part of their family called Dynamics 365 that merges elements of Microsoft Dynamics CRM, AX, and the financials from Dynamics NAV.

Enhanced User Experience :
  • One of the biggest differences in the new version is in the user experience, as Dynamics 365 for Operations has a new interface
  • Also, the entire program is now web-oriented, so everything you need is located within a browser, which should make everything faster and easier to use.
  • The user experience will be enhanced even more by the fact that Microsoft has now made Dynamics 365 compatible with mobile devices like phones and tablets
  • Users having real-time access to data on these devices is a game-changer for nearly any company, as it will allow them to do business anywhere and at any time.
More Integrations :

The intelligence of Dynamics 365 is also miles ahead of previous versions. There is now full integration with CRM, Office 365, and PowerBI, not to mention Cortana, so the speed at which you can retrieve data and make accurate and informed decisions is quite impressive.


Changes for Developers :

1. Visual Studio :

MorphX is gone, Visual Studio (VS) is the new IDE. All of Microsoft Dynamics 365 is web-based, there is no longer a fat AX client and there is no MorphX development environment to get into. You will do all of your work in VS. It is well-documented, stable, and feature-rich. 

2. Deployment Packages :
  • The next big change is the introduction of deployment packages and the marginalization of the traditional AX concept of layers. Deployment packages are conceptually a replacement for model stores. 

  • Deployment packages are comprised of all of the artifacts (like assemblies and configurations files) required to make the code function. 

  • When moving code between environments, deployment packages will be used. 

  • As part of this change, when you create a model in Visual Studio (VS) you indicate which deployment package the model is a part of and what kind of dependencies it has. Similar to how in VS when you add a reference to a project, you create a dependency between your project and the one you added a reference to. 

  • Additionally, when you create your model, you specify which layer the model is going to live in. The layer is the traditional AX concept of a layer but in the VS world, the layer’s importance is very minimal. You are not required to provide a key for your model to live in that layer.

3. Extensions :
  • Dynamics 365 for Operations includes the introduction of extensions. In all previous versions of AX when modifying or adding to sys or ISV code, you override or added something to an object which created a potential conflict at upgrade time.

  • In Dynamics 365 this is still possible it is known as customization but now it is not the only way to modify existing code. Microsoft has added an extensions model with extensions you can extend an object without touching the base object. This means you can add new fields, methods, or controls to tables, classes, and forms, and those additions are contained in your own extension object. You have not affected the base object.

  • Also, the base objects have many, many events added to them. In previous versions of AX, you override methods so your code would be called when events happened – like a button being clicked. Now the button will raise an event and you can subscribe to that event. By subscribing to the event your code will be called without you having to override or modify the button.

4. Form Patterns :

The required adherence to form patterns is the next big change. Form patterns are guidelines Microsoft has for how forms should be designed. Microsoft wants all forms in AX to look and feel similar regardless of who makes them so the end-user has a consistent experience. Form patterns are not a new concept; they exist in AX 2012. However, most AX developers were not aware of them in AX 2012 because they were a guideline and not a requirement. 

In Dynamics 365 when you create a form, the first thing you do in the design of that form specifies the form pattern it is going to follow. If you don’t specify the form pattern, you will get compile errors. 

As you continue to build the form’s design, the pattern for the form is enforced meaning you must fill out the requirements of the pattern and if you do not you will get compile errors. This definitely takes some time to get used to.

5. Introduction of Data Entities :

Introduction of data entities. Data entities serve as the new framework for integrating with AX. They are a replacement of two concepts in AX 2012, document services and the classes that comprised the Data Import Export Framework (DIXF). 

With data entities, all data coming into and going out of AX follow the same path so you do not have to build two different things if you are calling an API or using DIXF to manipulate data. 

The data entities are very easy to create. There is a wizard that walks you through the creation process similar to the wizard in AX 2012 used to generate document services. 

Another notable change within integrations is that the services exposing data entities are restful state APIs using JSON formatted data. 

In AX2012 all services were WCF services. This change means the way you call services is significantly different so if you are planning to do integrations on Dynamics 365 you will want to study up how to call the APIs.



VS project types:

There are Dynamics AX template project types that have been added to VS.

The template project types are:

Dynamics AX Best Practice Rules – used for writing best practices checks for code and metadata
Dynamics AX Developer Tool Add-in
Dynamics AX Project – main project template type for containing customizations


When creating a new project, first create a new model:

  • If you create a project without a new model, the project gets created in the sys layer in the model where the object being modified exists.
  • Because the project is in the sys layer you cannot add existing objects to the project because you are working in the sys layer.
  • You need to create a new model and put your projects inside of it.

When you create the new model, the dialog asking about the new model will prompt for:
  • The layer you want to work in
  • The package you want to work in
  • The first project you want to create
Once the project has been created you can see the layer and model next to the project name in the Solution Explorer.


AXPP Files

1. Files ending in AXPP are the replacement for XPO files.

2. To export and import projects similar to what you would do with XPOS in 2012:

In the Solution Explorer, right-click on a project and choose Export project <ProjectName>
The project gets saved as a file with an extension of .axpp

     a. The model the project is created in is saved in the app file

            i. The model contains the layer info. 

     b. The AXPP file cannot be read with Notepad

3. To import the AXPP containing the project in VS go to the Dynamics AX menu and choose Import project.

      a. The project is created in the model (and layer) and saved in the AXPP file.

            i. If the model doesn’t exist in the imported environment, it will be generated.

4. Similar to AX 2012 and importing an XPO, in Dynamics 365 for Operations (AX7) you can do a comparison between the contents of the AXPP file and the current environment.

      a. To compare objects during the import: When you select Import project a dialog opens asking you to select the location of the AXPP file.

  • When you select Import project a dialog opens asking you to select the location of the AXPP file.
  • Once you have selected the AXPP file at the bottom of the dialog there is a Details section.
  • In the details section, you can see all of the objects to be imported.
  • When viewing the objects, right-click on one of them and choose to Compare to bring up compare window.

Packages

  • It includes all of the models, binaries, and additional pieces needed to deploy code.
  • Similar concept to an AX2012 model store or in VS a solution.
                   You can have multiple packages per installation.
  • AX ships with several packages including:
                   Application Suite - This is the package containing most of the application code and is the most likely to be overridden.

  • Application Suite Form Adaptor
  • Application Foundation
  • Application Foundation Form Adaptor
  • Application Platform
  • Application Platform Form Adaptor
  • When creating a model, the wizard prompts for which package the model should live in.
  • To create customization objects (overlayer objects) you have to:
             Create a new model in the same package as the objects being customized.
                     This is because there will be a dependency between your customizations and the objects being customized.
  • The new model has to exist in a layer that you can access (usr, cus, or var).

Support Faryal's Cusine


Bulk Database Operations Recordset D365FO/AX 2012

 

Recordset operations or set based operators



We all noticed that AX 2012 and D365FO get slow from time to time when we performed insertion or update operations on huge numbers of records one by one, and to overcome this issue, Microsoft has a feature to update or insert in bulk in a single statement.
 
We have 3 types of Bulk Operations
  • insert_recordset
  • update_recordset
  • delete_from

insert_recordset :


insert_recordset copies data from one or more tables directly into one resulting destination table on a single server trip. Using insert_recordset is faster than using an array insert. However, array inserts are more flexible if you want to handle the data before you insert it.

insert_recordset is a record set-based operator, which performs operations on multiple records at a time.

Syntax :


The list of fields in the destination table must match the list of fields in the source tables.
Data is transferred in the order that it appears in the list of fields.
Fields in the destination table that are not present in the list of fields are assigned zero-values as in other areas in X++. System fields, including RecId, are assigned transparently by the kernel in the destination table.

insert_recordset DestinationTable ( ListOfFields )

select ListOfFields1 from SourceTable [ where WhereClause ]

[ join ListOfFields2 from JoinedSourceTable

[ where JoinedWhereClause ]]

Example : 


The records, "myNum" and "mySum", are retrieved from the table another table and inserted into the table myTable. The records are grouped according to "myNum", and only the "myNum" records with a value less than or equal to 100 are included in the insertion.

insert_recordset myTable (myNum, mySum)
    select myNum, sum(myValue)
        from anotherTable
        group by myNum
        where myNum <= 100;


update_recordset :

The X++ SQL statement update_recordset enables you to update multiple rows in a single trip to the server. This means that certain tasks may have improved performance by using the power of the SQL server.

update_recordset resembles delete_from in X++ and to UPDATE SET in SQL. It works on the database server-side on an SQL-style record set, instead of retrieving each record separately by fetching, changing, and updating.


If the update method is overridden, the implementation falls back to a classic looping construction, updating records one by one just as delete_from does for deletions. This also means that the construction works on temporary tables, and whole-table-cached tables by using the looping construction.

Example :

MyTable tableBuffer;
;
update_recordset tableBuffer
setting field1 = field1 * 1.10;

delete_from :

You can delete multiple records from a database table by using a delete_from statement. This can be more efficient and faster than deleting one record at a time by using the xRecord.delete method in a loop.


If you have overridden the delete method, the system interprets the delete_from statement into code that calls the delete method one time for each row that is deleted.

Example :

static void DeleteMultiRow1aJob(Args _args)
{
    MyWidgetTable tabWidget;
    ;
    delete_from tabWidget
        where tabWidget .quantity <= 100;

}

But these set-based operations will roll back to row-by-row operation when either of the following condition is true:

  • it is not an SQL table (Eg. temporary table)
  • Database log is enabled for the table
  • Alert is set up for this table
  • Record level security is enabled for the table
  • AOSValidation method is overwritten

when using insert_recordset
the .insert() method is overwritten

when using update_recordset
the .update() method is overwritten

when using delete_from
the .delete() method is overwritten
DeleteAction is defined



To prevent it from fallback to row-by-row operation, the following method can be used if:

  • Delete action is defined, use skipDeleteActions
  • Database log is setup, use skipDatabaseLog
  • Alert is setup, use skipEvents
  • Method is overloaded (.insert(), .update, .delete()), use skipDataMethods



Support Faryal's Cusine


Difference Between Replacement key, Alternate key, Surrogate key in AX 2012 and D365FO


  Replacement key, Alternate key, and Surrogate key



WHAT IS A REPLACEMENT KEY INDEX?

While a surrogate key is great for lookup and database performance, it is not useful for the end-user because it gives no indication of the table’s purpose, or what related tables it is linked to. For this reason,  Dynamics 365 Finance & Operations has added the ‘Replacement Key’ index property for tables. The replacement key index is a dropdown of alternate keys that have been specified for the table. There can be any number of alternate keys for a table but only a single replacement key. More than one field can be specified under a replacement key, and it is these fields that will be displayed to the end-user on a form instead of the surrogate key field.

A replacement key is an alternate key that the system can display on forms instead of a meaningless numeric primary key value. Each table can have a maximum of one replacement key.


The replacement key is chosen by setting the ReplacementKey property on the table. The drop-down list offers every alternate key as an available value.

WHAT IS AN ALTERNATE KEY?

A table can have any number of alternate keys. An alternate key may be a natural key or a single field primary key used in foreign or primary key relations with other tables. In either case, to set one, the user must create a new index and then set AllowDuplicates to “No” and AlternateKey to “Yes”. If AllowDuplicates is not set to “No” then AlternateKey should be greyed out and uneditable

WHAT IS A SURROGATE KEY?

In Dynamics 365 Finance & Operations, a surrogate key is the auto-generated primary key for a table in the database. The surrogate key is linked to the already existing RecId field within any table. This means that the surrogate key is a unique 64-bit integer value that is mandatory for the table and cannot be changed or have duplicates. The fact that it is a 64-bit integer (int64) value means table operations normally perform faster than other types of fields such as string fields. This is the main strength of surrogate keys.

Support Faryal's Cusine


Definition of List, Set, Container, and Map

 

Difference between List, Set, Container, and Map


Containers:

Containers are dynamic and have no limits. They can contain elements of
almost all data types: boolean, integer, real, date, string, container,
arrays, tables, and extended data types. However, objects may not be stored
in containers.

Containers in AX are used very often. It’s easy to work with them. But…
data in containers are stored sequentially and thus retrieved sequentially.
This means that containers provide slower data access if you are working with
_large numbers_ of records. In case of large numbers of records use temporary
tables.

List:

Lists are structures that may contain any number of elements that are
accessed sequentially. Lists may contain values of any X++ type. All the
values in the list must be of __the same__(this is the main difference
between lists and containers) type, given in the creation of the list. The
implementation of lists is such that the traversal of the list elements is __very
fast.

Take a look for example at the class Dialog addControl() method.
Their controls are stored in ctrls List.

Map:

A map is a data type that associates one (key) value with another value [An
analog – a small table in memory with two fields: Keys, Values]. Both the key
and value values may be of any valid X++ type, including objects. The types
of the key and the value are given in the declaration of the map. The
implementation of maps is such that access to the values is _very fast_.

Don’t confuse map X++ types with Map objects in AOT, which are used for
mapping tables with similar structures of fields

Set:

The functionality of Sets is similar to the list.  A Set is just an unordered list of items, while a list of items held by a Map
are indexed via a key.
Take look at
\Classes\sysLabel\LabelModuleId().

Support Faryal's Cusine


intermediate language CIL IL D365FO


 What is an intermediate language?



Intermediate language (IL) is an object-oriented programming language designed to be used by compilers for the .NET Framework before static or dynamic compilation to machine code. The IL is used by the .NET Framework to generate machine-independent code as the output of the compilation of the source code written in any .NET programming language.

IL is a stack-based assembly language that gets converted to bytecode during the execution of a virtual machine. It is defined by the common language infrastructure (CLI) specification. As IL is used for the automatic generation of compiled code, there is no need to learn its syntax.

This term is also known as Microsoft intermediate language (MSIL) or common intermediate language (CIL).

Support Faryal's Cusine


Configuration key & Security Key

 

What are the Configuration key & Security Key?



Configuration key: 

Configuration keys allow administrators to enable or disable features in the application for all users. Disabling features help to minimize the attack surface against potential attacks.
Configuration keys are applied to:
  1. Tables
  2. Fields
  3. Indexes
  4. Views
  5. Menus
  6. Menu items
  7. Form controls,
  8. Report controls
  9. Extended data types
  10. Enumerations

Security key: 

Security keys allow administrators to set security on a user group level. Minimizing access on a user group level helps to reduce the attack surface against potential attacks.
The main reasons to apply user-level security are to:
Allow users to do only their designated tasks.
Protect sensitive data in the database.
Prevent users from inadvertently breaking an application by changing code or objects on which the application depends.
You need to apply a security key to:
·                     Tables
·                     Views
·                     Menus
·                     Menu items
·                     Form controls
·                     Report controls

Support Faryal's Cusine


Sysoperation VS RunBase

 

What is the Sysoperation framework how it is different from the runbase framework?


In Microsoft Dynamics AX 2012 & D365FO, the SysOperation system supplanted the RunBase system to bolster the group preparing usefulness. Going forward, the SysOperation system is prescribed for composing custom trade rationale that requires clump handling usefulness, over the censured RunBase framework. The RunBase system characterizes coding designs that actualize these necessities. The SysOperation system gives base executions for numerous of the designs characterized by the RunBase system. Another incredible thing is SysOperation system streamlined the pack / unload of factors that were extra work within the RunBase system, taking advantage of the Traits highlight presented with AX 2012 & D365FO.

SysOperation framework allows application logic to be written in a way that supports running operations interactively or via the Microsoft Dynamics AX & D365FO batch server. It implements the MVC (Model–View–Controller) design pattern, with the isolation of Parameters (Model), Dialog (View), and Service (Controller), for the code that’s executed.


The key objects of the framework are defined below:

Service:

The service class extends from the SysOperationServiceBase class and contains the business logic for the batch operation. Developers often tend to add the business logic in controller classes, which violates the Single responsibility principle.


Data Contract: 

Data contract class is the model class defining attributes needed for batch operations. These attributes are provided by the user, in a dialog. DataContractAttribute attribute is needed for the class and the properties methods require the DataMemberAttribute attribute.


Controller: 

Controller class extends from the SysOperationServiceController class. It holds information about the batch operation like execution mode, show dialog or progress bar etc. and directs the batch operation.


UI Builder: 

UI Builder class extends from SysOperationAutomaticUIBuilder class and is used for adding custom behavior to dialog/dialog fields dynamically constructed by the SysOperation framework.

Support Faryal's Cusine


Updating the cross-references

 


                Cross Reference Dynamics Finance & Operations


  • Navigate to MS Dynamics AX > Tool > Development Tools > Cross-reference > Periodic > Update
  • The Update cross-reference window appears.
  • Select update all and click the OK button. It will create a batch job and start running the batch job.
  • Usual time ranges from 3-4 hours depending upon the performance of the server.

Support Faryal's Cusine


Concept of extensions

 

Define Concept of Extensions



An extension is a way to add functionality to an object in D365FO without modifying the base code of that object.  

Your extensions are compiled into their own DLLs, which are separate from the D365 base system libraries. It also makes it easier for Microsoft to patch their sys layer code.

Microsoft has added to allow customizations without allowing the base code to be changed because they plan to not allow any overlaying of SYS layer code. 


Here are my old articles

Support Faryal's Cusine


Overloading vs Overriding

 

Overloading vs Overriding 



Polymorphism means “Many Forms”. In Polymorphism, poly means “Many” and morph means “Forms.” Polymorphism is one of the main pillars in Object-Oriented Programming. It allows you to create multiple methods with the same name but different signatures in the same class. The same name methods can also be in derived classes.
 
There are two types of Polymorphism,
  1. Method Overloading
  2. Method Overriding
In this article, I will explain method overloading and method overriding concepts in X++. I will try to demonstrate step-by-step differences between these.
 

Method Overloading

Method Overloading is a type of polymorphism. It has several names like “Compile Time Polymorphism” or “Static Polymorphism” and sometimes it is called “Early Binding”.
 
Method Overloading means creating multiple methods in a class with the same names but different signatures (Parameters). It permits a class, struct, or interface to declare multiple methods with the same name with unique signatures.
 
The compiler automatically calls the required method to check the number of parameters and their type which are passed into that method.

Sample Code


   public class Program  
    {  
        public int Add(int num1, int num2)  
        {  
            return (num1 + num2);  
        }  
        public int Add(int num1, int num2, int num3)  
        {  
            return (num1 + num2 + num3);  
        }  
        public float Add(float num1, float num2)  
        {  
            return (num1 + num2);  
        }  
        public string Add(string value1, string value2)  
        {  
            return (value1 + " " + value2);  
        }  
        static void Main(Args _args)  
        {  
            Program objProgram = new Program();  
           Info("Add with two int parameter :" + objProgram.Add(3, 2));  
           Info("Add with three int parameter :" + objProgram.Add(3, 2, 8));  
           Info("Add with two float parameter :" + objProgram.Add(3 f, 22 f));  
           Info("Add with two string parameter :" + objProgram.Add("hello", "world"));  
           
        }  
    }  


In the above example, you can see that there are four methods with the same name but the type of parameters or number of parameters is different. When you call Add(4,5), complier automatically calls the method which has two integer parameters and when you call Add(“hello”,” world”), complier calls the method which has two string parameters. So basically in method overloading complier checks which method should be called at the time of compilation.
 
Note: Changing the return type of method does not make the method overloaded. You cannot create method overloaded vary only by return type.



Method Overriding

 
Method Overriding is a type of polymorphism. It has several names like “Run-Time Polymorphism” or “Dynamic Polymorphism” and sometimes it is called “Late Binding”. 
 
Method Overriding means having two methods with the same name and same signatures [parameters], one should be in the base class and another method should be in a derived class [child class]. You can override the functionality of a base class method to create the same name method with the same signature in a derived class. You can achieve method overriding using inheritance. Virtual and Override keywords are used to achieve method overriding.

class BaseClass  
    {  
        public virtual void Add(int num1, int num2)  
        {  
           // your logic will be here 
        }  
    }  
    class ChildClass: BaseClass  
    {  
        public override void Add(int num1, int num2)  
        {  
          // your logic will be here
            ;  
        }  
    }  
    class Program  
    {  
        static void Main(Args _args)  
        {  
            BaseClass baseClassObj;  
            baseClassObj = new BaseClass();  
            Info("Base class method Add :" + baseClassObj.Add(-3, 8));  
            baseClassObj = new ChildClass();  
            Info("Child class method Add :" + baseClassObj.Add(-2, 2));  
          
        }  
    }  

In the above example, I have created two same name methods in the BaseClass as well as in the child class. When you call the BaseClass Add method with less than zero value as parameters then it adds successfully. But when you call the ChildClass Add method with less than zero value then it checks for a negative value. And the passing values are negative then it asks for a new value.
 
So, here it is clear that we can modify the base class methods in derived classes.
 
Points to be remembered,
  1. The method cannot be private.
  2. The only abstract or virtual method can be overridden.
  3. Which method should be called is decided at run time.

Support Faryal's Cusine


User Interface Builder Class

 


What Is User Interface Builder Class


The User Interface Builder Class is the layout parameter dialog box that opens when a report is running in the Microsoft Dynamics AX Or Finance & Operations. 

The User Interface also adds customization and additional fields for the dialog, You can also use this class to write the lookup and validation on the report dialog.


 UI Builder Class scenarios used are:

  1. Group the dialog fields
  2. Override the dialog field events
  3. For adding customized lookup dialog field
  4. To bind the dialog fields with contract parameters
  5. For changing layouts in dialog
  6. Adding more custom controls in the dialog

Support Faryal's Cusine


Interfaces & Abstract Class

 

Interfaces VS Abstract Class?




The class implementing is the interface that implements all interface methods and there will not be any abstract Class requirement. There are many access modifiers available like abstract, protected, virtual, internal, public, and many more that are useful in the abstract Classes. Abstract classes will be very fast when compared to interfaces.


Abstract class contains both the incomplete or complete methods and the interface is the signature for a particular method. The abstract class is the implemented method but the interface cannot be an implemented method.


The abstract class contains constructors, fields, or destructors for implementing the properties. The interface does not contain constructors, fields, or destructors but they have only the property’s signature with no implementation.

The abstract class does not support multiple inheritances and the interface supports multiple inheritances. The class can also inherit more interfaces but only a single abstract class.

































Support Faryal's Cusine


Pass By Reference and Pass By Value

 

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 the actual parameters

  1. The same memory location is used for both variables. (Formal and Actual)
  2. It is useful when you are required to return more than 1 value.

Pass By Value:

  1. In this method value of the variable is passed. Changes made to formal will not affect the actual parameters.
  2. Different memory locations will be created for both variables.
  3. Here there will be a temporary variable created in the function stack that does not affect the original variable.

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

Support Faryal's Cusine


What are AOS in AX & D365FO

 

AOS in AX & D365FO


The Microsoft Dynamics AX / D365FO (Finance & Operations) Object Server (AOS) is the second-tier application server in the Microsoft Dynamics AX three-tier architecture.

The AX 2012 3-tier environment is divided as follows:

  1. First Tier – Intelligent Client
  2. Second Tier – AOS
  3. Third Tier – Database Server

In D365FO N-tier environment is divided as follows:

  1. X-Tier – AOS, and Batch servers
  2. X-Tier – Database Server 

In an N-tier solution, the database runs on a server as the X tier; the AOS handles the business logic, Batch jobs/ background process in multiple tiers, and handles the user interface and necessary program logic.

Support Faryal's Cusine


What is AOT in AX & D365FO

 


Define AOT in AX & D365FO



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

In the D365FO,  You can find the AOT objects in Application Explorer.

Support Faryal's Cusine


Virtual Company

 

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.

Support Faryal's Cusine


Differentiate Refresh, Reread, Research and Executequery

 


What is the Difference?



Refresh

  • refresh will not reread the record from the database.  It basically just refreshes the screen with whatever is stored in the form cache.
Reread
  • 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 data source.  In this case, .reread () will make those changes appear on the form.
ReSearch
  • 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 honor any existing filters and sorting on the form.
ExecuteQuery
  • 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.

Support Faryal's Cusine


D365FO Interview Question

 

D365FO Interview Questions & Answers









What is Microsoft Dynamics AX?

Answer: Link

What is the difference between Microsoft Dynamics AX2012 & D365FO?

Answer: Link

Difference Between Edit And Display Method?

Answer: Link

What Is An Index?

Answer: Link

What are OOPS concepts?

Answer: Following are the main concept of OOPS:

  • Data Abstraction: Showing only the essential information and hide background details.
  • Encapsulation: Wrapping of data member and method to a single unit.
  • Inheritance:-The Flowing of property of parent class to the child class.
  • Polymorphism:-The property of using the same method again and again to perform different things.

Differentiate Refresh (), Reread (), Research (), Executequery ()?

Answer: Link

Why We Use Virtual Companies?

Answer: Link

What is AOT in AX & D365FO?

Answer: Link

What is AOS in AX & D365FO?

Answer: Link

Interface VS Abstract?

Answer: Link

How many types of key tables has?

Answer: Link
  • Replacement Key
  • Alternate key
  • Surrogate key

What is the purpose of the User Interface Builder Class?

Answer: Link

Overloading vs Overriding?

Answer: Link

What is the concept of Extension?

Answer: Link

Define Recordset Operations and types.

Answer: Link

We have 3 types of Bulk Operations
  • insert_recordset
  • update_recordset
  • delete_from

Which development environment is used in D365FO?

Answer: Visual Studio IDE.

What is ConView()?
Answer: It is a Global class that can be utilized to view elements in a tree format.

What is COC (Chain of Command)?

Answer: In D365, To create the extension of the Protected access specified class, We mainly used COC, COC can also be used for a public class. For extension, we used the keyword Extension of(). We use the keyword final to define the class. we use the keyword next to call the base class methods.

Difference between COC and Event Handler?

Answer Link

Why are that people prefer TempDB over InMemory tables while using them in queries for reports?

Answer: Despite both being temporary type tables.

TempDB
You can use TempDB Table the SSRS report with a large amount of data without losing performance.
TempDB tables can be used in Joins with the other temp table or regular table.

Memory Table
Slow performance with a huge number of records.
couldn't use the inMemory table in the query with a join.

How to update the cross-reference tool?

Answer: Link

What is a model in Dynamics 365 Finance & Operations?

Answer: A model is a design-time concept, for example, a warehouse management model or a project accounting model. A model always belongs to a package. A package is a deployment and compilation unit of one or more models. It includes model metadata, binaries, and other associated resources.


What is the difference between package and model in d365?

Answer: A model is a group of elements, such as metadata and source files, that typically constitute a distributable software solution and includes customizations of an existing solution.

A package is a deployment and compilation unit of one or more models. It includes model metadata, binaries, and other associated resources.


What is Extensible Data Security?

Answer: Link

What is the Sysoperation framework how it is different from the runbase framework?

Answer: Link

What is the difference between the configuration key & the security key?

Answer: Link

What is an intermediate language?

Answer Link

How to Import & Export Model?

Answer: Link

How to Import & Export Project?
Answer: Link

What is Microsoft LCS?
Lifecycle Services (LCS) for Microsoft Dynamics is a collaboration portal that provides an environment and a set of regularly updated services that can help you manage the application lifecycle of your implementations of the Dynamics 365 Finance and Operations apps.

Difference between List, set, container and Map?
Answer: Link


Support Faryal's Cusine


Virtual Fields Vs Computed Fields

  Virtual Field: A virtual field in D365FO is a field that doesn't have a direct representation in the database. It's a field that y...