Retire of Permission on Profiles

If you are working as a Salesforce admin/developer you've probably heard somewhere that Salesforce is planning to make a significant change regarding profiles. The main idea is that most of the permissions will no longer be managed through the profiles, but instead through a Permission Set. Profile will still be used, for things like login hours, session settings and probably some additional items. 

Currently, the plan is for Spring '26 release.


It can be said that there is time until this change and there is no need to rush, however this is major change with significant impact and we can notice in the latest versions of Salesforce that some new features provide the tools to support the transition. 

For example: 

  • Field-Level Security for Permission Sets during Field Creation

 This new feature allows admin when creating fields to set                 permissions for a premium set, instead of a profile.

  • User Access Policies (Beta)

Allow to define a set of permissions for users and assigning              them based on criteria.

You can activate those new features, along with other, on the User Management Settings



Of course, as part of the transition, admin might need to do some adjustment with their current implementation. If you work according to best practices, you may not need to make any changes, because for quite a long time Salesforce has been recommending to manage the permissions for fields and objects using a permission set,

If not, you'll might need to make a few adjustments to migrate your implementation. Like creating new Permission Sets, setup their content and assign them to users.


The application Permissions Helper is a free app that allows managing profile and permission sets more easily, and facilitates the process when it is required to work with bulk operations.

A special feature has been added to the application to help with the process of shifting to a Permission Sets usage. It allows you to copy the permissions from a profile to a Permission Set with a few steps:

1. Manually create new Permission Set.

2. Go to the tab Update Profiles/Permission Sets.

3. Click the button Copy Profile to Permission Set.

4. Select the relevant Profile and Permission Set and click Copy.


Here is a quick demo



Automatically Refresh Lightning Record Page




Salesforce implementers/developers often encounter a case where several processes, some of them background processes, update the data that the users are working on, and we are looking for the best option to keep the users synced.


Note that this does not require treatment, since if the user tries to update data that has already changed, the system will alert the user of the changes when the save attempt is made. However, it would be nice if the updated data could be reflected to the user in a simple and automatic way.


The good news, it is possible to do this with a very simple web component that we add on the record page and every X seconds it will notify the page to check if there have been any changes.


Here how it works.

Create new Lightning Web Component. 

The xml file will note that it is meant for record page.

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>59.0</apiVersion>
    <isExposed>true</isExposed>
    <masterLabel>Refresh Page</masterLabel>
    <targets>
        <target>lightning__RecordPage</target>
    </targets>

    <targetConfigs>
        <targetConfig targets="lightning__RecordPage">
            <property name="refreshInterval" type="Integer" label="Refresh Interval"/>
        </targetConfig>
    </targetConfigs>
</LightningComponentBundle>



The html is optional, we can show counter down, something else or show nothing.

<template>
    Next Refresh:  {secondsLeft}
</template>



The java script file set repeated interval using the method setInternval. Every second the component will reduce 1 second from its count. Once it reach to zero, it will reset the counter and use the method notifyRecordUpdateAvailableThe method, as the name imply, notify to the page that there might be other changes and it should take the appropriate actions to reflect those.

import { LightningElement, track, api } from 'lwc';
import { notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';

export default class RefreshRecordPage extends LightningElement {
    @api refreshInterval = 5;
    @api recordId;
    @track secondsLeft;

    connectedCallback(){
        this.secondsLeft = this.refreshInterval;

        setInterval(() => {
            this.secondsLeft = this.secondsLeft - 1;

            if(this.secondsLeft < 0){

                notifyRecordUpdateAvailable([{recordId: this.recordId}]);

                this.secondsLeft = this.refreshInterval;
            }
        }, 1000);
    }
}



After deploying the component, last thing is to place it on the lightning record page that you want to refresh.


Retire of Permission on Profiles

If you are working as a Salesforce admin/developer you've probably heard somewhere that Salesforce is planning to make a significant cha...