Back to Blog
Published:
Last Updated:
Recently Updated
Copilot BoundaryChapter 3

Why is my ERP agent answering with yesterday's numbers?

7 min read
1,542 words
high priority
Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

TL;DR

Because it is reading the analytics surface, where Business performance analytics pre-transforms currently run twice daily and the pipeline behind them takes hours more. The rule — if the answer changes within 12 hours, it does not belong on the analytics server, and 12 hours is the floor.

Why is my ERP agent answering with yesterday's numbers?

Because it is almost certainly reading the analytics surface, where the data is pre-transformed on a published schedule rather than read live. This is not a model failure and no amount of prompt work will fix it. It is a grounding decision, and it was made before anyone wrote a prompt.

Two servers, and they answer different questions

Microsoft ships two Model Context Protocol servers over the ERP, and confusing them is the most consequential architecture mistake available on this stack.

The analytics server is a good product. It answers analytical questions in natural language over a proper dimensional model, across three value chains — Record-to-Report, Procure-to-Pay and Order-to-Cash — and it enforces row-level security without you wiring anything. It is [PP], so it is pilot-only, and it should not carry a go-live commitment before general availability, which the release plan puts at September 2026.

What it cannot do is tell you what is true right now, because the heavy dimensional transform runs on a cycle and the agent generates its query on top of whatever that cycle last produced.

The rule, in one line

If the answer changes within 12 hours, it does not belong on the analytics server. And 12 hours is the floor, not the ceiling.

That is the whole design principle, and it sorts questions cleanly.

Microsoft schedules the refresh at "12:00 AM and 12:00 PM (Coordinated Universal Time)", and states that "the full pipeline (data sync, transforms, and refresh) can take 4-5 hours or more, depending on your data volume" (technical details).

Add the pipeline to the interval and the number your agent reads can be well over half a day old. Ask in the morning, on a fixed UTC clock, and that is yesterday's number.

The failure this rule prevents is specific and nasty: the agent does not error, hedge or flag staleness. It answers confidently with the last completed refresh, which is worse than refusing, because a wrong answer delivered with confidence gets acted on.

Sorting your questions takes about ten minutes

  • Can we promise this delivery date? — Which surface owns it: Transactional · Why: Changes with every order and reservation
  • Is this item available now? — Which surface owns it: Transactional · Why: The canonical wrong-answer question
  • Which exceptions are open right now? — Which surface owns it: Transactional · Why: Changes continuously through the day
  • Has this purchase order been confirmed? — Which surface owns it: Transactional · Why: State changes on receipt of one email
  • Which vendors have the best on-time delivery this quarter? — Which surface owns it: Analytics · Why: A quarter of history does not move in an afternoon
  • What is our average payment cycle time by vendor? — Which surface owns it: Analytics · Why: Aggregate over a long window
  • What is inventory turnover by product category? — Which surface owns it: Analytics · Why: Same
  • Where is our customer concentration risk? — Which surface owns it: Analytics · Why: Structural, slow-moving

The pattern is visible once it is on a page: anything a person would phone someone about goes to the transactional server; anything a person would put in a monthly review goes to analytics.

What to ground an availability agent on instead

If your scenario is "can we promise this?", neither MCP server is the first answer — the Inventory Visibility Add-in [GA] is. Microsoft calls it a "first-party microservice", not an AI feature, and it exists precisely because availability has to be real-time: soft reservations posted from any order channel to prevent overselling, and available-to-promise (a delivery date derived from projected stock) calculated forward, exposed over REST to any caller including non-Microsoft channels.

That makes it the cleanest grounding source for a promise agent. The agent reads availability from Inventory Visibility, then acts through the ERP MCP server. Two surfaces, each doing the thing it was built for.

Microsoft's own combined patterns are the right shape

Rather than choosing one server, Microsoft documents pairing them, and both patterns are worth copying:

  • Insights to action. Find the problem in analytics — the vendor whose performance has drifted, the category whose turns have collapsed — then act through the transactional server.
  • Action informed by insights. Start a task in the ERP, then consult analytics to make the decision better. Microsoft's example is "requisition management with vendor performance analysis".

