# Configuring Classroom Training Requirements


<div class="note-border alert-important">
  <div class="alert alert-important" role="alert">
    <div><i class="far fa-exclamation-circle"></i></div>
    <div class="alert-text">
      <p><strong>Important</strong>: The instructions in this article apply to an older method of class scheduling and facilitation released with 19R3. While this method still functions, we recommend using <a href="/en/gr/50533903/">Instructor-Led Training</a>, the simplified method released with 22R3.</p>
    </div>
  </div>
</div>



Sometimes an organization needs Learners to attend instructor-led courses as part of their training matrix requirements. Using the _Classroom Training Requirement_ type, Training Admins can enable Learners to fill those requirements by attending class sessions. This article describes the steps necessary to configure _Classroom Training Requirements,_ schedule classes, track attendance, issue quizzes, and more. See <a href="/en/gr/50960/">Configuring Veeva Training</a> for information about creating other types of _Training Requirements_.

Instructors can add Learners to a [class roster][2], provide class materials to Learners in the form of Vault documents, associate a quiz with each class session, and track attendance. Learners can view _Classroom Training Assignments_ and see information about the class schedule and sessions, as well as take quizzes.

This article describes a sample configuration. The labels for lifecycle states, user actions, sections and additional components are configurable.

## Configuring Classroom Training Overview

These are the basic configuration components for classroom training:

  * **[Create a Classroom Training Requirement][3]**: Create the requirement, add any class materials, and associate it with curricula. When ready, change the requirement's state to an eligible state for automatic training assignment creation.
  * **[Schedule a Class][4]**: Make a classroom training instance by creating a _Class Schedule_ object record and associating it with an existing _Training Requirement_. Determine the roster for the scheduled class, schedule sessions, and associate quizzes with the _Classroom Schedule_. When ready, change the schedule's state to one that sends notifications to Learners.
  * **Issuing a Quiz**: For the _Session-Quiz Design_ lifecycle, configure the "Make Available" user action on the _Initiated_ state.
  * **Grading**: For the _Class Schedule_ lifecycle, configure the "Set Class Completion" user action on the _Class in Progress_ or custom states, or the entry action of the same name in the _Class Completed_ or custom states.

## How to Create a Classroom Training Requirement {#how-to-create-a-classroom-training-requirement}


<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>: The instructions in this article apply to the creation of <em>Classroom Training Requirements</em> for use with an older method of class scheduling and facilitation released with 19R3. To create a <em>Classroom Training Requirement</em> for use with the newer Instructor-Led Training functionality, use the <a href="/en/gr/50533903/">updated creation method</a>.</p>
    </div>
  </div>
</div>



The following steps describe creating a _Classroom Training Requirement_. See <a href="/en/gr/50960/">Configuring Veeva Training</a> for information about creating other types of _Training Requirements_.

  1. Create a new _Training Requirement_ object record from **Business Admin**, a custom object tab, or from the details page of the related curriculum.
  2. In the _Create Training Requirement_ dialog, select **Classroom Training Requirement** from the drop-down. Note that once you create a _Training Requirement_, you cannot change its type.
  3. Fill in the required details. Vault lists the _Name_ field internally and displays the _Title_ on the Learner's <a href="/en/gr/54488/">class details task page</a>. Select a _Class Completion Criteria_:
       * **Instructor sets Class Completion Status**: Select this option if you want the instructor to set _Class Completion Status_ for each _Class Roster_ record manually after reviewing attendance and quiz grade values. See the [best practices information][11] for _Class Roster_ for configuration recommendations.
       * **System sets Class Completion Status**: Select this option if you want Vault to calculate and set _Class Completion Status_ for each _Class Roster_ record automatically based on the _Learner Attendance Status_ picklist value on the _Session Roster_ record for only sessions marked as required, and, if there was a quiz, based on the _Quiz Passed?_ value of the _Quiz Issuance Tracker_ related record.
  4. Optional: Select <a href="/en/gr/4788081/">recurrence options</a>.
  5. Optional: Select a value for **Allow Self-Registration?**. If you select _Learners can self-register_, Learners can choose between any available _Class Schedules_ and add themselves without further action by the class facilitator. See [details][7] below.
  6. Optional: Select a document to provide the **Learner Homepage Card Image**. See <a href="/en/gr/55698501/#card-images">additional details</a> on how Vault displays images on the Learner Homepage.
  7. Optional: Select the **Is A Substitute Training Requirement** checkbox to use this _Training Requirement_ as a substitute. See <a href="/en/gr/62206/">Working with Substitute Training Requirements</a> for details on this and other substitute-specific fields.
  8.  Optional: Select the **Allow Self-Enrollment?** checkbox to allow Learners to enroll in the _Training Requirement_ via the _Explore_ tab on the <a href="/en/gr/66151/#explore">Learner Homepage</a>. When selected, you must additionally select one of the **Self-Enrollment Duration Options**. See additional details about <a href="/en/gr/829558/#how-self-enrollment-works">Self-Enrollment</a>.
  9.  Optional: In the **Completion Credit Given if Completed Via** field, select creation sources which can satisfy this requirement. See details about completion credit for <a href="/en/gr/829558/#how-self-enrollment-works">Self-Enrollment</a>.
  10. Optional: Select whether to **Allow** <a href="/en/gr/735722/">**Learner Exemption**</a>.
  11. Click **Save**.
  12. Add the _Training Requirement_ to one or more curricula by clicking into the _Training Requirement_ object record and clicking **Add** within the _Curricula_ section.
  13. Optional: On the _Training Requirement_ object record detail page, add any training documents to the _Class Materials_ section. These class materials are carried over to the _Class Schedule_. Note that you cannot add ZIP files as training documents in this type of Training Requirement. When documents on a Classroom Training Requirement are revised, Vault creates a Training Requirement Impact Assessment record.

