{"slug":"architecture/14_SOURCE_SYSTEMS","title":"14 · Source Systems","section":"architecture","sectionLabel":"Architecture","status":"unclassified","type":"document","path":"architecture/14_SOURCE_SYSTEMS.mdx","bytes":2878,"description":"The external systems that SpineWorkspace connects to — CRM, ERP, communication, support, and any system","updated":null,"source":"integratewise/Integratewise-docs-wiki","content":"\n\n**The external systems that feed and are fed by SpineWorkspace.**\n\nSource Systems are the external applications and tools that SpineWorkspace connects to. They are both inputs (providing data) and outputs (receiving actions).\n\n---\n\n## Supported Systems\n\n| Category | Systems |\n|----------|---------|\n| **CRM** | Salesforce, HubSpot, Dynamics 365 |\n| **ERP** | NetSuite, QuickBooks |\n| **Support** | ServiceNow, Zendesk |\n| **Communication** | Slack, Teams, Google Workspace, Microsoft 365 |\n| **Databases** | Any SQL/NoSQL database via API |\n| **Custom** | Files, Events, Webhooks, Any System |\n\n---\n\n## Bidirectional Flow\n\n```text\nSOURCE SYSTEMS ←→ BRIDGE LAYER ←→ SPINE FABRIC\n```\n\nThe same systems that provide data can also be acted upon. The Bridge Layer is bidirectional.\n\n---\n\n## Ingestion Flow\n\n```text\nSource System → Connector → Adapter → Transformer → Normalization → Spine Event → Spine Store\n```\n\n## Execution Flow\n\n```text\nSpine Decision → Governance Check → Execution Token → Adapter → Connector → Target System\n```\n\n---\n\n## Connector Contract\n\n```typescript\ninterface Connector {\n  id: string;\n  system: string;\n  auth: AuthConfig;\n  capabilities: Capability[];\n  \n  fetch(entity: string, params: QueryParams): Promise<Entity[]>;\n  watch(entity: string, callback: EventCallback): Subscription;\n  create(entity: string, data: EntityData): Promise<Entity>;\n  update(entity: string, id: string, data: EntityData): Promise<Entity>;\n  delete(entity: string, id: string): Promise<void>;\n  health(): Promise<HealthStatus>;\n}\n```\n\n---\n\n## Sync Rules\n\n| Rule | Description |\n|------|-------------|\n| **Real-time** | Webhooks and event streaming for live data |\n| **Polling** | Configurable polling for systems without webhooks |\n| **Batch** | Scheduled batch sync for large datasets |\n| **On-demand** | Pull data when requested |\n| **Conflict resolution** | Spine wins, log discrepancy |\n\n---\n\n## Fallback Rules\n\n| Failure | Fallback |\n|---------|----------|\n| Connector timeout | Retry with exponential backoff |\n| Auth failure | Re-authenticate, notify admin |\n| Rate limit | Queue and retry after cooldown |\n| System down | Circuit breaker, serve cached data |\n| Data conflict | Spine wins, log for reconciliation |\n\n---\n\n## Source Systems Connect to\n\n| Layer | Relationship |\n|-------|-------------|\n| [Spine Fabric](/architecture/02_SPINE_FABRIC) | Data flows to and from the Spine |\n| [Communication Bridge](/architecture/11_COMMUNICATION_BRIDGE) | Connectivity via Bridge Layer |\n| [Execution](/architecture/13_EXECUTION) | Actions executed in source systems |\n| [Reconciliation](/architecture/15_RECONCILIATION) | Results reconciled from source systems |\n"}