How-toEpicor Kinetic / Epicor ERP 10Material Requirements Planning

Epicor MRP Runs but Generates No Suggestions

Question
Epicor MRP not generating job or purchase suggestions

Also searched as

  • Epicor MRP run finishes but no suggestions
  • Epicor regenerative MRP vs net change MRP not picking up demand
  • Epicor part not showing on MRP action message
  • Epicor MRP log how to read

Short answer

When Epicor's MRP process completes without a job or purchase suggestion for a part you expect one for, the cause is almost always the part's own configuration (Part Class Type, Make Direct, Non-MRP flag, planning Time Fence) or the demand not being linked in a way MRP recognizes, not a defect in the MRP engine. Work through the part's Planning tab, its safety stock and lead time setup, and the demand source (sales order line status, job material requirement) before assuming the run itself failed.

Applies to: Epicor ERP 10.1, 10.2, Epicor Kinetic, regenerative and net change MRP

Find why MRP skipped the part

  1. 1Open the MRP Log (Material Planning > Scheduling > MRP, then the log/history for the last run) and search for the part number - a part that MRP evaluated but decided needs nothing will still appear here with a reason.
  2. 2Check Part Master > Planning tab: confirm the Part Class Type is set correctly (Purchased, Manufactured, Purchased/Manufactured) and that Non-MRP Part is not checked - a Non-MRP part is deliberately excluded from every run.
  3. 3Check whether Make Direct or Buy Direct is set on the part - direct parts generate suggestions tied to a specific sales order or job, not as general stock replenishment, so they will not show up the way a stocked item does.
  4. 4Confirm the demand actually exists in a state MRP reads: an unapproved/unreleased sales order, a quote instead of an order, or a job material requirement on a job that is not engineered will not generate demand.
  5. 5Check the part's Time Fence and Lead Time settings - if the required date falls inside a firm planning time fence, MRP may suppress a new suggestion rather than move existing firm supply.
  6. 6Verify the part's Site and Warehouse match where the demand is recorded - MRP suggestions are site-specific, so demand in one site against supply/part setup in another will not connect.
  7. 7Confirm you ran the correct scope - a Net Change run only evaluates parts flagged as changed since the last run; if the part was not touched, run a full Regenerative MRP to force a complete re-evaluation.
  8. 8Check safety stock and minimum/maximum settings are not already satisfied by on-hand plus existing open supply, which is a legitimate reason for MRP to correctly generate nothing.

Regenerative vs Net Change MRP

Net Change MRP only re-plans parts Epicor has flagged as changed since the last run (new demand, changed due date, receipt, and similar events), which is fast but will silently skip a part if the change that should have flagged it did not register - a common case after direct database updates from an integration, or after a BPM-driven change that bypassed the normal transaction path.

Regenerative MRP re-evaluates every part from scratch and is the reliable way to confirm whether an apparent no-suggestion issue is a flagging problem (Net Change missed it) or a genuine configuration issue (the part correctly needs nothing).

Part configuration that suppresses suggestions

Non-MRP Part removes the part from planning entirely - useful for expense items and non-stock parts, but a frequent accidental cause when someone copies a part master record without checking the flag. Make Direct and Buy Direct tie supply to a specific order line rather than creating general replenishment, so if you are expecting a stock-replenishment PO for a Buy Direct part, that is by design, not a bug.

The planning Time Fence exists to stop MRP from constantly rescheduling firm, near-term supply; it can also mean MRP declines to suggest new supply for demand that falls inside that fence, expecting a planner to handle it manually.

Demand that MRP does not see

MRP reads demand from sources in a defined status - an approved and released sales order line, an engineered job's material requirement, a forecast record, or safety stock policy. A quote, an unapproved order, or a job still in "Unapproved" or "Unengineered" status will not create MRP demand even though it is visible elsewhere in the system, which is the single most common reason a part everyone can see has demand for still shows nothing on MRP.

Reading the MRP log effectively

The MRP log records, per part, what supply and demand it found and what action (or no action) it took. Filtering the log to the part in question is far faster than re-running MRP repeatedly with small configuration changes - the log will usually state directly that the part is Non-MRP, direct-linked, or within its time fence, which points straight at the fix.

Common pitfalls

  • !Assuming a Net Change run's silence means the part needs nothing, when it may simply not have been flagged as changed.
  • !Changing part configuration in production to test a theory instead of confirming first in the MRP log or a test company.
  • !Forgetting MRP suggestions are site-specific and comparing demand recorded in one site against a part record reviewed in another.
  • !Not checking sales order or job approval status, since unapproved demand is invisible to MRP even though staff can see it on screen.
  • !Overlooking that Make Direct/Buy Direct parts are working as designed and do not need a stock-replenishment suggestion at all.
  • !Re-running MRP repeatedly without reading the log first, which wastes a full planning cycle on trial and error.

