Project Profitability in Dynamics 365 Project Operations: Why Your Project Margins Fail Without Proper Accounting Setup

Dynamics 365 Project Operations financial dashboard showing project profitability metrics

A professional services firm running Dynamics 365 Project Operations pulls its monthly margin report and finds something that doesn’t match reality on the ground. One fixed-price engagement shows a 60 percent margin despite the delivery team saying they’ve been slammed for weeks. Another time-and-materials project shows a loss even though every hour logged was billed. Nobody misused the system. Nobody entered a wrong number. The transactions are all correct, and the margins are still wrong, because project profitability in Dynamics 365 Project Operations is decided by the accounting setup behind those transactions, not by the transactions themselves.

Dynamics 365 Project Operations financial dashboard showing project profitability metrics

Two Price Lists, One Easy Mix-Up

Project Operations resolves cost and revenue through separate price lists, and the distinction matters more than the name suggests. A cost price list resolves the rates used on cost-type estimate and actual transactions, essentially what a resource actually costs the business. A sales price list resolves the rates used on the billed and unbilled sales side, essentially what gets charged to the customer. Each is set to a context, Cost or Sales, and that context governs how the system looks the record up. Set a list to the wrong context and price resolution simply fails to find a rate where one should exist.

Sales price lists carry another constraint cost lists don’t: they’re locked to the currency defined on the list header, while cost price lists can hold role prices in other currencies through user setup overrides. That asymmetry catches multinational firms more often than it should, particularly when a role price gets added to a sales list in the wrong currency and the transaction silently falls back to a default rate instead of erroring out. Sales price lists also have to be explicitly attached, to a customer’s project price list, a project quote, or a project contract, before they apply to anything; a rate sitting correctly configured but never attached to the contract in play won’t be used. Add date ranges into the mix, since price lists apply based on start and end dates, and a gap between two lists means a stretch of transactions with no applicable rate at all.

Where Margin Actually Gets Decided

Price lists set the numbers going into a transaction. What happens to those numbers on the ledger, which is what actually produces a margin figure, is governed by a separate configuration object: the project cost and revenue profile, found under Project management and accounting, Setup, Posting. This is the part of the setup that gets underinvested in relative to how much leverage it has over reported profitability.

The ledger settings on a profile decide, transaction type by transaction type, hour, expense, item, whether costs post straight to the profit and loss statement or sit on the balance sheet as work in progress until someone runs a separate posting step. They also decide whether on-account, milestone-based invoicing lands in a balance account or a P&L account, and whether unbilled revenue gets accrued to the general ledger at all. None of these settings are visible on the transaction itself. A time entry looks identical whether its hours are configured to post immediately or to wait in WIP, which is exactly why a wrong setting here doesn’t throw an error. It just quietly changes what shows up as margin.

Finance professional reviewing project accounting and cost allocation data

Fixed-Price Work Needs Its Own Logic

Time-and-materials projects recognize revenue roughly as work happens, so the profile settings above cover most of what matters. Fixed-price projects need an additional layer, because the billing schedule and the actual delivery pace are two different things, and the whole point of the accounting setup is to keep them from contaminating each other. Project Operations offers three methods here. Completed contract holds all revenue and cost recognition until the project finishes, carrying everything as WIP in the meantime. Completed percentage accrues revenue periodically based on how much of the project is actually done, using cost templates to group transactions for the percentage-complete calculation and period codes to set how often that calculation runs. No WIP skips the deferral entirely and is meant for short engagements where invoicing and cost recognition happen close enough together that deferral adds nothing but complexity.

A firm running long, milestone-heavy fixed-price engagements under a “no WIP” setup, because that was the default nobody revisited, will see revenue and cost recognized in whatever period the invoice happens to fall in rather than the period the work actually happened in. Margins swing from project to project not because delivery efficiency is inconsistent, but because the accounting method assumes short-cycle work being applied to long-cycle contracts.

