Team Management and Hierarchy
New .7.x
This page documents team creation, organizational hierarchy visualization, entity assignment, role-based permissions, Azure AD sync, emergency contacts, and distributed-team support for Mapify Ownership and Team Management.
Back to Ownership and Team Management
What is Team Management?
Team Management in Mapify allows administrators to:
- Create and define teams – Establish groups (e.g., "Integration Services", "API Team", "Data Platform")
- Manage membership – Add/remove members, assign roles (Owner, Contributor, Viewer)
- Visualize hierarchy – See team → members → owned entities structure
- Assign entities – Bulk assign integrations, systems, services to specific teams
- Control permissions – Define who can create teams, assign ownership, and modify settings
- Track external partners – Tag and manage vendor-owned systems separately
Creating and Configuring Teams
Teams are managed through Mapify > Administration > Team Management (admin access required).
Team Creation Workflow
- Navigate to Mapify > Administration > Team Management
- Click Create New Team
- Fill in required fields: team name, color, description
- Add team members (search by name, email, or Azure AD group)
- Set member roles
- Click Save
Team Definition Form (HTML)
<form aria-label="Create new team" class="team-form">
<div class="form-group">
<label for="team-name">Team Name <span class="required" aria-label="required">*</span></label>
<input type="text" id="team-name" name="teamName" aria-required="true"
placeholder="e.g., Integration Services" maxlength="100">
<small class="form-help">Unique name (max 100 characters)</small>
</div>
<div class="form-group">
<label for="team-color">Team Color <span class="required" aria-label="required">*</span></label>
<input type="color" id="team-color" name="teamColor" value="#007bff" aria-required="true">
<small class="form-help">Used for visual identification in graph (ensure WCAG AA contrast)</small>
</div>
<div class="form-group">
<label for="team-email">Team Email</label>
<input type="email" id="team-email" name="teamEmail"
placeholder="integration-services@company.com">
</div>
<div class="form-group">
<label>
<input type="checkbox" id="external-partner" name="externalPartner"
aria-describedby="external-help">
<i class="fas fa-handshake" aria-hidden="true"></i> External Partner/Vendor Team
</label>
<small id="external-help" class="form-help">
Check if this team represents an external partner or vendor
</small>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">
<i class="fas fa-check" aria-hidden="true"></i> Create Team
</button>
<button type="button" class="btn btn-secondary">
<i class="fas fa-times" aria-hidden="true"></i> Cancel
</button>
</div>
</form>
Team Member Roles
| Role | Permissions | Typical Use |
|---|---|---|
| Owner | Edit settings, add/remove members, assign entities, delete team | Team lead, manager, primary contact |
| Contributor | Assign entities, update entity metadata, view all team-owned entities | Active team members managing integrations |
| Viewer | View team-owned entities and metadata (read-only) | Auditors, managers, stakeholders needing visibility |
Organizational Hierarchy Visualization
Mapify provides three hierarchy view modes to show team structure and entity ownership.
View Modes
1. Team-Centric View — Start from teams, drill down to members and entities:
Company
├── Integration Services (24 entities)
│ ├── John Smith (Owner) – 12 integrations
│ ├── Jane Doe (Contributor) – 8 integrations
│ └── Bob Wilson (Contributor) – 4 integrations
├── API Platform Team (18 entities)
│ ├── Alice Johnson (Owner) – 10 APIs
│ └── Carlos Martinez (Contributor) – 5 APIs
└── External Partners (6 entities)
├── SAP Support – 3 integrations
└── Salesforce Consulting – 3 integrations
2. Person-Centric View — Start from individual owners, drill down to their entities:
John Smith (Integration Services)
├── SAP to Salesforce Sync
├── Customer Data ETL
└── ... (10 more)
3. Entity-Centric View — Entities grouped by team:
Integration Services
├── SAP to Salesforce Sync (Owner: John Smith)
├── Customer Data ETL (Owner: John Smith)
└── ... (22 more)
Hierarchy Navigation UI (HTML)
<div class="hierarchy-view" role="navigation" aria-label="Organizational hierarchy">
<div class="view-mode-selector" role="toolbar" aria-label="Hierarchy view mode">
<button class="btn-view-mode active" data-mode="team" aria-pressed="true">
<i class="fas fa-sitemap" aria-hidden="true"></i> By Team
</button>
<button class="btn-view-mode" data-mode="person" aria-pressed="false">
<i class="fas fa-user" aria-hidden="true"></i> By Person
</button>
<button class="btn-view-mode" data-mode="entity" aria-pressed="false">
<i class="fas fa-project-diagram" aria-hidden="true"></i> By Entity
</button>
</div>
<ul role="tree" aria-label="Organizational hierarchy" class="hierarchy-tree">
<li role="treeitem" aria-expanded="true">
<button aria-expanded="true" class="tree-expand"
aria-label="Collapse Integration Services">
<i class="fas fa-folder-open" aria-hidden="true"></i>
</button>
<span>Integration Services</span>
<span class="entity-count badge">24 entities</span>
<ul role="group">
<li role="treeitem" aria-expanded="false">
<button aria-expanded="false" class="tree-expand"
aria-label="Expand John Smith">
<i class="fas fa-folder" aria-hidden="true"></i>
</button>
<img src="/avatars/john.smith.jpg" alt="John Smith" class="member-avatar-small">
<span>John Smith</span>
<span class="entity-count badge">12 entities</span>
</li>
</ul>
</li>
</ul>
</div>
Keyboard navigation: → expand node, ← collapse node, ↑↓ navigate siblings, Enter select.
Assigning Entities to Teams
Individual Assignment
- Click any entity node in Mapify graph
- Open Entity Details panel (right sidebar)
- Click Ownership section → Edit
- Select team from dropdown, select owner from dropdown
- Click Save
Bulk Assignment
For assigning multiple entities at once:
- Select multiple nodes (Ctrl+Click or drag selection)
- Right-click → Bulk Assignment
- In bulk dialog: choose team, choose owner, preview affected entities
- Confirm — optionally overwrite existing assignments
<div class="bulk-assign-dialog" role="dialog" aria-labelledby="bulk-title">
<h2 id="bulk-title">Assign Ownership to 15 Entities</h2>
<div class="form-group">
<label for="bulk-team">Assign to Team</label>
<select id="bulk-team" aria-label="Select team">
<option value="">Select team...</option>
<option value="integration-services">Integration Services</option>
<option value="api-platform">API Platform Team</option>
</select>
</div>
<div class="form-group">
<label for="bulk-owner">Assign to Owner</label>
<select id="bulk-owner" aria-label="Select owner">
<option value="">Select owner...</option>
<option value="john.smith">John Smith</option>
<option value="jane.doe">Jane Doe</option>
</select>
</div>
<div class="overwrite-warning" role="alert">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<strong>Note:</strong> 8 of 15 entities already have an owner. Check "Overwrite existing" to reassign.
<label>
<input type="checkbox" id="overwrite-existing"> Overwrite existing assignments
</label>
</div>
<div class="affected-entities-preview">
<h3>Affected Entities (15)</h3>
<ul aria-label="Entities to be assigned">
<li>SAP Finance Integration (currently: unassigned)</li>
<li>CRM Sync Service (currently: Old Owner)</li>
</ul>
</div>
<div class="dialog-actions">
<button type="button" class="btn btn-primary">
<i class="fas fa-check" aria-hidden="true"></i> Assign Ownership
</button>
<button type="button" class="btn btn-secondary">Cancel</button>
</div>
</div>
Permissions Model
| Action | Admin | Team Owner | Contributor | Viewer |
|---|---|---|---|---|
| Create Team | Yes | No | No | No |
| Delete Team | All | Own team | No | No |
| Edit Team Settings | All | Own team | No | No |
| Add/Remove Members | All | Own team | No | No |
| Assign Entity to Team | All | All entities | Unassigned only | No |
| Reassign Entity | All | Own team | Own entities | No |
| View Hierarchy | All | All | All | All |
| Export Ownership Data | All | All | Own team | Own team |
Permissions enforced at both UI level (hide restricted actions) and API level (reject unauthorized requests):
[HttpPost, Route("api/mapify/teams")]
public async Task<IActionResult> CreateTeam([FromBody] CreateTeamRequest request)
{
if (!User.IsInRole("MapifyAdmin"))
return Forbid("Only Mapify Admins can create teams.");
if (string.IsNullOrWhiteSpace(request.TeamName))
return BadRequest("Team name is required.");
var team = await _teamService.CreateTeamAsync(request);
return Ok(new { Success = true, Message = $"Team '{team.Name}' created.", TeamId = team.Id });
}
Azure AD / LDAP Integration
For enterprise deployments, sync team membership automatically:
{
"AzureAd": {
"TenantId": "your-tenant-id",
"ClientId": "your-client-id"
},
"TeamSync": {
"Enabled": true,
"SyncSchedule": "0 2 * * *",
"GroupMappings": [
{ "AzureAdGroup": "IntegrationServices", "MapifyTeam": "Integration Services", "DefaultRole": "Contributor" },
{ "AzureAdGroup": "ApiPlatformTeam", "MapifyTeam": "API Platform Team", "DefaultRole": "Contributor" }
]
}
}
Emergency Contact Management
For critical production resources, define emergency contacts for 24/7 incident response.
Emergency Contact Fields
| Field | Type | Purpose |
|---|---|---|
EmergencyContact |
Text | Primary on-call contact name |
EmergencyPhone |
Phone | 24/7 emergency phone number |
BackupContact |
Text | Secondary escalation contact |
OnCallSchedule |
URL | Link to on-call rotation schedule |
EscalationPath |
Text | "Step 1: John → Step 2: Jane → Step 3: Manager" |
Governance requirements:
- Mandatory for all production and critical-tagged entities
- Quarterly validation — verify contacts are current and reachable
- Backup owner required — single-owner critical resources are a governance gap
Distributed Teams and External Partners
Multi-Timezone Teams
For distributed teams across time zones, track additional metadata:
| Field | Example | Purpose |
|---|---|---|
TeamTimezone |
"America/New_York" | Member's local timezone |
TeamLocation |
"New York" | Geographic location |
Display: Node tooltip shows primary owner's local time (e.g., "9:30 AM ET") so users avoid contacting team members outside business hours.
External Partner Teams
Create separate Mapify teams for external vendors:
- Flag: Enable "External Partner/Vendor Team" checkbox in team creation form
- Visual: Orange border (#e65100) + badge on all partner-owned entities
- Contact tracking:
PartnerName,PartnerSupportEmail,PartnerSLAcustom metadata fields - Security use case: Security teams can instantly filter and identify all external dependencies
Related Topics
- Ownership and Team Management – Feature overview
- Visual Display and Avatars – Avatars, color-coding, filter UI
- Unassigned Entities and Contact Actions – Governance, quick contact, partners
- Saved Views
- Repository Model