# Validation Management Overview

Veeva Validation Management is an application in the Quality suite that helps organizations manage and execute paperless validation across validation disciplines including: Computerized Systems Validation (CSV), Facility, Equipment, and Utility (FUE), process validation, cleaning validation, and method validation. Veeva Validation Management includes several key features:

  * Validation Management automation helps facilitate the creation of versions of validation entities as well as requirements.
  * Additional objects support validation activities and deliverables needed to prove an entity has been validated.
  * A paperless test execution experience where pre-approved test scripts consisting of setup steps and execution steps can be executed by one or more assigned executors. Executors can perform procedures defined by test authors, access requirements being challenged, describe their observed results, and upload attachments to provide objective evidence.
  * Test execution can be paused, terminated, and eventually resumed when exceptions or discrepancies are encountered. These exceptions and discrepancies can be created directly from the test step where the issue was encountered. The discrepancy will then undergo a workflow for investigation, root cause, and corrective action.

## Validation Management Data Model {#data-model}

Validation Management uses these core objects:

  * **Validation Entity**: An asset that needs to be managed by an organization's validation processes. Validation Management supports the following _Entity_ types: _Computer System_, _Cleaning_, _Equipment_, _Facility_, _Method_, _Process_, and _Utility_. For example: _VernSoft GxP System_
  * **Validation Entity Version**: A specific version of an asset at a point in time that will be evaluated by an organization's validation process. In other words, a versioned instance of an _Entity_ which contains the validation information for that specific version. For example: _VernSoft GxP System v1.4_ or _VernSoft GxP System v1.5_. A _Validation Entity Version_ will have its own unique requirements in addition to requirements that are still applicable from a prior version. The _Validation Entity Version_ will also have its own unique activities and validation deliverables.
  * **Validation Activity**: A specific activity performed upon a validatable entity. This object describes the purpose and scope of the deliverables needed for an entity to become validated and used in a production environment. Additional information captured includes start and end dates, participants, and all the deliverables needed to complete the activity. Activities have the following types: _Initial Qualification / Commissioning_, _Change / Modification_, and _Periodic Review_. For example: _VernSoft GxP System v1.5 Upgrade Validation Project_. The validation activity can also be thought of as a validation project that must be performed in order for the entity to become validated and used in production, while collecting all supporting evidence and completing all necessary validation procedures.
  * **Validation Deliverable**: A document or other artifact which supports or marks a milestone in a _Validation Activity_. The deliverable contains the work done to demonstrate that an entity is or is not validated. The _Validation Deliverable_ record functions as a placeholder for a deliverable document or test deliverable. For example: _Validation Plan 1.0 (VernSoft GxP System v1.5).docx._ Deliverables have the following types:
    * **Design / Requirements Deliverable**: Used for a _User Requirement Specification_ document, _Functional Requirement Specification_ document, or _Design Specification_ document.
    * **Planning Deliverable**: Used for validation plan documents.
    * **Reference Deliverable**: Used in cases where you need to leverage validation deliverables or content from a vendor, supplier, or other third party.
    * **Report Deliverable**: Used for report documents such a validation summary report or a requirements trace matrix report.
    * **Risk Assessment**: Used for risk assessments or impact assessment documents.
    * **Testing Deliverables**: Used for test protocols and test scripts. Each test protocol or test script needs one deliverable.
  * **Validation Requirement**: Describes the requirements against which entity or asset will be evaluated. When a new version of a _Validation Entity_ is created, Vault copies all the associated requirements from the previous entity. There are three types of requirements: _User Requirements_, _Functional Requirements_, and _Design Specifications_. For example: _UR-VernSoftGxP-1_.
  * **Validation Team Assignment**: A role assigned to an individual for a particular _Validation Entity_ record. Users with permission to create _Validation Team Assignment_ records at the _Validation Entity_ record level can assign a user to a specific validation role.
  * **Test Protocol**: Contains narrative content stored in a document record that is relevant to the overall protocol and also consists of one or many test scripts. The Test Protocol narrative content includes information such as the purpose, scope, system overview, responsibilities, reference information, execution requirements, appendices, or other information.
  * **Test Script:** Contains steps to be performed by assigned Executors to fulfill a required _Testing Deliverable_ that is part of the overall validation activity. Executors perform tests in the <a href="/en/gr/50533905/">test execution interface</a>. A _Test Script_ can be standalone or part of a _Test Protocol_. If multiple attempts to execute a _Test Script_ are needed for a particular _Testing Deliverable_, copies of the original _Test Script_ can be created for each additional test run.
  * **Requirements Traceability Matrix**: Vault creates placeholder _Requirements Traceability Matrix_ records when requirements are associated with an entity version. An entity version is created from a prior version such that each approved requirement has a trace matrix record for that version of the entity. These placeholder records are used to identify requirements which should be tested, but have not yet been planned for testing. Existing placeholder records are either updated or new records are added during test script authoring.

