๐ 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¶
- Flow: Scheduled: Add Members To Conservation Group
- Logs: Conservation Group Membership Logs
- GitHub: Scheduled_Add_Members_To_Conservation_Group.flow-meta.xml
๐ 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 |