function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Priya GovindasamyPriya Govindasamy 

Update an existing custom metadata in apex class.

Can I do a soql on existing custom metadata and update the record in apex class?  When I try that it says list cannot be updated.
Priya GovindasamyPriya Govindasamy
Did some research, looks like we cannot update an existing metadata record in apex class. 
Consultant Vinay BothraConsultant Vinay Bothra
public class CreateUpdateMetadataUtils implements Metadata.DeployCallback {
    public void handleResult(Metadata.DeployResult result, Metadata.DeployCallbackContext context) {
        if (result.status == Metadata.DeployStatus.Succeeded) {
            System.debug(' success : '+ result);
        } else {
            System.debug(' fail : '+ result);
    public static void createUpdateMetadata(String fullName, String label, Map<String, Object> fieldWithValuesMap){
        Metadata.CustomMetadata customMetadata =  new Metadata.CustomMetadata();
        customMetadata.fullName = fullName;
        customMetadata.label = label;
        for(String key : fieldWithValuesMap.keySet()){
            Metadata.CustomMetadataValue customField = new Metadata.CustomMetadataValue();
            customField.field = key;
            customField.value = fieldWithValuesMap.get(key); 
        Metadata.DeployContainer mdContainer = new Metadata.DeployContainer();
        CreateUpdateMetadataUtils callback = new CreateUpdateMetadataUtils();
        Id jobId = Metadata.Operations.enqueueDeployment(mdContainer, callback);
Priya GovindasamyPriya Govindasamy
Consultant Vinay Bothra,

I was looking for updating the existing metadata record. The code above is for creating a new record and updating its fields.