Release notes

5.2.0 (2019/04/27)

Production planning

  • Modeling simplication: In the operation material table you had to always insert both the produced material and consumed materials.
    In a lot of models an operation always produces 1 unit of the item. In this type of model you can now choose to leave out the records for the produced material. We’ll automatically add them with makes your modeling and data interfaces easier, faster and less error-prone.
    If an operation produces a quantity different from 1 the producing operation material record remains necessary.
  • In the plan editor you can now select multiple operation and change the status of all of them in a single action.

  • Performance improvements in the solver algorithm.

  • Operations loading multiple bucketized resource now use the effiency of that resources. In earlier releases we used the minimum efficiency of all resources that operation loads, which is the correct behavior for resources of type default but not for bucketized resources.

  • Bug fix to avoid creating excess inventory in models with large operation minimum sizes.

  • Bug fix for the inventory report when drilling down on the “Consumed by SO” row.
  • Bug fix for the demand report when drilling down on the “Net forecast” or “Orders” row.
  • Bug fix: The web service sometimes didn’t start at the end of a planning run because a previous web service instance can’t be stopped in some situations.

Distribution replenishment planning

  • Enhanced distribution solver algorithm to handle fairsharing in the presence of expiring demands.

Inventory planning (Enterprise & Cloud Editions)

  • The inventory planning screen screen can now be customized in the same way as all other screens.

  • The inventory planning calculations now supports operations with a quantity-per different from 1.

User interface

  • Various small styling improvements and usability enhancements.

Odoo connector

  • Bug fixes in the mapping of open and closed sales orders.

5.1.0 (2019/04/22)

Production planning

  • In the plan editor you can now temporarily disable the automatic resolution of constraints. This makes it faster and easier to make a series of changes to the plan without distractions.

  • Performance improvements for the bucketized resource solver.

Distribution replenishment planning

Forecasting (Enterprise & Cloud Editions)

  • The forecast editor screen now visualizes the past forecast. This allows a forecast-versus-actual comparison that is important for reviewing and measuring the forecast accuracy.

User interface

  • A new filter type is introduced for date fields. You can now easily filter records with a date within a specified time window from today.
    In earlier versions you had to explicitly change the date argument for the filter every day. Which was quite boring, error-prone and not very user friendly.
  • The number format in grid no longer has a fixed number of decimals, but flexibly adapts to the size and number of decimals in the number to be shown.

  • The login form now offers the option to remember me the login credentials. This avoids that a user has to login every time a browser session on frePPLe is started.
    The user session information is persisted in a cookie in your browser. The session cookie will expire after a period of inactivity (configurable with the setting SESSION_COOKIE_AGE), after which the user has to log in again.
    Security sensitive deployments should set this setting equal to 0, which forces users to log in for every browser session.
  • When logging in, the user names and email address are now evaluated case-insensitively.

5.0.2 (2019/05/15)

Production planning

  • Bug fix for infinite loop when setting the completed and closed status on manufacturing orders of routing operations.

5.0.1 (2019/03/25)

Production planning

  • Bug fix and improvements in the way that the completed and closed manufacturing order status is propagated to upstream materials.

5.0.0 (2019/03/16)

Production planning

  • The identifier of purchase orders, distribution orders and manufacturing orders, has been removed.
    The reference field is now the primary key, and a required input field.
    The required reference fields is an API-breaking change.
  • A new status “completed” is added on purchase orders, distribution orders and manufacturing orders. It models a status where the order has already completed, but the ERP hasn’t reflected this yet in its inventory status.
    When changing the status of a manufacturing order to completed, there is also logic to assure that sufficient upstream material is available. If required the status of feeding purchase orders, distribution orders and manufacturing orders is changed to completed.
  • The resource detail and inventory detail tables are now editable.
    This allows to import detailed information on allocated resources and consumed materials from the ERP system, and model the current work-in-progress in full detail.
    In earlier releases these tables only contained output generated by the planning algorithm. From this release onwards they also contain input information for manufacturing orders in the status approved and confirmed.
  • The default of the parameter plan.autoFenceOperations is changed from 0 to 999.
    By default, the planning algorithm now waits for any existing confirmed supply before proposing a new replenishment.
    The new default avoids unnecessary duplicate replenishments and results in more intuitive plans.
  • The search mode to choose among different alternate replenishments can now be controlled by the user.
    In previous releases this could only be controlled on operations of type ‘alternate’, and automatically generated alternates always used priority as the selection mode.
    From this release onwards the field ‘ mode’ can be used to specify the selection mode from among ‘priority’, ‘minimum cost’, ‘minimum penalty’ and ‘minimum cost + penalty’.
  • The item table gets some read-only fields which capture some key metrics: - number of late demands - quantity of late demands - value of late demands - number of unplanned demands - quantity of unplanned demands - value of unplanned demands

  • The resource table gets a read-only field to store the number of overloads on the resource.

  • The weight field for problems of type ‘late’ is now indicating the quantity being planned late. In earlier releases it represented the delivery delay.

  • Performance optimizations for various corner cases.

