Quick Start
1. Check the prerequisites
- Helm v3.8+ installed and available (helm version).
- Kubernetes v1.20+ cluster running.
- Backup your existing installation.
2. Identify your current version
3. Run the upgrade command
4. Verify the upgrade
Version Compatibility
| Component | v3.x | v4.x | v5.x |
|---|---|---|---|
| Kubernetes | 1.20+ | 1.20+ | 1.20+ |
| Helm | 3.8+ | 3.8+ | 3.8+ |
| PostgreSQL | 13+ | 13+ | 13+ |
| MongoDB | 4.4+ | 4.4+ | 4.4+ |
| Valkey | 7.x | 7.x | 7.x |
Choose your migration path
Select your current Helm chart version to see the relevant migration steps:
- v4.x → v5.x
- v3.x → v4.x
- v3.x → v5.x
Migrating from v4.x to v5.x
Pre-upgrade checklist
1
Backup existing Helm releases:
2
Decision required: Choose your deployment strategy (Ledger service or legacy Onboarding/Transaction).
3
If migrating to Ledger service, prepare new secrets with module-specific prefixes.
4
Schedule a maintenance window.
Breaking changes in v5.x
New Ledger service available
Starting from version 5.0, the Ledger service is available (ledger.enabled: false by default). When enabled, this service combines the functionality of both onboarding and transaction modules into a single deployment.Default values:| Setting | v4.x (before) | v5.x (after) |
|---|---|---|
| ledger.enabled | N/A | false |
| onboarding.enabled | true | true (auto-disabled when ledger is enabled) |
| transaction.enabled | true | true (auto-disabled when ledger is enabled) |
- The
midaz-onboardingandmidaz-transactiondeployments will be removed. - A new
midaz-ledgerdeployment will be created. - Ingresses will automatically redirect to the Ledger service (DNS compatibility maintained).
- Environment variables and secrets structure changes (module-specific prefixes).
App version bump
Midaz has been bumped to v3.5.1.Check the app changelog for the complete list of changes.
Migration options
Option 1: Keep using Onboarding and Transaction (gradual migration)
Add the following to your values override to maintain the current behavior:Option 2: Run all services simultaneously (testing/migration period)
Use the hiddenmigration.allowAllServices flag to run all three services during the migration:Option 3: Migrate to Ledger (recommended)
Accept the new architecture and migrate to the unified Ledger service:1
Before upgrading: Ensure your databases are ready (same databases, new environment variable names).
2
Update secrets: Create new secrets with module-specific prefixes (see Ledger Configuration Reference below).
3
Upgrade: Run helm upgrade with the new chart version.
4
Verify: Check that the Ledger service is healthy and ingresses are working.
New features in v5.x
Unified Ledger service
A new Ledger service that combinesonboarding and transaction modules into a single deployment.Key characteristics:- Single HTTP endpoint (port 3000 by default)
- Separate database configurations for each module
- Shared Redis and RabbitMQ connections
- New Balance Sync Worker for background processing
Ingress redirection to Ledger
When Ledger is enabled, existing ingresses automatically redirect traffic to the Ledger service, maintaining DNS compatibility.| ledger.enabled | migration.allowAllServices | onboarding ingress target | transaction ingress target |
|---|---|---|---|
| false | false (default) | midaz-onboarding | midaz-transaction |
| true | false (default) | midaz-ledger | midaz-ledger |
| true | true | midaz-onboarding | midaz-transaction |
CRM service integration
The CRM service is now available as an integrated component, moving frommidaz-plugins to midaz namespace.Migration from plugin-crm:1
Deploy the new CRM in the midaz namespace:
2
Migrate your data from the old MongoDB to the new one (if using separate databases).
3
Update your ingress/DNS to point to the new CRM service.
4
Remove the old plugin-crm release from midaz-plugins namespace.
Upgrade command
Rollback procedure
Common issues
Ledger service fails to start- Verify that all module-specific environment variables and secrets are configured with the new prefixes (
DB_ONBOARDING_*,DB_TRANSACTION_*, etc.).
- Ensure
ledger.enabled: trueandmigration.allowAllServicesis not set totrue.
- Create new secrets with module prefixes:
DB_ONBOARDING_PASSWORDinstead ofDB_PASSWORDDB_TRANSACTION_PASSWORDinstead ofDB_PASSWORDMONGO_ONBOARDING_PASSWORDinstead ofMONGO_PASSWORDMONGO_TRANSACTION_PASSWORDinstead ofMONGO_PASSWORD
Ledger service configuration reference
The Ledger service uses module-specific database configurations:
External secrets support
Deployment flags reference
| Flag | Default | Description |
|---|---|---|
| ledger.enabled | false | Enables the unified Ledger service |
| onboarding.enabled | true | Enables onboarding (auto-disabled when ledger is enabled) |
| transaction.enabled | true | Enables transaction (auto-disabled when ledger is enabled) |
| migration.allowAllServices | false | Hidden flag to allow all services simultaneously |
Production recommendation
We do not recommend using the Midaz Helm chart’s default dependencies (databases, cache, and message broker) in production environments. For production-grade deployments, follow our best practices to operate these dependencies with proper security, observability, backups, disaster recovery, and SLOs.
Post-upgrade verification
1. Check pod status
Running and READY.
2. Verify services
3. Check the logs
4. Verify ingress routing (v5.x with Ledger)
General rollback procedure
If you encounter issues after any upgrade:

