Environment Hot-Fixes List Using D365FO

 


Environment Hot-Fixes List Using X++ D365FO 



We All know that information about metadata hotfixes is installed directly from Visual Studio and we can check them Using Apply Hotfix Addins(Dynamics 365 -> Addins -> Apply Hotfix).


The same things we can retrieve using X++ Job

Code Sample


class SLD_DemoClass

{

        public static void main(Args _args)

    {

        new SLD_DemoClass().processExecution();

    }


    public void processExecution()

    {

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

Microsoft.Dynamics.AX.Metadata.Providers.IMetadataProvider metadataProvider = this.getDiskMetadataProvider(environment);

Microsoft.Dynamics.AX.Metadata.Providers.IMetaUpdateProvider updateProvider = metadataProvider.get_Updates();

var moduleInfoList = metadataProvider.ModelManifest.ListModules();

var i = moduleInfoList.GetEnumerator();

setPrefix('Installed KBs on your Instance');

while (i.MoveNext())

{

Microsoft.Dynamics.AX.Metadata.MetaModel.IModuleInfo moduleInfo = i.get_Current();

System.String moduleName = moduleInfo.get_Name();

setPrefix(moduleName);

var updatesHotfixesEnumerator = updateProvider.ListObjects(moduleName).GetEnumerator();;

            while (updatesHotfixesEnumerator.moveNext())

            {

System.String axUpdateName = updatesHotfixesEnumerator.get_Current();

Microsoft.Dynamics.AX.Metadata.MetaModel.AxUpdate axUpdateObject = updateProvider.Read(axUpdateName);

utcdatetime installedDateTime = axUpdateObject.get_AppliedDateTime();

setPrefix(strFmt('Name %1, Installed on %2', axUpdateObject.get_Name(), installedDateTime));

var listKb = axUpdateObject.get_KBNumbers().GetEnumerator();

                while (listKb.MoveNext())

                {

                    info(listKb.get_Current());

                }

            }

        }

    }


    

public  Microsoft.Dynamics.AX.Metadata.Providers.IMetadataProvider getDiskMetadataProvider(Microsoft.Dynamics.ApplicationPlatform.Environment.IApplicationEnvironment _Instance)

        {

            Microsoft.Dynamics.AX.Metadata.Storage.DiskProvider.DiskProviderConfiguration diskProviderConfiguration = new Microsoft.Dynamics.AX.Metadata.Storage.DiskProvider.DiskProviderConfiguration();

diskProviderConfiguration.AddMetadataPath(_Instance.get_Aos().get_PackageDirectory());

Microsoft.Dynamics.AX.Metadata.Storage.MetadataProviderFactory metadataProvicerFactory = new Microsoft.Dynamics.AX.Metadata.Storage.MetadataProviderFactory();


return metadataProvicerFactory.CreateDiskProvider(diskProviderConfiguration);

        }

}





Support Faryal's Cusine


No comments:

Post a Comment

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