Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/AllianceBioversityCIAT/onecgiar_pr/llms.txt

Use this file to discover all available pages before exploring further.

Every reportable achievement in OneCGIAR flows through a typed result in PRMS. Before a result can move through the submission workflow it must carry a stable identifier, a declared type, a reporting phase, and a complete set of common fields that apply across all types. Type-specific sections then extend the common core with the domain detail that makes each result class meaningful for bilateral consumers, PMU dashboards, and downstream reporting systems.

Result identification

Each result is assigned a unique, human-readable result code at creation time (for example AR2024000042). The code is composed of the initiative prefix, the reporting year, and a sequential counter. The code is immutable once generated: it persists across phase rollovers and is the stable identifier exposed in bilateral payloads, CGSpace links, and any external reference. Internal database rows are keyed by a numeric id, but the result_code is what teams share and search by.

Result types

PRMS defines eleven distinct result types, each with its own result_type_id in the ResultTypeEnum:
TypeIDLevel
Policy Change1Outcome
Innovation Use2Outcome
Capacity Change3Outcome
Other Outcome4Outcome
Capacity Sharing for Development5Output
Knowledge Product6Output
Innovation Development7Output
Other Output8Output
Impact Contribution9Impact
Innovation Use (IPSR)10IPSR-specific
Complementary Innovation11IPSR-specific
Types 10 and 11 are created exclusively within the IPSR pathway (see IPSR Innovation Package pathway authoring). All other types are authored through the standard result creator.
A result’s type cannot be changed after the first save. If you select the wrong type, you must create a new result.

Common fields

Every result, regardless of type, carries the following fields. These are enforced by the submission validation layer (AC-6 in the PRD) before a result can advance beyond Editing status. Identity
  • Title — a concise, descriptive title. IPSR packages auto-generate their title from geographic scope and the core innovation.
  • Description — a narrative explanation of what the result is and why it matters.
  • Result type — selected at creation time; determines which type-specific section appears.
  • Reporting phase / year — the versioning phase the result belongs to. All reads and writes are scoped to the active phase by default.
Attribution
  • Lead center — exactly one center must be marked is_leading_result = true via the ResultsCenters join. This is mandatory for submission.
  • Contributing initiatives — linked via ResultsByInititiatives. The lead initiative carries initiative_role_id = 1.
  • Contributing centers — additional centers participating in delivery.
  • Contributing partners / institutions — organizations outside CGIAR, linked via ResultByInstitutions with CLARISA institution IDs.
Geography
  • Geographic scope — a scope level (global, regional, national, sub-national, or not applicable).
  • Regions — CLARISA regions selected when scope is regional.
  • Countries — CLARISA countries, with optional sub-national breakdowns when scope is sub-national.
Theory of Change alignment
  • ToC links — one or more mappings to Theory of Change outcome/output nodes from the initiative’s ToC tree, stored in ResultsTocResults. At least one ToC row is required for submission on most result types.
Evidence
  • Evidence links — URLs or references to supporting documents. Stored in Evidences with a type discriminator (EvidenceTypes). At least one valid evidence row is required before submission.
DAC cross-cutting scores
  • Gender tag level — a score reflecting how substantively the result addresses gender equality.
  • Climate change score — impact area scoring via ResultsImpactAreaIndicators.
  • Nutrition, poverty, environment scores — additional DAC / impact-area cross-cutting dimensions captured in ImpactAreasScoresComponents.
Tags and metadata
  • Result questions / answers — a configurable “Is this result related to…” question engine that drives conditional logic for some types.
  • Legacy result link — for results migrated from pre-PRMS reporting, a pointer to the legacy record.

Type-specific fields

Knowledge products (result_type_id = 6) represent research publications, datasets, tools, and other discrete intellectual outputs intended for broad use.CGSpace handle — a persistent handle (e.g., https://hdl.handle.net/10568/...) registered in CGSpace, the CGIAR institutional repository. The handle is the authoritative external identifier for the knowledge product and appears in the bilateral payload.MQAP attributes — the PRMS m-qap module calls the external MQAP (Metadata Quality Assessment Portal) service to retrieve structured bibliometric metadata: FAIR score components, open-access status, journal name, DOI, publication year, and author list. These are stored in results-knowledge-products and KnowledgeProductFairBaseline.Knowledge product type — the form of the output (peer-reviewed article, policy brief, data package, software tool, etc.), drawn from a CLARISA-backed catalog.Dissemination channels — where and how the product has been or will be shared.
The MQAP fetch runs automatically when you save a CGSpace handle. If MQAP is unavailable, the handle is saved and the fetch is retried on next load.

Autosave and validation

The result editing UI saves automatically as users navigate between sections. Server-side validation runs at each save to return field-level errors. Full submission validation — including the requirement for at least one ToC row, one evidence row, and a marked lead center — runs server-side when the submitter attempts to advance the status. Required-field failures are returned as a structured validation object that the UI renders inline, preventing submission until all blockers are resolved.

Phase scoping and result codes

Results are always read and written within the active reporting phase. When a new phase opens, the versioning module snapshots prior-phase data without mutating it, so historical submissions remain unchanged. The result_code persists across rollovers; the internal version_id (phase FK) is what distinguishes the active record from its prior-phase snapshot.

Build docs developers (and LLMs) love