Release Date: June 30, 2026
Release Channel: Current
Version: 26.06.1.0.17
Trinity Asset Version: 1.0.17
Breaking Changes
No breaking changes were documented for this release.
Support Requests Resolved
- NPFRBT-1439: Case Manager inbox and case-list requests that took more than 15 seconds on large datasets now use the Enquiry read model, server-side sorting, and caching. Complete the API migrations before using the new path.
New Features
Server-side inbox sorting
My Tasks, Team Tasks, Group Tasks, signal lists, and Admin re-attempt screens sort the full result set on the server. The first page now contains the first rows from the requested sort, not a reordered copy of the current page. Sorting remains stable across pages.
Enhancements
- Dashboard counts: Inbox grids and dashboards read from the same Enquiry projections. Signal counts include active signals only.
- Filter ranges: Date and number filters validate their lower and upper bounds before submission.
Bug Fixes
Inbox and tasks
- Cold-load cells: My, Team, and Group Task cells wait for application startup before resolving their values.
- Parent processes: Inbox rows use the parent process from the read model instead of the taskβs own process instance ID.
- Server-side sorting: Re-attempt requests and Enquiry-backed task lists use the configured server-side order.
Admin and user management
- Service-token user administration: Case Manager and Studio administrators can create or update users through service tokens. Audits attribute each change to the administrator rather than the service account.
UI
- Custom fonts: The UI loads custom font variables and keeps text visible through
font-display: swapwhile fonts load. - Case Manager navigation: Navigation and environment-defined case sort options now use their configured values.
Configuration
This release introduces new environment variables for inbox server-side sorting, migration backfill APIs, BPM DB trigger auto-install, and GTS task sync (outbox relay). Set them under the corresponding service envs block in your Helm values file.
New variables
| Helm values path | New variables |
|---|---|
services.adapters.alpha-jbpm-service.envs |
BPM_TRIGGER_RECONCILE_ENABLED, BPM_TRIGGER_RECONCILE_INTERVAL_MS, ALPHA_LINEAGE_MAX_DEPTH |
services.backends.alpha-case-service.envs |
BACKFILL_BATCH_SIZE, BACKFILL_BATCH_DELAY_MS |
services.cron.gts.envs |
GTS_OUTBOX_BATCH_SIZE, GTS_OUTBOX_MAX_PUBLISH_ATTEMPTS, ALPHA_LINEAGE_MAX_DEPTH (only if customized) |
alpha-jbpm-service
BPM DB trigger installation and BPM lineage backfill APIs.
| Variable | Default if not set | Purpose |
|---|---|---|
BPM_TRIGGER_RECONCILE_ENABLED |
Enabled (only false disables) |
Automatically installs/updates BPM DB triggers (taskevent β task_index_outbox, lineage materialization) at startup and on a poll interval. |
BPM_TRIGGER_RECONCILE_INTERVAL_MS |
60000 |
Poll interval (ms) for retrying trigger installation when jBPM tables or migration DDL are not yet available at startup. |
ALPHA_LINEAGE_MAX_DEPTH |
31 |
Max ancestor depth when materializing process_instance_lineage. Deeper process trees are clamped instead of recursing indefinitely. |
services:
adapters:
alpha-jbpm-service:
envs:
BPM_TRIGGER_RECONCILE_ENABLED: "true"
BPM_TRIGGER_RECONCILE_INTERVAL_MS: "60000"
ALPHA_LINEAGE_MAX_DEPTH: "31"
Prerequisite: migration-service DDL must create
task_index_outbox,task_index_outbox_errors, andprocess_instance_lineagein the BPM DB before triggers can install. Until then, alpha-jbpm-service logs warnings and retries on the poll interval.
alpha-case-service
Enquiry projection backfill and inbox server-side sorting.
New variables
| Variable | Default if not set | Purpose |
|---|---|---|
BACKFILL_BATCH_SIZE |
100 |
Default batch size for enquiry projection backfill when the API request body omits batchSize. |
BACKFILL_BATCH_DELAY_MS |
200 |
Default delay (ms) between backfill batches when the API request body omits batchDelayMs. |
services:
backends:
alpha-case-service:
envs:
BACKFILL_BATCH_SIZE: "100"
BACKFILL_BATCH_DELAY_MS: "200"
Existing variables used by server-side sorting
These names existed before 1.0.17 but are now used more broadly for inbox default/fallback sort. Review your values even if you are not adding new keys.
| Variable | Default if not set | Purpose |
|---|---|---|
CASE_FETCH_ALL_SORT_COLUMN |
No global sort (legacy inbox behavior) | Default/fallback sort column on enquiry ci_* when the UI does not send sortBy, or when column sort cannot be resolved. Allowed: created_at, updated_at. Invalid values fall back to created_at. |
CASE_FETCH_ALL_SORT_ORDER |
Not set | Sort direction: ASC or DESC. Set it with CASE_FETCH_ALL_SORT_COLUMN. Invalid values fall back to DESC. |
ENQUIRY_DEBUG_LOGS |
off | Set true to log constructed enquiry SQL and matched rows (sort troubleshooting only). |
services:
backends:
alpha-case-service:
envs:
CASE_FETCH_ALL_SORT_COLUMN: created_at
CASE_FETCH_ALL_SORT_ORDER: DESC
# ENQUIRY_DEBUG_LOGS: 'true'
gts
Polls task_index_outbox (when present) and pushes task updates to enquiry. When the outbox table is absent, GTS falls back to legacy task.createdon window sync.
New variables
| Variable | Default if not set | Purpose |
|---|---|---|
GTS_OUTBOX_BATCH_SIZE |
100 |
Max unpublished outbox rows processed per inner batch within one sync run. |
GTS_OUTBOX_MAX_PUBLISH_ATTEMPTS |
10 |
Skip outbox rows after this many failed publish attempts (avoids head-of-line blocking). |
Existing variables required for outbox sync
| Variable | Default if not set | Purpose |
|---|---|---|
ENABLE_SYNC |
cron not started | Must be true to start the task sync scheduler. |
SYNC_INTERVAL_MS |
10000 |
Poll cadence; use 5000 or lower for ~seconds-level task index freshness. |
SYNC_BATCH_DELAY_MS |
1000 |
Delay between outbox inner batches. |
services:
cron:
gts:
envs:
ENABLE_SYNC: "true"
SYNC_INTERVAL_MS: "5000"
SYNC_BATCH_DELAY_MS: "1000"
GTS_OUTBOX_BATCH_SIZE: "100"
GTS_OUTBOX_MAX_PUBLISH_ATTEMPTS: "10"
# ALPHA_LINEAGE_MAX_DEPTH: '31' # only if customized on alpha-jbpm-service
If you customize
ALPHA_LINEAGE_MAX_DEPTHonalpha-jbpm-service, set the same value ongts(both load@alpha-core/bpm-lineage-sqlat startup).
Migrations
Database migrations
DB schema migrations are automated for all Trinity Asset releases. Migration 1.0.17 creates the BPM task-freshness and process-lineage tables and their database triggers on fresh installs and upgrades.
Environments with data created before 1.0.17 must backfill the lineage and Enquiry projections through the API migrations.
API migrations
Run these resumable backfills only for data created before 1.0.17; new records are indexed on write. The migration backfill runbook covers prerequisites, verification, and rollback.
Run in order. Both are POST, authenticated with an IDS bearer token, and are looped until the response reports hasMore: false.
1. BPM Lineage Backfill. Run once per environment on alpha-jbpm-service, before the Enquiry backfill.
- Endpoint:
POST /bpmservice/migration/bpm-lineage-backfill/up - Purpose: Populates
process_instance_lineagewith subprocess parent and child relationships. - Authentication: IDS bearer token (
alpha-jbpm-servicealso expectsuser/passwordheaders, normally supplied fromJBPM_USER_NAME/JBPM_PASSWORD). - Companion endpoints:
/statusreports progress,/verifypasses whenok: true, and/downrolls back non-production data.
2. Enquiry Projection Backfill. Run for each project on alpha-case-service.
- Endpoint:
POST /caseservice/case/migration/enquiry-projection-backfill/up/project - Purpose: Populates the
ci_*/ti_*/si_*enquiry read-model tables that power server-side inbox sorting. - Authentication: IDS bearer token.
- Request body:
{ "projectId": "<project-uuid>", "scope": "ALL" }(scopes:ALL/CASES/TASKS/SIGNALS/TASKS_PARENT_PIID). - Companion endpoints:
/status/project(progress + completion gate),/down/project(non-prod rollback).
Docker Images
| Category | Service Name | Image Repository | Image Version |
|---|---|---|---|
| backends | neutrinos-cm-bpm | neutrinos.azurecr.io/alpha/neutrinos-cm-bpm |
1.0.0 |
| backends | alpha-case-service | neutrinos.azurecr.io/alpha/alpha-case-service |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-request-service | neutrinos.azurecr.io/alpha/alpha-request-service |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-delta-service | neutrinos.azurecr.io/alpha/alpha-delta-service |
26.06.1.0.17-ae99f6524f49 |
| backends | admin | neutrinos.azurecr.io/alpha/admin |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-auth-service | neutrinos.azurecr.io/alpha/alpha-auth-service |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-config-service | neutrinos.azurecr.io/alpha/alpha-config-service |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-module-service | neutrinos.azurecr.io/alpha/alpha-module-service |
26.06.1.0.17-ae99f6524f49 |
| backends | alpha-dashboard-service | neutrinos.azurecr.io/alpha/alpha-dashboard-service |
26.06.1.0.17-ae99f6524f49 |
| backends | marketplace-headless | neutrinos.azurecr.io/alpha/marketplace-headless |
26.06.0.0.27-0922e2b61ea0-security |
| backends | alpha-archival | neutrinos.azurecr.io/alpha/alpha-archival |
26.06.1.0.17-ae99f6524f49 |
| frontends | alpha-admin-ui | neutrinos.azurecr.io/alpha/alpha-admin-ui |
26.06.1.0.17-ae99f6524f49 |
| frontends | alpha-case-manager-ui | neutrinos.azurecr.io/alpha/alpha-case-manager-ui |
26.06.1.0.17-ae99f6524f49 |
| frontends | alpha-workflow-studio | neutrinos.azurecr.io/alpha/alpha-workflow-studio |
26.06.1.0.17-ae99f6524f49 |
| frontends | alpha-delta-ui | neutrinos.azurecr.io/alpha/alpha-delta-ui |
26.06.1.0.17-ae99f6524f49 |
| adapters | alpha-jbpm-service | neutrinos.azurecr.io/alpha/alpha-jbpm-service |
26.06.1.0.17-ae99f6524f49 |
| cron | alpha-task-distributor | neutrinos.azurecr.io/alpha/alpha-task-distributor |
26.06.1.0.17-ae99f6524f49 |
| cron | gts | neutrinos.azurecr.io/alpha/gts |
26.06.1.0.17-ae99f6524f49 |
Support & Resources
- Documentation: Alpha Platform Documentation
- Bug Reports: Jira Service Desk
- Community: Neutrinos Community Forum