D365 Finance: Settlement Data Storage Architecture in 10.0.50
When high-volume payment runs hit your ledger, database contention on CustTrans and VendTrans can grind downstream integrations to a halt. In Dynamics 365 Finance version 10.0.50, a foundational architecture change decouples settlement states into dedicated companion storage tables. This post explores the foundational architectural shift that decouples settlement states to prepare for future performance and integration enhancements.
At a glance
- 🔹 Applies to: Dynamics 365 Finance version 10.0.50 and later.
- 🔹 Prerequisites: None (feature is automatically enabled by the platform).
- 🔹 Effort level: Zero configuration required (architectural review only).
- 🔹 Outcome: Reduced database contention, lower locking frequency, and optimized integration change tracking.
How it works
Historically, every posted customer and vendor transaction maintained a mutable set of state values directly on its main table record (CustTrans and VendTrans). These values tracked settlement amounts, last settlement dates, settlement vouchers, and realized or unrealized foreign-currency exchange adjustments. Whenever a payment was applied or a foreign exchange revaluation was executed, the system performed frequent in-place updates on these heavily accessed master transaction tables.
Starting in version 10.0.50, Dynamics 365 Finance introduces dedicated companion storage tables that absorb these changing state variables. Instead of locking transaction header rows during high-speed settlement runs, the database engine writes state modifications to the companion tables. Because CustTrans and VendTrans remain static after initial posting, downstream change-tracking consumers experience significantly reduced data churn and improved transaction throughput.
CustOpenTrans or VendOpenTrans, or public OData and DMF data entities. All standard reporting and settlement posting routines operate transparently against the new companion structure.| Architectural Dimension | Legacy In-Place Storage (Pre-10.0.50) | Companion Storage Model (10.0.50+) |
|---|---|---|
| Table Update Frequency | High update frequency on CustTrans / VendTrans | Static base records with updates isolated to companion tables |
| Database Contention | Frequent locking and blocking during payment runs | Foundational architecture for future locking reduction |
| Change Tracking Footprint | Large payloads for minor settlement state changes | Future optimization for change-based exports (BYOD/Synapse Link) |
| User Configuration | Not applicable | None required (automatically turned on) |
Step-by-step solution
-
Verify environment version
Navigate to System administration > Setup > Licensing or check your about screen to confirm your environment runs Dynamics 365 Finance version 10.0.50 or higher. No manual feature activation is required because the platform turns on companion storage automatically.
-
Inspect integration subscriptions
Review your downstream integration pipelines, including Azure Synapse Link for Dataverse and Bring Your Own Database (BYOD) configurations. Identify data entities or underlying SQL tables that subscribe to
CustTransorVendTranschange tracking streams. -
Validate custom X++ business logic
Audit custom X++ extensions, batch jobs, or extension classes that read settlement states directly. Ensure your code relies on standard methods and APIs rather than direct SQL queries against uncommitted table structures to maintain future compatibility.
-
Execute test payment runs
Perform high-volume test settlement and payment runs in a sandbox environment. Use SQL Server Management Studio (SSMS) or Application Insights performance diagnostics to monitor database lock wait times and blocking chains during execution.
-
Monitor change tracking volume
Check the size and export duration of change-tracking tables in your SQL Azure database. Note that integration benefits for change-tracking exports are expected in a subsequent release phase.
-
Review financial reporting outputs
Run standard management reporter reports, aging balance reports, and customer/vendor balance lists to confirm statement accuracy and zero variance in financial balances following the architecture shift.
Worked example
Consider Contoso Global Logistics, an enterprise processing over 50,000 cash receipts and vendor disbursements daily across multiple legal entities. Under previous versions, concurrent execution of automated lockbox payment journals and multi-currency revaluation batch jobs caused severe database contention on CustTrans and VendTrans. This contention resulted in blocked integration exports and delayed posting queues.
Following the upgrade to Dynamics 365 Finance version 10.0.50, the settlement companion storage feature activates automatically without user intervention. When Contoso posts a daily batch of 10,000 customer payments, the base CustTrans records remain untouched while settlement states update in the companion tables. Below is a sample X++ snippet showing how standard settlement transactions interact with ledger APIs under the hood:
public void postSettlementTransaction(CustTransId _custTransId, AmountCur _settleAmount) { CustVendOpenTransManager openTransManager; ttsbegin; openTransManager = CustVendOpenTransManager::construct(CustVendSettlementType::TransId, _custTransId); openTransManager.updateTransMarked(_custTransId, true); // Settlement state is routed to companion storage transparently openTransManager.settleNow(); ttscommit; }
Automation and AI opportunities
The transition to companion storage opens up robust monitoring pathways across the Power Platform ecosystem. You can configure a Power Automate flow connected to Azure Application Insights to alert your database administrator if lock wait times exceed predefined thresholds during month-end closing.
Additionally, you can build a Power BI operational dashboard utilizing Azure Synapse Link data feeds to visualize transaction settlement velocities, change-tracking export sizes, and database transaction log consumption over time. This gives IT leads clear visibility into database health without running manual diagnostic scripts.
Common pitfalls and troubleshooting
- Pitfall: Assuming manual feature enablement is required in Feature management.
Cause: Misinterpreting standard release notes as optional feature toggles.
Fix: Verify your platform version; the system automatically enables companion storage in 10.0.50 without setup keys. - Pitfall: Direct SQL queries breaking due to structural assumptions.
Cause: Custom scripts querying old settlement fields directly on master tables.
Fix: Refactor custom SQL queries to use standard X++ table methods or documented data entities. - Pitfall: BYOD export errors during heavy payment batch runs.
Cause: Outdated staging table mappings encountering locked rows.
Fix: Refresh entity mappings in the Data management workspace and re-run incremental change tracking. - Pitfall: Missing foreign currency revaluation adjustments in custom reports.
Cause: Failing to query companion exchange adjustment attributes.
Fix: Update custom reporting queries to access the companion storage relations correctly. - Pitfall: Expecting immediate performance improvements.
Cause: Misunderstanding that version 10.0.50 is the foundational phase.
Fix: Acknowledge that measurable integration speed-ups are scheduled for a later phase of this initiative.
Best-practice checklist
- ✅ Confirm your production environment is successfully running Dynamics 365 Finance version 10.0.50 or higher.
- ✅ Audit all custom X++ extensions that manipulate settlement states or transaction tables.
- ✅ Verify that your BYOD and Azure Synapse Link exports complete successfully during peak transaction hours.
- ✅ Monitor environment health and storage capacity in the Power Platform admin center.
- ✅ Ensure functional test scripts validate customer and vendor aging reports post-upgrade.
- ✅ Document architectural changes for your internal IT and integration support teams.
- ✅ Review custom data entities for any direct dependencies on legacy in-place update fields.
FAQ
Do I need to enable settlement companion storage manually in Feature management?
No. Starting in version 10.0.50, the system automatically activates this architecture change. There are no configuration keys, parameters, or opt-in steps required for administrators.
Will this feature change how my users perform daily settlements or payments?
No. User workflows on forms such as Customer settlements, payment journals, and foreign currency revaluation remain completely unchanged. All business logic behaves identically.
How does companion storage impact BYOD and Azure Synapse integrations?
By moving mutable settlement states out of CustTrans and VendTrans, change tracking generates significantly smaller and cleaner payloads, reducing integration overhead and data movement latency.
Key takeaways
- 🎯 Settlement companion storage decouples mutable state data from core transaction tables in version 10.0.50.
- 🎯 Database contention and locking during high-volume payment runs are substantially mitigated.
- 🎯 Integration pipelines benefit from lighter change-tracking payloads for BYOD and Azure Synapse Link.
- 🎯 The feature operates automatically with zero configuration overhead or user impact.
Further reading
- Signal Source: Settlement Data Storage Commit
- What's new or changed in Dynamics 365 Finance
- Dataverse capacity-based storage details
- Create and manage environments in Power Platform admin center
Note: written with AI assistance and reviewed by Gaurav Jadaun. Always validate in a sandbox environment before applying to production.
Comments
Post a Comment