7.2 Migration Guide
In this document, we will see the major steps to migrate from 7.1 to 7.2.
Please check the change log for detailed list of fixes, changes and improvements introduced in 7.2 |
Region support added on translations
Similar to the current translation behavior, you can now provide translation per region : fr-FR
, fr-CA
, …
To add more languages, you need to enrich the select.language
selection. Then you can provide translations files per
region : messages_fr-FR.csv
, messages_fr-CA.csv
, …
Translations in CSV without values are not loaded anymore. |
There is a translation fallback mechanism that ensures that if an exact match for a translation is not found, the translation for the primary language is used instead. This is particularly useful for avoiding duplicate translation effort for languages with regional variations, as well as for maintaining a consistent user experience even when some translations are missing.
For example, if a user selects fr-CA
(Canadian French) as their language and a specific translation is not available
in messages_fr-CA.csv
, the translation will fall back to messages_fr.csv
(French). If the translation is still not
found, original translation key is used, which is typically the message for the default language, en
(English).
User email now has unique constraint
There is now a unique constraint on the User
email
field. You may execute this SQL statement for migration:
UPDATE auth_user SET email = lower(email);
ALTER TABLE auth_user ADD CONSTRAINT uk_auth_user_email UNIQUE (email);
Password reset flow
Users have now ability to reset their password through the "Forgot password" flow available on the login page.
You need execute this SQL statement for migration :
create table auth_password_reset_token (
id bigint not null primary key,
archived boolean,
version integer,
created_on timestamp,
updated_on timestamp,
consumed boolean,
expire_at timestamp not null,
token varchar(255) not null constraint uk_btb4g1e6nvrwsmphnw0k43icg unique,
created_by bigint constraint fk_g21jxbwc75y8f79lf94qu1lmx references auth_user,
updated_by bigint constraint fk_n5d2audpih6fy2eruodkcu2ib references auth_user,
user_id bigint not null constraint fk_4i2jo1snnd87krhdt4kt5j09h references auth_user
);
create index auth_password_reset_token_user_id_idx on auth_password_reset_token (user_id);
create sequence auth_password_reset_token_seq;
Add support to track custom fields
This adds support to track custom fields. On each custom field, you can specify if the field should be tracked, but also the associated event and track condition.
You need execute this SQL statement for migration :
ALTER TABLE meta_json_field ADD tracked boolean;
ALTER TABLE meta_json_field ADD track_condition varchar(255);
ALTER TABLE meta_json_field ADD track_event varchar(255);
UPDATE meta_json_field SET tracked = false;
ALTER TABLE meta_json_model ADD panel_mail_display integer;
UPDATE meta_json_model SET panel_mail_display = 0;
String pattern validation set to be case-sensitive
String pattern validation, through the attribute pattern
, is now case-sensitive. To manage case-insensitive, it
should be managed in regex expression itself.
Example :
-
^Foo
: it matches string starts withFoo
. -
^(F|f)oo
: it matches string starts withfoo
orFoo
.
Note that it doesn’t match the entire value but any subset. In order to match the entire value, add ^
at the start of
the pattern and a $
at the end.
If coming from an older version (< v7), x-pattern
attribute was commonly used (due to historical reasons). This is
no more recommended and this attribute has no more effect. Migrate from x-pattern
to pattern
and adjust your regex
according. Note that x-pattern
was matching the entire value whereas pattern
don’t.
Hibernate search support removed
We removed Hibernate search support (Full text search). The implementation was very basic and haven’t been followed and improved since the initial implementation.
Following properties aren’t used anymore and can be deleted from properties file :
-
hibernate.search.default.directory_provider
-
hibernate.search.default.indexBase
We are actively working on a new integration that will provide much more power and a better integration in daily usage. Stay updated for the announcement in a future version.
There is no replacement. Advance search feature can be used in order to achieve same goal.
Deprecated icons
Two libraries are used to provides icons : Material Symbols and Bootstrap Icons. It first tries to first use Material Symbols if the icon exist, then fallback to Bootstrap icons.
As part of our upgrades, Material Symbols icons has been removed or renamed. In order to maintain compatibility and
smooth migrations, icons that don’t exist anymore has been mapped with their equivalency. Here is the list :
arrow_back_ios_new
, done
, expand_less
, expand_more
, file_download_done
, navigate_before
, navigate_next
,
cut
, emoji_flags
, feed
, monetization_on
, wifi_calling_1
, wifi_calling_2
, wifi_calling_3
,
airplanemode_active
, clear_night
, device_reset
, flightsmode
, lens
, panorama_fish_eye
, quiet_time
,
quiet_time_active
, restaurant_menu
, ev_charger
. Deprecated icons will be logged in console in non production
mode. This mapping is susceptible to change over upgrades, we strongly encourage you to update them.
Dependencies upgrade
Some dependencies have been upgraded to newer versions. Check the change log for detailed list.
Other Notable Changes
-
Some layout changes in the login page as part of customizations (doc)