What it does
Quota is a Simple column: a number that doesn't come from any Dynamics record, loaded per person per period from an Excel workbook the forecast configuration generates for you. Any other externally-sourced target — budget, stretch number, prior-year actuals — is loaded the same way.
Key facts
- You cannot load quota data until the forecast is activated. The Download simple data column template button lives in the Upload quota and other static data for this forecast section of the Activate step and only becomes available then.
- The workbook is named
{forecastname}_Simple.xlsxand contains two tabs per simple column: {Column} (Direct) and {Column} (Parent). Two simple columns produce four tabs regardless of how many periods you have. - The Direct tab lists leaf nodes — individual sellers or territories — and sets that person's own number. The Parent tab lists anyone with direct reports and sets the aggregate shown at their level.
- A manager's Direct value is their personal quota on their own deals. Their Parent value is the team number. They are independent, and getting these the wrong way round is the most common quota load error.
- Each tab carries a Record Id column. Changing or reordering those values produces a forecast that displays wrong data without erroring.
- All amounts must be in the organisation's base currency. The workbook carries no currency indicator and values are taken literally.
- Changes to simple columns can take up to two hours to appear in the grid.
msdyn_ForecastApiis the supported custom action for loading the same data programmatically — that is the route for an annual quota load from an HR or planning system.- Any rollup or calculated column can display Show progress compared to quota, which is what turns the quota number into a progress bar.
- Org limits that bite here: 50 forecast configurations, 6 active at a time. Auto-recalculation only runs on active forecasts, and continues for 30 days after the final period lapses before stopping.
- After upload, check that the forecast periods show Completed on the Forecast configuration home page.
When to use / skip
If the client sets individual targets, you need this — quota is what makes the forecast grid mean something rather than just being a pipeline report. Every sales organisation of any size sets targets, so in practice this is not optional.
The judgement call is where quota lives. Loading it via the Excel template is fine for an annual set-and-forget cycle at a few hundred sellers. It is painful if quotas are revised monthly, if there is a comp plan behind them, or if the client already runs a sales performance management tool. In those cases build the API load and treat the spreadsheet as a fallback.
Skip other simple columns unless there is a real external number. Consultants often add "last year actuals" as a simple column and then discover nobody maintains it after month three. If the number exists in Dynamics, make it a rollup or calculated column instead.
Configuration decisions
- One quota column, or several — annual target, revised target, stretch. Each one doubles the tabs in the workbook.
- Manual Excel upload versus a scheduled
msdyn_ForecastApiload, and who owns the process either way. - Whether managers carry a personal quota at all, which decides whether the Direct tab is populated for them or left empty.
- Which columns display progress against quota. Committed alone is a conservative read; Committed plus Best Case is the optimistic one, and sellers will behave accordingly.
- What happens at fiscal year rollover — a new forecast configuration for the new year, or extending periods on the existing one, remembering the six-active ceiling.
- How mid-year quota changes are handled: reload the whole workbook, or patch single rows via the API.
Gotchas
- Base currency only. At a multi-currency client whose sellers think in local currency, the quota load is where the conversion has to happen, in the spreadsheet, before upload. Nothing warns you.
- The Record Id column looks like clutter and someone will sort or filter the sheet and break it. Lock the column, or hand finance a pre-populated file rather than a blank one.
- Quota does not carry across forecast configurations. Rebuild the forecast and you reload the quotas.
- The two-hour lag on simple column changes catches people in UAT — testers upload, refresh, see nothing, and raise a defect.
- Auto-recalculation stops 30 days after the last period ends. A forecast left running past its final period quietly goes stale rather than erroring.
- New joiners are not in the workbook you downloaded last quarter. Re-download the template after any hierarchy change rather than editing the old file.
Consultant notes
- Have finance produce the quota numbers in their own format and do the mapping into the template yourself for the first cycle. Handing them a raw Record Id spreadsheet on day one does not go well.
- Show the client the Direct versus Parent distinction explicitly with a manager who also carries deals. It is not obvious and it is the thing they will get wrong unsupervised.
- Agree the annual quota-load process and its owner before go-live — this is a recurring operational task, not a build task, and it lands on someone.
- If quotas change more than quarterly, cost the API load into the build rather than promising a spreadsheet process will hold.
- Check the Completed status on every period after the first upload; a partial load looks identical to a successful one in the grid.
Worth another look if Microsoft ever adds an in-app quota editor, or if the two-hour propagation delay changes.