Skip to content

Jury Release Notes: JuryFlex v5.3.7 - v6.0.8

This document contains release notes for JuryFlex versions 5.3.7 through v6.0.8.


Version 6.0.8

Release Date: July 27, 2026

Improvements

  • Appearance date filtering — additional null-safety checks added around appearanceDatePicker in PoolMasterGrid, and imports updated to use DateRange from EnhancedDateRangePicker; the fix was reapplied after a merge to ensure it landed on update-spring-vaadin (67fabc1a, ec2e926a)
  • Summons Ready grid — adjusted column and layout widths in SrMessageGrid for improved UI consistency (ca982047)

Version 6.0.7

Release Date: July 21, 2026

Bug Fixes

  • JURYSVC-64 / JURYCLOUD-87 — Juror Search, Juror Details: Cannot Undo Permanent Excusal (767a8307)

    • Removed stale Hibernate caching annotations and juror-related caches from JurorMasterService that were preventing permanent-excusal reversal from being reflected
    • Optimized cache configuration and added logging/robustness improvements to JurorMasterDetail and JurorMasterDetailView
  • JURYSVC-80 / JURYCLOUD-85 — Columbia JuryFlex Conversion Issue: Pool Master ID vs. Pool Number Mismatch (4a7063af)

    • Replaced DateTimePicker with EnhancedDateRangePicker for the appearance-date filter in PoolMasterGrid, with LumoUtility-based CSS overrides for alignment
    • Updated filtering logic to support proper date-range selection
  • JURYCLOUD-82 — Unable to Recycle Jurors (d7d3c21a)

    • Enhanced juror availability check logging in PoolGroupCheckinView
    • Added @JsonIgnore to panel and pool master mappings in SysTrialCode and SysJudgeCode to prevent recycling failures caused by serialization issues
  • JURYSVC-94 / JURYCLOUD-80 — Trial Panel Numbers Shown in App Do Not Match On All Screens (d308209f)

    • PoolGroupMembersCheckedInGrid now displays the panel number instead of the internal panel ID
    • PanelDetailView panel references are now clickable links to the corresponding PanelDetail view

Improvements

  • JURYSVC-92 / JURYCLOUD-81 — Spring UI: Dev 6.0.5 vs. Test 5.6.7 (3193b740)

    • Standardized padding and spacing across the UI using LumoUtility
    • Refactored layout and component styles in JurorsSummoned, JurorNotifications, JurorRequests, and VoucherMainView for consistency
    • Introduced reusable grid constants for styling
  • JasperReports loader fallback refactor (f3b1b3eb)

    • Extracted installJacksonReportLoaderFallback for clearer fallback handling in nested JAR environments
    • Introduced JacksonReportLoaderFallbackRegistry for modular, consistent extension discovery
    • Added a loadJasperDesign method for direct JRXML loading via JacksonReportLoader, with clearer error diagnostics
  • Vaadin push tenant context recovery (ae8cd1c9)

    • Added session-based tenant ID resolution (resolveTenantId) with a fallback path in ConfigureUIServiceInitListener
    • TenantContext can now recover the tenant from the Vaadin session when push RPCs bypass the normal request path
  • JURYSVC-96 / JURYCLOUD-78 — "Juror Name Change" activity for new tenants (80ee6519)

    • Corrected the new-tenant Liquibase changelog so the JUROR_NAME_CHANGE activity code is seeded for newly provisioned tenants, not just existing ones
  • Documentation — added RELEASE_NOTES_JIRA.md and RELEASE_NOTES_JIRA.html as a support-facing, ticket-indexed companion to this document (fa341ec6, 972b55d1)


Version 6.0.6

Release Date: July 9, 2026

Bug Fixes

  • JURYSVC-99 / JURYCLOUD-79 — Unable to undo Call Offs in JuryFlex (ddf86999)
    • Adjusted PoolMemberExtendedService validation for exempt code comparison so a call-off can be undone correctly

Improvements

  • JURYCLOUD-78 / JURYSVC-96 — Juror Name Change activity (c758149e)

    • Added the "Juror Name Change" activity to sys_activity_code for all non-default tenants via Liquibase changeset 202603080000001_add_name_change_sys_activity.xml
    • Increased retry max attempts to 75 and decreased juror file processor parallelism to 1 in production config
  • Security scan documentation (f0071b3b)

    • Documented known Vaadin Flow scanner false positives in CLAUDE.md
    • Added a form-action directive to the Content Security Policy
  • Security headers (517ccb93)

    • Integrated JHipsterProperties for dynamic CSP configuration
    • Added Strict-Transport-Security, Referrer-Policy, and X-Content-Type-Options headers in VaadinSecurityConfiguration
    • Updated the frame-ancestors CSP directive
  • .gitignore — excluded the security-scans/ directory from version control (60b33580)


Version 6.0.5

Release Date: June 15, 2026

Bug Fixes

  • JasperReports in nested JAR environments (fcad846c)
    • Installed JacksonReportLoader so report compilation works correctly when the application is packaged as a nested (Spring Boot fat) JAR
    • Added a default password placeholder in the production config template

Version 6.0.4

Release Date: June 15, 2026

Changes

  • Removed a deprecated HTTP cache configuration property from application-prod.yml (ac714350)

Version 6.0.3

Release Date: June 15, 2026

Deployment & Configuration

  • Unified prod/cloud configuration (53cf6e67)

    • Consolidated application-prod.yml and application-cloud.yml, externalizing all remaining environment variables
    • Hardened security defaults and added deployment templates: northflank-env.template and juryflex-service.xml (Windows Service definition)
  • Docker support (9c30916c, 3a853b43)

    • Added application-docker.yml for streamlined Docker deployments behind a reverse proxy
    • Updated Docker Compose logging profile and .env.example for the new docker profile
    • Removed Hibernate dialect and UUID JDBC type overrides that were unnecessary for the Docker profile
  • Build workflow (e90ebd05, 80c395c1, e5f578c3)

    • Enabled Gradle caching in the multi-arch build workflow and removed a redundant clean task from the Buildpacks image build
    • CORS filter now supports allowedOriginPatterns alongside allowedOrigins
    • Externalized server port configuration and removed redundant conditional checks from the workflow

Version 6.0.2

Release Date: June 12, 2026

Features

  • JURYCLOUD-75 — SrApplicationProperties admin UI (a8dace82)
    • New SrApplicationProperties entity with a dedicated sequence, seeded with default data and tenant-specific initialization via Liquibase
    • Read/write service and extended service implementation
    • New admin view (sr-application-properties-admin) under the "Summons Ready" navigation section

Improvements

  • JURYCLOUD-76 — Indexing (8942e5d4)
    • Added indexes for the juror_history and pool_member tables via Liquibase changeset 202606110000002_added_indexes_for_sr.xml

Security

  • JURYCLOUD-77 — Security scan findings (a722844f)
    • Enabled CORS handling on the Vaadin security filter chain and documented why /api/** and /VAADIN/push are exempted from CSRF protection
    • Hardened application.yml, application-prod.yml, and application-cloud.yml security settings
    • Added the v6.0.0 Burp Suite scan report and markdown summary under security-scans/JuryFlex_v6/ for audit traceability

Version 6.0.1

Release Date: June 10, 2026

Changes

  • Added Content-Disposition headers to StreamResource instances in TrialPanelReportsView, DownloadStatewideFileHelper, and SrMessageGrid for consistent file-download behavior across browsers (002f7507)

Version 6.0.0

Release Date: June 2026

Major Infrastructure Upgrades

This release marks a significant platform upgrade across all core framework dependencies. The major version bump reflects breaking changes at the framework level that require coordinated migration steps (see Configuration Changes and JasperReports sections below).

Component Previous Current
Spring Boot 3.5.x 4.0.6
Vaadin 24.x 25.1.5
Hibernate 6.x 7.2.12.Final
Spring Cloud 2025.1.1
Liquibase Schema Version 3.9 4.6

Additional framework-level changes:

  • VaadinTaskExecutor — new bean introduced in AsyncConfiguration for Vaadin-managed async tasks (f4e2f87c)
  • Lit Templates removed — all Lit/TypeScript frontend component templates converted to pure Java Vaadin Flow views (9628f6fa)
  • Lumo theme — no longer loaded automatically; replaced with explicit CSS imports via vaadin-theme (b6b84e4a)
  • JHipster BOM removed — replaced with standalone utility classes: ApplicationConstants, DefaultProfileUtil, ExceptionHandlingAsyncTaskExecutor, HeaderUtil, JHipsterProperties, LoggingUtils, PaginationUtil, RandomUtil, ResponseUtil, SpringLiquibaseUtil (520ed84a)

JasperReports 7 Migration

Action required for all environments. All 30 report templates have been migrated to JasperReports 7 format. Ensure the extension modules listed below are on the classpath before building.

Template migration (ba49236a): Every .jrxml file in src/main/resources/jasper/ updated to the JR7 XML schema. This affects all 30 templates: summons letters, payroll reports, seating charts, quarterly performance measures, panel records, and more.

Barcode element syntax change (9617b939): The barcode component namespace changed in JR7. Any custom templates maintained outside this repository must be updated:

<!-- Before (JR6 / short form — no longer valid) -->
<jr:Code39 .../>

<!-- After (JR7 — fully qualified barcode4j namespace required) -->
<barcode4j:Code39 .../>

New Gradle extension modules (b9aa615c, 6bf75840) — required for barcode rendering:

implementation 'net.sf.jasperreports:jasperreports-barcode4j:...'   // barcode4j integration
implementation 'net.sf.jasperreports:jasperreports-barbecue:...'    // additional barcode/layout support

Template cleanup (9cf1dad2): removed unused static text elements from several templates to reduce rendering overhead.

Compiled .jasper files are automatically deleted before compileJava by the deleteJasperFiles Gradle task. Never commit .jasper files.


Database

  • PostgreSQL support (e12710b2) — PostgreSQL is now a supported cloud database.
  • Juror file bulk loading via PostgreSQL COPY (e6e0ff78) — native bulk insert for juror_master_stage eliminates entity lifecycle overhead during large DHSMV file loads.

Features

  • JURYCLOUD-70 — Notification System & API Key Authentication (827fefb1, 12a1bfcc, 46c5992c, 10a3843d)

    • SysApiKey entity and admin view for managing API keys per tenant
    • API key authentication resolves to real UserDetails authorities from DomainUserDetailsService
    • Real-time Summons Ready notification bell in the app bar via Vaadin Push
    • SrMessageGrid filter panel; "Include Replied Requests" renamed to "Show Processed Requests"
  • JURYCLOUD-71 — Deny Excusal/Reschedule (a6b473ba)

    • Administrators can now deny a juror's request for excusal or reschedule from the SR message grid
    • Denial reason is stored and surfaced in the reply letter
  • sendSummoned Bulk Messaging (66bb7844)

    • SrMessageService.sendSummoned() sends notifications to all jurors on Summons Ready for a pool
    • Pool creation now automatically triggers summons notifications
    • New summoned.html email template and i18n messages added
  • JurorFileBatchCompleteEvent (3368f2ec)

    • Fires after each DHSMV load completes; triggers automatic non-in-county zip cleanup
  • Juror Notification UI Improvements (74276b16)

    • JurorNotifications: dynamic send-button state and field-level change listeners
    • NotificationBell: tenant context correctly restored on dismissal
    • JurorRequests: fallback to hostname-based tenant resolution when session context is unavailable

Security

  • OAuth2 removed — the Azure AD / OAuth2 client configuration block is removed from application.yml. (050c8545)
  • VaadinSecurityConfiguration refactored — migrated from deprecated WebSecurity configurers to the VaadinSecurityConfigurer API (e646fa4f, 050c8545)
  • API key strict validationApiKeyAuthenticationFilter loads real authorities from DomainUserDetailsService and enforces stricter key-owner validation (46c5992c)
  • Circular serialization fixes@JsonIgnore added to jurorMasters in SysCountyCode and relationships in PaymentMember to prevent serialization stack overflows (88f1ec16, 6d27d234)

UI & Quality Improvements

  • Layout refactoring — pool, panel, and payment views updated with addSeparator() in submenus and consistent flex-based height distribution (c90b7c5a, 18f9e536, a1cf1bb3)
  • Home Page — query performance optimized; layout configuration cleaned up (f92e4e91)
  • SysApplicationPropertiesFormView — missing seal/signature images replaced with placeholder icons; error handling added for save operations (3dcf9c18, 1344723f)
  • Payment card — cleared automatically when employer-paid status changes (639a369f)
  • CheckInJurorsDialog — focus handling improved (917a6cce)
  • Panel Attendance view — refactored and caching corrected (d3554cd3)
  • Pool detail view — responsiveness improvements (cdfe4ae4)
  • Payment creation — optimized to reduce redundant service calls (1a3c00fc)
  • SysStatusType removed — entity, repository, service, and all references deleted (f194324c)
  • RandomMaster — dependencies on PanelMaster and PoolMaster removed to eliminate circular load ordering (6eef55a1)
  • Optional.get() eliminated — replaced throughout with Optional.orElseThrow() for safer null handling (43d161ec)
  • Data Generation Utility__pycache__/ added to .gitignore for generate_juror_file_stage.py (f064395b)

Configuration Changes

Action required for production deployments. Several properties changed package names or were removed as part of the Spring Boot 4 migration. Review each table below and update application-prod.yml accordingly.

src/main/resources/config/application.yml

Property Before After Notes
spring.jpa.properties.hibernate.batch_versioned_data (absent) true Enables batch updates for versioned entities
spring.jpa.hibernate.naming.implicit-strategy org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy org.springframework.boot.hibernate.SpringImplicitNamingStrategy Package moved in Spring Boot 4
spring.task.scheduling.thread-name-prefix juryflex-scheduling- juryflex-sched- Shortened for log readability
spring.servlet.multipart.max-file-size 65MB 250MB Supports larger juror file uploads
spring.servlet.multipart.max-request-size 65MB 250MB Matches above
jhipster.mail.from jgulisano@gmail.com (hardcoded) ${MAIL_FROM:jgulisano@gmail.com} Now environment-variable driven
spring.security.oauth2.* Azure AD OIDC client block Removed entirely OAuth2 authentication dropped
jhipster.security.oauth2.audience present Removed entirely No longer needed

src/main/resources/config/application-dev.yml

Property Before After Notes
logging.level.ROOT INFO WARN Reduce framework noise in dev logs
logging.level.com.corrus.juryflex INFO DEBUG Full application debug output in dev
spring.datasource.url jdbc:postgresql://rocky-db.corrus.local:5432/devjuryflex jdbc:sqlserver://rocky-db.corrus.local:1433;database=devjuryflex;encrypt=false Switched back to SQL Server for local dev
spring.datasource.username postgres corrus Matches SQL Server credential
server.servlet.session.cookie.* (absent) Added as commented-out block Template for future cookie tuning (same-site, secure, domain)
jobs.deceased-process.cron 0 0/15 * * * * 0 0/59 * * * * Runs less frequently in dev
jobs.juror-file-process.enabled true false Disabled by default in dev
jobs.juror-file-process.cron 0 0/2 * * * * 0 0/59 * * * * Slowed for dev when manually enabled

src/test/resources/config/application.yml

No changes since v5.6.7. Settings remain stable.


Version 5.6.7

Release Date: June 4, 2026

Bug Fixes

  • SrMessageService: Replace orElseThrow() with orElseGet(SysExemptCode::new) on SysExemptCode lookup to prevent NPE when an exempt code does not exist (55054a7)

  • SrMessageGrid: Remove invalid in-memory comparator on the "Excusal Reason" column that caused sort failures when exempt codes were null or empty (55054a7)


Version 5.6.6

Release Date: June 4, 2026

Improvements

  • PoolMemberConversionService – Preload & Deduplication Refactor (55dafda4)
    • Moved excusal data loading to a single upfront query (loadExcusalsForPool()) instead of one database query per juror, significantly reducing database round-trips during conversion
    • Added ROW_NUMBER() OVER (PARTITION BY a.juror_id ORDER BY a.juror_pool_id) to handle duplicate jurors in the same pool (addresses the DeSoto County scenario), ensuring only the first occurrence is processed
    • Moved SysActivityCode lookups into processExcusal() for better encapsulation and reduced unnecessary service calls
    • Replaced raw boolean comparisons with Boolean.TRUE.equals() for null-safe evaluation
    • Reload JurorMaster from the database before updating reschedule dates to prevent stale-data overwrites when a juror is already rescheduled in an earlier pool

Version 5.6.5

Release Date: June 3, 2026

Bug Fixes

  • PoolMemberConversionService – Regression Fix (7733fd63)
    • Fixed operator-precedence bug in the excusal-denied log message where a null check on reason_description was never evaluated due to string concatenation precedence; pre-evaluate the value before embedding it in the message
    • Improved error logging to include jurorId and sourcePool context when excusal processing fails, making failures easier to diagnose

Improvements

  • PoolMemberConversionService: Move SysActivityCode lookups into processExcusal() (from the outer pool loop) to reduce unnecessary service calls (d13f48f0)

Version 5.6.4

Release Date: May 22, 2026

Improvements

  • JURYCLOUD-74: Update pool master conversion query ordering and reduce dev logging verbosity (e6f585b)
    • Updated query in PoolMasterConversionService to order results by reporting_dte_tme ASC, ensuring pools are converted in chronological reporting order

Version 5.6.3

Release Date: May 4, 2026

Improvements

  • JURYCLOUD-72: Optimize database queries and caching for juror and pool member conversions (3f9c02e)
    • Introduced pre-loading of juror and pool member data into in-memory maps to reduce per-record database queries during conversion
    • Added caching for frequently accessed entities in SourceConvertService, PoolMemberConversionService, PanelMemberConversionService, and CivitekSourceConversionService
    • Updated JurorMasterExtendedService with new utility methods for bulk data retrieval and mapping

Version 5.6.2

Release Date: April 22, 2026

Changes

  • JURYCLOUD-68: Show excusal reason in SR message grid (b8d00cd)

    • Added excusal reason column to the SR message grid in SrMessageGrid
    • Updated SrMessageService and SrMessageDTOMapper to populate and map the excusal reason field
    • Adds Liquibase migration 202604150000001_sr_excuse_code.xml
  • PaymentMember: Extend @JsonIgnoreProperties on PaymentMember entity to prevent serialization issues (c3c4a70)


Version 5.6.1

Release Date: April 12, 2026

Major Features

  • JURYCLOUD-61: DHSMV Load Optimization – CRC32-based change detection and batch processing performance improvements

    • Introduces JurorHashUtil to compute CRC32 hashes for juror records; stores juror_hash on both JurorMaster and JurorMasterStage entities
    • Implements hash-based filtering in JurorFileUpdateExtendedService to skip unchanged records during batch updates
    • Adds lightweight ID-only keyset pagination (findTopNIdsAfterId) to advance the batch cursor without loading full entities
    • Adds hash-filtered fetch (findChangedInIdRange) to retrieve only new, changed, or inactive jurors per batch window
    • Introduces deferred batch mode in JurorHistoryExtendedService to buffer history writes and flush at chunk boundaries
    • Implements JurorMasterStageBatchInserter for bulk JDBC inserts into the stage table, eliminating entity lifecycle overhead
    • Pre-fetches juror records to improve DL number change handling and retries deceased processing logic (ae3c4c5)
    • Re-enables juror file stage deletion after hash testing completion (8fc2471)
  • JURYCLOUD-59: Juror Name Change Tracking and Multi-Tenant Admin Views

    • Adds JUROR_NAME_CHANGE (60L) activity constant for auditing juror name changes
    • Updates juror update process to detect name changes, prioritize update actions, and log related history entries
    • Adds "tenant-zero" admin views to monitor juror update history across all tenants
    • Switches data normalization to use nulls for empty fields and refactors code for readability (3b841d0, 1791a119)
  • JURYCLOUD-60: Fix appearance date not passed into ReportRequest for Call-Off Letter (2ed4564)

    • Bumps version from 5.5.10 → 5.5.11

Improvements

  • GL Payment Exports: Migrates GL export mappings from inline JSON to a dedicated database table (a21d3f6)

    • Removes the inline JSON editor from SysApplicationPropertiesFormView
    • Adds Liquibase migration 202603310000001_default_export_donation_mapping.xml
    • Adds row numbering and juror address details to GL export output
    • Fixes donation GL account assignment and vendor mapping in PaymentMemberService
  • Juror Check-In: Renames check-in confirmation properties and introduces an optional second confirmation dialog (0d4b777)

  • Logging – Grafana/Loki Monitoring: Adds Docker Compose stack for log monitoring with Grafana and Loki (aca38bb)

    • Includes Promtail, Loki, and Grafana provisioning configs
    • Adds multi-tenant SQL performance and batch processing dashboards
    • Includes setup scripts and architecture documentation under docker/
  • Bug Fix: Fix juror first name mapping in JurorMasterExtendedService to use VM-provided value instead of incorrect field (f743d80)

Configuration Changes

Note: The following changes apply to application.yml and application-dev.yml. Production environments (application-prod.yml) are unaffected unless otherwise noted.

application.yml

  • Scheduling thread name prefix shortened: juryflex-scheduling-juryflex-sched- (ce3860e) yaml spring: task: scheduling: thread-name-prefix: juryflex-sched- # was: juryflex-scheduling-
  • Tenant context added to MDC: TenantInterceptor, TenantContext, and TenantAwareTaskDecorator now set/clear a tenant MDC key so the tenant identifier is included in all log output for multi-tenancy traceability (ce3860e)

application-dev.yml

  • Deceased processor retry settings added (ce3860e) yaml deceased: retry: max-attempts: 50 retry-delay: 200 retry-multiplier: 2.0 retry-max-delay: 45000

Version 5.5.10

Release Date: March 4, 2026

Changes

  • Tenant Creation: Add default location to new tenant provisioning
    • Adds a default "Jury Assembly Room" record to the system location codes template used for new tenant provisioning (8db2b2b)
  • Bump version to 5.5.10

Version 5.5.9

Release Date: February 25, 2026

Major Features

  • JURYCLOUD-56: Implements the ability to void one or more panel members from a panel (9ed0131)
    • Introduces priorLastSummonsDt, priorLastServeDt, and priorReschedDt fields to PoolMember to store original juror master dates
    • These fields are set upon pool member creation and during check-in to facilitate state restoration
    • Enhances the undoCheckIn process to accurately restore juror master service dates using the newly introduced prior dates
    • Integrates a dedicated confirmation dialog in the UI to guide users through the voiding process
    • Ensures comprehensive cleanup of related entities, including:
      • Nullifying panel member references in juror history
      • Deleting associated panel member days
      • Updating pool member status
      • Decrementing panel juror counts
    • Adds a new activity constant (JUROR_VOIDED_FROM_PANEL) for auditing this operation
    • Refines the juror history grid to prevent null pointer exceptions when a panel member reference is no longer present
    • Introduces a saveWithoutChecks method in PoolMemberExtendedService for specific transactional requirements

Bug Fixes

  • JURYCLOUD-57: Unable to undo panel removal (25e662a)
    • Fixed issue in PanelMemberExtendedService

Version 5.5.8

Release Date: January 24, 2026

Changes

  • JURYCLOUD-55: Prevent duplicate pool members for DeSoto County in the conversion
  • Bump version to 5.5.8
  • Build v5.5.8

Version 5.5.7

Release Date: January 20, 2026

Changes

  • JURYCLOUD-54: DeSoto County Summons: QR Code
  • Add QR Code support via Barcode4J and ZXing libraries, and bump version to 5.5.7
  • Build v5.5.7

Version 5.5.6

Release Date: January 11, 2026

Changes

  • JURYCLOUD-53: Fixed juror's suffix not being converted in automated load (fe23d3c, 7395b27)
  • Build v5.5.6 (260f1e8)

Version 5.5.5

Release Date: January 6, 2026

Changes

  • JURYCLOUD-53: Fixed juror's suffix not being converted in automated load (7395b27)

Version 5.5.4

Release Date: January 2, 2026

Changes

  • JURYCLOUD-52: Added bvsId field to SysCountyCode, updated bindings and references, and introduced Liquibase migration (f8e90d2)

Version 5.5.3

Release Date: January 2, 2026

Changes

  • JURYCLOUD-51: Fixed DMV Load duplicate history entries (834be01)
  • JURYCLOUD-34: Fixed tenant leak and added payment breakdown (304c0c3)

Version 5.5.2

Release Date: December 22, 2025

Changes

  • JURYCLOUD-50: Update tenant reports on application startup
    • Refactored: Renamed is_system_default to system_default throughout project and updated related references (0e53d50)

Version 5.5.1

Release Date: December 22, 2025

Changes

  • JURYCLOUD-50: Update tenant reports on application startup (4680bb0)

Version 5.5.0

Release Date: December 19, 2025

Major Changes

  • JURYCLOUD-40: Jury Quarterly Report – Quarterly Update

    • Refactored PerformanceMeasuresReport and PerformanceMeasuresMetricRow to QuarterlyPerformanceReport and QuarterlyPerformanceMetricRow
    • Enhanced data model with additional fields for detailed reporting
    • Adjusted Jasper report template for updated metrics
    • Incremented project version to 5.5.0 (5799b3f)
  • JURYCLOUD-41: Article V Performance Measures Report (45eaf1f)

  • JURYCLOUD-43: Adjusted text field width and alignment to prevent DL number truncation in Venire Facias template (eaea73e)

  • JURYCLOUD-46: Pool ID Display Inconsistency

    • Print Juror Summons Refactor: Renamed id to poolNumber in Juror Summons View and updated related bindings and log messages (de0995b)
  • JURYSVC-33: JuryFlex Statewide Grand Jury Export

    • Enhanced EntityGraph in PoolMemberExtendedRepository to include jurorMaster.sysCountyCode
    • Updated StatewideGrandJuryDTOMapper with corrected county and ZIP code assignment logic
    • Renamed execDownload to executeStatewideFileDownload for clarity in DownloadStatewideFileHelper
    • Cleaned up unused imports and redundant logic in PoolReportsFlowView (de9ee98)

Improvements

  • Updated sys_report_artifact insert query to set is_system_default to 1 for new tenant migrations (f602aad)
  • WIP - Concurrent Load (8839a6a)

Version 5.4.3

Release Date: December 2, 2025

Changes

  • Build v5.4.3 (36b8636)

Version 5.4.2

Release Date: December 2, 2025

Changes

  • Removed db/schema name from query (2ed6a03)

Version 5.4.1

Release Date: December 2, 2025

Changes

  • Fixed GitHub Action (621fa0f)

Version 5.4.0

Release Date: November 2025

Required Configuration Changes

Updates are required for two configuration files. These modifications have already been applied to the Development and Test environment.

1. File: application-prod.yml

Action: Add the following properties after the section labeled:

# ===================================================================
# Application specific properties
# Add your own application properties here, see the ApplicationProperties class
# to have type-safe configuration, like in the JHipsterProperties above
#
# More documentation is available at:
# https://www.jhipster.tech/common-application-properties/
# ===================================================================

Action: Add the following section:

# The following properties are used by the DeceasedProcess to determine how often to run.
jobs:
  deceased-process:
    enabled: false
    cron: 0 45 * * * *
    zone: UTC
  juror-file-process:
    enabled: false
    cron: 0 0 * * * *
    zone: UTC

#The following properties are used by the DeceasedProcessor to determine how many tenants to process at a time.
deceased:
  processor:
    parallelism: 1
    queueCapacity: 200
    lock-at-most-for: PT10H
    lock-at-least-for: PT10S

#The following properties are used by the JurorFileProcessor to determine how many tenants to process at a time.
juror-file:
  processor:
    parallelism: 3
    queueCapacity: 200
    lock-at-most-for: PT10H
    lock-at-least-for: PT10S
    update-batch-size: 250 #match with hibernate.jdbc.fetch_size
  retry:
    max-attempts: 50
    retry-delay: 200
    retry-multiplier: 2.0
    retry-max-delay: 45000

2. File: application.yml

Action: Modify the existing properties after the section labeled:

# ===================================================================
# Application specific properties
# Add your own application properties here, see the ApplicationProperties class
# to have type-safe configuration, like in the JHipsterProperties above
#
# More documentation is available at:
# https://www.jhipster.tech/common-application-properties/
# ===================================================================

# application:
juryflex:
  show-test-banner: true
  brand-expression-logo: juryflex_logo_full_color_rgb_247px@72ppi.png
  brand-expression-logo-min: brand-expression-logo-300px.png
  brand-expression-title: JuryFlex
  brand-expression-use-title: false
  brand-expression-appbar-test-logo: testEnvLogoV2.png
  brand-expression-appbar-logo: prodEnvLogo.png
  master-tenant: tenant-zero

Major Features

  • JURYCLOUD-18: Process BVS file (WIP) (cc468cf)
  • JURYCLOUD-10: Automate DHSMV loads (ce0dd6f)
    • Added county_id to tenant master (ce0dd6f)
    • Renamed county if to dhsmv id in staging table (09e1c51)
    • Added additional address lines for future imports (b5c57fa)
    • Fixed dropped city column by mistake (ded37a4)
    • Added debugging output (7c7a7c4)
    • Don't allow duplicate dl_num in file stage (2b4d9d9)
    • Fixed bug in repo delete statement (22f03b5)
    • Removed debug filtering of tenants (81ef70d)
    • Reduced info logging (5f15b05)
    • Cleanup and use param properties (fa13ad4)
    • Final changes to feature (de62682)

GitHub Actions & CI/CD

  • GitHub Action - Create Release (5f8e093)
  • Multiple GitHub Action improvements and fixes (e5cc306, 3c6a0822, 213031b, 18909a9, f5f380d, 1188861, 5724b36, 3027673)
  • Fixed GitHub Action (8552c93)
  • Cleaned up gradle build file (db9b467)
  • Added action comment (68ce933)
  • Renamed action file (d88af10)
  • Allowed action to run on branches (61f5a99)
  • Provided Vaadin License (5853b66)
  • Fixed action script (d262be4)
  • Allowed manual workflow trigger (97b1ee4)
  • Added diagnostic step (6e0fab1)
  • Renamed Vaadin offlinekey (eda6262)
  • Added access token to GH Secrets (2cb607d)
  • Removed arm64 from GitHub Action (d5a6ff2)

Improvements

  • Updated the header logo and cleanup (57da9c2)
  • Added activity code to track BVS excusals (da3c7ea)
  • Configured job to run every 20 minutes (e829da8)
  • Allowed access to management endpoints (2cb607d)

Summary Statistics

Total Releases: 31 releases (5.4.0 through 6.0.8) Release Period: December 2025 - July 2026 Major Features: Spring Boot 4 / Vaadin 25 / Hibernate 7 platform upgrade, JasperReports 7 migration, PostgreSQL support, DHSMV automation, BVS file processing, Quarterly reports, Statewide Grand Jury export, Void Panel Member functionality, CRC32 hash-based juror change detection, GL export mapping migration, Grafana/Loki log monitoring, API key authentication, real-time push notifications, sendSummoned bulk messaging, conversion query optimization and caching, pool member conversion preload and deduplication, SrApplicationProperties admin UI, unified prod/cloud deployment configuration with Docker support, CORS and CSP security hardening Bug Fixes: 17 major bug fixes (JURYCLOUD-34, 43, 46, 51, 52, 53, 55, 60, 78, 79, 80, 82, 85, 87, panel removal fix, SrMessageService NPE, PoolMemberConversionService regression)