# Instructor-Led Training

Veeva Training includes a streamlined process for planning and running classes. Using the Class page, Instructors can add Learners, publish the class, track attendance, issue a quiz, and complete the class. The process also makes it easy to document classes that have run in the past, without needing to alert Learners.


<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 Instructor-Led Training process must be enabled before use. The instructions in this article apply to the method of class scheduling and facilitation released with 22R2.2. While this method is recommended, instructions for the older method are still available <a href="/en/lr/57241/">here</a>.</p>
    </div>
  </div>
</div>



## Enabling Instructor-Led Training

You can enable Instructor-Led Training (ILT) by adding the _Classes_ section to the _Classroom Training Requirement_ object type page layout. If you were previously using the older method of classroom training released with 19R3, you should also remove the _Class Schedules_ section. If you are moving from the older method to the ILT method, there are additional required configuration updates. Contact your Veeva Representative, Product Expert, or Managed Services representative for more details. Classes created through the _Classes_ section automatically use the simplified Instructor-Led Training interface.

The simplified ILT interface supports single-session _Classes_ only. If you plan to create many multi-session classes in the future, you should continue using the [older Classroom Training method](/en/lr/57241/). If you plan to have few or no multi-session classes in the future, you should move to the newer ILT experience.

### About Existing Classes

To maintain visibility of any existing multi- or single-session classes, Vault automatically places them in the _Classes_ section you added when updating the _Classroom Training Requirement_ object page layout to accommodate ILT.

To view these classes in the ILT interface, you can update the _Updated UI?_ field within the Class Schedule to _Yes_ (true).

<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>: In some cases, Vault displays an error when a past class is missing certain key data required for the new UI. To resolve this, change the <em>Updated UI?</em> field to <em>No</em> (false).</p>
    </div>
  </div>
</div>



### Configuring Learner eSignature {#configuring-learner-esignature}

<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>: Learner eSignature functionality is not supported if your Vault has custom tasks configured on the <em>VT: Classroom Training Assignment: View</em> workflow.</p>
    </div>
  </div>
</div>



By default, eSignatures are configured as manual input, but you can configure Learner eSignatures as required at the Training Requirement level so that all classes for a Training Requirement require Learners to record their eSignature.

To configure Learner eSignature for Training Requirements:

1. Navigate to **Admin > Configuration > Objects > Class Schedule** (`class_schedule__v`).
2. For the _Learner E-Signature Required_ (`learner_signature_required__v`) field, set the default value to **training_requirement__vr.learner_signature_required__v**.
3. Navigate to **Objects > Training Requirement** (`training_requirement__v`).
4. Add the _Learner E-Signature Required_ (`learner_signature_required__v`) field to the Training Requirement page layout.
5. Select the **User must always enter a value (required)** checkbox if you want to make the Learner eSignature required.

To enforce Learner eSignatures for all classes, complete the configuration steps above and set the **Default Value** to **True** for the _Learner eSignature Required_ (`learner_signature_required__v`) field on the _Training Requirement_ (`training_requirement__v`) object.

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

