Monday, 27 January 2025

Get the List of Customized objects from a Model in D365FO using x++

 Create a table with 2 fields.

Table --> ObjectsListTable 

Fields --> 1.ObjectType 

                2.ObjectName


Run below class.

internal final class ObjectsListClass

{

    public static void main(Args _args)

    {

        str axUpdateName;

      ObjectsListTable objectsListTable;

        var environment = Microsoft.Dynamics.ApplicationPlatform.Environment.EnvironmentFactory::GetApplicationEnvironment();

        str packageDir = environment.get_Aos().get_PackageDirectory();


        var runtimeProviderConfiguration = New Microsoft.Dynamics.AX.Metadata.Storage.Runtime.RuntimeProviderConfiguration(packageDir);

        var metadataProviderFactory =  New Microsoft.Dynamics.AX.Metadata.Storage.MetadataProviderFactory();

        var provider = metadataProviderFactory.CreateRuntimeProvider(runtimeProviderConfiguration);

        

delete_from objectsListTable;


        //Tables

        var updatesEnumerator = provider.Tables.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Table';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        //Table extensions

        updatesEnumerator = provider.TableExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Table extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.Classes.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Class';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.DataEntityViews.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Data entitiy';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.DataEntityViewExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Data entity extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.Forms.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

            

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Form';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.FormExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Form extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        //MI

        updatesEnumerator = provider.MenuItemDisplays.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Display';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.MenuItemDisplayExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Display extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.MenuItemActions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Action';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.MenuItemActionExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Action extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }

        updatesEnumerator = provider.MenuItemOutputs.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Output';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.MenuItemOutputExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'MenuItem Output extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        //Service

        updatesEnumerator = provider.Services.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Service';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.ServiceGroups.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Service Group';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        //Security

        updatesEnumerator = provider.SecurityRoles.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Role';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.SecurityRoleExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Role extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.SecurityDuties.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Duty';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.SecurityDutyExtensions.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Duty extension';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.SecurityPrivileges.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Privilege';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }


        updatesEnumerator = provider.SecurityPolicies.ListObjectsForModel('CGINormet').GetEnumerator();

        while (updatesEnumerator.moveNext())

        {

            axUpdateName = updatesEnumerator.get_Current();

           

            objectsListTable.clear();

            objectsListTable.ObjectType = 'Security Policy';

            objectsListTable.ObjectName = axUpdateName;

            objectsListTable.insert();

        }

    }


}

No comments:

Post a Comment