Most Anaplan estates get to a mature revenue plan, a solid workforce model, and a three-statement roll-up long before anyone touches capital. Capex keeps living in a spreadsheet: one tab per business unit, a depreciation grid nobody can reconcile, and a project list that finance, IT, and operations each maintain a different version of. Then the CFO asks what happens to next year's EBITDA and free cash flow if the top ten projects slip a quarter, and there is no way to answer it in less than a week.
Capital planning is a natural Anaplan workload. It is driver-based, hierarchical, scenario-heavy, and it feeds three places at once: the P&L (depreciation), the balance sheet (fixed assets), and cash flow (spend timing). This tutorial builds a capital expenditure and project portfolio model end to end — request intake, prioritisation and funding, spend phasing, depreciation, disposals, and the hand-off into your financial model.
It assumes working knowledge of numbered lists, SUM/LOOKUP, CUMULATE, and time ranges. If your three-statement model already exists, this plugs into it; if it does not, build the depreciation and cash outputs anyway and land them in a staging module.
The four things a capital model must separate
Almost every struggling capex spreadsheet fails because it conflates these four ideas into one grid. Keep them as distinct layers and the rest of the build is mechanical.
- The request — what someone wants to spend, with a business case. Many more requests exist than will ever be funded.
- The decision — which requests are approved, at what amount, in which funding round. This is a governance event with a date and an approver.
- The spend — when cash actually leaves, which is almost never when the project was approved and rarely in one lump.
- The asset — when the thing goes into service and starts depreciating, which is later again and follows different rules per asset class.
A request that is approved for $4m, spends $1.2m this year, and capitalises nothing until next October is completely normal. One number cannot represent all four states.
Step 1: Lists and the project grain
| List | Type | Notes |
|---|---|---|
Projects | Numbered list, production | The request grain. One member per capital request, funded or not. |
Project Status | Flat | Draft, Submitted, Approved, Deferred, Rejected, In Flight, Capitalised, Cancelled. |
Asset Classes | Flat | Buildings, Leasehold Improvements, Plant, IT Hardware, Software, Vehicles. Carries useful life and method. |
Capex Categories | Flat | Growth, Maintenance, Regulatory, Cost Reduction, IT. Drives the portfolio view the board actually asks for. |
Cost Centres | Hierarchy | Reuse the finance hierarchy. Never build a parallel one. |
Funding Rounds | Flat | FY26 Annual Plan, FY26 Q1 Reforecast, FY26 Off-Cycle. |
Spend Types | Flat | Hardware, Software, Labour (Capitalised), External Services, Contingency. |
Time | Native | Monthly, extended far enough forward to hold the longest useful life. |
Two grain decisions worth making deliberately:
- Projects are a numbered list, not a hierarchy of text properties. Users create them, so provide a UX form with an action that writes a row. Do not let a project list be maintained by import from a spreadsheet that someone owns locally — that reintroduces the problem you are solving.
- Multi-year projects need a phase dimension only if you actually approve by phase. If governance funds whole projects, keep
Projects×Timeand skip the extra dimension. Many teams addPhasesreflexively and pay for it in every module thereafter.
Step 2: Request intake and the business case
PR01 Project Master, dimensioned by Projects, holds the request attributes as line items rather than list properties — properties are hard to time-phase and awkward to write to from the UX.
Project Name Text
Requesting Cost Centre List: Cost Centres
Sponsor List: Users
Asset Class List: Asset Classes
Capex Category List: Capex Categories
Status List: Project Status
Funding Round List: Funding Rounds
Request Amount Number
Start Date Date
In-Service Date Date
Useful Life (Months) = LOOKUP asset class default, overridable
Mandatory? Boolean
Business Case Text Text
Then the business case drivers, which is where a capital model earns its keep:
Annual Benefit Number -- cost saving or incremental contribution
Benefit Start Month Date
Benefit Confidence % Number
Risk-Adjusted Benefit = Annual Benefit * Benefit Confidence %
Insist on a quantified benefit and a confidence factor for every non-mandatory request. It changes behaviour: a sponsor who has to enter a number they will be measured against submits a different request than one who writes a paragraph.
Step 3: Scoring and prioritisation
The point of a portfolio model is that requests compete. Build PR02 Project Economics, dimensioned Projects × Time for the cash streams and Projects for the summary metrics.
Spend Cash Flow = -Total Phased Spend
Benefit Cash Flow = risk-adjusted benefit, phased from Benefit Start Month
Net Cash Flow = Spend Cash Flow + Benefit Cash Flow
Discount Factor = 1 / (1 + Monthly WACC) ^ Months From Now
Discounted Net CF = Net Cash Flow * Discount Factor
NPV = SUM of Discounted Net CF over Time
Cumulative Net CF = CUMULATE(Net Cash Flow)
Payback Month = flag on the first period where Cumulative Net CF >= 0
Capital Intensity = NPV / Request Amount
Capital Intensity — NPV per dollar of capital — is usually a more useful ranking metric than raw NPV, because raw NPV always favours the biggest projects. Present both.
Then the ranking module, PR03 Portfolio Ranking:
Strategic Score Number (1-5), committee input
Risk Score Number (1-5), committee input
Composite Score = (Capital Intensity Normalised * 0.5)
+ (Strategic Score / 5 * 0.3)
+ ((6 - Risk Score) / 5 * 0.2)
Rank = RANK(Composite Score, DESCENDING) over non-mandatory projects
Cumulative Capital = CUMULATE over Rank of Request Amount
Above The Line? = Mandatory? OR Cumulative Capital <= Capital Envelope
Above The Line? is the single most valuable line item in the model. It turns the annual capital conversation from an argument into a visible cut line: here is the envelope, here is what fits, here is exactly what falls out if the envelope shrinks by 10%. Publish it as a UX grid sorted by rank with a conditional format at the cut point, and put the envelope in a versioned input so the committee can move it live in the meeting.
Step 4: Spend phasing
SP01 Spend Plan, dimensioned Projects × Time × Spend Types.
Give planners three ways to phase, because forcing one method guarantees offline workarounds:
Phasing Method List: Manual / Even / S-Curve / Milestone
Even Spend = Approved Amount / Duration Months, within the project window
S-Curve Spend = Approved Amount * (S-Curve Cum % - PREVIOUS(S-Curve Cum %))
Manual Spend = direct planner entry
Phased Spend = IF Phasing Method = Manual THEN Manual Spend
ELSE IF Phasing Method = Even THEN Even Spend
ELSE IF Phasing Method = S-Curve THEN S-Curve Spend
ELSE Milestone Spend
The S-curve is worth building properly rather than approximating with a straight line. Hold a reusable curve library in a small module dimensioned by Curve Types × Month In Project with cumulative percentages — construction projects, IT implementations, and equipment purchases have genuinely different shapes, and cash forecast accuracy depends on it more than on the total.
Then reconcile committed versus planned:
Committed (PO) = actual purchase orders raised, from ERP
Actual Spend = invoiced capex to date, from ERP
Remaining Forecast = MAX(0, Approved Amount - Actual Spend)
Total Spend View = Actual Spend (past periods) + Phased Forecast (future periods)
Variance to Approval = Total Spend View - Approved Amount
Overrun Flag = Variance to Approval > Tolerance %
Blending actual-to-date with forecast-to-go in one line item is what makes the model usable mid-year. Never make users read two grids and add them up mentally.
Step 5: Capitalisation and depreciation
This is the part that has to be right, because it lands in the audited numbers.
Separate spend from capitalisation. Money spent on a project under construction sits in assets under construction (AUC) and does not depreciate. When the asset goes into service, the accumulated AUC transfers to the asset class and depreciation begins.
DP01 Asset Register, dimensioned Projects × Time:
AUC Additions = Phased Spend, where Capitalisable? = TRUE
AUC Balance = PREVIOUS(AUC Balance) + AUC Additions - Transfers to Asset
In Service? = period >= In-Service Date month
Transfers to Asset = IF In Service? AND NOT PREVIOUS(In Service?) THEN AUC Balance ELSE 0
Asset Cost Additions = Transfers to Asset
Gross Asset Cost = PREVIOUS(Gross Asset Cost) + Asset Cost Additions - Disposals at Cost
Then depreciation. Build it on the project grain if project counts are modest; if you have tens of thousands of assets, aggregate to Asset Classes × Vintage Month first — the vintage-cohort pattern gives identical results at a fraction of the cell count.
Months In Service = CUMULATE(IF In Service? THEN 1 ELSE 0)
Depreciable Base = Gross Asset Cost - Residual Value
Monthly Depreciation = IF NOT In Service? THEN 0
ELSE IF Months In Service > Useful Life (Months) THEN 0
ELSE Depreciable Base / Useful Life (Months)
Accumulated Depn = PREVIOUS(Accumulated Depn) + Monthly Depreciation - Depn on Disposal
Net Book Value = Gross Asset Cost - Accumulated Depn
Straight-line covers the majority of book depreciation. Where you need reducing-balance or units-of-production, hold Method on the asset class and calculate each method in its own line item, then select:
Reducing Balance Depn = PREVIOUS(Net Book Value) * (Rate % / 12)
Monthly Depreciation = IF Method = Straight Line THEN SL Depn
ELSE IF Method = Reducing Balance THEN Reducing Balance Depn
ELSE Units Depn
Parallel calculation and selection beats one heavily nested formula for both readability and calculation performance — each branch is a simple expression the engine can evaluate over the whole block at once.
Three details that get missed and cause reconciliation pain later:
- Mid-month convention. Decide whether an asset in service on the 20th gets a full month, a half month, or none, and apply it consistently. Auditors will ask.
- Tax depreciation is a different schedule. If you need book and tax, build a second parallel schedule with its own life and method on the same asset cost, and carry the deferred tax difference. Do not overload one schedule with a toggle.
- Useful life changes are prospective. When a life is revised, remaining net book value depreciates over the remaining revised life. Implement it as
MAX(1, Revised Life - Months In Service)applied to remaining NBV rather than restating history.
Step 6: Disposals and impairment
Disposal Date Date
Disposals at Cost = IF disposal month THEN Gross Asset Cost ELSE 0
Depn on Disposal = IF disposal month THEN Accumulated Depn ELSE 0
Proceeds Number
Gain / (Loss) on Disposal = Proceeds - (Disposals at Cost - Depn on Disposal)
Impairment Charge Number, manual with reason code
Gain or loss on disposal is a P&L item and proceeds are a cash flow item, and they are not the same number. Route them separately into the financial model — this is one of the most common wiring errors when a capital model is connected to a three-statement roll-up.
Step 7: Wiring into the financial model
Publish one clean output module rather than letting the FP&A model reach into your calculation logic. OUT01 Capital to Finance, dimensioned Cost Centres × Asset Classes × Time:
| Output | Destination |
|---|---|
Depreciation Expense | P&L, by cost centre |
Gross Asset Cost, Accumulated Depn, Net Book Value | Balance sheet |
AUC Balance | Balance sheet |
Capex Cash Outflow | Cash flow, investing |
Disposal Proceeds | Cash flow, investing |
Gain / (Loss) on Disposal | P&L, below the line |
Impairment | P&L |
Two rules for this boundary. First, the output module is a contract: its dimensionality and line items should change rarely and deliberately, because a downstream model depends on them. Second, keep the accrual-versus-cash distinction explicit — capex accruals and payment terms mean capex cash outflow lags capex additions, often by 30 to 60 days, and cash forecasting cares about the difference.
Step 8: Scenarios the committee will actually ask for
Use native versions for Plan, Forecast, and Actual, and a Scenarios list for the sensitivity cases. The four that come up in every capital review:
- Envelope reduction. Cut the capital envelope by 10, 20, 30% and read the cut line. Answered directly by
Above The Line?. - Universal slip. Delay every in-flight project's in-service date by one quarter. Implement as a
Delay Monthsinput on the scenario and offset the in-service date, not the spend, then watch depreciation fall and next-year EBITDA rise — the counterintuitive result that always needs explaining. - Accelerate a subset. Pull selected growth projects forward and show the cash impact.
- Maintenance floor. Model the minimum sustaining capex needed to hold the asset base flat, with
Replacement Capex = Depreciation Expenseas a benchmark line. Capex running persistently below depreciation is a question the board will ask about eventually.
Step 9: Governance, access, and the review pages
Dynamic Cell Access, driven by status and role:
- Sponsors edit their own requests while
Status = DraftorSubmitted. - Once
Status = Approved,Approved Amountbecomes read-only to everyone except the capital committee role. - Spend phasing stays editable for
In Flightprojects, but only for future periods — past periods are actuals. - Closed periods lock entirely from a
Period Controlmodule.
Use Anaplan Workflow for the approval chain rather than email: submitted requests route to the cost centre owner, then finance, then the committee, with the model recording who approved what and when. For capital spend that is not a nice-to-have — it is the audit trail.
Four pages cover the real usage:
- My Requests — sponsor form and list, with the business case fields and a submit action.
- Portfolio Ranking — the cut-line grid, envelope input, and category mix charts. The committee's page.
- Project Detail — one project: spend phasing, actual versus approved, depreciation schedule, benefit tracking.
- Capital Summary — capex by category and cost centre, depreciation forecast, AUC roll-forward, cash outflow by quarter.
Add benefit realisation tracking to the project detail page even if nobody asks for it. Recording actual delivered benefit against the business case that got a project funded is rare, unpopular, and the fastest way to improve the quality of next year's requests.
Performance and sizing notes
- Depreciation on
Projects×Timemonthly over a 40-year building life is a lot of cells. Extend time only as far as your longest life requires, and use a separate long time range for the depreciation module rather than stretching the model's whole calendar. - Prefer the vintage-cohort pattern (
Asset Classes×Vintage Month) over per-asset schedules once asset counts run to five figures. Book results are identical; the cell count is orders of magnitude lower. PREVIOUS-based roll-forwards are cheap;CUMULATEacross a long time dimension is not. Use roll-forwards for balances.- Keep the ranking and scoring modules on the
Projectsgrain only. Nothing about ranking needs a time dimension.
Common mistakes
Treating spend and depreciation as the same timeline. They are separated by the in-service date, and for construction or large IT programmes that gap can be years. Modelling depreciation from the spend date overstates near-term depreciation and understates it later.
No cut line. A capital model that just totals up requests is a spreadsheet with better security. Ranking and an explicit envelope are the reason to build it.
Rebuilding the fixed asset sub-ledger. Anaplan is for planning capital, not for being the statutory asset register. Reconcile to the ERP sub-ledger at asset-class level, take opening balances from it, and resist the pull to model asset-by-asset tax detail.
Ignoring capitalised labour. In software and IT-heavy organisations, capitalised internal labour is a large share of capex, and it connects the capital model to the workforce model. Model it as a spend type driven by FTE allocation, not as a plug.
Approving in one currency and spending in another. If projects are approved centrally and spent locally, decide whether FX risk sits with the project or the centre, and model it explicitly.
Where to start
If you are building this for the first time, sequence it: project master and intake, spend phasing, depreciation, then ranking and scenarios. Get one business unit and one funding round through a full cycle before you widen the scope. The intake and depreciation layers are where the accounting correctness lives; the ranking layer is where the executive value lives, and it is worth nothing if the underlying numbers do not tie to the ledger.
Capital planning is also one of the shortest paths to visible value in an Anaplan estate, because the current-state alternative is usually a spreadsheet nobody trusts. If you would like a second opinion on a capital model design, an integration to your ERP asset sub-ledger, or help wiring depreciation into an existing three-statement model, get in touch — our consultants build these regularly.