SPRING’25 / SUMMER’25 – Handle ICU format activation, linked to Salesforce Release Update

Maybe, have you received this communication from Salesforce after Spring’25 release update, either for your Production instance, or your non-preview sandboxes :

ICU activation failed – Do not worry..! Prepare for Summer’25 next slot

For Salesforce Spring’25 release update, ICU locale format was planned to be activated.

But indeed, as mentioned in the documentations from Salesforce, you will find under this article, this upgrade from JDK previous format, towards ICU international format, was only possible if all technical (Apex, Visualforce, and Lightning) components of the platform were compliant (above API 45.0 version). If your Salesforce instance contains lower API versions of these components, Salesforce won’t enable ICU locale formats in your org, and indeed you should have received this email.

If ever you are concerned by the unsuccessful upgrade, and you received this email, please do not worry, and read the following article. There will be another ICU format activation slot, linked to next Summer’25 release upgrade (June 2025).

As an introduction, just to know what is behind the ICU letters, in this help article, Salesforce details the impacted locales / users, and the differences between both JDK and ICU formats for these locales :

Assessment of your useR locales

From a pragmatic point of view, you need to tackle all technical actions, listed by Salesforce, to make sure the upgrade could pass next time. I suggest that you follow the procedure & query detailed by Salesforce in their exhaustive documentation (see below). You will find below a short version of it based on the actions I have followed on the instances I handle.

First, query your org to see your impacted users, and their locale. For information, Canada (en_CA locale) requires a specific activation to handle separately.

SELECT toLabel(LocaleSidKey) LocaleName, LocaleSidKey, Count(id) UserCount
FROM User where IsActive=true GROUP BY LocaleSidKey
ORDER BY Count(id) desc

You would be then able to visualize the way your date / values informations will be displayed (important, especially if you have some text manipulation of those data types).

Enable the feature on a sandbox first, and then in production