Forecasting (Enterprise & Cloud Editions)

  • Bug fix for the corner case where the manual enforced forecasting method isn’t applicable.

Odoo connector

  • Workcenters assigned manufacturing orders are now also imported.

  • Bug fix: Manufacturing orders in the state “ready to produce” were not being sent to frePPLe as work-in-progress.

4.5.0 (2019/01/25)

Production planning

  • The default allowed delivery delay of sales orders and forecasts is changed from indefinite to 5 years. This improves the performance of the algorithms in case there are unplannable orders.

  • A new resource type time buckets is introduced that represents capacity as the number of hours of availability per time bucket.

  • The capacity consumption from a bucketized resource now also has a constant component and considers the resource efficiency.

  • Addition of the field size maximum to the item supplier and item distribution tables.

  • More detailed modeling of work in progress.
    The parameters WIP.consume_material and WIP.consume_capacity control whether a confirmed manufacturing order consumes material and capacity.
  • More detailed modeling of in transit material.
    By leaving the origin location empty, no inventory will be consumed at the origin location. We assume the material has already left the origin location and is in transit.
    By leaving the destination location, the distribution order doesn’t produce any stock. This represents a material transfer outside of our supply chain.
  • Ability to use powerful regular expressions in the definition of setup matrices rules .

  • Bug fix: calculation of operation time for 0-duration operations was wrong in some situations.

  • Bug fix: incorrect operation duration when different resources in an aggregate pool resource have different working hours.

  • Bug fix: corrected corner cases where the solver got into an infinite loop.

User interface

  • Ability to cancel any running task on the execution screen. Until now only the plan generation could be canceled while it was running.

  • Improved performance and reduced memory footprint when downloading and exporting big reports.

  • Added field duration to the execution screen

  • Added tabs to see the manufacturing orders for a specific item, location or operation.

  • Update of the “in progress” fields of the inventory report. Are considered in progress for a given bucket all orders starting before the end date of that bucket and ending after the end date of that bucket.

Forecasting (Enterprise & Cloud Editions)

  • Improved algorithm to detect seasonal patterns.

  • Performance optimization when reading forecast data in memory.

Inventory planning (Enterprise & Cloud Editions)

  • Fix the distribution used to calculate the service level all along the horizon.


4.4.2 (2018/10/20)

Production planning

  • A new solver is introduced, specifically designed and tuned for distribution models.
    The default solver loops over all demands in order of priority and due date, and reserves material inventory and capacity along the supply path of that demand.
    The distribution solver first generates a unconstrained plan, and then solves all infeasibilities together and propagates the impact along the supply path. This solver distributes the shortage proportionally across all impacted demands. In distribution models the solver is also much faster than the default solver.
    See the documentation of the planning algorithm for more details.
    The new parameter ‘plan.solver’ selects which solver to use.
  • Performance optimization for models with post-operation times by avoiding ineffecient search loops.

  • The naming convention for distribution operations is changed from ‘Ship ITEM from ITEM @ SOURCE to ITEM @ DESTINATION’ to the simpler and shorter ‘Ship ITEM from SOURCE to DESTINATION’.

  • Bug fix for a specific corner case where material requirements for work in progress aren’t propagated at all.

  • New parameter plan.resourceiterationmax allows user control over the number of searches for a free capacity slot on a resource. Contributed by Mateusz Knapik.

Forecasting (Enterprise & Cloud Editions)

  • Performance optimization when uploading forecast override data.

User interface

  • Added field net duration to the resource detail report

  • Added fields total in progress, work in progress MO, on order PO, in transit DO to the inventory report

  • Bug fix: Deleting an object from the edit form in a scenario was incorrectly deleting the object in the production instead.

  • The import data files from folder and import a spreadsheet functionalities now ignores spaces, dashes and underscores in the recognition of the content type from the file or worksheet name.
    So far, only a worksheet called ‘sales order’ was recognized as containing sales order data. Now “sales-order”, “sales_order” and “salesorder” will also be recognized.

