Por que um modelo de compartilhamento reativo é mais difícil do que um bem planejado

O problema típico não é percebido no primeiro mês. Ele se manifesta quando um gerente de vendas regional nota que está vendo uma oportunidade de um território concorrente, ou quando um agente de serviço abre um caso de um cliente VIP que deveria ser acessível apenas a uma equipe dedicada. Ambos os cenários são resultado direto de uma ordem de trabalho invertida: objetos e campos são definidos, e somente no final se questiona quem deveria ver o quê.

O modelo de visibilidade no Salesforce é construído em camadas que funcionam juntas, não isoladamente: Organization-Wide Defaults (OWD) estabelece a linha de base mais restritiva, Role Hierarchy adiciona acesso vertical com base na estrutura gerencial, Sharing Rules abrem acesso horizontal baseado em critérios de negócio, Teams e Manual Sharing tratam de casos específicos, e Apex Managed Sharing entra em cena quando a lógica é muito complexa para ser expressa estaticamente. Essa ordem é crucial: qualquer camada escolhida prematuramente gera uma dívida que é difícil de desfazer, pois permissões já concedidas são percebidas como um direito adquirido.

O Mapa das Camadas e Quando Cada Uma é Apropriada

CamadaO Que ResolveQuando EscolherRisco de Escolha Incorreta
OWDLinha de base: quem não pode ver nada por padrãoSempre definido, geralmente "Private" para objetos sensíveisOWD muito aberto torna outras camadas redundantes
Role HierarchyAcesso vertical do gestor às informações dos subordinadosQuando a estrutura de gestão reflete a necessidade de supervisão de dadosHierarquia "política" que não corresponde à propriedade real dos dados
Sharing RulesAbertura de acesso horizontal por critério fixo (função, grupo, valor de campo)Equipe inter-hierárquica que precisa de acesso ao mesmo tipo de registroMúltiplas regras sobrepostas, dificultando saber quem concedeu o acesso
Public GroupsAgrupamento de usuários para compartilhamento, independente da hierarquiaQuando um grupo de trabalho não corresponde a uma única função organizacionalGrupos não atualizados quando um colaborador muda de função
Account/Case TeamsAcesso variável em um único registro, conforme a composição da equipeQuando cada cliente ou caso possui uma equipe única e variávelManutenção manual que é esquecida quando a equipe muda
Territory ManagementAtribuição de acesso baseada em regras dinâmicas e multidimensionaisAtribuição variável por várias características simultâneas, acesso paralelo para vários representantesComplexidade de manutenção que não se justifica abaixo de um certo limite organizacional
Apex Managed SharingCompartilhamento derivado de lógica dinâmica que não pode ser expressa estaticamenteCritério que depende de cálculo, evento externo ou combinação de camposCódigo sem monitoramento que continua a executar após a mudança da necessidade de negócio

OWD: A Decisão que Define Tudo o Mais

O OWD não é apenas uma configuração de segurança técnica — é uma declaração organizacional sobre quem é o proprietário principal da informação. A regra prática: defina o OWD para o estado mais restritivo que seja realmente necessário, e a partir daí, expanda o acesso usando Sharing Rules, e não o contrário. A razão: expandir o acesso pontual é fácil e documentado, enquanto restringir o acesso já existente exige comunicação organizacional, pois os usuários percebem a perda de acesso como um prejuízo, mesmo que seja a correção de um erro histórico.

Um ponto que nem sempre recebe atenção suficiente: o OWD é definido separadamente para cada objeto, e objetos dependentes (Master-Detail) herdam a visibilidade do objeto principal. Ao construir um novo modelo de dados, é essencial verificar a cadeia de dependência completa antes de definir o OWD — caso contrário, um objeto "secundário" inadvertidamente definido como Público pode expor informações do objeto principal.

Hierarquia de Funções Versus Estrutura Gerencial Real

