Features
Konsolidat delivers full-cycle Enterprise Performance Management through a modular, open-source stack.
Excel-Native Reporting
Six VBA worksheet functions query financial data directly from ClickHouse via the Frappe API — five read functions plus EPMSAVE for budget write-back. No SQL, no code — just formulas.
=EPM("USMF", 2024, "Q1", "401100") → Actuals — net amount
=EPM_BUDGET("USMF", 2025, "FY", "6100") → Budget — full year
=EPM_VARIANCE("USMF", 2025, 5, "6100") → Variance — actual vs budget
=EPM_DEBIT("USMF", 2024, 5, "1300") → Period debits
=EPM_CREDIT("USMF", 2024, 5, "1300") → Period credits
=EPMSAVE(125000, "USMF", 2025, 5, "6100", "BUDGET_2025", "base") → Write budget cell back
- Period aggregation —
Q1–Q4,H1/H2,FYroll up across months - Batch refresh —
Ctrl+Shift+Rsends all formulas in a single HTTP request - Session auth — Frappe login, credentials stored per-workbook
- Dimension filters — Optional cost center, department, business unit parameters
See the Excel VBA Guide for full formula reference.
Multi-Entity Consolidation
Full IFRS/GAAP consolidation pipeline, entirely in dbt SQL:
| Step | What happens |
|---|---|
| Currency translation | Balance sheet at closing rate, P&L at average rate |
| CTA calculation | Automatic Currency Translation Adjustment posting |
| NCI split | Group vs non-controlling interest based on ownership % |
| IC elimination | Rule-based intercompany receivable/payable and revenue/COGS netting |
| Top-side adjustments | Manual consolidation journal entries via seed CSV |
| Consolidated TB | 6-layer union: entity + IC eliminations + CTA + topside + equity-method + acquisition/disposal |
See the Consolidation Guide for details.
Driver-Based Cost Allocations
Multi-step cascading allocation engine with three built-in allocation types:
- Step 1 — IT costs allocated by headcount
- Step 2 — Facility costs allocated by square meters (includes Step 1 cascade)
- Step 3 — Management fees allocated by revenue (includes Step 1+2 cascade)
Allocation rules, drivers, and cost center mappings are all defined in CSV seeds — no code changes needed.
See the Allocation Guide for configuration.
Budgeting & Variance Analysis
- Annual input — Budget line items defined in CSV, one row per entity/account/year
- Spread profiles —
EVEN(equal monthly),SEASONAL_RETAIL(weighted), or custom profiles - 12-period spreading — Automatic monthly breakdown from annual totals
- 5 variance measures — actual, budget, variance_abs, variance_pct, variance_favorable
- Favorable logic — Revenue: favorable when actual > budget. Expense: favorable when actual < budget.
See the Budgeting Guide and Variance Analysis Guide.
Medallion Data Architecture
Four-layer data pipeline from source to reporting:
| Layer | Schema | Models | Purpose |
|---|---|---|---|
| Raw | epm_bronze (Airbyte) | — | OData entities as-is from D365 |
| Staging | epm_staging | 30 views | Canonical models + d365_fo / erpnext adapters; field renames, joins, JSON parsing |
| Bronze | epm_bronze | 15 tables | Type-cast, snake_case, dimension mapping |
| Silver | epm_silver | 8 tables | Deduplicated, standardized trial balance |
| Gold | epm_gold | 32 tables | Business logic: consolidation, allocations, variance |
See the Data Dictionary for model-level documentation.
REST API
Around 14 whitelisted API methods are exposed through Frappe/Konsol, covering value queries, budget write-back, consolidation hierarchy, allocations, and health checks. Key ones include:
| Endpoint | Method | Purpose |
|---|---|---|
epm_value | GET | Single financial value query |
epm_batch | POST | Batch query (used by Excel Ctrl+Shift+R) |
budget_save / budget_cell_save / budget_save_batch | POST | Budget write-back from Excel |
get_hierarchy_tree | GET | Consolidation group hierarchy |
approve_adjustment / reverse_adjustment | POST | Top-side adjustment workflow |
run_allocation / reverse_allocation / allocation_history | POST/GET | Allocation engine control |
connector_health / airbyte_sync_complete | GET/POST | Pipeline status hooks |
health | GET | ClickHouse connection + model freshness check |
Session-based authentication via Frappe login (session cookie). See the API Reference.
Excel Task Pane
Office.js add-in for pipeline orchestration directly from Excel:
- Login with Frappe credentials
- View latest pipeline run status
- Trigger Airbyte sync + dbt build from a sidebar panel
See the Excel Task Pane Guide.
Configurable Dimensions
dbt project variables define dimensions that auto-propagate through all Gold models:
vars:
dimensions:
- name: dim_cost_center
source_column: CostCenter
allocation_role: cost_center
- name: dim_department
source_column: Department
- name: dim_business_unit
source_column: BusinessUnit
Add a new dimension by adding an entry — macros handle the rest. See Adding Dimensions.
Component Stack
| Component | Purpose | Default Port |
|---|---|---|
| ClickHouse | Columnar analytical warehouse | 8123 (HTTP), 9000 (native) |
| Airbyte | D365 OData extraction (via abctl) | 8000 |
| dbt Core | SQL transformations (85 models, 150+ tests) | CLI |
| Frappe (Konsol) | API layer, auth, pipeline control, settings | 8069 |
| Excel VBA | =EPM() formulas for financial reporting | — |
| Excel Task Pane | Pipeline orchestration (Office.js) | — |