How to Multi-thread Your Imports in Dynamics 365 for Finance & Operations
There is some confusion on how to multi-thread your imports in Dynamics 365 for Finance and Operations. The first thing to know is that Microsoft prevents you from multi-threading some entities, which is a good thing. This is good because in Dynamics AX 2012 you could multi-thread any entity and basically, if the order of the records getting imported is important, then multi-threading isn’t a good option because if they go out of sequence due to records getting imported in parallel you can corrupt your data.
The second thing to know is how to set up multi-threading in Dynamics 365. To do this you simply go to Workspaces > Data Management > Click the Framework Parameters tile > Entity Settings tab > Click Configure Entity Execution Parameters.
In the entity execution parameters, you are defining how many threads should be used when you import an entity in batch. You need to understand that you can set up an entity multiple times in this form as seen below.
You are defining three things in the form:
- Entity – What entity are you setting multi-threading up for.
- Import Threshold Record Count – The threshold tells the system how many records need to be imported to use this line.
- Import Task Count – How many threads should be used; aka how many tasks are created.
Let’s walk through an example of importing the “Customer Definition” entity with 1360 records.
1.) From the Data Management Workspace go to the Import Tile.
- Put the form in “Enhanced View” (Button on the ribbon).
2.) Let's add a file
- Click Add File and populate the entity, format, and path to the file.
3.) Once you have your entity/file added on the ribbon, click Import Options > Import in Batch.
- Give our batch a Task Description, then click the OK button.
4.) Now go to: Modules > System Administration > Inquiries > Batch Jobs.
5.) Find your batch job and select it.
- On the ribbon select the Batch Job tab > View Tasks.
- You’ll see all the tasks that are scheduled to run.
- If you zoom in on my screenshot below you’ll see that 7 tasks are scheduled to import the data.
NOTE: There are a few tasks that you just get automatically with each batch run which are the ones that have something different than DMFEntityWriterTasks as its Class name. You can ignore those.
End Result in the example: Seven tasks/threads were created because in my parameters the 1360 records I imported fell between 1300 – 5000 so the highlighted line below was used to determine how many threads are used.