Both work because they use the stale surface for the thing staleness does not damage — pattern and history — and the live surface for the thing it does.

The counter-argument

"Then point everything at the transactional server and stop worrying about it."

Tempting, and wrong for three reasons. Analytical questions over a transactional surface still cost more. Microsoft moved the ERP MCP data tools from OData to SQL in April 2026 because OData had "limitations with data aggregations and query operators, leaving much of the data aggregation to the agent's large language model" (release plan). That is better; it is still not a semantic model.

Second, the dimensional model exists because someone already solved the joins, the conformed dimensions and the measures — throwing that away means rebuilding it inside prompts. Third, row-level security is enforced automatically on the analytics side; on the transactional side you inherit the filtering of the roles assigned to the agent, which is correct but is a different control that you have to reason about separately.

The right answer is not one surface. It is knowing which question is on which, and being able to say so out loud.

What to do this week

  1. List the ten questions your users most want to ask the ERP. Mark each changes within 12 hours or does not. That single column is your agent architecture.
  2. For every agent already running, write down which surface it is grounded on. If any agent answering an operational question is grounded on analytics, that is today's finding.
  3. If availability is in scope at all, check whether the Inventory Visibility Add-in is installed. Grounding a promise agent on anything else is a decision you should be making deliberately, not by default.

Where we would draw the line

We would not ship an availability or promise answer off a pre-transformed surface, whatever the demo looked like — that is the one case where being confidently wrong costs a customer relationship rather than a report. We would not build a production commitment on the analytics server while it is [PP]; pilot on it, design for it, keep it off the critical path until GA. And we would not build one agent that reads both surfaces without stating in its response which one an answer came from — if the freshness differs, the reader deserves to know which they got.

About Cognilium Cognilium is the AI optimization layer for Dynamics 365 — complementary apps that optimize the pricing, inventory, warehouse and planning decisions your ERP manages but can't optimize. Built on Power Platform, Dataverse and Azure. https://cognilium.ai · https://www.linkedin.com/company/37180269/

Sorting your questions by surface takes ten minutes and decides your architecture. If you want a second pair of eyes on the split, we will do it with you on a call. https://cognilium.ai

Sources

Sources

Share this article

The work behind this series

What Microsoft ships, what it does not, and the layer we build where a general assistant runs out.

Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

Mudassir Marwat's argument is that ERP systems record decisions they never optimise.

Founder & CEO of Cognilium AI; 37 AI agents in production across four products; 4 production AI products built and operated; three clouds in production (AWSGCPAzure)
Agentic AIRAG → GraphRAG retrievalVoice AIMulti-Agent Orchestration
In short

Key takeaways

  • An agent answering with old numbers is usually grounded on the analytics surface, where data is refreshed on a pre-transform cycle rather than read live. It is a grounding decision, not a model problem.
  • The rule that sorts it: if the answer changes inside the pre-transform window, it does not belong on the analytics surface — and that window is wider than the refresh interval, because the pipeline that fills it takes hours of its own.
  • The failure is silent. The agent does not flag staleness or hedge — it answers confidently with the last completed refresh, which can be most of a day behind.
  • Availability and promise questions belong on Inventory Visibility, a real-time service built for exactly that, with the agent acting through the transactional server afterwards.
  • Pairing the surfaces beats picking one: find the problem in analytics, act through the ERP.
What goes wrong

Common mistakes to avoid

  • Grounding an "is it available now?" agent on analytics because that is where the data was easiest to reach.
  • Assuming an agent will tell you its answer is stale. Nothing in the path knows that it is.
  • Building a production commitment on the analytics server while it is in public preview.
  • Solving a freshness problem with prompt engineering. No instruction makes a pre-transformed figure current.
  • Treating the refresh interval as the ceiling on staleness. The pipeline that produces each refresh takes hours of its own, so the data is older than the interval alone suggests.

