What Are Versions?
Versions let you maintain multiple parallel sets of data within the same model. Every variable in Farseer has a Versions dimension with at least two default members: Actual and Plan.
This means you can store imported historical data (Actual) alongside your forward-looking planning data (Plan) on the exact same variable — and switch between them instantly.
How Versions Work
Versions are a special system dimension. They behave like any other dimension, but with built-in support throughout the interface:
Timeline integration: Select which versions to display for each year directly from the timeline control at the bottom of any sheet
Per-variable pinning: Variables can be pinned to specific versions (e.g., an import variable pinned to
Versions.Actualonly receives imported data)Locking: Versions can be locked to prevent further editing (e.g., lock Actuals after final import)
Common Version Patterns
Actual + Plan
The most common setup. Actual data is imported from your ERP or accounting system into a read-only variable. A second variable uses a formula to pull Actuals when looking at historical periods and allows manual entry for Plan:
if(hasDMember(Actual), GL IMPORT, GL PLAN INPUT)
This pattern gives you a single unified view where Actuals and Plan sit side by side.
Multiple Planning Versions
You can create additional version members beyond Actual and Plan — for example: Budget, Forecast, Stretch Target, or any custom scenario. Each version stores its own set of values independently.
Comparing Versions
The Timeline's comparison tool lets you view multiple versions side by side. For each year, you can select multiple versions, and each appears as a separate column in the sheet.
This is powerful for:
Variance analysis: Actual vs Plan — see where your forecasts diverged from reality
Scenario comparison: Compare Base Plan vs Optimistic vs Conservative scenarios
Year-over-year: View 2024 Actual next to 2025 Plan
You can flip the comparison order using the small flip control in the version list.
Versions in Formulas
You can reference specific versions in formulas using hasDMember() (or its legacy name hasTags()):
if(hasDMember(Actual), IMPORTED VAR)— only applies when looking at the Actual versionif(hasDMember(Plan), MANUAL INPUT)— only applies for the Plan version
This lets you define version-specific behavior on a single variable.
