MCMMCM DocsEngineering (Internal)
HLDModulesFinOps
v1.2 is unreleased — see v1.1 for the current stable release.

Budget

MCM-managed budget configuration, evaluation, alerting, and stored budget fields.

Budget

Budgets are MCM-managed spend controls. MCM does not create or depend on provider-native AWS Budgets or Azure Budgets. Instead, budget definitions are stored in MCM, evaluated against normalized FinOps cost and forecast data, and exposed through the FinOps API for dashboards, account views, and alert workflows.

For canonical provider, account, resource type, and category terminology, see the Provider and Resource Reference.

Design Goals

GoalDesign Detail
Centralized spend governanceStore budget definitions in MCM so the same model works across AWS and Azure.
Provider-independent evaluationEvaluate budgets from normalized cost and forecast records instead of provider-native budget resources.
Flexible filteringSupport budget scopes from global spend down to provider, account, and tag-level spend.
Repeatable alertingCalculate threshold state from actual and forecast spend after cost and forecast data refresh.
Auditable posturePersist evaluation results so budget state can be inspected without recalculating every request.

Data Sources

Budget evaluation uses data already collected by the Cost and Forecast pipelines.

SourceUsed ForReference
Normalized cost recordsActual spend for the current budget period.Cost
Forecast recordsProjected spend for the budget period or next available forecast window.Forecast
Provider account metadataAccount names, provider names, and account identifiers.Provider and Resource Reference
Resource metadata and tagsCustom tag filters used for tagged budget scopes.Provider and Resource Reference

Budget Configuration

A budget definition describes what spend should be tracked, where the budget applies, the period being evaluated, the allowed amount, and the alert thresholds.

Configuration AreaDetail
IdentityName, description, and stable budget ID.
PeriodDaily, weekly, monthly, quarterly, annual, or custom date range.
RecurrenceRecurring budgets reset every period; one-time budgets apply only to the configured start and end dates.
ScopeDefines the subset of cost and forecast data included in evaluation.
AmountBudget cap in the configured currency.
ThresholdsOne or more percentage thresholds evaluated against actual and forecast spend.
StatusCurrent budget posture derived from the latest evaluation result.

Supported Budget Scopes

ScopeRequired SelectorEvaluation Filter
GlobalNoneAll supported FinOps cost records.
ProviderProviderCost records for one provider, such as AWS or Azure.
AccountProvider and account IDCost records for one cloud account or Azure subscription.
Custom TagTag key and optional tag valueCost records whose provider tag set matches the configured selector.

Scopes are resolved into cost-query filters before evaluation. Provider and account names must use the canonical values from the Provider and Resource Reference.

Period Resolution

Period TypeWindow Calculation
DailyStart and end of the current day.
WeeklyStart and end of the current week.
MonthlyFirst day through last day of the current month.
QuarterlyFirst day through last day of the current quarter.
AnnualFirst day through last day of the current year.
Custom RangeConfigured start date through configured end date.

For recurring budgets, MCM derives the active window from the current date and the configured period type. For one-time budgets, MCM uses the stored start and end dates and stops evaluation after the end date.

Evaluation Schedule

TriggerPurpose
After daily cost collectionRefresh actual spend and threshold posture after new cost records are ingested.
After monthly reconciliationRecalculate budgets when finalized billing data replaces provisional cost data.
After forecast refreshUpdate forecast posture and Might Exceed status from the latest forecast rows.
Manual evaluationRecalculate a budget or budget group after configuration changes or operational troubleshooting.

Budget evaluation should be idempotent for the same budget, period window, and source data version. A rerun overwrites the latest evaluation result for that active period instead of creating duplicate current-state rows.

Evaluation Flow

  1. Load active budget definitions.
  2. Resolve each budget period into a concrete start and end date.
  3. Resolve each budget scope into provider, account, or tag filters.
  4. Query normalized cost records that match the period and scope.
  5. Sum actual spend in the reporting currency.
  6. Query matching forecast rows when forecast data is available for the same scope.
  7. Calculate utilization percentage from actual spend and budget amount.
  8. Calculate forecast utilization percentage from forecast spend and budget amount.
  9. Evaluate thresholds and derive budget status.
  10. Store the latest evaluation result, threshold state, and calculated timestamps.

Threshold And Alert Logic

Thresholds are stored as percentages of the budget amount. They are early-warning levels, not separate budgets. MCM evaluates both actual spend and forecast spend so the budget can show a simple status before the spend actually crosses the configured amount.

StatusCondition
Under BudgetActual spend and forecast spend are below the configured warning threshold.
Might ExceedActual spend or forecast spend has crossed the configured warning threshold, but actual spend is still within the budget amount.
Over BudgetActual spend is greater than the configured budget amount.

