Automate The Export Of DIXF Projects Using X++ Code:

The DMF project should automatically export to Excel when the user runs the batch job, ensuring data is saved without manual intervention. 

High level resolution steps 

Step 1: Create a simple batch job; Refer the below link to create it. 

Video blog: Sys Operation framework batch job with parameter X++ – Saina Cloud Software Solutions 

Step 2: Implement the business logic in a service class. This code ensures the DMF project is exported and made available for download automatically when the batch job runs. 


    class SCCSysOperationDemoService extends SysOperationServiceBase
{
    public void processDemo()
    {
        DMFDefinitionGroupName dmGroupName = 'SCC employee project export';
        str downloadUrl;
        DMFDefinitionGroupEntity dmfDefinitionGroupEntity;
        str exportFileName;

        try
        {
            select firstonly dmfDefinitionGroupEntity
                where dmfDefinitionGroupEntity.DefinitionGroup == dmGroupName;

            DMFExecutionId executionId = DMFUtil::setupRunExecution(dmGroupName);
            DataImportFramework::MoveToStaging(executionId);
            SharedServiceSubmitFileID exportedFileId = DMPackageExporter::exportToFileV2(dmGroupName, executionId, dmfDefinitionGroupEntity.Entity, dmfDefinitionGroupEntity.Source);

            if (exportedFileId != '')
            {
                downloadUrl = DMFDataPopulation::getAzureBlobReadUrl(str2Guid(exportedFileId));
                System.Uri uri = new System.Uri(downloadUrl);
                str fileExt;

                if (uri != null)
                {
                    fileExt = System.IO.Path::GetExtension(uri.LocalPath);

                    Filename filename = strFmt('Export - %1', fileExt);
                    System.IO.Stream stream = File::UseFileFromURL(downloadUrl);
                    File::SendFileToUser(stream, filename);
                }
            }
        }
        catch
        {
            error('DMF export failed');
        }
    }
}

    

Code Explanation:  

  1. Variable Declaration: 

  1. Try-Catch Block: 

  1. Error Handling: 


    public void processDemo() 
{ 
    DMFDefinitionGroupName dmfGroupName = 'SCC employee project export'; 
    str downloadUrl; 
    DMFDefinitionGroupEntity dmfDefinitionGroupEntity; 
    str exportFileName;

    try 
    { 
        select firstonly dmfDefinitionGroupEntity  
            where dmfDefinitionGroupEntity.DefinitionGroup == dmfGroupName; 

        DMFExecutionId executionId = DMFUtil::setupNewExecution(dmfGroupName); 
        DataImportFramework::MoveToStaging(executionId); 
        SharedServiceUnitFileID exportedFileId = DMFPackageExporter::exportToFileV2(dmfGroupName, executionId, dmfDefinitionGroupEntity.Entity, dmfDefinitionGroupEntity.Source); 

        if (exportedFileId != '') 
        { 
            downloadUrl = DMFDataPopulation::getAzureBlobReadUrl(str2Guid(exportedFileId)); 

            System.Uri uri = new System.Uri(downloadUrl); 
            str fileExt;

            if (uri != null) 
            { 
                fileExt = System.IO.Path::GetExtension(uri.LocalPath); 
            } 

            Filename filename = strFmt('Export - %1', fileExt); 
            System.IO.Stream stream = File::UseFileFromURL(downloadUrl); 
            File::SendFileToUser(stream, filename); 
        } 
    } 
    catch 
    { 
        error('DMF export failed'); 
    } 
} 

    

Output: 

When user can run the batch job in UI. The excel file downloads in the local folder. 

Automate Export DIXF Projects, Dynamics 365 Automation, DIXF Projects

Exported files can be available in the local folder. 

User can be able to open the downloaded file. 

Leave a Reply

Your email address will not be published. Required fields are marked *