Five Specific Ways This Goes Wrong

A handful of misconfiguration patterns show up repeatedly enough to be worth naming directly. A billing method mismatch, where time is set to fixed-price logic on what’s actually a time-and-materials engagement, or the reverse, throws off exactly when hours or expenses hit revenue relative to when they’re billed. A missed manual step is just as damaging: when hour or expense costs are set to post to a balance account rather than profit and loss, someone has to run the “post costs” function to move them into P&L, and if that step is skipped, costs simply never show up against revenue, producing a margin that looks better than it is. A mismatched revenue recognition method does similar damage from the other direction, completed contract selected on the profile while revenue is somehow still being accrued on a monthly cadence, which mismatches costs and revenue by period and makes margins swing without any real change in delivery.

The accrual settings create a subtler trap. Revenue accrual turned on for a time-and-materials engagement whose cost posting is set to “no ledger” produces transactions where revenue is recognized but the matching cost is never posted anywhere, which can show as a margin approaching 100 percent on paper. And on-account invoicing routed to a profit and loss account instead of a balance account recognizes milestone billings as revenue immediately, ahead of the delivery they’re meant to represent, front-loading margin into whichever period the invoice happens to land in.

Getting Project Profitability Right Before the Numbers Matter

None of this is complicated once it’s named, but it has to be checked deliberately rather than assumed. Start by confirming which billing method, time-and-materials or fixed-price, is actually assigned to each active profile, and cross-check that against how the contracts using that profile are actually structured. Walk the ledger settings for each transaction type and confirm someone owns the recurring job of running the “post costs” function if any type is set to balance posting, since that step doesn’t run itself. For fixed-price work, match the recognition method to the actual shape of the engagement rather than the platform default, short and simple work can reasonably use no WIP, but anything spanning multiple billing cycles needs completed percentage with cost templates that actually reflect how the project’s cost mix is structured. Finally, verify that profile assignment rules, by contract, project group, or individual project, are actually routing each engagement to the profile that matches how it’s billed, since a firm running several contract types often has profiles that were configured correctly once and then silently misapplied as the portfolio grew.

Routeget Technologies has walked in behind project-based businesses whose delivery teams were being blamed for margin problems that turned out to live entirely in the posting configuration, not the work. Reconciling that gap usually takes a focused audit of the profile settings against a sample of actual contracts, not a re-implementation, and it tends to be one of the highest-leverage half-days a Project Operations environment can spend.


#ProjectProfitability #ProjectAccounting #ProjectOperations #RevenueRecognition #WIPAccounting #CFOStrategy

Subcontractor Vendor Invoice Matching Is GA in Project Operations. Ten Silent Fields Decide If It Works.

Project accountant reviewing a vendor invoice reconciliation dashboard for subcontractor cost matching

A project controller at a mid-size engineering firm spends the third week of every month reconciling subcontractor invoices against timesheets in a spreadsheet, because the vendor invoice that lands in accounts payable has no native connection to the hours a contract welder actually logged against a task. She cross-checks rates, dates, and task codes by hand, then emails the project manager to confirm before anything gets marked ready for payment. That reconciliation gap is exactly what general availability of subcontractor vendor invoice matching to actuals in Dynamics 365 Project Operations, reached this September as part of 2026 release wave 1, is meant to close. For any organization running resource-based or nonstocked subcontracting through Project Operations, this is worth a close look before the next AP cycle, not because the concept is new (a version of automatic matching has existed since 2022), but because the field-level logic determining whether a match actually happens is stricter, and less forgiving, than most implementation teams assume going in.

What subcontractor vendor invoice matching actually changes

Subcontract-based project delivery in Project Operations has always followed a familiar shape: a project manager creates a subcontract against a vendor, attaches purchase price lists, links time-based or expense-based subcontract lines to either generic team members (to represent a staffing need) or named contract workers (to draw down capacity), and lets subcontractor resources log time, expenses, or product usage against tasks. Once that work is approved, it generates project cost actuals priced from the subcontract’s purchase rate. None of that is new. What the newly GA capability changes is the connective tissue between those cost actuals and the vendor invoice line items that eventually get paid.