O erro mais comum é replicar o organograma na Role Hierarchy tal como ele é, sem verificar se ele também reflete o fluxo de propriedade dos dados. Um gerente regional precisa ver as oportunidades de sua equipe — esta é uma função gerencial. Mas um CFO não precisa ver automaticamente todos os casos de serviço apenas por estar em uma posição superior na hierarquia geral; se houver tal necessidade, ela deve ser resolvida por uma Sharing Rule direcionada, e não por uma hierarquia excessivamente ampla.

Uma hierarquia de compartilhamento separada da hierarquia de relatórios organizacional é uma solução legítima e, por vezes, preferível, especialmente em organizações com uma estrutura matricial onde os relatórios gerenciais não se alinham com a propriedade dos dados do cliente.

Matriz de Decisão: O Que Ativa Cada Mecanismo de Compartilhamento

  • A necessidade varia por função fixa e previsível → Role Hierarchy.
  • A necessidade é compartilhada por um grupo de trabalho que transcende funções → Public Group + Sharing Rule.
  • A necessidade varia conforme a composição da equipe em um único registro → Account Team ou Case Team.
  • A necessidade depende de uma combinação de condições dinâmicas (geografia, produto, porte do cliente) → Territory Management.
  • A necessidade deriva de um cálculo, evento externo ou condição que não pode ser expressa estaticamente → Apex Managed Sharing.
  • A necessidade é uma exceção pontual e temporária para um único registro → Manual Sharing, com supervisão e documentação.

Esta matriz deve ser elaborada antes de iniciar o trabalho nas ferramentas, e não em paralelo — caso contrário, um mecanismo será escolhido com base no que é familiar à equipe de desenvolvimento, e não no que é mais adequado à necessidade.

Cenário Ilustrativo: Fabricante de Equipamentos Industriais com Três Canais de Venda

Considere um fabricante hipotético de equipamentos industriais com aproximadamente 180 usuários Salesforce, operando por meio de três canais: venda direta por região geográfica, venda por meio de distribuidores e venda para contas estratégicas globais gerenciadas em paralelo por vários representantes em diferentes países.

A tentativa inicial de usar apenas a Role Hierarchy falhou: uma conta estratégica global não pertence a uma única hierarquia regional, e um representante na Alemanha não via as atualizações de seu colega no Brasil na mesma conta. A solução escolhida combinou três camadas: OWD em Account e Opportunity foi definido como “Private”; a Role Hierarchy foi usada para o acesso gerencial padrão dentro de cada região; e para contas estratégicas, um Account Team dinâmico foi configurado para ser atualizado automaticamente via Flow quando o campo "Strategic Account Owner Region" fosse alterado. Os distribuidores receberam acesso separado por meio de uma Sharing Rule baseada em um Public Group dedicado, para não serem expostos às contas de venda direta.

Resultado: O tempo de Recálculo de Compartilhamento permaneceu estável, pois a maior parte do acesso deriva de uma estrutura constante (Role, Public Group) e apenas uma minoria das contas — as estratégicas — depende de atualizações dinâmicas. A principal lição: não existe um único mecanismo "certo" para toda a organização; é preciso adaptar o mecanismo ao tipo de dependência de cada subconjunto de registros. Mais detalhes sobre a escolha de padrões de integração e um modelo de dados de suporte estão disponíveis no Guia de Arquitetura de CRM.

Riscos Específicos do Planejamento de Visibilidade e Ações Preventivas

