Skip to content

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