> ## 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 recommended best practices and verification steps before, during, and after a Midaz Helm upgrade to ensure safe, predictable production rollouts.

<Warning>
  CRM and Fees guidance marked legacy on this page applies only to legacy releases that already exist. Midaz v4 deploys the unified Ledger and serves CRM and Fees on `/v2`.
</Warning>

The Helm repository retains a `crm.enabled` workload and the `plugin-fees-helm` chart for older application releases. These are legacy compatibility surfaces, not the Midaz v4 deployment model.

## 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/products/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 databases     | Snapshot PostgreSQL and MongoDB. `helm rollback` cannot undo schema migrations        |          |
| Backup values        | `helm get values <release> -n midaz > backup.yaml`                                    |          |
| Check chart metadata | Review [current Midaz chart metadata](/en/platform/deploy/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}
  # The ledger service (the only application Deployment by default)
  kubectl logs -n midaz deployment/midaz-ledger

  # RabbitMQ
  kubectl logs -n midaz statefulset/midaz-rabbitmq

  # CRM workload: run only when crm.enabled is true
  kubectl logs -n midaz deployment/midaz-crm
  ```
</CodeGroup>

<Note>
  On charts before v7.0.0 you also had `midaz-onboarding` and `midaz-transaction` Deployments. Those services were removed in v7.0.0. On any current chart those names return `NotFound`.
</Note>

### 4. Verify ingress routing

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