Skip to content

FS-SYS-001: System Configuration Functions

Property Value
ID FS-SYS-001
Version 1.0
Corresponding URS URS-SYS-001
Status Draft
Author
Approved By
Date

Architecture Reference


Functional Specifications

FS-SYS-001.1: System Variable Management

Covers URS: URS-SYS-001.1

Input Specification (Set Variable):

Parameter Type Constraints Required
Name string Variable name Yes
Value string Variable value Yes

Output Specification (Get Variable):

Field Type Description
Name string Variable name
Value string Current value

Business Rules: - Variables stored in db_essert - Get returns null/404 if variable not found


FS-SYS-001.2: Database Version History

Covers URS: URS-SYS-001.2

Input Specification (Add Version):

Parameter Type Required
VersionNumber string Yes
Description string No
Creator string Yes

Output Specification: List of version records with VersionNumber, Description, Timestamp, Creator.


FS-SYS-001.3: System Health Check

Covers URS: URS-SYS-001.3

Output Specification:

Field Type Description
Status string "Healthy" / "Degraded" / "Unhealthy"
Databases object[] Per-database status
Databases[].Name string Database name
Databases[].Connected bool Connectivity status
Databases[].ResponseTimeMs int Connection time in ms

Business Rules: - Checks connectivity to all 8 databases - "Healthy" = all databases connected - "Degraded" = some databases connected - "Unhealthy" = no databases connected - Target response time < 200ms


CQRS Handler Mapping

FS Item Command/Query Handler
FS-SYS-001.1 SetVariableCommand / GetVariableQuery SetVariableHandler / GetVariableHandler
FS-SYS-001.2 AddVersionCommand / GetVersionHistoryQuery AddVersionHandler / GetVersionHistoryHandler
FS-SYS-001.3 GetSystemHealthQuery GetSystemHealthHandler

FS-SYS-001.4: Automated Build, Test, and Publish Pipeline

Covers URS: URS-SYS-001.4

Functional Description: Three GitHub Actions workflows automate the build, test, and release process:

Workflow 1: Build & Test (.github/workflows/build-and-test.yml) - Trigger: Push to master, feature/*, release/*; PRs to master - Runner: windows-latest (OPC UA and Windows Service compatibility) - Steps: Restore → Build (Release) → Domain tests → Application tests

Workflow 2: Publish Release (.github/workflows/publish-release.yml) - Trigger: Version tags (v*) - Runner: windows-latest - Steps: Build → Unit tests → Self-contained publish (win-x64) → Copy deploy scripts → Create ZIP → GitHub Release

Workflow 3: Integration Tests (.github/workflows/integration-tests.yml) - Trigger: PRs to master; manual workflow_dispatch - Runner: ubuntu-latest with MariaDB 11.7 service container - Steps: Create 8 databases → Build → Infrastructure unit tests → Infrastructure integration tests → REST API tests

Release Artifact Contents:

File Description
Essert.MF.Host.exe Self-contained single-file executable
appsettings.json Default configuration
appsettings.Production.json Production overrides template
install.ps1 Install/upgrade script
uninstall.ps1 Uninstall script

Business Rules: - Unit tests must pass before any publish step - No production secrets stored in CI — appsettings.json contains placeholder connection strings - Integration tests use EnsureCreated() for schema initialization (CI validates against EF model, not production schema)

arc42 Reference: arc42/07 s7.5 — Deployment Process