Building a Budget
With actuals loaded and seeded into the Budget scenario, the next step is building the budget itself. This guide covers the main planning methodologies, the calculation techniques that power them, how users interact with budget data through Cube Views and dashboard components, and the workflow process that moves a budget from draft to approved.
Planning Methods
There is no single way to build a budget. Most implementations combine multiple approaches depending on the line item. Here are the four primary methods, each suited to different parts of the P&L.
| Method | How It Works | Accuracy | Effort | Typical Use |
|---|---|---|---|---|
| Driver-Based | Input drivers × rates = planned amount | High | Medium | Salary (FTE × AvgSalary), Revenue (Volume × Price) |
| Factor-Based | Apply growth/decline % to a base period | Medium | Low | Revenue trending, OpEx inflation adjustments |
| Zero-Based | Start from zero, justify every dollar | Highest | Highest | Discretionary OpEx, new initiatives |
| Transaction-Based | Detailed item lists aggregated to totals | Highest | Highest | Employee-level comp, capital projects |
Most FP&A teams use driver-based planning for the core P&L (revenue and salary), factor-based adjustments for less volatile lines, zero-based budgeting for discretionary spend, and transaction-based planning for specialty areas like headcount. OneStream supports all of these — the first three through cube-based calculations, and the fourth through relational tables combined with Business Rules.
Driver-Based Calculations
Driver-based planning is the workhorse of most budgets. Users enter assumptions (drivers) and the system multiplies them to produce planned amounts. The developer's job is writing the Finance Business Rule that performs the multiplication.
The simplest driver calculation uses
api.Data.Calculate:The
RemoveZeros function prevents writing zero-amount cells when one of the drivers is empty. Without it, the calculation would create cells with zero values for every dimensional intersection — consuming storage and cluttering reports.These calculations run per Data Unit — once per Entity × Scenario × Time × Consolidation combination. So for ABC's Budget scenario across 12 months and 3 entities, the rule fires 36 times, each time calculating the entire P&L for that specific entity-month.
Factor-Based Calculations
Factor-based planning applies a growth or decline percentage to a baseline — typically prior year actuals or a base scenario. It is useful for line items where detailed drivers are not practical.
This uses the Get/Set Data Buffer pattern — reading data into a buffer, manipulating it cell-by-cell, and writing it back. See Writing Calculations for a thorough comparison of
api.Data.Calculate vs. the Data Buffer approach.CustomCalculate
In a planning workflow, users need to see the results of their driver inputs immediately — not wait for a full consolidation cycle. This is where CustomCalculate comes in.
CustomCalculate is a Finance Business Rule function type that runs on demand, triggered by a Data Management step, a dashboard button, or a form save event. It is the standard mechanism for interactive "calculate my budget" operations.
Data Input: Cube Views and Dashboards
Budget calculations run on data that users enter through Cube Views — grid interfaces that read and write cube data directly.
A typical budget Cube View is configured as:
- Rows — Driver accounts (FTE, AvgSalary, SalesVolume, PricePerUnit) plus calculated results (SalaryExpense, Revenue)
- Columns — Time periods (2026M1 through 2026M12)
- POV — Entity, Scenario (Budget), Department (UD1), Product Line (UD2) selected by the user
- Editable cells — Driver accounts are input-enabled; calculated accounts are read-only
- Calculate button — Triggers the CustomCalculate rule so users see results immediately after entering drivers
Cube Views are configured in the OneStream application UI — they are not coded in Business Rules. However, Forms Event Handlers can add validation logic that fires when a user saves a Cube View:
- Validate that FTE is a whole number
- Check that growth rates are within acceptable bounds (e.g., not above 50%)
- Prevent saving if required driver fields are empty
The Budget Workflow
A budget is not just a set of numbers — it is a managed process. OneStream's Workflow engine provides structure for who can input data, when calculations run, and how approvals flow.
Each step corresponds to a Workflow state that controls data editability:
- Not Started / In Progress — Data is editable. Department managers enter drivers and run calculations.
- Submitted — Data is read-only for the submitter. Reviewers (typically FP&A or senior management) can see the submitted values.
- Approved — Data is locked. No further changes unless an administrator unlocks the entity.
- Locked — Hard lock. The budget is final for this entity and period.
Versioning is another common pattern: Budget_V1 (initial draft), Budget_V2 (revised after management review), Budget_Final (approved version). Each version is a separate Scenario member, and the workflow can copy data forward as versions progress.
ABC Example: Building the Annual Budget
ABC Manufacturing's budget is built department by department. Each department manager enters drivers for their area, and the system calculates the full P&L. Here is the complete calculation structure:
Revenue (by Product Line):
- ProductRevenue = SalesVolume × PricePerUnit (driver-based)
- ServiceRevenue = prior year ServiceRevenue × (1 + GrowthRate) (factor-based)
Cost of Goods Sold:
- COGSAmount = ProductRevenue × COGSPercent (factor-based)
Salaries (by Department):
- SalaryExpense = FTE × AvgSalary (driver-based)
- BenefitsExpense = SalaryExpense × BenefitsRate (factor-based)
Operating Expenses:
- OtherOpEx = manually entered by department (zero-based)
Roll-ups:
- Revenue = ProductRevenue + ServiceRevenue
- OpEx = SalaryExpense + BenefitsExpense + OtherOpEx
- GrossProfit = Revenue - COGSAmount
- NetIncome = GrossProfit - OpEx
The Finance Business Rule that implements this:
This single rule handles the entire P&L calculation for the Budget scenario. It runs per Data Unit — so for each entity and each month, it calculates the full P&L from the drivers entered by department managers.
Related Content
- Forecasts and Custom Planning Solutions — Extend the budget into rolling forecasts and build specialty planning modules
- Writing Calculations — Deep dive into Calculate, Data Buffers, CustomCalculate, and Member Formulas
- Data Integration and Transformation — How actuals are loaded and seeded as the budget baseline