Skip to content

Lifecycle Statuses

Every meaningful entity in the Console has a status. Statuses are not free-form — each entity has a fixed set of values and a fixed set of transitions. This page is the reference.

Customer

StatusMeaningReachable from
activeNormal operating state.suspended (via Reactivate)
suspendedSign-in blocked for all of the customer's users. Reason required.active (via Suspend)
churnedThe customer has left. Data retained per policy. Reason required.active, suspended (via Churn)

A customer with non-deleted tenants cannot be deleted — you must delete the tenants first.

Tenant

StatusMeaningReachable from
provisioningBeing created on the target instance.initial state
activeOperating normally.provisioning, suspended (via Resume)
suspendedPaused; users cannot sign in.active (via Suspend)
deletingTransient — tenant_delete job is purging Mongo data.active, suspended (via Delete)
deletedTerminal. Mongo data purged; PG row retained for audit. Not reversible — use the pre-delete dump for manual recovery.deleting (on job success)

Tenants can be moved between customers (status unchanged) and migrated to a different instance via a migration job. Use Suspend / Resume when you need a reversible pause — Delete is terminal.

Instance

StatusMeaningReachable from
provisioningCreated in the Console but the agent has not reported in yet.initial state
activeHeartbeat current.provisioning
inactiveHeartbeat missing long enough that the Console no longer trusts state.active
decommissionedRetired permanently. Cannot be undone.any (via Decommission)

Instance decommissioning cannot be undone and is gated by a confirmation dialog.

User

The user lifecycle applies to both internal users and customer/portal users.

StatusMeaning
invitedInvite sent; user has not completed acceptance. The invite can be re-sent.
activeSigned in at least once and operational.
deactivatedAccess revoked. Sessions are invalidated. The user cannot sign in until reactivated.

Release

See Releases & Deployments for the full state machine. Summary:

StatusMeaning
draftCreated; not yet deployed.
in_progressFlowing through the pipeline.
pausedAwaiting approval, trigger, or manual resume.
completedAll stages succeeded.
failedA stage failed terminally.
rolled_backAt least one instance was rolled back.
cancelledOperator cancelled the release.
archivedHidden from the default view; purged after 30 days.

Invoice

StatusMeaning
draftBeing prepared. Not yet sent.
issuedSent to the customer.
paidFully paid.
overduePast the due date and not paid. Surfaced with red styling.
voidCancelled; does not count toward customer totals.

Payment

StatusMeaning
pendingRecorded but not yet processed.
processingIn-flight with the payment provider.
completedFunds received and reconciled.
failedProcessing failed.

Discrepancy

The Discrepancies inbox surfaces tenant-level dangling data. Each finding has:

StatusMeaning
openDetected in the current or a recent scan. Needs action.
resolvedOperator purged the dangle (or the worker auto-purged).
discardedOperator dismissed from the current inbox. Not permanent — the next scan re-detects and flips back to open. Discard means "snooze until next audit cycle."
auto_purgedThe worker met strict age and inactivity criteria and purged without operator input.

There are two kinds of discrepancy:

  • Ghost — a PostgreSQL row with no MongoDB data.
  • Orphan — MongoDB data with no PostgreSQL row.

Where statuses appear

  • Badges on list rows and detail headers, colour-coded by severity (green = healthy, orange = warning, red = problem, grey = retired).
  • Banners on detail pages when an entity is in a non-operating state.
  • Filters on every list view, defaulted to the most useful subset (usually "active").