I am creating a visualforce page from apex, using the metadata api. To call the metadata api I am using https://github.com/financialforcedev/apex-mdapi

    MetadataService.MetadataPort service = createService();     
    MetadataService.ApexPage apexPage = new MetadataService.ApexPage();
    apexPage.apiVersion = 25;
    apexPage.fullName = getPageName(objectName);
    apexPage.label = 'myprefix'+ objectName;
    apexPage.content = EncodingUtil.base64Encode(Blob.valueOf(getPageMarkup(objectName)));
    List<MetadataService.SaveResult> results = service.createMetadata(
            new MetadataService.Metadata[] { apexPage });

This creates the page succesfully, but it is only available to System administrator profile(creator). I want the page to be available to all profiles. How to do this?

  • you can go to profiles and add the page you have created to that profile.
    – sunny
    Feb 5, 2015 at 14:58

1 Answer 1


You can either do it manually from the Page Security section (Setup/Develop/Pages --> Security link next to your page name). This is easier than going to the profile, because you can give access to all profiles at the same time.

You can also update the ProfileApexPageAccess part of the Profile Metadata: https://www.salesforce.com/us/developer/docs/api_meta/Content/meta_profile.htm#profileApexPageAccess_title

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.