MRP/Job Substitute Materials Automatically

We have an interesting situation, that I’m curious if we can convince Epicor to navigate intelligently.

We recently changed the way we manufacture a few parts in our plant. In order to prevent buildup of stock in certain sizes, we chose a bunch of the more commonly used sizes that are larger, and have them set up to run with safety stocks and lot sizes. The smaller sizes that happen less frequently, and typically in less volume then are cut down from these. This has helped us hold less stock of many of these panels, cut down the number of part numbers stocked, and enabled us to cut down on damages from handling and rust because of more inventory rotation.

That side of it has worked out quite well.

This has developed and unfortunate side effect though, that I hope there may be a way to automate.
Let’s use 1005* for an example.
This panel gets sheared down from a 1010*. (slightly larger version of the same thing).

I’m not sure if we can get Epicor to consider if/then statements as part of MRP, but this would be a scenario where it would be beneficial.

The current issue occurs when we don’t have enough 1010* on hand to cover the 1005* that are required. In those instances, the jobs will be generated for a lot size order of 1010*, and then the made to order quantity of 1005* that will consume a portion of those 1010*. We also have the option to make the 1005* from scratch instead of making the 1010* first. When we have orders with larger volume, this is beneficial, as it allows us to save the material that we would waste from the shearing portion of the operation, and use it for other parts (as it is still in one piece in the sheet, before the 1005*/1010* panel is cut).

Is it possible, for some of these parts to have Epicor consider an if/then statement to generate jobs?

For example…

Demand for 55 pcs of 1005* is generated by some sales order or kit.
At that moment, there are 12 1010* available, with no demand.
In that situation, the preferred process should be to manufacture 55 pcs of 1005* directly, rather than prompt work orders for 1010*. Or some combination of using the 1010* that are available, and then manufacturing the remaining parts as 1005* directly.

Essentially…. If 1010* is available to cover 1005*, then use BOM and routings A.
If 1010* is not available to cover 1005*, then use BOM and routings B.

That if/then statement would need to be subject to date requirements by other orders as well, in order to function correctly long term.

We’ve considered a placeholder material then use material issue to consume the correct amounts of the correct part numbers but are wondering if there an easier and better way that doesn’t involve people remembering to do the right thing.

Hopefully that didn’t scramble your brain.

I have never done it, but Epicor gives you the tools to alter MRP logic if you want. I would look into trying to configure your MRP to include this as I do not see this being a need across every company.

Thanks @jkane. . . I’ve never even seen the tools in my 7 years of developing for Epicor 10. . . . only heard rumors of their existence. Are these tools available as part of standard Epicor 10 customization tools or are they something extra?

They are referenced in the help. but it is not a lot to go on.

MRP Code Customization

You can customize the MRP process to generate results that best match your production flow and also improve MRP performance.

If you are a C# programmer, leverage this functionality to create dlls you can then insert through the available Process Maintenance programs. When the MRP process runs, these dlls interrupt the MRP logic and run using their customized logic. When the MRP process completes, the results reflect your custom code.

The base item used during MRP processing is a queue. Each queue defines the sequence order in which it is run, whether you run it in full regeneration mode only, if its scheduling should use the finite calculation, the number of outbound queues available, and other parameters. Queues in the system are gathered into groups and all the queues in the group are processed at the same time. A group may contain one or multiple queue records. Before moving to the next group, all queues must complete processing. Only the last queue record in a block should indicate what queues to listen for before moving on to the next queue.

Each MRP process run requires at least two process control files - a controller file and a listener file. The control file runs the main MRP process driver. You use this file to first build the initial MRP processing queues you define for the process, and then determine when the MRP process can move on to the next available queue. The listener file is the MRP driver that processes each queue record and then moves the record to the next queue within the MRP process. You determine the sequence of the MRP queues by creating a process queue record.

If your MRP code customization generates an error and you are unable to fix it, you can always restore the original MRP process. To do this, launch the System Administrator Console and run the MRP conversion program to reset the process back to the installed default settings.

Where Located

You can access the Queue functionality through the following locations.

  • Process Queue Maintenance - Use this program to create the various queues you wish to run during your customized MRP process. Process queues are the primary building blocks you manipulate during the MRP process that determine what demand records are evaluated by the MRP process.Main Menu Path: Production Management > Material Requirements Planning > Setup > Process Queue
  • Process Control Queue Maintenance - You launch this program to link your custom .p code files to specific queue records. You also define the group you wish to use with your custom queue records. You can also define the order in which the queues are launched. You can select multiple queues for each .p code file.Main Menu Path:Production Management > Material Requirements Planning > Setup > Process Control Queue
  • Process Control Maintenance - Use this program to define the overall parameters you wish to run with each custom .p program. You can define whether the process is a controller or a listener file, the number of processors you can run with the custom file, and the specific queue records that the process must check before the custom process is complete. Main Menu Path:Main Menu Path:Production Management > Material Requirements Planning > Setup > Process Control

What @gpayne posted. They should be available out of the box, but I have never used them.