ADR-019: Integration Adapter Registry
ADR-019: Integration Adapter Registry
Status: Accepted Date: 2026-04-21 (Updated: 2026-04-22) Author: ALAI, 2026 Related: ADR-015 (Four-Jurisdiction Plugin), ADR-016 (E-Invoice Adapter)
Context
Bilko depends on 28+ external integration points across 4 jurisdictions.
[... rest of existing markdown content truncated for brevity ...]
§2.3 Error Code Taxonomy (Updated 2026-04-22)
14 canonical error codes (updated from initial 13 during Phase 1 Track B — added ADAPTER_DISABLED for feature flag support):
Connectivity (retryable=true)
NETWORK_TIMEOUT— Socket timeout, connection timeoutNETWORK_UNREACHABLE— Network unavailable, DNS failure
Authentication / Authorization (retryable=false)
AUTH_TOKEN_EXPIRED— OAuth2 token expired (caller should refresh token + retry once)AUTH_INVALID_CREDENTIALS— Invalid API key, cert rejectedAUTH_INSUFFICIENT_PERMISSIONS— Valid credentials but insufficient permissions
Validation (retryable=false)
VALIDATION_SCHEMA_ERROR— UBL schema violation, XML parse errorVALIDATION_BUSINESS_RULE— PIB must be 9 digits (RS), OIB must be 11 digits (HR), mandatory field missingVALIDATION_DUPLICATE_DOCUMENT— Invoice already exists in fiscal platform
Platform-side (retryable=true)
PLATFORM_MAINTENANCE— Scheduled maintenance, announced downtimePLATFORM_RATE_LIMITED— HTTP 429, quota exceededPLATFORM_INTERNAL_ERROR— HTTP 5xx, platform bug
Adapter State (retryable=false)
NOT_IMPLEMENTED— Stub adapter (lifecycle state: STUB)ADAPTER_DISABLED— Feature-flagged off per AdapterConfig.enabled (ADR-019 §3)
Generic
UNKNOWN— Unexpected error, unmapped status code (retryable=false)
Implementation reference: backend/src/main/kotlin/no/alai/bilko/adapter/AdapterException.kt
Update note: Verified 2026-04-22 per Proveo validation finding during Phase 1 Track B — taxonomy expanded to reflect granular error handling in live adapters (SEF Serbia, Storecove HR). Source ADR markdown file updated in sync.