SETUP GUIDES · SELF-HOSTED
Upgrading self-hosted Claspine
What to do when you move your project to a newer Claspine version, release by release.
Most Claspine releases need nothing from you: change the version and build. When a release needs a change in your code or database, it has an upgrade note below. Read every note between your current version and the one you are moving to, oldest first. AI coding agents can read the same notes inside the Claspine package itself (META-INF/spine/upgrades/ in grahmur-platform-foundation), so you can simply ask your agent to upgrade Claspine and follow the notes.
Words you’ll see
- Package registry
- A server that hands out code libraries to build tools. Maven (Java) and npm (JavaScript) download the libraries your project lists from registries. Claspine Packages is Claspine’s private one, at api.claspine.com/packages.
Before you start
- A database backup, before moving production to a new version.
Steps
- Find your current version:
grahmur.platform.versionin yourpom.xml. - Read the notes below for every newer version up to your target, oldest first, and do each checklist.
- Change the version and run
./mvnw verify. Claspine’s build checks point at anything a note asks you to change. - In production, start one instance of the new version first and look for the log lines the note mentions, then start the rest.
# find code that names Claspine's tables directly (use Claspine's APIs instead)
grep -rnE "\bplatform_(products|deployments|memberships|organizations|sessions|audit_events|payment_orders|domain_bindings|identity_accounts|brands)\b" --include='*.java' --include='*.sql' .
# after a copy on Cosmos DB, once everything works, drop the old platform_* collections What goes where in Claspine
| Console field | Value |
|---|---|
| 0.22.0 | Tables and collections renamed to spine_platform_* (automatic). Code that names them must change. Full note: docs/upgrades/0.22.0.md in the Claspine package. |
| 0.23.0 | New optional setup from settings (platform.bootstrap.*); your app’s own MongoDB repositories keep working; Node SDK sign-in fixed (new response types). Full note: docs/upgrades/0.23.0.md in the Claspine package. |
| 0.23.1 | Use instead of 0.23.0: your MongoDB is kept only when your code uses it (platform.persistence.application-mongo to override). Full note: docs/upgrades/0.23.1.md. |
| 0.23.2 | Real providers (storage, email, SMS, push, AI, app stores) start when you switch them on; remove any workaround you added. Full note: docs/upgrades/0.23.2.md. |
| 0.24.0 | Sign-in with one-time codes by SMS, WhatsApp or email, sent with your own provider account; memberships can wait for approval (PENDING); Twilio SMS fixed. Full note: docs/upgrades/0.24.0.md. |
| 0.25.0 | Your code can no longer reach Claspine’s own tables: queries are refused at runtime, production will not start with such code, and tests fail on it. Use the APIs (new lookups by key). Full note: docs/upgrades/0.25.0.md. |
| 0.26.0 | Payments: refund part of an order, cancel an unpaid order (its checkout closes), and a refund the provider did not make now throws and leaves the order paid. Payments that reach a cancelled order are refunded. Healthcare pack: cancel, edit and unlink investigations. Full note: docs/upgrades/0.26.0.md. |
| 0.27.0 | Healthcare pack: list a clinic's resulted investigations (listResultedByOrg) instead of reading the pack's collection. Full note: docs/upgrades/0.27.0.md. |
| 0.28.0 | The audit log and other users' notification deliveries need permissions (spine.audit.read, spine.notifications.deliveries.read). Sandbox payments work only in development and test. Stripe refunds and disputes are recorded. Node apps can refund and cancel. Full note: docs/upgrades/0.28.0.md. |
| 0.28.1 | Use instead of 0.28.0: apps that turn the files, AI and payments HTTP APIs off (platform.engine.data-plane-enabled: false) start again. Full note: docs/upgrades/0.28.1.md. |
| 0.30.0 | Spine is now Claspine: install @grahmur-org/claspine-client (was spine-client) and @grahmur-org/eslint-plugin-claspine, use the image api.claspine.com/claspine/engine, and point your build at api.claspine.com. Maven coordinates, settings and tables are unchanged. New, optional: direct messages (email and WhatsApp to an address, without an account). Full note: docs/upgrades/0.30.0.md. |
| 0.31.0 | Engine: mount your message templates at /config/notifications (they could not be loaded before) and give the service key the messages scope. New Claspine Atlas projects start with a test key. Full note: docs/upgrades/0.31.0.md. |
Keep it safe
- Always take a database backup before starting a new version in production.
- Pin exact versions in your build, so upgrades happen only when you choose.
- Never query Claspine’s tables from your own code; use the capability APIs. Your build will flag it.
Claspine stores the values encrypted, never shows them again in full, and never sends them to your app or SDK.
If something goes wrong
- Startup says tables exist that were not created by Claspine.
- Your database already has tables with Claspine’s names. Give Claspine its own database or schema (see the isolation guides) or rename your tables.
- Startup on Firestore says the database holds platform data under the pre-0.22 names.
- Copy each platform_… collection to spine_platform_… before starting 0.22.0, or contact support.