Before this feature matured, matching a vendor invoice line to the underlying cost actuals was either manual or dependent on earlier, more limited automatic-association logic. Now, when a project manager records a vendor invoice with a line referencing a subcontract, Project Operations attempts to associate matching cost actuals automatically, and gives the project manager a structured, auditable workflow (built around a Verification status field) to confirm, adjust, or reject those matches before the invoice becomes eligible for payment.

The match logic: what has to line up

This is the part implementers need to internalize before go-live, because it determines whether the automatic matching actually fires or silently leaves everything to manual review. For a cost actual to link to a vendor invoice line, two separate conditions both have to hold.

Abstract illustration of cost actual records linking to vendor invoice line items in a reconciliation chain

The first is a status condition: the cost actual’s Adjustment status field must be blank. If a cost actual has been recalled, if its approval was cancelled, or if a correction journal against it is in progress, it is excluded from matching entirely, and the system will not surface it as a candidate no matter how closely the other fields align. This one trips up teams during parallel testing more than any other rule, because test data frequently includes actuals that went through a correction cycle, and those actuals simply never appear in the unmatched list, with no error message explaining why.

The second is field equivalence, and this is the longer list: project contract, project contract line, transaction class, project, task, resource category, transaction category, product, subcontract line, and bookable resource. Every one of these fields on the vendor invoice line has to match the corresponding field on the cost actual for a link to be proposed. There is one important carve-out worth building into your test plan: if a field is simply not populated on the vendor invoice line, it is excluded from the comparison rather than treated as a mismatch. That sounds like a convenience, and in some cases it is, but it also means a sparsely populated invoice line can match against a broader set of cost actuals than a fully populated one would, which is not always the outcome an AP team expects when they are trying to enforce tight three-way matching discipline.

Verification status: the workflow project managers actually see

Once matching candidates exist, the project manager works through a Verification status field that moves through three states. Not started is the default state for a fresh vendor invoice line, and it is the only state in which the line remains freely editable. The moment the first cost actual is matched to that line, status automatically advances to In progress, and the line locks against further direct edits outside the matching interface itself. From In progress, the project manager reviews the matched actuals in a grid, can pull in additional unmatched actuals or remove ones that were matched incorrectly, and once satisfied, sets the line to Complete, either manually or through the system’s own completion logic once every actual on the line has been addressed. Only when every line on a vendor invoice reaches Complete can the invoice itself be confirmed, and confirming it is what flips the invoice to Ready for payment, reverses the previously recorded project cost actuals, and books the actual cost from the vendor invoice onto the project instead. That last step matters for anyone reconciling project cost reports mid-cycle: costs on a project can genuinely shift in value between the point a subcontractor’s time is approved and the point the corresponding invoice clears verification, and finance teams need to know that is expected behavior, not a data integrity problem.

Unmatching works, but only in one direction of the workflow. A project manager can select one or more linked cost actuals from a vendor invoice line’s Matched cost actuals tab and unmatch them, but only while that line sits in In progress status. Once a line reaches Complete, unmatching is no longer available through the standard interface, which is a deliberate control: it keeps a verified invoice from being quietly altered after AP has already relied on that verification to release payment.

Implementation considerations before rollout

A few practical points are worth working through with the project accounting team before turning this on for a live subcontracting population. Fixed Price billing is not currently supported for resource-based or nonstocked subcontracting scenarios, so any subcontract lines built around milestone-based fixed pricing need a different reconciliation approach; automatic matching in this feature applies to time-and-material subcontract lines where cost actuals are generated from logged, approved work. Teams that run a mix of fixed-price and time-and-material subcontracts on the same project should map out, line by line, which subcontract lines are even eligible for automatic matching before assuming full invoice coverage.

