---
schema_version: "1"
id: 093d8cb9a85cadd3bd26c2af5f0a3e4f243f398369f3925b2405df0e65a39c13
title: Developer Tools for Enablement Programs
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/sales-cloud/enablement/references/enablement-developer-tools.md
canonical_url: https://developer.salesforce.com/docs/sales/enablement/references/enablement-resources/enablement-developer-tools.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 17bc7a98e1b80db5734ced3d89584c9a228cd5e0c0dfcaef329cc312a4061a15
products:
  - Sales Programs and Partner Tracks with Enablement
  - Sales Cloud
---
# Developer Tools for Enablement Programs

Several standard objects define the structure and behavior of Enablement programs. If you create custom exercise types for programs, use the appropriate classes and methods in the Apex namespace and the appropriate Lightning Web Components (LWC) target for implementing your exercises. To move Enablement data between orgs with change sets or managed packages, several metadata types and package components are available.

## Standard Objects for Enablement Programs

For information about how these objects are related, see [Enablement Data Model](https://developer.salesforce.com/docs/sales/enablement/references/guides/enablement-data-model.md).

- [EnablementMeasureDefinition](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enablementmeasuredefinition.htm)
- [EnablementProgram](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enablementprogram.htm)
- [EnablementProgramDefinition](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enablementprogramdefinition.htm)
- [EnblMeasureObjectDefinition](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblmeasureobjectdefinition.htm)
- [EnblPgmTaskMeasureProgress](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblpgmtaskmeasureprogress.htm)
- [EnblProgramSection](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblprogramsection.htm)
- [EnblProgramTaskDefinition](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblprogramtaskdefinition.htm)
- [EnblProgramTaskMeasure](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblprogramtaskmeasure.htm)
- [EnblProgramTaskProgress](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblprogramtaskprogress.htm)
- [EnblProgramTaskSubCategory](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_enblprogramtasksubcategory.htm)
- [LearningItem](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningitem.htm)
- [LearningItemAssignment](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningitemassignment.htm)
- [LearningItemProgress](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningitemprogress.htm)
- [LearningItemSubmission](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningitemsubmission.htm)
- [LearningItemType](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningitemtype.htm)
- [LearningPractice](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_learningpractice.htm)

## Metadata Types for Enablement Programs

For information about how these metadata types are used with change sets and managed packages, see [Migrate Programs and Their Dependencies Between Orgs](https://developer.salesforce.com/docs/sales/enablement/references/guides/enablement-migrate.md).

- [EnablementMeasureDefinition](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_enablementmeasuredefinition.htm)
- [EnablementProgramDefinition](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_enablementprogramdefinition.htm)
- [EnblProgramTaskSubCategory](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_enblprogramtasksubcategory.htm)
- [LearningItemType](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_learningitemtype.htm)

## Package Components for Enablement Programs

- [Enablement Measure Definition](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/packaging_packageable_components.htm#mdc_enablement_measure_definition)
- [Enablement Program Definition](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/packaging_packageable_components.htm#mdc_enablement_program_definition)
- [Enablement Program Task Subcategory](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/packaging_packageable_components.htm#mdc_enablement_program_task_subcategory)
- [Learning Item Type](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/packaging_packageable_components.htm#mdc_learning_item_type)

## Scratch Org Feature for Enablement Programs

Add the [Enablement scratch org feature](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file_config_values.htm#so_enablement) in your scratch org definition file when you package programs and dependencies. See [Migrate Programs and Their Dependencies Between Orgs](https://developer.salesforce.com/docs/sales/enablement/references/guides/enablement-migrate.md).

## Apex for Enablement Programs

Use the classes and methods of the [`sfdc_enablement` namespace in Apex](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_namespace_sfdc_enablement.htm) when you implement custom exercise types. See [Implement Custom Exercise Types for Enablement Programs](https://developer.salesforce.com/docs/sales/enablement/references/guides/enablement-custom-exercises-intro.md).

## Lightning Web Components for Enablement Programs

Use the [`lightning__EnablementProgram` target](https://developer.salesforce.com/docs/platform/lwc/guide/targets-lightning-enablement-program.html) when you implement custom exercises. 

By default, the Salesforce Lightning Design System uses the [`evaluateLearningItem` wire adapter](https://developer.salesforce.com/docs/platform/lwc/guide/reference-evaluate-learning-item.html) of the `lightning/uiLearningPlatformApi` module when tracking a user's progress in a custom exercise.

See [Implement Custom Exercise Types for Enablement Programs](https://developer.salesforce.com/docs/sales/enablement/references/guides/enablement-custom-exercises-intro.md).
