8.12
Server
This release contains breaking changes. Further details are listed at the end of this page, along with instructions for migrating from previous releases.
This release contains impactful changes. They are not breaking but typical stumbling blocks for older applications upgrading. Further details are listed at the end of this page, along with instructions to resolve.
Breaking changes
deploy-gradle-plugin: Update the docker gradle plugin to support custom Dockerfiles and remove non workingdebugModepropertygenesis-eventhandler: IfIGNORE_WARNINGSflag is set to true and a warning nack is returned as part of theonValidatestep, theonCommitstep should be executedgenesis-pal-datapipeline: Camel source should reset routes upon pipeline restartcore: GPAL scripts now use the same compilation and evaluation configcore: Make eventhandler + reqrep scripts receive sys defsgenesis-router: Default value forIGNORE_WARNINGSshould be false when using HTTP requests
Features
core:startProcessappends environment variableGENESIS_SYSDEF_JVM_OPTIONSto the process jvm optionsdistribution-gradle-plugin: Add support for copying "data" folder automatically to distribution packagegenesis-db: Add support for getting and setting sequence and autoincrement values for table columns when using H2 SQL layergenesis-db: Try to detect sql layer deadlocksgenesis-dbtest: Option to generate random SQL schema name for testsgenesis-environment: AddPurgersReader.purgeDerivedRangeFlowgenesis-environment: Return purged record inPurgersReader.purgeDerivedRecordgenesis-environment: IngenesisInstall, fail execution if host is matched against multiple environmentsgenesis-gradle: Support site-specific in product details plugingenesis-testsupport: Add additional data server support for data logoff messages, add table reset support between tests for GenesisSharedTestContext and extra validation checks for unsupported test annotations at function levelgenesis-testsupport: Implementclear(authMap)method to remove all entries fro an authMap in InMemoryTestAuthCache classgenesis-testsupport: Create GenesisSharedContextTest where the microservice survives the test to improve performance in some scenariosgenesis-mcp: Add support for nullable fields, enums and nested objects in MCP tool schemagenesis-mcp: Added a new MCP server process that dynamically creates LLM compatible tools from Genesis resourcesgenesis-metrics: Register default metrics if open telemetry agent is configuredgenesis-pal-consolidator: Support cold start by usingCONSOLIDATOR_COLDSTARTsys def valuegenesis-router: Improve handling oftriggerEventin custom webhandler scriptgenesis-transform: Added value formatting as first class operation within Transformer Engine
Fixes
deploy-gradle-plugin: Fix docker image build when web deployment doesn't existdistribution-gradle-plugin: Ensure only PBC projects copy the "data" directory to the distribution packagedistribution-gradle-plugin: Fix incorrect initialisation logicgenesis-clustersupport: Fall back to db if service discovery cache missing entrygenesis-clustersupport: Only initialise process metadata service where thePROCESS_MET_DATAtable exists in the dbgenesis-codegen: Fix bug in generatedbuildRequestfunctiongenesis-config: Ensure filesystem handling logic when reading classpath resources can recover gracefully from exceptions in some scenariosgenesis-config: Only use genesis-system-definition to determine environmentgenesis-db: Fixed assortment of race condition bugs leading to database cache inconsistencies and add defensive copying to cache operationsgenesis-db: Ensure "audited" db API runs audit operations in the same transaction and fix transactional db listenersgenesis-dictionary: Dao codegen is cached correctly when there are DateTime fields with default valuesgenesis-environment: EnsureGlobalClasspathAdditionssysdef item is handled correctly as part ofstartProcessclasspath generationgenesis-environment: Fix issue preventing all script.kts file evaluationsgenesis-testsupport: Ensure combination of super classes, nested classes and enclosing classes can set injectable properties correctlygenesis-testsupport: Ensure injected test properties are initialised before test startupgenesis-testsupport: Ensure super classes for nested inner classes are also scanned for injectable propertiesgenesis-logging: Add default log paths to the log4j2-default.xml file if L and RL env variables are not foundgenesis-pal: Improve error message when unable to find joined indexgenesis-pal-dataserver: Ensure an additional QUERY_UPDATE message with MORE_ROWS=false is sent to query subscriptions using thechunkLargeMessagesoption, if no more rows are available after a DATA_LOGON or MORE_ROWS requestgenesis-pal-dataserver: Fix numerous out of sync update processing issuesgenesis-pal-dataserver: Fury serializer can now handle payloads greater than 512 bytes correctlygenesis-pal-dataserver: Correct handling of out of sequence update processinggenesis-pal-dataserver: SettingMAX_VIEW = 0should allow views to grow without boundaries other thanInteger.MAX_VALUEgenesis-pal-requestserver: EnsureSOURCE_REFis always set when a server side timeout is triggered in a custom request replygenesis-pal-requestserver: Fix bug in handling of a_FROM=>_TOrangegenesis-testsupport: Do not register lifecycle manager JVM shutdown hook for testsgenesis-transform: Ensure column renames specification order does not mattergenesis-mcp: ChangegroupIdof MCP process to prevent it being compacted with core services- Downgrade to quartz 2.4.0 to remove regression bug with nearest weekday to Nth day of month
- Ensure no error is thrown if no systems are defined in system definition
- Ensure transformer configurations with multiple column formats are processed correctly
genesis-environment: RevertGenesisInjectorchanges forPurgeTablesand related scripts
Dependency changes
- Bump Open Telemetry from 1.31.0 to 1.49.0, and instrumentation and java agent from 1.31.0 to 2.15.0
- Bump com.opencsv:opencsv from 5.10 to 5.11
- Bump io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom from 2.15.0 to 2.16.0
- Bump io.opentelemetry:opentelemetry-bom from 1.49.0 to 1.50.0
- Bump micrometerVersion from 1.14.6 to 1.15.0
- Bump mockitoVersion from 5.17.0 to 5.18.0
- Bump oracleJdbcVersion from 23.7.0.25.01 to 23.8.0.25.04
- Bump org.apache.activemq:artemis-jakarta-client from 2.40.0 to 2.41.0
- Bump org.apache.fury:fury-core from 0.10.1 to 0.10.2
- Bump org.checkerframework:checker-qual from 3.49.2 to 3.49.3
- Bump org.openapitools:openapi-generator from 7.11.0 to 7.13.0
- Bump testcontainersVersion from 1.21.0 to 1.21.1
Patch releases
8.12.4
Fixes
distribution-gradle-plugin: CopyinstallHooksscripts to the correct application folder as part of distribution file creationgenesis-environment: InstallHooks functionality should detect existing hooks insite-specific/scripts/installHooksfoldergenesis-eventhandler: Change incorrect use of system definition itemUseNettyThreadsInEventHandlerin event handler implementation
8.12.3
Fixes
genesis-pal-datapipeline: All pipelines should have a defaultonUncaughtErrorhandler to avoid the process from crashing and instead sets the process state toWARNING
8.12.2
Features
genesis-pal-streamerclient: Add additional logging when moving to error stategenesis-transform: Added support to apply a timezone to all date time format operations
8.12.1
Features
genesis-criteria: Add missing Expr functions to criteria validation allowlistgenesis-criteria: ImplementExpr.dateTimeIsInRangefunctionality for time-based filtering andDATE_TIME_IS_IN_RANGEmethod call to support this feature in report generationgenesis-environment: Add PurgersReader.purgeAllDerivedRecordsFlow and PurgersReader.purgeAllDerivedRangesFlowgenesis-pal-dataserver: Improve data server duplicate key error message and logging around start up
Fixes
genesis-db: Ensure BulkJoinProcessor listeners close all channels as expected when timeout errors happengenesis-dbmon: Fix bug in DbMon handling of search command when using FoundationDB as the database enginegenesis-evaluator: Ensure responses to events triggered by evaluator rules do not cause errors when running in compact modegenesis-gradle: Account for product sys def when processing templated process file with Exec plugingenesis-pal-dataserver: Ensure insert updates are evaluated using dataserver where clausegenesis-process: Stacktrace is now shown again when any issues arise during process startup
Client
Breaking changes
- Removed and replaced multiple deprecated packages
Features
grid-pro: Allow arrow key navigation in text renderer during focusgrid-pro: Use agMultiColumnFilter for string and enum columns- Change default ds to rapid
foundation-entity-management: Smart form modal- Move dsc to rapid, remove unused packages
foundation-forms: Add ability to save filtersfoundation-login: Redirect to mfa-mail-sent after mfa user login attemptgrid-pro: Improvements for select renderergrid-pro: Emit moreRows event for grid pro genesis datasourcegrid-pro: Select renderer tooltips and export param types- Added timezone in scheduler
foundation-ui: Multiselect add multi-column supportfoundation-utils: Add new util to get the nearest parent DS provider
Fixes
- Upgrade tabulator-tables + grid-tabulator tweaks + grids-preview cleanup
grid-tabulator: Update type exportsfoundation-ui: Fix issue with value not being picked up in constrcutorgrid-pro: Double event interaction with boolean rendererfoundation-ui: Fix click handlers on date picker buttonsgrid-pro: Further improved event handling in boolean renderer- Select and enum renderers with left aligned labels
foundation-entity-management: Use base criteria with search bar criteriafoundation-entity-management: Fetch the lastest grid data when populating edit form- Include cookies in fetch requests
- Include cookies in fetch requests
foundation-zero: Bundle fonts in package to avoid CSPfoundation-entity-management: Handle base criteria set after connected callbackfoundation-ui: Multiselect add multi-column stories fixgrid-pro: Fix race condition when updating boolean renderer selected- Bring back foundation-inbox package
foundation-entity-management: Regression with edit entity with inline crud buttons
Breaking change guidance
FUI Package Removals and Replacements
The following packages have been removed or replaced. You must update your import paths and dependencies to maintain compatibility.
Replaced Packages
-
Reporting
-
@genesislcap/foundation-reporting→@genesislcap/pbc-reporting-ui -
Entity Management
-
@genesislcap/foundation-entity-management→@genesislcap/pbc-auth-ui -
Inbox
-
@genesislcap/foundation-inbox→@genesislcap/pbc-notify-ui -
Notification Dashboard
-
@genesislcap/foundation-notification-dashboard→@genesislcap/pbc-notify-ui
Removed Packages
The following deprecated packages have been removed with no direct replacement following deprecation for over a year:
@genesislcap/alpha-design-system@genesislcap/foundation-settings
Please remove usage of these packages and migrate any necessary functionality to supported platform alternatives.
Migration Instructions
- Search for usage of the following deprecated packages:
@genesislcap/foundation-reporting@genesislcap/foundation-entity-management@genesislcap/foundation-inbox@genesislcap/foundation-notification-dashboard@genesislcap/alpha-design-system@genesislcap/foundation-settings
- Update import paths:
- Use
@genesislcap/pbc-reporting-ui,@genesislcap/pbc-auth-ui, and@genesislcap/pbc-notify-uiwhere applicable. - Remove unsupported packages and their usage.
- Update your
package.jsondependencies and reinstall:
npm install
# or
yarn install
Single Consumer camelFileSource (Data Pipelines)
The camelFileSource can now only be called on by one pipeline at a time.
If you are currently using the same instance for multiple pipelines, this will result in an error where the pipeline and the process configured to run it are not able to start.
In the rare situations this is encountered when upgrading to 8.12+, this should be resolved by ensuring a new instance of camelFileSource is created for each pipeline.
Removing debugMode property from dockerConfig
This property wasn't working. If you have a dockerConfig configuration block in your server/<app_name>/build.docker.gradle file and it contains debugMode, it should be removed.
Impactful change guidance
IGNORE_WARNINGS changes
IGNORE_WARNINGS now behaves as it should, in that any warnings (sent as warningNack) will be ignored and the event handler will continue to execute the code in onCommit, where IGNORE_WARNINGS is set to true by the client sending it.
Additionally, when the HTTP API is being used to trigger an event, the default value where not specified was to set IGNORE_WARNINGS as true. This has now been updated to be false to ensure warnings (aka soft errors) are not ignored.
These changes are noted as an impactful change as the platform has operated differently for some time and although unlikely (given warningNack isn't used in many projects), this fix may cause change in an application's current behaviour.
GPAL script updates to auto-import sydefs and other standard and helpful
We have standardised the way all GPAL scripts auto-import items into the script such as tables, views, enums, sysdef items, and also DateTime now() imports.
In the rare case you see errors on upgrading to 8.12.0+ it could be due to clashing of newly imported properties, for example:
- You have a function called
now()already defined in your script which is also a function from Joda DateTime. - You have used a variable which clashes with a system definition item.
Where affected by this, simply rename your local scripts variables/functions not to clash with those now automatically imported.