New Commit Behavior

Updated 2 weeks ago by Copado Solutions

In Copado, we understand that each release is different, and sometimes you need to deploy components with a level of granularity that is not possible with Salesforce’s out-of-the-box functionality. Because of that, Copado implemented the possibility to deploy nested components 3 years ago.

In its constant desire for improvement, Copado updated the commit behavior on September 25, 2019 to make it consistent and ensure objects, profiles, permission sets and custom object translations behave in the same way. This new behavior not only standardizes the commit process of objects, profiles and permission sets, but also makes merge performance faster.

Please read this information carefully, as this change is affecting how permission sets, custom objects and custom object translations are committed. 

Benefits

Here are some of the benefits this new behavior will bring to your team:

  • More granular control over what is committed: 
    Now you have broader control of your changes. For example, custom object translations are now handled as nested metadata, and Copado only updates whatever you select.
    Let’s say you want to commit the custom object translation of a field so you select the field together with the translation. With this new behavior, only the translation of the selected field will be updated in the destination, and no other field translations will be committed or merged, thus reducing the deployment time.
    Profiles and Permission Sets basic information like description or user permissions can now be handled effectively, and the same for custom object’s basic information.
    You can find a complete list of the nested metadata handled by Copado in the article Commit Changes Overview.
  • Standardized commit behavior:
    This new behavior standardizes the way all metadata types that contain nested items are committed. This will make it easier for developers to be trained in the commit process with Copado.
  • Faster performance:
    Merging and writing metadata files is now done more efficiently, therefore the commit, promote and deploy operations are much faster.

What Is Changing?

Now that you know what the benefits of this new behavior are, let's take a close look at the changes.

Permission Sets

The permission set commit has been updated to match that of profiles. Unlike the standard behavior of the metadata API, when you commit a permission set without other nested components, only the attributes are committed, i.e. the active user permissions. Additionally, If you commit a permission set with other nested components, the attributes and the permissions related to the selected components will be committed. This behavior applies both to new and existing permission sets.

If you want to commit a permission set with all the nested components, you have to commit a full permission set.

Custom Objects

In contrast to the standard behavior of the metadata API, from now on, when you commit a custom object without other nested components, only the attributes are committed. Additionally, if you commit a custom object with other nested components, the attributes and the selected nested components will be committed. This applies to new and existing custom objects.

If you want to commit an object with all the nested components, type in the name of the object in the metadata grid and all the related components will be displayed. Select all the committable components and commit the changes. By doing this, Copado will make sure these nested components get merged in case of conflict.

Custom Object Translations

Custom object translations are now handled as nested components. Let’s say you want to commit the custom object translation of a field, and you just commit that field together with the translation. By doing this, Copado will only update the translation of that field in the destination, and no other field translations will be committed or merged, thus reducing the deployment time.

Auto Resolve Conflict Behavior

When you commit a full profile or full permission set for the first time and select the Full Profiles & Permission Sets operation, if there is a conflict, the profile or permission set file in the feature branch will overwrite the file in the promotion branch.

Comparison Between the Current Behavior and the New Behavior

Take a look at the tables below to see what the differences between the current behavior and the new one are.

Profiles

As mentioned before, there have been no changes in the profile commit behavior. Take a look at the table below to see how profile commits work:

Permission Sets

Custom Objects

Custom Object Translations


How did we do?