Ha alguns meses atras precisei criar um codigo no Salesforce que, em uma determinada situacao, criava um novo Lead associado a uma campanha. Sempre vi, no Layout de tela do Lead o campo "Campanha". Alem de disponivel no Layout, o campo Campaign aparece como um relacionamento de pesquisa do Lead com a Campanha, na lista de campos do Lead. Mais que depressa tentei utilizar esse campo no meu codigo para criar o Lead ja associado a campanha. Porem ao tentar salvar meu codigo, eis que recebo a seguinte mensagem:Erro de compilacao: Invalid field Campaign for SObject LeadAchei estranho e fui pesquisar. O que descobri foi que esse campo, de fato nao existe no Lead. O que existe e um objeto chamado CampaignMember. E esse deve ser usado para relacionar o Lead a uma campanha. Dessa forma, um Lead pode estar associado a varias campanhas. Veja o codigo: CampaignMember cm = new CampaignMember(); cm.CampaignId = campanha.id; //id da Campanha cm.LeadId = novoLead.id; //id do Lead insert cm; Bem, para mais informacoes sobre o objeto CampaignMember, acesse a documentacao oficial do Salesforce:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_campaignmember.htmPor hora, e apenas isso!* Esta precisando de um suporte ou uma consultoria na gestao de Lead e Campanhas no seu Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/Somos parceiros gerenciados pela Salesforce! Apesar do titulo, elas funcionam sim e muito bem :) Bem, o que aconteceu recentemente foi que um colega da empresa implementou algumas regras de atribuicao de Casos e elas nao estavam funcionando. Simplesmente, quando o Caso era criado e atendia as condicoes da regra, esse nao era atribuido a fila que haviamos determinado na regra de atribuicao. Fui analisar as regras e elas estava configuradas perfeitamente. Qual seria o problema entao?Apos algumas pesquisas descobri que, para as regras de atribuicao "rodarem", e necessario que a opcao "Atribuir utilizando regras de atribuicao" esteja marcada na abertura do caso.Porem, no meu caso, esse campo nem estava visivel. Mas e possivel deixa-lo visivel (ou nao) e deixa-lo marcado (ou nao) por padrao. Para tal, e necessario acessar o Layout de tela do Caso/Lead, acionar as propriedades de Layout e configurar os campos da secao "Caixa de selecao Atribuicao do caso": No meu caso especifico, deixei o "Mostrar na pagina de edicao" desmarcado, para evitar que o usuario desmarque a opcao e deixei o "Padrao" marcado. Apos salvar o Layout, Casos comecaram a ser atribuidos corretamente para as filas definidas nas regras de atribuicao. E importante ressaltar que essas mesmas opcoes estao disponiveis para o Lead.Apesar dessas facilidades de configuracao, caso a criacao do caso seja via codigo, integracao ou qualquer outra forma, que nao seja o Layout de tela, as regras de compartilhamento nao serao executadas. Dessa forma, e necessario fazer uma trigger para forcar a execucao das regras de atribuicao:trigger CaseTrigger on Case (after insert) { List<Case> casos = new List<Case>(); Database.DMLOptions dmo = new Database.DMLOptions(); dmo.AssignmentRuleHeader.useDefaultRule = true; for(Case c : trigger.new) { Case casoAtualiza = new Case(Id = c.id); casoAtualiza.setOptions(dmo); casos.add(casoAtualiza); } update casos; }E... realmente tem que ser uma trigger AFTER INSERT. Procurei uma explicacao simples para tal