Material Resources Planning
The Purchasing > Planning Tab applications deal with inventory management using manual, Requirements Enumeration (which we discussed in the last section of this manual), and Material Resources Planning (MRP) which is a sophisticated and automated method of projecting inventory management actions based upon a full set of considerations.
MRP projects not only the demand but also the timing of the inventory demand. MRP is a time-series analysis tool which helps you plan purchasing for resale business, purchasing to support your internal production, and the need for and timing of internal production runs to meet customer demand.
The analysis that MRP does combines information about your current actual inventory in all of your warehouses, with outstanding sales, a specified percentage of forcasted sales, outstanding purchase orders, and production run orders to determine both the quantity and timing of additional inventory required. It will then create Requirements you can use as is, or edit and then order, or manufacture products needed to meet demand.
Because MRP is a comprehensive automated (fast) look at your demand for inventory, it works by using a number of different business process data types that are generated as you use your opentaps business management vehicle. Thus, there are set up and configuration items that are required to fully use MRP. The big reward is that once it is set up and working for you, any changing assumptions or shifts in business projections can be handled by running MRP again to get an updated look at the inventory consequences.
To use MRP, you must first set up the following information:
- Set up all your Products that you purchase or that you sell in the Catalog application.
- Set up Bill Of Material for Products that you make, manufacture, or produce internally.
- Set up Product Suppliers for products which you purchase. You should designate a "Main Supplier" for the primary vendor of your products.
- Set up Inventory Stock Levels for all your products, by warehouse in the Catalog.
Note: If you have imported your Products into the opentaps database Catalog, which probably required the assistance of your technical system administrator, then you will need to perform these two additional configuration steps:
- If you have imported products, you should run the initLowLevelCode service to set up your products and check the Product.billOfMaterialLevel to make sure it is set.
- Your products must have a "low level code" configured for them. If they were created in opentaps, they should be created automatically. Otherwise, if you imported your products, your system administrator must run a service called "initLowLevelCode".
Then you can use the Run MRP Screen to run material resources planning for your warehouses. After running MRP, you can use the View MRP Screen to look at the results. You can also use the Open Requirements Screen to approve or cancel the requirements created by MRP and thus start the purchasing and production process. You can run MRP any time you think that situations have changed which may alter the inventory management actions needed.
Tutorial -- How MRP Works
A Simple Example First
Consider the following example of how MRP functions for one of your catalog products. Imagine drawing a horizontal line across a piece of paper. Now imagine that it is a timeline, and as you move from left to right on the line, you are moving into the future.
Pick a product. Now for each sales order you have, mark on the line the date when you must ship the order and the quantity you must ship to your customer. Repeat this for all upcoming receipts of inventory from your suppliers or from manufaturing operations at your company. Now you have a time line of all the "inventory events" for your product.
You can then take the starting inventory of your product, move from left to right into the future, and calculate the inventory at different points in the future. Next, whenever the inventory dips below your minimum stock quantity, write down a "requirement" to obtain additional inventory.
- If this product is purchased from suppliers, then this means you need to purchase and receive it into inventory according to your time line.
- If the product is manufactured, the requirement means you need a production run to make it according to the time line.
You have just manually performed MRP for one of your products.
A More Complete Explanation
A real MRP system is much more complicated and must consider delivery lead times, bills of materials (BOM) for all of your products, and minimum reorder quantities, but conceptually it is very similar to the process above.
The opentaps MRP system begins by creating the inventory events timeline for every product which has a minimum stock defined in the warehouse. It will create a negative inventory event when a product is required for a sales order or as the raw material of a production run, and a positive inventory event when it is to be received from a purchase order or as the product has a planned production run. When there are pending production runs, it will also look through the Bill Of Material of a product to create inventory events for the dependent parts of the product.
It will then start from products which are at the top of the bill of material and run through all their inventory events.
If a product has no inventory events, then MRP will compare its current quantity on hand (QOH) inventory versus the minimum stock set for the warehouse. If at any time the inventory events cause BOM products to fall below the minimum stock, and the product is NOT defined with a type of "work in progress" (WIP), the system will try to replenish the inventory stock by taking the following steps:
- It will look for Backup Warehouses for the current warehouse and see if it could request a transfer from these warehouses. In opentaps 1.4 and later, you can override this by configuring the replenishment method of Inventory Stock Levels.
- If not, it will create a new requirement to purchase or manufacture the product. To determine whether a product will be manufactured or purchased, the system will consider whether it has a Bill Of Material of its own and whether it has any supplier products defined for purchasing. (By default, a part is considered manufactured if it has child nodes AND if it also has no unexpired SupplierProducts defined.) Products to be purchased will be associated with the "Main Supplier" of the product by default.
- In opentaps version 1.4, the production routings for a product can have minimum and maximum quantities associated with it. In that case, if production routings have been found, MRP will create a requirement at the lowest minimum quantity if that minimum quantity is above the quantity needed, and MRP will create multiple requirements at the maximum quantity if the maximum quantity is below the quantity needed. Purchasing requirements for its bill of material components will be created based on the quantity of the requirement created by MRP.
- It will create a link between the requirement and any outstanding open sales orders which prompted the requirement to be created. The requirements will be allocated to the orders in the sequence that they were reserved.
- In version 1.4, if you have pending internal requirements to manufacture products that have been approved, MRP will go through its bill of material and create purchasing or production requirements for its parts as needed. You can also manually modify the approved pending internal requirements, and MRP will use the modified quantity to generate requirements for its bill of material parts.
If your product is defined of type "WIP", then no requirements will be created for it. The system, however, will go through it and create requirements for its components.
After completing all the products at one BOM level, it will go down to the next BOM level and repeat the process, until it has either traversed all the BOM levels or it has traversed three levels without finding any products which require any purchases or production. Products with type "WIP" would not have requirements created for them because the system will create requirements for the parts of such products.
If there are no inventory events for a product, MRP will essentially compare its current quantity on hand (QOH) inventory level with the minimum stock level and create new requirements if it is below stock.
If there are fractional quantities, MRP will by default round them to two decimal places.
Considerations Regarding Event Timing
Since MRP is based on a time line of a product's inventory events, it is extremely sensitive to assumptions about the timing of inventory events. For example, imagine that a sales order must be shipped out at 12 PM (noon) today, and you have a purchase order coming in at 12:01 PM. Should the MRP assume that you can wait until 12:01 to ship out the order, or does it actually need to order additional inventory so that it is in stock in time for the 12 PM order? The "common sense" answer to that question is something which the MRP system needs to simulate. The opentaps MRP makes the following assumptions about the timing of events:
- It will use the stated shipment or production time for inventory events. If those are not available, it will assume the current time, except for the following:
- For sales order shipments, if there is no specified ship time, it will use the "default years offset" parameter to move the sales order shipment X years into the future. By default, this parameter is set to 1 year, so MRP assumes that any sales order which does not have a shipment date set will need to be shipped 1 year in the future.
- It will then use your "Days to Ship" specification (running ProductFacility.daysToShip) to set the time when a sales order shipment is needed. For example, if a sales order is scheduled to ship on Oct 15, 2007 and the product's daysToShip is 10 days, it will assume that the products on the order must be available in the warehouse on Oct 5, 2007.
- No event will be set into the past: if any inventory event is before the current date/time, MRP will adjust it to the current date/time and mark it as "late."
Note also that at this time, the opentaps MRP is completely deterministic: it does not use any probabilities in calculating inventory events or potential requirements.
In opentaps 1.4 and later, MRP will consider sales forecasts as well as actual sales. MRP will create purchasing or production run requirements based on a percentage of item level sales forecasts. For example, you can have MRP create requirements at 50% of the forecasted sales level. To incorporate sales forecasts into MRP:
- Prepare your sales forecasts using the opentaps [Forecasts Tab] functionality for the time periods you use for your inventory management horizon.
- Alternative: If you use a different forecasting application, have your technical system administrator load your sales forecasts into the SalesForecastItem entity, using a CSV loading tool for your database. You need to fill in the fields facility ID, product ID, forecast data and time, and forecast quantity. The other fields are currently not used.
- When running MRP, set the percentage of sales forecast parameter to the percentage you want to use, this is the percentage of your sales forecast volume that you want to incorporate into the requirements for inventory calculated by running MRP.
MRP will then find all the sales forecasts in your planning horizon (beginning after this time that MRP is being run) and adjust the inventory down by the forecast quantity, multiplied by the percentage of sales forecast you have specified, to create the appropriate requirements. For example, if you are forecasting a sale of 10 units a month from today, and your percentage of sales forecast parameter is set to 50, MRP will create a requirement for 5 additional units one month from today. Sales forecasts with forecast dates in the past will be considered expired and ignored.
Starting with version 1.4, there are two new features for transferring inventory between your warehouses:
- Inventory Transfer Dates: You can use the FacilityTransferPlan entity to set up future dates when inventory transfers between two specific facilities will take place. If there are records in this entity, then MRP will only transfer inventory on those dates, and inventory transfers needed before the dates in the FacilityTransferPlan will be grouped on those dates. Repeating schedules are not supported at this time.
- Transfer Requests Versus Transfer Requirements: You can specify whether MRP will create inventory transfer requests directly, or whether it will create inventory transfer requirements (for the dates when the inventory transfers should take place).
Using Direct Transfer Requests Versus Transfer Requirements?
The inventory transfer requirements function like other open requirements: once approved, they will cause inventory transfers to be created to the primary warehouse, and inventory to be reserved in the backup warehouse for transfer.
But what about the differences between these two options? There is one important difference between using inventory transfers created directly by MRP versus using transfer requirements created by MRP. This is explained as follows:
- First Option-Direct Transfer Request: If MRP is creating an inventory transfer request, but your backup warehouse does not have sufficient inventory to meet the needs of the primary warehouse, then an inventory transfer will be created for the quantity actually in the backup warehouse.
- A Requirement for the missing quantity of inventory will be created for the primary warehouse.
- When you then run MRP for the backup warehouse, a requirement will be produced for the restocking needed in the backup warehouse according to its own restocking parameters.
- Consolidation of all requirements into the backup warehouse is not accomplished in this case.
- Alternative-The Transfer Requirement: In contrast, if MRP is creating a transfer requirement for the primary warehouse instead of a transfer request, then it will create one for the full quantity needed by the primary warehouse, whether the backup warehouse has sufficient inventory are not.
- Following the runs of MRP for other primary warehouses in use, the MRP can be run for the backup warehouse.
- Before running the backup warehouse, Approve the inventory transfer requirements to the primaries from the backup.
- Now, running MRP for the backup warehouse will aggregate the inventory requirements for transfers out to primary warehouses thus facilitating consolidated purchasing or production runs at the backup warehouse level.
When you can aggregate all your inventory requirements at the backup warehouse level, thus facilitating the consolidation of backup warehouse purchasing or manufacturing plans, there are obvious opportunities for cost reductions and efficiencies in procurement.
We can avoid creating purchasing or manufacturing plans in a lot of warehouses supplied by the backup warehouse.