For example, if a monthly budget is 1000 USD and the threshold is 80%, MCM calculates the threshold amount as 800 USD.

Actual SpendForecast SpendStatusReason
650 USD740 USDUnder BudgetBoth actual and forecast spend are below 800 USD.
720 USD900 USDMight ExceedForecast spend is above the 800 USD threshold.
850 USD920 USDMight ExceedActual spend is above the 800 USD threshold but still below the 1000 USD budget.
1025 USD1100 USDOver BudgetActual spend is already greater than the budget amount.

If multiple thresholds are configured, MCM uses the highest threshold crossed by actual or forecast spend. Over Budget always takes precedence because it is based on actual spend exceeding the budget amount.

Stored Budget Definition Fields

FieldTypeDescriptionRequired Behavior
Budget IDstringStable budget identifier.Stored for every budget.
NamestringBudget display name.Stored for every budget.
DescriptionstringOptional business context.Stored when provided.
PeriodenumDaily, weekly, monthly, quarterly, annual, or custom.Stored for every budget.
Start DatedateConfigured start date or first active period date.Stored for every budget.
End DatedateConfigured end date for one-time or custom budgets.Stored when applicable.
RecurrenceenumRecurring or one-time.Stored for every budget.
Scope TypeenumGlobal, provider, account, or custom tag.Stored for every budget.
ProviderstringProvider selector for scoped budgets.Required for provider-specific scopes.
Account IDstringAccount selector for account-scoped budgets.Required for account scope.
Account NamestringDisplay name for the selected account.Stored when available.
Tag KeystringCustom tag key selector.Required for custom tag scope.
Tag ValuestringCustom tag value selector.Optional for custom tag scope.
AmountnumberBudget cap.Stored for every budget.
CurrencystringBudget currency such as USD.Stored for every budget.
ThresholdslistConfigured warning percentages such as 80% or 90%.Stored for every budget.
Is ActivebooleanWhether the budget should be evaluated.Stored for every budget.
Created AtdatetimeTimestamp when the budget was created.Stored for every budget.
Updated AtdatetimeTimestamp when the budget definition last changed.Updated on modification.

Stored Budget Evaluation Fields

FieldTypeDescriptionRequired Behavior
Evaluation IDstringStable identifier for the stored evaluation result.Stored for every evaluation.
Budget IDstringReference to the budget definition.Stored for every evaluation.
Period StartdateStart date used for this evaluation.Stored for every evaluation.
Period EnddateEnd date used for this evaluation.Stored for every evaluation.
Actual CostnumberActual spend from normalized cost records.Stored for every evaluation.
Forecast CostnumberForecasted spend for the budget scope.Stored when forecast data is available.
CurrencystringReporting currency for actual and forecast values.Stored for every evaluation.
Budget AmountnumberBudget cap copied from the definition at evaluation time.Stored for every evaluation.
Remaining AmountnumberBudget amount minus actual cost.Stored for every evaluation.
Utilization PercentnumberActual cost divided by budget amount.Stored for every evaluation.
Forecast Utilization PercentnumberForecast cost divided by budget amount.Stored when forecast data is available.
Current ThresholdstringHighest threshold crossed by actual or forecast spend.Stored when a threshold is crossed.
Alert StatusenumUnder Budget, Might Exceed, or Over Budget.Stored for every evaluation.
Alert TriggeredbooleanWhether this evaluation should create or update an alert.Stored for every evaluation.
Evaluated AtdatetimeTimestamp when the evaluation completed.Stored for every evaluation.
Source Cost WindowstringCost data window used for the calculation.Stored for auditability.
Source Forecast WindowstringForecast data window used for the calculation.Stored when forecast data is available.

Failure Scenarios

ScenarioAction
Budget definition is incompleteMark evaluation failed and store validation error details.
Scope selector does not match any recordsStore actual cost as zero and keep the budget evaluable.
Cost data is not availableStore evaluation as failed or pending, depending on whether collection is still in progress.
Forecast data is not availableEvaluate actual spend and leave forecast fields empty.
Currency conversion is unavailableEvaluate records already in the budget currency; otherwise store an error for unsupported conversion.
Threshold configuration is invalidSkip alert evaluation for that budget and store validation error details.

API Output

Budget API responses should be assembled from the stored budget definition and latest evaluation result.

Output AreaSource
Budget identityBudget definition fields.
Scope and periodBudget definition plus resolved active period.
Actual spendLatest budget evaluation result.
Forecast spendLatest budget evaluation result.
Utilization and remaining amountLatest budget evaluation result.
Alert status and threshold stateLatest budget evaluation result.
Spending historyAggregated normalized cost records for the active period.

On this page