The _Classroom Training Requirement_ will not be eligible for assignment until the _Training Requirement_ object record enters a training-eligible lifecycle state. The _Update Training Assignments_ job creates _Classroom Training Assignment_ records. See the [best practices][11] section for more details on _Classroom Training Assignment_ creation behavior.

## How to Schedule a Class {#how-to-schedule-a-class}

To create a _Class Schedule_:

  1. Create a new _Class Schedule_ object record from **Business Admin** or a custom object tab.
  2. Fill in the required details. Vault displays text in the _Class Overview_ field on the Learner's class details task page. Select the _Classroom Training Requirement_ that this class should fulfil.
  3. Click **Save**.

### About Class Rosters {#about-class-rosters}

Once a Training Admin creates a _Classroom Training Requirement_ and associates it with one or more <a href="/en/gr/50960/">_Curricula_</a> (or <a href="/en/gr/52724/">directly assigns it to a Learner</a>), the _Update Training Assignments_ job creates _Classroom Training Assignment_ records.

When an Instructor selects one or more Learners from a _Class Roster_ on a _Class Schedule_ record, the Instructor is actually selecting the _Classroom_ _Training Assignment_ record. Instructors can add up to 100 Learners per Class Roster.

### Learner Self-Registration {#self-registration}

When Learners self-register for classes, it can reduce work for class facilitators as they will not need to manually add each Learner to a _Class Schedule_. If you have created a _Classroom Training Requirement_ with self-registration allowed, Learners can add their _Classroom Training Assignment_ to a _Class Schedule_ by clicking into their assignment when the _Class Schedule_ has a _Self-Registration Status_ value of "Open for self-registration".

To ensure that Learners can only add themselves to a _Class Schedule_ at the appropriate time, configure a lifecycle state for the _Class Schedule_ object with an entry action to update the _Self-Registration Status_ field to "Open for self-registration". Then, configure another state and entry action to change the value to "Closed for self-registration".

Learners can change their class registration as long as all of the following conditions are met:

* The _Class Schedule_ that the Learner is currently a part of has a _Self-Registration Status_ field value of "Open for self-registration"
* There is at least one additional _Class Schedule_ that is open for self-registration
* The _Training Assignment_ has an _Allow Self-Registration?_ field value of  "Learners can self-register"

Registration should close prior to the _Class Schedule_ lifecycle state in which a facilitator will conduct the class.

To ensure Learners are aware they need to self-register for a class, configure a notification to send when they receive a _Classroom Training Assignment_ that allows self-registration. When a Learner self-registers, the selection pop-up lists up to 50 _Class Schedules._ _Class Schedule_ records will not appear in the list if they are in either the _Class Completed_ or _Class Cancelled_ states. Learners must have the [appropriate permissions][13] to self-register.