Openbravo connectors

  • Addition of the importDistributionOrders that read the distribution orders issue from Openbravo.

  • Export of approved distribution orders issue from frePPLe to OB.

  • Use of Fpp_InventoryByProduct entity that aggregates the onhand by warehouse (frePPLe connectors are not looking at the storage bins anymore). The Fpp_InventoryByProduct entity handles the onhand date change meaning that it can now be used in delta mode.

  • Use of the Fpp_ConsumptionHistoryDetail entity that aggregates the demand for a given item-location at bucket level. That makes the connectors read much less records. The time bucket (week, month…) is configurable in OB.

  • Handling of product name change. FrePPLe connectors rely now on the object id rather than on the product name.

Third party components

  • The Ubuntu binaries will be compiled on Ubuntu 18 LTS from now onwards.
    Compiling for Ubuntu 16 LTS remains fully supported, but we recommend to upgrade Ubuntu.

4.4.1 (2018/09/10)

Production planning

  • Bug fix in the calculation of the lateness/earliness of a manufacturing order, purchase order or distribution order. The calculation was incorrectly based on the start date rather the end date of the operation in question.

  • A new field “feasible” is now added to the inventory detail report, resource detail report, operation detail report, purchase order screen, distribution order screen and manufacturing order screen. The read-only boolean field indicates whether the order is violating any material, lead time or capacity constraints. This is useful in interpreting the results of an unconstrained plan.

  • The criterion for before current problems is updated for confirmed orders. The change should result in less problems that are also more meaningful to the users.
    For orders in the status approved or proposed a before-current problem is created when the start date is in the past.
    For orders in the status confirmed the criterion the problem is now created when the end date is in the past, i.e. the order is overdue and should have been finished by now.
  • The natural key in the suboperation table is changed from operation + suboperation + operation to operation + suboperation + effective start date.

User interface

  • Ability to make the data anonymous and obfuscated when exporting an Excel workbook. The names of all entities are obfuscated in the resulting spreadsheet. You will still need to carefully review the output to clean out any remaining sensitive data.

  • Ability to customize the names for the time buckets used in the reports. The time bucket generation command now has extra attributes for setting the name of the daily, weekly, monthly, quarterly and yearly buckets.

Third party components

  • Support for Ubuntu 18 LTS.
    Ubuntu 16 LTS remains fully supported.
  • Windows installer now uses Python 3.6.
    Python 3.5 remains fully supported.

4.4.0 (2018/08/02)

The Windows installer of this version isn’t working correctly due to some packaging mistakes.

Production planning

  • Resources can now have an efficiency percentage. This allows the resource to perform an operation faster or slower than the standard operation time.

  • The resource report now displays the available capacity as a line, replacing the green bar in previous releases to show the free capacity.

  • Performance optimization of the solver algorithm. The solver now passes down the minimum shipment information from the demand to all upstream entities, which allows the algorithm to perform a more efficient search.
    In complex models, the resulting plan may be slightly different - for the better.
  • Resource build-ahead penalty calculation now also working for 0-cost resources.

  • New rows to the purchase order summary and distribution order summary reports to show the quantity on order or in transit.

  • New rows to the inventory report to show 1) days of cover of the starting inventory, 2) the safety stock and 3) more details on the supply and consumption type.

  • The minimum field on the buffer defines a safety stock. In previous releases this safety stock was effective from the horizon start in 1971. Now this safety stock is effective from the current date of the plan onwards.
    This change will give a different result for safety stock replenishments in an unconstrained plan. In a lead time constrained plan the results will be identical.
  • Remove buffers of type procurement from the planning engine code. This buffer type was already long deprecated and hasn’t been accessible to users for quite some time now.

  • Simpler and more generic modeling of fixed material consumption and production by operations. The types ‘fixed_end’ and ‘fixed_start’ on operation material records are replaced with a field ‘fixed_quantity’.

  • Renamed the “demand plan detail” report to delivery orders, and enable uploading confirmed or approved shipments to customers as input data.

  • When expanding a confirmed manufacturing order on a routing operation, the automatic creation of the child manufacturing orders for each routing step now also considers the post-operation time.
    Note that such child manufacturing orders are only generated if they aren’t provided in the input data yet.

Inventory planning

  • The safety stock and ROQ minimum/maximum period of cover are now expressed in days. It was before entered as the number of period buckets, the period bucket being the value of the inventoryplanning.calendar parameter.

Forecasting (Enterprise & Cloud Editions)

  • Forecast parameters forecast.Net_NetEarly and forecast.Net_NetLate are now expressed in days (previously they were expressed in seconds).

User interface

  • Bug fix when copying a what-if scenario into another what-if scenario.

  • Bug fix when uploading data files using the Microsoft Edge browser.


  • Operations of types alternate, routing and split should not load any resources, or consume or produce materials. The suboperations should model all material and capacity usage instead.
    Note that in the majority of models, the explicit modeling of alternate operations is no longer needed. The planning engine detects situations where an item-location can be replenished in multiple ways and automatically generates an alternate operation.