<div class="note-border alert-info">
  <div class="alert alert-info" role="alert">
    <div><i class="far fa-info-circle"></i></div>
    <div class="alert-text">
      <p><strong>Note</strong>: Vault prevents creation of custom fields on the following objects: <em>Validation Requirement Entity Version</em>, <em>Validation Deliverable Entity Version</em>, <em>Related Discrepancy</em>, <em>Template Required - Template Required Set</em>, and <em>Test Co-Author</em>.</p>
    </div>
  </div>
</div>



## Validation Management Roles

Validation processes require the collaboration of several individuals with separate responsibilities. These individuals are represented in Veeva Validation Management via the following roles.

### Business Process Owner or System Owner

The owner of the system or process being tested. This user is typically involved with authoring requirements, contributes to assigned validation deliverables, and is part of the approval process for validation deliverables.

### Approver

Any authority involved in the approval process for validation deliverables and fully executed _Test Scripts_. There can be multiple approvers for a given validation deliverable.

### Independent Reviewer

An individual involved in an independent review of individual _Test Scripts_. Responsible for ensuring that any discrepancies have been properly addressed and that the system is properly challenged to ensure that the validated state is reliable and compliant prior to involving final approvers.

### Quality Unit

The member of the quality assurance team with final authority over whether a validation deliverable is approved or rejected. This also applies to _Testing Deliverables_ to determine whether the test script has passed or failed, or is approved or rejected.

### Test Author

A user who is responsible for authoring _Test Protocols_ and _Test Scripts_, typically a member of the Validation team. For _Test Scripts_, the Test Author will add the content including all test steps that must be performed to ensure that all defined user and functional requirements will be challenged appropriately prior to submitting the _Test Script_ for pre-approval. Once pre-approved, _Test Scripts_ are available for execution by assigned executors.

### Test Co-Author

In cases where multiple users need to author test steps within the same _Test Script_, one or more Test Co-Authors may be necessary. They must be a member of the Validation team. The Test Author and Test Co-Authors can add, edit, or delete test steps simultaneously within the Test Authoring Interface.

### Lead Executor

In cases where multiple Executors are performing test steps within the same _Test Script_, the Lead Executor is responsible for the overall governance of the execution of the test script. The Lead Executor often performs a review of the testing work prior to submitting it for independent review or formal approval.

### Executor

A user who is responsible for performing assigned _Test Steps_ defined in _Test Scripts_. While test scripts often have only one Executor, in some cases the individual steps within a test script are assigned to multiple Executors.

## Minimum Permissions to Access Test Authoring, Test Execution, & Review Protocol UIs {#minimum-permissions}

The table below lists the minimum object-level permissions required for users to view Validation Management interface pages. In addition to these object-level permissions, users require the _Read_ field-level permission to all fields in these objects except for _Name_ and, if applicable, _State_ and _Object Type_. Vault displays an error message if the minimum permissions are not assigned at the object or field level to a user that attempts to open the Test Authoring, Test Execution, or Test Protocol Review interfaces. Permissions for the _Test Step Additional Prompt_ and the _Unit_ objects are not required if there are no _Test Step Additional Prompt_ records.

### Minimum Object-Level Permissions