How an ERP-grounded AI assistant handles this

ERPray, grounded in the Epicor part master, MRP log and the linked sales order or job status, can answer "why did MRP not suggest a job for part X" directly - checking Non-MRP flag, Make Direct, time fence, and demand approval status in one pass instead of a planner working through the checklist manually across several Epicor screens. The MRP run itself and any resulting supply change still go through the normal planning and approval process.

Frequently asked questions

Does a part need to be Approved before MRP will plan it?

The part master itself does not need a separate approval, but the demand driving the suggestion (sales order line, job material requirement) generally does need to be in an approved/released status. A part with no valid demand or below its reorder point with adequate on-hand can legitimately generate nothing.

Why does MRP suggest a job for the wrong site?

Check the part's site-specific planning parameters and the site tied to the originating demand - MRP plans per site, so a part that is Non-MRP or has different lead times in one site than another will behave differently even with the same part number.

Can a BPM directive interfere with MRP suggestion generation?

Indirectly, yes - if a directive blocks or alters the demand record (a sales order line update, a job engineering change) before MRP runs, the demand MRP sees can differ from what a user expects on screen. Check BPM directives on the demand-creating transaction if suggestions are missing only for certain order types or part classes.

How do I force MRP to re-evaluate a single part quickly?

Most Epicor versions support running MRP scoped to a part class or a specific part range rather than the whole regenerative run, which is much faster for testing a single part's configuration without re-planning the entire site.

Related

Error fix

Fixing Epicor BusinessObjectException: BPM Directive Errors

A BusinessObjectException that says "A Business Process Management (BPM) directive has raised the following error" means a directive on that business object stopped the transaction, either deliberately via a Raise Exception widget or accidentally via an unhandled .NET error in Custom Code. Expand the InnerException on the error dialog to see the real message and the directive name, then open BPM Designer for that object and method to find the widget that fired.

How-to

Fixing a Slow Epicor BAQ (Business Activity Query)

A slow BAQ in Epicor is usually caused by unindexed join columns, a subquery or calculated field forcing a table scan, or the BAQ pulling far more rows than the dashboard actually displays before filtering client-side. Fix it by reading the SQL Server execution plan Epicor generates, moving filters into the BAQ criteria instead of the dashboard filter panel, and replacing subqueries with joins where possible.

How-to

Preserving Customizations When Upgrading to Epicor Kinetic

Epicor Kinetic's web UI does not simply inherit classic smart-client customizations - most need to go through the Update Customization / Application Studio conversion process, and some WinForms-specific customizations cannot convert directly and must be rebuilt in the Kinetic designer. Plan the upgrade as a customization inventory and rework project, not a single technical cutover step.

Error fix

Fixing Epicor REST v2 API 401 Unauthorized Errors

A 401 Unauthorized calling Epicor's REST v2 (api/v2/odata) endpoint almost always comes down to one of three things: a missing or wrong x-api-key header, valid credentials but an API key scoped to a different company than the one in the URL, or REST services simply not enabled for that endpoint. Confirm the API key exists and is active in Application Studio (or the classic REST API help page), matches the company segment in the URL, and that the account used for Basic auth or OAuth has the right security group.

Advanced

How to create and call an Epicor Function

Open Function Studio from the main menu (Customization > Function Studio) or from inside a BPM designer's Call Context widget, define a Library and Function with typed inputs/outputs, write the logic in the C# widget, then compile and test with the built-in test harness before calling it from a BPM directive, a dashboard, or another function.

Advanced

Epicor Application Studio: understanding customization layers

Kinetic UI is built in layers loaded in order - Base (Epicor-delivered), Customization (Application Studio, company/layer-wide), Personalization (user- or role-specific, applied on top), and optionally Extended (packaged add-on layers) - and a change you make will not appear if a higher layer overrides the same control or if you are testing in the wrong layer context.

AI for ERP

AI for Epicor Kinetic, Beyond What Prism Covers

Add AI to Epicor Kinetic beyond Prism: private LLM over BAQs, BPM data, and REST v2, on-prem or private cloud, with honest guidance on when Prism already covers you.

AI for ERP

AI for Epicor Prophet 21, Built for Distribution Operations

Prophet 21 AI for distributors: on-prem or private-cloud LLM grounded in P21 order, inventory, and purchasing data, for order follow-up, forecasting, and pricing questions.

Stuck on Epicor Kinetic / Epicor ERP 10?

Talk to engineers who work inside Epicor Kinetic / Epicor ERP 10 every week, and who build private AI that answers these questions from your own ERP data.