4.3.4 (2018/06/08)

Forecasting (Enterprise & Cloud Editions)

  • The forecast error used in frePPLe is SMAPE. This has a counter intuitive property that provides values in the range from 0% to 200%.
    We redefine the SMAPE metric now to half the previous value to give a more intuitive range between 0% and 100%. See for the alternate definitions of SMAPE.
  • Forecast report is now also showing the cumumlative backlog of the orders and forecast, i.e. the demand that is planned later than its due date.

Production planning

  • The plan editor now automatically initializes the Gantt chart rows and the color codes for the item and operation category and subcategory values.
    Personalized configurations are preserved, and the new logic is only used to initialize the screen with new values.
  • Added new reports purchase order summary and distribution order summary to summarize the purchase orders or distribution orders per time bucket.

  • For consistency with the previous change, the operation report is renamed to manufacturing order summary.


  • Extended the exporttofolder command to export additional plan results into CSV or Excel files.

  • The data type of all numeric fields is changed from 15 digits with 6 decimals to 20 digits with 8 decimals. This allows a larger range of numbers to be accurately represented in the database.

  • The remote web commands API now supports user authentication with JSON Web Tokens to launch tasks, download data and upload data.

4.3.3 (2018/05/03)

Forecasting (Enterprise & Cloud Editions)

  • Bug fix: In some bucket definitions, the forecast consumption was not consuming from later buckets.

Inventory planning (Enterprise & Cloud Editions)

  • Ability to control the priority of a business rule

  • Bug fix: simulation capability in the Inventory Planning report not working when there are multiple forecasts for a single item+location forecasts.

Production planning

  • Solver performance optimization where there are availability calendars. The plan generation time can be reduced with a factor 3 to 4 in some models.

  • Solver enhancements for planning with setup matrices.

  • Solver optimization to handle infinite buffers more efficiently.

  • Bug fix: Compilation error with Python 3.6

Odoo connector

  • Correction to maintain a single root hierarchy.

Openbravo integration (Enterprise & Cloud Editions)

  • Bug fix: sales order mapping incorrectly used the document status.

  • Log file of the connector now accessible in the user interface

4.3.2 (2018/03/19)

Forecasting (Enterprise & Cloud Editions)

  • Internal refactoring of the forecastplan table.

Inventory planning (Enterprise & Cloud Editions)

  • When defining the ROQ period of cover for an item with the global_purchase flag set to true, the forecast is now based on the total demand for the item (rather than only the local demand).
    Note that the safety stock calculation remains based on the local demand for the item.

Production planning

  • New operationmaterial policy ‘transfer_batch’ which allows material production or consumption in a number of batches of fixed size at various moments during the total duration of the operationplan.
    A new field operationmaterial.transferbatch is introduced.
  • A new field ‘end items’ is added to the manufacturing order, purchase order and distribution orders screens. It is similar to the ‘demands’ which shows the demands.

  • Solver enhancements for planning with setup matrices.


  • Bug fix: backward compatibility after command renaming in 4.3.

Third party components

  • Upgrade to PostgreSQL 10. PostgreSQL 9.5 and 9.6 remain fully supported.

4.3.1 (2018/02/17)

Production planning

  • Solver engine improvements to reduce resource setup changeovers (Enterprise & Cloud Editions)

  • New step to make the initial work-in-progress data feasible. (Enterprise & Cloud Editions) Constraints are resolved by delaying approved manufacturing orders to feasible dates. Confirmed manufacturing orders aren’t changed during the new pre-planning step.

Forecasting (Enterprise & Cloud Editions)

  • Ability to display only 2 dimensions in the forecast editor screen.

  • Performance improvements in the export of results.

  • Improved & more intuitive values when entering forecast overrides at different levels in the hierarchies.

Bug fixes

  • The autofence now also considers approved supply, and not only confirmed supply.

  • Excel files with some non-standard internal structure are now also recognized.

  • Work-in-progress operationplans with quantity 0 are no longer rejected.


  • Command frepple_run is renamed to runplan.

  • Command frepple_runserver is renamed to runwebserver.

  • Command frepple_copy is renamed to scenario_copy.

  • Command frepple_importfromfolder is renamed to importfromfolder.

  • Command frepple_exporttofolder is renamed to exportfromfolder.

  • Command frepple_flush is renamed to empty.

  • Command frepple_backup is renamed to backup.

  • Command frepple_restore is renamed to restore.

  • Command frepple_simulation is renamed to simulation.

  • Command frepple_createbuckets is renamed to createbuckets.

  • Command frepple_createmodel is renamed to createmodel.

  • Command frepple_loadxml is renamed to loadxml.

  • Command frepple_runworker is renamed to runworker.