Flow Name: On Person Account: Members Buyer Groups assignment¶
Last Updated: 2025-08-13 Source Code: On_Person_Account_Members_Buyer_Groups_assignment.flow-meta.xml
API Name: On_Person_Account_Members_Buyer_Groups_assignment Status: Active Type: Custom Trigger: After Person Account create/update when buyer-related fields change
Business Purpose¶
Ensures Person Accounts are assigned to the correct buyer group based on their membership status and type, maintaining accurate pricing and product access. PR-33436 changed logic to ensure only one buyer group per account.
Process Flow¶
- Triggers when Person Account buyer-related fields change:
- Membership_category__c, Member_Type__c, Membership_status__c
- Is_a_Fellow__c, Fellow_Designation__c
-
Buyer_Account_Created__c, Buyer_Account_Enabled__c, PersonMailingCountryCode
-
Remove Old Assignments:
- Retrieves membership-related buyer groups (contains "Member" or "General Buyer")
- Gets all current BuyerGroupMember assignments
-
Deletes existing assignments to ensure single group membership
-
Determine New Buyer Group:
- Fellows: If Is_a_Fellow__c = true AND designation NOT "Deceased" or "Former" → "Fellow Buyer Group"
- Individual Non-Member: If status Expired/Never member AND country = US → "Individual Non Member"
- Associate Member: Member_Type__c = "Associate Member"
- Career Starter: Member_Type__c = "Career Starter Member"
- Licensed NP Student: Member_Type__c = "Licensed NP Student Member"
- Lifetime Member: Member_Type__c = "Lifetime Member"
- Student (Local): Category = "All Individual Members" AND type contains "Student" but NOT "International"
- NP Member: Member_Type__c = "NP Member"
-
Retired Member: Member_Type__c = "Retired Member"
-
Assign or Route to Country Groups:
- If matched to member type group: Creates BuyerGroupMember
- Else: Calls Country_Buyer_Group_Assignment subflow for international tier assignment
📊 Click to view Process Flow Diagram
flowchart TD
Start([Start: Account Create/Update<br/>After Save<br/>Person Account & Buyer]) --> GetBuyerGroups[Get Membership Buyer Groups:<br/>Contains 'Member' or 'General Buyer']
GetBuyerGroups --> CheckBuyerGroups{Buyer Groups<br/>Found?}
CheckBuyerGroups -->|No| End([End])
CheckBuyerGroups -->|Yes| GetAssignments[Get Existing BuyerGroupMember<br/>Records for this Account]
GetAssignments --> CheckAssignments{Assignments<br/>Found?}
CheckAssignments -->|Yes| Unassign[Delete Existing<br/>BuyerGroupMember Records]
CheckAssignments -->|No| CheckNonMember{Check Status}
Unassign --> CheckNonMember
CheckNonMember -->|Fellow Active| GetFellow[Get Fellow Buyer Group]
CheckNonMember -->|Expired/Never Member<br/>& US Address| GetNonMember[Get Individual Non-Member<br/>Buyer Group]
CheckNonMember -->|Active Member| CheckMemberType{Member Type?}
CheckMemberType -->|Associate Member| GetAssociate[Get Associate Member Group]
CheckMemberType -->|Career Starter| GetCareer[Get Career Starter Group]
CheckMemberType -->|Licensed NP Student| GetLicensed[Get Licensed NP Student Group]
CheckMemberType -->|Lifetime Member| GetLifetime[Get Lifetime Member Group]
CheckMemberType -->|Student Local| GetStudent[Get Student Member Group]
CheckMemberType -->|NP Member| GetNP[Get NP Member Group]
CheckMemberType -->|Retired Member| GetRetired[Get Retired Member Group]
CheckMemberType -->|Other| BuyerGroupFound{Any Group Found?}
GetFellow --> BuyerGroupFound
GetNonMember --> BuyerGroupFound
GetAssociate --> BuyerGroupFound
GetCareer --> BuyerGroupFound
GetLicensed --> BuyerGroupFound
GetLifetime --> BuyerGroupFound
GetStudent --> BuyerGroupFound
GetNP --> BuyerGroupFound
GetRetired --> BuyerGroupFound
BuyerGroupFound -->|Yes| CreateAssignment[Create BuyerGroupMember:<br/>Assign Account to Group]
BuyerGroupFound -->|No| CallCountry[Call Subflow:<br/>Country_Buyer_Group_Assignment]
CreateAssignment --> CallCountry
CallCountry --> End
style Start fill:#e1f5ff
style GetBuyerGroups fill:#f0e1ff
style GetAssignments fill:#f0e1ff
style GetFellow fill:#f0e1ff
style GetNonMember fill:#f0e1ff
style GetAssociate fill:#f0e1ff
style GetCareer fill:#f0e1ff
style GetLicensed fill:#f0e1ff
style GetLifetime fill:#f0e1ff
style GetStudent fill:#f0e1ff
style GetNP fill:#f0e1ff
style GetRetired fill:#f0e1ff
style CheckBuyerGroups fill:#fff4e1
style CheckAssignments fill:#fff4e1
style CheckNonMember fill:#fff4e1
style CheckMemberType fill:#fff4e1
style BuyerGroupFound fill:#fff4e1
style Unassign fill:#ffe1e1
style CreateAssignment fill:#ffe1e1
style CallCountry fill:#f0e1ff
style End fill:#e1f5ff
Key Business Rules¶
- Only processes Person Accounts (IsPersonAccount = true)
- Requires IsBuyer = true
- Account can have only ONE buyer group at a time (PR-33436)
- Fellows take priority over all other assignments
- Individual Non-Member only applies to US accounts with expired/never member status
- Falls back to country-based international tier if no member type matches
Dependencies¶
- Objects: Account (Person), BuyerGroup, BuyerGroupMember
- Subflows: Country_Buyer_Group_Assignment
- Buyer Groups: Fellow, Individual Non Member, Associate Member, Career Starter, Licensed NP Student, Lifetime Member, Student Member, NP Member, Retired Member, General Buyer
- Fields: Member_Type__c, Membership_category__c, Membership_status__c, Is_a_Fellow__c, Fellow_Designation__c
Changes¶
PR-33436: Changed buyer group logic to ensure only one buyer group per account.
⚠️ Pre-Go-Live Concerns¶
CRITICAL - Fix Before Go-Live¶
- Hardcoded Buyer Group Names: All buyer group names are hardcoded strings - should use Custom Metadata
- Missing Error Handling: No fault paths for buyer group creation failures
- Race Condition Risk: Rapid field changes could cause multiple group assignments before delete completes
HIGH - Address Soon After Go-Live¶
- Incomplete Member Types: Flow assumes all possible member types are covered - new types require flow update
- Performance: Deletes ALL membership buyer groups before assigning new one - could be inefficient
- No Validation: Doesn't verify buyer groups exist before attempting assignment
MEDIUM - Future Enhancement¶
- Logging: Add error logging when buyer groups not found
- Audit Trail: Track buyer group changes for compliance reporting
- Flexible Configuration: Use Custom Metadata to define buyer group assignment rules
LOW - Monitor¶
- Missing Assignments: Monitor for accounts without buyer groups (edge cases)
- Multiple Groups: Verify PR-33436 fix works - check for accounts with multiple buyer groups
- Country Subflow: Ensure Country_Buyer_Group_Assignment subflow is active
Maintenance Notes¶
Complexity: High - Complex decision tree with 8+ member type paths plus subflow call Review Schedule: Review monthly when new member types or buyer groups are added Critical Business Logic: Controls pricing and product access - changes must be carefully tested PR-33436 Impact: Major logic change to enforce single group - verify no regression