# Total Cost of Ownership Analysis: [Solution or decision name]

> Total cost of ownership (TCO) analysis comparing two or more options over
> a fixed horizon: scope, cost categories (acquisition, implementation,
> operations, licences, people, infrastructure, exit), year-by-year cost
> tables, discounting to net present value, sensitivity analysis,
> assumptions and a recommendation. Based on common industry practice for
> TCO and discounted cash-flow comparison. Replace every `[bracketed]`
> value and every figure marked *Example*. This is a format for analysis,
> not financial advice; agree the discount rate and accounting treatment
> with your finance team.

<!--
Guidance: How to use this template
- Fix the scope, horizon, currency and discount rate in section 1 before
  collecting numbers. Comparing options with different horizons is the
  most common TCO error.
- Count every cost category for every option, even when the value is zero.
  A blank cell hides whether a cost was forgotten or is truly nil.
- People cost is usually the largest and most under-estimated category.
  Use loaded cost (salary plus overheads), not salary alone.
- Keep the arithmetic visible. Reviewers should be able to change one
  assumption in section 6 and recompute the result.
-->

| Field | Value |
|---|---|
| Document ID | [TCO-001] |
| Decision supported | [e.g. Self-host versus SaaS for the observability platform] |
| Version | [0.1] |
| Status | [Draft / In review / Approved] |
| Owner | [@architect] |
| Finance reviewer | [@finance-partner] |
| Last updated | YYYY-MM-DD |
| Related | [Technology selection TS-NNN], [ADR-NNN], [Business case] |

## 1. Scope and horizon

<!-- Guidance: Define exactly what is being costed and what is not. State the horizon, base year, currency, price basis (nominal or real) and the discount rate, and who supplied the rate. -->

[Describe the capability, the user population and the volumes being
costed. List anything explicitly out of scope.]

*Example:* Observability platform (logs, metrics, traces) for 140
services, 2 TB of logs per day, 30-day hot retention, 400 engineers with
read access. Out of scope: security information and event management
(SIEM), which has its own budget line.

| Parameter | Value |
|---|---|
| Options compared | *Example:* A = self-hosted open-source stack; B = SaaS observability vendor |
| Horizon | *Example:* Year 0 (set-up) plus 3 operating years |
| Currency and basis | *Example:* USD thousands, nominal (includes expected price rises) |
| Discount rate $r$ | *Example:* 8% per year, supplied by [finance] |
| Timing convention | *Example:* Year 0 costs at start; Years 1 to 3 costs at year end |
| Volume growth | *Example:* Flat volumes; growth tested in section 5 |

## 2. Cost categories

<!-- Guidance: Use the same categories for every option. Define each so that two analysts would put the same item in the same place. Avoid double counting between people and operations. -->

| Category | Includes | Excludes |
|---|---|---|
| Acquisition | Hardware purchase, perpetual licences, one-off vendor fees, procurement costs | Recurring subscriptions |
| Implementation | Design, build, configuration, data migration, integration, training, consultants | Run-state staff |
| Licences | Subscriptions, support contracts, usage-based fees | One-off perpetual licences |
| Infrastructure | Compute, storage, network egress, backup, environments | Vendor-hosted costs inside the subscription |
| People | Loaded cost of staff who operate, maintain and support the solution | Implementation project staff |
| Operations | Monitoring, incident tooling, audits, certificates, minor tooling | Staff time (counted under people) |
| Exit | Data export, parallel running, decommissioning, contract termination fees | Costs of the successor solution |

Hidden costs to check for each option: [list]. *Example:* egress fees,
premium support tiers, compliance audits, on-call allowances, retraining
when staff leave, and the cost of the old system running in parallel.

## 3. Cost tables per option

<!-- Guidance: One table per option, same rows and columns. Show the source of each estimate in the notes (quote, benchmark, internal rate). Totals per year must equal the sum of the rows. -->

### 3.1 Option A: [Self-hosted open-source stack]

Values in USD thousands. Year 0 is set-up; Years 1 to 3 are operating years.

| Category | Year 0 | Year 1 | Year 2 | Year 3 | Total |
|---|---|---|---|---|---|
| Acquisition | *Example:* 40 | 0 | 0 | 0 | 40 |
| Implementation | 120 | 0 | 0 | 0 | 120 |
| Licences (support contract) | 0 | 10 | 10 | 10 | 30 |
| Infrastructure | 30 | 60 | 60 | 60 | 210 |
| People (1 FTE platform engineer, loaded) | 0 | 150 | 150 | 150 | 450 |
| Operations | 0 | 20 | 20 | 20 | 60 |
| Exit | 0 | 0 | 0 | 30 | 30 |
| **Total** | **190** | **240** | **240** | **270** | **940** |

Notes: [sources]. *Example:* infrastructure from the cloud cost
calculator for 18 storage-optimised nodes; people cost at the internal
loaded rate of 150 per FTE-year.

### 3.2 Option B: [SaaS observability vendor]

| Category | Year 0 | Year 1 | Year 2 | Year 3 | Total |
|---|---|---|---|---|---|
| Acquisition (onboarding fee) | *Example:* 10 | 0 | 0 | 0 | 10 |
| Implementation | 80 | 0 | 0 | 0 | 80 |
| Licences (subscription, +5% per year) | 0 | 180 | 189 | 198 | 567 |
| Infrastructure | 0 | 0 | 0 | 0 | 0 |
| People (0.33 FTE administrator) | 0 | 50 | 50 | 50 | 150 |
| Operations | 0 | 10 | 10 | 10 | 30 |
| Exit (data export, dual running) | 0 | 0 | 0 | 40 | 40 |
| **Total** | **90** | **240** | **249** | **298** | **877** |

Notes: *Example:* subscription from vendor quote Q-2291 dated
YYYY-MM-DD, with the 5% annual uplift in the draft contract; Year 3
uplift rounded to 198.

### 3.3 Option [C]: [Name]

[Repeat the table for each further option, or delete this subsection.
Include a "do nothing" option when the current solution has a running
cost that would continue.]

## 4. Discounting and net present value

<!-- Guidance: Money spent later is worth less today. Discount each year's cost to present value and compare options on the NPV of costs. Lower NPV of cost is better when benefits are equal. If benefits differ, move to a full business case. -->

The net present value of the cost stream of an option is

$$
\text{NPV}_{\text{cost}} = \sum_{t=0}^{T} \frac{C_t}{(1+r)^t}
$$

where $C_t$ is the total cost in year $t$, $r$ is the discount rate and
$T$ is the last year of the horizon. With $r = 8\%$ the discount factors
are $1.0000$, $0.9259$, $0.8573$ and $0.7938$ for Years 0 to 3.

| Year $t$ | Factor $1/(1.08)^t$ | Option A cost | Option A PV | Option B cost | Option B PV |
|---|---|---|---|---|---|
| 0 | 1.0000 | 190 | 190.0 | 90 | 90.0 |
| 1 | 0.9259 | 240 | 222.2 | 240 | 222.2 |
| 2 | 0.8573 | 240 | 205.8 | 249 | 213.5 |
| 3 | 0.7938 | 270 | 214.3 | 298 | 236.6 |
| **Total** | | **940** | **832.3** | **877** | **762.3** |

*Example* result: Option B has the lower NPV of cost by $832.3 - 762.3 =
70.0$ thousand, about 8% of Option A. Present values are computed with
unrounded factors and then rounded to one decimal.

Cost per unit of value, where useful: [e.g. cost per GB ingested, per
user, per transaction]. *Example:* Option B costs $877 / (2 \times 365
\times 3) \approx 0.40$ thousand USD per TB ingested over the horizon,
about USD 400 per TB.

## 5. Sensitivity analysis

<!-- Guidance: Vary the assumptions that are both uncertain and influential, one at a time, and show whether the ranking changes. Find the break-even value of the most uncertain input. -->

| Scenario | Change | Option A NPV | Option B NPV | Lower cost |
|---|---|---|---|---|
| Baseline | As in sections 3 and 4 | 832.3 | 762.3 | B |
| *Example:* Vendor uplift 10% per year | B licences 180 / 198 / 218 | 832.3 | 785.9 | B |
| *Example:* Self-host needs 1.2 FTE | A people 180 per year; Year 3 total 300 | 909.6 | 762.3 | B |
| *Example:* Discount rate 5% | Factors 0.9524 / 0.9070 / 0.8638 | 869.5 | 801.8 | B |
| [Scenario] | [Change] | [ ] | [ ] | [ ] |

Break-even: [state the value of the key input at which the options cost
the same]. *Example:* holding everything else at baseline, Option B's
Year 1 to 3 subscription would have to be about 70.0 / (0.9259 + 0.8573 +
0.7938) $\approx$ 27 thousand per year higher, that is roughly 207 instead
of 180 in Year 1, before Option A becomes cheaper.

Qualitative factors not priced: [list]. *Example:* SaaS removes on-call
burden for the platform; self-hosting keeps data in our own account,
which simplifies some customer audits.

## 6. Assumptions

<!-- Guidance: Every number in section 3 rests on an assumption. List them with source and confidence so reviewers can challenge the right ones. -->

| ID | Assumption | Value | Source | Confidence |
|---|---|---|---|---|
| AS-01 | *Example:* Loaded cost per platform engineer FTE-year | 150 | HR finance rate card YYYY | High |
| AS-02 | *Example:* Log volume per day | 2 TB, flat | 90-day average from current platform | Medium |
| AS-03 | *Example:* Vendor annual price uplift | 5% | Draft contract clause | Medium |
| AS-04 | *Example:* Exit costs incurred in final year | Yes | Architecture team estimate | Low |
| AS-05 | *Example:* Discount rate | 8% | Finance policy | High |
| [AS-nn] | [Assumption] | [Value] | [Source] | [H/M/L] |

## 7. Recommendation

<!-- Guidance: State the recommended option, the financial reason, the non-financial reasons, and the conditions under which the recommendation would change. -->

*Example:* Choose Option B. It has the lower NPV of cost in every tested
scenario (762.3 versus 832.3 thousand USD at baseline), removes a
dedicated on-call rota, and the break-even subscription increase of about
15% gives a reasonable margin. Conditions: cap the annual uplift at 7%
in the contract, and re-run this analysis if daily log volume exceeds
3 TB, because usage-based fees then dominate.

| Field | Value |
|---|---|
| Recommended option | [Option] |
| NPV of cost advantage | [Amount and %] |
| Key conditions | [Conditions] |
| Decision owner | [@name] |
| Re-run trigger | [Event or date] |

## 8. Approval

<!-- Guidance: Record who reviewed the numbers and who accepted the recommendation. -->

| Role | Name | Decision | Date |
|---|---|---|---|
| Architecture owner | [@name] | [Approved / Changes requested] | YYYY-MM-DD |
| Finance partner | [@name] | [Decision] | YYYY-MM-DD |
| Budget holder | [@name] | [Decision] | YYYY-MM-DD |

## Standard and licence note

Based on common industry practice for total cost of ownership analysis
and discounted cash-flow (net present value) comparison. Original text
written for this collection; example figures are illustrative. This
template is a format for analysis, not financial advice. Template
licence: MIT.
