# LearnGxP ContentDirect

<a class="external-link " href="https://learngxp.com/" target="_blank" rel="noopener">LearnGxP<i class="fa fa-external-link" aria-hidden="true"></i></a> is Veeva's accredited regulatory and compliance training content product. With ContentDirect, LearnGxP course subscribers with Veeva Training as their LMS solution can automatically receive content as it is published, eliminating the need for a Training Admin to manually upload and track new and updated course files.



<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>: This feature is only available for current or future Veeva Training customers, and must be <a href="/en/lr/6269941/">configured by an Admin</a> prior to activating a LearnGxP subscription.</p>
    </div>
  </div>
</div>




## How ContentDirect Manages Courses {#how-contentdirect-manages-courses}

In order to deliver e-learning courses directly to LearnGxP subscriber Training Vaults, Veeva uses an internal course storage tool called ContentDirect to manage and store finalized course files.

The Training Vault initiates a series of SDK jobs to enable the feature, deliver courses, and maintain licensing information. In subscriber Vaults, such jobs are read-only in **Admin > Operations > SDK Job Metadata**, and are reflected in **Admin > Operations > Job Status** once scheduled, running, and complete.



<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>: Delivered course ZIP files do not contain the course materials themselves, but rather a shell file, or a proxy for the course content that is “streamed” when a Learner accesses it. As such, you cannot open ContentDirect-delivered courses in SCORM file editors, nor in other non-Training Vaults. See <a href="/en/lr/626994/#working-with-delivered-content-direct-courses">Working with Delivered ContentDirect Courses</a> for more information.</p>
    </div>
  </div>
</div>



### How ContentDirect is Enabled {#how-contentdirect-is-enabled}

Once the subscriber Training Vault is [appropriately configured](/en/lr/6269941/) for E-Learning and ContentDirect, Veeva initiates the process to add courses and licensing information to a subscriber's Training Vault. This process begins when Veeva initiates the _VT: Register With LearnGxP_ job in the subscriber Vault.

Once the job completes, ContentDirect is enabled in the subscriber Vault in Application Settings. A sub-setting, **Licenses Available**, reflects the number of available licenses remaining in the subscriber Vault. This read-only value is maintained exclusively via Veeva activities in ContentDirect. See [About Licensing][6] for more information.


### How ContentDirect Delivers New & Updated Courses {#how-contentdirect-delivers-new-and-updated-courses}

Once subscribed, Veeva associates the licensed courses to the subscriber Vault. This prompts another job in the subscriber Vault to run and create course files in the Library.

When the _VT: Pull LearnGxP Content_ job runs successfully, Vault adds all subscribed courses as individual ZIP files under the _LearnGxP Training Materials_ document type in the assigned document lifecyle's starting state, for example _Draft_.

Additionally, Vault sets various [document fields][4] with values from ContentDirect, including the _LearnGxP Release Notes URL_ field with a link to the release notes for that particular course.

Vault updates courses similar to when they are created:
  1. A LearnGxP Admin uploads and approves a new course in ContentDirect.
  2. ContentDirect pushes the update to individual or all subscriber Vaults.
  3. The _VT: Pull LearnGxP Content_ job adds the course as a new version of the existing course, with updated metadata values.

Once delivered, courses are processed according to the [configured](/en/lr/6269941/) document lifecycle and workflows, and the subscriber Training Admin can create or update corresponding Vault Document _Training Requirement_ records. See [Working with Delivered ContentDirect Courses][5] for more information.

### LearnGxP Metadata Fields {#learngxp-metadata-fields}

The _LearnGxP Training Materials_ document type and _Training Requirement Impact Assessment_ object include several corresponding fields for storing relevant course metadata:
  * LearnGxP Course Type
  * LearnGxP Document?
  * LearnGxP Functional Area
  * LearnGxP Regulatory Region
  * LearnGxP Update Definition
  * LearnGxP Update Type

A LearnGxP Admin sets these values, then they are populated in the subscriber Vault upon transfer. Additionally, the subscriber Vault copies these values to related _Training Requirement Impact Assessment_ records.

A Vault Admin can [configure](/en/lr/6269941/) various efficiencies using these fields' metadata, including:
  * Creating reports.
  * Document lifecycle Field Dependencies.
  * Conditional _Training Requirement Impact Assessment_ workflow paths.

### LearnGxP Quizzes {#learngxp-quizzes}

LearnGxP courses with quizzes are SCORM 1.2 files configured to allow Learners up to three attempts to pass the quiz. This includes both LearnGxP courses managed directly by your organization and LearnGxP courses delivered to your Vault via ContentDirect.