### Populating a Class Roster {#populating-class-roster}

To manually populate the class roster with Learners:

  1. Click into a _Class Schedule_ object record from **Business Admin** or a custom object tab.
  2. In the _Class Roster_ section, click **Add** to open the _Add to Class Roster_ dialog box. This dialog box lists Learners with open _Training Assignments_ that fulfill the chosen criteria. Click the **plus** (**+**) icon in the top section of the dialog box to add additional criteria.
  3. Select up to 100 applicable Learners in the bottom section of the dialog box to add them to the class roster.
  4. Click **Save** to finish editing the class roster.

Vault does not create _Session Roster_ records automatically when you add new Learners. You must configure the **Update All Session Rosters** action as either a user action or entry action on the _Class Schedule_ object lifecycle, or as an event action on the _Session_ object lifecycle, and trigger this action to add new Learners to the appropriate session rosters.

### Scheduling Sessions

To create and schedule sessions:

  1. Click into a _Class Schedule_ object record from **Business Admin** or a custom object tab.
  2. In the _Sessions_ section, click **Create**.
  3. In the _Create Session_ dialog box, fill in the required details. If you select **No** for _Is this a required session?_, Vault disregards the session attendance when calculating completion using the _Set Completion Status_ entry action or user action.
  4. Select a value for _Session Closure Criteria_. If you select **Session cannot be closed if there are incomplete Quizzes**, all Learners must pass the Quiz prior to closing the session. If you select **Session can be closed if there are incomplete Quizzes**, Learners are not required to pass the Quiz. See [Configuring Session Closure Criteria][14] for more information.
  5. Click **Save**.

To add a quiz to a session:

  1. On required sessions, Select **Yes** for the _Require Quiz?_ field on a required session.
  2. In the _Quiz to Issue_ section of the _Session_ object record, click **Create** to open the _Create Session-Quiz Design_ dialog box. Note that you can only select a Quiz for a required session, and you can only select one (1) quiz.
  3. Click into the _Quiz Design_ field to search for and select a quiz design
  4. Click **Save**.

Once you are satisfied with the details of the _Class Schedule_, you can move it to the _Scheduled_ state. We recommend <a href="/en/gr/59885/#entry-actions">configuring notifications</a> such that when a _Class Schedule_ enters the _Scheduled_ state, all affected Learners receive Vault notifications and emails about the upcoming scheduled training, including its name, start date, and end date. Vault adds all Learners to the Sharing Settings for the applicable training materials and the _Class Schedule_, _Session_, and _Class Roster_ object records. Learners can view the task page for the classroom training. Note that if the _Classroom Training Assignment_ has not been added to a _Class Roster_, Learners will see a page directing them to come back again later.

### Configuring Session Closure Criteria {#configuring-session-closure-criteria}

Configure Session Closure Criteria picklist values and entry criteria to fit your business process, determining whether a _Session_ should be in the _Completed_ state if there are incomplete _Quizzes_. Use the picklist value to change the state of _Quiz Issuance Tracker_ to _Completed_ if using **Session cannot be closed if there are incomplete quizzes** or _Completed (Override)_ if using **Session can be closed if there are incomplete quizzes**. The picklist values and entry criteria configuration are recommendations and are not required.

## Facilitating Classroom Training {#facilitating-classroom-training}

The assigned Instructor for a _Class Schedule_ object record is the facilitator for the classroom training.

### How to Facilitate a Training Class

To facilitate a scheduled classroom training in Vault:

  1. Click into a _Class Schedule_ object record from **Business Admin** or a custom object tab.
  2. Select the **Change State to Class in Progress** action from the _Class Schedule_'s **Actions** menu.
  3. In the _Sessions_ section, click into the first session of the class.
  4. In the _Session Rosters_ section, click in the _Learner Session Attendance Status_ column for each Learner and select either **Present** or **Absent**, as appropriate.
  5. Perform the classroom training.

If the session has a quiz:

  1. Select the **Make Available** action from the quiz record's **Actions** menu.
  2. If the session was [configured to allow the session to close with incomplete quizzes][4], you can move on to the next step. Otherwise, allow Learners time to complete the quiz.

To complete a session:

  1. Select the **Change State to Session Completed** action from the _Session_ record's **Actions** menu.
  2. Repeat the steps above for each remaining session.

