URS-INT-001: Multi-Protocol Integration¶
| Property | Value |
|---|---|
| ID | URS-INT-001 |
| Version | 1.0 |
| Status | Draft |
| Bounded Context | Integration (APIs) |
| Author | |
| Approved By | |
| Date |
BR Traceability¶
| URS Requirement | Business Requirement | arc42 Reference |
|---|---|---|
| URS-INT-001.1 | BR-06 | arc42/05 s5.2.4 |
| URS-INT-001.2 | BR-06 | arc42/05 s5.2.5 |
| URS-INT-001.3 | BR-06 | arc42/05 s5.2.6 |
| URS-INT-001.4 | BR-06 | arc42/04 s4.1 |
| URS-INT-001.5 | BR-06 | arc42/07 |
| URS-INT-001.6 | BR-06 | arc42/07 |
Scope¶
The Integration context defines how external systems interact with Essert.MF through multiple API protocols. The hexagonal architecture ensures all protocols access the same application layer, guaranteeing consistent behavior.
Requirements¶
URS-INT-001.1: REST API¶
Description: The system shall expose all functionality via REST API endpoints with OpenAPI/Swagger documentation.
Acceptance Criteria: - 21 controllers covering all bounded contexts and parameter types - OpenAPI specification generated automatically - Standard HTTP verbs: GET, POST, PUT, DELETE - JSON request/response format - Consistent error response structure - API response times per QS-P1
GxP Relevance: Direct Risk Class: Medium
URS-INT-001.2: OPC UA Protocol¶
Description: The system shall expose manufacturing and product operations via OPC UA (IEC 62541) for SCADA integration.
Acceptance Criteria: - OPC UA server on configurable port (default 4840) - ManufacturingNodeManager: process operations (create, complete, fail) - ProductNodeManager: product data queries - Support for Browse, Read, Write, and Method Call services - Security: Basic256Sha256 encryption, configurable anonymous access - Response times per QS-P2
GxP Relevance: Direct Risk Class: High
URS-INT-001.3: GraphQL API¶
Description: The system shall expose queries, mutations, and real-time subscriptions via GraphQL.
Acceptance Criteria: - 24 query operations across all bounded contexts - 26 mutation operations for data modification - 4 subscription operations for real-time message notifications - WebSocket transport for subscriptions - Filtering, sorting, and projection support - Banana Cake Pop IDE available for interactive querying
GxP Relevance: Direct Risk Class: Medium
URS-INT-001.4: Cross-Protocol Consistency¶
Description: The same operation executed via REST, OPC UA, or GraphQL shall produce identical results.
Acceptance Criteria: - All protocols route through the same Application layer handlers - Domain validation is applied regardless of entry protocol - Data integrity (CRC, timestamps) is consistent across protocols - Error conditions produce equivalent error information
GxP Relevance: Direct Risk Class: High
URS-INT-001.5: Container-Based Deployment¶
Description: The system shall support deployment of all API services (REST, GraphQL, OPC UA) as Docker containers orchestrated via Docker Compose.
Acceptance Criteria:
- Each API service has its own Dockerfile with multi-stage build (SDK → runtime)
- Docker Compose file orchestrates all three API services and an optional MariaDB instance
- Connection strings and service configuration are injectable via environment variables
- REST and GraphQL health check endpoints (/health) are accessible from the container host
- OPC UA server endpoint is configurable via environment variable for host/port binding
- Container images build reproducibly from the solution root
- Services start in correct dependency order (database before APIs)
GxP Relevance: Supporting Risk Class: Low
URS-INT-001.6: Native Windows Service Deployment¶
Description: The system shall support deployment as a native Windows Service on resource-constrained industrial PCs (Siemens S7-1500 Open Controller) without requiring Docker, Hyper-V, or WSL2. All API services (REST, GraphQL, OPC UA) shall run in a single unified process to minimize memory usage.
Acceptance Criteria:
- Single-process unified host running REST, GraphQL, and OPC UA in one Windows Service
- Self-contained publish: no .NET runtime installation required on target device
- Deployment via PowerShell scripts (install, uninstall) suitable for air-gapped networks
- Memory footprint < 300 MB under normal load (target: ~200 MB)
- Connection pool sizes configurable per database context for resource optimization
- Individual API adapters (REST, GraphQL, OPC UA) can be enabled/disabled via configuration
- In-process ICurrentMessageEventService shared across all APIs (no Redis required)
- Health check endpoint verifiable after service start
- Compatible with Windows 10/11 IoT Enterprise on Intel Atom E3940
GxP Relevance: Supporting Risk Class: Low
References¶
- Architecture: arc42/04 s4.1 — Hexagonal Architecture
- REST: arc42/05 s5.2.4
- OPC UA: arc42/05 s5.2.5, arc42/06 s6.3
- GraphQL: arc42/05 s5.2.6
- Decision: arc42/09 ADR-005 — OPC UA Protocol