How to programmatically create a project for objects in a given layer
This article introduces a code example to describe how to programmatically create a project for objects in a given layer in Microsoft Dynamics AX.
Applies to: Microsoft Dynamics AX
Original KB number: 2004467
Summary
You may want to create a Microsoft Dynamics AX project that contains all of the application elements that exist in a given layer. For example, if you need to recreate the VAR layer *.aod
file, you will need to pull all of the application elements in the VAR layer into a project, export the project to an xpo, delete the VAR *.aod
file and finally log into the newly created VAR *.aod
file import the xpo. When you import the xpo all of the application elements can be recreated in the new *.aod
file. The code in this document demonstrates how to do this.
More information
When the X++ code in this example is added to a job in the AOT and executed, the code will create a private project called VarLayerChanges
. The VarLayerChanges
project will contain all of the elements that exist in the VAR layer. If you would like to create a project for a different layer, change the string 'VarLayerChanges'
to the layer you need it for, for example 'CusLayerChanges'
. Then, change the enum UtilEntryLevel::var
to the different layer, for example UtilEntryLevel::cus
.
TreeNode treeNode = infolog.projectRootNode();
ProjectNode projectNode;
UtilElements utilElements;
;
treeNode = treeNode.AOTfirstChild();
treeNode.AOTadd('VarLayerChanges');
projectNode = treeNode.AOTfindChild('VarLayerChanges');
projectNode = projectNode.getRunNode();
while select utilElements WHERE utilElements.utilLevel == UtilEntryLevel::var
{
ProjectNode.addUtilNode(utilElements.recordType, utilElements.name);
}
ProjectNode.AOTsave();