{{ if .Error }} {{ end }}

Enrollment: {{ .OrgName }}

{{ .OrgSlug }} Owner: {{ if .OrgOwnerPersonID }} {{ if .OrgOwnerName }}{{ .OrgOwnerName }}{{ else }}{{ .OrgOwnerPersonID }}{{ end }} {{ else }} none {{ end }}
← Back to organizations

Billing summary

{{ if .BillingSummary.HasAccount }} Full billing → {{ end }}
{{ if not .BillingSummary.HasAccount }}

No billing account exists for this organization yet.

{{ else }}
Subscription
{{ if .BillingSummary.HasSubscription }}
{{ .BillingSummary.SubscriptionStatus }} {{ if .BillingSummary.SubscriptionPeriodEnd }} · renews {{ .BillingSummary.SubscriptionPeriodEnd }} {{ end }} {{ if .BillingSummary.CancelAtPeriodEnd }} · cancels at period end {{ end }}
{{ else }}
No subscription
{{ end }}
Latest invoice
{{ if .BillingSummary.HasInvoice }}
{{ if .BillingSummary.LatestInvoicePaid }} paid {{ else }} unpaid {{ end }} {{ .BillingSummary.LatestInvoiceAmountDue }} · {{ .BillingSummary.LatestInvoiceDate }}
{{ else }}
No invoices issued
{{ end }}
Outstanding balance
{{ if gt .BillingSummary.OutstandingBalance 0 }} {{ .BillingSummary.OutstandingBalanceFormatted }} across open invoices {{ else }} 0 no open invoices {{ end }}
{{ end }}

Resource Pools

{{ if .PoolMissing }} {{ else if eq (len .Pools) 0 }}

No pools for this organization.

{{ else }} {{ range .Pools }}

{{ .PoolName }} {{ .PoolType }} {{ if eq .Status "active" }} {{ .Status }} {{ else }} {{ .Status }} {{ end }}

{{ if ne .Status "active" }}

This pool is not active; it is not delivering entitlements.

{{ end }} {{ if .HasAttachment }}

{{ .LadderKey }} {{ .TierName }} at rank {{ .Rank }} · since {{ .ActivatedAt }}

{{ else }}

No active plan

{{ end }}
{{ if gt (len .Usage) 0 }}
{{ range .Usage }} {{ end }}
Resource Used Limit
{{ .ResourceKey }} {{ .Used }} {{ .Limit }}
{{ end }}
{{ end }} {{ end }} {{ if .PoolMissing }} {{ else if .ProductsError }} {{ else if eq (len .IssuanceProducts) 0 }}
No published products yet — publish a product to enable issuance.
{{ else }}

Issue grant

{{ $issueActive := and (eq $.FormName "issue") (eq $.FormPoolID "") }}

Records the grant and updates this organization's entitlements right away. If the product occupies a plan-ladder position, the pool moves to it; leave Valid until blank for an open-ended grant.

{{ $formErr := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "" }} {{ with $formErr }} {{ end }}
{{ $err := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "product_id" }} {{ with $err }}
{{ . }}
{{ end }}
{{ $err := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "quantity" }} {{ with $err }}
{{ . }}
{{ end }}
Above 1 only for per-seat products — most products deliver one position.
{{ $err := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "valid_until" }} {{ with $err }}
{{ . }}
{{ end }}
{{ $err := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "reason" }} {{ with $err }}
{{ . }}
{{ end }}
{{ $err := fieldErr $.FormName "issue" $.FormPoolID "" $.FieldErrors "description" }} {{ with $err }}
{{ . }}
{{ end }}
{{ $superseders := false }} {{ range $.IssuanceProducts }}{{ if .SupersedesSubscription }}{{ $superseders = true }}{{ end }}{{ end }} {{ if $superseders }} {{ end }}

Issuing records the grant and updates entitlements now. Connected services (for example forum or site access) apply the change in the background and can retry or fail; the overview's system panel shows queued work for services that use the delivery queue.

{{ end }} {{ range $pool := .Pools }} {{ if $pool.HasAttachment }}

Extend current tier

Issue a new grant on the current tier ({{ $pool.TierName }}) without changing position. Set Expires at to extend a trial; leave it empty for an open-ended comp or gift period.

{{ if not $pool.HasGrantDelivery }}

Nothing to extend right now — this pool's current delivery is not grant-backed (it may be subscription-billed or ended). Use Issue grant to grant a position instead.

{{ else }} {{ $extendActive := and (eq $.FormName "extend") (eq $.FormPoolID $pool.PoolID) }}
{{ $err := fieldErr $.FormName "extend" $.FormPoolID $pool.PoolID $.FieldErrors "reason" }} {{ with $err }}
{{ . }}
{{ end }}
{{ $err := fieldErr $.FormName "extend" $.FormPoolID $pool.PoolID $.FieldErrors "valid_until" }} {{ with $err }}
{{ . }}
{{ end }}
{{ end }}
{{ end }} {{ end }} {{ if .GrantsError }} {{ end }} {{ if gt (len .Grants) 0 }}

Grants

One row per grant ever issued — this is the issuance ledger, not the delivery record. Delivery state is derived from the pool provision each grant created: at most one grant per ladder position is Live at a time; the rest are history.

{{ range .Grants }} {{ end }}
Product Reason Delivery Qty Activated Ended Actions
{{ if .ProductName }}{{ .ProductName }}{{ else }}—{{ end }} {{ .GrantReason }} {{ if eq .DeliveryState "live" }} Live {{ if .ExtendsLabel }}
extends {{ .ExtendsLabel }}{{ end }} {{ else if eq .DeliveryState "superseded" }} Superseded {{ if .ReplacedByLabel }}
replaced by {{ .ReplacedByLabel }}{{ end }} {{ else }} Inactive {{ end }}
{{ .Quantity }} {{ if .ActivatedAt }}{{ .ActivatedAt }}{{ else }}—{{ end }} {{ if .EndedAt }}{{ .EndedAt }}{{ else }}—{{ end }} {{ if eq .DeliveryState "live" }} {{ if eq .GrantReason "default" }} System-managed {{ else }} {{ end }} {{ end }}
{{ end }}

Members

{{ if .MembersError }} {{ end }} {{ if eq (len .Members) 0 }}
No members enrolled.
{{ else }}
{{ range .Members }} {{ end }}
Name Email Role Joined
{{ .DisplayName }} {{ .Email }} {{ .RoleName }} {{ .JoinedAt }}
{{ end }}

Transition History

{{ if .TransitionsError }} {{ end }} {{ if eq (len .Transitions) 0 }}

No transitions recorded.

{{ else }}
{{ range .Transitions }} {{ end }}
Type From To Actor Reason Effective
{{ .TransitionType }} {{ .FromRank }} {{ .ToRank }} {{ if .ActorName }}{{ .ActorName }}{{ else }}{{ .ActorType }}{{ end }} {{ .Reason }} {{ .EffectiveAt }}
{{ end }}