Skip to content

Organization Approval

New organizations created through signup can be held in a pending state until a staff member reviews and approves them. This gives Servala a manual gate before any billing records are created or any resources can be provisioned. This page explains how the approval flow works, how to configure it, and how staff process the review queue.

How it works

Every organization has an is_approved flag. Organizations created directly (for example through the API or by staff) default to approved. Organizations created through the signup form are created pending (is_approved = False) unless approval is waived for that signup (see Configuration).

Pending organizations

A pending organization is a placeholder. It exists in the database with its owner membership, but:

  • It has no Odoo records: no company, no invoice contact, no sale order.
  • It cannot be used: the dashboard and all organization pages show an "awaiting approval" screen instead of the normal interface.
  • The billing details entered at signup are stashed, not applied. They are serialized into the organization's pending_billing_data and replayed only on approval.

A support ticket is opened automatically when a pending organization is submitted, so the review queue is visible to the team.

A user may have only one pending organization at a time. Attempting to create a second one while the first is still under review is refused.

Approval

When a staff member approves an organization, the portal:

  1. Creates or links the Odoo billing records (see link modes).
  2. Provisions the sale order and writes the trial window and GTC acceptance to the Odoo chatter, plus a note recording who approved it.
  3. Redeems any voucher that was stashed at signup.
  4. Sets is_approved = True and clears pending_billing_data.
  5. Emails the organization owner that the organization is now active.

The whole step is row-locked and idempotent: approving an already-approved organization is a no-op, so a double click cannot create duplicate Odoo records.

By default, approval replays the stashed billing data to create fresh Odoo records. Staff can instead link the organization to existing Odoo records, which is useful when the customer already exists in Odoo:

Replay (default)
Create a new company and invoice contact (or reuse an existing invoice contact by ID) from the billing details captured at signup, then create a new sale order.
Link existing sale order
Pin an existing sale order. Its company and invoice partner back the billing entity, and no new sale order is created.
Link existing company
Use an existing company and invoice contact, and create a new sale order for them.

The staff approval screen provides Odoo search helpers to find the sale order, company, and contacts to link.

Rejection

When a staff member rejects an organization, the portal writes a durable audit log entry (the row is about to be removed), emails the owner, and deletes the organization. Because no Odoo or Kubernetes resources exist for a pending organization, nothing external has to be unwound: rejection is a clean delete.

Configuration

Approval is required by default for signups. It is waived (the organization is created already approved) when either of these applies:

Origin waiver
The Organization Origin used for the signup has Skip approval enabled. Use this for trusted signup paths, such as a marketplace or a partner-specific origin, where every organization should be auto-approved.
Voucher waiver
The voucher redeemed at signup has Skip approval enabled. Use this to hand a specific customer a code that bypasses the queue.

Both flags are set in Django Admin, on the origin and voucher respectively. If neither applies, the organization goes into the pending queue.

Vouchers and approval

Vouchers serve two purposes at signup: they assign a limit profile (for example different trial terms), and they can optionally waive approval via Skip approval.

  • A plain voucher (no skip approval): the organization still needs manual approval. The voucher is stashed and redeemed when the organization is approved, and the redemption is attributed to the organization owner.
  • A skip-approval voucher: the organization is created approved immediately and the voucher is redeemed at signup.

Processing the review queue

Staff review pending organizations in the staff area:

  1. Open the organization list and filter by approval status (pending). Pending organizations are highlighted in the list.
  2. Open a pending organization to see its stashed billing details, resolved into a human-readable form (company, address, country, and state names) so you can see what would be created or linked. This display is resilient to Odoo being unavailable.
  3. Choose an action:
    • Approve with the default (replay) mode, or link to an existing Odoo sale order or company.
    • Reject with an optional reason, which is included in the owner notification and the audit log.

After approval the owner receives the activation email and can start using the organization. After rejection the organization is gone and the owner is notified.

What the user sees

The signup and approval experience from the end-user side is documented in the user guide under Sign Up and Login.