Monday, 15 December 2014

Data Migration Framework – Create a Custom Entity For Migration

Our team are using the Data Migration Framework to import data into Dynamics AX 2012.  We have created a lot of custom entities, which has been challenging given the lack of documentation on the subject.  I thought I’d share a tutorial which I have written on creating a custom entity.

1. Go to Data Migration Framework –> Common –> Create a custom entity for migration.
2. Select the table you wish to create as an entity and click finish.
image

3. Click on Yes to define the relationships.
image
N.B. This seems to error occasionally.  If it does, you must manually create any elements the wizard has not created for you.  The structure of your project should look like the screen shot below.  Your project may contain EDTs which is fine.  You project is created as a private project.
image

The Staging Table

4. The table which is created is the table you will load the staging data into.  I have removed the fields I do not require for the data import, but this is not a necessary step.
5. The wizard creates four standard fields which are used in the DMF.  Definition group, ExecutionId, TransferStatus and IsSelected.
  • Change the EDT on the isSelected Field to DMFIsSelected.
  • Change the enumType of the TransferStatus field to DMFTransferStatus.
6. Remove the relation DMFExecution1.
7. Create a relation between the staging table and the table you are populating.
image

Custom Method/Function

In this example, I want the Description field to be populated by the itemID.  I am therefore going to generate a method to do this.
8. In the class which is created, create a new method.  The method must be prefixed with Generate…….
1
2
3
4
5
6
7
8
9
10
11
12
13
public container generateDescription()
{
    Container       ret = conNull();
 
    if (entity.itemId != '')
    {
        target.description = entity.itemId;
 
        ret = [target.description];
    }
 
    return ret;
}
9. Create a FieldGroup on your staging table with the same name as the method you have just created.  Add the fields you wish to pass into the method.
image
10. Create a new method in the class named getReturnFields.  This tells the migration tool which table and field the value passed back from the the generate method should go.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static container getReturnFields(Name _entity, MethodName _name)
{
    DataSourceName dataSourceName = queryDataSourceStr(DMFInventItemBarcodeTargetEntity, InventItemBarcode);
    Container      con            = [dataSourceName];
 
    Name fieldstrToTargetXML(FieldName _fieldName)
    {
        return DMFTargetXML::findEntityTargetField(_entity,dataSourceName,_fieldName).XMLField;
    }
 
    switch (_name)
    {
 
        case methodStr(DMFInventItemBarcodeEntityClass, generateDescription) :
            con += [fieldstrToTargetXML(fieldStr(InventItemBarcode, Description))];
            break;
 
        default :
            con = conNull();
    }
 
    return con;
}

The Import

8. Go to Data Migration Framework –> Setup–> Target Entities.
9. Create a new custom Entity with the objects you have created.
image
10. Go to Modify Target Mapping and check your fields are mapped correctly.  Although you can change the mapping here, if it is not correct, it is likely there is something missing from your project.
image
11. You can now go to Data Migration Framework –> Common –> Processing Groupand create a new processing group.  Click on Entities and create a new entity for the processing group.
12. Go to Generate Source Mapping and select the fields you are importing and the order you are importing them.  Generate Sample File to get the structure required for your data import.  You can add data here and save it locally.
image
13. Click Finish and enter your source file into the entity record for the processing group.
image
14. Click Generate Source mapping.
15.  Go back to your processing group and click get Staging Data.  Click OK, Run on AOSand then OK again.
16.  Your data should now be loaded into the staging table.
image
17. In the processing group, click on Copy Data To target. Select your job ID, click OK, Run on AOS and the OK.
18.  Your  data should now be loaded into your target table.
image

1 comment:

Labels

#veryusefulcode (1) AIF (8) AOT Maps (1) Args (1) Ax 2009 Reports (2) AX 2012 navigation (1) Ax 2012 Interview Questions (1) AX 7 (2) AX Architecture (1) Ax Backup (1) AX Workflow (2) AX2012 (1) AX2012 R2 (1) Ax2012R3 (1) AX2012R3 Dynamics Connector Step by Step Installation and Configuration (1) AX2012R3 EP Step by Step Installation and Configuration EP R3 (1) AX2012R3 HelpServer Step by Step Installation and Configuration (1) AX2012R3 Rapid Start Connector Step by Step Installation and Configuration (1) AX2012R3 Report Server and Analysis Server Step by Step Installation and Configuration (1) AX7 (1) Best practices (1) Blocking user to enter (1) Collection Classes (1) Container (1) D365FO (3) Data Migration Frame Work ax 2012R3 (1) Deleting duplicate Record from Table – Ax2012 (1) Delivery due date notification workflow in Ax 2012 (1) Development Steps EP (1) Dimensions (1) DIXF (1) DMF in Ax 2012 R3 (1) Dynamics Ax 2012 Interview Questions (1) DYNAMICS AX 2012 INTERVIEW QUESTIONS PART 2 (1) DYNAMICS AX 7 (1) EDT relation Migration Tool (1) EP AX 2012 (1) Ep Lookup (1) Error (1) Event Handler (1) F5 (1) File Handling (4) Filter on AX2012 Listpage (1) filtering (2) financial dimensions in AX 2012 (3) form (1) images (1) Installation and Configration (4) Installation and Configuration (11) Installation of Management Reporter 2012 for AX 2012 (1) Interaction class in ax 2012 (1) Interview Question (1) Interview Questions For Ax 2012 (1) Invent DIm (1) Jobs (2) license (1) List page and form menuitem enable code (1) Methods (1) microsoft Dynamics AX 365FO (1) Number Sequence Generation – AX 2012 (5) Number Sequence2012 (1) OLTP-OLAP (1) Passing Args (1) Passing form caller and menu item caller in ax 2012 (1) Passing Multiple Records Args (1) Posting in Ax 2012 (1) POSTING PURCHASE ORDER (1) Query (1) Query Filter Form (2) Query Ranges in X++ (1) Question and Answer (1) Report (1) Reports Controller class (1) RLS in ax 2009 (1) SALES ORDER IMPORT/EXPORT FRAMEWORK BY DMF (1) Security (1) security roles (1) Security Sysqueryrangeutil (1) Sharepoint 2016 (1) SQL SERVER (1) SSRS (2) SSRS Reports Controller class (2) Table collections & Virtual company (1) Time (1) TIPS AND TRICKS (1) Web service AIF (3) Web Services on IIS (AIF) Step by Step Installation and Configuration (1) workflow ax2012 (1) Workflow installation (1) Workflow Method (3) X++ (1)