RiscoComo se Manifesta na PráticaAção Preventiva
OWD aberto "temporariamente" na fase pilotoA abertura permanece mesmo após o sistema entrar em produção plenaDefinir uma data de fechamento prévia e documentá-la como um item de Go-Live, não como recomendação
Múltiplas Sharing Rules sobrepostasImpossibilidade de saber com certeza por que um usuário vê um registro específicoNomenclatura padrão para cada regra, incluindo a razão de negócio, e revisão periódica de regras não usadas
Apex Sharing sem testes de execução sob cargaCálculo de compartilhamento que atrasa com o aumento do volume de dadosExecutar teste de carga no Recálculo de Compartilhamento antes de dobrar o volume de registros em produção
Hierarquia de compartilhamento copiada de hierarquia organizacional políticaGerentes veem dados para os quais não têm necessidade de negócioSeparar a hierarquia de funções para fins de compartilhamento da hierarquia de relatório oficial, quando não forem idênticas
Manual Sharing acumulado sem proprietárioPermissões excepcionais permanecem após a razão para o compartilhamento não ser mais relevanteProcesso de expiração ou revisão trimestral de compartilhamentos manuais
Mudança de função do usuário sem atualização de grupos públicosAcesso antigo permanece aberto e novo acesso está ausenteIntegrar a atualização de grupos e funções como uma única etapa no processo de mudança de status do colaborador

Checklist Antes de Finalizar o Modelo de Compartilhamento

  • ☐ OWD configurado de acordo com a condição mais restritiva exigida, não pela conveniência da fase de desenvolvimento.
  • ☐ A cadeia de dependência entre objetos Master-Detail foi verificada em relação ao OWD do objeto principal.
  • ☐ A Role Hierarchy foi verificada em relação à propriedade real dos dados, e não apenas em relação ao organograma.
  • ☐ Toda Sharing Rule possui uma razão de negócio documentada e um proprietário responsável por sua validade.
  • ☐ Verificado se o Territory Management é realmente necessário ou se representa uma complexidade desnecessária.
  • ☐ O código Apex Sharing foi testado sob um volume de dados realista, e não apenas em um ambiente Sandbox pequeno.
  • ☐ Existe um processo para atualização de grupos públicos e permissões em caso de mudança de função ou desligamento.
  • ☐ Uma frequência de revisão periódica foi definida para Manual Sharing e Sharing Rules inativas.
  • ☐ O impacto do modelo de compartilhamento no desempenho de relatórios e execuções de Batch grandes foi avaliado.
  • ☐ Existe um plano de resposta para o caso de uma exposição excessiva ser descoberta em produção.

Como Saber se o Modelo Suporta a Carga

A primeira métrica é o tempo de Recálculo de Compartilhamento após uma mudança estrutural — um aumento consistente ao longo do tempo indica que o modelo está se aproximando de uma complexidade não planejada. A segunda métrica é o número de solicitações de suporte do tipo "não tenho acesso" versus "tenho acesso desnecessário" — uma proporção que pende drasticamente para um lado sugere que o OWD ou as Sharing Rules não estão calibrados corretamente. A terceira métrica, especialmente importante em organizações com múltiplos sistemas, é a consistência entre as permissões do Salesforce e as permissões em sistemas sincronizados — em particular quando se trata de arquiteturas de integração baseadas em eventos, conforme descrito no Guia de Arquitetura Orientada a Eventos no Salesforce.

Em organizações que utilizam múltiplos "Orgs", a questão do modelo de compartilhamento é muitas vezes interligada à pergunta sobre se é realmente necessário mais de um ambiente de produção — a discussão completa está em Salesforce Single Org versus Multi Org, e na escolha do padrão de integração correspondente no Guia de Padrões de Integração Salesforce.

Resumo

Um bom modelo de compartilhamento e visibilidade não é medido no dia do lançamento — ele é medido quando a organização cresce, quando um usuário muda de função e quando alguém pergunta "por que não estou vendo isso?". A maneira de chegar lá não é escolhendo uma única ferramenta e a aplicando a tudo, mas sim mapeando cada grupo de registros de acordo com seu tipo de dependência — fixa, horizontal, dinâmica ou excepcional — e escolhendo o mecanismo apropriado para cada um. OWD restrito por padrão, Role Hierarchy que reflete a verdadeira propriedade, Sharing Rules com uma razão documentada, e Apex Sharing apenas quando a lógica o justifica — essa é a combinação que se sustenta mesmo quando a organização dobra de volume e complexidade.