| **Object** | **Test Authoring Interface** | **Test Execution Interface** | **Test Protocol Review Interface** |
| --- | --- | --- | --- |
| _Validation Entity_<br> (`val_inventory_item__v`) | Read for at least one object type | Read for at least one object type | Read for at least one object type |
| _Validation Entity Version_<br> (`val_entity__v`) | Read | Read | Read |
| _Validation Requirement Entity Version_<br> (`val_requirement_entity_version_svo__v`) | Read | Read | Read |
| _Validation Activity_<br> (`val_activity__v`) | Read | Read | Read |
| _Validation Deliverable_<br> (`val_deliverable_svo__v`) | Read (_Testing Deliverable_ object type) | Read (_Testing Deliverable_ object type) | Read (_Testing Deliverable_ object type) |
| _Validation Requirement_<br> (`val_requirement_svo__v`) | Read for all object types, including custom and base object types | Read for all object types, including custom and base object types | Read for all object types, including custom and base object types |
| _Traceability Matrix_<br> (`val_rtm_svo__v`) | Read | Read | Read |
| _Test Protocol_<br> (`val_test_protocol_svo__v`) | Read | Read | Read |
| _Test Script_<br> (`val_test_script_svo__v`) | Read | Read | Read |
| _Test Step_<br> (`val_test_step_svo__v`) | Read (_Setup Step_ and _Execution Step_ object types) | Read (_Setup Step_ and _Execution Step_ object types) | Read (_Setup Step_ and _Execution Step_ object types) |
| _Test Step Change_<br> (`val_test_step_change_svo__v`) | Not Applicable | Read | Read |
| _Discrepancy_<br> (`val_discrepancy__v`) | Not Applicable | Read | Read |
| _Related Discrepancy_<br> (`val_related_discrepancy_svo__v`) | Not Applicable | Read | Read |
| _Test Step Additional Prompt_<br> (`val_test_step_additional_prompt__v`) | Read | Read | Read |
| _Unit_<br> (`quality_unit_of_measure__v`) | Read | Read | Read |

### Minimum Field-Level Permissions {#minimum-field}

<table>
<tr>
<th>Object</th>
<th>Field</th>
<th>Test Authoring Interface</th>
<th>Test Execution Interface</th>
<th>Test Protocol Review Interface</th>
</tr>
<tbody>
<tr>
<td><em>Validation Entity</em><br> (<code>val_inventory_item__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><em>Validation Entity Version</em><br> (<code>val_entity__v</code>)</td>
<td><code>val_entity__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="2"><em>Validation Activity</em><br> (<code>val_activity__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>validation_entity__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="2"><em>Validation Deliverable</em><br> (<code>val_deliverable_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>validation_activity__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="9"><em>Validation Requirement</em><br> (<code>val_requirement_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>description__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>entity_version__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement_category__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement_id__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement_source__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement_version__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement_risk_assessment__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_strategy__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="6"><em>Traceability Matrix</em><br> (<code>val_rtm_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>validation_entity__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>deliverable__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>requirement__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_script__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_step__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="6"><em>Test Protocol</em><br> (<code>val_test_protocol_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>deliverable__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>document__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>document_unbound__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_protocol_id__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>title__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="8"><em>Test Script</em><br> (<code>val_test_script_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>co-author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>deliverable__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_protocol__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_script_id__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_run_number__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>title__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="27"><em>Test Step</em><br> (<code>val_test_step_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_results__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_results_fit_to_width__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_results_setting__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>attachment_setting__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>co-author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>comment__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>comment_allowed__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>complete__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>date_time_completed__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>date_time_witnessed__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>executor__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>expected_results__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>expected_results_fit_to_width__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>expected_results_setting__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>pass_fail_not_applicable__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>procedure__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>procedure_fit_to_width__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>procedure_setting__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>result_label__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>step__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>step_title__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_script__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>verdict_setting__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>witness__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>witness_required__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="9"><em>Test Step Change</em><br> (<code>val_test_step_change_svo__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>change_reason__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>field_changed__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>change_justification__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>new_value__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>original_value__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_script__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_step__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_step_additional_prompt__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td rowspan="18"><em>Test Step Additional Prompt</em><br> (<code>val_test_step_additional_prompt__v</code>)</td>
<td><code>validation_inventory_item__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_datetime_response__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_number_response__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>actual_text_response__v</code></td>
<td>Not Applicable</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>co-author__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>description__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>document_instruction__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>executor__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>fit_to_width__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>prompt_label__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>prompt_order__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>prompt_required__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_script__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>test_step__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>text_instruction__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>unit_of_measure__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
<tr>
<td><code>witness__v</code></td>
<td>Read</td>
<td>Read</td>
<td>Read</td>
</tr>
</tbody>
</table>
