Upgrade event versions
To upgrade an event to a newer version without downtime, you can use the Expand and Contract pattern.
1. Update your server to ignore new events
┌────────────────────────┐
│ Rabo Smart Pay │░
│ ┏━━━━━━━━━━━━━━━━━━┓ │░
│ ┃ subscriptions ┃ │░ ┌────────────────────────────┐
│ ┃ ┃ │░ │ Your Server │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V1 │─╋──┼──────┼▶║ Process ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┃ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ ┃ │░ │ ║ Ignore and acknowledge ║ │
│ ┃ ┃ │░ │ ╚════════════════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░
2. Add the new event to the existing webhook subscription
┌────────────────────────┐
│ Rabo Smart Pay │░
│ ┏━━━━━━━━━━━━━━━━━━┓ │░
│ ┃ subscriptions ┃ │░ ┌────────────────────────────┐
│ ┃ ┃ │░ │ Your Server │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V1 │─╋──┼──────┼▶║ Process ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V2 │─╋──┼──────┼▶║ Ignore and acknowledge ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░
3. Update your server to process new events, and ignore old events
┌────── ──────────────────┐
│ Rabo Smart Pay │░
│ ┏━━━━━━━━━━━━━━━━━━┓ │░
│ ┃ subscriptions ┃ │░ ┌────────────────────────────┐
│ ┃ ┃ │░ │ Your Server │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V1 │─╋──┼──────┼▶║ Ignore and acknowledge ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V2 │─╋──┼──────┼▶║ Process ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░
4. Remove the old event from the existing subscription
┌────────────────────────┐
│ Rabo Smart Pay │░
│ ┏━━━━━━━━━━━━━━━━━━┓ │░
│ ┃ subscriptions ┃ │░ ┌────────────────────────────┐
│ ┃ ┃ │░ │ Your Server │
│ ┃ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ ┃ │░ │ ║ Ignore and acknowledge ║ │
│ ┃ ┃ │░ │ ╚════════════════════════╝ │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V2 │─╋──┼──────┼▶║ Process ║ │
│ ┃ └──────── ──────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░
5. Remove the code processing the old events from your server
┌────────────────────────┐
│ Rabo Smart Pay │░
│ ┏━━━━━━━━━━━━━━━━━━┓ │░
│ ┃ subscriptions ┃ │░ ┌────────────────────────────┐
│ ┃ ┃ │░ │ Your Server │
│ ┃ ┃ │░ │ │
│ ┃ ┃ │░ │ │
│ ┃ ┃ │░ │ │
│ ┃ ┌──────────────┐ ┃ │░ │ ╔════════════════════════╗ │
│ ┃ │ event/V2 │─╋──┼──────┼▶║ Process ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚═════════ ═══════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░