Skip to main content

ACM (Account Client Management)

The Admin ACM module provides subscription analytics, team management, and client relationship administration within the DashClicks platform.

📋 ACM Submodules

Core ACM Management

  • ACM Analytics - Subscription analytics, performance metrics, and filtering operations
  • Client Management - Subscription assignments and client relationship management
  • Team Operations - Team management and user assignment operations

🏗️ Architecture Overview

  • Location: internal/api/v1/admin/routes/acm.route.js
  • Service: internal/api/v1/admin/services/acm.service.js
  • Controller: internal/api/v1/admin/controllers/acm.controller.js
  • Route Prefix: /v1/admin/acm
  • Authorization: DashClicks staff with ACM management permissions

📊 Module Statistics

SubmoduleKey Features
ACM AnalyticsAnalytics, filtering, subscription metrics
Client ManagementSubscription assignments, client relationships
Team OperationsTeam management, user coordination

🚀 Key Administrative Features

Subscription Analytics

  • MRR Analysis: Monthly Recurring Revenue tracking and analytics
  • Subscription Metrics: New subscriptions, cancellations, churn, and retention analytics
  • Product Analytics: Product-specific performance and revenue analysis
  • Date Range Analytics: Flexible date range analysis with trend comparison

Team Assignment Management

  • Subscription Assignment: Assign subscriptions to specialists, team leads, and managers
  • Role-based Access: Role validation for subscription assignments
  • Team Coordination: Multi-role team assignment and collaboration
  • Workload Distribution: Team member workload tracking and optimization

Administrative Controls

  • Filter Management: Dynamic filtering for analytics and subscription management
  • Team Operations: Team creation, updates, and member management
  • User Management: User role updates and ACM permission management
  • Audit Logging: Comprehensive logging of all ACM operations

🔧 Service Methods & Business Logic

Core Analytics Services

queryAnalytics({ filters, startDate, endDate, types, products, specialist, team_lead, manager, unassigned, trialing })

  • Business Logic: Processes complex subscription analytics across multiple dimensions with automatic period-over-period comparison
  • Key Features:
    • Multi-type Analytics: Supports MRR, ASL, RET, EXP, NEW, CAN, CHR, RATE, CANBD analytics simultaneously
    • Date Range Processing: Automatically calculates comparison periods (current vs previous) for trend analysis
    • Price Normalization: Converts different billing intervals (daily, weekly, monthly, yearly) to standardized monthly amounts
    • Advanced Filtering: Filters by products, team assignments, project status, and assignment status
    • Parallel Processing: Uses Promise.allSettled for concurrent execution of multiple analytics types
  • MongoDB Collections: stripe.subscriptions, _store.subscriptions, _store.orders
  • Returns: Structured analytics data with comparison metrics and trend analysis

queryFilters({ filters, accId })

  • Business Logic: Dynamically generates available filtering options based on user permissions and account context
  • Key Features:
    • Role-based Filtering: Returns only users with allowed ACM roles (specialist, team_lead, manager)
    • Product Counts: Aggregates subscription counts by product type for filter options
    • User Assignment Counts: Counts subscriptions assigned to each team member
    • Status Analytics: Provides counts for project statuses, unassigned, and trialing subscriptions
    • Permission Context: Filters based on user's department access and role permissions
  • MongoDB Collections: _users, stripe.subscriptions
  • Returns: Filter options with counts for dynamic dashboard controls

Subscription Management Services

querySubscriptions({ filters, startDate, endDate, limit, page, products, specialist, team_lead, manager, sortBy, sortOrder, unassigned, trialing })

  • Business Logic: Retrieves subscription data with advanced filtering, pagination, and sorting capabilities
  • Key Features:
    • Advanced Pagination: Efficient pagination for large subscription datasets
    • Multi-field Sorting: Supports sorting by creation date, amount, account names, product names, status
    • Account Hierarchy: Properly handles main account vs sub-account relationships
    • Assignment Status: Filters by assigned vs unassigned subscriptions
    • Trial Status: Separates trialing subscriptions from active subscriptions
    • Cancellation Data: Includes feedback data for cancelled subscriptions
  • MongoDB Collections: stripe.subscriptions, _accounts, _store.products, _store.subscriptions.feedback
  • Returns: Paginated subscription data with account information and assignment details

assignSubscription({ filters, subscriptionId, userId, role, accountId })

  • Business Logic: Assigns subscriptions to team members with comprehensive validation and role checking
  • Key Features:
    • Role Validation: Ensures user has appropriate ACM role for assignment
    • Cross-role Assignment: Allows managers to assign as specialists, team leads to assign as specialists
    • Business Rule Enforcement: Validates subscription exists and is assignable
    • Socket Notifications: Emits real-time notifications for subscription assignments
    • Audit Trail: Maintains comprehensive assignment history and changes
    • Multi-role Updates: Can assign specialist, team_lead, and manager roles simultaneously
  • MongoDB Collections: stripe.subscriptions, _store.subscriptions, _store.orders, _users
  • Returns: Updated subscription with assignment details

Team Management Services

getTeams({ accId, isOwner, dashclicks })

  • Business Logic: Retrieves team information with member details and organizational structure
  • Key Features:
    • Permission Validation: Ensures user has appropriate access to team information
    • Team Hierarchy: Provides complete team structure and member relationships
    • Role Context: Includes team member roles and ACM permissions
    • Account Scoping: Filters teams by account boundaries and access rights
  • MongoDB Collections: admin.teams, _users
  • Returns: Team structure with member details and role information

updateTeam({ isOwner, dashclicks, userIds, teamName, operation })

  • Business Logic: Updates team membership with add/remove operations and role validation
  • Key Features:
    • Operation Types: Supports 'add' and 'remove' operations for team members
    • Role Validation: Ensures user has permission to modify team structure
    • Bulk Operations: Can add/remove multiple users in single operation
    • Team Integrity: Maintains team structure and prevents orphaned assignments
  • MongoDB Collections: admin.teams
  • Returns: Updated team structure with operation results

User Management Services

getUsers({ accId, isOwner, dashclicks })

  • Business Logic: Retrieves user information within ACM context with role-based filtering
  • Key Features:
    • ACM Role Filtering: Shows only users with ACM-related roles and permissions
    • Team Integration: Includes team membership and assignment information
    • Permission Context: Respects user's access level and account boundaries
    • Profile Data: Includes user profile information and images
  • MongoDB Collections: _users, admin.teams
  • Returns: User list with ACM roles, team memberships, and profile data

updateUser({ accId, userId, role, isOwner, dashclicks, enabled })

  • Business Logic: Updates user ACM roles and permissions with validation
  • Key Features:
    • Role Assignment: Updates user's ACM role (specialist, team_lead, manager)
    • Permission Validation: Ensures requesting user has authority to modify roles
    • Enable/Disable: Can enable or disable user's ACM access
    • Cascading Updates: Updates related team assignments and subscription assignments
  • MongoDB Collections: _users
  • Returns: Updated user with new ACM role and permissions

Authorization Framework

  • DashClicks Staff Only: All operations restricted to verified administrative staff
  • Role-based Access: Granular permissions based on ACM roles (specialist, team_lead, manager)
  • Multi-tenant Support: Account-based access control and data segmentation
  • Audit Logging: Comprehensive logging of all ACM administrative actions

Data Management

  • MongoDB Integration: Optimized aggregation pipelines for subscription analytics
  • Real-time Processing: Live analytics and filtering capabilities
  • Complex Filtering: Multi-dimensional filtering across products, teams, and dates
  • Performance Optimization: Efficient queries for large subscription datasets

🔍 Quick Reference

Common ACM Operations

OperationSubmoduleKey Endpoints
Get AnalyticsACM AnalyticsGET /v1/admin/acm/analytics
Get SubscriptionsClient ManagementGET /v1/admin/acm/subscriptions
Get FiltersACM AnalyticsGET /v1/admin/acm/filters
Assign SubscriptionClient ManagementPUT /v1/admin/acm/assign
Get TeamsTeam OperationsGET /v1/admin/acm/teams
Update TeamTeam OperationsPUT /v1/admin/acm/teams

Authentication Requirements

All ACM endpoints require:

  • Valid DashClicks staff authentication
  • ACM management permissions based on role
  • Appropriate role-based access validation (specialist, team_lead, manager)

🔗 Integration Points

The Admin ACM module integrates with:

  • Subscription System: Core subscription management and Stripe integration
  • Team Management: Internal team coordination and role assignments
  • Analytics System: Platform-wide analytics and reporting integration
  • Account Management: Account hierarchy and parent account relationships
  • User Management: User role management and ACM permissions

📝 Usage Notes

  • All ACM operations require DashClicks staff authentication
  • Subscription assignments are validated against user roles and capabilities
  • Analytics support complex filtering across multiple dimensions
  • Team operations include deprecated methods (createTeam, deleteTeam)
  • Real-time analytics processing for immediate insights
  • Multi-tenant access control based on account hierarchy
  • Comprehensive audit logging for all administrative actions
💬

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:31 AM