Skip to main content

WF-114: Multi-OpUnit Access Assignment

Workflow ID: WF-114 Category: Access Management Priority: P1 Last Updated: January 11, 2026


Overview

This workflow handles assigning users to multiple Operating Units (OpUnits) with appropriate cross-unit permissions and consolidated dashboard views.


Trigger Events

  • Admin assigns user to additional OpUnit
  • User transfer between OpUnits
  • Cross-functional team creation
  • Temporary OpUnit access grant

Sequence Diagram


Process Steps

1. Assignment Request

Admin Actions:

  1. Navigate to User Management
  2. Select user to assign
  3. Choose target OpUnit(s)
  4. Select role within OpUnit
  5. Set access duration (permanent/temporary)

Available Roles per OpUnit:

RoleAccess LevelCross-OpUnit View
ViewerRead-onlyOwn data only
MemberRead-writeOwn data only
ManagerFull accessTeam data
AdminAdministrativeAll OpUnit data

2. Permission Resolution

Cross-OpUnit Permission Matrix:

OpUnit A (Viewer) + OpUnit B (Manager) = Consolidated Access
├── OpUnit A: Read-only resources
├── OpUnit B: Full management
└── Cross-view: Aggregated reports (Manager level)

Permission Merge Rules:

ScenarioResult
Same resource, different levelsHigher level wins
Conflicting deny rulesDeny takes precedence
Cross-OpUnit reportsBased on highest role

3. Dashboard Configuration

Consolidated View Setup:

{
"user_id": "usr_123",
"opunit_assignments": [
{
"opunit_id": "op_sales",
"role": "manager",
"granted_at": "2026-01-11"
},
{
"opunit_id": "op_engineering",
"role": "viewer",
"granted_at": "2026-01-11"
}
],
"consolidated_view": {
"enabled": true,
"default_opunit": "op_sales",
"switcher_visible": true
}
}

4. Cross-OpUnit Features

Available Features:

FeatureDescription
OpUnit SwitcherQuick switch between assigned OpUnits
Consolidated ReportsAggregate data across OpUnits
Unified SearchSearch resources across all OpUnits
Cross-OpUnit TasksTasks spanning multiple OpUnits

5. Visibility Rules

Data Isolation:

User RoleCan See
Single OpUnitOnly that OpUnit's data
Multi OpUnit (Viewer)Read-only in each
Multi OpUnit (Manager)Full access per assignment
Cross-OpUnit AdminAll data, all OpUnits

API Endpoints

EndpointMethodPurpose
/api/v1/users/{id}/opunitsGETList user's OpUnits
/api/v1/users/{id}/opunitsPOSTAdd OpUnit assignment
/api/v1/users/{id}/opunits/{opunit_id}PUTUpdate assignment
/api/v1/users/{id}/opunits/{opunit_id}DELETERemove assignment

Request: Add Assignment

POST /api/v1/users/usr_123/opunits
{
"opunit_id": "op_engineering",
"role": "viewer",
"access_type": "permanent",
"permissions": {
"view_resources": true,
"export_data": false,
"manage_team": false
}
}

Response

{
"assignment_id": "assign_456",
"user_id": "usr_123",
"opunit_id": "op_engineering",
"role": "viewer",
"status": "active",
"effective_from": "2026-01-11T00:00:00Z",
"consolidated_permissions": {
"total_opunits": 2,
"highest_role": "manager",
"cross_opunit_view": true
}
}

Notifications

To User

Subject: You've been assigned to [OpUnit Name]

Content:

  • OpUnit name and description
  • Assigned role
  • Available features
  • How to switch between OpUnits

To OpUnit Admin

Subject: New team member in [OpUnit Name]

Content:

  • User details
  • Role assignment
  • Effective date

Error Handling

ErrorCauseResolution
OPUNIT_NOT_FOUNDInvalid OpUnit IDVerify OpUnit exists
ROLE_NOT_ALLOWEDRole exceeds admin scopeEscalate to higher admin
SEAT_LIMIT_EXCEEDEDOpUnit at capacityPurchase more seats
CONFLICT_ASSIGNMENTUser already assignedUpdate existing assignment

Audit Events

EventLogged
opunit.user.assignedUser ID, OpUnit ID, Role, Admin ID
opunit.user.role_changedOld role, New role, Reason
opunit.user.removedUser ID, OpUnit ID, Reason
opunit.permissions.mergedUser ID, Consolidated permissions


Last Updated: January 11, 2026