web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / Startspacers / D365FO: Import data through...

D365FO: Import data through DMF data project using x++

Basheer17 Profile Picture Basheer17 2,720

Following code can be used to import data using x++ through DMF data project.

Prerequisites:

  1. Data entity
  2. Setup an import project using the entity

How it works…..

When you run the code, it prompts user to upload a file. Then it uses the pre-configured DMF import data project to import data from the file to the target entity.

class XYZCustGroupImport
{    
    private static DMFDefinitionGroup findDMFDefinitionGroup()
    {
        DMFDefinitionGroup definitionGroup;

        select firstonly definitionGroup
            where definitionGroup.DefinitionGroupName == 'CustGroupImport'; //DMF import data project

        return definitionGroup;
    }

    private static DMFDefinitionGroupEntity findDMFDefinitionGroupEntity(DMFDefinitionGroup _definitionGroup)
    {
        DMFDefinitionGroupEntity definitionGroupEntity;
        DMFEntity dmfEntity;

        select firstonly RecId, Entity from definitionGroupEntity exists join dmfEntity
            where definitionGroupEntity.DefinitionGroup == _definitionGroup.DefinitionGroupName
                && dmfEntity.EntityName == definitionGroupEntity.Entity
                && dmfEntity.TargetEntity == dataentityviewstr(CustCustomerGroupEntity);

        if (!definitionGroupEntity)
        {
            throw error(strFmt("@DMF:DMFNoEntityExists", _definitionGroup.DefinitionGroupName));
        }

        return definitionGroupEntity;
    }

    private static DMFLocalFilePath applyTransforms(SharedServiceUnitFileID _uploadedStatement, DMFDefinitionGroup definitionGroup)
    {
        DMFDefinitionGroupEntity    definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
        DMFExecutionId              executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);

        DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(
            definitionGroup.DefinitionGroupName,
            definitionGroupEntity.Entity,
            executionId,
            true);

        execution.IsTransformed = NoYes::No;
        DMFLocalFilePath filePath = execution.applyTransforms(_uploadedStatement);

        DMFExecution e = DMFExecution::find(executionId, true);
        e.delete();

        return filePath;
    }

    public static void main(Args _args)
    {      
        SharedServiceUnitFileID fileId;

        //Get the file from user
        FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult;

        if (result && result.getUploadStatus())
        {
            fileId = result.getFileId();

            DMFDefinitionGroup          definitionGroup = XYZCustGroupImport::findDMFDefinitionGroup();

            XYZCustGroupImport::applyTransforms(fileId, definitionGroup);

            DMFDefinitionGroupEntity    definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
            DMFExecutionId              executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);

            // Find execution
            DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(definitionGroup.DefinitionGroupName, definitionGroupEntity.Entity,
                                                                                        executionId, true);
            execution.FilePath = fileId;
            execution.IsTransformed = NoYes::Yes;
            execution.update();

            // Import the file via quick import DMF
            DMFQuickImportExport::doPGImport(definitionGroup.DefinitionGroupName, executionId, true);
            
            //deletes file
            result.deleteResult();
        }
    }

}

 

Download source code pdf XYZCustGroupImport


This was originally posted here.

Comments

*This post is locked for comments