External Event Proxying
At a glance
Cross-tenant event proxying lets a federation subscribe to GLOBAL-published competitions from other tenants, cache the metadata locally, sync every 15 minutes with exponential backoff, and render proxy events in the CMS upcoming-events widget alongside its own — with a source badge, optional local overrides (title, translation, note), and admin tooling for subscribe/unsubscribe and manual resync.
How it works
When a federation wants to surface competitions from elsewhere — neighbouring nations, FIPJP world events, partner federations — an admin opens the External Event Proxying panel and subscribes to GLOBAL-scoped competitions discovered via F04.03's cross-tenant public APIs. Each subscription creates an ExternalEventProxy document in the local tenant carrying a sync lifecycle status (OK, STALE, FAILED, SOURCE_DELETED). A background sync job runs every 15 minutes, batches up to 50 proxies per run, and applies exponential backoff per failing entry so a flaky source does not slow the whole job.
On every sync the local cached metadata refreshes (title, dates, venue, registration window, status), with conflict detection — if the source competition is deleted, the proxy flips to SOURCE_DELETED and the admin gets an alert. Local overrides per proxy let the federation add a translated title for its language audience, a local note ("Bus from Stockholm departs Friday morning"), or a custom title overriding the source. The public upcoming-events endpoint returns a union of own + proxied events in chronological order, ready for the CMS widget which renders proxy events with a source badge and a deep-link back to the source federation's page.
The admin UI uses status colors (green OK, amber STALE, red FAILED, grey SOURCE_DELETED), supports search across subscribed proxies, and offers manual resync rate-limited to one per minute per proxy so an impatient admin cannot DoS the source. Proxying is read-only: the local tenant never modifies the source event, so registration and score data stay authoritative on the host tenant — the proxy is purely for visibility and discovery on the consumer site.
Key capabilities
- ExternalEventProxy model with sync lifecycle (OK/STALE/FAILED/SOURCE_DELETED)
- Admin subscribe/unsubscribe to GLOBAL competitions discovered via cross-tenant APIs
- Local overrides per proxy: custom title, translation, local note
- Background sync job every 15 minutes, batch 50, exponential backoff per proxy
- Public upcoming-events endpoint unioning own + proxied events
- CMS widget renders proxy events with source badge and deep link back to source
- Admin UI with status colors and manual resync rate-limited to 1/min per proxy
In practice
The Norwegian federation wants to highlight Swedish and Danish events on its CMS upcoming-events widget. The admin opens external event proxying, searches the cross-tenant feed for SE and DK GLOBAL events, and subscribes to 14 of them. Within the next 15 minutes the sync job pulls metadata; the upcoming-events endpoint now returns 9 Norwegian and 14 proxied events.
On the public widget Norwegian visitors see the proxied events with a small "Sweden" badge and click through to the host federation's registration page. A week later the source federation deletes one event; on the next sync the proxy flips to SOURCE_DELETED and the admin sees a red banner, removes the subscription, and the widget cleans up automatically.
Features in this subsystem
8| ID | Status | Features |
|---|---|---|
| F04.22.01 | Shipped | ExternalEventProxy model with sync lifecycle (OK/STALE/FAILED/SOURCE_DELETED) ✅ PL-T008 ✅ PL-T008 |
| F04.22.02 | Shipped | Admin subscribe/unsubscribe to global competitions ✅ PL-T008 ✅ PL-T008 |
| F04.22.03 | Shipped | Local overrides (title, translation, note) per proxy ✅ PL-T008 ✅ PL-T008 |
| F04.22.04 | Shipped | Background sync job (15 min, batch 50, exponential backoff) ✅ PL-T008 ✅ PL-T008 |
| F04.22.05 | Shipped | Public upcoming-events endpoint (union of own + proxied) ✅ PL-T008 ✅ PL-T008 |
| F04.22.06 | Shipped | CMS widget renders proxy events with source badge and link ✅ PL-T008 ✅ PL-T008 |
| F04.22.07 | Shipped | Admin UI with status colors, search, subscribe, resync ✅ PL-T008 ✅ PL-T008 |
| F04.22.08 | Shipped | Manual resync with rate limiting (1/min per proxy) ✅ PL-T008 ✅ PL-T008 |