Skip to main content

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 ║ │
│ ┃ └──────────────┘ ┃ │░ │ ╚════════════════════════╝ │
│ ┗━━━━━━━━━━━━━━━━━━┛ │░ └────────────────────────────┘
└────────────────────────┘░
░░░░░░░░░░░░░░░░░░░░░░░░░░