# Importing Training Assignments (Training Management)

[QualityOne Vaults](/en/lr/55180/) allow you to import _Training Assignment_ object records from other training systems into your Vault using [Vault Loader](/en/lr/26607/) or the <a class="external-link " href="https://developer.veevavault.com/" target="_blank" rel="noopener">Vault API<i class="fa fa-external-link" aria-hidden="true"></i></a>.

To import _Training Assignments_ using Vault Loader, use the normal [object record import procedure](/en/lr/26607/), with the following additional guidelines:

* Imported records must include the _Creation Source_, _Training Requirement_, _Learner_, _Document_ fields, and may include the _Assigned Date_ and _Due Date_ fields. Except for _Due Date_, these fields are not editable once you create the record in Vault.
* Ensure you select the **Use record migration** checkbox prior to import.
* After import, run the _Update Training Assignments_ job to start automation functions.

In imported _Training Assignment_ records, the _Owner_ role (under the record's Sharing Settings) is set to the user who imported the records.

Vault also allows you to import a _Training Assignment_ which references, via the _Learner_ field, a _Person_ record that is not yet associated with a _User_. When you correct the _Person_ record to reference a _User_, [Training Management automation](/en/lr/55176/) updates the _Training Assignment_'s Sharing Settings the next time the job runs.

## Training Assignment Field Details {#field-details}

The following list shows field details for imported _Training Assignment_ object records:

<table>
  <tr>
    <th><strong>Column Header</strong></th>
    <th><strong>Field</strong></th>
    <th><strong>Example Value</strong></th>
    <th><strong>Notes</strong></th>
  </tr>
  <tr>
    <td><code>name__v</code></td>
    <td>Name</td>
    <td>Travel policy</td>
    <td>The name of the Training Assignment record.</td>
  </tr>
  <tr>
    <td><code>creation_source__v</code></td>
    <td>Creation Source</td>
    <td><code>import__v</code></td>
    <td>The value of this field during import must be <code>import__v</code>. <p></p>Vault manages the <code>system__v</code> and <code>direct_assignment__v</code> fields.</td>
  </tr>
  <tr>
    <td><code>training_requirement__v</code></td>
    <td>Training Requirement</td>
    <td>V1C000000000127</td>
    <td>Sets the object type using the object field name as the column header and the ID value of the record; if left blank, the object record will use the "base" type. For example, <em>Base Product</em>.</td>
  </tr>
  <tr>
    <td><code>learner__v</code></td>
    <td>Learner</td>
    <td>V0I000000000102</td>
    <td>Assignee of the <em>Training Assignment</em>.</td>
  </tr>
  <tr>
    <td><code>training_document__v</code></td>
    <td>Document</td>
    <td>8_2_0</td>
    <td>This field doesn't need to match the document version in the parent <em>Training Requirement</em>. The<em> Do Not Re-Train</em> field in the parent object should be set to <em>No</em> if you don't want Vault to re-issue assignments.</td>
  </tr>
  <tr>
    <td><code>state__v</code></td>
    <td>Lifecycle State</td>
    <td><code>completed__v</code></td>
    <td>The lifecycle state the record is imported into. At this time, Vault only supports the following states:<p></p><code>created_state__v</code><p></p><code>completed_state__v</code><p></p><code>cancelled_state__v</code></td>
  </tr>
  <tr>
    <td><code>estimated_time_minutes__v</code></td>
    <td>Estimated Time (Minutes)</td>
    <td>70</td>
    <td>The minutes a Learner is expected to spend to read and understand the content.</td>
  </tr>
  <tr>
    <td><code>due_date__v</code></td>
    <td>Due Date</td>
    <td>3/22/18</td>
    <td>This field is optional during import.</td>
  </tr>
  <tr>
    <td><code>assigned_date__v</code></td>
    <td>Assigned Date</td>
    <td>2018-11-07T14:50:00.000Z</td>
    <td>This field is required during import.<p></p>You can edit this field when <em>Creation Source</em> is set to <code>import__v</code>.<p></p>This is the date that Vault assigns the <em>Learner</em> the <em>Training Assignment</em> record.<p></p>Recurring training assignments use this field for calculation of <em>Next Training Date (Recurrence)</em>.</td>
  </tr>
</table>

## Best Practices: Importing Training Assignment Records {#best-practices}

Ensure the _Update Training Assignments_ job is inactive before the import process begins. If the job runs before you import ant records, Vault may assign Learners new _Training Assignment_ records, even if you import completed training assignment records later. To avoid this, inactive the job, complete the import process, then activate and start the job.

To avoid erroneously issuing Training Assignments, Vault references _Assigned Date_ rather than _Created Date_ on migrated _Training Assignment_ records when determining the most recent training completion record. Ensure that recently completed training records have a more recent _Assigned Date_ than previous completed training records for the same document.

Import or create records for the following objects before importing the associated _Training Assignments_:

* Documents
* Learner Role
* Curriculum
* Training Requirement

When importing or creating records in the _Training Requirement_ object, you can set the _Do Not Re-Train_ field to _Yes_, _No_, or blank. If set to _Yes_, and the user does not have a _Training Assignment_ for the Document or Document Version configured for the _Training Requirement_, Vault does not assign new _Training Assignment_ records.

For example, a _Training Assignment_ record references Document A v1.0, but the _Training Requirement_ references Document A v2.0. If you do not want the user to get a new _Training Assignment_ for Document A v2.0, set the _Do Not Re-Train_ field to _Yes_ in the _Training Requirement_. The _Update Training Assignments_ job will not assign a new _Training Assignment_ record.