When the Learner does not pass a quiz on the third attempt, Vault locks the course and [prompts](/en/lr/54488/#resetting-e-learning-course-progress) them to contact an Admin to [reset](/en/lr/73388/#reset-course-progress) their progress.

## Working with Delivered ContentDirect Courses {#working-with-delivered-content-direct-courses}

LearnGxP courses delivered via ContentDirect are SCORM E-Learning files, [hosted](/en/lr/73388/#hosted) by Veeva. This means:
  * Course ZIP files do not contain the course materials themselves, but rather a shell file, or a proxy for the course content that is "streamed" when a Learner accesses it. This mechanism is how Veeva retains LearnGxP content and version control.
  * ContentDirect-delivered courses cannot be opened in SCORM file editors, nor in other non-Training Vaults.
  * Training Admins can preview the course using the **Preview E-Learning Content** action in the configured document lifecycle state(s).
  * Training Admins are not required to [define a course's _Training Completion Criteria_](/en/lr/61656/) as they normally would for hosted E-Learning courses. Completion criteria are defined by a LearnGxP Admin.

Once a new or updated course is added to the Library, the next steps depend entirely upon your organization's configured requirements for [ContentDirect](/en/lr/6269941/) and the [Training application](/en/lr/50960/).

At minimum, Training Admins in subscriber Vaults must ensure the following to assign new or updated courses to Learners:
  * The course is added to a _Training Requirement_, with the _LearnGxP Training Requirement?_ field populated as "Yes". The requirement must be part of a Curriculum with associated Learner Roles and Learners in order to be considered for [assignment automation](/en/lr/50967/).
  * Any outstanding _Training Requirement Impact Assessment_ workflow tasks are complete so that the _VT: Update Training Assignments_ job can assess requirements and create assignments accordingly.

### About LearnGxP Course Images

The [Learner Homepage](/en/lr/66151/)'s card view quickly shows Learners an assignment's relevant details, including an image related to assignment content. In most subscriber Vaults, ContentDirect automatically manages all LearnGxP-provided course images. Otherwise, your organization can [opt out](/en/lr/6269941/#enabling-learngxp-course-images) of this functionality, allowing a Training Admin to manually populate a course image from your Vault Library via the requirement's _Learner Homepage Card Image_.

## About ContentDirect Licensing {#about-licensing}

Vault validates ContentDirect licenses each time a Learner selects **Launch Content** from a _Training Assignment_. This includes assigning unique Learners a license automatically the first time they select this action.

When Vault assigns a license to a unique Learner, it is counted as one in-use license assigned to that Learner. Once licensed, Learners retain unlimited access to any subscribed, assigned courses, as long as enough licenses are available at the time the content is launched.

It is possible for Learners to lose access to an assigned course, even after starting it. Learners are redirected to an error page upon launching content when:
  * The subscribed Vault's **Licenses Available** count is zero.
  * An organization no longer subscribes to a course, or the subscription has [expired][8].
  * A LearnGxP Admin [removes a course][8] from ContentDirect.



<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>: Subscriber Vault Admins cannot adjust or manipulate license counts directly. Organizations requiring more licenses should contact their LearnGxP representative to add more licenses. Otherwise, licenses are released only upon deactivating a licensed Learner (updating their <em>User</em> record status to <em>Inactive</em>).</p>
    </div>
  </div>
</div>




### LearnGxP Users Licensed Object {#about-the-learngxp-users-licensed-object}

The subscriber Vault and ContentDirect use the _LearnGxP Users Licensed_ object to maintain the bidirectional flow of licensing information:
  * The first time a unique Learner selects **Launch Content** from a _Training Assignment_ for any LearnGxP course, the subscriber Vault creates a _LearnGxP Users Licensed_ record specific to that Learner.
  * ContentDirect references the record to initiate a job and subtract one (1) license from the **Licenses Available** count in the subscriber Vault's Application Settings.

The _LearnGxP Users Licensed_ object is a system-managed object. Records cannot be edited, however the object is available for reporting and monitoring of license counts, as well as viewing other metadata such as a licensee's _User Status_.

### Subscription Expiration & Course Removal {#subscription-expiration-and-course-removal}

When an organization no longer subscribes to a course, or if the course is retired or obsoleted in ContentDirect, the correlating information in subscriber Vaults does not change, so that the _LearnGxP Training Materials_ document and related _Training Requirement_ can be retired or otherwise removed from the training matrix.

Unless and until this occurs, Learners retain their assignments and are redirected to the licensing error page upon clicking **Launch Content**.

[1]: #how-contentdirect-manages-courses
[2]: #how-contentdirect-is-enabled
[3]: #how-contentdirect-delivers-new-and-updated-courses
[4]: #learngxp-metadata-fields
[5]: #working-with-delivered-content-direct-courses
[6]: #about-licensing
[7]: #about-the-learngxp-users-licensed-object
[8]: #subscription-expiration-and-course-removal