It is also worth auditing how consistently your existing vendor invoice entry process populates the ten matching fields. If your AP team has historically entered vendor invoice lines with only project and transaction class filled in, and left task, resource category, or bookable resource blank as a matter of habit, the matching engine will happily use whatever partial field set is present, and the practical effect is a much looser match than your controls team may assume is happening. Before rollout, walk through a sample of recent invoices with both project accounting and AP to agree on which fields will be entered consistently going forward, because the strictness of this feature is only as good as the discipline behind the data feeding it.

Finally, because this capability reached general availability in the same month as several other Project Operations updates, including changes to correction journal usability and project accrued revenue reconciliation, it is worth testing subcontractor invoice matching in a sandbox environment that reflects your current configuration rather than assuming behavior documented earlier in the release wave still applies unchanged. Microsoft’s release cadence for Project Operations has been dense enough this year that features shipped in preview back in May have, in some cases, had their default behavior refined by the time they reached GA in September.

Organizations that get the field discipline right stand to remove a genuinely manual, error-prone step from project-based AP, and the audit trail built into the Verification status workflow gives finance a defensible record of exactly which actuals supported each payment decision. Routeget’s implementation teams have walked several clients through exactly this kind of subcontract reconciliation redesign, and the pattern holds consistently: the technology is ready well before the underlying data entry habits are, and that gap is where rollout timelines usually slip.


#SubcontractorInvoiceMatching #ProjectOperations #DynamicsFinanceOps #ProjectAccounting #VendorInvoiceReconciliation #ERPGovernance

Dynamics 365 Project Operations Adds a Fix for Cash Advance Exchange Rate Variance

Finance controller reviewing a multi-currency expense reconciliation dashboard in a modern office

A controller at a global engineering firm closes out Q2 and finds forty-one employee vendor accounts sitting at small nonzero balances, a few cents here, a few dollars there, all tied to cash advances issued in one currency and expensed in another. None of it is fraud. None of it is even really an error. It is simply what happens when a consultant draws a 500 EUR travel advance in Frankfurt, spends it against invoices priced in EUR three weeks later, and the accounting system converts both legs to USD using two different exchange rates. That gap is cash advance exchange rate variance, and for years in Dynamics 365 Project Operations, closing it has meant a manual journal entry, a write-off, or a permanently open subledger line that audit eventually asks about.

For finance leaders running project-based businesses across borders, that is not a rounding error problem. It is a data quality problem that quietly distorts two things CFOs actually rely on: the accuracy of project margin reporting and the integrity of the month-end close. When exchange rate noise gets buried inside project cost lines instead of isolated as a currency gain or loss, a project that is performing exactly to budget can appear to be overrunning, or vice versa, purely because of when and where an employee happened to spend an advance.

Finance controller reviewing a multi-currency expense reconciliation dashboard in a modern office

Why This Has Been Hard to Fix Cleanly

The mechanics explain why this has persisted. A cash advance in Project Operations is tracked in the currency it was requested in, and the system has long supported reducing that advance automatically as expense reports are submitted against it. That part works fine when the advance and the expense are denominated in the same currency and settled close together. The trouble starts when they are not: an advance drawn in EUR against expenses ultimately reported in a mix of currencies, or an advance settled weeks or months after it was issued, during which the exchange rate has moved. Historically, the system had no dedicated mechanism to isolate that movement as its own transaction. The employee’s vendor account either carried a residual balance indefinitely or someone in accounts payable manually calculated and posted the variance by hand, entity by entity, advance by advance.

For a firm with a handful of international projects, that manual step is an annoyance. For one running hundreds of consultants across a dozen currencies, it becomes a recurring close-cycle task that scales with headcount and travel volume, and it is exactly the kind of manual, judgment-based adjustment that internal and external auditors tend to flag when they see it repeated month after month.

Close-up of an international business traveler's desk with foreign currency, receipts, and a laptop showing an expense dashboard

