Data Exchange Definition export performance improvement#9073
Conversation
Copilot PR ReviewIteration 2 · Outcome: completed Knowledge source: https://github.com/microsoft/BCQuality@822cae1b2771ac25f665f73369f69093bd4fd630 Findings by domainFindings split into Knowledge-backed (cite a BCQuality article) and Agent (the agent's own judgement, no matching BCQuality rule).
Totals: 0 knowledge-backed · 1 agent findings. Orchestrator pre-filter (13 file(s) excluded)
Findings produced by the Copilot CLI agent against BCQuality at |
…633941-SlowDataExchExport
This PR adds a new 7-parameter ProcessColumnMapping overload (with the TempDataExchField buffering parameter) and updates the only caller (Export Mapping.Codeunit.al) to use it.That leaves the previous 6-parameter overload (var DataExch; RecRef; var DataExchFlowFieldGrBuff; LineNo; DataExchLineDefCode; TableID) - and the private PrepopulateColumns helper it exclusively calls - with no remaining callers anywhere in the repository. Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Fixes AB#633941
What changed
Reworks the export mapping flow in
Export Mapping(codeunit 1269) andPayment Export Mgt(codeunit 1210) to eliminate per-row database writes and redundant work during export.1. In-memory mapping + bulk save (
ExportMapping.Codeunit.al)ProcessColumnMappingnow writes column values into a temporaryData Exch. Fieldbuffer instead of inserting into the persisted table row-by-row.Data Exch. Fieldtable (includingValue BLOB) in a single pass at the end.2. FlowField calculation reuse (
PaymentExportMgt.Codeunit.al)ProcessColumnMappingoverload accepts theData Exch. FlowField Gr. Buff.and the tempData Exch. Fieldbuffer.CalcField()only when not present—avoiding repeated FlowField recalculation per line.PrepopulateColumnswas updated to prepopulate the temporary buffer.3. Progress dialog throttling (
ExportMapping.Codeunit.al)>1000 → 200,>100 → 10, else1), reducing UI-update overhead on large datasets.Mapping line no. …andSaving line no. ….Impact
Significantly faster Data Exchange Definition exports on large record sets, driven by bulk persistence, reduced FlowField recalculation, and throttled progress updates. No change to the produced output/format.