---
schema_version: "1"
id: 28dfd7edb13efe5d4ab55f727b900ca50c3d82fc3700dfe1fd608ed27894e163
title: LearningItemType
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_meta/meta_learningitemtype.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_learningitemtype.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 9686b8898c8afdad10a047d142ba2272a7ab1501a030b0d270f064327dbfb056
description: Represents a custom exercise type that an Enablement user takes in an Enablement program in the Guidance Center. A custom exercise type also requires a corresponding LearningItem record for the Guidance Center and corresponding EnblProgramTaskDefinition and EnblProgramTaskSubCategory records for when admins create a program in Program Builder.
---
# LearningItemType

Represents a custom exercise type that an Enablement user takes in an Enablement program in the Guidance Center. A custom exercise type also requires a corresponding LearningItem record for the Guidance Center and corresponding EnblProgramTaskDefinition and EnblProgramTaskSubCategory records for when admins create a program in Program Builder.

![Important](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note_important.png)

#### Important

Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.

## Parent Type

This type extends the [Metadata](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/metadata.htm "The base class for all metadata types. You can’t edit this object. A component is an instance of a metadata type.") metadata type and inherits its fullName field.

## File Suffix and Directory Location

LearningItemType components have the suffix .learningItemType and are stored in the learningItemTypes folder.

## Version

LearningItemType components are available in API version 62.0 and later.

## Special Access Rules

- For Enablement admins to create, update, and delete Enablement programs, the Design and Deliver Enablement Programs permission is required. This permission is enabled by default as part of the Manage Enablement Essentials permission set, which comes with the Enablement add-on license.
- For users who take Enablement programs, the Take Enablement Programs permission is required. This permission is enabled by default as part of the Use Enablement Programs permission set, which comes with the Enablement add-on license.

![Important](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note_important.png)

#### Important

Custom exercises aren’t compatible with Partner Enablement programs.

## Fields

| Field Name | Description |
| --- | --- |
| apexEvaluationHandler | 
Field Type

string

Description

The ID of the Apex class that specifies how progress and completion of the custom exercise is assessed when users take the program in the Guidance Center.



 |
| apexSerializerDeserializer | 

Field Type

string

Description

The ID of the Apex class that specifies how data related to the custom exercise type is retrieved and deployed with change sets or managed packages.



 |
| customField | 

Field Type

string

Description

Required. The programmatic name of a custom lookup field on the [LearningItem object](https://developer.salesforce.com/docs/atlas.en-us.264.0.object_reference.meta/object_reference/sforce_api_objects_learningitem.htm "HTML (New Window)") that references the custom object used with this custom exercise.

For example, if a custom exercise type shows a screen flow, maybe the custom object’s name is ScreenFlow\_Object\_\_c and the custom field on LearningItem is named ScreenFlow\_Field\_\_c. For details, see [Implement Custom Exercise Types for Enablement Programs](https://developer.salesforce.com/docs/sales/enablement/guide/enablement-custom-exercises-intro.html "HTML (New Window)") in the _Sales Programs and Partner Tracks with Enablement Developer Guide_.

This field is unique within your organization.





 |
| customObject | 

Field Type

string

Description

Required. The programmatic name of the custom object used with this custom exercise.

For example, if a custom exercise type shows a screen flow, maybe the custom object’s name is ScreenFlow\_Field\_\_c. For details, see [Implement Custom Exercise Types for Enablement Programs](https://developer.salesforce.com/docs/sales/enablement/guide/enablement-custom-exercises-intro.html "HTML (New Window)") in the _Sales Programs and Partner Tracks with Enablement Developer Guide_.

This field is unique within your organization.





 |
| developerName | 

Field Type

string

Description

Required. The unique programmatic name for the LearningItemType record.





 |
| icon | 

Field Type

string

Description

Required. The icon to use for the custom exercise type in the Guidance Center.

Use the format iconType:iconName, where the values correspond to icon categories and names from the [Salesforce Lightning Design System](https://www.lightningdesignsystem.com/icons/ "HTML (New Window)").

- iconType is the type of icon, such as standard or doctype.
- iconName is the icon name, such as flow or slide.

For example, to use the Standard type Flow icon, this value is standard:flow.





 |
| lightningComponentDefinition | 

Field Type

string

Description

Required. The ID of the Lightning Web Component used to show the custom exercise’s content when a user opens the exercise in the Guidance Center.

This field sets the value of the LightningComponentName field on the [LearningItemType object](https://developer.salesforce.com/docs/atlas.en-us.264.0.object_reference.meta/object_reference/sforce_api_objects_learningitemtype.htm "HTML (New Window)").





 |
| masterLabel | 

Field Type

string

Description

Required. A user-friendly name for the LearningItemType, which is defined when it’s created.





 |

## Declarative Metadata Sample Definition

The following is an example of a LearningItemType component for a custom exercise type that shows a screen flow.

<?xml version="1.0" encoding="UTF-8"?>
<LearningItemType xmlns="http://soap.sforce.com/2006/04/metadata">
    <apexEvaluationHandler\>ScreenFlowEvaluationHandler</apexEvaluationHandler\>
    <apexSerializerDeserializer\>ScreenFlowSerializerDeserializer</apexSerializerDeserializer\>
    <customField\>ScreenFlow\_Field\_\_c</customField\>
    <customObject\>ScreenFlow\_Object\_\_c</customObject\>
    <developerName\>ScreenFlowLearningItemType</developerName\>
    <icon\>standard:flow</icon\>
    <lightningComponentDefinition\>screenFlowViewer</lightningComponentDef\>
    <masterLabel\>Screen Flow Exercise</masterLabel\>
</LearningItemType\>

The following is an example package.xml that references the previous definition.

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types\>
        <members\>ScreenFlowLearningItemType</members\>
        <name\>LearningItemType</name\>
    </types\>
    <version\>62.0</version\>
</Package\>

## Wildcard Support in the Manifest File

This metadata type supports the wildcard character \* (asterisk) in the package.xml manifest file. For information about using the manifest file, see [Deploying and Retrieving Metadata with the Zip File](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/file_based_zip_file.htm "The deploy() and retrieve() calls are used to deploy and retrieve a .zip file. Within the .zip file is a project manifest (package.xml) that lists what to retrieve or deploy, and one or more XML components that are organized into folders.").