[PM-16095] Fix up messages for Teams error messages for seat counts - #8406
Conversation
…ed as per ticket requirements
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE Reviewed the seat-limit error message changes across the legacy Code Review Details
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #8406 +/- ##
=======================================
Coverage 64.64% 64.64%
=======================================
Files 2482 2482
Lines 106388 106409 +21
Branches 9666 9670 +4
=======================================
+ Hits 68774 68791 +17
- Misses 35272 35275 +3
- Partials 2342 2343 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ed. Also discussed on team sync
…-16095-fixes-for-validation-seat-error-messages
| /// <summary> | ||
| /// Design approved the seat-count wording for the invite flow only, so the substitution happens here rather | ||
| /// than inside <see cref="CanScaleAsync"/>. Any other failure reason is passed through untouched. | ||
| /// </summary> |
There was a problem hiding this comment.
❓ QUESTION: The members-grid "Send invite" action is a second invite entry point and keeps the old neutral wording.
Details
POST /organizations/{orgId}/users/send-invite (OrganizationUsersController.SendInviteToStagedUsers, no feature flag) goes through InviteStagedOrganizationUsersCommand.ReserveSeatsAsync, which calls organizationService.AutoAddSeatsAsync and returns new SeatExpansionFailed(ex.Message) — a BadRequestError whose message is surfaced per row to the caller. AutoAddSeatsAsync re-runs CanScaleAsync, so that message is SeatLimitHasBeenReachedMessage ("Seat limit has been reached.").
Result: an admin inviting staged members from the members grid at the autoscale cap sees the old wording, while the same admin inviting through Invite sees "Seat limit of 120 has been reached. Increase your seat limit to invite more members."
Since the substitution lives in InviteUsersAsync only, was the Design-approved wording scoped to the invite modal deliberately, or should ReserveSeatsAsync map the neutral message the same way? If it should, exposing ToInviteSeatLimitMessageAsync (or an equivalent mapper) rather than duplicating the comparison would keep the two paths in step.
jrmccannon
left a comment
There was a problem hiding this comment.
This looks good. Thanks for making those changes.
🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-16095
📔 Objective
Terminology fixes for error messages for seat validation error messages
📸 Screenshots
Can manage billing (Teams):

Cannot manage billing (Teams):
