---
schema_version: "1"
id: 1852176ecd489acdc90cd5f307599a2cedfc7155ab555538461598a000a03fce
title: ICU Locale Format Migration Tests
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/admin_locales_test_changes.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.admin_locales_test_changes.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: f5abbd0550917777947bafee7148079cc8b5e60bb09efdb54f1dfa410e36195e
description: To avoid unexpected behavior after you migrate from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, test the ICU locales. When you migrate from JDK to ICU, the formats for some locales change. Use functional tests to verify existing functionality, and confirm that these formats appear correctly for each affected locale used in your org. Also, verify that integration with third parties works as expected, and test your installed packages with the new formats.
products:
  - Salesforce Platform
  - Cross Cloud
release: "264"
---
# ICU Locale Format Migration Tests

To avoid unexpected behavior after you migrate from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, test the ICU locales. When you migrate from JDK to ICU, the formats for some locales change. Use functional tests to verify existing functionality, and confirm that these formats appear correctly for each affected locale used in your org. Also, verify that integration with third parties works as expected, and test your installed packages with the new formats.

### 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: all editions</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
      <colgroup>
        <col style="width:50%">
        <col style="width:50%">
      </colgroup>
      <thead class="slds-text-title_caps ">
        <tr class="">
          <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d64156e58">User Permissions
            Needed</th>
        </tr>
      </thead>
      <tbody>
        <tr class="">
          <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d64156e58 ">To view release updates:</td>

          <td class="slds-cell-wrap" style="vertical-align:top;" headers="d64156e58 ">View Setup and Configuration</td>

        </tr>
        <tr class="">
          <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d64156e58 ">To enable or disable release updates</td>

          <td class="slds-cell-wrap" style="vertical-align:top;" headers="d64156e58 ">
            <p>Manage Release Updates</p>
            <p>OR</p>
            <p style="margin-bottom:0;">Customize Application</p>
          </td>

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

## Test in a Sandbox

Because dates, times, numbers, and currencies are used throughout Salesforce, it’s important that you test thoroughly in a sandbox when you enable the ICU locale formats. Run the same tests for each locale used in your org.

Also consider asking users for each locale used in your org to verify that the formats appear as expected. Identify key workflows, reports, filters, and screens, and help the users understand the fields and functionality that uses the affected data types.

## Verify That Your Installed Packages Are Ready for ICU

If you have installed packages from AppExchange, check with your package providers. Before you start testing, make sure that all your installed packages are compatible with the ICU locale formats. If your package provider indicates that a fix related to ICU is pending for one of your installed packages, factor that information into your testing and activation timeline.

## Look for These Issues

When you enable the ICU locale formats, the formats for these data types change for some locales: currency, date, datetime, integer (numbers), and time. If you’re testing for a locale format change, the address and name data types can also change.

Although the specifics can vary, issues usually fall into one of these buckets.

