IntegrationHost¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
| Bounded context | BC-16 Connections |
| Platform / plane | Integration Platform / Capability & Tools |
| Deployment granularity | standalone host |
| Status | target · ConnectSoft.Factory.Integration |
| Built from | connectsoft-microservice · libraries: connectsoft-extensions-http-oauth2, connectsoft-extensions-saas-abstractions, connectsoft-extensions-saas-asp-net-core, connectsoft-extensions-messaging-model, connectsoft-extensions-messaging-model-orleans, connectsoft-extensions-persistence-model-nhibernate, connectsoft-extensions-rate-limiting, connectsoft-extensions-audit-net, connectsoft-extensions-observability |
| Decisions | ADR-0012, ADR-0015, ADR-0016, ADR-0017, ADR-0022 |
| Traceability | FR-05 FR-11 FUX-02 NFR-02 NFR-13 NFR-18 XL-10 XL-13 |
Purpose and responsibilities¶
IntegrationHost composes IntegrationService (connections, BC-16) and ConnectorRegistryService (connectors, subscriptions, deliveries, BC-17) and loads the connector adapters: the first-party client libraries that already exist (Azure DevOps, GitHub, Deputy, Braze, Bill, Twilio, Israel019, Azure Communication Services, Google Analytics Measurement Protocol, Meta Conversions) and the generic HTTP, OpenAPI and MCP adapters. A vendor is registered, not hand-built: the host turns libraries into governed capabilities behind descriptors. The webhook ingress (GW-06) is a separate conditional host, WebhookGatewayService, so that the public inbound surface stays minimal.
Context and boundaries¶
flowchart LR
S["IntegrationHost"]
ToolExecutorHost["ToolExecutorHost"] -->|grpc| S
KnowledgeHost["KnowledgeHost"] -->|grpc| S
StudioBff["StudioBff"] -->|sync-http| S
WebhookGatewayService["WebhookGatewayService"] -->|event| S
S -->|grpc| GovernanceHost["GovernanceHost"]
S -->|grpc| ControlPlaneApi["ControlPlaneApi"]
S -->|sync-http| ext_azure_devops["ext-azure-devops"]
S -->|sync-http| ext_github["ext-github"]
S -->|library| ext_client_libraries["ext-client-libraries"]
S -->|sync-http| ext_identity_platform["ext-identity-platform"]
flowchart LR
subgraph Host["IntegrationHost (2 to 8 replicas)"]
direction TB
Conn["IntegrationService<br/>connections, grants"]
Cx["ConnectorRegistryService<br/>descriptors, subscriptions, deliveries"]
Adapters["Adapters: first-party clients, HTTP, OpenAPI, MCP"]
end
WH["WebhookGatewayService (GW-06)"] -- "verified deliveries" --> Cx
TE["ToolExecutorHost"] -- "Resolve, Deliver" --> Host
KH["KnowledgeHost"] -- "Resolve for sources" --> Conn
SB["StudioBff"] --> Host
Host -- "credentials, grant policy" --> GOV["GovernanceHost"]
Cx --> Adapters --> Vendors["Vendors: Azure DevOps, GitHub, SharePoint, Confluence, SaaS APIs"]
Host --> SQL["('integration-sql')"]
Domain model¶
None modelled
No aggregates are modelled for this item yet.
No entities modelled.
Entities and value objects¶
None modelled
No entities or value objects are modelled for this item yet.
Data model and storage¶
| Store | Role | Engine / profile | Tables |
|---|---|---|---|
| Integration store | primary | azure-sql / nhibernate-sqlserver | — |
| Cache and coordination | cache | redis / azure-cache | — |
None modelled
No tables are modelled for this item yet.
APIs¶
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/integration/health |
IntegrationHealth | factory.health.read |
read | natural | GW-01 | Liveness, readiness and dependency health (store, secret broker, connector adapters, webhook ingress). |
GET |
/integration/meta/connectors |
IntegrationAdapters | factory.meta.read |
read | natural | GW-03 | Connector adapters loaded in this host (first-party clients and generic HTTP, OpenAPI, MCP) with versions and capability interfaces. |
None modelled
No gRPC methods are modelled for this item yet.
Messages¶
None modelled
No events are modelled for this item yet.
None modelled
No commands are modelled for this item yet.
None modelled
No consumed events are modelled for this item yet.
Workers and jobs¶
None modelled
No workers are modelled for this item yet.
Actors and grains¶
None modelled
No grains are modelled for this item yet.
Sagas and long-running flows¶
None modelled
No sagas are modelled for this item yet.
Options and configuration¶
| Section | Key | Type | Default | Reloadable | Secret | Summary |
|---|---|---|---|---|---|---|
Integration:Host |
EnabledModules |
string[] | [connections, connectors] |
no | no | Modules composed into this host; webhook ingress is a separate conditional host. |
Integration:Adapters |
Enabled |
string[] | [azure-devops, github, generic-http, openapi, mcp, deputy, braze, bill, twilio, israel019, acs, ga-measurement, meta-conversions] |
no | no | First-party client libraries and generic adapters loaded as connector implementations. |
OrleansMessaging |
ServiceName |
string | integration |
no | no | Messaging profile service name. |
Metrics and observability¶
| Metric | Instrument | Unit | Dimensions | Summary |
|---|---|---|---|---|
connectsoft.factory.integration.host.requests |
counter | {request} | module, status | Requests per module. |
connectsoft.factory.integration.host.adapter_health |
gauge | 1 | adapter | Adapter health. |
Security¶
| Authentication | client-credentials |
| Scopes | factory.health.read (Health probes.); factory.meta.read (Adapter metadata.) |
| Roles | Operator, PlatformAdmin, Observer |
| Tenant isolation | row-filter |
| Data classification | confidential |
| Max side-effect class | external |
| Secrets | integration-sql (key-vault, rotate 90 d); messaging-transport (key-vault, rotate 90 d) |
Dependencies¶
Outbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| GovernanceHost | grpc | Secret brokering for connection credentials and policy for grants. | fail-fast | yes |
| ControlPlaneApi | grpc | Project scope and approvals for external deliveries. | fail-fast | yes |
| ext-azure-devops | sync-http | Work items, repositories, pipelines. | degrade | no |
| ext-github | sync-http | Repositories, issues, pull requests. | degrade | no |
| ext-client-libraries | library | First-party vendor clients behind connector descriptors. | degrade | no |
| ext-identity-platform | sync-http | Workload identity and caller validation. | fail-fast | yes |
Inbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| ToolExecutorHost | grpc | Connections for external tools and consumed MCP servers. | — | yes |
| KnowledgeHost | grpc | Connections for source ingestion. | — | yes |
| StudioBff | sync-http | Connection and connector administration. | — | yes |
| WebhookGatewayService | event | Verified inbound deliveries. | — | yes |
Failure and recovery¶
| Scenario | Detection | Recovery | Data impact | RTO (min) |
|---|---|---|---|---|
| Secret broker unavailable | credential issuance failures | fail closed; no outbound call without a brokered credential | none | 15 |
| Vendor outage | adapter health and delivery failures | deliveries retried per connector profile; subscriptions replay after recovery | delayed deliveries | 60 |
NFR targets¶
| Target | Class value (pilot-interactive) | Override |
|---|---|---|
| latency_p95_ms | 2000 | — |
| availability_pct | 99.5 | — |
| throughput_rps | 50 | — |
| rpo_minutes | 15 | — |
| rto_minutes | 240 | — |
| cost_class | low | — |
Deployment¶
| Granularity | standalone host |
| Topologies | saas-default, hybrid, on-prem |
| Runtime | aks; replicas 2–8 |
| Ports | https 7900, grpc 7902, silo 11900, gateway 30900 |
Current implementation¶
The first-party client libraries exist (see the API clients and communication providers library areas); ConnectSoft.Extensions.Http.OAuth2 provides token management. No connection registry, grants, descriptors, subscriptions, deliveries or ingress exist.
Later capabilities¶
Integration packs as marketplace assets; provider certification suites; vendor cost attribution; secret-expiry forecasting.
Decisions and traceability¶
| Family | Ids |
|---|---|
| FR | FR-05, FR-11 |
| FUX | FUX-02 |
| NFR | NFR-02, NFR-13, NFR-18 |
| XL | XL-10, XL-13 |