Monday, April 13, 2020

D365FO - How to read metadata information from AOT through X++

Following code snippet loop through metadata information of AOT objects (this example is to loop through all data entities).


class DataEntityExtension
{
    /// <summary>
    /// Runs the class with the specified arguments.
    /// </summary>
    /// <param name = "_args">The specified arguments.</param> 
    public static void main (Args _args)
    {
        DMFEntityTableExtension entityTableExtension;

        var entityNames = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetDataEntityViewNames();
        Var enumerator = entityNames.getEnumerator();
       
        while (enumerator.MoveNext())
        {
            enumerator.MoveNext();

            Microsoft.Dynamics.AX.Metadata.MetaModel.AxDataEntityView axDataEntity = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetDataEntityView(enumerator.Current);

            if (axDataEntity)
            {                
                    entityTableExtension.Label = SysLabel::labelId2String(axDataEntity.Label);
                    entityTableExtension.PublicEntityName = axDataEntity.PublicEntityName;
                    entityTableExtension.PublicCollectionName = axDataEntity.PublicCollectionName;
                    entityTableExtension.EntityName = axDataEntity.Name;
                    entityTableExtension.IsPublic = axDataEntity.IsPublic;
                    entityTableExtension.insert();

                    info(strFmt("Entity Name: %1 -- Entity Label; %2 -- Entity public collection Name: %3 -- Entity Public Name %4 -- Is Entity Public - %5",
                                axDataEntity.Name,
                                SysLabel::labelId2String(axDataEntity.Label),
                                axDataEntity.PublicCollectionName,
                                axDataEntity.PublicEntityName,
                                axDataEntity.IsPublic));
               
            }
           
        }
    }

}

OUTPUT:





1 comment:

I will appreciate your comments !

Download large bacpac (sandbox database) to DEV environment much faster

As the LCS website gets slower and slower and the database backups get bigger and bigger.  Use AZCopy to download objects out of LCS asset l...