Skip to content

๐Ÿ”„ Scheduled Flow: Add Members To Conservation Group

This scheduled Salesforce Flow ensures that all eligible site users (Community Users) are members of the Conservation Chatter Group, and logs each action for auditing.


Access


๐Ÿ“† Schedule

  • Runs Once at 04:30 AM Pacific
  • Type: Scheduled Flow
  • Trigger: Platform-Scheduled, not user-initiated

Note: This flow has been deactivated to ensure members who Opt Out of the Conservation group are not put back into teh group the next day.


๐ŸŽฏ Purpose

This Flow:

  • Adds eligible users (active site users) to a specific Chatter Group (CollaborationGroup).
  • Skips users who are already members of the group.
  • Logs each operation (only added) into the Conservation_Group_Membership_Log__c object. Can be viewed here: Conservation Group Membership Logs

๐Ÿ“‹ Criteria for Eligible Users

The flow targets active Community users, defined as:

User.IsActive = true
AND (
  User.UserType = 'Customer Portal User' OR
  User.UserType = 'PowerCustomerSuccess' OR
  User.UserType = 'PowerPartner'
)

These users are queried via a Get Records element labeled Get_User_Records.


๐Ÿงฑ Flow Structure

1. Get Existing Group Memberships

  • Retrieves all CollaborationGroupMember records for the Conservation Group.
  • Group ID is hardcoded as: 0F91N000000m2jESAQ.

โ €2. Get Active Community Users * Loads active site users matching the criteria above.

โ €3. Loop Through Each User * For each user: * Filters existing memberships to check if the user is already in the group. * Uses a Decision node (Member in Group?) to branch:


๐Ÿค– Decision Logic

โŒ If the user is not already a group member

  • Assigns:
  • CollaborationGroupId = 0F91N000000m2jESAQ
  • MemberId = User.Id
  • CollaborationRole = Standard
  • Adds the new member record to a collection for batch creation.
  • Logs the action with:
  • Message__c = "Added To Conservation Group"

โ €โœ… If the user is already a member: * Loops through their existing CollaborationGroupMember record(s) * Logs the status: * Message__c = "Already a Member"


๐Ÿ“ฆ Record Creation

At the end of all processing:

  • The flow bulk-creates all new CollaborationGroupMember records.
  • It also bulk-creates all Conservation_Group_Membership_Log__c log entries.

๐Ÿ›  Key Variables and Resources

Variable Name Type Description
variable_collaboration_group_members Collection of CollaborationGroupMember Holds new group members to create
variable_conservation_group_logs Collection of Conservation_Group_Membership_Log__c Holds logs for both added and skipped users
variable_collaboration_group_member Single CollaborationGroupMember Template record used per user
variable_conservation_log Single Conservation_Group_Membership_Log__c Template log record used per user

๐Ÿงพ Logging Details

Each log record stores: * User_ID__c * Username__c * Email__c * Group_Member_Id__c * Role__c * Updated_At__c (timestamp) * Message__c: either "Added To Conservation Group" or "Already a Member"


โš ๏ธ Edge Cases Handled

  • Users not in the group are added and logged.
  • Users already in the group are skipped.
  • The Chatter Group ID is hardcoded to prevent accidental misrouting.
  • Only users who are eligible site users are processed.

๐Ÿ“ˆ Monitoring & Auditing

Admins can monitor execution by:

  • Querying the Conservation_Group_Membership_Log__c object
  • Filtering by Updated_At__c or Message__c
  • Verifying membership through CollaborationGroupMember records

๐Ÿš€ Future Enhancements

Feature Notes
Dynamic Group Selection Use custom metadata or Flow input variables instead of hardcoding Group ID
Error Handling Add fault paths to log or notify errors during record creation
Notification Email Optionally email a summary of actions after each run