- Unexpected formats. In the section on functional and end-user testing, we call out specific areas to test. Most unexpected formats occur on custom pages, during custom triggered events, or are returned by custom objects when a Visualforce page, Apex class, or Apex trigger uses API version 44.0 or earlier. For more information and examples, see [API Versions for Apex Classes, Apex Triggers, and Visualforce Pages](https://help.salesforce.com/s/articleView?id=xcloud.admin_locales_update_api.htm&release=264.0.0&type=5 "The International Components for Unicode (ICU) locale formats are available with API version 45.0 and later. To use the ICU locale formats in your customizations, all Apex classes, Apex triggers, and Visualforce pages must use API version 45.0 or higher..").
- Custom code exceptions and errors. Good code practices use locale-neutral methods when handling data and apply locale-specific formats after all other processing is complete. For this reason, issues with custom code aren’t common. However, some custom code can handle locale data improperly. To learn how to use locale-neutral methods in your code and review examples, see [Custom Code and Locale Format Changes](https://help.salesforce.com/s/articleView?id=xcloud.admin_locales_code.htm&release=264.0.0&type=5 "Address, currency, date, datetime, integer, name, and time formats can change when a user changes locales. These formats can also change when the locale format standard changes or formats are updated. Learn how to avoid errors by using locale-neutral methods in your code and review examples. Then understand how to verify that your integrations work with new or changed formats.").

## Consider End Users and Processes

When testing, consider how the new locale formats can impact your end users and processes. For example, an uninformed user can misinterpret a new date format, or a longer format can require adjustments to printed labels. When possible, we recommend that you include end users in your testing. End users can help test their workflows and help identify the potential impact of the new locale formats on your processes.

To help your end users prepare and reduce post-activation questions, notify your users before you enable the new formats in production. Provide detailed information about the changes to the locales in use in your org, and point them to any updated processes.

To determine the locales in use in your org and which users the new locale formats impact, see [Determine the Locales in Use](https://help.salesforce.com/s/articleView?id=xcloud.admin_locales_determine_use.htm&release=264.0.0&type=5 "To identify the locales used in your org, you can use an SQQL query, a report, or both. When locale formats change, your adoption effort depends on the locales used in your org. For example, when you migrate from Oracle’s Java Development Kit (JDK) locale formats to International Components for Unicode (ICU) locale formats, or when existing locale formats change.").

## Functional and End-User Testing

In addition to your standard functional testing, make sure to include custom functionality that relies on currency, date, datetime, integer (numbers), and time data. For example, a workflow that runs based on the day of the month or a report that groups Opportunities by value.

Ensure that your test plan includes these areas that locale format changes can impact.

- Filters—Filters are available in reports, formulas, validation checks, and automated workflows. Also, filters can exist in lookup relationship fields. Test filters that use dates, times, numbers, and currency values.
- Apex Code and Lightning Components—When testing, include all custom functionality written by a developer using Apex or Lightning components. Custom code can include Lightning components and pages, Visualforce pages, custom workflows, and reports.
- Processes That Use Third-Party Data—Receiving data from an external system is another type of integration. Identify and test processes that use incoming data from an external party. For example, if you receive leads from an external vendor. This data can be integrated into Salesforce automatically through API calls, or it can come in the form of files to be processed, such as CSV files.
- Third-Party Apps That Use Salesforce Data—Check your existing integrations to ensure that your data is correctly parsed with the new formats. Most integrations store data in a neutral format, but some integrations specify the format of the data for input and output.
    
    For example, you send information about your contacts to a third party that then sends reminders based on contract dates. During your testing, verify that the third-party app receives the data with the modified locale date formats correctly. If you find an issue with a third-party app, contact the company that owns the app to remediate the issue.
- Installed Packages—If your org has installed packages from AppExchange, verify that your data is parsed correctly with the new formats.
    
    For example, if an installed package provides or scrubs lead data, verify that the date, time, and currency data display as expected with the new formats. Or, if the package provides project management tools, test any date-based calculations. If you encounter an issue with a managed package, report the issue to the package provider.
- Custom Functionality—Validate web services, email services, formula-based fields, and any complex business workflows in Salesforce that use custom code. Focus on the processing of date, time, number, and currency data, and include processes that are triggered based on this data.

## Test Again in Production

Before you enable ICU in production, we highly recommend that you test the ICU locale formats in a sandbox. Ideally, your sandbox includes all the functionality of production, but there can be obvious and not so obvious differences with production. For example, does your sandbox include integration with all third-party applications? Are there data types or complexities that only exist in production? As a result, we recommend that you perform another round of testing when enabling the ICU locale formats in production.

## Complete the Release Update

After you enable the ICU locale formats, complete your testing, and update your org as needed, you can complete the Enable ICU Locale Formats release update. In Setup, in the Quick Find box, enter Release Updates, and then click **Release Updates**. For Enable ICU Locale Formats, click **Get Started**. Click the **Assess the impact of this release update** step, and click **Done**. Then confirm that you completed the required steps for the update. After you complete the update, the steps can’t be changed.

#### See Also

- [Adopt the ICU Locale Formats](https://help.salesforce.com/s/articleView?id=xcloud.icu_migration_how.htm&release=264.0.0&type=5 "The ICU locale format release update is available for all orgs. Review the high-level process to successfully migrate to the new International Components for Unicode (ICU) locale formats. Some of the formats differ from the ones provided by Oracle’s Java Development Kit (JDK). Understand how to determine the impact of changes on your org, and learn about the updates required to support the new formats.")
- [Custom Code and Locale Format Changes](https://help.salesforce.com/s/articleView?id=xcloud.admin_locales_code.htm&release=264.0.0&type=5 "Address, currency, date, datetime, integer, name, and time formats can change when a user changes locales. These formats can also change when the locale format standard changes or formats are updated. Learn how to avoid errors by using locale-neutral methods in your code and review examples. Then understand how to verify that your integrations work with new or changed formats.")