2

I don't know if my question fits to ask here, but let me ask it anyway. I'm building a several features using Apex Wrapper Salesforce Metadata API: https://github.com/financialforcedev/apex-mdapi

Simply put, this is just an Apex SOAP callout that invokes Metadata API (thus, the issue might not depend on this module). Thanks to this module, I was able to operate metadata via Apex and verified the change of metadata from the Setting screen in the org. However, it turns out that if I try to create a record that is defined by the metadata that is created by the metadata api operation, then I realized the change actually isn't reflected.

The weird workaround of this issues is to just wait for like 20 min. If I retry after 20- min-long wait, then I successfully created a record.

But the 20-min-long wait is not something acceptable for real use-cases. Do you have any idea to resolve this issue? Thanks.

FYI, this is my sample code:

public static void createObject(String label, String api_name){
    MetadataService.MetadataPort service = createService();
    MetadataService.CustomObject obj = new MetadataService.CustomObject();
    obj.fullName = api_name+'__c';
    obj.label = label;
    obj.pluralLabel = label;
    obj.nameField = new MetadataService.CustomField();
    obj.nameField.type_x = 'AutoNumber';
    obj.nameField.label = 'Record Number';
    obj.nameField.displayFormat = 'SHN-{00000000}';
    obj.deploymentStatus = 'Deployed';
    obj.sharingModel = 'ReadWrite';
    obj.enableReports = true;
    obj.enableSharing = true;
    obj.enableBulkApi = true;
    obj.enableStreamingApi = true;
    obj.enableSearch = true;

    List<MetadataService.SaveResult> results =
        service.createMetadata(
            new MetadataService.Metadata[] { obj });
    handleSaveResults(results[0]);
}
10
  • Could add some code samples for further clarity on this questions?
    – arut
    Commented Jun 22, 2022 at 17:23
  • @arut Thank you for your reaction. I added some code sample. Commented Jun 23, 2022 at 0:55
  • I had absolutely no problem running this piece of code and getting the custom object created immediately. Looks like you problem might be due to something else. Have you tried on a new developer org or sandbox & observed the same problem?
    – arut
    Commented Jun 23, 2022 at 9:57
  • @arut Thank you so much for your verification. Did you also tried to create a record? It is certain that this code creates the custom object but it takes 20 min until I can create a record. I've tried this code on multiple orgs like : scratch org, developer org, subscriber org (enterprise edition) but I always need to wait to reflect the change. Commented Jun 24, 2022 at 1:45
  • 1
    @arut I tried running this code sample in a plain scratch org and then confirmed the change of the metadata immediately reflected. Thus, as you said, this issue is caused by something depending an org. Thank you so much for your help. Commented Jun 24, 2022 at 11:10

1 Answer 1

1

As the above comment mentioned, it turns out that this issue depends on its org, not on the implementation. I'm guessing the issue might be related to the amount of the metadata of the org. Without installing the package, which includes giant metadata components, the Metadata api operation successfully executed.

I leave this question here so that someone who encountered the same issue would get some hint.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .