Skip to content

v2026.08

Latest

Choose a tag to compare

@andy-cshub andy-cshub released this 19 Aug 14:15
· 2 commits to master since this release
275d9fb

🚀 What's Changed

Visualization and analytics

  • New events endpoint serving raw training and console command events, replacing the old server-rendered visualizations
    • GET /training-instances/{instanceId}/events, filtered by event type and a since timestamp, suitable for polling
    • Accessible to administrators, organizers of the instance and its participants
    • Participants see only their own answer events and commands
  • Removed all server-rendered visualizations in favour of the events endpoint, decoupling frontend charts from backend analysis
    • /visualizations/** - 22 endpoints
    • /clusters/** - 6 endpoints
    • Command graphs - 11 endpoints

Score export

  • Score export now returns a rich JSON report instead of a CSV file
  • GET /exports/training-instances/{instanceId}/scores
  • Carries rank, training and assessment score, total, per-level scores, hints taken, wrong answers, solutions displayed, start and end time, and duration; the old CSV carried only instance id, login and total training score
  • Lists the levels it scores, in definition order
  • Wrong answers on access levels are excluded from the total
  • Ranked by score, ties broken by shorter time, then by run id

Bulk lookup

  • New by-ids endpoints fetching many records in one request, each returning a lightweight projection
    • Definitions, levels, hints, instances, runs and users
    • *BasicDTO projections carry descriptive non-sensitive data only

Cleanup of removed service integrations

  • Removed the training-feedback-service integration as a result of the microservice's removal
    • Reference, trainee and summary graphs are no longer created alongside the training definition
    • The feedback service client and its configuration are removed
  • Removed the elasticsearch-service integration as a result of the microservice's removal
    • Training events and console commands are queried directly from OpenSearch
    • The elasticsearch-service client and its web client configuration are removed
    • The crczp-elasticsearch-documents dependency is dropped

Deployment and configuration

  • Event storage migrated from Elasticsearch to OpenSearch, to which the training-service now connects directly
  • Properties added
    • opensearch.protocol
    • opensearch.host
    • opensearch.port
    • sandbox-service.uri
  • Properties removed
    • openstack-server.uri - superseded by sandbox-service.uri
    • elasticsearch-service.uri
    • training-feedback-service.uri
  • Audit logger renamed to cz.cyberrange.platform.training.opensearch.events.training.logging.AuditService

Internal

  • Added multiple bulk query operations to improve request performance
    • Optimized listing training definitions, score export and the MITRE technique report
  • Consolidated the API model into a single DTO hierarchy
    • Shared level, definition, instance and run fields lifted into abstract base types
    • Made explicit which training definition DTOs contain levels via a dedicated type instead of a nullable levels field
    • Accessors, equality and string forms generated uniformly with Lombok across all DTOs
  • Whole repository reformatted to Google Java Format
  • Service tests reorganized into a unit package, with new tests for mappers, facades, core services, scoring and event serialization

🙌 Thanks to all contributors in this release:

Full Changelog: v1.2.1...v2.1.2