Feature Overview
History Forecast Template is a configuration feature within Flexible Forecast that allows planners to automatically generate forecast entries based on historical sales data. Instead of manually analysing past demand and entering forecast quantities, you define a template that specifies which historical period to look at, how many future periods to create a forecast for, and how to scale the result. When the template is run, the system reads actual sales and open orders from the defined look-back period, calculates an average, and writes new forecast entries into the target BC production forecast.
The template is date-formula driven, which means it can be set up once and run repeatedly without updating any dates manually. A template configured with rolling date formulas always calculates from the current work date, making it suitable for automated or scheduled execution. The feature integrates with Reverse Planning, where a History Forecast Template can be included as a step in a planning batch — so the forecast is refreshed automatically as part of a larger planning cycle.
The feature is designed for planners who want a statistical baseline forecast as a starting point for each planning cycle, while still retaining the ability to override individual quantities manually in the Flexible Forecast view afterwards.
| Setup page | History Forecast Templates |
| Triggered from | Flexible Forecast page (manual) or Reverse Planning batch (automated) |
| Period granularity | Day, Week, or Month |
| Forecast action options | Add, Replace, or Delete existing entries in the target period |
| Dimension support | Filters by Dimension 1/2 when reading history; writes new entries tagged with Dimension 1/2 |
| Location support | Filters by location when reading history; writes to a specific location |
| Integration | Reverse Planning (batch automation via publisher/subscriber event) |
Getting Started
- Open History Forecast Templates and create a new template with a unique Template Code.
- Set the Forecast Name — this is the BC production forecast that new entries will be written into.
- Set Forecast Period to Day, Week, or Month. This controls both the granularity of the historical read and the granularity of the entries created.
- Set Forecast Action to Replace if you want existing entries in the target period to be replaced, Add to supplement them, or Delete to remove them without creating new ones.
- Define the historical look-back window: set Calc. Forecast Value To DateFormula (e.g.
<-CM>for end of last month) and No. of Calculate Periods (e.g. 3 for three months back). The From Date is calculated automatically. - Define the future creation window: set Create Forecast From DateFormula (e.g.
<CM+1D>for start of next month) and No. of Create Periods (e.g. 3 for three months forward). The To Date is calculated automatically. - Optionally set Multiply Forecast by Factor to scale the historical average (e.g. 1.1 for a 10% growth assumption).
- Optionally set Calculate Location Filter to restrict which locations are included when reading history, and Create on Location to specify which location the new entries are written to.
- To run the template manually, open the Flexible Forecast page and click Calculate Forecast based on history, then select the template.
Related Features
Flexible Forecast provides the calculation engine that the History Forecast Template uses to read historical demand — the template initialises a Flexible Forecast view internally and reads the Sales Qty and Qty Sold columns for each item. The resulting forecast entries land in BC's standard production forecast and are immediately visible and editable in the Flexible Forecast view. Reverse Planning can trigger History Forecast Template calculations as part of a planning batch via a publisher/subscriber event, making fully automated forecast refreshes possible without manual intervention.
User Stories
US-01: Generate a forecast automatically from average historical sales
As a Demand Planner
I want to create a new forecast for the coming months based on the average of the last few months' actual sales
So that I have a statistically grounded starting point for each planning cycle without manual calculation
Setup:
- Open History Forecast Templates and create a new template.
- Set Forecast Name, Forecast Period (Month), and Forecast Action (Replace).
- Set Calc. Forecast Value To DateFormula to
<-CM>(end of last month) and No. of Calculate Periods to 3. The system calculates the From Date as three months before the To Date. - Set Create Forecast From DateFormula to
<CM+1D>(start of next month) and No. of Create Periods to 3. - Leave Multiply Forecast by Factor at 1.
- Open the Flexible Forecast page and click Calculate Forecast based on history. Select the template and run.
- The system reads the total Qty Sold + Sales Qty for each item over the three-month look-back window, divides by 3, and creates three monthly forecast entries per item starting next month.
Note: The historical read uses the Flexible Forecast calculation engine and respects the location and dimension filters set on the template.
US-02: Use rolling date formulas so the template never needs date updates
As a Planning Administrator
I want to configure the History Forecast Template with rolling date formulas so that the look-back and creation windows always recalculate from today's work date
So that the same template can be run every month without anyone changing dates manually
Setup:
- On the History Forecast Template, set Calc. Forecast Value To DateFormula to a formula relative to today (e.g.
<-CM>for end of last month,<-1D>for yesterday). - Set No. of Calculate Periods to the desired number of look-back periods.
- Set Create Forecast From DateFormula to a formula for when the new forecast should begin (e.g.
<CM+1D>for start of next month,<+1D>for tomorrow). - Set No. of Create Periods to the number of future periods to create.
- Each time the template is run, the system recalculates all four dates from the current work date before reading history or creating entries — no manual date maintenance is needed.
Note: When a date formula is set, the corresponding fixed date field is recalculated automatically whenever the formula or period count changes. The From Date for the calculate window and the To Date for the create window are always derived, never entered directly.
US-03: Scale the historical forecast by a growth or reduction factor
As a Demand Planner
I want to apply a multiplier to the historical average before creating forecast entries
So that I can account for expected growth, seasonality adjustments, or strategic targets without manually editing every entry afterwards
Setup:
- On the History Forecast Template, set Multiply Forecast by Factor to the desired multiplier (e.g. 1.15 for 15% growth, 0.9 for a 10% reduction).
- The factor is applied to the calculated historical average before the forecast entries are written. The minimum value is 1 — the factor cannot reduce the forecast below the historical average via this field.
- Run the template as normal.
Note: The factor applies uniformly to all items included in the run. For item-specific adjustments, edit individual forecast entries manually in the Flexible Forecast view after running the template.
US-04: Include open sales orders in the historical baseline (Add Sales Demand in Period)
As a Demand Planner
I want to include open sales order quantities alongside actual posted sales when calculating the historical average
So that items with strong order books but low posted sales history are not underforecast
Setup:
- On the History Forecast Template, enable Add Sales Demand in Period.
- With this enabled, the system uses the Sales Qty (open orders) and Qty Sold (posted) columns from the Flexible Forecast view for the Create period rather than averaging over the Calculate period.
- Each period's Sales Qty + Qty Sold is written directly as the forecast for that same period in the future creation window, rather than calculating an average and projecting it forward.
- Run the template. The resulting entries reflect the combined open and posted demand from the equivalent historical periods.
Note: This mode is best suited when the historical period's open orders are a reliable indicator of future demand (e.g. recurring framework agreements). When Add Sales Demand in Period is disabled, the system calculates a simple average over the look-back window and creates equal entries for each future period.
US-05: Restrict the historical read and new entries to a specific location and dimension
As a Demand Planner
I want to generate a forecast that only reads history from a specific location and writes new entries for a specific location and dimension combination
So that the history template produces a forecast that is correctly attributed to the right planning segment
Setup:
- On the History Forecast Template, set Calculate Location Filter to the location(s) to include when reading historical demand (e.g.
EAST|WEST). - Set Create on Location to the location code that new forecast entries should be written to.
- Optionally set Global Dimension 1 Filter to filter the historical read by dimension value.
- Set Create on Dimension 1 and/or Create on Dimension 2 to tag the new forecast entries with specific dimension values.
- Run the template. History is read only from the filtered locations and dimensions, and new entries are created tagged with the specified location and dimension values.
US-06: Create week-granularity forecast entries from history
As a Demand Planner
I want to generate weekly forecast entries rather than monthly ones
So that the planning system can work at weekly granularity for items with high demand volatility
Setup:
- On the History Forecast Template, set Forecast Period to Week.
- Set the calculate and create periods using week-aligned date formulas (e.g.
<-CW>for end of last week,<CW+1D>for start of next week). - Set No. of Calculate Periods and No. of Create Periods in weeks.
- Run the template. The system reads historical data in weekly buckets and creates one forecast entry per week per item for the creation window.
Note: When Forecast Period is set to Month, entries are placed on the first day of each month and span to the last day. For Week, entries are placed on Mondays and span to Sundays. The date boundaries are enforced automatically by the period calculation logic.
US-07: Run the History Forecast calculation automatically as part of a Reverse Planning batch
As a Planning Administrator
I want to include History Forecast Template execution as a step in a Reverse Planning batch so that the forecast is automatically refreshed before planning runs
So that planning always starts from an up-to-date forecast without requiring a planner to manually trigger the template
Setup:
- Reverse Planning must be installed.
- In the Reverse Planning batch configuration, add a Calculate History Forecast step and specify the History Forecast Template Code.
- When the batch runs, it fires the
CalculateHistoryForecastpublisher event. The Flexible Forecast app subscribes to this event and executes the template for all items matching the item view defined on the batch step. - The resulting forecast entries are available immediately for the planning steps that follow in the same batch.
Note: If the Flexible Forecast app is not enabled, the subscriber exits without action and the batch continues normally. This means the batch setup is safe to deploy even in environments where the app may be temporarily deactivated.
Field Reference
| Field | Where to find it | What it does | Default |
|---|---|---|---|
| Template Code | History Forecast Templates | Unique identifier for the template | — |
| Forecast Name | History Forecast Templates | The BC production forecast that new entries are written into | — |
| Forecast Period | History Forecast Templates | Granularity of the historical read and new entries: Day, Week, or Month | Month |
| Forecast Action | History Forecast Templates | What to do with existing entries in the target period: Add, Replace, or Delete | — |
| No. of Calculate Periods | History Forecast Templates | Number of periods to look back when calculating the historical value | 1 |
| Calc. Forecast Value To DateFormula | History Forecast Templates | Rolling date formula for the end of the historical look-back period (recalculated from work date on each run) | Blank |
| Calc. Forecast Value To Date | History Forecast Templates | Fixed end date of the historical look-back period (calculated automatically when formula or period count is set) | — |
| Calc. Forecast Value From Date | History Forecast Templates | Start of the historical look-back period (always calculated, never entered directly) | — |
| No. of Create Periods | History Forecast Templates | Number of future periods to create forecast entries for | 1 |
| Create Forecast From DateFormula | History Forecast Templates | Rolling date formula for the start of the new forecast period | Blank |
| Create Forecast From Date | History Forecast Templates | Start date of the forecast period to create (calculated automatically when formula or period count is set) | — |
| Create Forecast To Date | History Forecast Templates | End date of the forecast period to create (always calculated, never entered directly) | — |
| Multiply Forecast by Factor | History Forecast Templates | Scales the historical average by this factor before writing forecast entries | 1 |
| Add Sales Demand in Period | History Forecast Templates | Uses open sales orders + posted sales from the create period directly instead of averaging over the calculate period | Off |
| Global Dimension 1 Filter | History Forecast Templates | Filters the historical read to specific Dimension 1 values | Blank |
| Global Dimension 2 Filter | History Forecast Templates | Filters the historical read to specific Dimension 2 values | Blank |
| Calculate Location Filter | History Forecast Templates | Restricts which locations are included when reading historical demand | Blank (all locations) |
| Create on Location | History Forecast Templates | The location code written onto new forecast entries | Blank |
| Create on Dimension 1 | History Forecast Templates | Dimension 1 value tagged on new forecast entries | Blank |
| Create on Dimension 2 | History Forecast Templates | Dimension 2 value tagged on new forecast entries | Blank |
| Calculate User ID | History Forecast Templates | The BC user ID under whose context the historical read is executed (optional) | Blank |
| Create User ID | History Forecast Templates | The BC user ID under whose context new forecast entries are created (optional) | Blank |