Division Hierarchy Structure¶
RCX supports hierarchical division structures that mirror organizational hierarchies and enable sophisticated access control patterns.
Division Hierarchies¶
You can organize divisions hierarchically using the parent field, which
references another division's ObjectId.
Example Hierarchy
Hierarchical Access Control¶
User access based on division position:
- Super Parent User (SP1): Can access all descendant divisions (Site1, Site1Sub1, Site1Sub2, Site2, Site2Sub1, Site2Sub2)
- Mid-Level User (Site1): Can access parent divisions (SP1) and child divisions (Site1Sub1, Site1Sub2) but not divisions in a sibling branch (Site2, Site2Sub1, Site2Sub2)
- Leaf User (Site1Sub1): Can access parent divisions (SP1, Site1) but not sibling divisions (Site1Sub2) or divisions in a sibling branch (Site2, Site2Sub1, Site2Sub2)
Table 1. Access Matrix by Entity Type
| Entity Type | Read Access | Write Access |
|---|---|---|
| Members | No restrictions | User division + Child divisions |
| Member Data (Purse, Tier, Reward, Offer, MemberSegment, Streak, Aggregate, ActivityHistory, AccrualItem, RedemptionItem) | User division + Parent divisions + Child divisions | Activity Processing: User division + Child divisions + Parent divisions + Empty divisions REST API: User division + Child divisions |
| Reference Data (Location, Product, Segment, Program Flow) | User division + Parent divisions + Child divisions | User division + Child divisions |
| Program Components (Program, Policies, Rules, Folders) | User division + Parent divisions + Child divisions | User division + Child divisions |
| CustomExpression | User division + Parent divisions + Child divisions + Empty divisions | User division + Child divisions |
Policy and Segment Associations in Hierarchies¶
When divisions are organized hierarchically, the associations between reward policies, tier policies, and their related segments must follow specific validation rules to maintain consistency across parent-child relationships.
Depending on whether your policies span a single hierarchy or multiple hierarchies, segments and tier policies must meet different requirements to ensure proper data integrity. Understanding these association rules is critical for correctly configuring segments and tier levels within your hierarchical division structure.
Reward Policy/Rule Association with Segments¶
When working with hierarchical divisions, segment associations must follow specific rules:
Single-Hierarchy Associations:
- If a reward policy belongs to a single hierarchy (such as Child division), associated segments can belong to any level in that hierarchy (GrandParent, Parent, Child, GrandChildren)
Multi-Hierarchy Associations:
- If a reward policy has divisions from multiple hierarchies, every associated segment must include divisions from all represented hierarchies
- Segments belonging to only one hierarchy cause validation errors
Example
Tier Policy Level Associations¶
Similar rules apply to tier policy associations:
- Single-Hierarchy: Tier levels must belong to the reward policy's hierarchy
- Multi-Hierarchy: Tier policies must include divisions from all hierarchies represented in the reward policy
Activity Execution with Division Hierarchy¶
Activity processing respects the hierarchical division structure for enhanced flexibility:
Hierarchical Activity Execution:
- Users can execute actions on entities belonging to their division hierarchy (parent and child divisions).
- Activity location divisions are expanded to include the full hierarchy for validation.
- Program default divisions support hierarchy-based fallback assignment.
Examples
- Add Points Action: Can target purses belonging to parent or child divisions within the user's hierarchy
- Reward Issuance: Can award rewards from parent or child divisions
- Tier Actions: Can execute tier changes across the division hierarchy
Division Evaluation Priority:
- User's Active Division
- Activity Location Divisions (expanded to hierarchy)
- Program Default Division (expanded to hierarchy)
Enhanced RBAC + ABAC Enforcement¶
The system enforces both Role-Based Access Control (RBAC) and Attribute-Based Access Control (ABAC) simultaneously, where the attribute is a division.
Dual permission check:
- RBAC Check: User's role must grant the required permission
- Division ABAC Check: User's division must have the required permission flag set
Both checks must pass for the action to be allowed. If either fails, access is denied.
Example Scenarios
- User has RBAC update permission + Division has
permissions.update = true→ Allowed - User has RBAC update permission + Division has
permissions.update = false→ Denied with error:Access denied. Your division "%s" does not have permission to update.
Division permission defaults: