# Core Engine Release 4.0
May 2023
We upgraded! What's new? Learn more about new features, technical changes and solved bugs in 4App Core Engine.
Note on upgrading: If you skip a version when upgrading, check all release and patch notes in between for important information. They apply cumulative.
Note on individualization: If your 4ALLPORTAL is highly customized or if you installed individual apps, please contact your implementation partner before upgrading. We recommend checking your custom contents, especially layouts and object renderers, carefully after an upgrade.
Breaking Changes
Major version 4.0 contains breaking changes and important upgrade instructions that should be read carefully.
# Breaking Changes
# Discontinue Support for MySQL 5.7
With 4.0 we drop the official support for MySQL 5.7. It is required to upgrade your database to MySQL 8.0.31 or higher before upgrading your 4ALLPORTAL.
# Discontinue Support for MariaDB 10.5
With 4.0 we drop the official support for MariaDB 10.5 or below. It is required to upgrade your database to MariaDB 10.6 or higher before upgrading your 4ALLPORTAL.
# Discontinue Support for Windows Server and Linux
From 4.0 we only support 4ALLPORTAL installations with Docker (more information). Windows Server and Linux installations are not supported anymore.
What to do: Upgrading to 4.0 is only possible after moving from Windows Server/Linux to Docker. For production use, Docker should run on a Linux Server.
# Remove General Default Password for Docker Containers
The default value for GENERAL_ADMIN_PASSWORD
has been removed to enhance security. Docker container configurations starting from 4.0 are required to set this variable, else the container will exit immediately with an error message.
# Discontinue Support for Installation UI
Since we only support Docker environments with version 4.0, we have removed the installation UI. The necessary settings must be made via environment variables
# Remove Legacy API /rest Endpoints
Legacy REST API endpoints with /rest
are not supported anymore. For them, the new OpenAPI is used. Its documentation can be found under YOUR-4ALPORTAL-URL/swagger-ui/index.html
.
What to do? Replace these endpoints with services from the new OpenAPI.
# Dropped Browser Support
We dropped the support for many old browser versions and web platforms. Only the following platforms are supported:
- All Chromium-based platforms (Google Chrome, Microsoft Edge (Chromium-based), Vivaldi, ...) with the latest Chromium version
- Firefox in the latest version, and the latest ESR release
- Safari in the latest version or one previous version
Not listed platforms are not supported (Internet Explorer, Microsoft Edge (non-Chromium-based) and others)
# Multiple Changes Enabled
The system behavior of applying configuration changes improved: Multiple changes of one
layout or object renderer file are enabled now. E.g. the same default.4aplayout_c
can be part of several 4Apps and the
custom folder and will apply for all in the defined 4App order.
Possible impact: Default changes that were copied to override/customize may now apply twice.
What to do: If you have custom changes, compare them with default change files and delete duplicates before upgrading to 4.x (upgrade notes).
# Change Files Require Attribute extends
In change files, tag <changes>
must now contain attribute extends
to define the parent file to be changed (e.g. <changes extends="main/admin">
). This way, specific renderer/layout paths can be defined to be the basis for the change. An automatic upgrade tool will set this tag based on the file name/folder path of a change.
Possible impact: In case the upgrade tool cannot determine the parent file name /folder path, the tag will not be added automatically. Custom change files without this tag will not work.
What to do: After upgrading, check your logs for warnings and set the tag manually if necessary.
# Removal of ro
for Renderers and Layouts
We simplified the configuration of role specific object renderers and layouts, which makes prefix "ro" and many changes obsolete. Instead, the system now works with object renderer sets, layout sets and view profiles. We thus removed:
- specification
ro
and the corresponding storage/configuration from the default - the option to assign role specific renderers/layouts via feature permissions
- the whole
Layouts
section from the role configuration matrix
Sets are module specific. They contain a mapping of (role) specific renderers/layouts to requested views and need to be created if you want to change the default display. Sets are required to configure view profiles.
View profiles work across modules and are created in the user settings. Admins can build profiles from available sets, considering a role's needs, e.g. "DAM administrator". View profiles are assigned to one or multiple roles in the role configurations.
Possible impact: All object renderers and layouts using ro
are not supported anymore.
Automatic conversion tool: Prefix ro
is automatically removed from custom renderers/layouts. All will automatically appear as object renderer sets/layouts in new module configuration snap-ins and can be selected in view profiles.
What to do? Please make a custom folder backup before upgrading, and check the correct conversion after upgrading.
Custom modules/apps: If you work with custom modules, make sure to create the required "default" object renderer set in the module's configurations, and assign it in snap-in Module definition.
# Removal of Folder Based Object Renderer Fallback
The fallback of object renderers to subfolders was removed. The fallback of object renderers to the global folder was also removed. Removed fallbacks are now organised via object renderer sets.
# Removal of ot
for Renderers and Layouts
We have improved the configuration of object type specific renderers and layouts, which makes prefix "ot" obsolete.
You can map multiple object types to one renderer/layout using file config.xml
in an object renderer's/layout's folder, which simplifies the handling of multiple types. We thus removed specification ot
and the corresponding storage/configurations from the default.
Possible impact: All object renderers and layouts using ot
are not supported anymore.
Automatic conversion tool: Prefix ot
will automatically be removed from custom renderers/layouts. All files are moved to extra object-type folders in the file system.
What to do? Please make a custom folder backup before upgrading, and check the correct conversion after upgrading.
# New Storage For Admin Renderers
All object renderers for the general administration area moved from global/default
to global/object_renderer
(metadata/search/simple).
Exception: If a module is displayed in the administration area, the admin renderers are stored in a module's folder (e.g. for module User: modules/user/object_renderer/simple/admin
).
# Layout Styles/CSS
CSS styles in layouts now only affect the layout and the components specified there. Child elements are no longer taken into account.
Possible impact: Styles supposed to change something within a component or to affect other layouts no longer work.
What to do: Check and adjust your custom layouts, and use the customized CSS feature if required.
# Discontinue Support for Components and Actors
Some layout components and actors were changed, and the old ones are not supported anymore, e.g., component polymer-list
was replaced with cm4ap-buffered-list
.
What to do: Check your custom layouts and replace not supported components and actors.
# Global Permissions Fallback Changed
With 4.0 we changed the global permission value of "default" from "public"/"yes" to "none"/"no". All our 4ALLPORTAL modules will change the "default" to "public"/"yes" automatically, so that there are no changes, but any custom module may break with the new global default.
What to do: Check the "default" permissions of your custom modules and adjust if necessary.
# Discontinue Support for Pre-login Locales
Previously labels could be stored in two folders: 'locale_pre_login' and 'locale'. Now all labels are stored in one
folder: 'locale'. All pre-login locales in custom-folder will be automatically migrated into the new folder.
Possible impact: If you have created a custom 4App that stores labels in a "local_pre_login" folder, those
translations (properties-files) are no longer loaded.
What to do: Move files and folder from 'locale_pre_login' to 'locale'.
# Removal of Login Color Values
The login colors primary_login_c
and primary_login_fc
no longer exist. Now the values of general primary colors primary_c
and primary_fc
apply. Also, the correct background color theme_0
is taken for login (instead of fixed black).
Possible impact: Login colors that differ from the configured primary colors will not be displayed anymore.
What to do: Check your theme configuration and update if required (Themes documentation).
# Discontinue Support for 4App Authentication Base
The basic authentication functionalities of 4App Authentication Base are now part of the Core Engine. You can install and configure authentication apps without installing an additional Base. Snap-in Authentication/Authentication Provider
is now a default Core snap-in and can be used to set a default username/password provider, and to define a chosen provider for frontend (more details).
What to do: All authentication providers based on it must be adapted. 4App Authentication Base does not work anymore. Deactivate it before upgrading.
# Discontinue Support for 4App Authentication Provider SAML
The function of this app is integrated into the 4App Core. A new configuration is required after upgrading. It is also required to redo the SAML service at customer site.
Possible impact: It's possible that the connector name in database table user have to be updated manually. This will be necessary if the old IDP configuration name is not possible anymore for the new Asserting Party name.
What to do: After upgrading to 4.0, note the following:
- Remove old 4Apps
Authentication Base
andAuthentication Provider SAML
- Old configurations can be removed or remain, as new configurations are stored in new folder "saml2"
- Set up a complete new configuration for SAML (more details)
# Renaming of Field module
Fields named module
are not allowed anymore. For all existing standard modules, an automatic conversion tool renames fields module
to related_module
. Creating fields with name module
is not possible anymore.
What to do: For custom modules, rename all fields named module
to related_module
.
More details
# -
in Field Names Deprecated
Field names containing character -
(hyphen) are now deprecated. They will only be supported until the next major release.
What to do: When creating new fields, only use allowed characters (details). Check your custom fields for character -
and rename them until the next major release.
# Rename Field add_permission
to additional_permission
The name of field add_permission
changed to additional_permission
. It is generated when additional permissions are activated in the module configurations. The table name in the database has not changed and SQL statements remain unchanged.
The layout detail/add_permission_subpanel
was also renamed to detail/additional_permission_subpanel
.
What to do: Admins/app developers need to check the custom folder and custom apps and replace values add_permission
/ADD_PERMISSION
with additional_permission
/ADDITIONAL_PERMISSION
if necessary.
# Fulltext Search: MATCH Replaces EQUAL
For fulltext search, the frontend now uses the new API query comparator MATCH. The former query comparator EQUAL will no longer return the same results as before.
What to do: If you have a fulltext search in your system, check for the query comparator EQUAL and replace it with MATCH. Also check that the search field has "Include field in full-text index" enabled.
# Discontinue Support for Hook after_create_session
The after_create_session
hook is not supported anymore and has to be replaced with AfterCreateSessionEvent
.
# Frontend Calls before/after_get_single/multiple
Now Use OpenAPI
The frontend no longer uses AMF methods for get_single
and get_multiple
, but the OpenAPI, which only supports search
. Thus, hooks using before_get_single
, before_get_multiple
, after_get_single
, after_get_multiple
will not work anymore when called by the frontend/OpenAPI (for backend methods they still do).
What to do: To keep functionality, create either search hooks (before_search
/after_search
) or searchEvents (BeforeSearchEvent
/AfterSearchEvent
) - see Events documentation.
- adjust Request: If request.isApiCall()=true, the query must be adjusted in the request or else the filter.
- adjust Response: The response for multiple now has
getModuleObjectList
(additionally togetResult
) which must be considered. - combine hooks: Instead of using hooks
before/after_get_single
,before/after_get_multiple
before/after_search
, they can be implemented in single eventBeforeRead
/AfterRead
.
# Template Engine Moved to Separate Library
The Template Engine was moved and the dependency changed.
What to do: Use dependency compileOnly("com.fourallportal:template-engine")
instead of compileOnly("com.cm4ap.tpl:cmlib-core-template-engine")
. Use new package name com.fourallportal.tpl
instead of com.cm4ap.tpl
.
# New Class MailBodyService
We implemented new class MailBodyService
which improves sending emails: If an email attachment (e.g., a logo) is returned by methods sendMailWithTemplate
or sendMailWithTemplateInfo
, it is automatically embedded into the email as cid attachment. This makes it unnecessary to embed them to each email template manually.
App developer: The new class is incompatible with versions below 4.0. Please check your custom apps when adapting to 4.0 and update the methods, if required.
# Removal of HTTP Services
Old URL now removed | Replacement in Open API |
---|---|
/service/usermanagement/login | /api/auth/login |
/service/usermanagement/logout | /api/auth/logout |
/service/usermanagement/authentication_provider/* | /api/auth/providers |
Please migrate your API calls to our new specification (Open API documentation (opens new window)).
# Removal of Deprecated Enum View
Instead of enum View, GET methods have to specify the fields (or all fields) required.
# .4apmsetup Files no Longer Supported
The support of .4apmsetup files ends with version 4.0. The system now only supports new XML files and folders introduced with version 3.10. Note that also the automatic conversion functionality from 3.10 is deleted.
Possible impact: Not converted .4apmsetup files in the custom folder or from custom apps will not be read anymore.
What to do: Before upgrading to version 4.0, make sure all .4apmsetup files converted to the required new files and folders. You may use the automatic conversion tool which is part of version 3.10.
# New Features and Improvements
# New Login Screen
We polished and simplified our login screen. The language selection of the login screen is now automatic depending on either your already stored and active user language (can be set in your profile), or (if no user language is selected/active) your browser's language. If you set your user language in your profile, this will be used also for your next login screen.
# Session Timeout Improvement
When a user's session runs out, they now get a pop-up with credentials to log in again. If they use it, their last view is kept and also all requests are stored. Unfinished work can thus be finished without data loss.
# Improved Personal Settings
We added new section System settings
to the User Profile. Users can now personalize their interface (select a theme and a startup module, change the mega menu order, or group favourite modules according to their needs).
Additionally, all user presets for modules Files, File Transfer, User, and Collections can now be found here (e.g. for download handling, digital rights order, or InDesign settings).
# New Dark Theme
We implemented new "dark theme" for a darker 4ALLPORTAL appearance. Users can select it in their personal settings. Admins can assign available themes in the role configurations, and edit them in admin snap-in System styling
.
Additionally, "Automatic" is available for selection which takes the individual system settings for light/dark into account ("automatic" is now the default).
Note our admin instructions.
# New Feature Object Comparison
With Object Comparison, you can select two objects to compare and copy their metadata. Just select two objects (e.g., two images from module Files) and click toolbox action "Compare (object)" to open the compare view. Dimensions (if configured) will be taken into account.
Please note: Your role must be given the rights to compare the objects of a module.
Admin instruction: This feature may be enabled for each module separately. To enable this feature for a role, set feature permission "Object comparison" to "true" (default: false). In that module's object renderer set, metadata set key "object_compare" needs to be mapped to a renderer.
# Improved System Notifications (Toasts)
Multiple notification toast now stack instead of overlaying each other. They additionally show a countdown before disappearing and may be paused when hovering over it with the mouse.
# Extended Search Options
We improved our search and filter options and added more functionality (note our admin instructions):
- real time search (live display of search results, if not disabled for a module)
- highlighting of filled search fields and active filters
- additional comparators (equal/not equal/less than etc., if configured for your system)
# Improved Subpanel and Confirmation Handling
- Subpanel Refresh: The content of all default subpanels can now be refreshed separately instead of refreshing the whole application. You can find the Refresh button next to the More button at a subpanel's bottom.
- New Subpanel Header: When selecting a record from a subpanel's list, a new header bar highlights and gives you further actions (view/remove etc.) for the subpanel records only.
- Delete Confirmation Pop-Ups: Before deleting a record, the confirmation pop-up now explicitly names the selected record's type (e.g. a role/contact/link etc.).
# Label Translation via GUI (Admin)
With new admin snap-in Translation Studio
, admins can search for, edit existing, and translate new labels directly in the GUI instead of editing .properties files. Two languages can be selected to show side by side. New languages can be added, and the available languages can be exported and imported as a table.
Additionally, new right click menu lets admins right click any label in the GUI to change its translation in a pop-up window.
All translations edited like this will be written to new global .properties file translation_studio.properties
in folder custom/global/locale/{language}
(more details).
# Improved Role Configuration (Admin)
Similar to the personal settings, tab "Advanced settings" in admin snap-in Role configurations
now has improved options to select a theme and to configure the mega menu structure and startup module per role (more details).
# More Module Definition Options (Admin)
In admin snap-in Module definitions, admins now need to define a default Object Renderer Set (more details).
Additionally, a Layout Set may be assigned, and admins can enable/disable the real-time search (default: enabled) as well as the visibility of a module in a user's personal settings (more details).
# FieldRenderer Configuration for Permissions (Admin)
We now support field renderer configurations for feature permissions and presets. XML e.g. with attributes can be added in new admin snap-in field "FieldRenderer" in snap-ins General system configuration/User settings/Feature permissions
and Module configurations/{module}/Feature permissions
. You can thus modify the automatically generated renderer (more details).
# Logout URL per Authentication Provider (Admin)
You now have the option to configure a logout URL per authentication provider. This allows users to be redirected to different websites after logout. Identifying the logout URL:
- Use the logout URL of the authentication provider, if set.
- Use the default logout URL of the 4ALLPORTAL, if set.
- Go to the login page of the 4ALLPORTAL, if no logout URL is set.
# Import Objects on Startup via JSON (Admin)
We now support the import of predefined objects (e.g., users or groups) on startup. To use this feature, place a json file (example.json
) with all required object information in folder custom/modules/{modulename}/predefined_data
or, for a custom app, directly in its module folder.
The json syntax is the same as the API PATCH request for the desired module. All objects can be requested that can be described with text only. You can track the status of the import in admin snap-in Update management
.
# Additional Improvements
- Header bar improvements: If the browser window gets smaller than a certain size, now both profile and header bar icons stay accessible via a clickable "burger" menu.
- When dragging and dropping objects, the target for dropping is now more clearly highlighted
- The tile view of reference renderers is now sortable manually (like visual type bubbles already did)
- When (re)setting a password on the login screen or in the personal settings, users now get a color feedback for correct/incorrect entries
- ReferenceFind pop-ups now show all possible reference modules in a drop-down to select the target module (e.g. module Files and Collections in the Tasks create pop-up)
- Improved usability of webhook event renderers
- Field renderers without
<read_only>true</read_only>
are ALWAYS NOT read-only. It is not guessed anymore by field renderer type and field type - Hide subpanel paging controls when there is no search result
- API: fulltext search support through MATCH query comparator
# Technical Changes
# 4App Extended Search Included in Core Engine
The functionalities from 4App Extended Search were added to 4App Core Engine and are now available by default (new search options).
Please note: The real-time search can now be enabled/disabled per module in snap-in Module configurations/Module definition
(default: enabled).
What to do: New field renderer configurations for comparators require new tag <comparator_list>
. Existing field renderers for comparators using tag <field_renderer_attributes>
are still supported in Core versions 4.x. We recommend updating them, though. Note our information about search comparator configuration.
# 4App HTML Renderer Included in Core Engine
We moved the field renderer type html
, which was previously supplied with 4App HTML Renderer, into the Core Engine. It gives you the option to display text values as rendered HTML or edit them using our WYSIWYG editor (more details).
What to do: 4App HTML Renderer does not work anymore. Deactivate it before upgrading.
# Removed Snap-ins Database and Mailserver
Database and mailserver settings are now solely done in the container configuration (e.g., the docker-compose file), so they are not editable in the GUI anymore. Mailserver settings can be viewed in admin snap-in "General Settings". All Slow Query settings can now be done in Snap-in "Protocol overview/Slow Query".
# Removed Admin Settings from Snap-in General Settings
Admin settings are now solely configured in the docker-compose file, they are not editable in the GUI anymore. Still editable are: available languages, system language, maintenance mode. Additionally, the mail server settings can now be viewed in this snap-in.
# Admin Password Settings
Because now working with Docker installations only, changing the password of admin_user
type installation_admin
is now only possible via the container (Docker) configuration, not via the GUI anymore.
# Dark Theme Effect
Note that new dark theme refers to the "default" theme for primary, secondary, and notification colors and brings own color values for theme colors and header color (more information).
Effect: If you customized the "default", the dark theme's colors may not look harmoniously.
What to do? Try out the dark theme if you customized the "default" theme and make sure the darker theme color apply harmoniously. If they don't, customize the "dark" theme accordingly.
# Module Label Fallback
In case a module-specific label key does not exist, the system now checks for an appropriate key in the global locale folder (fallback for L-FILE-FRIENDLYNAME is L-GLOBAL-FRIENDLYNAME).
If a global key is expected, the system now checks whether a module-specific key has also been stored and uses it instead (translation for not-standard key L-FILE-DELETE is used instead of standard L-GLOBAL-DELETE).
Exception: The fallback ignores labels with a prefix (starting with e.g. L-M-
, or L-V-
) and all custom labels. Prefixes L-P and L-PG will be fallbacked, though.
Effect: Keys for standard fields that work with a standard translation like friendlyname
or created_by
mustn't be created for each module separately.
What to do: If you want to use a global translation for a module's standard field, just don't create a module-specific label key. If you want an exception from the global translation in a certain module, create a module-specific key and translate it in your module's properties file to override the global standard.
# Usage of Label Keys MODULE-SINGULAR and MODULE-PLURAL
We improved the wording of the delete action in the toolbox, the tooltip and the subsequent pop-up. For the pop-up, the translations of label keys MODULE-SINGULAR or MODULE-PLURAL are requested.
Effect: Depending on a single or multiple object selection, the delete pop-up refers to one or more objects of the respective module, e.g. "Yes, delete collections".
What to do: If you use custom modules, make sure to create and translate the singular und plural key in your module's .properties files, e.g. L-M-MY-CUSTOM-MODULE-SINGULAR and L-M-MY-CUSTOM-MODULE-PLURAL.
# Permission Value No Access
Deprecated
Permission value no access
is now deprecated and was removed from admin snap-ins Feature Permissions
(global and module) for both users and admins. Additionally, for admins, all permissions and presets are now editable. With new boolean "User is allowed to edit the value", a permission/preset can be set to user access true/false.
Possible impact: Presets with admin access false/no access will not be displayed in the GUI.
What to do: Check your custom permission XML files and update if necessary.
# Sort Permissions With Order
The order of feature permissions and presets in a module's permission pop-up can now be sorted using value order
. The lower the number, the higher the position in the pop-up. Permissions with the same value here will be sorted by their label key translation (more information).
# Global Header Bar Layout Extended
For responsiveness with smaller screen formats, new breakpoint-dependent styles and components were added to the global header layout id_header.4aplayout
: With a screen size less than 769 pixels, the visible header components become hidden and foldable. They can be toggled by new menu icons.
What to do: If you have a custom header bar layout, please check if the style breakpoints from the default layout will apply.
# Object Type Renderer Inheritance
Object type specific renderers can now inherit from each other. They can extend other renderers (from the same or any other folder) with <changes extends="{path}">
(details).
# Change Maintenance Mode Behavior
After deactivating maintenance mode, the system (4ALLPORTAL) now needs to be restarted. Additionally, maintenance mode starts automatically in case of critical dependency or upgrade script errors (more details)).
# Customizable CSS
It is now possible to include your own CSS rules in the 4ALLPORTAL (more details).
# OIS: Alpha Component for sRGB Color
In object image service configurations, we now support the alpha component for an sRGB color. The string value of the color parameter is used to represent octal and hexadecimal numbers to create an sRGB color with the specified combined RGBA value consisting of:
- the alpha component in bits 24-31
- the red component in bits 16-23
- the green component in bits 8-15
- the blue component in bits 0-7
If the alpha component is not present, alpha is defaulted to "transparency" parameter.
# Improved Database Pruning
In addition to the automatic database cleaning from version 3.10 the function will now clean all dependent entries of the deleted asset as well (e.g. its change history). There are no further configurations required. The default period that a deleted asset and its dependent entries remain in the database is 30 days.
# New Timeout Defaults
The default timeout for obtaining a connection from the connection pool is set to two seconds. If a request cannot obtain a connection within this time the request is aborted. Administrators can change this timeout by setting the
spring.datasource.hikari.connectionTimeout
property. The value is defined in milliseconds.
The default timeout for obtaining a connection for the health check is set to five seconds. If the health check function can not obtain a connection within this time the system is considered unhealthy.
The administrator can change this timeout by setting the portal.health.check.timeout
property. The value is defined in milliseconds.
# Overridable Restart Procedure
We changed the restart procedure to use spring, which enables 4Apps to override the restart procedure.
# Remove Parameter Persist Http Session
The parameter Persist Http Session
from admin snap-in General system configurations/System settings/Security
is removed and is always "true" now.
# API Documentation
The Swagger UI on /swagger-ui.html
now also contains the documentation text, as on https://api.developer.4allportal.com/.
# Solved Bugs
- Fix restore version with missing fields
- Fix race condition when updating the database, now this is also locked across the cluster
- Fix sessionGet now also works with Bearer Authentication and not only with valid session cookie
- Fix incorrect sorting of value option groups
- Fix add back button in the mass update view
- Set the creator for user-created request jobs
- Fix authentication providers not shown when role - group configuration contains null in group
- Fix allow port 0 in database configuration (needed for sqlserver with dynamic port)
- Fix using template engine for mail subject
- Fix remove
deleted
from fields value option - Do not show login page when the 4ALLPORTAL was not initialized
- Better error handling when calling shell tools
- Fix logout takes 3 seconds
- Fix checking for missed dependencies when an application needs to be installed
- Add support for UTF-8 BOM encoding for XML files
- Set ObjectRenderer for user requests to read-only when preset/feature only has read access for user
- Fix send mail doesn't work on M1 Mac
- Fix closing most popups on location change
- Fix long drag on tree items
- Fix [TemplateEngine] contains now allows to search in map values
- Fix GET /api/modules/{MODULE}/objects: dimensions are transferred correctly now
- Fix ignore hidden folders which starts with
.
when reading locale files - Fix if
ce_role_accs
permission for typeread/edit/assign/delete
wasdefault
, the associatedce_role_accs
condition was used with thece_role
permission - Fix creating change events when a derivate was created, updated or deleted
# How to Get These Improvements
- Upgrade 4App Core Engine to version 4.0
- No licensing required
# Patch releases
# Version 4.0.1
- Fix error in log when module not contains native_permissions.xml
- Fix stack overflow error when having two change-files changing the parent file for all and "default" object types
- Fix security vulnerabilities
- Fix asynchronously creation of a new version of an asset
- Skip autoincrement fields like CEIdentity and CEIdentityList when creating or updating a record
- Improved log entry when connecting to the database fails
# Version 4.0.2
- Fix security vulnerabilities