Summary
Riva includes a performance safeguard that enforces a maximum attendee threshold. When a meeting exceeds this limit, it is synchronized to Salesforce as an unshared appointment to prevent the creation of an excessive number of attendee and EventRelation records. However, if Distribution List (DL) expansion fails, this safeguard can be unintentionally bypassed. In that scenario, large meetings may sync as shared appointments, resulting in significant record volume and potential performance impact. This article outlines the relationship between DL expansion and the attendee threshold logic, and provides guidance on identifying and resolving the issue.
Symptoms / Issue
When encountering this issue, users may experience:
- Large meetings syncing to Salesforce as shared appointments when they would normally be synchronized as unshared.
- An unusually high number of attendee-related records (
EventRelationrecords) created for a single meeting. - The Salesforce Invitees component becoming slow or unresponsive due to the volume of attendee relationships.
- Increased synchronization activity and elevated processing load during sync cycles.
- In some cases, missing or incomplete calendar updates if Salesforce relationship or record limits are reached
Cause of the Issue
How max attendee and Distribution list expansion are related
Riva applies a configurable maximum attendee threshold (default: 50) to determine when a meeting should no longer be processed as a standard shared event. If the total attendee count exceeds this limit, the meeting is synchronized to Salesforce as an unshared activity, meaning each user receives an individual parent record rather than a single shared event.
- Default Behavior: Max attendee threshold (performance safeguard)
- Distribution List expansion (required for accurate attendee evaluation)
- Failure mode: Distribution List expansion fails --> safeguard not applied --> shared sync explosion
1. Default Behavior: Max attendee threshold (performance safeguard)
To protect performance and avoid excessive attendee processing in Salesforce, Riva enforces a maximum attendee threshold for meetings. By default, this threshold is set to 50 attendees and is controlled by the following setting:
Sync.Crm.SkipAttendeeMatchOnMaxAttendeeCount
When an Exchange meeting exceeds this limit (e.g., 1,000 attendees with a limit of 50) Riva should:
- Sync the meeting to Salesforce so time is blocked.
- Sync it as an unshared event (each syncing user gets their own parent copy).
- Skip attendee resolution and attendee creation in Salesforce to avoid heavy processing and large
EventRelationwrites.
2. Distribution List expansion (required for accurate attendee evaluation)
When a meeting uses a Distribution List, Riva is designed to expand the Distribution List and then count the resulting attendees; that expanded count is what drives the max‑attendee safeguard.
3. Failure Scenario: Distribution List Expansion Prevents Threshold Evaluation
If a Distribution List (DL) cannot be expanded — due to mailbox type limitations, insufficient permissions, or Exchange not returning member details — Riva is unable to accurately determine the true attendee count for the meeting.
Because the attendee threshold evaluation depends on a resolved attendee list, the large-meeting safeguard may not be applied as intended. In this situation, the meeting can be processed as a standard shared event instead of being converted to an unshared activity.
This may result in:
A meeting that exceeds the configured attendee threshold syncing as a shared event
A significant number of Salesforce attendee (EventRelation) records being created for a single meeting
Increased synchronization activity and higher processing load during affected sync cycles.
Important note
A broad fallback approach — where any Distribution List expansion failure automatically results in an unshared meeting — is not recommended. Doing so could incorrectly convert legitimate shared meetings into unshared activities, altering expected behavior for users.
Instead, remediation should be intentionally scoped to known large or broadcast Distribution Lists, where the attendee volume is understood and the safeguard is appropriate.
Resolution / Steps
- Identify the Distribution List(s) involved
- Enable the Distribution List expansion failure key
- Configure known large/broadcast Distribution Lists to skip attendee resolving (forces "unshared")
- Verify the max attendee safeguard is set appropriately
- Validate the fix
1. Identify the Distribution List(s) involved
- Find an example meeting that synced incorrectly as shared.
- Record the Distribution List email address(es) used as recipients (e.g., NationalAdvisor@company.com)
2. Configure Known Large or Broadcast Distribution Lists to Bypass Attendee Resolution
As a targeted mitigation, configure specific large or broadcast Distribution Lists to skip attendee matching. This ensures that meetings containing these Distribution Lists are treated as unshared, regardless of individual member resolution.
-
Set the following configuration key on the policy:
Sync.Crm.SkipAttendeeMatch.LargeDistributionGroupAddressesToSkip
Add the email address(es) of the known large or broadcast Distribution Lists used for high-attendee meetings (comma separated list, case insensitive).
After updating the setting, save and deploy the configuration to apply the change.
Expected result
- If a configured large Distribution List is present, Riva will:
- Skip attendee resolution
- Sync the meeting as unshared
- Avoid generating large attendee/EventRelation sets in Salesforce
3. Verify the max attendee safeguard is set appropriately
-
Confirm this key is set to your intended value:
Sync.Crm.SkipAttendeeMatchOnMaxAttendeeCount
Reminder: By default the value is 50.
- Validate the intended behavior:
- Over threshold --> meeting syncs as unshared and without attendees in Salesforce.
4. Validate the fix
- Run a sync cycle (or wait for the next scheduled sync).
- Confirm the large meting now syncs as unshared.
- Confirm Salesforce no longer shows excessive attendee/EventRelation records for that meeting.
- Review logs to confirm attendee resolving was skipped due to:
- max-attendee threshold and/or
- the large Distribution List skip list
Related to