How the New Cash Advance Exchange Rate Variance Fix Works

Microsoft’s cash advance exchange rate adjustment capability, released to public preview on July 31, 2026, is built specifically to close this gap. Rather than settling a cash advance purely against accounting currency, the feature bases settlement on transaction currency and automatically detects, calculates, and posts the resulting realized foreign exchange gain or loss. The stated design goal is straightforward: an employee’s vendor account should net to zero once a cash advance is fully settled, with any currency movement broken out as its own recognized amount rather than absorbed silently into the balance.

A simple illustration makes the mechanism concrete. An employee draws a cash advance of 100 EUR, recorded at 140 USD under the exchange rate in effect that day. Three weeks later, the employee submits an expense report for the same 100 EUR, but the rate has moved and the accounting equivalent is now 150 USD. Under the new capability, the system recognizes a 10 USD realized foreign exchange gain, posts it to the configured FX gain account, and closes the vendor balance out to zero. No residual line, no manual calculation, and critically, no distortion of the project’s actual cost lines, since the currency movement is captured separately rather than folded into expense cost.

The feature also builds in the kind of traceability that finance and audit teams specifically ask for during control reviews. Each adjustment carries navigation back through related vouchers, from the original cash advance to the expense report that triggered settlement to the specific FX variance transaction, so a reviewer can trace the full chain rather than reconstructing it from disconnected general ledger entries.

What This Actually Changes for Finance Leaders

The practical benefit is less about the accounting mechanics themselves and more about what they stop contaminating. Once currency variance on cash advances is automatically isolated, project profitability reporting gets meaningfully cleaner, because cost lines reflect actual project spend rather than a blend of spend and unrelated exchange rate movement. That matters more than it sounds, particularly for firms that price fixed-fee international engagements and rely on margin data to make staffing and pricing decisions on the next similar project. A margin figure that has been quietly absorbing FX noise for two years is not a small reporting inconvenience; it is a data integrity problem sitting underneath real business decisions.

There is also a straightforward labor and close-cycle argument. Every manual FX variance calculation that a firm’s shared services or accounts payable team performs by hand is time that does not scale, and it is exactly the category of adjustment most likely to be done inconsistently across regions or entities when it is left to individual judgment rather than a system-enforced rule. Automating it does not just save hours, it removes a source of inconsistency between how one controller in one country handles a variance and how another controller in a different entity handles the same situation.

Rollout Considerations Before Enabling It

This is a preview capability as of this writing, which carries the usual caveat that behavior may still change before general availability, and CFOs evaluating it should treat that as a real constraint on timing rather than a formality. Two prerequisites matter before the feature can even be turned on: the “mapping cash advances to expense lines” capability must already be enabled in the environment, and there can be no partially mapped cash advances outstanding at the time the new feature is activated. That second condition is not trivial for an organization with a large volume of open advances; it effectively requires a cleanup pass through existing cash advance records before flipping the switch, which is worth scoping as its own short project rather than assuming it happens automatically. The feature also requires a minimum platform version, Dynamics 365 Finance release 10.0.49 or later, so version currency is a gating question worth confirming with IT before this goes anywhere near a finance steering committee agenda.

There is a policy conversation worth having alongside the technical rollout, too. Realized FX gains and losses need to land in accounts that align with how corporate accounting already classifies currency movement elsewhere in the business, and treasury or corporate accounting should confirm that mapping rather than leaving it to whichever team configures the feature. For organizations operating under both GAAP and IFRS reporting in different entities, it is worth a direct conversation about whether the automated posting behavior matches existing policy for realized versus unrealized FX treatment before this runs against live cash advances rather than after.

