Engineering
Dynamics 365 Finance & Operations performance optimization
We find out where time is really spent in your Dynamics 365 Finance & Operations environment — in X++, in SQL, in batch scheduling or in integrations — and remove the bottlenecks with targeted, measurable changes.
The challenge
“The system is slow” is a symptom, not a diagnosis
Performance complaints in D365 F&O usually arrive as a feeling — posting takes forever, the warehouse waits for a screen, the overnight batch runs into the morning. The causes are rarely one thing. A missing index, an X++ loop that issues a query per record, a data entity processed row by row, a batch group that serialises work, or simply years of data that were never cleaned up.
Codefine treats performance as an engineering investigation. We measure first, identify the dominant cost, change one thing at a time and verify the effect in a production-like environment — so improvements are real and you know why they worked.
Capabilities
What we cover in Performance Optimization
- 01
SQL query analysis
Expensive and frequently executed queries, query plans, missing or unused indexes, parameter-sensitive plans and statistics.
- 02
X++ code review
Row-by-row loops, repeated queries inside loops, missing set-based operations, incorrect caching and heavy display methods.
- 03
Batch performance
Batch group and thread configuration, task bundling, scheduling conflicts and jobs that block each other in the same window.
- 04
Forms & user experience
Slow form opening and grid loading, excessive data sources, non-indexed ranges and heavy calculations on every record.
- 05
Reports & integrations
Report data providers, data entity throughput, recurring integration batching and synchronous calls that should be asynchronous.
- 06
Locking & data volume
Blocking chains, long transactions, growth of transactional and staging tables, and cleanup or archiving routines.
How the engagement works
A clear sequence, agreed up front
-
Define scenarios
Agree the business scenarios that are slow, how slow is too slow, and where they can be reproduced.
-
Measure
Capture traces, query statistics and batch history to build a baseline and see where time goes.
-
Fix
Implement targeted changes — code, indexes, configuration, batch design — one at a time.
-
Verify
Re-measure against the baseline in a production-like environment and document the outcome.
Technical approach
Our approach to Performance Optimization
Measure before changing anything
Optimising without a baseline produces opinions, not results. For each scenario we record what the user does, how long it takes, how often it happens and under which load. That turns “slow” into a number we can improve and verify.
Follow the execution path
A slow posting can spend its time in X++ business logic, in a few expensive SQL statements, waiting on a lock held by a batch job, or calling an external service synchronously. Traces and query statistics show which one dominates. We fix the largest cost first, then measure again.
Common patterns we remove
- Queries executed inside
while selectloops instead of joins or set-based operations insert_recordset,update_recordsetandRecordInsertListnot used where they apply- Display methods doing heavy work for every visible row
- Batch jobs bundled into one task, or competing for the same tables in the same window
- Indexes that do not match the ranges and sorts the application actually uses
- Staging, log and history tables that grow without cleanup
Keep it fast
After the fixes, we leave behind what keeps performance from regressing: cleanup jobs, batch scheduling rules, coding guidelines for the patterns we found and the scenarios worth re-checking after each release.
Benefits
What changes for your organisation
-
Faster daily work
Users spend less time waiting for forms, postings and reports.
-
Shorter batch windows
Overnight and period-end processing finishes in the time available.
-
Lower risk at peaks
Month-end, year-end and seasonal peaks stop being performance emergencies.
-
Knowledge you keep
Every fix comes with the reason it works, so your team can avoid the same pattern later.
FAQ
Questions about Performance Optimization
What D365 F&O performance issues can you analyse?
Slow forms and grids, long-running batch jobs, report delays, SQL query behaviour and blocking, integration and data entity throughput, X++ execution paths and data-volume growth.
Is performance optimization only database tuning?
No. Database work matters, but many problems originate in X++ logic, batch design, configuration or integration patterns. We look at the whole execution path before deciding where to change something.
How do you analyse performance without direct access to the production database?
D365 F&O production runs on Azure SQL managed by Microsoft. We work with the platform's monitoring and query history, traces captured in production-like sandboxes, batch history and telemetry, and reproduce problems in an environment where we can measure safely.
Can you implement the recommendations too?
Yes. We implement X++ changes, index and query changes, batch adjustments and cleanup routines, and verify each against the baseline.
Related services
Often combined with
Discuss Performance Optimization with Codefine
Describe the situation in a few lines — what you run, what is not working and what has to happen next. We reply with concrete questions and a suggested first step.