This pre-release milestone of Bosch IoT Rollouts Extension - Systems Software Update  comes with the following improvements:

New features

  • ROLEX-157: Recipe file download
  • ROLEX-166: Systems mgmt api
  • ROLEX-163: Add UI
  • ROLEX-113: Add upload recipe
  • ROLEX-110: Add new product on management API
  • ROLEX-111: Add systems feature
  • ROLEX-296: Introduce e2e tests
  • ROLEX-290: Manage recipe lifecycle via Mgmt API
  • ROLEX-112: Systems list - Expose gateway ID as a target link
  • ROLEX-112: Systems list - Expose modules as a targets link
  • ROLEX-478: Introduce publishedBy audit field for recipes
  • ROLEX-341: Add recipe list UI
  • ROLEX-385: Add mgmt api recipe file download
  • ROLEX-386: Introduce display attributes for modules
  • ROLEX-475: Add recipe details UI
  • ROLEX-385: Management API: Resource collection for recipe signatures
  • ROLEX-506: Expose sha256 hash of recipe file via Management API
  • ROLEX-488: Add signature list in UI
  • ROLEX-506: Introduce WAITING_FOR_APPROVAL state
  • ROLEX-506: Management API: Expose links for "release recipe" and "deny recipe"
  • ROLEX-342: Add recipe lifecycle actions in UI
  • ROLEX-534: Add signature upload in UI
  • ROLEX-539: Introduce new canonical recipe model
  • ROLEX-573: Expose delete link for recipes and recipe signatures
  • ROLEX-573: Delete signature button
  • ROLEX-536: Introduce tagging of recipes
  • ROLEX-532: Mgmt API - Allow to search for recipes by name and ID
  • ROLEX-586: Add tag list in UI
  • ROLEX-634: Extend API to support recipe tagging
  • ROLEX-587: Show tags of recipe in UI
  • ROLEX-542: Management API: Provide read access to module update definitions and system distribution sets
  • ROLEX-537: Added file size and file count validation for signatures
  • ROLEX-542: Management API: Provide read access to meta data of recipes, module update definitions, and system distribution sets
  • ROLEX-587: UI add recipe tag
  • ROLEX-541: Add recipe transformation to install representation
  • ROLEX-603: UI module update definitions
  • ROLEX-602: UI distribution sets list
  • ROLEX-604: Add module update definition details
  • ROLEX-607: Distribution set details
  • ROLEX-609: Mgmt API: Write access to metadata
  • ROLEX-605: UI metadata lists
  • ROLEX-541: Use default template if no tenant specific template found
  • ROLEX-671: Introduce tenant config store
  • ROLEX-605: UI add metadata
  • ROLEX-609: Management API: Write access to system distribution sets and module update definitions
  • ROLEX-609: Management API: add endpoint to update a recipe
  • ROLEX-605: UI edit metadata
  • ROLEX-671: Introduce tenant config cache
  • ROLEX-581: UI add recipe
  • ROLEX-581: UI recipe delete and edit
  • ROLEX-719: Manage module update definitions in the UI
  • ROLEX-718: Manage system distribution sets in the UI
  • ROLEX-675: Introduce validation framework
  • ROLEX-530: UI tag management
  • ROLEX-530: UI tag assignemnt
  • ROLEX-531: UI recipe filtering
  • ROLEX-606: Introduced metadata validator
  • ROLEX-799: Upload recipe endpoint
  • ROLEX-799: Upload recipe ui
  • ROLEX-801: Recipe Validation API incl. data model enhancements
  • ROLEX-282: Introduce RBAC
  • ROLEX-123: Validate recipes via Management UI
  • ROLEX-741: Validation Report UI
  • ROLEX-720: Introduce ordering and sorting of module update definitions via API
  • ROLEX-838: Add extra state to recipe lifecycle for waiting for signature
  • ROLEX-838: Introduce new state "Waiting for signature" in Mgmt UI
  • ROLEX-736: expose system details
  • ROLEX-815: Introduce tenant-config admin API with extended security config
  • ROLEX-928: Introduce RBAC API access tests
  • ROLEX-350: Management API: Allow to filter list of systems
  • ROLEX-969: system actions
  • ROLEX-959: UI extend system properties
  • ROLEX-805: Create match-views and service
  • ROLEX-1030: Add softwareId to "properties" section in recipe
  • ROLEX-350: ui systems filtering
  • ROLEX-1005: Management API: Allow to create a recipe with a pre-defined ID
  • ROLEX-1029: initialSystemReportTime
  • ROLEX-805: Normalize version properties of system report
  • ROLEX-1029: filter systems api
  • ROLEX-1036: Introduce asynchronous match/count jobs
  • ROLEX-1029: UI system filtering
  • ROLEX-1074: Introduce new jobs api
  • ROLEX-1074: Provide recipe info as link
  • ROLEX-1075: Provide timestamp of last recipe match to a system
  • ROLEX-1073: show tag ID
  • ROLEX-355: filter by recipe match
  • ROLEX-1011: Provide option to delete systems
  • ROLEX-929: Provide an option to bind a SOUP tenant with Sign&Encrypt
  • ROLEX-1032: Refine timestamp validation of update and system reports
  • ROLEX-355: UI filter for recipe match
  • ROLEX-1011: Introduce SystemDetailsActions to perform system deletion
  • ROLEX-1107: UI match job info
  • ROLEX-1058: Update JSON schema of update report (Install API)
  • ROLEX-805: adopt version formatting
  • ROLEX-1106: UI recipe coverage
  • ROLEX-1011: Delete multiple systems
  • ROLEX-1141: Extend API security test to confirm CSV is complete
  • ROLEX-1058: Attach module-level logs from update report to actions in IoT Rollouts
  • ROLEX-1080: Provide current matching recipes
  • ROLEX-805: Added missing @TenantId annotation
  • ROLEX-1139: System action status
  • ROLEX-1078: Filter out dated systems
  • ROLEX-1139: Update report: Change log entry timestamps to epoch millis
  • ROLEX-1150: ui recipe info
  • ROLEX-1139: Add reportedAt/-By to SystemActionStatus
  • ROLEX-1132: UI system action logs
  • ROLEX-1071: Recipe match validator
  • ROLEX-1180: Send update attributes event when deleting systems
  • ROLEX-1161: Introduce status code for system action status
  • ROLEX-1082: Introduce dropdown for system actions filter modal
  • ROLEX-1161: Extend System Actions view
  • ROLEX-1170: Introduce tenant config based role mapping
  • ROLEX-1136: Recipe match job and system match
  • ROLEX-895: Avoid characters in install file that break the format (potential attack vector)
  • ROLEX-124: Validate signed reports
  • ROLEX-1138: Calculate and provide recipe count/coverage
  • ROLEX-1230: Added support for IN operator
  • ROLEX-1232: Introduce last system match date time
  • ROLEX-1246: Update SystemMatchs on system-report processing
  • ROLEX-1204: Filter recipes by metadata

