Guide 04
Organizations
Grouping members and applications so access can be granted by team rather than one person at a time.
Route: /organization · Menu: Management › Organizations · Page permission: organization:R
An organization bundles members and applications. Every member of an organization inherits access to every application attached to it. That inheritance is what makes an organization worth maintaining: adding one application to a 40-person team is one write, not forty.
Organizations have no lifecycle status. There is no activate/deactivate. The only changes are create, update and delete — so you will find no status column, no status filter and no status-dependent buttons here.
What you can do here
- As an administrator, I want to see every organization and how big it is, so that I can manage group membership.
- As an administrator, I want to create a group and populate it in one pass, so that setup is not a two-visit job.
- As an administrator, I want to add or remove members and applications from a group, so that access follows re-orgs.
- As an administrator, I want to delete groups that are no longer used, so that the list stays honest.
1. The organization list
1.1 Columns
| Column | Notes |
|---|---|
| Name | Display name. |
| Description | - when empty. |
| Application count | - when zero, otherwise an icon whose tooltip carries the count. Count only — open the detail for the list. |
| Member count | Same treatment. |
| Created At | Hidden by default. |
| Created By | Hidden by default. |
| Updated At | Hidden by default. |
| Updated By | Hidden by default. |
| Action | Detail / Copy / Delete, filtered by permission. |
1.2 Filtering and sorting
| Filter | Type | Notes |
|---|---|---|
| Keyword | Text | Fuzzy match on name and description. |
| Applications | Multi-select | Requires application:R; hidden without it. Multiple values are OR. |
| Members | Multi-select | Requires member:R; hidden without it. Multiple values are OR. |
| Sort | — | Name, created time, updated time. Default: created time, newest first. |
Keyword, applications and members combine with AND. Empty means “all”.
1.3 Paging
10 / 20 / 50 / 100 per page, default 20. The footer reads 共 {total} 筆; organizations have no quota so no upper limit is shown.
1.4 Row shortcuts
Double-click a row to open its detail. Single-clicking a row body toggles selection once you are already in selection mode.
2. Row actions
| Action | Permission | Notes |
|---|---|---|
| Detail | page access | |
| Copy | organization:C | Opens the create wizard seeded from this organization. |
| Delete | organization:D | No status precondition and no force-delete recovery path. |
Edit is not offered in the list. Renaming happens inline on the detail page — see §5.
3. Creating an organization
Route: /organization/create · Permission: organization:C
A two-step wizard plus a result step.
3.1 Step 1 — Information
| Field | Required | Rules |
|---|---|---|
| Name | Yes | 1–50 characters. |
| Description | No | Up to 500 characters. |
3.2 Step 2 — Access
| Field | Required | Notes |
|---|---|---|
| Members | No | Multi-select with search and infinite scroll. |
| Applications | No | Multi-select with search and infinite scroll. |
Both are optional — an empty organization is a valid thing to create.
3.3 Step 3 — Result
The organization is created first, then member and application associations are attached one by one on a best-effort basis. Only a failure to create the organization itself turns the result page red; an individual association that fails does not abort the rest.
4. Copying an organization
Entries: list row → /organization/create/:orgId · detail toolbar → /organization/:orgId/create · Permission: organization:C
| Field | Seeded value |
|---|---|
| Name | <source name> - Copy, numbered on collision (Copy1, Copy2, …). |
| Description | Copied as-is. |
| Members | The source’s members. |
| Applications | The source’s applications. |
Because an organization’s members and applications come back with the organization record itself, copying needs no extra cross-feature permissions — if you can read the source, you can read its associations.
5. Editing an organization
Route: the detail page, inline edit · Permission: organization:U
The pencil icon at the top right of the title card switches to save/cancel. The whole edit affordance is hidden without organization:U.
| Field | Required | Rules |
|---|---|---|
| Name | Yes | 1–50 characters. |
| Description | No | Up to 500 characters. |
Created time, updated time and creator stay visible while you edit — they simply remain read-only.
The name is checked for duplicates as you type, excluding this organization, so saving an unchanged name never trips the check.
6. Managing members and applications
The detail page carries two cards — Members first, then Applications. Each has a manage button (the “more” icon); clicking anywhere in the card’s chip area or title row opens the same dialog.
6.1 The manage dialog
| Mode | Behaviour |
|---|---|
| View | Shows the currently associated items. The search box filters them locally — no server request. |
| Edit | Loads the candidate list (search + infinite scroll) with checkboxes. Requires organization:U; without it the action buttons are not rendered and the dialog is view-only. |
- Open the card’s manage button.
- Switch to Edit.
- Tick and untick candidates.
- Select Confirm.
If nothing actually changed, the dialog just closes — no request is sent.
6.2 What confirming really does
Organizations have no separate add/remove endpoints. Confirming sends the complete new list as a replacement. The screen updates optimistically and, if the write fails, rolls back to what it was and keeps the dialog open so you can retry. Either way the record is re-fetched afterwards, so what you end up looking at is what the server holds.
6.3 Card visibility
| Card | Requires | Without it |
|---|---|---|
| Members | member:R | The whole card is hidden. |
| Applications | application:R | The whole card is hidden. |
7. Deleting an organization
From the detail toolbar, with organization:D. Confirm the dialog; the page slides back to the list.
There is no status precondition — any organization can be deleted — and no force-delete path. If the delete is refused, resolve the cause and try again.
Deleting an organization removes the inherited access its members had through it. Direct grants on those members are untouched.
8. Bulk work
Organizations support Export, multi-select batch delete and CSV import in both create and modify modes. Import can attach members and applications at the same time as creating the organization.
Two organization-specific notes:
- Batch delete is the only batch action (there is no status to change), and it has no force-delete recovery path.
- In create mode, import rejects a duplicate organization name — both within the file and against existing records. This check does not apply in modify mode.
Full instructions: 09 · Bulk Operations.
9. Permission summary
| Task | Permission |
|---|---|
| View list and detail | organization:R |
| Create / copy / import | organization:C |
| Edit name and description | organization:U |
| Add or remove members / applications | organization:U |
| Delete | organization:D |
| See the Members card and filter | member:R |
| See the Applications card and filter | application:R |
Next
- Publish the services this group should reach: 03 · Applications
- Do it for many groups at once: 09 · Bulk Operations