Sunday, January 31, 2016

Microsoft Dynamics AX 7 terms - Element, Project, Model, Package, Solution and their relations

In this post I am going to cover basic terms of Dynamics AX 7 development.


Element: Element is the object in the AOT(Application Object Tree) such as tables, classes, forms etc.


Project: Project is a small, manageable group of elements. If you want to customize the element, it needs to be added to the project. Project always belongs to only 1 model. We can use project files to import/export between different instances of AX. It is saved as .AXPP file.   


Model: Model is defined as collection of elements that represent a distributable software solution. This included all the elements and the Metadata. Model belongs to only 1 package. You can modify elements belonging to same package where the model belongs. Model is a unit of development/customization.


Package: Package is a deployable container. It contains source files (XML files), resources and DLLs. It is similar to Model store of AX 2012. You can select one or more packages and create a deployable package, which can be used to move the code from one environment to other. Packages are stored under c:\packages folder. For every model new sub folder will be created under package folder. Package is unit of deployment.


Solution: Solution is a virtual grouping of projects in Visual Studio. In Visual Studio you can add project from same or different models from one or more packages.

Following is the diagram showing this structure.
  • Element is a part of project.
  • One element belongs to only one model and can be customized only in that model once.
  • Project is a part of model.
  • Model Can have many projects.
  • Package contains one or more models.
  • one model belongs to only 1 package.
  • Solution is Visual studio solution which can contain models from different packages.
  • Solution is Virtual grouping created for ease of managing the development objects.  
Following is the screenshot from the Visual studio:


Above solution has multiple models from different packages.
Models are of both customization models as well as extension models.



Above screen shows each model and corresponding packages.





5 comments:

  1. Thank you Vinit for posting this.
    I have a small query on the statement "One element belongs to only one model and can be customized only in that model once"
    Element is nothing but the objects such as tables, classes, forms etc. So it can belong to any number of models. So how come one element belongs to only one model ?

    ReplyDelete
  2. Hi Ajay Thank you for reading. Think of the elements as real world object, e.g. Office table. Now as the 1 table can be in one room at a time, same way element(office table) belongs to one model(room). Element can never belong to number of models.. Same way one model belongs to only one package(consider building)as well.

    ReplyDelete
  3. Hi Vinit,
    I'd support Ajay concern.He is correct.I'd believe the sentence completely wrong
    "Element is nothing but the objects such as tables, classes, forms etc. So it can belong to any number of models. So how come one element belongs to only one model"

    @Vinit: you should have to use better terminology as it might misguides viewers.
    https://technet.microsoft.com/en-us/library/hh335184.aspx
    A model is a set of elements in a given layer.Every element in a layer belongs to only one model.
    don't say "Element is the object in the AOT(Application Object Tree) such as tables, classes, forms & One element belongs to only one model and can be customized only in that model once."

    for example a single method in a Table may belongs to two models.

    ReplyDelete
  4. Hi Vinit, nice article. I think what you would like to draw by saying above -
    Lets consider we create a new model (M1). Adding some new objects (Class1, Table1) in the newly created model M1. Now, if someone needs to modify these objects, they have to either directly customize this model, or create a new model by referencing(extension approach) M1 model and more or create a new model based on existing model M1 only. So all the way, our new model has a link(reference or extension) of M1. So with the new model and M1, its a kind of family where these objects lies. Like many rooms(models) in an apartment which share the same table/chair(objects). Its an object oriented concept where we can define variables at parent class and still able to modify them at child class but variable is unique through out the class family.

    ReplyDelete