---
schema_version: "1"
id: 9a5b08a743916dcbf675f489739be2ce897cc004f9a20dac0ad802ccc2fa112c
title: Permission Sets and Profile Settings in Change Sets
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/platform/264-0-0/changesets_perm_sets_profiles.md
canonical_url: https://help.salesforce.com/s/articleView?id=platform.changesets_perm_sets_profiles.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 6a4e2cc1dfe697823d045814c7f118a1d873fd54c8a44a2e44585510352664c1
description: Developers can use permission sets or profile settings to specify permissions and other access settings in a change set. When deciding whether to use permission sets, profile settings, or a combination of both, consider the similarities and differences.
products:
  - Salesforce Platform
release: "264"
---
# Permission Sets and Profile Settings in Change Sets

Developers can use permission sets or profile settings to specify permissions and other access settings in a change set. When deciding whether to use permission sets, profile settings, or a combination of both, consider the similarities and differences.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: both Salesforce Classic and Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in <strong>Enterprise</strong>, <strong>Performance</strong>, <strong>Unlimited</strong>, and <strong>Database.com</strong> Editions</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Permission sets available in: <strong>Contact Manager</strong>, <strong>Professional</strong>, <strong>Group</strong>, <strong>Enterprise</strong>, <strong>Performance</strong>, <strong>Unlimited</strong>, <strong>Developer</strong>, and <strong>Database.com</strong> Editions</td></tr></tbody></table>

In API version 40.0 and later, when you deploy the output of a retrieval to another org, the metadata in the deployment replaces the target org metadata. In API version 39.0 and earlier, when you deploy your retrieved permission set output to another org, the deployment contents are merged with your current org data. For example:

- In API version 40.0 and later, if your permission set contains the Manage Roles user permission and you deploy a metadata file without this user permission, Manage Roles is disabled in the target org. Or, let's say you have a permission set with edit access to fields in an object. If the change set fails to include these fields, the permissions are still carried over to the target org and these changes are deployed.
- In API version 39.0 and earlier, if you deploy a metadata file without this user permission, Manage Roles remains enabled.
- Keep in mind that by default, change set deploys enable dependencies. For example, if your change set contains a custom profile with Lead Conversion enabled, Lead object permissions are enabled.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
      <colgroup>
        <col style="width:33.33333333333333%">
        <col style="width:33.33333333333333%">
        <col style="width:33.33333333333333%">
      </colgroup>
      <thead class="slds-text-title_caps ">
        <tr class="">
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d16942e118">Behavior</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d16942e121">Permission Sets</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d16942e124">Profile Settings</th>
        </tr>
      </thead>
      <tbody>
        <tr class="">
          <td data-label="Behavior" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e118 ">Included permissions and settings</td>

          <td data-label="Permission Sets" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e121 ">
            <ul>
              <li>Standard object permissions</li>

              <li>Standard field permissions</li>

              <li>User permissions (such as “API
                Enabled”)</li>

            </ul>
            <p style="margin-bottom:0;">Assigned apps and tab settings are
              <em>not</em> included in permission set
              components.
            </p>
          </td>

          <td data-label="Profile Settings" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e124 ">
            <ul>
              <li>Tab settings</li>

              <li>Page layout assignments</li>

              <li>Record type assignments</li>

              <li>Login IP ranges</li>

              <li>User permissions</li>

            </ul>
          </td>

        </tr>
        <tr class="">
          <td data-label="Behavior" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e118 ">Included permissions and settings that
            require supporting components</td>

          <td data-label="Permission Sets" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e121 ">
            <ul>
              <li>Apex class access</li>

              <li>Visualforce page access</li>

            </ul>
          </td>

          <td data-label="Profile Settings" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e124 ">
            <ul>
              <li>Assigned
                apps</li>

              <li>Custom object permissions</li>

              <li>Custom field permissions</li>

              <li>Apex class access</li>

              <li>Visualforce page access</li>

            </ul>
          </td>

        </tr>
        <tr class="">
          <td data-label="Behavior" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e118 ">Added as a component?</td>

          <td data-label="Permission Sets" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e121 ">Yes</td>

          <td data-label="Profile Settings" class="slds-cell-wrap" style="vertical-align:top;" headers="d16942e124 ">No. Profiles are added in a separate
            setting.</td>

        </tr>
      </tbody>
    </table>

For Visualforce page access and Apex class access, always include supporting components in the change set.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-deploy_sandboxes-264-0-0-production-enus/654e51d1-6795-49fe-bd43-b5385950cf4a/images/icon_note.png)

Note Login IP ranges included in profile settings overwrite the login IP ranges for any matching profiles in the target org.

#### See Also

- [Inbound Change Sets](https://help.salesforce.com/s/articleView?id=platform.changesets_about_inbound.htm&release=264.0.0&type=5 "An inbound change set is a change set that has been sent from another Salesforce org to the org you are logged in to. A change set must be deployed for the changes to take effect. You can deploy the contents of an inbound change set as a whole but not on a component-by-component basis.")
- [Outbound Change Sets](https://help.salesforce.com/s/articleView?id=platform.changesets_about_outbound.htm&release=264.0.0&type=5 "An outbound change set is a change set created in the Salesforce org in which you are logged in and that you want to send to another org. You typically use an outbound change set for customizations created and tested in a sandbox and that are then sent to a production org.")
- [Change Sets Best Practices](https://help.salesforce.com/s/articleView?id=platform.changesets_best_practices.htm&release=264.0.0&type=5 "Review these best practices about dependencies, validation, and access settings.")