Go to Setup > Release updates, look for the ICU release update, click Get Started, and enable it. Do it first in a sandbox, and test that it does not generate regression errors in this sandbox ! Then apply on other sandboxes, testing instances and after that in Production.

    Identify technical components to update

    As written above, if your instance contains technical components (Apex classes, apex triggers, Visualforce pages or components, Lightning components, managed packages), Salesforce asks you to upgrade their API version.

    Always use as a target the Production version (target v62.0 for example, even when Preview sandboxes are in v.63.0 version) to prevent you from being blocked when deploying your updated components in Production.

    To identify them, you may either leverage SOQL query on concerned Salesforce technical objects, or use a dedicated list view on each of these component types in Setup pages.

    • a « Classes < v45.0 » view, for Apex classes (see the example below)
    • a « Triggers < v45.0 » view, for Apex triggers
    • a « VFP < v45.0 » view, for Visualforce pages
    • a « VFC < v45.0 » view, for Visualforce components
    • a « LWC < v45.0 » view, for Lightning components (Aura and LWC)

    You may also query your instance (on ApexClass, ApexTrigger, ApexPage and ApexComponents objects) with Salesforce Inspector Reloaded, if more convenient for you.

    SELECT Id, Name, ApiVersion, IsValid, NamespacePrefix
    FROM ApexClass
    WHERE ApiVersion < 45 ORDER BY ApiVersion DESC

    Upgrade your code

    As written above, navigate through Setup, select the concerned components (for example « Apex Classes » for Apex classes) setup page, click on the metadata to update, Edit, access the « Salesforce.com API » version line, and update to target version.

    Class version in v44.0..
    just changed in a click to v62.0 (you can also open them in Dev Console if more convenient to do it)

    If the component is compliant, the class will be updated within the correct version. Otherwise, you will be warned when saving, that there is an error in it, as you are when you are coding / saving in Dev Console / VS Code.

    In this case, some changes would need to be undertaken while updating the code version of your components. For example, in API 59.0 version, the getSalesforceBaseUrl() method has been deprecated. So if your code includes a call to this method, you have 2 options :

    • update this class to the latest / more recent compliant API version, where the method was available (v58.0 in this case) ; that could go faster for this time, but that is something that will need to be addressed sooner or later..
    • take advantage of this overall « platform-related action plan », to include some refactoring technical actions / tickets to update the code (here, in this example, replace the method by a call to getOrgDomainUrl() available since v59.0)

    Update your packages

    • Update the unmanaged code to the latest Apex version, as you have done previously
    • Update your managed packages (through AppExchange updates)
      • If you use Salesforce related packages (Marketing Engagement / Pardot, Marketing Cloud Connector), Salesforce should enable this kind of features with their automatic release updates. As an admin, you still can update the package if nothing is available.

    If you use 3rd-party-vendor’s managed packages (for CTI, for Org assessment, or for any feature improvement scenarios), you would necessarily need to look for package updates on AppExchange, or on the asset homepage / repository. Do not hesitate to contact the editor company if there is no update available.

    Deploy these technical elements before activation, in UAT for non-regression tests

    • Code to be deployed / updated first
    • Managed packages to be updated after, accordingly to the action plan you have set up for your test sandbox.

    Once done and tested, deploy into Production, as soon as the tests on UAT are successful, and you will be ready for next ICU activation slot !

    PS : If you have many teams working / deploying on Salesforce, do not forget to let them know about this action plan. They will need to be consistent concerning both coding / deployment / testing actions


    To read more on the subject :

    SPRING’25 – Add a limit on Salesforce Flow’s GetRecord elements

    You have probably already faced flow error telling you that your scheduled flow was handling too many records…

    An idea was opened 5 years ago to ask for the possibility to add a limit on this Get Record, which is eventually a way to operate a DML operation, as you would have in SOQL with the LIMIT notion. Here is a screenshot of this idea :

    Since Salesforce’s Spring’25 release update, you can now specify the number of records to retrieve, in your Get Records elements.

    To do so, first, create a constant number resources, from the resources manager pane :

    Thus, you would be able to use this resource in your Get Records element, as described here :

    Do not forget to mention a sort order if relevant.

    Naturally, some logics may need to be reviewed in your daily scheduled flows, to be sure you do not miss records (to be handled, but whose quantity would be greater than the limit value set) :

    • Create a scheduled job to launch the flow more frequently
    • If you have some date-related conditions in your flow, make sure that your flow is able to handle records from the day before (and not only today’s records as you may see in many scheduled flow samples)


    WINTER’25 – Post Upgrade – Add Conditional Formatting to fields on Dynamic Forms

    The Conditional Formatting feature has been progressively deployed in Salesforce instance, as a Christmas gift in advance, after Winter’25 upgrade. The time has now come to discover it, on your Salesforce instance.

    To be able to use this feature, you should have migrated your concerned Lightning Page within Dynamic Forms.

    In your Lightning Page Builder, click on the field, on which you want to add this visual formatting configuration. In the detail right panel, you will find a new Conditional Formatting section.

    Click in the Component, and either edit the existing ruleset, or add a new ruleset by clicking on the « + Create Ruleset« . See below an example for the Priority field of the Case object.

    As for now, you can only define the new ruleset name ; the other filled are grayed out and already filled in. It seems that we will soon be able to format fiels with other possibility than an icon (keep an eye to the roadmap)

    Once the ruleset is created, we are asked to add every possible rules concerning this field. The pieces of information to provide are both a condition, and an icon with a color to use when the field value matches the chosen condition.

    Eventually, the ruleset should include all rules set for this field. It will be displayed this way :

    The ruleset configuration is now displayed both on the Lightning Page’s configuration page :

    • on the record field, with an Artist Palette icon next to the field component, indicating that there is a specific formatting applying :
    • and in the detail panel, on the field configuration with the ruleset name mentionned

    Testing the ruleset, you will see below how the chosen icons are displayed, accordingly to the picklist field values. Here are some examples for the Case’s Priority field :

    It is important to mention that the icon only appears on the Lightning Page. The value of the field is not impacted. You will not get this information in a list view or a report for example !

    Remark : You will probably begin to remove soon all formulas, which you have probably set up so far (with a concatenation of an emoji and a field value) to simulate such feature


    You can also access the Conditional Field formatting information, directly from the concerned object page, in Object Manager, instead of going through every pages.

    In our case, when we click on the « Conditional Field Formatting » option in the Case object manager, we see the newly added configuration

    We can even edit or delete the ruleset from here.


    To read more on the subject :

    WINTER’25 – Create a sandbox with already active Key Users

    When you created a Salesforce Sandbox, the user creating the new sandbox was kept active to be able to login in this new sandbox, but all the other ones were created inactive.

    Now, since the last release, you can choose to keep active, all the users of a Public Group, by example an Admin / Tech Lead active group, or for release deployment user, that may be granted access on all sandboxes.

    You are required to select a public group. That means you need to configure such Public Group to be able to go beyond this screen. As it is an one-off operation, that is something you can configure up front, and review when needed when resources leave or arrive.

    As you can see on the screen, the group is mandatory. Otherwise, it will generate an error asking you to enter a valid group name


    To read more on the subject :

    Code Builder – Setup – Step by Step activation guide

    If you were used to develop, and never jumped to VS Code installation on your workstation, you can now access Code Builder, with a much more professional user experience than Dev Console.

    Follow this step-by-step guide to enable Code Builder, directly in your Salesforce Org.

    You will need to enable from within your Production instance, but would be naturally able to work since then in your developer sandboxes. It will require a production license for each developer needing to use Code Builder, but does not need to be a full Salesforce business license.

    Setup – Code Builder – Enable Code Builder

    A new package version has been available since early May

    The package is then available in Setup > Installed Packages

    You can then either enable the Code Builder license to the Platform Integration license,

    or manually assign the related permission set group to the concerned users

    Remark : you would see the following permission sets when going through the related detailed permission sets

    To Launch Code Builder, go to App Launcher

    Code Builder instance is then loading in the browser, with an URL address looking like: https://nameoftheinstance-name.fra.001.sf.code-builder.platform.salesforce.com/?folder=/home/codebuilder/dx-project

    After loading you will see a screen that will ring a bell :

    Let’s connect the instance on which you will work (sandboxes) as you would do with your VS Code’s Command Palette

    To do so, please follow the following instructions :

    • Click on Connect an Org button from previous screen. Then, in the displayed popup, select the kind of sandbox to connect to, as you can do, with VS Code’s Command Palette

    • Enter an alias to easily determine the instance

    Once the window is loaded (could take a while), please click on the cloud icon, in order to open the Org Browser.

    When you choose Open the Org Browser, all the configured instance metadata is retrieved and displayed in your local project under the root directory.

    Then to access detailed configuration, choose the metadata in the left panel, and choose to Retrieve and Open Source

    Now you can modify and push your code, from CodeBuilder, to your developer sandbox. As in VS Code, be always aware on the sandbox / instance, which your Code Builder is connected to.


    To read more on the subject :

    Scale Center for Salesforce Org Performance review (beta since Summer’23)

    Salesforce has made available, an org analysis feature, called « Scale Center » to all their Unlimited Edition Client. It has been made available on Full Copy sandboxes as well.

    The feature is accessible from the setup menu (look for « Scale Center » in setup’s Quick Find box). You still may try to contact your Salesforce AE, to get, or try to activate the solution for your Salesforce instance.

    First, get to Scale Center section, select Org Performance, and activate the feature.

    Scale Center – Welcome screen to launch the analysis feature

    Once activated, Scale Center will run to collect and analyse your data. It will need a couple of hours to gather all measures.

    Scale Center – First data collection process

    After performance measures collection, the admin system will be able to define either a quick observation range (last 4h / last 12h / last 24h until now) or define more accurately the time frame for data observation.

    Scale Center – Simple range definition on last few years
    Scale Center – Custom base range between 2 dates

    The Admin System will also be able to compare the time frame, with a previous one, by clicking on Compare checkbox, and then define the second timeframe.

    Scale Center – Time frames comparison

    Here is below a sample of a performance measure chart on a long time frame

    Scale Center – Restitution of the overall performance on a time range

    The tool allows the Admin user to define a 30-minute long slot, to deep dive on outliers, or anomalous data that may be highlighted in such chart.

    Scale Center – Deep dive on a time slot selection

    From this 30-minute long selection, the System Admin will be able to generate either :

    • a dedicated report on a specific axis (Apex, or Database..)
    • a consolidated report, gathering metrics related to all topics of the list below

    Scale Center – Report generation starting from the previous time range definition

    Start a new analysis report, see report status,

    Scale Center – Report definition

    From the Setup menu (Setup > Performance > Scale Center > Performance Analysis) a system admin can access all performances reports generated from within the previous screens. You can consult there the last 100 reports generated within your Salesforce Organization.

    However, be aware that the generated reports will expire after 30 days.

    Scale Center – Analysis report generation in progress

    The Performance Analysis report will take a few minutes to be generated. During this preparation time, when clicking on the report in progress, the report is not yet available.

    Scale Center – Analysis report not available because in progress

    When ready, the report will be accessible by refreshing the page ; it will be tagged as available, in the Analysis related list, from the previous screen.

    Scale Center – Analysis report available for consultation after generation


    To read more on the subject :

    Winter’24 – Permission Set Summary (Beta)

    In Winter’24 preview, there is a new feature that is in beta testing, that allows to consolidate and present an overall vision of all permissions present within a given Permission Set.

    To access this summary, you should navigate in Setup, to the given permission set, and click on « View Summary (beta)« 

    A complete summary of all included permissions, of this Permission Set, is then displayed, without needing to deep dive in the usual permission menu (that you could see in the grey section of the bottom of the previous screenshot).


    The top section of the page displays :

    • A first block with the Permission Set summary information,
    • Information about all permission set groups, which include the Permission Set

    The section below presents :

    • The System Permissions present within the enabled Permission Set (before you had to go to the System Permission sub menu, and scroll through the whole page with all System Permissions, to see which ones have been enabled),
    • The Object permissions
    • The Field permissions

    Salesforce Summer’23 – API v21-30 retirement (Summer’25!) – Integration problem with Microsoft Power BI

    For Summer’23 release upgrade, Salesforce have originally announced that they will stop supporting API (Soap, REST, Bulk) version from version 21.0 to 30.0.

    Salesforce Platform API Versions 21.0 through 30.0 Retirement

    Release Update announced for Summer’23

    For information, as you can see in recent Summer’23 related communications, these versions will be retired but will continue to run technically until Salesforce Summer’25 release !

    That extra-time gives every Salesforce teams 2 years to update all API usages to newest API versions, and concomitantly ensure in the meantime that the « oldest » API are not used anymore by applications or tools connected to Salesforce (to push data to Salesforce, or get data from Salesforce), in your clients IT landscapes (ETL/ESB, data visualization tools, Salesforce custom API requests from client websites or mobile applications…).

    https://developer.salesforce.com/blogs/2023/05/an-important-update-to-our-legacy-api-retirement-plan

    To prepare for the API retirement, for our clients, we may organize technical discovery sessions with application owner (of all the applications connected to Salesforce) to discover which API version is used by these applications / these usages… but you will need to investigate technically as well through all the applications connected to Salesforce.

    To get all these usages, you may use a VS Code extension like SFDX-Hardis (and especially Detect Legacy API use function)

    Extract of Apex version legacy usages – retrieves with Hardis SFDX extension


    I wanted to highlight a special usage I identified about a very well-known (and used) data visualization application : Microsoft Power BI.

    Microsoft Power BI connection to Salesforce uses default v29.0 version, when the vesion is not explicitly configured in the report source.

    A PowerBI configuration file, without mention of Salesforce API Apex version

    To be able to make PowerBI use the desired Salesforce APEX API version, Data or Business consultants have to mention the API version to use, directly in the connexion configuration (Salesforce Login URL could be replaced by the domain name URL of the concerned Salesforce instance)

    Source = Salesforce.Data("https://login.salesforce.com/", [ApiVersion=57.0])
    
    

    Just be cautious about :

    • Always work with the version of your production environment

    In Salesforce release preview periods, you may have preview sandboxes on version N+1, although your production and non-preview sandboxes are in version N. It would generate errors if a configured API connection, based on the sandboxes you are testing the reports with, are deployed in order to connect with the production instance. Always leverage on the API version of the production instance.


    To read more about 

    Salesforce Spring’23 – Data model – new Gender Data Fields

    In Spring’23 release upgrade, Salesforce deployed new gender fields : Gender Identity & Pronouns.

    This data model upgrade concerns Lead, Contact, and Person Account objects :

    • API names on Lead & Contacts : GenderIdentity & Pronouns
    • API names on Person Account : PersonGenderIdentity & PersonPronouns
    Change modal to accompany clients to adoption of Gender Data

    By the past, Salesforce had already implemented these fields in their Non-Profit Success Pack (NPSP). With Spring’23 release, it is now integrated in Salesforce core platform, beyond mere client referential, feeding all the clouds, especially marketing products.

    New GenderIdentity standard field on Contact standard object – Picklist values
    New Pronouns standard field on Contact standard object – Picklist values


    Equality is a strong core value at Salesforce, one among the 5 core values on which Salesforce relies (Trust , Customer Success, Innovation, Equality, and the more recent Sustainability) and develop all its business.

    As Salesforce mentions they wish to provide to their employees an ecosystem where they can feel themselves the way they are, it was natural for them to deploy in their products, for their customers, the same kind of attention, they provide to their employees.


    Just be cautious about :

    • The fields are not yet available on unrefreshed Non-Preview Sandbox.

    The fields had been deployed/delivered by Salesforce on production environments (with Spring’23 release upgrade, early February) and on preview sandboxes (early January). However, be aware that non-preview sandboxes had not been upgraded with these fields. So you may experiment some CI/CD issues or deployment errors, if you use automatic integration/deployment processes and tools, because they will identify a data model discrepancy, and they will not be able to deploy these standard fields. A sandbox refresh is still possible to update your non-preview sandboxes to match Spring’23 delivered data model, but it is still a laborious operation that needs to be planned and well organized among all teams / users / stakeholders.

    • These fields may not appear on your extractions. They may even generate errors !

    As the fields came in with API v57.0, you will need to use this last v57.0 API version to access these fields. Otherwise Salesforce API will not let you access them.

    Error when querying new gender fields in current « not v57.0 compliant » Salesforce Inspector / API

    For example, Salesforce Inspector is still in version 1.14 aligned with Winter’23 release (v56.0) while a GitHub Pull Request has been created in Salesforce Inspector’s GitHub repository to ask the author to make the extension compliant with latest Salesforce API.


    To read more about (publications et guides written by Salesforce)

    Salesforce Trailblazer TDX 2023 – 5 FREE Integration User

    Free Salesforce swag is always something that Trailblazers, Salesforce clients, and Salesforce-addict consultants are looking for… but when it comes to free licences, that’s a whole other issue !

    In last TDX 2023 (TrailblazerDX 2023) on March 7th and 8th, Salesforce announced the addition of 5 FREE Integration user (= API Only) users for their clients (with Salesforce Enterprise and Unlimited editions), to be deployed, in a phased way as of March 14th, with additional licences at a very challenging price.

    And, here they come !!

    Salesforce, with its last Spring’23 patch 13.1, introduced the Salesforce Integration user license along with a Profile named API Only.

    As indicated by its name, this new profile is dedicated to back-office operations / integrations.

    5 new licences added for free and available for integration/technical user assignment

    Naturally, in past and ongoing Salesforce implementations, Salesforce Architects and Technical Lead still recommend to use dedicated user (with either System Admin or Custom technical-oriented profile) to handle integration use case within Salesforce (still with proper connected app configuration as a best practice).

    Each integration type is often covered by a dedicated user (or at least it should be).

    That often leads to contexts with up to 3 or 5 dedicated integration users for integrations. Even if is aligned, this way, with administration & security standards, all these users consumes « all included » highly-priced « business » licenses slots.

    From an admin point of view, there is no need anymore to create / clone new custom profile (who has cloned it from System Admin profile with out modifying it ? Moreover, who has always handled them directly as Admin ? ). The new API Only profile is here on the shelf.

    New Profile – API Only naturally – accessible in Salesforce setup

    As it is an « API Only » enabled profile, the users who will be assigned this new profile, will only be dedicated to integration use cases, because users would not be able – as it should always be the case for technical / integration users in order to avoid security-related access issue – to login to Salesforce login page by using the user credentials (that generally never expire, by the way).

    The existing and new users – dedicated to integration use case – are now to be transferred / created with this new license and profile. Have fun & free some licenses !

    Just be cautious about :

    • Automatisms / Apex code / bypass triggers… that may leverage profiles names. They should be taken in account concomitantly with the profile assignment switch to the new license/profile.
    • Check your integration after your license switch (with non-regression testing) on sandbox before impacting the configuration. Obvious comment, but that does not hurt to write it 😉

    License and profile are available, as the others, in user creation setup page

    For information, to be complete, an known issue has been logged by Salesforce, because some clients, who had already created a custom « API Only » profile with the same security idea, have encountered issues in their code. The issue is currently handled by Salesforce and will be solved in an upcoming patch.

    In addition :

    • A Integration licence will be available in Developer Editions to test the feature
    • For customers who would need additional licenses, it will be possible to buy additional licenses at a very challenging $10 per user per month price (current public licences price shared by Salesforce).

    To read more about Integration users :