The following steps describe creating a _Classroom Training Requirement_. See [Configuring Veeva Training](/en/lr/50960/) 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 [class details task page](/en/lr/54488/).
  4. Optional: Select [recurrence options](/en/lr/4788081/).
  5. Optional: Select a value for **Allow Self-Registration?**. If you select _Learners can self-register_, Learners can [choose][1] between any available _Class Schedules_ and add themselves without further action by the class facilitator.
  6. Optional: Select a document to provide the **Learner Homepage Card Image**. See [additional details](/en/lr/55698501/#card-images) 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 [Working with Substitute Training Requirements](/en/lr/62206/) 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 [Learner Homepage](/en/lr/66151/#explore). When selected, you must additionally select one of the **Self-Enrollment Duration Options**. See additional details about [Self-Enrollment](/en/lr/829558/#how-self-enrollment-works).
  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 [Self-Enrollment](/en/lr/829558/#how-self-enrollment-works).
  10. Optional: Select whether to **Allow** [**Learner Exemption**](/en/lr/735722/).
  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.

## Creating Classes {#creating-classes}

The instructions in this section assume that Training Admins have already created _Classroom Training Requirements_ and that the resulting assignments have been issued to Learners via training automation. These instructions detail actions typically performed by Training Admins or Instructors.

To create a class that an Instructor will run either immediately or at a future time:

  1. Navigate to the relevant _Classroom Training Requirement_, either in **Business Admin** or in a custom object tab.
  2. In the _Classes_ section, click **Create**.
  3. Fill in the required details in the _Create Class_ dialog. 
     * Vault includes the **Start Date**, **End Date**, **Session Location**, **Class Overview** and other detaills in the resulting [Learner notification][3]. The **Class Overview** can be useful, for example, for including details such as the Microsoft Teams or Zoom meeting link. When this notification includes the `$AddToCalendar` token, these details are additionally available within the Google or Outlook meeting.
     * When you populate or update the **Start Date/Time** and **End Date/Time**, Vault sends an email and notification to registered Learners, provided the class is [_Published_][3] or otherwise in an open state, except _In Planning_. The Instructor also receives the email and notification in any open state, including _In Planning_.
  4. Select a [**Self-Registration Status**][1] from the drop-down.
  5. Optional: Select the [**Learner E-Signature Required?**][12] checkbox to require Learners to record their eSignature to acknowledge that they have participated in the training.
  6. Enter the **Maximum Attendees** and/or **Minimum Attendees** allowed for the class. Leave these fields blank if you do not want to enforce attendee limits.
  7. Select the [**Manually Manage Waitlist?**][13] checkbox if you want to manually manage the Learners on the waitlist. Leave the checkbox deselected if you want Vault to automatically manage the waitlist.
  8. Optional: Populate the **Session Location**.
  9. Select an **Instructor**. You can optionally leave this field blank and update it at a later time. See [details][11] below.
  10. Optional: View and fill in any additional custom fields by clicking the plus (**+**) icon in the dialog.
  11. Click **Save**. Vault takes you to the Instructor homepage, from which you can add Learners, a quiz, attachments, or edit details as needed before [publishing][3] and running the class.

### Sharing Settings & Permissions {#class-instructors-sharing}

The user selected in the Instructor field is automatically added to Sharing Settings with the _Instructor_ Application Role for the _Class_, _Class Roster_, _Session_, and _Session Roster_ records. Ensure the Instructor user's permission set has the appropriate [permissions][2], and that the _Instructor_ Application Role has the appropriate lifecycle permissions.

When a user is added to the Instructor field, they receive a notification email using the `vt_ilt_instructor_added_to_class__v` template. Adding a _Person_ to this field grants them the _Instructor_ Application Role for this class only, allowing them to take the necessary actions on the _Class_ record via the configured permission set.

Vault automatically adds Learners on a class schedule to the Sharing Settings using Application Assignment with the _Learner_ Application Role for classroom-related objects.

Ensure that the necessary users' permission sets have the appropriate [permissions][2] to all classroom-related objects in addition to the system-managed Class Schedule Viewers (`class_schedule_viewers__v`) and Session Viewers (`session_viewers__v` Custom Sharing Rules that automatically provide read access to the _Class Schedule_ and _Session_ objects.

### Documenting Completed Classes

To create a class that has already been run, for example, if you are simply documenting the results of a class that was run outside of Vault, you can create a _Class_ record using the same method as you would for a future class. Indicate that the class already occurred by selecting the **This class has already occurred** checkbox in the _Create Class_ dialog.

If you fill in start and end dates and times from the past, Vault automatically selects this checkbox. Once you save this class, you cannot change the value of the **This class has already occurred** checkbox.

You cannot add a quiz for a class that has this checkbox selected.

### About Learner eSignatures {#about-esignature}

To require the Learner to record their signature indicating they have attended the training class, select **Yes** for the **Learner E-Signature Required?** field. During the attendance check, once the Learner is marked as present, Vault issues an eSignature task that requires the Learner to [record their eSignature](/en/lr/54488/#about-esignature) to acknowledge that they attended the training. Absent Learners are not issued an eSignature task.

## About the Class Page

The Class page is the main control page for Instructors and Admins during the planning and running phases of a class. The page consists of a few main tabs and panels:

### Roster Tab

From this tab, you can [add Learners to the roster][4], [take attendance][8], view quiz status, and control class results for each Learner. Once you've added a Learner to the roster, clicking on their username will navigate to the [Learner's _Person_ record](/en/lr/46534/). You can search the roster list using the search box in the upper-right corner of this tab.

### Waitlist Tab

From this tab, you can view the Learners on the waitlist, [add waitlisted Learners to the roster][4], and remove Learners from the waitlist, depending on the [_Manually Manage Waitlist_][13] setting for the class. Click a waitlisted Learner's username to navigate to the Learner's Person record. You can search the waitlist using the search box in the upper-right corner of the tab, or use the **Attendance** column to filter by a Learner's attendance status.

### Class Information Panel

This panel lists and links to pertinent information defined during class creation, including the relevant _Classroom Training Requirement_, class time and duration, location, self-registration status, Instructor, description, and the maximum number of allowed attendees. You can edit _Class_ details from this panel by clicking the pencil icon.

Each time you update the **Start Date/Time** and **End Date/Time** within the _Class_ details dialog, Vault sends an email and notification to registered Learners, as long as the class is [_Published_][3] or otherwise in an open state (except _In Planning_).

### Quiz & Materials Panel

From this panel you can [add or change a quiz][5] for the class, [issue that quiz][6] during the class, and [add class materials][7].

## Preparing a Class

Classes have a planning period before being published for use. During this preparatory period, you can make any necessary additions or changes on the Class page as explained below. All of the following setup actions are available during the _In Planning_ and _Published_ states, thus you can publish the class and fill in these details later.

### Adding Learners to the Roster {#adding-learners}

To add Learners to a class at any time, click **+ Learners** in the Roster tab, then select one or more Learners in the dialog. If the class already has Learners listed, click the plus (**+**) icon at the top of the Roster tab. You can remove a Learner by hovering over their name and clicking the trash can icon. You can also [add waitlisted Learners][13] to the roster.

 Instructor-Led Training supports small classes with up to 100 Learners and large classes with 100 to 1,000 Learners when the [_Increase Classroom Training Maximum Roster Count_ application setting][14] is enabled.

### Managing the Waitlist {#managing-waitlist}

The _Waitlist_ tab displays Learners that have been waitlisted once the class reaches the configured attendee limit. If self-enrollment is allowed for the class, Learners can manually add themselves to the waitlist when the maximum limit is reached.

The _Manually Manage Waitlist_ setting selected when creating a class determines whether you can manually manage the Learners on the waitlist or if Vault automatically manages the waitlist for you.
  * If _Manually Manage Waitlist_ is on, you can manually add Learners to the waitlist, remove Learners from the waitlist, and add waitlisted Learners to the roster.
  * If _Manually Manage Waitlist_ is off, Vault automatically adds the waitlisted Learner who is next in line to the roster when an opening becomes available.
  * When transitioning a class from manually-managed to auto-managed, Vault automatically moves waitlisted records to available slots on the roster.

To add a Learner to the waitlist, click **+ Learners** in the _Waitlist_ tab, then select one or more Learners in the dialog. If the waitlist already has Learners listed, click the plus (**+**) icon at the top of the _Waitlist_ tab. To remove a Learner from the waitlist, select **Remove from Waitlist** from the **Actions** menu.

To add a waitlisted Learner to the roster, select **Add to Roster** from the **Actions** menu. If you add a waitlisted Learner to the roster and the class is full, Vault prompts you for confirmation before adding the Learner and automatically increases the **Maximum Attendees** value to accommodate the Learner. When you add a Learner to the roster, the Learner receives a notification that they have been added to the class.

### Adding a Quiz {#adding-quiz}

If you would like to add a quiz for Learners to complete, add it by clicking **+ Quiz** in the quiz and materials panel, then selecting the appropriate quiz design in the dialog. You can remove or change the quiz by hovering over the quiz name and clicking the trash can icon. You cannot add a quiz for a class that has the **This class has already occurred** checkbox selected.

### Adding Materials {#adding-materials}

If there are documents on the _Classroom Training Requirement_, Vault copies these documents to the _Class_ under the _Materials_ section. Vault also makes them available to Learners by adding them to the _Trainee_ role on the Library document.


To add additional documents, click the plus icon (**+**) in the materials panel, then select the appropriate documents in the dialog. You can remove materials by hovering over the document and clicking the trash can icon.

### Adding Attachments

You can add Attachments to a Class by clicking **+ Attachments** in the quiz and materials panel. Attachments are not made available to Learners. Instructors and Admins can add content as attachments that are not contained within Vault. For example, an Instructor could upload their own slide deck, or they could upload a copy of a paper roster.

### Changing Instructors

You can change _Instructors_ by editing the _Class Information_ section. The previous Instructor will be removed from Sharing Settings for the _Class Schedule_, _Class Roster_, _Session_, and _Session Roster_. The newly added Instructor will be added to Sharing Settings and will receive an email. If there is a [workflow for the Instructor][9], the user will be prompted to cancel the workflow task.

## Publishing a Class & Notifying Learners {#publishing}

When you click **Publish**, Vault sends an email and notification to registered Learners, detailing the class **Start Date**, **End Date**, **Session Location**, and **Class Overview** populated when [creating][10] or updating the class, as well as a link to the class itself. 

When your Vault uses the default notification (`vt_ilt_added_to_class__v`), the `$AddToCalendar` token allows recipients to add the class to their Google or Outlook calendar directly from the email or in-Vault notification, or from the Learner homepage. If your organization uses a custom version of this notification, you can add this token manually.

Publishing a class additionally makes it available to Learners for [self-registration][1].

## Self-Registration {#self-registration}

The _Self-Registration Status_ value on the class determines whether a Learner can add themselves to the roster or waitlist. This is useful when you want to set up several instances of a class, and Learners can choose which class fits their schedule.

The values of the _Self-Registration Status_ field are as follows:

  * **Open for Self-Registration**: This value means that Learners can see and sign themselves up for the class or add themselves to the waitlist, if applicable, as soon as the class is created.
  * **Closed for Self-Registration**: This value means that Learners cannot see or sign themselves up for this class.
  * **Pending: Training Requirement allows self-registration**: This value means the Learner is not able to see or sign themselves up for this class immediately upon creation. Use this value when you want the class to automatically become open for self-registration in the future. For example, you could configure an entry action in the _Class_ object lifecycle that will change this value to _Open for Self-Registration_ when the class changes to the _Published_ state.
  * **Pending: Training Requirement does not allow self-registration**: This value functions the same as _Closed for Self-Registration_.

### Self-Registration Notifications

When a Training Admin publishes a class, Vault additionally makes it available to Learners for self-registration based on the *Class Schedule*'s current *Self-Registration Status*: Upon entering the *Published* state, Vault sets the value accordingly. When the status is "Open for self-registration", Vault sends the standard *Class Open for Self-Registration* notification (`vt_ilt_open_for_self_reg__v`) to applicable Learners with *Read* permission for the *Class Schedule*.

The *Class Open for Self-Registration* notification text can be updated according to your organization's requirements. However, notification transmission upon entering the *Published* state is hard-coded and cannot be controlled via Admin configuration. For Instructor-Led Training, this notification replaces the entry action configured on the *Training Assignment* lifecycle's *Class Scheduled* state, where Learners receive the *VT: Notify: Classroom Self-Registration*.

## Running a Class

The functions described in this section become available after a class has been published, indicating that it is ready for use.

### Taking Attendance {#taking-attendance}

The instructor can manually mark Learners present or can generate a QR code for Learners to [mark themselves present](/en/lr/54488/#about-attendance).

To manually mark a Learner as present, click the checkmark icon in the _Attendance_ column of the Roster tab. Click the **X** to indicate that the Learner is absent. You can mark all Learners in the roster as present by clicking the **Mark all present** icon (<img class="inline" src="https://platform.veevavault.help/assets/images/ilt-mark-all-present-22r22.png" alt="Mark All Present" style="" />) at the top of the _Attendance_ column.

Vault allows instructors to generate a QR code for Learners to scan and mark themselves present. For in-person training, you can download the QR code and print it out for Learners to scan in the classroom.

To generate a QR code:
1. Select **Generate QR Code for Attendance** from the **Actions** menu. This action is only visible to Instructors with _Read_ permission for the _Class Schedule_ and _Session_ objects.
2. Vault displays the QR code in a dialog. Click **Copy Link** or **Download** to copy the attendance link or download an image of the attendance QR code.

QR codes only work for Learners who are registered for the session. After generating a QR code for Learners to mark themselves present, instructors can still manually mark them present or absent.

When a Learner's attendance value is recorded, Vault saves the _Attendance Capture Method_ as _Learner Marked Attendance_ or _Instructor Marked Attendance_.

### Issuing the Quiz {#issuing-quiz}

At any time after marking attendance, you can click the **Issue quiz** icon (<img class="inline" src="https://platform.veevavault.help/assets/images/ilt-issue-quiz-22r22.png" alt="Issue Quiz" style="" />) in the quiz and materials panel to make the quiz available for Learners to complete. Results of Learners' quiz attempts appear in the _Quiz_ column of the Roster tab. There must be an attendance value for every Learner on the roster before issuing the quiz.

You can make edits to the issued quiz and the roster after issuing the quiz for the first time. If you add a Learner, the **Issue quiz** icon becomes available again. If you edit the quiz, the **Issue quiz** icon becomes available, and clicking it issues the replacement quiz to any Learners that had not yet passed the previous quiz.

#### About Quiz Notifications

Learners automatically receive a Vault email and notification when a Training Admin issues and/or updates a quiz. The *Class Quiz Issuance Notification* template (`vt_ilt_quiz_issued__v`) template text can be updated according to your organization's requirements, however the notification transmission is controlled via trigger and cannot be configured in Vault Admin UI.

### Setting Class Results

Vault auto-populates values in the _Class Results_ column for each Learner based on the other roster data. Instructors can change these results by selecting a different value in the _Class Results_ drop-down.

#### Classes that Do Not Require eSignature

If there is no quiz for the class, the _Class Results_ column is auto-populated as follows based on the Learner's attendance value:

* **Completed**: The Learner is marked as present.
* **Did Not Complete**: The Learner is marked as absent.

If there is a quiz for the class, the class result is auto-populated as follows:

* **Pending Quiz Completion**: The Learner is present and has not taken the quiz, or has taken the quiz and failed. The Learner may have several more attempts remaining on the quiz and could take it again to pass.
* **Completed**: The Learner is present and has passed the quiz.
* **Did Not Complete**: The Learner is absent. An absent Learner does not receive a quiz.

#### Classes that Require eSignature

If there is no quiz for the class, the _Class Results_ column is auto-populated as follows based on the Learner's attendance value and eSignature task completion:

* **Completed**: The Learner is marked as present and has recorded their eSignature.
* **Complete, Pending E-Signature**: The Learner is marked as present but their eSignature has not yet been recorded.
* **Did Not Complete**: The Learner is absent. An absent Learner does not receive an eSignature task.

If there is a quiz for the class, the class result is auto-populated as follows:

* **Complete**: The Learner is present, has passed the quiz, and has recorded their eSignature.
* **Complete, Pending E-Signature**: The Learner is present, has passed the quiz, but has not recorded their eSignature.
* **Pending Quiz Completion**: The Learner is present and has not taken the quiz, or has taken the quiz and failed. The Learner may have several more attempts remaining on the quiz and could take it again to pass. This class result is used regardless of whether the Learner has recorded their eSignature.

### Completing the Class

Once you collect attendance and class results for every Learner on the roster, you can complete the class by clicking the **Submit Results** button in the top right of the page. In many configurations you will be required to provide an eSignature to perform this step.

When the class state changes to _Completed_, Vault reads each Learner's _Class Results_ and updates their _Training Assignment_. If the Learner's _Class Result_ is _Completed_, Vault changes their _Training Assignment_ to _Completed_ and closes it.

If their result is _Did not complete_, their _Training Assignment_ changes to _Did Not Complete Class_ and remains open. This Learner is then available to add to another roster, so they have another opportunity to complete the _Training Assignment_.

If the Learner's result is _Pending Quiz Completion_, Vault waits to learn their results. If the Learner eventually takes the quiz and passes, their result changes to _Completed_ and their Training Assignment will be updated. If they never pass the quiz, their Training Assignment remains open.

If a class requires Learners to record their eSignature to acknowledge that they attended the class, you can click **Submit Results** and complete the class even if a Learner has not yet recorded their eSignature.

If the Learner's result is _Complete, Pending eSignature_, their _Training Assignment_ remains open until they record their eSignature to acknowledge that they attended the training. Once they record their eSignature and complete the eSignature task, the _Training Assignment_ changes to _Completed_.

### Cancel a Class

You can cancel a class that is in planning or published by changing the _Class_ record's state to _Cancelled_. In some configurations, you can perform the **Change State to Cancelled** action from the Actions menu.

## Best Practices for Classroom Training Configuration

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

### Classroom Training Workflow

The following information applies when transitioning from the legacy ILT functionality:

* Inactivate any workflows associated with the legacy ILT functionality.
* We do not recommend configuring a task on the _Classroom Training Assignment_ workflow for the new ILT functionality.
* We recommend configuring the _Classroom Training Assignment_ workflow using the settings displayed in the following image:

<a href="https://platform.veevavault.help/assets/images/Training_ILT_ClassroomTrainingAssignmentWorkflow.png" data-lightbox="images" data-title="" data-alt="Classroom Training Assignment workflow example">
  <img class="docimage" src="https://platform.veevavault.help/assets/images/Training_ILT_ClassroomTrainingAssignmentWorkflow.png" alt="Classroom Training Assignment workflow example" style="width: 400px;"  />
</a>


### 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_.

### Part of Class

When you add a Learner to a _Class Roster_, the system actually adds 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 [entry action](/en/lr/59885/#entry-actions) 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_ before 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 [Facilitated Training](/en/lr/71116/) 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 [Facilitated Training](/en/lr/71116/) 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 is 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 using [Facilitated Training](/en/lr/71116/) to close out the new _Classroom Training Assignment_.

### Maximum Learner Count {#maximum-learner-count}

If your site expects to run an Instructor-Led Training class with more than 100 Learners, enable the **Increase Classroom Training Maximum Roster Count** application setting. This setting increases the maximum number of Learners that can be added to a single class to 1,000. By default, this setting is disabled. Before enabling this setting, ensure that all Learners have [read access][11] to the classes.

### Instructor eSignature Workflow {#instructor-esignature}

This workflow configuration is recommended if you would like to have the Instructor give their e-signature when submitting results by completing the class. This is a sample workflow, starting in the _Published_ state. When the Instructor performs Submit Results, the Instructor is prompted to give their e-signature and optionally add comments, then upon completion will change the _Class_ state to _Complete_.

<a href="https://platform.veevavault.help/assets/images/ilt-instructor-wf-22r22.png" data-lightbox="ilt-instructor-wf-22r22.png" data-title="" data-alt="Instructor eSignature Workflow Diagram">
  <img class="docimage" src="https://platform.veevavault.help/assets/images/ilt-instructor-wf-22r22.png" alt="Instructor eSignature Workflow Diagram" style="width: 200px;"  />
</a>

If you're using the eSignature workflow, you should also configure the _Cancel Classroom Training Workflow_ entry action on the _Canceled_ state, and configure it as a user action on all other states. This way, if the class is canceled or if someone other than the instructor completes the eSignature workflow, they will not have an outstanding workflow task.

### Class Schedule Lifecycle

We recommend the following configurations on the _Class Schedule Lifecycle_:

On the _Published_ state, add the following entry actions:
  * Entry Actions:
    * If **Self-Registration Status > equals > Pending: Open for self-registration**, then:
      * **Update field > Self-Registration Status >** `Picklist.self_registration_status__v.open_for_self_registration__v`
    * If **Self-Registration Status > equals > Pending: Closed for self-registration**, then:
      * **Update field > Self-Registration Status >** `Picklist.self_registration_status__v.closed_for_self_registration__v`
    * Optional: Start the [Instructor verification workflow][9].
  * User Action: **Cancel Class Schedule Workflow Tasks**

On the _Class Completed_ state, add the following entry actions:

  * Always **Change related object lifecycle state > Class Rosters > Completed**
  * If **Self-Registration status > equals > Open for self-registration**, then:
    * **Update field > Self-Registration Status >** `Picklist.self_registration_status__v.closed_for_self_registration__v`
  * Always **Update Related Record Field > Class Rosters > Class Completion Date >** `class_completion_date__v`

On the _Class Scheduled_ state:

  * Remove any self-registration-related entry actions.
  * Remove any user actions that would change the state to _Canceled_.

On the _Canceled_ state, add the **Cancel Class Schedule Workflow Tasks** entry action.

Add the following _Role Permissions_ on the _Published_ state:

  * _Learner_: Read
  * _Owner_: Read, Edit, Delete
  * _Editor_: Edit
  * _Direct Manager_: Read

### Class Roster Lifecycle

We recommend the following configurations on the _Class Roster Lifecycle_:

On the _Completed_ state, add the following entry actions:

  * If **Class Completion Status > equals > Completed**, then:
    * **Change related object lifecycle state > Training Assignment > Completed**
    * **Update Related Record Field > Training Assignment > Part of class > false**
  * If **Class Completion Status > equals > Did Not Complete**, then:
    * **Change related object lifecycle state > Training Assignment > Did Not Complete Class**
    * **Update Related Record Field > Training Assignment > Part of class > false**
  * Always **Update Related Record Field > Training Assignments > Completion Date >** `class_completion_date__v`

Add the following Role Permissions on the _Pending Quiz Completion_ state:

  * _Learner_: Read
  * _Direct Manager_: Read
  * _Owner_: Read, Edit, Delete
  * _Editor_: Read, Edit
  * _Viewer_: Read

### Session Lifecycle

On the _Session Completed_ state, remove all existing entry criteria. Ensure that the following is the only entry action configured: **Change related object lifecycle state > Session Rosters > Completed**.

### Training Assignment Lifecycle
On the _Completed_ state, update the entry action so that _Completion Date_ is [set with a formula](/en/lr/25772/), so that it is only set if the _Training Assignment_ is not of the classroom type.

## Related Permissions {#permissions}

### Instructor Permissions

The ILT feature introduces an Application Role called _Instructors_. With a user assigned to this Application Role, you have control over exactly what an Instructor can do via the permission set for that user's security profile. In order to have full permission to do everything they need to set up and run the class, the permission set should contain the following:

Objects:

  * _Class Schedule_: Read, Create, Edit, Delete
  * _Class Roster_: Read, Create, Edit, Delete
  * _Session_: Read, Create, Edit, Delete
  * _Session Roster_: Read, Create, Edit, Delete
  * _Session-Quiz Design_: Read, Create, Edit, Delete
    * Object Action Permission: _Make available_: Execute
  * _Class Schedule-Document_: Read, Create, Edit, Delete
  * _Person_: Read
  * _Checklist Design_ (all object types): Read
  * _TA Checklist_ (_VDTA Checklist_ object type): Read
  * _Quiz Issuance Tracker_: Read, Create, Edit
  * _Training Assignment (all object types)_: Read
  * _Section Design_ (both quiz types): Read
  * _Training Requirement_ (all object types): Read
  * _Media_ (Image): Read

Application:

  * _Workflow_: Participate, eSignature
  * _Document_: Download Document, Download Rendition
  * _User_: View User Profile
  * _Object_: Bulk Action
  * _Audit Trail_: View

Tabs:

  * _Home_: View
  * _My Learning_: View
  * _Class Schedules_: View

Pages:

  * All pages: View

Lifecycles:

  * _Class Schedule_: Read, Create, Edit, Delete
  * _Class Roster_: Read, Create, Edit, Delete
  * _Session_: Read, Create, Edit, Delete
  * _Session Roster_: Read, Create, Edit, Delete

Document Field: _Format_ (`format__v`): Editable. This field is editable by default. However, when the field is configured with a [Security Override](/en/lr/2942/) where the _Default Security_ is "Hidden", Learners, the _Instructors_ role, Vault Owners, and/or any other users working within the ILT interface must retain edit 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 [Custom Sharing Rules](/en/lr/25494/) or [Custom Matching Rules](/en/lr/36122/) 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. A Person that has been added to the Instructor field on a class will automatically be given access to the _Class Schedule, Class Roster, Session_, and _Session Roster_ records for this class. For non-Vault Owners or non-Learners, create custom sharing rules to determine other _Users_' access to the records. Their exact permissions on the class are controlled by their permission set.

### 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 [Custom Sharing Rules](/en/lr/25494/) or [Custom Matching Rules](/en/lr/36122/) to allow all Learners to view _Class Schedule_ records that are open for self-registration or add themselves to the waitlist, if applicable.

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.

  [1]: #self-registration
  [2]: #permissions
  [3]: #publishing
  [4]: #adding-learners
  [5]: #adding-quiz
  [6]: #issuing-quiz
  [7]: #adding-materials
  [8]: #taking-attendance
  [9]: #instructor-esignature
  [10]: #creating-classes
  [11]: #class-instructors-sharing
  [12]: #about-esignature
  [13]: #managing-waitlist
  [14]: #maximum-learner-count
