OH

WF-13 — Integration Delivery

Process map for reliable asynchronous delivery of business events: transactional outbox, transform, signed dispatch, acknowledgment and reconciliation. Owner: Integration Owner — Platform Technology (on-call: Vikram Nair) · Version 5 (active since 28 Jun 2026).

WF-13 INT-02
Open Events & Webhooks
Events (24h)
12,480
Across 18 event types · 12 endpoints
Delivery success
99.6%
First-attempt 97.1% · after retries 99.6%
Median latency
1.8s
Commit → acknowledged
DLQ depth
7
▼ 1 poison · 6 outage-related
Endpoints healthy
11 / 12
Prime Link webhook degraded since 06:15
Process map — happy path Trigger: business event committed Per §8.2 Table 14
Business event committed (e.g. deal won) Outbox persist — same transaction as the write Transform — canonical payload → channel mapping vN Sign (HMAC) · idempotency key · replay guard Send webhook — delivery attempt captured Acknowledge — 2xx + receipt id Reconciled — nightly delivery report clean

Consumers deduplicate on the idempotency key: a retried create with the same key returns the original result without duplication (INT-01/INT-02 acceptance criteria). Every attempt, signature key id and response is retained as evidence.

Exception paths3 modelled exceptions
Outbox row dispatched Transform fails schema validation No retry — poison message (deterministic failure) DLQ (poison) — fix mapping version, then authorized replay
Send webhook 5xx / timeout from endpoint Bounded retries — backoff 1m · 5m · 15m · 1h · 3h · 6h Retries exhausted DLQ + owner-visible incident created (INT-02)
Nightly reconciliation 02:00 Sent ≠ acknowledged counts for an endpoint Investigate delivery attempts + receipts Reconciliation exception — manual match or authorized replay · report annotated
Owner & definition (§8.3)Published v5
Workflow ID
WF-13
Owner
VNIntegration Owner — Platform Technology · on-call Vikram Nair
Version
5 · effective 28 Jun 2026 · replay-safety simulation passed
Trigger
Any committed business event with a registered subscription (deal, party, invoice, listing…)
Preconditions
Subscription active · channel mapping version published · signing key valid · endpoint registered with secret
States
Committed → Outboxed → Transformed → Signed → Sent → Acknowledged → Reconciled
Terminal outcomes
Reconciled DLQ (poison) DLQ (retries exhausted) Reconciliation exception
Required evidence
Outbox row + transaction id · mapping version · signature key id · every delivery attempt with response · receipt id · reconciliation report
Policy snapshot
Replay requires authorization with reason; replayed events keep the original idempotency key
Controls (Table 14, expanded)INT-02
ControlEnforcementStatus
Transactional outboxEvent persisted with transaction state before dispatch — no event without commit, no commit without eventEnforced
IdempotencyDeterministic key per event (e.g. deal-DL-2026-0142-won); consumer duplicate-suppression verified in contract testsEnforced
Signed webhooksHMAC-SHA256, key id in header, rotation quarterly (current kid wh-2026-q3); replay protection via timestamp + nonceEnforced
Bounded retry6 attempts, exponential backoff 1m → 6h; deterministic failures skip retryEnforced
DLQ + incidentExhausted / poison events land in DLQ; owner-visible incident auto-created7 in DLQ
Replay + reconciliationAuthorized replay with reason; nightly reconciliation report sent vs acknowledged per endpointEnforced
Exception paths & recovery
ExceptionDetectionRecoveryAuthority
Schema errorTransform validation failure (deterministic)Straight to DLQ (no retry); publish fixed mapping version; authorized replay preserves idempotency keyIntegration owner
Endpoint outage5xx / timeout; retries exhaust after ~10hDLQ + incident; provider status on Provider Health; bulk replay after recoveryIntegration owner + provider contact
Manual reconciliationNightly count mismatch per endpointAttempt-level investigation; manual match or replay; report annotated with resolution + reasonIntegration owner · reviewed by Grace Okafor (audit)
Duplicate receiptSame idempotency key acknowledged twiceConsumer returns original result; flagged for contract-test review; no data duplicationSystem
Timers & escalation (§8.3)Calendar: 24/7 platform
TimerCalendarWarningBreachEscalation
Outbox dispatch lag24/7 · poll 5s1m5mPlatform on-call page
Retry window24/7 · backoff 1m → 6hattempt 4attempt 6 → DLQIncident to integration owner
Incident acknowledgmentBusiness hours (Mon–Fri)15m30mOn-call → Technology owner
DLQ item ageBusiness days1d3dWeekly governance review · aging report
Reconciliation runNightly 02:00 GST+30m+2hPlatform on-call · report to RPT-24
Screens involved
Dead-letter queue — current itemsOpen DLQ
EventEndpointCauseAgeAction
lead.created · dlq-3312Bayut connectorSchema error — mapping v93hReplayed 09:30 after v10 fix
listing.delisted · dlq-3313…18Prime Link webhookOutage — 503 since 06:15≤ 11hAwaiting endpoint recovery · incident INC-2026-088
Worked instance — deal.won for DL-2026-0142 · Amina Noor · unit PR-A-1103 Reconciled · 1 subscriber retried
  • 16 Jul 2026 · 17:42:01
    Deal marked Won in Deal Workspace
    Event evt_01J2XQ8V… + outbox row obx-88213 committed in the same database transaction · payload includes deal id, unit, amount AED 1,850,000.00 (masked party contact data per policy)
  • 17:42:03
    Transform — mapping v12 (finance ERP payload)
    Canonical event → channel schema validated · mapping version recorded on the delivery record
  • 17:42:04
    Signed & guarded
    HMAC-SHA256 kid wh-2026-q3 · idempotency key deal-DL-2026-0142-won · timestamp + nonce for replay protection
  • 17:42:05
    Subscriber 1 acknowledged — Finance connector
    POST → 200 · receipt rcp_5591 · commission voucher queued in Commissions
  • 17:42:05
    Subscriber 2 failed — Portal syndication delist (PR-A-1103)
    503 Service Unavailable · retry schedule started (1m · 5m · 15m …) · every attempt captured
  • 18:12:09
    Subscriber 2 retry 3 succeeded
    200 · receipt rcp_5604 · listing delist confirmed on Portal Syndication · same idempotency key, no duplicate delist
  • 17 Jul · 02:00
    Nightly reconciliation — clean for this event
    Report REC-2026-0717: 12,480 sent = 12,480 acknowledged across healthy endpoints · Prime Link mismatch tracked separately under INC-2026-088

Static render mockup — no live data. Source: ERP Modern Development Specification v2.0 · Covers: WF-13, INT-02.