Skip to content

Departments

Departments are the durable organizational functions at Provisionr. They own budget, policy scope, and contain one or more Teams. Individuals never belong directly to Departments — they join Teams, which nest into Departments.

prv-{dept}-dept@{domain}

Display name: PRV – Department – {Title}

IDEmailDisplay NameScope
execprv-exec-deptExecutiveBoard, strategy, OKR governance
finprv-fin-deptFinanceFP&A, AR/AP, billing, payroll
hrprv-hr-deptHuman ResourcesJML, policies, recruiting, benefits
legalprv-legal-deptLegalContracts, IP, privacy, compliance
bizprv-biz-deptBusiness OperationsCross-functional ops, capacity planning
opsprv-ops-deptOperationsDelivery governance, staffing, QA
pltprv-plt-deptPlatform EngineeringIdentity, workspace, infra, automation
itprv-it-deptInformation TechnologyEndpoints, helpdesk, networks
engprv-eng-deptEngineeringDelivery engineering, IP, codebases
secprv-sec-deptSecuritySecOps, GRC, vuln management
mktgprv-mktg-deptMarketingBrand, content, demand gen, events
salprv-sal-deptSalesPipeline, accounts, CRM
archiveprv-archive-deptArchive & RecordsRetention, discovery, closeout
PRV – Department – {Title}: {scope summary} | {who participates} | {what they work on}
| Security group (department-level access control + team nesting)
| CEL: {membership rule}

Example:

PRV – Department – Finance: Financial operations and accounting
| Finance team, accounting, billing
| Financial reporting, budgeting, invoicing, compliance
| Security group (department-level access control + team nesting)
| CEL: member.email.matches('^prv-.*-team-fin(?:-[a-z0-9-]+)?@.*$')

Departments contain only Teams — never individual users. Membership is enforced via CEL rules that match the team naming pattern:

member.email.matches('^prv-.*-team-{dept}(?:-[a-z0-9-]+)?@{domain}$')

This ensures only properly-named teams for that department can be members.

  • Security label: ON (departments are used for access scoping)
  • Membership: Only invited (CEL-restricted to matching team groups)
  • External members: OFF
  • Locked: OFF (unless SCIM-managed)
  1. No individuals directly in any prv-*-dept group.
  2. A Team nests into exactly one Department.
  3. Departments are never members of admin Role groups (Segregation of Duties).
  4. Departments should not appear on STRICT drive ACLs — use dedicated viewer role groups instead.
  • Safe: Department as Viewer on internal knowledge TEAM drives (broad read access).
  • Avoid: Department on STRICT drives. Department as Editor on any root.
  • Prefer: A dedicated viewer role group (e.g., prv-ops-role-internal-viewers) on multiple drives instead of binding departments directly.

Create a Department when the function:

  • Owns budget, policy, or platform scope
  • Will contain multiple Teams for at least 12 months
  • Has a distinct compliance or audit surface

If it doesn’t meet these criteria, start as a Team under an existing Department. Promote later if scope grows.

  1. Propose id + scope. Ensure it’s not a sub-team use case.
  2. Get review from Executive + Platform + Security.
  3. Create the group with email/name/description. Label as Security.
  4. Set CEL membership restriction.
  5. Wire baseline drive/view bindings if needed.
  6. Create a starter Team under the new Department.
  • Rename: Update Name/Description only. Email remains canonical. Add an alias for 60-90 days.
  • Scope change: Re-review. Migrate affected Teams via ticket.

Move Teams to their new Department. Lock the old group. Keep for 1 year for audit. Then delete.

MetricTarget
Orphan Teams (0 or >1 Department parent)0
Direct users in any prv-*-dept0
Mover SLA (update department within 1 biz day)>= 98%
Department on STRICT ACLs0 per quarter
Quarterly attestations (owners confirm nested Teams)100%