Before we are talking more about the application side of things, let’s highlight where demand planning fits in process wise.
à In the context of the whole supply chain where we design new products, plan, procure raw materials, manufacture, store and ship as well a sale and handle back end operations, demand planning the demand planning feature belongs in the planning stage.
& What does demand planning mean?
•Demand planning requires analyzing current sales, market trends, historical sales and seasonality data to optimize your business’s ability to meet customer demand in the most efficient way possible.
•Demand forecasting is part of the larger demand planning process and analyzes internal and external data to predict sales.
•Typically, forecasts cover the upcoming 18 to 24 months, but the forecast period can vary by product and industry.
•Companies may adjust those predictions frequently as they review the latest data and changes to market conditions.
•The demand forecast becomes the foundation of the overall demand planning process as the business figures out how it can fulfill expected sales.
•Demand forecasters attempt to do just that by using predictive analysis techniques to spin data about past and present sales into predictions of what customers will want in the future.
•Short, Demand planning is a cross-functional process that helps businesses meet customer demand for products while minimizing excess inventory and avoiding supply chain disruptions.
•Demand planning should be a continuous process that’s ingrained in your business.
•Fortunately, technology solution such as D365SCM Demand Planning have made accomplishing this possible, not to mention easier.
& Why is planning so important?
•Inaccurate forecasts and demand plans pose significant risks, potentially resulting in lost revenue and inefficiencies across the supply chain.
•However, when forecasts are infused with intelligence and supported by the right technology, they pave the way for more precise and effective demand plans.
•This is where D365 SCM Demand Planning comes into play as it can directly translate into tangible benefits, such as improved revenue streams, fewer supply chain disruptions and emergency measures, and a reduction in excess inventory on the one hand but also a reduction in stockouts on the other hand. .
•Effective demand planning delivers both profit and customer satisfaction by helping businesses strike the right balance between sufficient inventory levels and customer demand.
& Dynamics 365 SCM Demand Planning is the answer from Microsoft here.
The below shows an end to end process for Demand planning with the new demand planning feature for D365FSCM.
In summary the demand planning process in D365 SCM Demand plannings is as follows:
•First we import data from one or many data sources via import templates. For example we have historical data from our products, sales, warehouses, etc. that is in our system (here FnO) – the data could also reside in Azure data lake or other sources. Short, you don’t need to be a FnO customer to be benefiting from the demand planning feature/app – the historical data can sit somewhere else – I want to highlight this.
•The historical data is now in your D365 Demand planning and will be used as your baseline for the forecast. But, all the data is still to some extent unstructured at this point – via transformation templates we can get the data “in order” and in time series data. While doing so, you can also remove any outliers and smooth/complete incomplete data.
•After doing so, you can run the forecast profile, what creates based on your baseline a forecast.
•This forecast is now ready to be reviewed and you can collaborate with different departments on it, comment, tag, adjust values etc. you can also overlay different forecasts and run what if analysis etc. A lot of the application is focused to make this process much easier – what was a bit clumsy in the past if you were working with D365FSCM Master planning demand planning.
•After everyone is in agreement, the demand forecast can then be exported and used as net requirements in D365FSCM. A user can be now run MRP and include such net requirements – if there is demand to fulfill, D365FSCM is now creating planned orders that you can then firm. Now you can execute on those and fulfill the demand and you are hopefully better prepared.
•And exactly this process you can run next week/month/year – deepening how often your organization is running demand planning. It is now a continuous cycle.
See below an end to end demo:
Import profile:
Ingest data from FO or other data sources such as Azure Datalake, csv files etc. Short, its system agnostic – you don’t need to be an FO customer to use this app.
OTB power query providers csv, excel, azure data lake and may more such as the above
OTB FO connector
Important factor is here, if you have different FO instances around the world you can connect such to one planning app – and consolidated run demand planning in one view and then export again to separate instances.
Data to be imported are historical sales, products, warehouses, sites, Legal entity and any data entity (custom) at the minimum usually.
See below the entities that were imported.
See below the succesful runs and the data imported.
2. Transformation profile:
After import was successful – what is the next step – it's the transformation. But, what does this mean? It means Convert raw data (historical data such as sales) into time series (see it in the future)
Herefore, we need to specify time buckets – we can plan by daily, weekly or monthly (predefined buckets)
e.g. for week that means we had history with multiple shipments/sales in one week, such are consolidated by week now.
We can also combine transactions tables (such as historical sales/demand) with master data (products/customers etc.) as part of the transformation process.
Why? Usually on the historical sales level we have the dimensions at the lowest level such as product id and customer ID.
So, if we would like to do our analysis on the forecast, we usually want to have aggregate on levels like product group, family, customer group, customer country etc., LE and usually such columns are not part of the historical demand table.
Because of that, it is now possible to combine or connect a historical table with multiple master tables for different dimensions. E.g. in the product table, we can define the product hierarchy assignment, product group and family
We can also define the precision e.g. by decimals 0.01 or multiplied by 1000s so we see in 100s buckets.
Go to Operations/Transformations on left hand side and click new to create a new transformation. This is a onetime setup that I am repeatably executing afterwards. Select name (e.g. Historical demand weekly bucket) a demand category, and e.g. weekly as time bucket and the precision by 1 here.
In the next step I can select which data columns I should use from my historical demand table – you see the main tables and the related tables (established via relationship prior). I select the actual delivery date field as timestamp, the actual Qty as a measure and all dimensions I would like to be included. E.g. product ID, product family, customer id, etc. I confirm when I am done making the selection.
I review and confirm that all looks good.
This now created a time series transformation profile that I can execute under Operations/Transformation on the left hand side. Any adjustment I want to make prior executing I can do here to when selecting the time series here and under transformation tab press edit.
Under jobs you can see the past runs transformation has been ran. (all failed runs are showed – so you can troubleshoot - it will also show you in the job details the error message what helps for troubleshooting too)
I run the transformation profile.
See below the output.
3. Forecast profile
After we have transformed the data into Time series, we still need to create the actual forecasts. We have the baseline data ready now and now we just need to find which forecast model you want to apply.OTB there are 3 different forecast models – ARIMA, ETS and Prophet – as well as Best fit and custom Azure ML. Best fit is the combination of the first 3 that is the best fit – it will run through those 3 and it wil find for each dimension combination (so to the lowest level that you are forecasting) – which of the top 3 is best fitting – and best fit means lowes MAPE – Mean Absolut percentage error.
Also if you are using custom Azure ML already (e.g. you already invested in such over the last years), then you can just keep them and use such. Short, it's backwards compatible that way.
If you are new to demand planning I would advise you to choose Best Fit initially to see what model is most applicable to your indstry and datasets. But, let me give you a short description about the 3 OTB models that D365 Demand Planning comes with in case you want to select one specifially.
ETS (exponential smoothing):
•The ETS algorithm is especially useful for datasets with seasonality and other prior assumptions about the data.
•ETS computes a weighted average over all observations in the input time series dataset as its prediction. And The weights are exponentially decreasing over time, rather than the constant weights in simple moving average methods.
•Short, often if there is a trend and/or seasonality, you would go for exponential smoothing methods (ETS) because the ETS family explicitly model these components.
Prophet means Prophet is especially useful for datasets that:
•Contain an extended time period (months or years) of detailed historical observations (hourly, daily, or weekly)
•Have multiple strong seasonality's
•Include previously known important, but irregular, events
•Have missing data points or large outliers
•Have non-linear growth trends that are approaching a limit
Arima:
An autoregressive integrated moving average, or ARIMA, uses differencing to convert a non-stationary time series into a stationary one, and then predict future values from historical data. These models use “auto” correlations and moving averages over residual errors in the data to forecast future values.
Short, in case you see autocorrelation in the data, i.e. the past explains the present, go for the ARIMA methodology.
Short, generally seasonality and stationarity should be of consideration when choosing the model.
To create a new forecast profile navigate to Operations/Forecast profile and give it a name and a precision as well as category forecast.
You also specify a time bucket horizon (e.g. monthly and 12 buckets).
As a next step you select the input data source (from the baseline created prior via transformation)
Such is done via the "include data source" option, and you can also specify which of the different versions of each data source you want to include. Then specify which forecast model you would like to use (ETS, Prophet, Arima, Best Fit, custom)
See below the data source and version I included in this forecast profile.
I selected ARIMA for this example.
I reviewed and finished:
Note: If you select the forecast profile and go to input data – you can add filters to the data source(e.g. only use warehouse 13 input data). Under forecast model tab, we can by clicking + add steps to the forecast model such as handle outliers, custom, etc.). Here is also an option for Finance and operations (backwards compatibility) means if you have D365FSCM already set up for legacy demand forecasting parms and connections to ML models, you can use such here. The above is a onetime setup.
Now we can press run on action pane. Under jobs you see the runs with start and end time and the timer series associated. (this is the result that was generated)
The run completed succesfully.
You can navigate also to planning data/forecasts to review now the forecasted time series. See results below:
As a next step you would like to review the results and colborate with your coworkers from different departments on the forecast. Work with the forecast and worksheets:
I can add data to overlay multiple forecast results/data sets to run what-if anaylsis.
E.g. want to overlay past history with forecast:
Now, past history and forecast are in one graphic. I can save this as a worksheet for reuse. You can also see different lines for e.g. if you overlay 2 different forecast for what if analysis.
Worksheet is saved.
Let's assume we want to group differently or adjust the values below. So e.g. I adjust the order as well as in what aggregation the values should be grouped and dispalyed in the table.
After applying the changes, the results looks like this:
I can collaborate and comment on my forecasts in the worksheet.
See version history tracking below.
I can add grid formatting if needed.
E.g. I want to highlight values greated than 3 green and with a triangle as well as highlight values that are equal to 0 with red and an exclamation mark.
The result looks like this.
I can make adjustments in the table if I disagree with a vaue the forecast run spit out.
I can save adjustments at a higher aggretaion level and it distributes the added/deducted amount for forecast buckets: (here: 12 months)
Note: There are also calculation profiles. We won’t go over this in this demo but wanted to highlight the option.Calculation profile let you make/run mass adjustments - it makes sense to take advantage of such when you are alwyas doing similar adjustments for each forcast process. Options are date offset (shift out forecast results by e.g. X months), logical operator (e.g. validation if an absolute value exceeds a threshold e.g. all values above 100 – output is 1, everything below is 0 – can be used to remove outliers e.g.), Ratio in percentage (compare 2 time series to each other and see the deviation between such), monetary value, arithmetic operator (+-* or divide 2 different forecasted time series inputs), constant arithmetic operator, input and merge.
4. Export profile
Last but not least, we export the final demand forecast. Ee can e.g. export to csv (any time series can be exported on the grid to csv file – export will show aggregated level of what you see on the screen), we can export to D365FSCM (what we will do here now) or to any other available data source.
We specify a name and a description.
We reference the D365FSCM base URL to export to.
We select the forecast data series/data source to be exported.
We can also specify a version here again.
We map the columns from D365 Demand planning forecast to D365FSCM forecast sales import entity.
We specify a legal entity and the forecast model in D365FSCM we want to tie this to.
We review and confirm.
We can aso add a filter to e.g. ony export XYZ items.
Note: Before you trigger the export to D365FSCM make sure that you have the forecast model in D365FSCM set up. See below.
You also need to make sure your number sequences in D365FSCM are set up correctly otheriwse the export will fail. (set preallocation for the demand forecast sequence number need to be set to yes)
After we run the export profile now, we can see the succesful import in DMF in D365FSCM.
See the results below via "View staging data" option. You can see only the demand for the selected item (applied via export profile filter) was exported from D365 Demand Planning to D365FSCM.
Under released product/demand planning on action tab – see now demand planning lines.
I run master planning
The results look like this:
Firm planned order:
The Purchase order is created based on your demand plan/forecast.
To sum it up, see below some key benefits of D365SCM Demand Planning: