12. Grant cycle templates

Admin only

A cycle template is the blueprint for everything an application + grant on a given donor contract looks like. One template per donor program: EU centralised grant, NL MFA framework, etc. Inside the template you define stages, budget categories, the optional detail template, and the reporting cadence.

Changing a template only affects grants created after the change — existing grants carry their own snapshot. This is EU-audit-friendly: a 2026 report can be exactly reconstructed in 2028 even if the template has since been refined.

The list page

  • Active templates on top; archived templates collapsed into a separate card below.
  • Per row: name, type, stage count, detail-row count, active/total application count.
  • Per row actions: Copy (deep-clone into a new template that starts archived), Archive (hide from the Application-new dropdown), Restore (un-archive).

Creating a new template

  1. Click "+ Add template".
  2. Name + type (EU centralised / Embassy / MFA framework / Private foundation / Custom).
  3. Active checkbox — leave unchecked while you're still building it.
  4. Save. You land on the detail page with the six default categories pre-seeded.

12.1 Settings card

Rename the template, change its type, toggle active/archived. Delete is only available when zero applications reference the template — archive is the safer default.

12.2 Stages

The application flow. Default five for the EU template: Concept Note → Proposal & Budget → Assessment → Decision → Contract.

  • Stage names are inline-editable — rename to match the donor's wording.
  • Stage type is read-only — it controls which form fields the stage uses (concept summary, objectives, decision + rationale, etc.) and ships with the platform.
  • Reorder / add / remove / required-fields editing is parked until you actually need a different number of stages.

What it looks like

Stages 5 stages

Rename stages to match the donor's wording. Reorder, add, remove, and required-fields editing land in a later slice — in practice the five EU stages haven't needed restructuring.

#NameType
1 Concept Note concept_note
2 Proposal & Budget proposal_budget
3 Assessment assessment
4 Decision (go/no-go) decision
5 Contract contract
Save stage names

Illustration only.

12.3 Budget categories

The headline budget structure for every grant on this template. Default six match the EU INTPA template (Human Resources / Travel / Equipment / Project Office / Other costs & services / Indirect costs); other donors use different breakdowns.

FieldWhat it does
OrderDisplay + Odoo sort order.
CodeStable identifier (A-Z, 0-9, underscore, dash, max 16 chars). The Odoo Plan 2 analytic account is matched by code. Two templates sharing a code share one Odoo account.
LabelThe user-facing name. Donor-specific (e.g. "Personnel costs" for USAID instead of "Human Resources").
TypeDirect for regular spending. % of direct for an indirect-overhead row whose amount is calculated as a percentage of the direct subtotal.
Renaming a code cascades. If you change HR to PERS, every existing grant on this template gets its cost_category updated to PERS. Next Odoo sync creates a new PERS analytic account (or matches an existing one if another cycle in this tenant already uses it). Plan accordingly.

What it looks like

Budget categories 6 categories
OrderCodeLabelType
1 HR Human Resources Direct
2 TRV Travel Direct
3 EQP Equipment Direct
4 OFF Project Office Direct
5 SVC Other costs & services Direct
6 IND Indirect costs % of direct
Add category
Save categories

Illustration only.

12.4 Budget detail template

Optional. The default detail rows seeded into every new grant on this template — same row component as the grant Budget card. Each row carries:

  • Code — e.g. 1.1.1.a.
  • Label — e.g. "Country Director (40%)".
  • Default inputs — units × unit value (or a single percentage for "% of direct" rows).
  • Unit label — e.g. "Per month", "Per flight", "Lump sum", "% of direct".

Add rows via the "+ Add row to <category>" trigger under each category section. Remove via the × button. Edits here only affect grants created from now on.

Leave it empty if the donor only wants headline category numbers and you don't need a third dimension in Odoo. The grant Budget card then shows a regular amount input per category, and the Odoo sync writes Plan 1 (Project) + Plan 2 (Donor budget line) only — Plan 3 (Donor budget detail) is skipped.

12.5 Reporting cadence

Defines which reports a new grant on this template needs and how they are labelled. One row per recurring report.

KindWhen it falls dueOffset uses
AnnualOne row per 12-month slice from grant start (Year 1, Year 2, …).Ignored.
QuarterlyOne row per calendar quarter intersecting the grant.Ignored.
FinalOne row at the grant's end date.Ignored.
Mid-termOne row at offset months from grant start.Required (months from grant start).

Label pattern uses tokens:

  • {n} — 1-based occurrence within this kind (1, 2, 3, …).
  • {yyyy} — calendar year of the period's end date.
  • {q} — calendar quarter of the period's end date (1–4).

The platform's EU centralised cadence ships seeded with: Annual report {n} ({yyyy}), Mid-term review (month 18), Final report ({yyyy}).

What it looks like

Reporting cadence 3 rules

The cadence the period generator uses for new grants on this template.

OrderKindOffset (months)Label pattern
1 Annual Annual report {n} ({yyyy})
2 Mid-term 18 Mid-term review (month 18)
3 Final Final report ({yyyy})
Add cadence row
Save cadence

Illustration only — for a 36-month grant starting 2026-01-01 this cadence produces "Annual report 1 (2026)", "Annual report 2 (2027)", "Annual report 3 (2028)", "Mid-term review (month 18)" and "Final report (2028)".