Terms in this article

Definitions in the Cognilium glossary.

Still have a question this did not answer?

The person who wrote this article answers these. Describe your setup and what you are stuck on — you will get a straight answer, including where we think the approach is wrong.

Related Articles

Continue exploring related topics and insights from our content library.

8 min
1
Mudassir Marwat
July 30, 2026

Why did my ERP agent report success when the write actually failed?

Two documented failure modes make a Dynamics 365 ERP agent lie to you — a row cap on form state whose only mitigation is an instruction, and a fallback pattern where a failed write is reported using data the agent read instead. Both are in Microsoft's own starter instructions.

words
Read Article
12 min
2
Mudassir Marwat
July 30, 2026

What does a Dynamics 365 ERP agent actually cost to run?

Your ERP AI budget has three meters, not one — Copilot Credits, invoice capture transactions, and AI Builder credits whose seeded entitlement ends on 1 November 2026. What each one counts, what a credit costs, and where the caps are.

words
Read Article
8 min
3
Mudassir Marwat
July 30, 2026

Do I need a Dynamics 365 licence for an AI agent's identity?

Currently not for the identity itself, when the agent is built in Copilot Studio or reaches the ERP through the Dynamics 365 ERP MCP server. A security role that grants nothing marks the identity as licence-exempt — and every human who chats with that agent still needs their own licence.

words
Read Article

Explore More Insights

Discover more expert articles on AI, engineering, and technology trends.

Personalized for You

Curated content recommendations based on your current reading and interests.

Trending
117%

Can an AI agent in Dynamics 365 give itself more permissions?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

No — not through the administration forms. The Dynamics 365 ERP MCP server (generally available 27 January 2026) excludes the security, user, Microsoft Entra application and feature-management forms by name. The role you assign is still yours to scope.

Mudassir Marwat
8 min read
Copilot Boundary
Read Article
Trending
29%

How does someone confirm a delivery without a Dynamics 365 licence?

High priority content
Similar reading time

Not by borrowing one. Microsoft gives the ERP MCP server no anonymous path, so the confirmation has to be mediated and a known identity does the posting.

Ali Ahmed
5 min read
Procure-to-Pay Agent Operations
Read Article
Trending
117%

In-app Copilot sidecar or a Copilot Studio MCP agent — which one, for what?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Two surfaces, two jobs — and one combination that is explicitly unsupported. Adding the ERP MCP server as a tool inside the in-app finance and operations sidecar is not supported today, which decides more architectures than it should.

Mudassir Marwat
9 min read
Copilot Boundary
Read Article
Trending
117%

Do I need a Dynamics 365 licence for an AI agent's identity?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Currently not for the identity itself, when the agent is built in Copilot Studio or reaches the ERP through the Dynamics 365 ERP MCP server. A security role that grants nothing marks the identity as licence-exempt — and every human who chats with that agent still needs their own licence.

Mudassir Marwat
8 min read
Copilot Boundary
Read Article
Trending
117%

Why can't I see my ERP agent's permissions in Entra?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Microsoft's documentation says that today, custom connectors, MCP servers and REST API tools added to an agent do not add API permissions to the Entra Agent ID. Control of an MCP-based ERP agent lives in three places, and none of them is the Entra connector-permission view.

Mudassir Marwat
9 min read
Copilot Boundary
Read Article
Trending
117%

Are Dynamics 365 ERP form tools just RPA with a new name?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Form tools in the Dynamics 365 ERP MCP server look like screen automation and are not. They drive the application through server APIs against its view model, with no browser, no screenshots and no pixel coordinates.

Mudassir Marwat
7 min read
Copilot Boundary
Read Article

Smart Recommendations

Our AI analyzes topic clusters, author expertise, and content relationships to surface the most relevant articles for you.

Topic Matching
Author Expertise
Content Quality
Personal Interests

Questions on this?

Talk to an engineer

Schedule a call