The sensible sequencing looks like a pilot in one entity with meaningful cross-currency travel volume, ideally one that has visibly struggled with recurring FX write-offs, run in parallel with the existing manual process for a full close cycle before cutting over more broadly. That gives finance leadership a real before-and-after comparison rather than a leap of faith, and it surfaces any gaps in how the automated posting interacts with an organization’s specific chart of accounts before the feature is relied upon across every entity at once. Firms that have worked with implementation partners such as Routeget Technologies on other finance automation rollouts tend to find the same pattern holds here: the capability itself is straightforward, but the sequencing around data cleanup, policy alignment, and a genuine pilot period is what determines whether it lands as a quiet improvement or a source of new reconciliation headaches six months from now.

Currency variance on cash advances was never a large dollar figure on its own. Its real cost has always been the noise it introduces into numbers that finance leaders use to make decisions, and the manual effort spent chasing it down every close. Closing that gap cleanly is a small technical change with an outsized effect on how much confidence a CFO can place in project-level financial data.


#ProjectOperations #CashAdvanceReconciliation #ExchangeRateVariance #ExpenseManagement #ProjectAccounting #FinanceTransformation

Configuring Cost Estimate Revenue Recognition in Dynamics 365 Project Operations

Finance professional reviewing a project revenue recognition dashboard in a modern office

A Project Operations consultant closing out a nine-month fixed-price engagement watches the percentage-of-completion figure move in a direction nobody on the delivery team predicted: down. Hours logged in August exceeded July. Actual costs tracked to plan. And yet the estimate-at-completion number jumped, because a resource manager quietly revised a forecast line two weeks before close, and revenue recognized in July has to be partially reversed to correct it. Finance wants to know why a project that delivered more work somehow recognized less revenue. The honest answer, until now, has been some version of “that’s how EAC-based recognition works.” As of September 11, 2026, that is no longer the only answer available. Microsoft has moved cost estimate revenue recognition in Dynamics 365 Project Operations to general availability, giving project accounting teams a second calculation baseline that does not move every time someone touches a forecast.

Why EAC Made Revenue Recognition Unpredictable

Fixed-price projects using the percent-completion method calculate recognized revenue as a share of total contract value, driven by percentage of completion. Under the standard approach, that percentage is actual costs incurred divided by the estimate at completion, and EAC is a living number. Every time a project manager updates a forecast line, adjusts a resource assignment, or revises an expense estimate, the denominator in that calculation shifts. A team can deliver exactly the work it planned to deliver in a given period and still see recognized revenue swing, purely because someone updated a forecast that has nothing to do with what actually happened that month.

Consider a $180,000 fixed-price contract line. Two months in, the team has incurred $54,000 in actual cost, tracking cleanly to a 30 percent completion rate against the original estimate. Then a resource manager flags scope creep on an upcoming deliverable and revises the EAC upward to $210,000. Recompute the percentage against the new denominator and completion drops to roughly 26 percent, even though nothing changed about the work already delivered. Finance now has to explain a revenue reversal to a client or an auditor for a project that is, by every operational measure, on track. Multiply that across a portfolio of active fixed-price engagements and month-end close turns into a chase for forecast revisions rather than a review of actual delivery.

Solution architect configuring project accounting revenue recognition settings

What Cost Estimate Revenue Recognition Changes

The new method replaces EAC in that denominator with a cost estimate: the original forecasted or budgeted total cost for the project, set once and held fixed unless someone deliberately revises the baseline. Percentage of completion becomes actual costs incurred divided by total forecast amount, full stop. Using the same numbers as above, the $54,000 in actual costs against the original $180,000 estimate still shows 30 percent completion in month two, regardless of what happens to the EAC afterward. If costs eventually run past the original forecast, the system does not reinterpret that as new revenue to recognize. It treats the overrun as margin erosion, which is arguably closer to what actually happened: the team spent more to deliver the same contracted scope, and that gap should show up as reduced profitability, not as a phantom revenue swing.

That distinction matters more than it sounds. EAC-based recognition quietly conflates two separate questions: how much revenue should be recognized this period, and how is the project trending against its budget. Cost estimate revenue recognition splits them apart. Revenue recognition stays anchored to the contracted baseline; budget performance becomes a separate conversation that shows up in variance reporting rather than in the revenue line itself.

