Blog Details

Harnessing the Salesforce Metadata API for Custom Picklist Creation

Introduction to Salesforce Metadata API The Salesforce Metadata API is not just a tool for CRUD operations; it’s a robust mechanism for managing your organization’s metadata schema. A notable capability of this API is the creation of custom picklist fields programmatically. Let’s delve into the process.

Preparation Steps Before embarking on this journey, ensure you have:

  • Access to a Salesforce Developer Edition org or a sandbox.
  • The Metadata Service class implemented in your Salesforce org.

Step 1: Initiating the Metadata Service Begin by instantiating the MetadataService.MetadataPort class, which offers methods for manipulating metadata components.


MetadataService.MetadataPort service = initializeService();

Step 2: Crafting the Custom Field Now, let’s define our custom field. We’ll detail the field’s API identifier, its label, and specify that it’s a picklist type.

metadataservice.ValueSet valueSet = new metadataservice.ValueSet();
valueSet.controllingField = 'master_field__c';
metadataservice.ValueSetValuesDefinition valuesDefinition = new metadataservice.ValueSetValuesDefinition();
valuesDefinition.sorted = false;
metadataservice.CustomValue firstOption = new metadataservice.CustomValue();
firstOption.fullName = 'OptionOne';
firstOption.default_x = false;
valuesDefinition.value = new List<MetadataService.CustomValue>{firstOption};
valueSet.valueSetDefinition = valuesDefinition;
customField.valueSet = valueSet;

Step 3: Specifying Picklist Entries Next, we’ll enumerate the entries for our picklist. We create instances of metadataservice.ValueSet and metadataservice.ValueSetValuesDefinition, along with metadataservice.CustomValue for each entry we wish to include.

Step 4: Bringing the Custom Field to Life To finalize, we invoke the createMetadata function on our service object to bring our custom field into existence. We pass an array containing the metadata components we’re establishing.

Conclusion: Your Custom Picklist Awaits And there you have it—a custom picklist field birthed through the Salesforce Metadata API. This methodology can be similarly applied to modify or remove metadata components as needed.

Leave A Comment