8.1 Migration Guide

In this document, we will see the major steps to migrate from 8.x to 8.1.

Please check the changelog for a detailed list of fixes, changes, and improvements introduced in 8.1.

Audit tracking

Now, the audit tracking system processes tracking messages asynchronously after the user transaction. This allows improving application responsiveness when creating many tracking messages. So tracking messages are not created immediately when a record is created/updated. Instead, they appear in the stream after a brief delay till they are processed.

AuditLog entity for persistent audit event storage with full state capture has been introduced. It supports retry logic with max retries and error tracking. Run the following SQL script to create the table :

CREATE SEQUENCE audit_log_seq START WITH 1 INCREMENT BY 100;
CREATE TABLE audit_log
(
    id             bigint       not null    primary key,
    archived       boolean,
    version        integer,
    created_on     timestamp(6),
    updated_on     timestamp(6),
    current_state  text,
    error_message  text,
    event_type     varchar(255) not null,
    previous_state text,
    processed      boolean,
    related_id     bigint       not null,
    related_model  varchar(255) not null,
    retry_count    integer,
    tx_id          varchar(255) not null,
    created_by     bigint   constraint fk_ru17orlmi6rjhpojmeqrxbiok references auth_user,
    updated_by     bigint   constraint fk_tbhw331n3l89dk629vmpxg4de references auth_user,
    user_id        bigint   constraint fk_pyjqqm7hglp6pnwp3h8whian8 references auth_user
);

CREATE INDEX audit_log_idx_processing
    ON audit_log (processed, tx_id, related_model, related_id, event_type, created_on, retry_count);

For security and performance reasons, certain field types are automatically excluded from audit tracking:

  • Security Sensitive: Passwords and encrypted fields are never tracked.

  • Large Data: Binary fields (files, images) are excluded.

  • Collections: One-to-Many and Many-to-Many relationships are not supported.

  • Transient: Fields that are not persisted to the database.

Adaptive back-pressure mechanism can be controlled with the following properties : application.audit.logs.flush-threshold, application.audit.processor.batch-delay, application.audit.processor.activity-window, application.audit.processor.busy-backoff-interval, application.audit.processor.busy-backoff-max-retries and application.audit.processor.batch-size.

A new field receivedOn has been added on MailMessage. Run the following SQL script to adjust mail_message table change :

ALTER TABLE mail_message ADD COLUMN received_on timestamp(6);
CREATE INDEX mail_message_received_on_idx ON mail_message (received_on);
UPDATE mail_message set received_on = created_on;

More information here.

Dependencies upgrade

Dependencies have been upgraded to major versions. Check the changelog for a detailed list.