Pillar page
Enterprise System Integration
We connect ERP, CRM, accounting systems, HR/payroll, business registries, Microsoft Graph, Salesforce, SAP. Integrations through APIs, queues, ETL and webhooks — with full quality control, audit trail and production monitoring.
A mid-sized company runs anywhere from a dozen to several dozen business applications. Each one stores fragments of the same data — customer, invoice, employee, order. Without integration, employees spend hours every day manually re-keying, exporting and importing data between systems.
System integration is not a luxury — it is the foundation of digital transformation. With a well-designed integration layer: a customer added in CRM appears in ERP without intervention, an invoice issued in accounting updates the CEO's financial dashboard, an order status is consistent across the online store, warehouse and customer service.
Why is integration hard?
Every system has its own data model, its own name for the same field, its own operation sequence, its own API constraints (rate limits, latency, transient errors). Two systems may look „compatible" in theory, but in practice they need weeks of work on mappings, transformations, edge-case handling and conflict resolution.
The second layer of difficulty is production reliability. An integration that works correctly in the dev environment is about 30% of the way there. The remaining 70% is handling exceptional situations: the external system is unavailable, it changed its API contract, returns unexpected data, a new customer appears in the CRM with characters that the legacy ERP cannot handle. Every such case needs thinking through, a test, and an alert when it happens.
Integration types
Six fundamental patterns. In most projects we combine several, picking the right method for each case.
REST API / GraphQL
Synchronous communication between applications. JSON as the exchange format, OAuth2/JWT for authorization, OpenAPI/Swagger for documentation. The most common choice for modern cloud systems.
Message queues
RabbitMQ, Redis Streams, Kafka — asynchronous exchange when the sender does not wait for the receiver. Perfect for notifications, business events, long-running operations. Delivery guarantee + retry.
ETL / ELT
Batch loading of data into a warehouse (Snowflake, BigQuery, Redshift, on-premise PostgreSQL). Airflow or dbt as the orchestrator, data quality validation (Great Expectations), lineage monitoring.
Webhooks
Push notifications from a source system (Stripe, GitHub, Slack, Salesforce) into our application. HMAC signature verification, idempotency, dead-letter queue for failed deliveries.
SOAP / XML
Legacy enterprise systems (SAP, Oracle, banking, insurance) — full WSDL support, XSD validation, WS-Security. Adapter to modern protocols for the rest of the system.
Databases — replication, CDC
Change Data Capture (Debezium, AWS DMS) for streaming replication of changes from a source database to a target. PostgreSQL logical replication for high availability and reporting.
Six key production challenges
Things we watch out for in every integration project. Missing any one of them = ticking time bomb.
Idempotency
Every request executed multiple times produces the same result. Idempotency keys in headers, application-level deduplication, transactions around critical operations.
Retry and backoff
Transient network errors are the norm. Exponential backoff (1s, 2s, 4s, 8s…), jitter to avoid thundering herd, circuit breaker after N failed attempts.
Mapping and transformations
System A names a field "client_id", system B "customerId", system C "id_klienta". A central mapping catalog, transformations in one place, tests for every transformation.
Eventual consistency
Data in two systems is never 100% consistent in real time. We accept latency (typically seconds), monitor drift, and alert on prolonged divergence.
Audit and compliance
Every integration operation logs: who/what/when/from/to, payload (anonymized if it contains PII), result. The audit log meets GDPR and ISO 27001 requirements.
Scaling and cost
Integrations grow with the business. Horizontal scaling (more instances), rate limiting (protection against excessive requests), per-integration cost monitoring.
How we deliver an integration project
- Discovery (1-2 weeks): mapping current data flows, identifying the source of truth for each entity, gathering API contracts, assessing risks and dependencies.
- Architecture design (1 week): picking patterns (sync vs. async, push vs. pull, hub-and-spoke vs. point-to-point), audit log schema, monitoring plan.
- Pilot on a single entity (2-3 weeks): we deliver the integration for one data type (e.g. customers) end-to-end. Contract validation, load testing, dry-run in the test environment.
- Expansion to remaining entities (4-8 weeks): subsequent syncs (invoices, orders, products) using the same pattern. Every rollout preceded by a Change Request and regression tests.
- Historical data migration (1-3 weeks): moving existing data. Dry-run, audit, rollback plan. Migration either incremental or in a service window.
- Hypercare (4 weeks in production): intensive monitoring, fast incident response, alert tuning. After hypercare, transition to standard maintenance.
Examples of delivered integrations
KRS + CRBR — RejestrFirm
Microservice connecting data from the Polish Court Register (740k+ companies) with the Central Register of Beneficial Owners. Smart caching (24h), dual-source with automatic fallback, 15+ REST endpoints. Used in KYC processes, counterparty verification and compliance reporting.
SSO across multiple applications
Central Keycloak platform (realm eskom-ai) integrated with a dozen client applications. OAuth2/OIDC + PKCE, social login (Google, Microsoft, Apple, Facebook), user provisioning, billing based on LLM token usage. Single sign-on across all ESKOM AI products.
Microsoft Graph — calendars, e-mail, OneDrive
Integration with Microsoft 365 for calendar automation (AI assistant scheduling meetings), transactional e-mail delivery, document archiving. OAuth2 with delegated permissions, refresh tokens in Vault, Graph API rate-limit monitoring.
LLM Proxy — multi-provider routing
Central queue connecting multiple LLM providers (Anthropic, OpenAI, local Ollama). Per-task routing (small — local model, complex — Claude Opus), response caching, per-project cost monitoring, fail-over between providers.
Frequently asked questions
What does system integration mean?
What integration technologies do you use?
Do integrations break when source systems are updated?
How long does a typical integration take?
What about historical data in a new integration?
Does the integration have to run 24/7?
How do you monitor production integrations?
What about security for external integrations?
How does ESKOM AI's integration approach differ from a classic ESB (Enterprise Service Bus)?
Do you integrate with Polish public-sector systems (KRS, CRBR, KSeF, ePUAP)?
Got an integration project?
We start with a free audit — mapping current data flows, identifying bottlenecks and proposing a plan in clear phases.