Scenario Types and Cube Dimensions
Scenario Types group scenarios that share common dimensions, properties, and calculations. They are the mechanism for horizontal extensibility — the ability to use different dimensions (or different levels of detail within a dimension) per financial process within a single cube. This guide covers Scenario Type configuration, scenario member properties, dimension assignment, and how horizontal extensibility works in practice.
Available Scenario Types
OneStream provides a fixed set of Scenario Types defined by the
ScenarioTypeId enum. Each scenario member is assigned to exactly one Scenario Type.| ScenarioTypeId | Value | Typical Use |
|---|---|---|
| Actual | 0 | Financial close, actual results |
| Budget | 1 | Annual budget cycle |
| Flash | 2 | Flash estimates, quick forecasts |
| Forecast | 3 | Rolling or periodic forecasts |
| FXModel | 4 | FX modeling and constant-currency analysis |
| History | 5 | Historical data loads |
| Model | 6 | Financial modeling |
| Plan | 7 | Strategic or long-range planning |
| Tax | 8 | Tax provision scenarios |
| Variance | 9 | Variance analysis |
| Administration | 10 | Administrative and control scenarios |
| Control | 11 | Process control scenarios |
| LongTerm | 12 | Long-term planning |
| Operational | 13 | Operational planning |
| Sustainability | 14 | ESG and sustainability reporting |
| Target | 15 | Target setting |
| ScenarioType1–ScenarioType8 | 101–108 | Custom types — use for any purpose |
Scenario Member Properties
Each scenario member has properties organized into several categories. These are configured at Application > Cube > Dimensions > Scenario Dimensions on the Member Properties tab.
Security
Security settings control access to the scenario member:
- ReadDataGroup — Users in this group can read data for this scenario
- ReadAndWriteDataGroup — Users in this group can read and write data for this scenario
Both can be set via the ellipsis button to select from available security groups.
Workflow Settings
| Property | Description |
|---|---|
| UseInWorkflow | Whether this scenario participates in the Workflow submit/approve cycle |
| WorkflowTrackingFrequency | Granularity of Workflow tracking: AllTimePeriods, Range, Year, HalfYear, Quarter, Month, Week |
| WorkflowTime | The specific time period for Workflow tracking |
| WorkflowStartTime | First period in the Workflow range |
| WorkflowEndTime | Last period in the Workflow range |
| NumberOfNoInputPeriodsPerWorkflowUnit | Number of periods at the start of each Workflow unit that are locked from input. Used for forecast scenarios where actuals are seeded into closed periods. |
Settings
| Property | Description |
|---|---|
| ScenarioType | The Scenario Type this member belongs to (Actual, Budget, Forecast, etc.) |
| InputFrequency (Vary By Year) | Data entry granularity: Monthly, Weekly, Quarterly, Yearly. Can vary by year. |
| DefaultView | Periodic or YTD — controls how calculations and member formulas process data |
| RetainNextPeriodDataUsingDefaultView | True = changing a prior period's value updates subsequent periods to stay consistent. False = subsequent periods retain their values. |
| InputViewForAdjustments | Periodic or YTD — how adjustment data is entered |
| UseInputViewForAdjInCalculations | Whether calculations use the adjustment input view |
| NoDataZeroViewForAdjustments | Periodic or YTD — how zero/no-data cells are interpreted for adjustments |
| NoDataZeroViewForNonAdjustments | Periodic or YTD — how zero/no-data cells are interpreted for non-adjustment data |
| ConsolidationView | Determines whether data can be input into the Aggregation consolidation member |
FX Rates
| Property | Description |
|---|---|
| UseCubeFXSettings | True = inherit the cube's default FX rate configuration. False = override with scenario-specific settings. |
| RateType for Revenues and Expenses | AverageRate, OpeningRate, ClosingRate, or HistoricalRate (only when UseCubeFXSettings = False) |
| RateType for Assets and Liabilities | AverageRate, OpeningRate, ClosingRate, or HistoricalRate (only when UseCubeFXSettings = False) |
| RuleType for Revenues and Expenses | Direct or Periodic (only when UseCubeFXSettings = False) |
| RuleType for Assets and Liabilities | Direct or Periodic (only when UseCubeFXSettings = False) |
| ConstantYearForFXRates | Translate using rates from a specific year instead of the current period's rates |
Setting UseCubeFXSettings = False is common for forecast and constant-currency scenarios where you need different translation behavior than the cube default. For example, translating a forecast at budget rates requires pointing to the budget year's rates via ConstantYearForFXRates or using a Business Rule with the StandardUsingBRsForFxRates translation algorithm.
Hybrid Source Data
Hybrid scenarios allow data to be copied or shared between scenarios for defined periods.
| Property | Description |
|---|---|
| DataBindingType | ShareDataFromSourceScenario (read-only share), CopyInputDataFromSourceScenario (physical copy of base-level data), or CopyInputDataFromBusinessRule (copy via a Finance Business Rule) |
| SourceScenario or BusinessRule | The source scenario member or Business Rule name |
Hybrid scenarios are commonly used to seed forecast scenarios with actual data for closed periods. For example, Forecast_Working can share data from Actual — when actuals are loaded and calculated, the forecast automatically reflects them without a separate copy step.
Custom Settings
Free-form key-value pairs that can be read by Business Rules at runtime. Useful for storing scenario-specific configuration without hardcoding values in rule code.
Scenario Naming Conventions
A consistent naming convention makes it easier to manage scenarios, especially when an application has many forecast cycles:
Guidelines:
- Reuse scenarios that do not span multiple years — set WorkflowTrackingFrequency to "All Time Periods" so the same scenario works for any year
- Create year-specific scenarios only for multi-year plans where year-over-year comparison matters
- Keep names short — they appear in POV strings, reports, and Cube Views
Cube Dimensions Tab
The Cube Dimensions tab is where you assign dimension instances to each Scenario Type. This is the configuration point for horizontal extensibility.
Key Rules
-
Entity and Scenario dimensions can only be assigned in the (Default) Scenario Type. They are grayed out at the Scenario Type level because they do not adhere to extensible dimensionality — all Scenario Types share the same Entity and Scenario dimensions.
-
All other dimension types (Account, Flow, UD1–UD8) can vary by Scenario Type. Each Scenario Type can point to a different dimension instance for these types.
-
When a new cube is created, the (Default) option is set to
RootXXXDimfor all dimension types. At the Scenario Type level, all non-Entity/Scenario dimensions default to(UseDefault).
Recommended Configuration
The recommended setup:
- In the (Default) Scenario Type: assign only Entity and Scenario dimension types. Leave all other dimension types at the Root dimension.
- For each active Scenario Type: assign specific dimensions for Account, Flow, and all UD types. Use the Root dimension for unused UD types (e.g.,
RootUD4Dimif UD4 is not needed for this Scenario Type). - For inactive Scenario Types: leave unchanged until they are ready to be activated.
Root Dimensions as Stubs
For dimension types not used by a particular Scenario Type, assign the Root dimension (e.g.,
RootUD5Dim). This is a single-member dimension that acts as a placeholder. It keeps the dimension slot active in the cube structure without adding any overhead, and it means you can add a real dimension later by simply pointing the Scenario Type to a new dimension instance. For the in-depth treatment of stub dimensions and the one-time Root-to-specific upgrade limitation, see Dimension Library and Inheritance. For member naming rules, see Dimension Naming and Assignment.Horizontal Extensibility
Horizontal extensibility lets different Scenario Types within the same cube use different dimensions. This is powerful because it means Actual, Budget, and Forecast can each have the right level of detail without inflating every scenario's Data Unit size.
How It Works
Each Scenario Type points to its own set of dimension instances. When data is queried or calculated for a scenario, the engine uses the dimensions assigned to that scenario's Scenario Type.
Example: Actual vs. Budget Dimensions
| Dimension Type | Actual | Budget | Forecast |
|---|---|---|---|
| Entity | LegalEntity | LegalEntity | LegalEntity |
| Scenario | Scenarios | Scenarios | Scenarios |
| Account | SummaryAccounts | DetailAccounts | DetailAccounts |
| Flow | Flows | Flows | Flows |
| UD1 | ProductFamily | ProductType | Product |
| UD2 | RootUD2Dim | CostCenter | RootUD2Dim |
| UD3 | RootUD3Dim | Department | Department |
| UD4–UD8 | RootUD4–8Dim | RootUD4–8Dim | RootUD4–8Dim |
In this example:
- Actual uses summary-level accounts and a single product dimension — just enough for consolidation and reporting
- Budget uses detailed accounts with driver accounts, cost centers, and departments — the granularity needed for bottom-up planning
- Forecast uses detailed accounts and departments but not cost centers — a middle ground between Actual and Budget
When Horizontal Extensibility Works
Horizontal extensibility works well when:
- All scenarios share the same entity structure — the organizational hierarchy is consistent across processes
- Different processes need different reporting detail — Actual needs less granularity than Budget
- You want to minimize Data Unit size per scenario — each Scenario Type only includes the dimensions it actually uses
Related Content
- Configuring Cubes — Cube properties, types, algorithms, FX rates, data access, and integration
- Entity Dimension Setup — Entity properties, relationships, intercompany, currencies, and adjustments
- Extensibility and Linked Cubes — Vertical extensibility, linked cube setup, and cube references
- Account Member Properties — Common properties, AccountType, FormulaType, aggregation, intercompany, constraints, and code examples
- Flow Member Properties — SwitchSign, SwitchType, FlowProcessingType, and flow hierarchy design
- UD Member Properties — UD defaults, attribute members, RelatedDimensionType, and constraints
- Dimension Library and Inheritance — Dimension creation, inheritance, stub dimensions, and the Dimension Library
- Dimension Naming and Assignment — Naming rules, assigning dimensions to cubes, dimension levels, and best practices
- The OneStream Data Model — Conceptual overview of cubes, dimensions, and extensibility