What should a D365 Finance & Operations health check review?
By Dusan Calic, Partner, Solution ArchitectLast reviewed:
The short answer
A Microsoft Dynamics 365 Finance & Operations (F&O) health check should review the system and the project together. Nine areas cover it: solution design and configuration, X++ code and extensions, integrations, data and migration readiness, performance, security and roles, ALM and DevOps, the project plan and its risks, and user readiness. For each area, the review should tell you plainly what is sound, what is at risk and what is already causing problems. You should come away with a written report, a prioritized risk list and a plan you can act on with any team.
This article lists what to look at in each area, the warning signs, and how to choose who does the review.
When a health check makes sense
A review is most useful before a decision, not after one. Common moments:
- go-live is getting closer, and confidence in the date is falling;
- budget or timeline has moved, and nobody can explain clearly why;
- a key architect or consultant has left, and no one owns the solution design;
- data migration tests keep failing, or reconciliation doesn't add up;
- you are live, but month-end close, performance, integrations or warehouse operations are unstable;
- leadership or the board wants an independent view before the next phase.
You don't need to be in trouble. A review can also confirm, in writing, that a project is on track.
The most common trigger we see is simpler: "We have a problem, but we don't yet know whether it is configuration, customization, data, integration or process." In that case we start with the business symptom and its impact, check whether the issue can be reproduced in standard functionality, and look at recent changes and releases. Then we review the customizations and integrations around the affected process, and only then the detailed code and configuration. The fastest way to waste time is to start debugging the first piece of X++ someone points at.
What to review, area by area
Microsoft's own implementation guidance points in the same direction. Its Success by Design framework uses reviews to find risks and issues early, and its implementation reviews go deeper into the data model, security, integration, ALM and testing strategy. A health check applies that kind of scrutiny independently, at whatever stage you are in.
1. Solution design and configuration
Look at: whether the design fits how the business runs, whether standard features are used where they fit, and whether configuration matches the design. Check that someone owns the design and that decisions are written down.
Warning signs:
- the design exists only in people's heads;
- customizations cover what standard features already do;
- configuration differs between environments with no clear source of truth. Microsoft recommends a dedicated "golden configuration" environment for this.
2. X++ code quality and extensions
Look at: whether customizations follow the extension model and are maintainable. D365 F&O doesn't allow overlayering of Microsoft models; customizations are built as extensions. Microsoft's Customization Analysis Report (CAR) runs a predefined set of best practice rules against your models, and Microsoft's go-live prerequisites include running it and addressing critical issues.
Warning signs:
- the CAR has never been run, or its warnings are ignored;
- patterns the CAR flags, such as direct SQL in X++, nested data access loops, or inserts inside loops where a set-based operation would do;
- code that only one person understands, with no code review.
When we open a customer's X++ code for the first time, we look at the extension architecture before the details: Chain of Command, event handlers and extensions rather than unsupported modifications; calls to public, extension-safe APIs rather than dependence on internal implementation details; direct database operations, nested queries and transaction handling; hard-coded or company-specific logic; and dependencies on ISV code. The quickest indicator of whether code will survive Microsoft's updates is whether it is built on supported extension points. A technically elegant piece of X++ can still be a bad customization if an update can change the internal method it depends on.
3. Integrations
Look at: which interfaces exist, who owns each one, how failures are detected and handled, and whether each interface fits the volumes it carries. Microsoft's implementation guide is direct: "Planning for failures is critical." It recommends that retries can't create duplicates (idempotent requests) and that monitoring covers every system in the integration landscape, with alerts on key processes.
Warning signs:
- no list of interfaces with an owner for each;
- failures found by users rather than by monitoring;
- retries that create duplicate records;
- interfaces never tested at production volumes.
4. Data and migration readiness
Look at: the migration strategy (scope, sources, tools, load sequence, roles), the mapping and cleansing rules, the results of each test load, and how results are reconciled with finance and operations. Microsoft recommends defining the strategy early, updating it as the project moves, and testing the migration at least once in both system integration testing and user acceptance testing.
Warning signs:
- each test load is run differently and nobody compares the results;
- reconciliation is planned only for cutover weekend;
- user acceptance testing runs on hand-entered data instead of migrated data. Microsoft's go-live prerequisites call for migrated data, including master data and opening balances.
The strongest readiness signal isn't "all records loaded." It is whether the business can reconcile migrated data against an authoritative source and formally sign it off. For finance, the first check is the trial balance by legal entity and fiscal period: the source general ledger balance must equal the D365 F&O balance, down to the accounts and dimensions that matter. Then come the subledgers: receivables, payables, inventory quantity and value, and fixed assets against the general ledger, plus open customer and vendor transactions, bank balances and tax balances where they apply. A practical go-live gate: no unexplained material differences, documented exceptions, and sign-off from finance and the process owners.
5. Performance
Look at: which processes are slow, when, and why. In Lifecycle Services, the SQL Insights tab on the Environment Monitoring page shows executing and blocking statements, and offers predefined queries such as the current blocking tree and the most expensive queries. Trace parser shows the call tree of X++ methods, so you can see where the time goes.
Warning signs:
- performance testing left out of scope, on the assumption that the cloud service takes care of it. Microsoft's guidance notes that solution design, configuration and customizations can affect performance;
- no performance testing in a Tier-2 or higher sandbox before go-live;
- slow batch jobs that nobody has traced.
Microsoft also notes that some blocking is normal in a healthy system. It becomes a problem when it is excessive or slows business activity.
6. Security and roles
Look at: whether roles and duties match how people actually work. In D365 F&O, users get access through security roles; roles contain duties, duties contain privileges, and privileges contain permissions. Microsoft recommends assigning duties rather than individual privileges to roles, and segregating related duties to reduce the risk of fraud and errors.
Warning signs:
- users testing with broad or administrator access instead of their real roles. Microsoft's go-live prerequisites call for testing with the correct security roles;
- custom roles built from individual privileges, with no clear duty structure;
- no review of custom roles after Microsoft's service updates;
- segregation of duties discussed only after go-live.
7. ALM and DevOps
Look at: how code moves from a developer to production. Microsoft's ALM guidance for finance and operations describes source control in Azure DevOps, a branching strategy, automated builds that create deployable packages, packages applied to a sandbox before production, and production deployment of a tested release candidate.
Warning signs:
- deployable packages built in Visual Studio on a developer machine rather than by a build pipeline; Microsoft advises against this;
- code checked in directly to test or release branches;
- no automated tests and no regression testing before updates;
- build environments on a later service update than production.
8. Project plan and risks
Look at: whether the plan is realistic, whether the real risks are on it, and whether decisions have owners and dates. Compare the plan with what has actually been delivered, not with what was reported.
Warning signs:
- the go-live date has stayed fixed while scope and testing have slipped;
- the risk log lists generic risks but not the ones the team talks about;
- no cutover plan with go/no-go criteria. Microsoft's Success by Design guidance expects a cutover plan, mock go-lives and a support model before the go-live readiness review.
9. User readiness for go-live
Look at: whether key users are trained, have tested their own processes end to end, and are ready to sign off. Check that the support model after go-live is agreed.
Warning signs:
- key users seeing the system for the first time in user acceptance testing;
- test cases that don't cover the full scope of requirements;
- sign-off expected from people who haven't tested.
What you should receive
Findings are only useful if you can act on them. At the end of a health check, expect:
- A written report on where the project or system stands, area by area, including what is working well.
- A prioritized risk list, so you know what to fix first.
- A recovery or improvement plan, with concrete next steps.
- A meeting with your leadership to walk through the findings and the plan.
The report and plan should be usable by any team, including your current partner.
We don't rank risks simply by effort or by money. In practice, priority is probability times business impact times time criticality. Impact means: can it prevent go-live, materially misstate financial data, or stop a critical business process; is there a workaround; and how hard is recovery after go-live? So a small technical issue that could stop invoicing or warehouse operations can outrank a large financial exposure that is already controlled and reversible. The heaviest weight usually goes to irreversibility and go-live impact: a problem that is easy to fix after go-live is very different from one that can corrupt historical financial data or force a rollback.
How to choose who does the review
- Independence. The reviewer should look at the project and the system, not at assigning blame, and be able to work openly with your current partner and team.
- Seniority. Ask who will actually do the review. The nine areas need someone who can judge design, code and data, and who has led D365 F&O projects through go-live.
- Clear scope and access. Agree on scope, timing and system access before the review starts.
- AI use, if any. If the reviewer uses AI tools, ask what they are used on, with whose permission, and who checks the output.
- No lock-in. You should be free to carry out the plan with any team.
Assumptions and limitations
- Cloud D365 F&O. The tools named here are for cloud deployments managed in Lifecycle Services. On-premises deployments and projects managed in the Power Platform admin center may use different tools.
- Microsoft facts as of the review date. Microsoft's tools, product names and go-live process change. Check the current Microsoft Learn pages listed below.
- Not a replacement for Microsoft's go-live readiness review. Microsoft requires its own review before it provisions production. A health check is separate and can happen at any stage.
- No durations or costs beyond what is stated here; they depend on your project.
- General guidance. This checklist doesn't replace a review of your own system.
How we help
Our health check covers these nine areas and typically takes one week. It is led by the partner whose expertise best fits your situation, or by both partners. You receive a written report, a prioritized risk list, a recovery or improvement plan and a meeting with your leadership. The review is independent of who is delivering your project, and the report and plan are yours to use with any team.
We use AI to assist the analysis, for example when reviewing code and configuration, only with your permission and with every finding reviewed by a senior person. Your business data never leaves your environment. AI works on code, configuration and documentation, and helps us build the scripts that run inside your systems.
Dusan Calic, Partner, Solution Architect.
Sources
- Introduction to the Success by Design framework
- Prepare for go-live
- Customization Analysis Report (CAR)
- Customize through extension and overlayering
- Estimate effort by using the Code upgrade service
- Choose the right pattern for your integration strategy
- Manage configuration and migration data for Dynamics 365 projects
- Performance troubleshooting using tools in Lifecycle Services
- Diagnose issues and analyze performance by using Trace parser
- Role-based security
- Best practices for ALM in Dynamics 365 applications