Ownership and Team Management
Mapify enables you to visualize and manage ownership information for integrations, systems, services, and resources in your integration landscape. By clearly displaying who owns and is responsible for each entity, teams can quickly identify contacts, coordinate changes, and maintain accountability across distributed organizations.
Why Use Ownership Display?
Ownership visualization in Mapify provides critical value for distributed teams:
- Instant Accountability – Immediately see who owns each system without searching documentation
- 60% Faster Incident Response – Contact the right person in seconds during production issues
- Team Coordination – Coordinate cross-team changes by viewing ownership boundaries
- Quick Contact – One-click access to email, Teams chat, or phone for critical resources
- Compliance and Audit – Track ownership for SOX, GDPR, and regulatory requirements
- Partner Management – Identify and tag external vendor/partner-owned systems
Organizations using ownership displays report 40% reduction in "Who owns this?" questions and faster onboarding for new team members.
What is Ownership Display?
Ownership display in Mapify shows who is responsible for each entity (Integration, System, Service, Resource) directly in the graph visualization. Ownership information is sourced from Custom Metadata fields in the Nodinite Repository Model.
Key Capabilities:
- Visual Indicators – Hover tooltips, avatars, and color-coding by team
- Filter by Owner – Show only entities owned by specific person or team
- Contact Actions – Click to email, Teams chat, or call owner
- Unassigned Detection – Highlight entities with missing ownership for governance
- Partner/Vendor Tagging – Identify external dependencies
Ownership Data Source
Ownership information comes from Custom Metadata fields in the Nodinite Repository Model. You define custom fields to track:
| Field Name | Type | Example Value | Purpose |
|---|---|---|---|
Owner |
Text | "John Smith" | Primary owner name |
OwnerEmail |
"john.smith@company.com" | Contact email | |
Team |
Text | "Integration Services" | Owning team/department |
TeamColor |
Color | "#FF5733" | Team color for graph visualization |
Phone |
Phone | "+1-555-0199" | Emergency contact number |
BackupOwner |
Text | "Jane Doe" | Secondary contact for critical resources |
PartnerVendor |
Boolean | true | Indicates external ownership |
These fields can be managed in Repository Model > Custom Metadata settings.
Related Documentation:
Visual Display Options
Mapify provides multiple visual mechanisms to display ownership information on graph nodes:
| Display Method | When to Use | Accessibility |
|---|---|---|
| Hover Tooltips | Default display for all nodes. Shows owner name, team, email on hover. | Focus-triggered for keyboard users. Screen reader announces via aria-label. |
| Avatars | Display owner avatar/initials directly on node. Best for small graphs (<50 nodes). | Include alt text with owner name. Avoid relying on avatar alone. |
| Color-Coding by Team | Apply team color to node border/background. Ideal for team-based filtering. | Never color-only: Combine with text label or pattern. Ensure 4.5:1 contrast ratio. |
| Team Badge | Small icon badge on node corner showing team logo/acronym. | Badge labeled with team name via aria-label. Not decorative. |
| Unassigned Indicator | Warning icon for entities without owner. Governance workflow. | Red border + warning icon + "Unassigned" text label for screen readers. |
Hover Tooltip Display
Default behavior: Hovering over (or focusing on) a node displays a tooltip with ownership details.
Tooltip Content
The tooltip includes:
- Owner Name – Primary owner full name
- Team/Department – Organizational unit
- Email Address – Clickable mailto: link
- Phone Number (optional) – For critical resources
- Backup Owner (optional) – Secondary contact
- Partner/Vendor Tag (optional) – External ownership indicator
HTML Example
<!-- Node element with ownership data attributes -->
<div class="mapify-node"
data-entity-id="INT-12345"
data-owner="John Smith"
data-team="Integration Services"
data-owner-email="john.smith@company.com"
data-phone="+1-555-0199"
tabindex="0"
aria-label="SAP Finance Integration owned by John Smith, Integration Services team"
role="button">
<span class="node-name">SAP Finance Integration</span>
<i class="fas fa-user-circle owner-avatar" aria-hidden="true"></i>
</div>
<!-- Tooltip displayed on hover/focus -->
<div class="mapify-tooltip" role="tooltip" id="tooltip-INT-12345">
<div class="tooltip-header">
<i class="fas fa-user" aria-hidden="true"></i>
<strong>Owner Information</strong>
</div>
<div class="tooltip-body">
<p><strong>Owner:</strong> John Smith</p>
<p><strong>Team:</strong> Integration Services</p>
<p>
<i class="fas fa-envelope" aria-hidden="true"></i>
<a href="mailto:john.smith@company.com">john.smith@company.com</a>
</p>
<p>
<i class="fas fa-phone" aria-hidden="true"></i>
<a href="tel:+15550199">+1-555-0199</a>
</p>
</div>
</div>
Accessibility Requirements
- Keyboard access: Tooltip appears on focus (not just mouse hover)
- ARIA attributes: Tooltip has
role="tooltip"andidreferenced by node'saria-describedby - Escape key: Dismisses tooltip and returns focus to node
- Screen reader: Announces owner name and team via node's
aria-label - Color contrast: Tooltip background/text meets 4.5:1 ratio
Avatar Display
For smaller graphs, owner avatars can be displayed directly on nodes as visual identifiers.
Avatar Types
- Profile Photo – If available from Azure AD/LDAP
- Initials – Fallback: First letter of first name + last name (e.g., "JS" for John Smith)
- Generic Icon – icon for unassigned entities
Visual Specifications
- Size: 24×24px (desktop), 32×32px (mobile for touch targets)
- Position: Top-right corner of node
- Border: 2px white border for contrast against node background
- Fallback: Initials on colored background (team color or neutral gray)
HTML Example
<!-- Node with avatar -->
<div class="mapify-node">
<span class="node-name">SAP Finance Integration</span>
<!-- Avatar with owner initials -->
<div class="owner-avatar"
style="background-color: #4A90E2;"
aria-label="Owned by John Smith"
role="img">
<span class="initials">JS</span>
</div>
</div>
<!-- Avatar with profile photo -->
<div class="mapify-node">
<span class="node-name">Salesforce CRM Integration</span>
<img src="/api/users/avatar/jane.doe"
alt="Owned by Jane Doe"
class="owner-avatar"
width="24" height="24">
</div>
<!-- Unassigned entity -->
<div class="mapify-node unassigned">
<span class="node-name">Legacy FTP Service</span>
<div class="owner-avatar unassigned"
aria-label="No owner assigned"
role="img">
<i class="fas fa-user" aria-hidden="true"></i>
</div>
</div>
CSS Specifications
/* Avatar container */
.owner-avatar {
position: absolute;
top: 4px;
right: 4px;
width: 24px;
height: 24px;
border-radius: 50%;
border: 2px solid #ffffff;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
font-weight: bold;
color: #ffffff;
background-color: #6c757d; /* Default gray */
}
/* Initials styling */
.owner-avatar .initials {
text-transform: uppercase;
}
/* Unassigned avatar */
.owner-avatar.unassigned {
background-color: #dc3545; /* Red */
border-color: #ffc107; /* Yellow warning */
}
/* Profile photo */
.owner-avatar img {
border-radius: 50%;
object-fit: cover;
}
/* Mobile touch targets */
@media (max-width: 768px) {
.owner-avatar {
width: 32px;
height: 32px;
font-size: 12px;
}
}
Color-Coding by Team
Assign unique colors to teams/departments to create visual ownership boundaries in the graph.
Team Color Schemes
Recommended team colors (WCAG AA compliant on white background):
| Team Name | Primary Color (Hex) | Contrast Ratio | Sample |
|---|---|---|---|
| Integration Services | #0056b3 |
8.6:1 | ■ Blue |
| Data Platform | #28a745 |
4.5:1 | ■ Green |
| Infrastructure | #6f42c1 |
6.1:1 | ■ Purple |
| Security | #d32f2f |
6.9:1 | ■ Red |
| External Partners | #e65100 |
6.4:1 | ■ Orange |
| Cloud Services | #0288d1 |
5.1:1 | ■ Cyan |
Important: Never rely on color alone to convey ownership. Combine color-coding with:
- Text labels (team name visible on hover/focus)
- Pattern overlays (diagonal stripes, dots) for colorblind users
- Avatar or badge icons
Color Application Options
- Node Border – Apply team color as 3px border (safest, least intrusive)
- Node Background Tint – Semi-transparent team color (20% opacity) over default background
- Node Shadow – Colored glow/shadow effect (subtle visual grouping)
HTML & CSS Example
<!-- Node with team color border -->
<div class="mapify-node"
data-team="Integration Services"
data-team-color="#0056b3"
style="border-left: 4px solid #0056b3;"
aria-label="SAP Finance Integration owned by Integration Services team">
<span class="node-name">SAP Finance Integration</span>
<span class="team-badge">Integration Services</span>
</div>
/* Team color border styling */
.mapify-node {
border: 1px solid #dee2e6;
border-left-width: 4px; /* Emphasize team color */
border-radius: 4px;
padding: 12px;
background: #ffffff;
}
/* Team badge (always visible) */
.team-badge {
display: inline-block;
font-size: 11px;
color: #6c757d;
margin-top: 4px;
}
/* Alternative: Background tint */
.mapify-node[data-team="Integration Services"] {
background: rgba(0, 86, 179, 0.08); /* Light blue tint */
}
/* High contrast mode: Add pattern */
@media (prefers-contrast: high) {
.mapify-node[data-team="Integration Services"]::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image: repeating-linear-gradient(
45deg,
transparent,
transparent 10px,
rgba(0, 86, 179, 0.1) 10px,
rgba(0, 86, 179, 0.1) 20px
);
pointer-events: none;
}
}
Accessibility Considerations
- WCAG 2.1 AA Compliance: All team colors meet 4.5:1 contrast ratio against white backgrounds
- Colorblind Support: Pattern overlays in high-contrast mode
- Screen Readers: Team name announced via
aria-labelon node - Keyboard Users: Team information visible on focus, not just hover
Filter by Owner/Team
Mapify's filtering system allows you to show only entities owned by specific people or teams.
Filter Syntax
Use the owner: and team: operators in the Mapify search bar:
owner:john.smith # Show all entities owned by John Smith
team:"Integration Services" # Show all entities owned by Integration Services team
owner:unassigned # Show entities with no owner assigned
team:"External Partners" # Show vendor/partner-owned systems
Filter UI
Dropdown menu location: Mapify toolbar → Filters → Ownership
The ownership filter panel provides:
- Owner dropdown – Select from list of all owners in the repository
- Team dropdown – Select from list of all teams
- Quick filters:
- "Show only my entities" (current logged-in user)
- "Show unassigned" (governance workflow)
- "Show partner/vendor systems" (external dependencies)
- Multi-select – Checkbox mode to select multiple owners/teams
HTML Example
<!-- Ownership filter panel -->
<div class="filter-panel ownership-filter" role="region" aria-label="Filter by ownership">
<h3>
<i class="fas fa-users" aria-hidden="true"></i>
Ownership Filters
</h3>
<!-- Owner selection -->
<div class="form-group">
<label for="owner-filter">Filter by Owner</label>
<select id="owner-filter"
name="owner"
aria-label="Select owner to filter entities"
multiple>
<option value="">All Owners</option>
<option value="john.smith">John Smith (42 entities)</option>
<option value="jane.doe">Jane Doe (28 entities)</option>
<option value="unassigned">⚠ Unassigned (15 entities)</option>
</select>
</div>
<!-- Team selection -->
<div class="form-group">
<label for="team-filter">Filter by Team</label>
<select id="team-filter"
name="team"
aria-label="Select team to filter entities"
multiple>
<option value="">All Teams</option>
<option value="integration-services">Integration Services (78 entities)</option>
<option value="data-platform">Data Platform (52 entities)</option>
<option value="external-partners">External Partners (24 entities)</option>
</select>
</div>
<!-- Quick filters -->
<div class="quick-filters">
<button type="button" class="btn btn-sm" aria-label="Show only entities I own">
<i class="fas fa-user" aria-hidden="true"></i> My Entities
</button>
<button type="button" class="btn btn-sm" aria-label="Show unassigned entities">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i> Unassigned
</button>
<button type="button" class="btn btn-sm" aria-label="Show partner/vendor systems">
<i class="fas fa-handshake" aria-hidden="true"></i> Partners
</button>
</div>
<!-- Apply/Reset buttons -->
<div class="filter-actions">
<button type="button" class="btn btn-primary" aria-label="Apply ownership filters">
Apply Filters
</button>
<button type="button" class="btn btn-secondary" aria-label="Reset all ownership filters">
Reset
</button>
</div>
</div>
Filter Behavior
When ownership filters are applied:
- Graph Updates – Only entities matching the filter are displayed
- Dependency Visualization – Related dependencies remain visible (grayed out) to show context
- Counter Display – Shows "Filtered: 42 of 342 entities by owner: John Smith"
- Saved with View – Ownership filters are saved in Saved Views for reuse
- Export – Filtered entities can be exported to Excel/CSV
Behavior When Owner is Unassigned
Entities without ownership information are flagged for governance review.
Visual Indicators for Unassigned Entities
| Indicator | Visual Style | Purpose |
|---|---|---|
| Warning Icon | Yellow triangle on node corner | Draw attention to missing ownership |
| Red Border | 2px red border around entire node | High visibility for governance workflows |
| "Unassigned" Label | Text label in node footer | Clear text description for screen readers |
| Tooltip Message | "No owner assigned. Click to assign." | Actionable guidance for users |
HTML Example
<!-- Unassigned entity node -->
<div class="mapify-node unassigned"
data-entity-id="SRV-99999"
data-owner="unassigned"
aria-label="Legacy FTP Service - No owner assigned - Warning"
role="button"
tabindex="0">
<!-- Warning badge -->
<div class="status-badge warning"
aria-label="Warning: No owner assigned"
role="img">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
</div>
<span class="node-name">Legacy FTP Service</span>
<!-- Unassigned label -->
<div class="node-footer">
<span class="owner-status unassigned">
<i class="fas fa-user-slash" aria-hidden="true"></i>
Unassigned
</span>
<button class="btn-assign" aria-label="Assign owner to Legacy FTP Service">
Assign Owner
</button>
</div>
</div>
CSS Styling
/* Unassigned node styling */
.mapify-node.unassigned {
border: 2px solid #dc3545; /* Red border */
background: #fff5f5; /* Light red tint */
}
/* Warning badge */
.status-badge.warning {
position: absolute;
top: -8px;
right: -8px;
width: 24px;
height: 24px;
background: #ffc107; /* Yellow */
border: 2px solid #ffffff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: #000000;
font-size: 14px;
}
/* Unassigned label */
.owner-status.unassigned {
color: #dc3545;
font-weight: bold;
}
/* Assign owner button */
.btn-assign {
padding: 4px 8px;
font-size: 12px;
background: #0056b3;
color: #ffffff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.btn-assign:hover,
.btn-assign:focus {
background: #004085;
outline: 2px solid #0056b3;
outline-offset: 2px;
}
Governance Workflow
- Detection – Unassigned entities flagged automatically
- Notification – Email sent to administrators weekly with list of unassigned entities
- Assignment – Click "Assign Owner" to open assignment dialog
- Compliance Report – Track percentage of entities with assigned owners (target: 100%)
Quick Contact Actions
Ownership display enables one-click communication with entity owners.
Supported Contact Actions
| Action | Icon | Behavior | Requires |
|---|---|---|---|
| Send Email | Opens default email client with owner's email pre-filled | OwnerEmail custom metadata field |
|
| Start Teams Chat | Opens Microsoft Teams chat with owner | Azure AD integration + OwnerEmail |
|
| Call Owner | Initiates phone call (mobile devices) or displays phone number | Phone custom metadata field |
|
| View Profile | Opens owner's profile page (Azure AD/LDAP directory) | Directory integration |
HTML Example - Contact Actions Menu
<!-- Owner tooltip with contact actions -->
<div class="mapify-tooltip owner-tooltip" role="tooltip" id="tooltip-INT-12345">
<div class="tooltip-header">
<img src="/api/users/avatar/john.smith" alt="John Smith" class="avatar-small">
<div class="owner-info">
<strong>John Smith</strong>
<span class="team-name">Integration Services</span>
</div>
</div>
<div class="contact-actions">
<!-- Email action -->
<a href="mailto:john.smith@company.com"
class="action-button"
aria-label="Send email to John Smith">
<i class="fas fa-envelope" aria-hidden="true"></i>
<span>Email</span>
</a>
<!-- Teams chat action -->
<a href="msteams://teams.microsoft.com/l/chat/0/0?users=john.smith@company.com"
class="action-button"
aria-label="Start Teams chat with John Smith">
<i class="fas fa-comment" aria-hidden="true"></i>
<span>Teams Chat</span>
</a>
<!-- Phone action -->
<a href="tel:+15550199"
class="action-button"
aria-label="Call John Smith at +1-555-0199">
<i class="fas fa-phone" aria-hidden="true"></i>
<span>Call</span>
</a>
<!-- Profile action -->
<a href="/directory/users/john.smith"
class="action-button"
aria-label="View John Smith's profile">
<i class="fas fa-id-card" aria-hidden="true"></i>
<span>Profile</span>
</a>
</div>
<!-- Emergency contact (critical resources only) -->
<div class="emergency-contact" role="alert">
<i class="fas fa-shield-alt" aria-hidden="true"></i>
<strong>Backup Contact:</strong> Jane Doe (jane.doe@company.com)
</div>
</div>
Accessibility Requirements
- Keyboard navigation: Tab through action buttons, Enter/Space to activate
- ARIA labels: Descriptive labels include owner name and action (e.g., "Send email to John Smith")
- Focus indicators: Visible 2px outline on focused action buttons
- Screen reader announcements: Tooltip header announces owner name and team
- Touch targets: Minimum 44×44px for mobile devices
Emergency Contact Display
For critical resources (production databases, payment gateways, security services), display backup owner information prominently:
- Visual indicator: icon + "Backup Contact" label
- Always visible: Show backup contact in tooltip even if primary owner is available
- Escalation path: Link to on-call rotation or incident response runbook
Partner and Vendor Tracking
External systems owned by partners or vendors require special identification and handling.
Partner/Vendor Visual Indicators
| Indicator | Visual Style | Accessibility |
|---|---|---|
| Partner Badge | Orange badge on node corner with handshake icon | aria-label="External partner system" for screen readers |
| Orange Border | 3px orange left border (team color: #e65100) |
Combined with text label "External Partner" in tooltip |
| External Icon | icon next to entity name | Icon marked aria-hidden="true", label in node aria-label |
| Tooltip Label | "Owned by: [Partner Name] (External)" | Clear text indication for all users |
HTML Example - Partner System
<!-- Partner/vendor-owned system node -->
<div class="mapify-node partner-system"
data-entity-id="EXT-SAP-001"
data-owner="SAP Support Team"
data-team="External Partners"
data-team-color="#e65100"
data-partner-vendor="true"
style="border-left: 4px solid #e65100;"
aria-label="SAP ERP System owned by SAP Support Team - External partner system"
role="button"
tabindex="0">
<!-- Partner badge -->
<div class="partner-badge"
aria-label="External partner system"
role="img">
<i class="fas fa-handshake" aria-hidden="true"></i>
</div>
<!-- Node name with external link icon -->
<span class="node-name">
SAP ERP System
<i class="fas fa-external-link-alt" aria-hidden="true"></i>
</span>
<!-- Partner contact info -->
<div class="node-footer">
<span class="owner-label">
<i class="fas fa-building" aria-hidden="true"></i>
SAP Support Team
</span>
</div>
</div>
CSS Styling
/* Partner system styling */
.mapify-node.partner-system {
border-left: 4px solid #e65100; /* Orange */
background: #fff8f0; /* Light orange tint */
}
/* Partner badge */
.partner-badge {
position: absolute;
top: 4px;
right: 4px;
width: 24px;
height: 24px;
background: #e65100;
border: 2px solid #ffffff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: #ffffff;
font-size: 12px;
}
/* External link icon */
.node-name .fa-external-link-alt {
font-size: 12px;
color: #6c757d;
margin-left: 4px;
}
Partner Contact Management
For external systems, track:
- Partner/Vendor Name – Company name (e.g., "SAP", "Salesforce", "Acme Corp")
- Support Email – Vendor support contact (e.g., "support@vendor.com")
- Support Phone – Vendor helpdesk number
- SLA Details – Link to SLA document or contract
- Escalation Path – Who to contact for critical issues
Custom Metadata fields:
PartnerVendor(Boolean) – Marks entity as externalPartnerName(Text) – Vendor company namePartnerSupportEmail(Email) – Support contactPartnerSLA(URL) – Link to SLA document
Team Management and Organizational Hierarchy
Effective team management is the foundation of ownership tracking in Mapify. Define teams, manage membership, assign entities, and visualize organizational structure to maintain clear accountability across your integration landscape.
What is Team Management?
Team Management in Mapify allows administrators to:
- Create and Define Teams – Establish teams/departments/groups (e.g., "Integration Services", "API Team", "Data Platform")
- Manage Team Membership – Add/remove members, assign roles (owner, contributor, viewer)
- Visualize Hierarchy – View organizational structure: team → members → owned entities
- Assign Entities – Bulk assign integrations, systems, services to specific teams/owners
- Control Permissions – Define who can create teams, assign ownership, and modify settings
- Track External Partners – Tag and manage vendor/partner-owned systems separately
Key Benefits:
- Centralized governance – Single source of truth for ownership data
- Faster onboarding – New team members instantly see who owns what
- Scalability – Supports 100+ teams and 1000+ users in enterprise deployments
- Flexibility – Adapts to matrix organizations, distributed teams, and vendor relationships
Team Definition UI and Workflow
Creating a New Team
Teams are created and managed through the Mapify Administration Console (admin-only access required).
Step-by-step workflow:
- Navigate to Mapify > Administration > Team Management
- Click Create New Team button
- Fill in team details (see form below)
- Assign team color for visual identification
- Add team members (search by name, email, or Azure AD group)
- Set permissions (who can edit team settings)
- Click Save to create team
Team Creation Form
<form aria-label="Create new team" class="team-form">
<!-- Team Name -->
<div class="form-group">
<label for="team-name">
<i class="fas fa-users" aria-hidden="true"></i>
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 for the team (max 100 characters)</small>
</div>
<!-- Team Description -->
<div class="form-group">
<label for="team-description">
<i class="fas fa-align-left" aria-hidden="true"></i>
Description
</label>
<textarea id="team-description"
name="teamDescription"
rows="3"
placeholder="Brief description of team responsibilities"
maxlength="500"></textarea>
<small class="form-help">Optional description (max 500 characters)</small>
</div>
<!-- Team Color -->
<div class="form-group">
<label for="team-color">
<i class="fas fa-palette" aria-hidden="true"></i>
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">Color for visual identification in graph (ensure WCAG AA contrast)</small>
</div>
<!-- Team Email (Group Email) -->
<div class="form-group">
<label for="team-email">
<i class="fas fa-envelope" aria-hidden="true"></i>
Team Email
</label>
<input type="email"
id="team-email"
name="teamEmail"
placeholder="integration-services@company.com" />
<small class="form-help">Group email for team contact (optional)</small>
</div>
<!-- External Partner Flag -->
<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 this box if this team represents an external partner or vendor
</small>
</div>
<!-- Team Members -->
<div class="form-group">
<label for="team-members">
<i class="fas fa-user-plus" aria-hidden="true"></i>
Team Members
</label>
<div class="member-selector">
<input type="text"
id="team-members"
placeholder="Search users by name or email..."
aria-label="Search users to add to team"
autocomplete="off" />
<button type="button"
class="btn-add-member"
aria-label="Add selected user to team">
<i class="fas fa-plus" aria-hidden="true"></i> Add
</button>
</div>
<!-- Selected Members List -->
<ul class="selected-members" role="list" aria-label="Selected team members">
<li>
<img src="/avatars/john.smith.jpg"
alt="John Smith avatar"
class="member-avatar" />
<span class="member-name">John Smith</span>
<span class="member-role badge badge-primary">Owner</span>
<button type="button"
class="btn-remove-member"
aria-label="Remove John Smith from team">
<i class="fas fa-times" aria-hidden="true"></i>
</button>
</li>
<li>
<img src="/avatars/jane.doe.jpg"
alt="Jane Doe avatar"
class="member-avatar" />
<span class="member-name">Jane Doe</span>
<span class="member-role badge badge-secondary">Contributor</span>
<button type="button"
class="btn-remove-member"
aria-label="Remove Jane Doe from team">
<i class="fas fa-times" aria-hidden="true"></i>
</button>
</li>
</ul>
</div>
<!-- Action Buttons -->
<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
Teams support three membership roles:
| Role | Permissions | Typical Use Case |
|---|---|---|
| Owner |
|
Team lead, manager, or primary contact |
| Contributor |
|
Team members who actively manage integrations |
| Viewer |
|
Auditors, managers, or stakeholders who need visibility |
Organizational Hierarchy Visualization
Mapify provides a hierarchical view to visualize team structure and entity ownership.
Hierarchy View Modes
1. Team-Centric View
Displays organizational structure starting with teams:
Company Name
├── 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
│ └── Sarah Lee (Viewer)
│
└── External Partners (6 entities)
├── SAP Support – 3 integrations
└── Salesforce Consulting – 3 integrations
2. Person-Centric View
Displays ownership by individual:
John Smith (Integration Services)
├── Integration 1: SAP to Salesforce Sync
├── Integration 2: Customer Data ETL
├── Integration 3: Payment Gateway API
└── ... (9 more)
Jane Doe (Integration Services)
├── Integration 4: Email Notification Service
├── Integration 5: Inventory Sync
└── ... (6 more)
3. Entity-Centric View
Displays entities grouped by team:
Integration Services
├── SAP to Salesforce Sync (Owner: John Smith)
├── Customer Data ETL (Owner: John Smith)
├── Email Notification Service (Owner: Jane Doe)
└── ... (21 more)
API Platform Team
├── REST API Gateway (Owner: Alice Johnson)
├── GraphQL Service (Owner: Alice Johnson)
└── ... (16 more)
Hierarchy Navigation UI
<div class="hierarchy-view" role="navigation" aria-label="Organizational hierarchy">
<!-- View Mode Selector -->
<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>
<!-- Hierarchy Tree -->
<div class="hierarchy-tree" role="tree" aria-label="Team hierarchy tree">
<!-- Team Node (expandable) -->
<div class="tree-node team-node"
role="treeitem"
aria-expanded="true"
aria-label="Integration Services team, 24 entities"
tabindex="0">
<button class="expand-toggle" aria-label="Collapse team">
<i class="fas fa-chevron-down" aria-hidden="true"></i>
</button>
<i class="fas fa-users team-icon" aria-hidden="true" style="color: #007bff;"></i>
<span class="team-name">Integration Services</span>
<span class="entity-count badge">(24 entities)</span>
<!-- Team Actions Dropdown -->
<div class="node-actions">
<button class="btn-actions" aria-label="Team actions menu">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</button>
</div>
</div>
<!-- Team Members (nested) -->
<div class="tree-children" role="group">
<!-- Member Node -->
<div class="tree-node member-node"
role="treeitem"
aria-label="John Smith, Owner, 12 integrations"
tabindex="-1">
<img src="/avatars/john.smith.jpg"
alt="John Smith avatar"
class="member-avatar-small" />
<span class="member-name">John Smith</span>
<span class="member-role badge badge-primary">Owner</span>
<span class="entity-count">(12 integrations)</span>
<!-- Quick Contact Actions -->
<div class="quick-actions">
<a href="mailto:john.smith@company.com"
aria-label="Email John Smith"
title="Email">
<i class="fas fa-envelope" aria-hidden="true"></i>
</a>
<a href="msteams://teams.microsoft.com/l/chat/0/0?users=john.smith@company.com"
aria-label="Teams chat with John Smith"
title="Teams Chat">
<i class="fas fa-comment" aria-hidden="true"></i>
</a>
<a href="tel:+15550199"
aria-label="Call John Smith"
title="Call">
<i class="fas fa-phone" aria-hidden="true"></i>
</a>
</div>
</div>
<!-- Additional members... -->
</div>
</div>
</div>
Accessibility for Hierarchy View
- Keyboard navigation: Arrow keys to navigate tree nodes, Enter/Space to expand/collapse
- ARIA roles:
role="tree",role="treeitem",role="group"for semantic structure - Screen reader support: Announce team name, member count, and expansion state
- Focus management: Visible 2px outline on focused node
- Skip navigation: Allow users to jump to specific team via search
Assigning Entities to Teams
Mapify supports both individual assignment (one entity at a time) and bulk assignment (multiple entities).
Individual Entity Assignment
From Entity Details Panel:
- Select entity in graph (click node)
- Open Entity Details panel (right sidebar)
- Click Edit Ownership button
- Select team from dropdown
- Select specific owner (team member) from second dropdown
- Click Save
HTML Example:
<div class="entity-ownership-editor">
<label for="select-team">
<i class="fas fa-users" aria-hidden="true"></i>
Assign to Team
</label>
<select id="select-team"
name="teamId"
aria-required="true">
<option value="">-- Select Team --</option>
<option value="team-001">Integration Services (24 entities)</option>
<option value="team-002">API Platform Team (18 entities)</option>
<option value="team-003" style="color: #e65100;">
External Partners (6 entities)
</option>
</select>
<label for="select-owner">
<i class="fas fa-user" aria-hidden="true"></i>
Assign to Owner
</label>
<select id="select-owner"
name="ownerId"
aria-required="true">
<option value="">-- Select Owner --</option>
<option value="user-001">John Smith (Owner)</option>
<option value="user-002">Jane Doe (Contributor)</option>
<option value="user-003">Bob Wilson (Contributor)</option>
</select>
<button type="submit" class="btn btn-primary">
<i class="fas fa-check" aria-hidden="true"></i> Save Ownership
</button>
</div>
Bulk Entity Assignment
From Mapify Graph:
- Select multiple entities (Ctrl+Click or drag-select)
- Right-click to open context menu
- Select Assign to Team action
- Choose team and owner from bulk assignment dialog
- Review affected entities (with count)
- Click Assign All to confirm
Bulk Assignment Dialog:
<div class="bulk-assignment-dialog"
role="dialog"
aria-labelledby="bulk-dialog-title"
aria-modal="true">
<h2 id="bulk-dialog-title">
<i class="fas fa-users-cog" aria-hidden="true"></i>
Bulk Assign Ownership
</h2>
<p class="dialog-description">
Assign <strong>15 selected entities</strong> to a team and owner.
</p>
<!-- Team Selection -->
<div class="form-group">
<label for="bulk-team">Team</label>
<select id="bulk-team" name="teamId" aria-required="true">
<option value="">-- Select Team --</option>
<option value="team-001">Integration Services</option>
<option value="team-002">API Platform Team</option>
</select>
</div>
<!-- Owner Selection -->
<div class="form-group">
<label for="bulk-owner">Owner</label>
<select id="bulk-owner" name="ownerId" aria-required="true">
<option value="">-- Select Owner --</option>
<option value="user-001">John Smith</option>
<option value="user-002">Jane Doe</option>
</select>
</div>
<!-- Affected Entities Preview -->
<div class="affected-entities">
<h3>
<i class="fas fa-list" aria-hidden="true"></i>
Affected Entities (15)
</h3>
<ul class="entity-preview-list" role="list">
<li>Integration: SAP to Salesforce Sync</li>
<li>Integration: Customer Data ETL</li>
<li>System: Payment Gateway</li>
<li>... (12 more)</li>
</ul>
<button class="btn-show-all" aria-label="Show all 15 entities">
Show All
</button>
</div>
<!-- Warning for Overwriting Existing Ownership -->
<div class="alert alert-warning" role="alert">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<strong>Warning:</strong> 3 of 15 entities already have owners.
Proceeding will overwrite existing ownership.
</div>
<!-- Action Buttons -->
<div class="dialog-actions">
<button type="submit" class="btn btn-primary">
<i class="fas fa-users-cog" aria-hidden="true"></i>
Assign All (15 entities)
</button>
<button type="button" class="btn btn-secondary" data-dismiss="dialog">
<i class="fas fa-times" aria-hidden="true"></i>
Cancel
</button>
</div>
</div>
Bulk Assignment from Excel Import
For large-scale ownership assignment (100+ entities), use Excel Import:
- Export current entities to Excel template
- Add/update
TeamandOwnercolumns - Import updated Excel file
- Mapify validates and previews changes
- Confirm to apply ownership in bulk
See: [Excel Import/Export Documentation]:/Mapify/Features/Excel%20Import%20Export.md (Story #14)
Permissions Model
Team management operations are restricted based on user roles and permissions.
Permission Levels
| Action | Mapify Admin | Team Owner | Team Contributor | Team Viewer | Regular User |
|---|---|---|---|---|---|
| Create Team | Yes | No | No | No | No |
| Delete Team | Yes | Own team only | No | No | No |
| Edit Team Settings | All teams | Own team only | No | No | No |
| Add/Remove Team Members | All teams | Own team only | No | No | No |
| Assign Entity to Team | All entities | All entities | Unassigned only | No | No |
| Reassign Entity (Change Owner) | All entities | Own team entities | Own entities only | No | No |
| View Team Hierarchy | All teams | All teams | All teams | All teams | All teams |
| Export Ownership Data | All entities | All entities | Own team entities | Own team entities | No |
Permission Enforcement
Permissions are enforced at both UI level (hide restricted actions) and API level (reject unauthorized requests).
UI Example - Conditional Button Display:
<!-- Show "Create Team" button only to Mapify Admins -->
<button class="btn btn-primary"
id="btn-create-team"
style="display: none;"
aria-label="Create new team">
<i class="fas fa-plus-circle" aria-hidden="true"></i>
Create Team
</button>
<script>
// Show button only if user has admin role
if (currentUser.role === 'MapifyAdmin') {
document.getElementById('btn-create-team').style.display = 'inline-block';
}
</script>
API Example - Permission Check (C#):
[HttpPost]
[Route("api/mapify/teams")]
public async Task<IActionResult> CreateTeam([FromBody] CreateTeamRequest request)
{
// Check if current user has permission to create teams
if (!User.IsInRole("MapifyAdmin"))
{
return Forbid("Only Mapify Admins can create teams.");
}
// Validate request
if (string.IsNullOrWhiteSpace(request.TeamName))
{
return BadRequest("Team name is required.");
}
// Create team
var team = await _teamService.CreateTeamAsync(request);
return Ok(new {
Success = true,
Message = $"Team '{team.Name}' created successfully.",
TeamId = team.Id
});
}
Integration with Azure AD / LDAP
For enterprise deployments, sync team membership with Azure Active Directory or LDAP:
- Automatic sync: Pull team membership from Azure AD groups (e.g., "IntegrationServices" AD group → "Integration Services" Mapify team)
- Single Sign-On (SSO): Use Azure AD credentials for Mapify authentication
- Role mapping: Map Azure AD roles to Mapify permission levels
- Scheduled sync: Run daily or hourly sync to keep membership updated
Configuration Example (appsettings.json):
{
"AzureAd": {
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret"
},
"TeamSync": {
"Enabled": true,
"SyncSchedule": "0 2 * * *", // Daily at 2:00 AM
"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 to ensure 24/7 availability during incidents.
Emergency Contact Fields
In addition to standard ownership fields, critical resources should include:
| Field Name | Type | Example Value | Purpose |
|---|---|---|---|
EmergencyContact |
Text | "John Smith (Primary)" | Primary on-call contact |
EmergencyPhone |
Phone | "+1-555-0199" | 24/7 emergency phone number |
BackupContact |
Text | "Jane Doe (Backup)" | Secondary escalation contact |
BackupPhone |
Phone | "+1-555-0200" | Backup emergency phone |
OnCallSchedule |
URL | "https://oncall.company.com/integration-services" | Link to on-call rotation schedule |
EscalationPath |
Text | "John → Jane → Manager (555-0300)" | Escalation chain for critical issues |
Emergency Contact Display
Emergency contacts are displayed prominently for critical resources:
Visual Indicators:
- Critical resource badge – Red badge on node corner
- Emergency contact section – Always visible in tooltip (not hidden behind "Show more")
- One-click calling – Direct phone link for fastest response
- Escalation path – Visual flowchart showing who to contact in order
HTML Example:
<div class="emergency-contact-panel" role="region" aria-label="Emergency contact information">
<div class="emergency-header">
<i class="fas fa-shield-alt" aria-hidden="true" style="color: #d32f2f;"></i>
<strong>Critical Resource - Emergency Contacts</strong>
</div>
<!-- Primary Contact -->
<div class="contact-primary">
<h4>
<i class="fas fa-user-shield" aria-hidden="true"></i>
Primary On-Call
</h4>
<p class="contact-name">John Smith</p>
<div class="contact-actions">
<a href="tel:+15550199"
class="btn btn-danger btn-emergency"
aria-label="Call John Smith at +1-555-0199">
<i class="fas fa-phone" aria-hidden="true"></i>
Call Now: +1-555-0199
</a>
<a href="mailto:john.smith@company.com"
class="btn btn-secondary"
aria-label="Email John Smith">
<i class="fas fa-envelope" aria-hidden="true"></i>
Email
</a>
</div>
</div>
<!-- Backup Contact -->
<div class="contact-backup">
<h4>
<i class="fas fa-user-plus" aria-hidden="true"></i>
Backup Contact
</h4>
<p class="contact-name">Jane Doe</p>
<div class="contact-actions">
<a href="tel:+15550200"
class="btn btn-warning"
aria-label="Call Jane Doe at +1-555-0200">
<i class="fas fa-phone" aria-hidden="true"></i>
Call: +1-555-0200
</a>
<a href="mailto:jane.doe@company.com"
class="btn btn-secondary"
aria-label="Email Jane Doe">
<i class="fas fa-envelope" aria-hidden="true"></i>
Email
</a>
</div>
</div>
<!-- Escalation Path -->
<div class="escalation-path">
<h4>
<i class="fas fa-level-up-alt" aria-hidden="true"></i>
Escalation Path
</h4>
<ol class="escalation-steps">
<li>
<strong>Step 1:</strong> John Smith (+1-555-0199)
</li>
<li>
<strong>Step 2:</strong> Jane Doe (+1-555-0200)
</li>
<li>
<strong>Step 3:</strong> Manager Sarah Lee (+1-555-0300)
</li>
</ol>
<a href="https://oncall.company.com/integration-services"
target="_blank"
rel="noopener noreferrer"
aria-label="View on-call schedule (opens in new window)">
<i class="fas fa-calendar-alt" aria-hidden="true"></i>
View On-Call Schedule
</a>
</div>
</div>
CSS Styling
/* Emergency contact panel styling */
.emergency-contact-panel {
background: #fff3e0; /* Light orange background */
border: 2px solid #d32f2f; /* Red border for critical */
border-radius: 8px;
padding: 16px;
margin-top: 12px;
}
.emergency-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 12px;
font-size: 16px;
font-weight: bold;
color: #d32f2f;
}
.btn-emergency {
font-weight: bold;
font-size: 16px;
padding: 12px 20px;
animation: pulse-red 2s infinite;
}
@keyframes pulse-red {
0%, 100% { box-shadow: 0 0 0 0 rgba(211, 47, 47, 0.7); }
50% { box-shadow: 0 0 0 8px rgba(211, 47, 47, 0); }
}
.escalation-steps {
list-style: none;
padding: 0;
margin: 8px 0;
}
.escalation-steps li {
padding: 8px 0;
border-bottom: 1px solid #ddd;
}
.escalation-steps li:last-child {
border-bottom: none;
}
Governance for Emergency Contacts
- Mandatory for critical resources: All systems tagged "critical" or "production-tier-1" MUST have emergency contacts defined
- Quarterly validation: Review emergency contacts every 3 months to ensure accuracy
- Automated alerts: Send email reminders to team owners if emergency contacts are missing or outdated
- Audit reports: Generate monthly report showing coverage: "95% of critical resources have emergency contacts"
Distributed Teams and External Partners
Mapify supports complex organizational structures including distributed teams, remote workers, and external partners.
Distributed Team Example
Scenario: Integration Services team has members across 3 time zones (US East, US West, India).
Configuration:
- Create single team: "Integration Services"
- Add members from all locations
- Use Custom Metadata field
LocationorTimeZoneto track member location - Display time zone in owner tooltip: "John Smith (US East, GMT-5)"
- Color-code by location (optional): US East = Blue, US West = Green, India = Orange
Tooltip with Time Zone:
<div class="owner-tooltip distributed-team">
<div class="tooltip-header">
<img src="/avatars/john.smith.jpg"
alt="John Smith avatar"
class="owner-avatar" />
<div>
<strong class="owner-name">John Smith</strong>
<span class="owner-team">Integration Services</span>
</div>
</div>
<!-- Location and Time Zone -->
<div class="owner-location">
<i class="fas fa-map-marker-alt" aria-hidden="true"></i>
<span>New York, USA (GMT-5)</span>
</div>
<!-- Local Time Display -->
<div class="owner-localtime">
<i class="fas fa-clock" aria-hidden="true"></i>
<span>Local Time: 2:45 PM</span>
</div>
<!-- Contact Actions -->
<div class="contact-actions">
<a href="mailto:john.smith@company.com" aria-label="Email John Smith">
<i class="fas fa-envelope" aria-hidden="true"></i> Email
</a>
<a href="msteams://..." aria-label="Teams chat with John Smith">
<i class="fas fa-comment" aria-hidden="true"></i> Chat
</a>
</div>
</div>
External Partner Example
Scenario: SAP integration is owned and maintained by SAP Consulting (external vendor).
Configuration:
- Create team: "External Partners" with
ExternalPartnerflag = true - Set team color to orange (#e65100) for visual differentiation
- Add partner contacts as team members (using vendor email addresses)
- Use Custom Metadata fields:
PartnerName= "SAP Consulting"ContractNumber= "SAP-2026-001"SLADocument= "https://contracts.company.com/sap-sla.pdf"SupportEmail= "support@sap.com"SupportPhone= "+1-800-SAP-HELP"
Partner Entity Node:
<div class="mapify-node partner-node"
data-entity-id="SAP-INT-001"
data-owner="SAP Consulting"
data-team="External Partners"
data-partner="true"
style="border-left: 4px solid #e65100;"
aria-label="SAP ERP Integration owned by SAP Consulting - External partner"
role="button"
tabindex="0">
<!-- Partner Badge -->
<div class="partner-badge"
aria-label="External partner system"
role="img">
<i class="fas fa-handshake" aria-hidden="true"></i>
</div>
<!-- Entity Name -->
<span class="node-name">
SAP ERP Integration
<i class="fas fa-external-link-alt" aria-hidden="true"></i>
</span>
<!-- Partner Info Footer -->
<div class="node-footer">
<span class="partner-label">
<i class="fas fa-building" aria-hidden="true"></i>
SAP Consulting
</span>
<a href="https://contracts.company.com/sap-sla.pdf"
class="sla-link"
aria-label="View SAP SLA document"
target="_blank"
rel="noopener noreferrer">
<i class="fas fa-file-contract" aria-hidden="true"></i>
SLA
</a>
</div>
</div>
Partner Contact Tooltip:
<div class="owner-tooltip partner-tooltip">
<div class="tooltip-header partner-header">
<i class="fas fa-handshake" aria-hidden="true" style="color: #e65100;"></i>
<div>
<strong class="owner-name">SAP Consulting</strong>
<span class="partner-badge-inline">External Partner</span>
</div>
</div>
<!-- Partner Details -->
<div class="partner-details">
<p>
<i class="fas fa-file-contract" aria-hidden="true"></i>
<strong>Contract:</strong> SAP-2026-001
</p>
<p>
<i class="fas fa-file-alt" aria-hidden="true"></i>
<strong>SLA:</strong>
<a href="https://contracts.company.com/sap-sla.pdf"
target="_blank"
rel="noopener noreferrer">
View SLA Document
</a>
</p>
</div>
<!-- Partner Contact Actions -->
<div class="contact-actions">
<a href="mailto:support@sap.com"
class="action-button"
aria-label="Email SAP support">
<i class="fas fa-envelope" aria-hidden="true"></i>
<span>Email Support</span>
</a>
<a href="tel:+18007274357"
class="action-button"
aria-label="Call SAP support at 1-800-SAP-HELP">
<i class="fas fa-phone" aria-hidden="true"></i>
<span>Call Support</span>
</a>
</div>
<!-- Internal Contact (Company liaison with partner) -->
<div class="internal-contact">
<p class="internal-label">
<i class="fas fa-user-tie" aria-hidden="true"></i>
<strong>Internal Liaison:</strong>
</p>
<p>
John Smith (john.smith@company.com)
</p>
</div>
</div>
Use Cases
Use Case 1: Incident Response
Scenario: Production integration fails at 2:00 AM. On-call engineer needs to contact the owner immediately.
Solution:
- Open Mapify graph showing production integrations
- Locate failed integration node (red status indicator)
- Hover over node to see ownership tooltip
- Click Call action to reach owner's emergency contact number
- If owner unavailable, escalate to Backup Owner shown in tooltip
Benefit: 80% faster incident response – No searching documentation or asking "Who owns this?"
Use Case 2: Compliance Audit
Scenario: Auditor asks "Who is responsible for all integrations handling PII (Personally Identifiable Information)?"
Solution:
- Apply filter:
tag:PIIto show only PII-related integrations - Apply ownership filter: Show unassigned entities
- Export list of entities with owners to Excel
- Share with auditor as evidence of ownership tracking
Benefit: 60% faster audit preparation – Ownership data instantly available for compliance reporting.
Use Case 3: Team Reorganization
Scenario: Integration Services team is split into two teams: "API Services" and "Legacy Integration". Need to visualize current ownership distribution.
Solution:
- Enable team color-coding in Mapify graph
- Filter by
team:"Integration Services"to see all affected entities - Use assignment dialog to reassign entities to new teams
- Save view as "Team Reorganization - 2026 Q1" for future reference
Benefit: Clear visual representation of ownership changes during organizational transitions.
Use Case 4: Partner System Identification
Scenario: Security team needs to identify all external partner-owned systems for risk assessment.
Solution:
- Apply filter:
team:"External Partners"or searchowner:vendor - Mapify highlights all partner systems with orange borders and handshake badges
- Review SLA details and support contacts for each partner system
- Export list for security review
Benefit: Instant visibility into external dependencies and third-party risk exposure.
Best Practices
Assign Ownership to All Entities
- Why: Unassigned entities create accountability gaps and slow incident response
- How: Run weekly governance reports to identify unassigned entities
- Target: 100% ownership coverage for production systems, 95%+ for non-production
Use Team Color-Coding Consistently
- Why: Consistent colors help users quickly identify ownership boundaries
- How: Define team colors in Custom Metadata and enforce across organization
- Tip: Avoid changing team colors frequently – users build mental models
Keep Contact Information Updated
- Why: Outdated contact info defeats the purpose of quick contact actions
- How: Sync ownership data from Azure AD/LDAP automatically
- Frequency: Review quarterly or when team members change roles
Tag Critical Resources with Backup Owners
- Why: Single points of failure are high-risk during vacations or emergencies
- How: Require backup owner for any system tagged "critical" or "production"
- Governance: Audit critical systems monthly for missing backup owners
Don't Rely on Color Alone for Ownership
- Why: Violates WCAG 2.1 AA accessibility standards
- How: Combine color-coding with text labels, avatars, or pattern overlays
- Test: Use colorblind simulator to verify ownership is still clear
Avoid Over-Cluttering Nodes with Avatars
- Why: Large graphs (200+ nodes) become visually noisy with too many avatars
- How: Use avatars for small graphs (<50 nodes), hover tooltips for large graphs
- Alternative: Show avatars only when ownership filter is active
Related Topics
- [Saved Views]:/Mapify/Features/Saved%20Views.md – Save ownership filters for reuse
- [Search and Discovery]:/Mapify/Features/Search%20and%20Discovery.md – Search by owner name or team
- [Custom Metadata]:/Repository%20Model/Custom%20Metadata/Overview.md – Configure ownership fields
- [Multi-User Collaboration]:/Mapify/Features/Multi-User%20Collaboration.md – Team collaboration workflows
- [Repository Model Overview]:/Repository%20Model/Overview.md – Understanding entity types and metadata
Next Steps
- Configure Custom Metadata – Define ownership fields in Repository Model
- Assign Owners – Populate ownership data for all integrations and systems
- Enable Color-Coding – Set team colors for visual identification
- Create Ownership Views – Save filtered views by team for quick access
- Run Governance Report – Identify and resolve unassigned entities
For step-by-step guidance, see:
- [Getting Started with Ownership Tracking]:/Mapify/Getting%20Started/Ownership%20Tracking.md (Coming soon)
Have questions? Contact the Nodinite support team or visit our community forums.