7.4 Changelog
This page lists all the changes introduced in 7.4 releases. See also the release notes and the migration guide.
7.4.3 (2025-07-17)
Feature
-
Improve template rendering
Details
Previously, the React template component was being remounted entirely whenever the record context changed. This caused visible UI flicker and unnecessary teardown/re-initialization of the component, even when only the record data was updated.
This fix ensures that the template component now mounts only once, and instead of remounting, it will re-render efficiently in response to changes in the record context. This preserves component in dom by react and eliminates the flicker, resulting in a smoother user experience during form changes.
This impacts all fields viewers, label/static/help widgets, fields tooltip, kanban/cards/calendar/custom views.
-
Add React template support for ReportBox and ReportTable templates
Fix
-
Fix o2m header gets hidden on scroll
-
Fixes how the form context is prepared
Details
The way from context was prepared was creating issues. The form context is a concatenation of the action view context values and the view/record values. But it was created in the wrong order : instead of appending view/record context values first and then the action view context values, it is now the reverse. The view/record context values should be priority over action view context values.
Means that if passing some data in action view context that can have the same names as the view/record context values, the latter will have priority.
This fixes an issue with chart/search views search-field requests : the model was coming from the action view instead of the form itself. In case of chart and search views (without
search-form), the model is by defaultcom.axelor.script.ScriptBindings. -
Fix box-shadow styles for nested panels
-
Fix evaluate readonlyIf attribute in form view
-
Fix handle save action in editable grid line
Details
When a "save" action occurs from a button inside an grid line, the save is now handle by the main record whatever if the grid is in edit or non-edit mode. It also ensure data integrity and correct state updates. The following sequence occurs :
-
In case of non-edit grid mode, trigger the onChange of the current field, if any input is currently focused and value changed.
-
Trigger the onClick action of the button to update the line data.
-
As soon as a "save" action is detected, commit the line to trigger the onChange of the relational field.
-
Finally, the save action of the main record is triggered with the updated grid data.
-
Continue any pending action after the save.
It is not recommended to update the record after the save. action-view/report/validate can still occurs.
-
-
Fix and improve NavMenu theming
Details
This fix few styles issues on NavMenu. As part of the changes, it also comes with improvements on NavMenu theming capabilities.
7.4.2 (2025-06-26)
Feature
-
Add processing indicators on login and reset/forgot password buttons
-
Provide better error message when filter name is already in use
Fix
-
Fix sync selection of collection in action context
-
Avoid full recomputation of extended views after view hotswap
Details
Modifying a view XML file that doesn’t contain view extensions incorrectly triggered a recomputation of all extended views.
-
Fix interpolation in error notification
-
Fix missed resources to watch in view watcher
Details
Finding paths was not thread-safe and could occasionally cause missing paths to watch.
-
Fix refresh-tab signal on active tab view only
Details
refresh-tabsignal should be applied on active tab view, not on active view. Means that popups are excluded and only active tab view is reloaded (whatever view type is).
7.4.1 (2025-06-10)
Feature
-
Allow to provide additional java mail properties
Details
Allow to provide additional java mail properties for smtp and imap from properties file. Any java mail properties can be added using
mail.<protocol>.properties.prefix.For example :
mail.smtp.properties.mail.smtp.ssl.trust = <host-name-of-mail-server> -
Add selection or enum type in field help popover
-
Add parent field in dms view details
Fix
-
Fix prevent executing multiple time the same action if already in progress
Details
It will prevent executing multiple time the same action if already in progress. Mostly related to save click in form view or popup dialog buttons.
-
Fix saving customized grid view
-
Fixed the order of actions on the buttons in the grid customize popup
Details
In the grid customization popup, the reset and save buttons should first trigger the process. Then, if the action completes, close the popup. So that in case of error, the popup doesn’t close prematurely.
-
Fix calling repository populate on read web service
Details
read record by id using GET method (
ws/rest/<model>/<id>), should call the entity repository like any other web services that returns data. -
Fix grid rendering issue on sorting
Details
Avoid grid unmount/mount during search requests causing some grid state resetting (scroll positions, …)
-
Fix pass context to o2m inline editable widget
-
Fix set default country in phone widget
-
Fix menuitem schema causing wrong reload on overridden menuitem
-
Fix mask input on date picker input
Details
On widgets using a mask (date/time,…), previously adding characters causes existing characters to advance. And deleting characters causes existing characters to move back. Now adding or deleting characters will not affect the positions of existing characters.
On date/datetime, it also validates date parts (days/months/years) for valid inputs.
-
Fix can* attributes evaluation on form view
Details
can* attributes (
canNew,canEdit, …) on form view allow javascript expressions and should be evaluated against the associated context.
7.4.0 (2025-05-15)
Feature
-
Add maven group id to module meta data
Details
The maven group id of the module is now stored in axelor-module.properties.
-
Fix view schema deserialisation issues
Details
The view schema types are designed with JSON serialisation in mind. However, with the new studio designer, we also need proper JSON deserialisation support.
-
added missing annotations
-
added missing getter/setters
-
added missing subtype annotations
-
added
x-json-modelon to AbstractView to identify view by custom model -
added
idattribute to form/grid view items -
fix widgetAttrs deserialization issue
-
use
PanelFieldinstead of baseField -
fix duplicate
typekey in serialized view json -
fix view width serialization issue
-
-
Add maintenance service
Details
You can define maintenance mode behavior by implementing
MaintenanceService:import com.axelor.web.service.MaintenanceService; public class ContactModule extends AxelorModule { @Override protected void configure() { // (...module configuration) // Bind the maintenance service interface to your implementation. bind(MaintenanceService.class).to(MyMaintenanceService.class); } }public class MyMaintenanceService implements MaintenanceService { // Implement your maintenance mode logic. // By default, maintenance mode is never enabled. @Override public boolean isMaintenanceMode(User user, HttpServletRequest httpRequest) { if (/*custom logic*/) { return true; } return false; } }Default maintenance page is
error-503.htmllocated insrc/main/webappdirectory. Note that you are free to override it if needed, by putting your ownerror-503.htmlin thesrc/main/webappdirectory of your module. -
Implement batch saving of tracking messages/followers
Details
Optimized the saving of audit tracking messages and followers by implementing batch processing. This improves performance, especially during operations that generate many tracking entries.
-
Add data import permissions
Details
For the upcoming advance import/export feature (enterprise only), we need more fine grained data import permissions support.
This change adds an additional
canImportpermission option for objects and fields.Run following SQL script to adjust
auth_permissionandmeta_permission_ruletables changes :ALTER TABLE auth_permission ADD COLUMN can_import boolean; ALTER TABLE meta_permission_rule ADD COLUMN can_import boolean;
Change
-
Change enterprise edition usage
Details
Usage of the enterprise edition of the platform is evolving: it is no longer a matter of a single
com.axelor:axelor-enterprise-editionmodule to rely on, but of different variant of the core modules.As of now, to use enterprise edition, remove the dependency
com.axelor:axelor-enterprise-editionand add the propertyaxelor.platform.ee = truein yourgradle.properties. This will automatically update your dependencies to use requires and right EE modules.
Fix
-
Fix view shortcuts scoping
Details
The last popup view should be used as the target view tab.
-
Fix custom record filtering
Details
The
Queryinstance obtained withMetaJsonRecordRepository#all(String)should filter custom records even if no additional filter provided. -
Fix disable selection in readonly mode
Details
When selection widget is rendered in readonly, it should open selection through any interactive events like key press, key up/down or element click.
-
Fix view field hilite extension support
Details
Adding new hilite rules to fields were not working.