Configuring the Feature: Cost Templates and Parameters

Enabling this requires Dynamics 365 Finance version 10.0.48 or later, along with the feature flag “Enable Project Revenue recognition by using the cost estimate instead of the estimate cost at completion in Project Operations,” which any user, admin, maker, or analyst with the right permissions can turn on through feature management. That self-service enablement path is worth flagging to your change control process on its own, since it alters financial calculation logic rather than a UI element, and it deserves the same review rigor as any other change to how revenue gets recognized.

Once the flag is on, the actual configuration happens at the cost template level. Navigate to Project management and accounting, then Setup, then Estimates, then Cost templates, and open the relevant cost line. On the General tab, set Cost to complete method to Total forecast minus actual, and set Use forecast amount for revenue recognition to Yes. That combination tells the system to calculate cost-to-complete from the forecast rather than from a manually entered total, and to use that forecast figure specifically for revenue recognition math rather than treating it as informational only.

A second setting matters just as much and gets missed more often. Under Project management and accounting parameters, on the Revenue recognition tab, set Allow posting when cost to complete is less than the check value to Warning rather than leaving it at its default blocking behavior. Because actual costs can legitimately run ahead of an unrevised forecast under this method, a hard block here will stop legitimate period-end postings. Warning mode lets the transaction post while flagging it for review, which is the right tradeoff once you have accepted that overruns are supposed to show up as variance rather than as a posting error.

Two scope limitations are worth knowing before you commit to a rollout. The feature currently supports completion methods based on cost amount or quantity. Projects using an effort or hours-based completion method were not part of the documented scope as of GA, so confirm your contract lines’ estimate methods before assuming this applies portfolio-wide. And because configuration lives at the cost template and cost line level, a project stitched together from multiple templates, some forecast-based and some not, can end up with genuinely inconsistent recognition behavior across its own cost lines. That is worth an audit of your template library before flipping the switch broadly, not something to discover during a client’s fiscal year-end.

Rollout Considerations for Projects Already in Flight

Project accounting team reviewing budget versus actual cost trends in a meeting room

Microsoft’s own documentation does not spell out how this interacts with periods that have already posted revenue under the old EAC-based calculation, and that ambiguity is reason enough for caution rather than assumption. Treat this as a forward-looking configuration change. Apply it to new fixed-price projects and to contract lines that have not yet posted revenue, and validate the behavior in a sandbox environment against a handful of representative project types before touching anything live in production. Run the same project through both calculation methods side by side for a period or two if your close calendar allows it. Seeing the actual delta between EAC-based and cost-estimate-based percentages on real data will tell you more about whether this is the right default for your portfolio than any amount of reading the release notes.

There is also a governance conversation worth having before this becomes the standing configuration. Cost estimate revenue recognition trades EAC’s volatility for a different kind of risk: a bad forecast set at project kickoff now drives revenue recognition for the life of the contract unless someone deliberately revises the baseline. That is a feature, not a bug, for teams whose real problem was noisy month-to-month recognition. It is a liability for teams whose original estimates were never particularly reliable to begin with. Stabilizing a number does not make it more accurate. It just makes it stop moving, which can look like accuracy without being it.

At Routeget, we have started building a review of this setting into 2026 release wave 1 upgrade assessments for clients running Project Operations at scale, rather than leaving it as an optional toggle someone discovers by accident. The fixed-price portfolios most exposed to EAC-driven revenue swings tend to be the ones with the tightest client reporting requirements, which means they stand to gain the most from a stable baseline and have the least tolerance for getting the transition wrong. Pilot it deliberately, audit your cost templates before rollout, and keep the forecast-accuracy conversation alive even after the volatility disappears from your month-end close.


#ProjectOperations #RevenueRecognition #CostEstimateMethod #ProjectAccounting #FinancialClose #EnterpriseERP