> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Midaz Helm upgrade checklist

> Follow best practices and verification steps before, during, and after a Midaz Helm upgrade to ensure safe production rollouts.

## 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](/en/midaz/midaz-production-best-practices) to operate these dependencies with proper security, observability, backups, disaster recovery, and SLOs.

## Best practices

***

### Upgrade order

Always upgrade in this order:

1. Infrastructure (if needed)
2. Midaz Core
3. Plugins (one at a time)

### Test first

Always test upgrades in a staging environment that mirrors production before applying to production.

### Monitor closely

Monitor logs and metrics closely for the first 15-30 minutes after an upgrade.

### Keep backups

Maintain backups of your Helm values and database before major upgrades.

## Upgrade checklist summary

***

| Step                | Command                                                                    | Verified |
| :------------------ | :------------------------------------------------------------------------- | :------: |
| Backup values       | `helm get values <release> -n midaz > backup.yaml`                         |          |
| Check compatibility | Review [compatibility table](/en/platform/helm/helm-version-compatibility) |          |
| Upgrade Midaz       | `helm upgrade midaz ...`                                                   |          |
| Verify Midaz pods   | `kubectl get pods -n midaz`                                                |          |
| Upgrade plugins     | `helm upgrade <plugin> ...`                                                |          |
| Verify plugin pods  | `kubectl get pods -n midaz`                                                |          |
| Check logs          | `kubectl logs -n midaz deployment/<name>`                                  |          |

## Post-upgrade verification

***

### 1. Check pod status

<CodeGroup>
  ```bash Shell theme={null}
  kubectl get pods -n midaz
  ```
</CodeGroup>

All pods should be `Running` and `READY`.

### 2. Verify services

<CodeGroup>
  ```bash Shell theme={null}
  kubectl get svc -n midaz
  ```
</CodeGroup>

### 3. Check the logs

<CodeGroup>
  ```bash Shell theme={null}
  # If using Ledger service (v5.x)
  kubectl logs -n midaz deployment/midaz-ledger

  # If using legacy services
  kubectl logs -n midaz deployment/midaz-onboarding
  kubectl logs -n midaz deployment/midaz-transaction

  # Check RabbitMQ logs (important for v4.x+ upgrades)
  kubectl logs -n midaz statefulset/midaz-rabbitmq

  # Check CRM logs (if enabled)
  kubectl logs -n midaz deployment/midaz-crm
  ```
</CodeGroup>

### 4. Verify ingress routing (v5.x with Ledger)

<CodeGroup>
  ```bash Shell theme={null}
  kubectl get ingress -n midaz
  kubectl describe ingress midaz-onboarding -n midaz
  kubectl describe ingress midaz-transaction -n midaz
  ```
</CodeGroup>