To complete the class:

  1. Select the **Change State to Complete** action from the _Class Schedule_'s **Actions** menu to close the record and complete the class.
  2. Optional: If the Class Schedule was configured with the _Instructor sets Class Completion Status_ option, click **Show in Tab** in the _Class Roster_ section and select a status for each Learner.
  3. Once the _Class Completion Status_ is set, the Learner's _Training Assignment_ is either in the _Completed State_ or in the _Did Not Complete_ state. If the Learner's _Training Assignment_ is in the _Did Not Complete_ state, the Learner must attend another class to get a completion credit for the Training Assignment.

## Best Practices for Classroom Training Configuration {#best-practices}

Classroom training is a highly configurable component of Veeva Training. We recommend using the provided lifecycle states in your processes. Following the below guidelines can help prevent misconfiguration or unexpected behavior:

### About the View Classroom Training Assignment Workflow

In many Vaults, the *Training Assignment* lifecycle's *Assigned* state includes a conditional entry action to automatically start the *VT: Classroom Training Assignment: View* workflow (`view_classroom_training_assignment__v`). This simple workflow was previously used for Learner navigation and notification purposes.

As of 25R3, this workflow is no longer necessary as the Learner Homepage allows Learners to navigate open tasks.

### Classroom Training Assignment Impact

When you create a _Class Schedule_, documents from the _Classroom Training Requirement_ are copied to it. Documents can be added or removed on the _Class Schedule_ record. Even if all documents are removed from the _Class Schedule_, if the documents on the _Classroom Training Requirement_ are updated, it impacts the _Classroom Training Assignment_.

### Class Roster {#class-roster}

Vault does not create _Session Roster_ records automatically when you add a new Learner. The **Update All Session Rosters** action is available both as a user action and entry action. You must trigger this action to add Learners to the appropriate session rosters. Note that the _Class Roster_ record must be in a _Completed_ or _Cancelled_ lifecycle state at the end of your workflow for Classroom Training.

Note that the _Class Roster_ record must be in a _Completed_ or _Cancelled_ lifecycle state at the end of your workflow for Classroom Training. If your _Classroom Training Requirements_ are configured to issue Workflow Tasks, configuring the _Cancel Classroom Training Workflow_ entry action or user action on the _Completed_ lifecycle state cancels related _Training Assignment_ workflows.

### Part of Class

When you add a Learner to a _Class Roster_, the system is actually adding the Learner's _Training Assignment_ to the _Class Roster_. On the _Training Assignment_, the `part_of_class__v` value is set to true, indicating that the _Classroom Training Assignment_ is part of a class. This indicates that the _Classroom Training Assignment_ cannot be part of another _Class Roster_. The _Part of Class_ value must be set to "No" via an <a href="/en/gr/59885/#entry-actions">entry action</a> when a _Class Schedule_ reaches its terminal state, either _Completed_ or _Cancelled._

If a Learner's _Classroom Training Assignment_ is part of a _Class Roster_, and then that assignment subsequently becomes no longer applicable for the Learner due to a training matrix update, Vault cancels the _Classroom_ _Training Assignment_. This can occur if the _Classroom Training Requirement_ is removed from a _Curriculum_, the _Curriculum_ containing the requirement is removed from the _Learner Role_, or the _Learner Role_ is removed from the _Person_.

### Classroom Training Requirement Changes

Evaluate the impact of a _Classroom Training Requirement_ on open _Training Assignments_ prior to moving it to the _Retired_ state. If a _Classroom Training Requirement_ record enters the _Retired_ state (`retired_state__v`), Vault cancels any open _Classroom Training Assignments_, even if the _Training Assignment_ is part of a class (`part_of_class__v = true`). Vault deletes the appropriate _Class Roster_ and _Session Roster_ records.

For other cases where a _Classroom Training Requirement_ is changed, such as its recurrence, document revision, or a document change, open _Training Assignments_ are not canceled if they are part of a class (their `part_of_class__v` value is **True**). Vault creates a new _Classroom Training Assignment_ record. We recommend creating a new _Class Schedule_ and adding the new _Classroom Training Assignment,_ or use <a href="/en/gr/71116/">Facilitated Training</a> to close out the new _Classroom Training Assignment_.

### Issue Training Assignments

