[object Object]

A regional sales director asks for a quarterly revenue goal dashboard. You spin up the Goals area, create a metric, and the rollup shows a third of expected revenue. The fix is not always obvious because Goals has three layers (metric, rollup query, goal record) that each silently filter the math, and a misconfiguration in any one of them quietly hides data.

How Goal Math Actually Works

A Goal Metric defines what to count, the unit, and the source field. A Rollup Query is a FetchXML filter on the source table that decides which records contribute. A Goal record ties the metric and rollup query to a target value, an owner, and a time period. The Calculate Goal job runs the math and stores the result on the goal record.

If your metric points at the wrong field, every goal that uses it returns wrong numbers. If your rollup query forgets a state filter, closed and open records both count. If your goal period does not align with your fiscal config, the rollup picks up the wrong window.

A Working Revenue Metric

For a Sales revenue goal, the metric should target the actualvalue column on opportunity, with rollup type Amount and Currency unit. The rollup query filters to closed-won opportunities in the period.

<fetch>
  <entity name="opportunity">
    <attribute name="actualvalue" />
    <filter>
      <condition attribute="statecode" operator="eq" value="1" />
      <condition attribute="statuscode" operator="eq" value="3" />
    </filter>
  </entity>
</fetch>

The state and status combo are non-negotiable. Statecode 1 is closed, statuscode 3 is won. Forgetting either inflates the rollup with lost or open deals.

Period Alignment with Fiscal Year

Goals respect the fiscal year configuration in the org. If your business runs February to January but the org default is calendar, every goal period created from the visual date pickers will land on calendar quarters. Set the fiscal year before you create the first goal, and confirm the FiscalCalendar table reflects your business calendar.

Settings, Business Management, Fiscal Year Settings
Start Date: 2026-02-01
Period Template: Quarterly
Display Code: Q1, Q2, Q3, Q4

Changing fiscal config later does not retroactively fix existing goals. They remain on the calendar they were born with.

Rollup Cadence and Performance

The Calculate Rollup Field job runs goals on a schedule, default 24 hours. For a daily standup that needs current numbers, either trigger the calculation on demand from a button using the RecalculateAction, or shorten the schedule. Going below an hour at scale strains the async server and rarely improves the user experience meaningfully.

async function recalcGoal(goalId) {
  await fetch(`/api/data/v9.2/RecalculateAction`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ Target: { "@odata.type": "Microsoft.Dynamics.CRM.goal", goalid: goalId } })
  });
}

Parent and Child Goal Hierarchies

Goals nest. A regional goal aggregates territory goals, which aggregate rep goals. The child goal Actual contributes to the parent if the rollup hierarchy is set up correctly. The trap is that the parent only rolls up child goals it owns through the parent goal lookup, not goals at the same level. Map the hierarchy explicitly during goal creation and test by changing one child actual and watching the parent recalculate.

What Not to Use Goals For

Goals are not a forecasting tool. They show actuals against a fixed target. They do not project from pipeline, do not weight by stage probability, and do not handle adjustments. For projection, use Forecasts. For attainment tracking against a number, use Goals. Mixing the two confuses the leadership review.

Reporting Beyond the Built-In Dashboard

The default Goals dashboard is functional but ugly. Pipe goal data into Power BI through the Dataverse connector, model the actual versus target as a measure, and build the leadership view there. Refresh the dataset hourly to align with the calculation cadence.

What to do this week

Audit your existing goals for state and status filters, confirm the fiscal year matches your business calendar, and trigger one manual recalculation per goal to flush stale numbers. Then publish a single Power BI page that replaces the built-in dashboard for your leadership review.

[object Object]
Share