Team Operations
The Team Operations submodule handles team management, member coordination, and organizational structure administration within the DashClicks ACM system.
🎯 Overview
This submodule manages team creation, member assignment, role coordination, and team performance tracking with comprehensive administrative oversight.
🔧 Service Methods
Core Team Management
getTeams()
Retrieves comprehensive team information with member details for managed subscription products.
Core Business Logic:
- Access Control: Validates user permissions (admin or account_manager roles only)
- Product Team Discovery: Maps all managed subscription products (excluding 'site' and 'listings')
- User-Team Mapping: Uses MongoDB aggregation to group users by their managed product teams
- Team Composition: Returns structured object with team names as keys and member arrays as values
- Member Details: Includes user ID, name, email, image, and role for each team member
Key Operations:
- Permission Check: Validates user has PROJECT_ROLES.ADMIN or PROJECT_ROLES.ACCOUNT_MANAGER access
- Team Discovery: Filters MANAGED_SUBSCRIPTIONS to exclude 'site' and 'listings'
- MongoDB Aggregation:
- Matches users with
dashclicks.projects.managesand active general access - Unwinds managed teams and groups users by team
- Converts to key-value object format
- Matches users with
- Result Formatting: Creates complete team structure with empty arrays for teams without members
Collections Used: _users
Return Type: Object with team names as keys and user arrays as values
API Endpoint: GET /v1/admin/acm/teams
createTeam() ⚠️ DEPRECATED
Creates new teams with member assignment and role coordination.
Key Features:
- Team Creation: New team establishment with configuration
- Member Assignment: Initial team member assignment and role coordination
- Icon Management: Team visual identification and branding
- Administrative Tracking: Complete audit trail for team creation
API Endpoint: POST /v1/admin/acm/teams
Deprecation Notice: This function is no longer supported and will be removed in a future version.
updateTeam()
Updates team membership by adding or removing users from managed product teams.
Core Business Logic:
- Access Control: Validates user permissions (admin or account_manager roles only)
- User Validation: Verifies all users have PROJECT_ROLES.FULFILMENT_SPECIALIST role
- Team Operations: Supports 'add' and 'remove' operations for team membership
- Bulk Updates: Uses MongoDB bulkWrite for efficient batch user updates
- Data Integrity: Maintains team structure consistency during membership changes
Key Operations:
- Permission Check: Validates user has PROJECT_ROLES.ADMIN or PROJECT_ROLES.ACCOUNT_MANAGER access
- User Validation:
- Fetches user records to verify existence
- Validates each user has
dashclicks.projectsaccess - Ensures users have FULFILMENT_SPECIALIST role
- Team Operation Processing:
- For 'add': Adds teamName to user's
dashclicks.projects.managesarray if not present - For 'remove': Filters teamName from user's manages array and validates team exists
- For 'add': Adds teamName to user's
- Bulk Database Update: Uses bulkWrite operations to update all user records efficiently
Collections Used: _users
Parameters:
userIds: Array of user IDs to updateteamName: Name of the managed product teamoperation: Either 'add' or 'remove'
Return Type: Array of validated user data
API Endpoint: PUT /v1/admin/acm/teams
deleteTeam() ⚠️ DEPRECATED
Removes teams from the organizational structure with member reassignment.
Key Features:
- Team Removal: Complete team deletion with data cleanup
- Member Reassignment: Automatic member reassignment to other teams
- Data Integrity: Maintains data integrity during team removal
- Administrative Tracking: Complete audit trail for team deletion
API Endpoint: DELETE /v1/admin/acm/teams
Deprecation Notice: This function is no longer supported and will be removed in a future version.
Internal Service Methods
getUsers()
Retrieves all users in an account with their ACM roles and team assignments.
Core Business Logic:
- Access Control: Validates user permissions (owner or SUPER_MANAGER/MANAGER roles only)
- User-Team Mapping: Cross-references users with AdminTeam assignments
- Account Scoping: Filters users by specific account ID
- Team Integration: Enriches user data with team membership information
Key Operations:
- Permission Check: Validates user is owner or has SUPER_MANAGER/MANAGER ACM role
- Parallel Data Fetch: Uses Promise.allSettled to fetch users and teams simultaneously
- User Aggregation: Retrieves users with name, image, and ACM role information
- Team Assignment: Maps users to their AdminTeam memberships with team ID and name
- Data Enrichment: Adds teams array to each user object with their team associations
Collections Used: _users, admin.teams
Return Type: Array of user objects with embedded team assignments
Parameters:
accId: Account ID to filter usersisOwner: Boolean indicating if requestor is account ownerdashclicks: User's DashClicks role information
updateUser()
Updates user ACM roles and access permissions with team leadership validation.
Core Business Logic:
- Access Control: Validates user permissions (owner or SUPER_MANAGER/MANAGER roles only)
- Role Transitions: Manages ACM role changes with business rule validation
- Team Leadership: Enforces single team lead per team constraint
- Access Management: Enables or disables ACM access for users
Key Operations:
- Permission Check: Validates user is owner or has SUPER_MANAGER/MANAGER ACM role
- User Protection: Prevents modification of SUPER_MANAGER owners
- Role Update Logic:
- For TEAM_LEAD role: Validates user doesn't already lead another team
- When removing TEAM_LEAD: Ensures team will still have a leader
- Sets
dashclicks.generalto true when assigning ACM roles
- Access Control: Can disable ACM access by unsetting
dashclicks.acm - Database Update: Updates user record and returns refreshed user data
Collections Used: _users, admin.teams
Parameters:
accId: Account ID for user validationuserId: ID of user to updaterole: New ACM role to assignenabled: Boolean to enable/disable ACM accessisOwner: Boolean indicating if requestor is account ownerdashclicks: User's DashClicks role information
Return Type: Updated user object with name, image, and dashclicks information
🏗️ Technical Architecture
Database Collections
The service interacts with the following MongoDB collections:
_users: User account information with ACM roles and team assignmentsadmin.teams⚠️ DEPRECATED: Legacy AdminTeam model for team structure- User.dashclicks.projects.manages: Array field storing managed product teams per user
Integration Systems
- Account Management: Account hierarchy and team access integration
- User Management: Team member user account and role coordination
- Workspace System: Team workspace and collaboration integration
- Analytics System: Team performance metrics and reporting integration
Business Logic
- Team Hierarchy: Complex team organizational structure management
- Member Coordination: Team member assignment and role management
- Performance Tracking: Team performance monitoring and analytics
- Access Control: Role-based team access and permission management
🔐 Authorization Framework
Role Requirements
All team operations require appropriate administrative permissions:
- ACM Admin: Full team management and organizational control
- Team Manager: Team coordination and member management
- HR Manager: Team member assignment and role coordination
- Operations Manager: Team performance and organizational oversight
Permission Validation
- Team Access: Validates access to specific team information
- Member Management: Ensures proper permissions for member operations
- Organizational Control: Validates authority for team structure changes
- Multi-tenant Access: Account-based team access and permission validation
📊 Team Analytics
Performance Metrics
- Team Productivity: Team performance and output tracking
- Member Utilization: Team member workload and assignment analytics
- Collaboration Metrics: Team coordination and communication analytics
- Organizational Efficiency: Team structure effectiveness and optimization
Operational Insights
- Team Health: Team performance and member satisfaction tracking
- Resource Allocation: Team member assignment and workload distribution
- Growth Analysis: Team expansion and organizational development
- Performance Trends: Team performance trends and improvement opportunities
🔄 Integration Points
External Systems
- HR Systems: Human resources integration for team member management
- Project Management: Team-project assignment and coordination
- Communication Platforms: Team communication and collaboration integration
- Performance Systems: Team performance tracking and evaluation
Internal Services
- Account Management: Account hierarchy and team access integration
- User Management: Team member user account and role coordination
- Analytics System: Team performance metrics and reporting integration
- Audit System: Comprehensive team operation audit trail
📈 Business Workflows
Team Management
graph TD
A[Team Creation] --> B[Member Assignment]
B --> C[Role Coordination]
C --> D[Performance Tracking]
D --> E[Team Optimization]
E --> F[Organizational Growth]
Member Coordination
- Assignment Process: Team member assignment and role coordination
- Performance Monitoring: Team member performance tracking and evaluation
- Role Management: Team member role updates and organizational changes
- Development Tracking: Team member growth and development coordination
🛡️ Security Features
Data Protection
- Team Information Security: Secure handling of team organizational data
- Member Privacy: Team member information protection and access control
- Access Control: Role-based access to team information and operations
- Audit Logging: Comprehensive logging of all team operations
Operational Security
- Authorization Validation: Team operation authorization and permission validation
- Data Integrity: Team data integrity and consistency maintenance
- Change Tracking: Team modification tracking and audit trail
- Compliance Monitoring: Organizational policy compliance and adherence
📝 Usage Examples
Team Coordination
// Retrieve team information
const teams = await getTeams({
accId: accountId,
isOwner: true,
dashclicks: adminRoles,
});
// Update team members
await updateTeam({
userIds: ['user1', 'user2'],
teamName: 'Marketing Team',
operation: 'add',
dashclicks: managerRoles,
});
Team Operations
// Create new team (deprecated)
const newTeam = await createTeam({
name: 'Development Team',
icon: 'dev-icon',
users: ['user1', 'user2', 'user3'],
dashclicks: adminRoles,
});
// Delete team (deprecated)
await deleteTeam({
teamId: 'team_123',
dashclicks: adminRoles,
});
⚠️ Important Notes
- Deprecation Warning:
createTeam()anddeleteTeam()methods are deprecated and will be removed - Multi-tenant Access: Team operations require proper account-based authorization
- Member Coordination: Team member assignments require role validation and access control
- Organizational Structure: Team hierarchy changes require administrative oversight
- Performance Impact: Team operations affect organizational performance and coordination
- Data Integrity: Team modifications require careful data integrity maintenance
- Audit Requirements: All team operations require comprehensive audit trail maintenance