If _Issue Training Assignments_ is set to **Yes** for a _Classroom Training Requirement Impact Assessment_, Vault assigns a new _Classroom Training Assignment_ to a Learner. If the Learner has an existing open _Classroom Training Assignment_ for that same Training Requirement with _Part of Class_ set to **Yes**, then the open _Classroom Training Assignment_ is not canceled, as it is part of a scheduled or in-progress class. We recommend creating a new _Class Schedule_ and adding the new _Classroom Training Assignment_, or use <a href="/en/gr/71116/">Facilitated Training</a> to close out the new _Classroom Training Assignment_.

If _Issue Training Assignments_ is set to **No** for a _Classroom Training Requirement Impact Assessment_, Vault assigns a new _Classroom Training Assignment_ to a Learner even if the Learner has an open _Classroom Training Assignment._ This behavior differs from _Vault Document Training Assignments,_ in which the open _Training Assignment_ is canceled and a new one created. If the open _Classroom Training Assignment_ has _Part of Class_ set to **No** or blank, the assignment is canceled. Otherwise, if _Part of Class_ is set to **Yes**, the assignment is kept open since the class could be ongoing and canceling would disrupt the relevant classroom training assignments. We recommend creating a new _Class Schedule_ and adding the new _Classroom Training Assignment_ or use <a href="/en/gr/71116/">Facilitated Training</a> to close out the new _Classroom Training Assignment_.

### Quizzes

If a _Quiz Design_ is updated on the _Session-Quiz Design_ object join record, there is no indication to an Instructor to re-issue the quiz. The Instructor must re-perform the _Make Available_ user action.

## Related Permissions {#permissions}

  * Users require _Create_ access to the _Class Roster_ object and _Read_ access to _Training Assignment_ records in order to add _Class Roster_ records. The _Read_ access to _Training Assignment_ records can be used by custom sharing or matching rules. For example, a custom sharing rule on _Training Assignment_ that gives the "Instructors" group access to _Training Assignment_ records. Another example would be a custom matching rule that matches the *Training Assignment*'s originating _Training Requirement_ and the *Class Schedule*'s originating _Training Requirement_.
  * Create <a href="/en/gr/25494/">Custom Sharing Rules</a> or <a href="/en/gr/36122/">Custom Matching Rules</a> to allow Instructors or other users to see records in the following objects: _Class Schedule_, _Class Roster_, _Session_, and _Session Roster_. By default, Vault automatically adds the Learner to these object records. For non-Vault Owners or non-Learners, create custom sharing rules to determine other *Users*' access to the records.
  * _Format_ (`format__v`) document field: This field is editable by default. However, when the field is configured with a <a href="/en/gr/2942/">Security Override</a> where the _Default Security_ is "Hidden", all users working with classroom training (including Learners, Instructors, and Vault Owners) must retain edit permissions.

### Permissions for Learner Self-Registration

* Learners must have _Read_ permission on the following objects: _Class Schedule_, _Class Roster_, _Classroom Training Assignment_, and _Person._ For Learners to view _Class Schedules_ on the Self-Registration page, create <a href="/en/gr/25494/">Custom Sharing Rules</a> or <a href="/en/gr/36122/">Custom Matching Rules</a> to allow all Learners to view _Class Schedule_ records that are open for self-registration. If you create a new Security Profile for Learners, ensure that the new Security Profile is added to the _All Internal Users_ or _Read-Only Users_ group, as custom sharing rules apply to those groups.

* Learners must have _Read_ permission on the following objects and fields in order to self-register for a class:
    * The following _Class Schedule_ object, and its object fields: _Start Date_, _End Date_, _Training Requirement_, and _Self-Registration Status_
    * The following _Class Roster_ object fields: The _Class Schedule_ field on the _Class Roster_ object.
    * The following _Classroom Training Assignment_ object fields: _Training Requirement_, _Part Of Class_, _Allow Self-Registration_, _Due Date_, and _Learner_
    * The _User_ field on the _Person_ object.

 [2]: #about-class-rosters
 [3]: #how-to-create-a-classroom-training-requirement
 [4]: #how-to-schedule-a-class
 [7]: #self-registration
 [11]: #best-practices
 [13]: #permissions
 [14]: #configuring-session-closure-criteria
 [17]: #class-roster