Improvements

  • ROLEX-297: Implement paging for getRecipes in Mgmt API
  • ROLEX-149: Mgmt API requires suite auth OAUTH2 token
  • ROLEX-149: Spring security authorization code flow
  • ROLEX-149: added encrypted clientid and secret for QA
  • ROLEX-299: Configure spring security for Install API
  • ROLEX-367: Install API enhancements
  • ROLEX-609: Improve OpenAPI spec
  • ROLEX-282: Make Recipes with RELEASE_CANDIDATE state only accessible by the TEST_INSTALLER
  • ROLEX-837: implemented review remarks
  • ROLEX-745: Change section order and expand certain sections by default
  • ROLEX-838: Allow demoting recipes in WAITING_FOR_SIGNATURE state
  • ROLEX-755: Make module update definitions sortable
  • ROLEX-736: UI system details
  • ROLEX-805: Add attributes to modules
  • ROLEX-805: Store module attributes when system-info is processed
  • ROLEX-815: Extend admin API by new endpoint to manage tenants
  • ROLEX-930 Add OWASP ZAP scan to release workflow
  • ROLEX-805: Expand module query and count query on promotion of recipe
  • ROLEX-952: Perform load test in own stage and introduce warmup
  • ROLEX-877: Added integration test execution in our CI/CD build
  • ROLEX-907: link actions of recipe
  • ROLEX-1008: System outdated banner
  • ROLEX-1009: update validity icon
  • ROLEX-1020: Accept partial update reports
  • ROLEX-982: add CORP header
  • ROLEX-77: Introduce E2E test to verify the install scenario
  • ROLEX-1075: Extend RecipeDTO and provide mock data
  • ROLEX-1025: Install API: Return error 400 (Bad Request) if DS ID specified in update report cannot be deserialized
  • ROLEX-1081: Improve error messages for invalid system reports
  • ROLEX-1135: Define recipe match job triggers
  • ROLEX-722: remember blade status
  • ROLEX-1139: Enhance SystemE2E test to verify system action status info
  • ROLEX-1114: Initialize system update status to REGISTERED
  • ROLEX-1165: Change logic to transform first artifact whose type key starts with 'firmware:'
  • ROLEX-1165: Remove : to also allow firmware as a valid key
  • ROLEX-1168: Ensure modifiedAt is updated when tags are added/removed
  • ROLEX-1082: Replace ID fields with name:version or name to improve usability
  • ROLEX-1190: Improve info cards
  • ROLEX-1197: ESLint
  • ROLEX-1197: Add to ESLINT to pipeline
  • ROLEX-14: Add Fossid scan action and add to Release and PR workflow
  • ROLEX-807: Scan UI with sonarqube
  • ROLEX-124: Update report processing improvements
  • ROLEX-124: add signed report performance test
  • ROLEX-1227: Setup SOUP PROD cluster
  • ROLEX-264: Setup WAF for SOUP LB
  • ROLEX-1227: Extend Release flow for PROD environment
  • ROLEX-1298: Update SSL policy to ELBSecurityPolicy-TLS13-1-2-2021-06
  • ROLEX-1013: Upgrade DB cluster to multi-az deployment for prod
  • ROLEX-430: Add WAF geoblocking for sanctioned countries
  • ROLEX-1301: Configure health/liveness checks for soup-app
  • ROLEX-1300: Allow lowercase timestamp as alias in system-report
  • ROLEX-383: Add automated security configuration testing
  • ROLEX-1310: Upgrade TLS configuration to ELBSecurityPolicy-TLS13-1-2-2021-06-Res

Bugs fixed

  • ROLEX-1155: Fix HibernateException in system identification
  • ROLEX-1071: Fix keeping security context in parallel stream
  • ROLEX-1222: Fix UI Sonar issues
  • ROLEX-1224: Fix UI refreshing bug
  • ROLEX-1205: Fix updating locked recipe
  • ROLEX-1136: Fix extracting validation state
  • ROLEX-1138: Avoid cascaded actions on the countJob of a Recipe
  • ROLEX-1138: Fix countJob reference to allow multiple ones
  • ROLEX-1233: Handle NumberFormatException