---
schema_version: "1"
id: 419b36d4ac46621bb79601c618a9b79aea2827e83bc9877cbee7d40d0b5b9734
title: EnablementProgramDefinition
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_meta/meta_enablementprogramdefinition.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_enablementprogramdefinition.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: d9b4e58096864b50e11b61a6563585fb446d40fa28ccb392b29ae012b744c8f5
description: Represents an Enablement program, which includes exercises and measurable milestones to help users such as sales reps achieve specific outcomes related to your company’s revenue goals.
---
# EnablementProgramDefinition

Represents an Enablement program, which includes exercises and measurable milestones to help users such as sales reps achieve specific outcomes related to your company’s revenue goals.

![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

EnablementProgramDefinition components have the suffix .enablementProgramDefinition and are stored in the enablementProgramDefinitions folder.

## Version

EnablementProgramDefinition components are available in API version 61.0 and later.

## Special Access Rules

To access Enablement programs, the Design and Deliver Enablement Programs permission is required. This permission is available with the Enablement add-on license.

For partner programs in supported Experience Cloud sites, a [supported Partner Relationship Management (PRM) add-on license](https://help.salesforce.com/s/articleView?id=slack.prm_support_license_template.htm&type=5&language=en_US "HTML (New Window)") is also required.

## Fields

| Field Name | Description |
| --- | --- |
| description | 
Field Type

string

Description

Required. A summary of the program’s goals and content that’s visible to users.





 |
| developerName | 

Field Type

string

Description

Required. The unique programmatic name for the program record.





 |
| doesAllowSelfEnrollment | 

Field Type

boolean

Description

Indicates whether users can self-enroll in programs that are shared with them (true) or take only assigned programs (false). The default value is false.



 |
| masterLabel | 

Field Type

string

Description

Required. A user-friendly name for the program, which is defined when the program is created.





 |
| name | 

Field Type

string

Description

Required. The name of the program that’s visible to users.





 |
| network | 

Field Type

string

Description

The Experience Cloud site where a program is published for partner users.



 |
| sections | 

Field Type

[EnablementProgramSection\[\]](#EnablementProgramSection)

Description

Groups of milestones and exercises within a program.



 |
| tasks | 

Field Type

[EnablementProgramTask\[\]](#EnablementProgramTask)

Description

The outcome, milestones, and exercises in the program.



 |
| type | 

Field Type

string

Description

Required. Indicates whether the program is for sales users in Lightning Experience (Enablement) or partner users in supported Experience Cloud sites (PtnrEnablement).





 |

## EnablementProgramSection

Represents a logical, trackable group of milestones and exercises within an Enablement program. When users take programs, they can expand or collapse sections.

| Field Name | Description |
| --- | --- |
| developerName | 
Field Type

string

Description

Required. The unique programmatic name for the section.





 |
| name | 

Field Type

string

Description

Required. The title of the section that’s visible to users when they take the program.



 |
| sequenceNumber | 

Field Type

int

Description

Required. A number that specifies the order of the section, relative to other sections, starting at 0.





 |
| tasks | 

Field Type

[EnablementProgramTask\[\]](#EnablementProgramTask)

Description

The milestones and exercises in the section.



 |

## EnablementProgramTask

Represents an outcome, milestone, or exercise in an Enablement program. A program task is also known as a program item.

| Field Name | Description |
| --- | --- |
| customSubCategoryName | 
Field Type

string

Description

The API name of custom exercise task subcategory. This value determines the type of the custom exercise and its associated content. Available in API version 63.0 and later.





 |
| day | 

Field Type

int

Description

Required. The day of the program when the item is due, relative to the program's start date. For example, if a user is expected to complete an exercise where they watch a product demo by day 2, this field’s value is 2. For an outcome, this field specifies the number of days the full program takes. For example, if your program lasts 60 days, the value of this field is 60 for the outcome. This field’s value contributes to the program’s due date that users see when they take the program.





 |
| description | 

Field Type

string

Description

Required. A summary of the outcome, milestone, or exercise that’s visible to users when they take the program.





 |
| developerName | 

Field Type

string

Description

Required. The unique programmatic name for the outcome, milestone, or exercise.





 |
| exercise | 

Field Type

[EnablementProgramTaskExercise](#EnablementProgramTaskExercise)

Description

The content used with an exercise.

If taskSubCategory is ActionItem, this field isn’t included when retrieving metadata.





 |
| milestone | 

Field Type

[EnablementProgramTaskMilestone](#EnablementProgramTaskMilestone)

Description

The definition of an outcome or milestone, including the Enablement measures used and the criteria for completing the goal.



 |
| name | 

Field Type

string

Description

Required. The title of the outcome, milestone, or exercise that’s visible to users when they take the program.





 |
| sequenceNumber | 

Field Type

int

Description

Required. A number that specifies the order of the milestone or exercise, relative to other milestones or exercises that have the same due date in the program or in the same section, starting at 0. This number determines the order of items that users see for that day in the program.





 |
| taskCategory | 

Field Type

ProgramTaskDefCategory (enumeration of type string)

Description

Required. The type of the program item.

Values are:

- Exercise
- Milestone

Milestone is used for both the program’s outcome and incremental milestones.





 |
| taskSubCategory | 

Field Type

string

Description

Required. The type of exercise. This value determines the content associated with the exercise. For example, if the field value is Video, the exercise must reference video content from the Enablement workspace in the Digital Experiences app. Possible values are:

- ActionItem
- AudioRecording
- CustomExercise—Available in API version 62.0 and later.
- Document
- FeedbackRequest
- Other
- OtherExercise
- ScheduledEvent
- TextLesson
- Trailhead
- Video

When taskCategory is Milestone, the value of taskSubCategory must be Other.





 |

## EnablementProgramTaskExercise

Represents the content used with an exercise in an Enablement program.

| Field Name | Description |
| --- | --- |
| cmsContent | 
Field Type

[EnablementProgramTaskCmsContent](#EnablementProgramTaskCmsContent)

Description

The definition of content managed in the Enablement workspace in the Digital Experiences app when taskSubCategory on EnablementProgramTask is AudioRecording, Document, OtherExercise, ScheduledEvent, TextLesson, or Video.





 |
| customContent | 

Field Type

[EnablementProgramTaskCustomContent](#EnablementProgramTaskCustomContent)

Description

The definition of content used with a custom exercise type when taskSubCategory on EnablementProgramTask is CustomExercise.





 |
| externalContent | 

Field Type

[EnablementProgramTaskExternalContent](#EnablementProgramTaskExternalContent)

Description

The definition of Trailhead content when taskSubCategory on EnablementProgramTask is Trailhead.



 |
| feedbackContent | 

Field Type

[EnablementProgramTaskFeedbackContent](#EnablementProgramTaskFeedbackContent)

Description

The definition of an assessment survey or Einstein prompt template when taskSubCategory on EnablementProgramTask is FeedbackRequest.



 |

## EnablementProgramTaskCmsContent

Defines content managed in the Enablement workspace in the Digital Experiences app for the Audio Recording, Document, Other, Scheduled Event, Text Lesson, or Video exercise types.

| Field Name | Description |
| --- | --- |
| apiName | 
Field Type

string

Description

Required in API version 62.0. The unique programmatic ID of the Digital Experiences content for the exercise. This string’s format is workspaceType/workspaceApiName.contentFQN/contentApiName, which matches the fullName field value on the corresponding DigitalExperience metadata type.

For example, a Link content record from the Enablement workspace has this API name: enablement/sfdcEnablement\_EnablementWorkspace.sfdc\_enablement\_\_link/link\_API\_name.





 |
| contentKey | 

Field Type

string

Description

Required in API version 61.0 only.





 |

## EnablementProgramTaskCustomContent

Defines content used with a custom exercise type.

| Field Name | Description |
| --- | --- |
| content | 
Field Type

string

Description

A serialized string returned by the Apex class that’s specified in the corresponding [LearningItemType](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_learningitemtype.htm "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.") metadata type’s apexSerializerDeserializer field. This string identifies the content used with the custom exercise type so the custom exercise can be recreated in the destination org. This string:

- Can’t exceed 250 characters
- Must contain only alphanumeric characters

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





 |

## EnablementProgramTaskExternalContent

Defines Trailhead content for the Trailhead exercise type.

| Field Name | Description |
| --- | --- |
| externalId | 
Field Type

string

Description

Required. The API name of the Trailhead module used with the exercise.





 |
| providerType | 

Field Type

ProgramExtContentDefProvider (enumeration of type string)

Description

Required. The supported external content platform or system.

Values are:

- Trailhead





 |

## EnablementProgramTaskFeedbackContent

Defines the assessment survey or Einstein prompt template for the Feedback Request exercise type.

| Field Name | Description |
| --- | --- |
| inviteeCount | 
Field Type

int

Description

The number of peers or managers that the user is required to invite for giving feedback when type is PeerFeedback. Each peer or manager receives an invitation to the assessment survey associated with the Feedback Request exercise.

When type is AIFeedback, this value is always 1.





 |
| promptTemplate | 

Field Type

string

Description

The prompt template to use with this exercise when type is AIFeedback.



 |
| surveyDeveloperName | 

Field Type

string

Description

The unique programmatic name for the assessment survey that’s sent to peers and managers when type is PeerFeedback.



 |
| type | 

Field Type

string

Description

Required. The type of feedback used with the exercise.

Values are:

- AIFeedback—Users submit a video call, and Einstein generates feedback from the call’s transcription. With this type, promptTemplate is required.
- PeerFeedback—Users submit a URL to a sample of their work, and select peers and managers to review their work. Selected peers and managers complete an assessment survey. With this type, surveyId is required.





 |

## EnablementProgramTaskMilestone

Defines the requirements for an outcome or milestone, including the Enablement measures used for tracking activity and the criteria for completing the outcome or milestone.

| Field Name | Description |
| --- | --- |
| compositeMilestoneType | 
Field Type

EnblCompositeMilestoneType (enumeration of type string)

Description

The type of logic to use for evaluating the activity from two Enablement measures in a composite milestone.

Values are:

- Addition
- Division
- Percentage





 |
| isMilestoneAnOutcome | 

Field Type

boolean

Description

Required. Indicates whether the program item is the program’s outcome (true) or an incremental milestone (false).





 |
| milestoneMeasures | 

Field Type

[EnablementProgramTaskMilestoneMeasure\[\]](#EnablementProgramTaskMilestoneMeasure)

Description

The Enablement measures used with the outcome or milestone.



 |
| milestoneTarget | 

Field Type

double

Description

The target value for a user to achieve to get credit for completing the outcome or milestone. The unit depends on the specific measure used with the outcome or milestone. For example, if the measure is the dollar amount of all closed opportunities, then the field value is measured in dollars.



 |
| minimumSampleSize | 

Field Type

int

Description

The number of records to evaluate when calculating progress for an outcome or milestone that uses an average-based measure. Use this field with milestoneTarget. For example, if you want users to achieve an average deal size of $50,000 after closing 4 deals, then this field’s value is 4 and milestoneTarget is 50000.



 |

## EnablementProgramTaskMilestoneMeasure

Defines the Enablement measure used with an outcome or milestone.

| Field Name | Description |
| --- | --- |
| measureDefinitionDeveloperName | 
Field Type

string

Description

The unique programmatic name of the Enablement measure used with the outcome or milestone.



 |
| sequenceNumber | 

Field Type

int

Description

A number that specifies the order of the Enablement measure when multiple measures are used with one outcome or milestone, starting at 0. For example, in a composite milestone that uses the Percentage function, the measure that provides the numerator value is sequence 0 and the measure that provides the denominator value is sequence 1.



 |

## Declarative Metadata Sample Definition

The following is an example of an EnablementProgramDefinition component.

<?xml version="1.0" encoding="UTF-8"?>
<EnablementProgramDefinition xmlns="http://soap.sforce.com/2006/04/metadata">
    <description\>Get started with sales at Cloud Kicks and close your first deal!</description\>
    <developerName\>Get\_Started\_Close\_First\_Deal\_Program</developerName\>
    <doesAllowSelfEnrollment\>false</doesAllowSelfEnrollment\>
    <masterLabel\>Welcome to Sales at Cloud Kicks</masterLabel\>
    <name\>Welcome to Sales at Cloud Kicks</name\>
    <sections\>
        <developerName\>section\_0</developerName\>
        <name\>Learn the Ropes in Your First Week</name\>
        <sequenceNumber\>0</sequenceNumber\>
        <tasks\>
            <day\>1</day\>
            <description\>Learn the basics of sales at Cloud Kicks.</description\>
            <developerName\>task\_0</developerName\>
            <exercise\>
                <externalContent\>
                    <externalId\>sales-rep-training</externalId\>
                    <providerType\>Trailhead</providerType\>
                </externalContent\>
            </exercise\>
            <name\>Sales Rep Training</name\>
            <sequenceNumber\>0</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>Trailhead</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>2</day\>
            <description\>Watch our CEO explain the company vision.</description\>
            <developerName\>task\_1</developerName\>
            <exercise\>
                <cmsContent\>
                    <apiName\>enablement/sfdcEnablement\_EnablementWorkspace.sfdc\_enablement\_\_link/company\_vision\_video</apiName\>
                </cmsContent\>
            </exercise\>
            <name\>See Our Company Vision</name\>
            <sequenceNumber\>1</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>Video</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>3</day\>
            <description\>Action Item</description\>
            <developerName\>task\_2</developerName\>
            <name\>Action Item</name\>
            <sequenceNumber\>2</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>ActionItem</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>4</day\>
            <description\>Try out your first sales patch at Cloud Kicks and get feedback from our in-house experts.</description\>
            <developerName\>task\_3</developerName\>
            <exercise\>
                <feedbackContent\>
                <inviteeCount\>1</inviteeCount\>
                <surveyDeveloperName\>discovery\_call\_assessment</surveyDeveloperName\>
            </feedbackContent\>
            </exercise\>
            <name\>Feedback from Peers and Managers</name\>
            <sequenceNumber\>3</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>FeedbackRequest</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>5</day\>
            <description\>Complete a discovery calls by day 5.</description\>
            <developerName\>task\_4</developerName\>
            <isMilestoneAnOutcome\>false</isMilestoneAnOutcome\>
            <milestone\>
                <milestoneMeasures\>
                    <measureDefinitionDeveloperName\>salesforceTemplate\_CallsEmails</measureDefinitionDeveloperName\>
                </milestoneMeasures\>
                <milestoneTarget\>1.0</milestoneTarget\>
            </milestone\>
            <name\>Log a Discovery Call by Day 5</name\>
            <sequenceNumber\>4</sequenceNumber\>
            <taskCategory\>Milestone</taskCategory\>
            <taskSubCategory\>Other</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>6</day\>
            <description\>Browse our sales leaders blog for more insights.</description\>
            <developerName\>task\_5</developerName\>
            <exercise\>
                <cmsContent\>
                    <apiName\>enablement/sfdcEnablement\_EnablementWorkspace.sfdc\_enablement\_\_link/sales\_blog</apiName\>
                </cmsContent\>
            </exercise\>
            <name\>Review Tips from Sales Leaders</name\>
            <sequenceNumber\>5</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>OtherExercise</taskSubCategory\>
        </tasks\>
        <tasks\>
            <day\>7</day\>
            <description\>Follow a screen flow for onboarding to the sales team.</description\>
            <developerName\>task\_6</developerName\>
            <exercise\>
                <customContent\>
                    <content>flowDeveloperName=OnboardingFlow</content\>
                </customContent\>
            </exercise\>
            <name\>Onboarding Flow</name\>
            <sequenceNumber\>6</sequenceNumber\>
            <taskCategory\>Exercise</taskCategory\>
            <taskSubCategory\>CustomExercise</taskSubCategory\>
            <customSubCategoryName\>ScreenFlowTaskSubCategory</customSubCategoryName\>
        </tasks\>
    </sections\>
    <tasks\>
        <day\>30</day\>
        <description\>Close your first opportunity. To make sure it's counted, set the opportunity Stage field to Closed Won.</description\>
        <developerName\>task\_enablementProgramOutcomeCard</developerName\>
        <isMilestoneAnOutcome\>true</isMilestoneAnOutcome\>
        <milestone\>
            <milestoneMeasures\>
                <measureDefinitionDeveloperName\>measure\_CloseFirstDeal</measureDefinitionDeveloperName\>
            </milestoneMeasures\>
            <milestoneTarget\>1.0</milestoneTarget\>
        </milestone\>
        <name\>outcome</name\>
        <sequenceNumber\>0</sequenceNumber\>
        <taskCategory\>Milestone</taskCategory\>
        <taskSubCategory\>Other</taskSubCategory\>
    </tasks\>        
    <type\>Enablement</type\>
</EnablementProgramDefinition\>

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\>Get\_Started\_Close\_First\_Deal\_Program</members\>
        <name\>EnablementProgramDefinition</name\>
    </types\>
    <version\>61.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.").