Dynamics 365 General Journals were designed to handle large volume of rows. It’s difficult to define exactly the baseline line to classify a journal as a large volume.

Our case was post journal 500 000 lines in a 6 hours time window. A performance throughput of roughly 1389 lines per minute during posting.

The absolute numbers will vary in production environments due to various factors, configurations, dimensions per line, etc.

Baseline

First, let’s define our baseline. Let’s post a journal with 10 000 lines. The posting job took 50 minutes. We got a performance of 200 lines per minute. These numbers are way beyond the expected performance.

Configuration

We will take advantage of parallel posting of general journals by configuring “Lines limit” field in the journal name setup. We will play with this value, by simulation different scenarios.

!

“Lines limit” will distribute lines from current the journal to smaller journals by the amount set by the user in setup. Smaller journals might not be equal in size, there are splitting rules ( balance by voucher, etc.).

Simplistic graphical representation of LedgerJournalPostBatch.

!

First, let’s fine tuning values under a single AOS Batch Server. AOS was limited to 8 simultaneous batch tasks. In one of the executions, we have increased to simultaneous batch tasks to 12. Performance decreased by incrementing value to 12 batch tasks. Meaning that, AOS lost more time throttling between tasks.

Post 10 000 lines, under a single AOS.

Threads AOS Number AOS Lines to Post Execution Time Posting lines per Minute Lines per Batch
8 1 10 000 00:24:47 417 1 0000
12 1 10 000 00:17:03 589 500
8 1 10 000 00:16:19 625 500

Post 10 000 lines, with multiple AOS

Threads AOS Number AOS Lines to Post Execution Time Posting lines per Minute Lines per Batch
8 4 10 000 00:07:39 1 429 500

Post 50 000 lines, multiple AOS

Threads AOS Number AOS Lines to Post Execution Time Posting lines per Minute Lines per Batch
8 4 50 000 00:34:47 1 471 250

All Values

Threads AOS Number AOS Lines to Post Execution Time Posting lines per Minute Lines per Batch
8 1 10 000 00:24:47 417 1 0000
12 1 10 000 00:17:03 589 500
8 1 10 000 00:16:19 625 500
8 4 10 000 00:07:39 1 429 500
8 4 50 000 00:34:47 1 471 250

Conclusion

By increasing the number of AOS and using smaller batches was possible to have a better throughout.