In a previous entry I mapped out sharing abilities the Salesforce platform is capable of.
In this entry I will put these capabilities to practial use. The scenario starts with a customer logging into the customer community and raising a ticket. Client representative, the partner and support staff need/want access to the case. The case needs to flow along the same processing as cases created by other means (call, email, IoT). The following diagram explains the flow (click for a larger version):
The diagram has been rendered using Websequencediagrams based on a plain text file:
title Sharing of Customer Created Cases participant Customer Portal User participant Account Owner participant Case queue participant Partner participant Support Team participant Support Specialist alt Owned by customer note right of Customer Portal User Customer Portal User has No roles, no hierachy end note Customer Portal User->Customer Portal User:Create Case Customer Portal User->Account Owner: Role setting note left of Account Owner [Account Owner]: User in this role can view all cases associated with account end note Customer Portal User->Support Team: Share Group note over Customer Portal User, Support Team Public Groups, Roles (hierarchical) or Users, no Queues end note Support Team->Support Specialist: Group membership end Customer Portal User->Case queue: Case assignment rule / Trigger (Napli) note over Customer Portal User, Case queue reassign ownership to *Queue* to match other case sources end note alt Owned by Queue Case queue->Partner: Account team / Apex sharing note over Case queue, Partner Opt1: Partner rep is field in account: then Apex (manual sharing) Opt2: Partner rep is part of the Account team: Account Team member access end note Case queue->Customer Portal User: Access via sharing set note right of Customer Portal User Own cases, or company cases Sharing set assigned to profiles end note Case queue->Support Team: Queue membership note over Case queue, Support Team Ready to be picked by Support Team member end note Support Team->Support Specialist: Group membership note over Customer Portal User, Support Specialist Existing sharing results (carried forward) end note Case queue->Account Owner: Role setting Case queue->Partner: Account Team / Apex end Case queue->Support Specialist: Pick from queue note right of Case queue: Case handling starts here alt Owned by Support Specialist Support Specialist->Support Team: Sharing rules note left of Support Specialist: Retain team access note over Customer Portal User, Support Specialist Existing sharing results (carried forward) end note Support Specialist->Customer Portal User: Access via sharing set Support Specialist->Account Owner: Role setting Support Specialist->Partner: Account Team / Apex end
As usual YMMV