mirror of
https://github.com/SuiteCRM/SuiteCRM.git
synced 2026-03-02 19:16:58 -05:00
Fair Case Distribution Not Including Agents with Zero Cases #5338
Labels
No labels
Area: API
Area: Campaigns
Area: Cases
Area: Clean Up
Area: Clean Up: Performance
Area: Dashlets
Area: Databases
Area: Developer Tools
Area: Elasticsearch
Area: Elasticsearch
Area: Emails
Area: Emails:Campaigns
Area: Emails:Cases
Area: Emails:Compose
Area: Emails:Config
Area: Emails:Templates
Area: Environment
Area: Installation
Area: Language
Area: Mobile
Area: Module
Area: PDFs
Area: PHP8
Area: Reports
Area: Studio
Area: Styling
Area: Upgrading
Area: Workflow
Area:Activity Stream
Area:Calls
Area:Import
Area:Projects
Area:Search
Area:Surveys
Area:Themes
Area:Users
Branch:Hotfix
Good First Issue
Hacktoberfest
Help Wanted
PR:Community Contribution
PR:Type:Enhancement
Priority:Critical
Priority:Important
Priority:Moderate
Severity: Major
Severity: Minor
Severity: Moderate
Status: Requires Code Review
Status: Requires Updates
Status: Stale
Status: Team Investigating
Status:Assessed
Status:Fix Proposed
Status:Needs Assessed
Status:Requires Automated Tests
Type: Bug
Type:Deprecated
Type:Discussion
Type:Duplicate
Type:Invalid
Type:Question
Type:Suggestion
Type:Suggestion
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/SuiteCRM-SuiteCRM#5338
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Aradhyagarg on GitHub (Oct 4, 2025).
Issue
When using the Least Busy distribution method for inbound email case assignment in SuiteCRM 7.14.3, agents with zero active cases were being skipped in workload calculations.
This led to unfair case distribution, where some agents never received new cases, while others continued to get overloaded.
Expected Behavior
Agents with zero open cases should be included in the workload calculation.
Closed cases are still counted in the workload calculation (as per current fix).
Possible Fix
Updated the query in getLeastBusyCounts() to ensure:
Agents with zero active cases are included.
Deleted cases are excluded (c.deleted = 0).
Uses a LEFT JOIN to ensure fair count across all assignable users.
Before (Existing Code):
$res = $db->query("SELECT assigned_user_id, COUNT() AS c
FROM cases
WHERE assigned_user_id IN ({$idIn})
AND deleted = 0
GROUP BY assigned_user_id
ORDER BY COUNT()");
After (Fixed Code):
$res = $db->query("SELECT u.id AS assigned_user_id, COUNT(c.id) AS c
FROM users u
LEFT JOIN cases c
ON c.assigned_user_id = u.id
AND c.deleted = 0
WHERE u.id IN ({$idIn})
GROUP BY u.id
ORDER BY c ASC");
This ensures
Agents with zero cases are still counted (LEFT JOIN handles that).
Deleted cases are ignored.
Distribution becomes fair and balanced among all agents.
Steps to Reproduce the Issue
Context
This bug caused unfair case distribution: some agents never received any tickets while others handled most of the workload.
Fixing it ensures equal opportunity and workload balance among all active agents. The issue was discovered during inbound email automation testing and fixed locally by adjusting the query logic.
Version
SuiteCRM 7.14.3
What browser are you currently using?
Chrome
Browser Version
Chrome Version 129.0.6668.100 (64-bit)
Environment Information
PHP 8.2, MySQL 8.0, (XAMPP local setup)
Operating System and Version
Windows 11
Suggested Labels:
buginbound-emailcase-moduleenhancementfixedready-for-review