# Curriculum Completion Tracking

Vault tracks the progress and completion status of Learners through each _Curriculum_ they are assigned. The system creates a _Curriculum Completion Status_ object record for each _Person_ (Learner) and _Curriculum-Learner Role_ combination. This allows Training Admins and other stakeholders to set up reporting on the _Curriculum Completion Status_ object to detail the training completion status of individual Learners at the _Curriculum_ level.

## How Vault Calculates Completion {#how-vault-calculates-completion}
A curriculum’s completion status is reflected in the _Completion Percentage_ field within the related _Curriculum Completion Status_ record.

Vault calculates the percentage using the below equation. When an assignment is canceled, Vault removes it from the count and does not consider it when re-calculating the percentage.

The sections below and the [use case](/en/lr/24483/#curriculum-completion-use-case) provide a detailed analysis of the calculation.

<a href="https://platform.veevavault.help/assets/images/curriculum-completion-formula.png" data-lightbox="curriculum completion" data-title="" data-alt="Curriculum Completion formula">
  <img class="docimage" src="https://platform.veevavault.help/assets/images/curriculum-completion-formula.png" alt="Curriculum Completion formula" style="max-width: 50%;width: 300px;"  />
</a>

### About the Numerator {#about-the-numerator}

The numerator is calculated as total completed _Training Assignments_ per _Training Requirement_ for a _Curriculum_, where all assignments for a requirement are counted as one (1).

This means that, when there are multiple _Training Assignments_ for a single _Training Requirement_, Vault only counts them as a unit when all assignments are complete. This count also depends on [how the assignments were created][4].

### About the Denominator {#about-the-denominator}

The denominator is calculated as the total count of distinct _Training Requirements_ for all open and completed _Training Assignments_ for a _Curriculum_.

Another way to determine denominator is to count:
  * The number of _Assignment Details_ records for each requirement’s related _Training Assignments_, or
  * The number of _Curriculum Completion Status_ records created for each _Curriculum_ and _Learner Role_ combination in the Learner’s training matrix.

### About the Assignment Detail Object {#about-the-assignment-detail-object}

For the most accurate calculation, Vault counts a _Training Assignment_’s related _Assignment Detail_ record to calculate _Completion Percentage_. This is required to account for training matrix configurations where a Learner is assigned a _Training Requirement_ which can result in multiple _Training Assignments_.

See the Curriculum Completion [use case][5] and [Configuring Veeva Training](/en/lr/50960/#about-the-assignment-detail-object) for more information about this object.


## Curriculum Completion Use Case {#curriculum-completion-use-case}

Suppose the following for a Curriculum on Instrumentation:
  * The _Curriculum_ contains five (5) total _Training Requirements_. For the sake of this example, they are Requirements A through E.
  * One of these requirements (E) is configured to [assign additional training for Effective versions](/en/lr/60096/#assigning-additional-training). This means this requirement can have two (2) _Training Assignments_ (depending on when they are made), for a total of six (6) potential assignments for this curriculum.
  * Leslie Learner receives all six potential assignments, as the above requirement references two versions of the Training Material (an SOP on Instrumentation) when Vault creates her assignments for this curriculum:
      * SOP v6.0 is _Effective_ (the Steady State)
      * SOP v7.0 is _Issued_ (the Ready for Training state)

### Completion Percentage Calculation {#completion-percentage-calculation}

At a given time prior to completion, Leslie’s _Completion Percentage_ is 20% (1 ➗ 5 x 100) with assignments broken down per the below.
  * One (1) assignment (A) is complete. This means the requirement is fulfilled, and is included in the numerator.
  * Three (3) assignments (B-D) are incomplete. This means the requirements are unfulfilled and are not included in the numerator.
  * Requirement E is partially complete, as described below. The requirement’s one (1) incomplete assignment means the requirement is unfulfilled overall and cannot be included in the numerator:
      * _Effective_ SOP v6.0 is complete
      * _Issued_ SOP v7.0 is incomplete

Continuing the example, when Leslie completes the assignment for SOP v7.0, Vault counts Requirement E in the numerator, as illustrated below. In the meantime, Requirement E is excluded because the numerator only counts complete [_Assignment Detail_][4] records.

<a href="https://platform.veevavault.help/assets/images/curriculum-completion-use-case.png" data-lightbox="curriculum completion" data-title="" data-alt="Curriculum Completion use case">
  <img class="docimage" src="https://platform.veevavault.help/assets/images/curriculum-completion-use-case.png" alt="Curriculum Completion use case" style="max-width: 50%;width: 300px;"  />
</a>


##  Limitations {#limitations}

Training Assignments created via Direct Assignment, Self-Enrollment, or assigned as Substitute Training Assignments are excluded from _Completion Percentage_ calculations.


## About Curriculum Completion Status Migration {#migration}

In the 23R1 release, _Curriculum Completion Status_ records are automatically populated for active Training customers using the following logic, which differs slightly from the logic used during standard completion status updates. This field data is editable if you wish to update it:

  * _Initial Assigned Date_: Earliest creation date of an _Assignment Details_ record for a _Person_ and _Curriculum-Learner Role_ combination.
  * _Last Assigned Date_: Latest creation date of an _Assignment Details_ record for a _Person_ and _Curriculum-Learner Role_ combination.
  * _Initial Completion Date_: If all system-generated assignments of this curriculum are in the _Completed_ or _Completed Not Qualified_ states, the value is populated with the earliest _Completion Date_ for an assignment in the curriculum. If the curriculum is incomplete, this field will be blank. If the _Completion Date_ field is not used, this field will be blank.
  * _Last Completion Date_: If all system generated assignments of this curriculum are in the _Completed_ or _Completed Not Qualified_ states, the value is populated with the latest _Completion Date_ for an assignment in the curriculum. If the curriculum is incomplete, this field will be blank. If the _Completion Date_ field is not used, this field will be blank.
  * _Completion Status_ and _Completion Percentage_ are calculated and populated for every _Person_ and _Curriculum-Learner Role_ combination.

This logic also applies to _Curriculum Completion Status_ records Vault creates for imported training assignments.

[1]: #how-vault-calculates-completion
[2]: #about-the-numerator
[3]: #about-the-denominator
[4]: #about-the-assignment-detail-object
[5]: #curriculum-completion-use-case
[6]: #completion-percentage-calculation
[7]: #learner-homepage-calculation
[8]: #limitations
[9]: #migration
