Skip to content

Services Document Flow

Subscriptions use SubscriptionStatus and invoices use SubscriptionInvoiceStatus. Lifecycle controls are inline buttons on the list and detail pages — there is no MudMenu Actions list. Decline Rejection / Decline Cancellation do not apply.

Hub: Target Document Flow. Overview: Services.

  • Draft / Trialing
  • Active
  • Suspended
  • Cancelled / Expired
Subscription (`SubscriptionStatus`)

#Statuses

Draft, Active, Suspended, Cancelled, Expired, Trialing

Domain: Activate, Suspend, Resume, Cancel, Expire, Renew, ScheduleCancelAtPeriodEnd().

Subscription lifecycle — Activate, Suspend, Cancel, Expire

flowchart TB
  Start((Create)) --> Draft[Draft]
  Draft -->|Activate| Active[Active]
  Active -->|Suspend| Suspended[Suspended]
  Suspended -->|Resume| Active
  Active -->|Cancel| Cancelled[Cancelled]
  Active -->|Expire| Expired[Expired]

  class Start egkStart
  class Draft egkDraft
  class Active egkSuccess
  class Suspended egkWarn
  class Cancelled,Expired egkTerminal
Control (UI) Surface Behavior
Activate / Suspend / Resume / Cancel Subscriptions list (inline) Domain transition methods
Cancel at period end Subscription detail POST .../cancel-at-period-end; disabled when CancelAtPeriodEnd already true; chip “Cancels at period end”

ScheduleCancelAtPeriodEnd sets CancelAtPeriodEnd=true and AutoRenew=false; cancel applies on the next billing boundary (GenerateInvoice / OpenNextPeriod).

Subscription invoice (`SubscriptionInvoiceStatus`)

Draft, Posted, Paid, PartiallyPaid, Overdue, Cancelled

UI mirrors the same values (SubscriptionInvoiceStatusUi). No ETA-style Approve/Reject menu on invoices.

#Post-action sync

List and detail refresh after activate/suspend/resume/cancel or cancel-at-period-end. Failed calls leave prior status and flags.

#Scenarios

Scenario Result
Activate draft Active
Cancel at period end Flag set; status may stay Active until period end
Already scheduled cancel Button disabled
Expect MudMenu Submit Not implemented

Reconnecting to the server…

Please wait, or reload the page.