Segue aqui uma dica de como executar um trecho de codigo sobre o contexto de outro usuario que nao a propria aplicacao.A classe utiliza bibliotecas nativas do Windows para autenticar o e assim identificar o contexto do usuario que voce vier definir como o "executor" do trecho de codigo que precisa ser "impersonado".Exemplo de usoi da classe "Impersonator":using (new Impersonator( "admin", "dominio", "minha_senha123" )){Util.LogEntry("Quem passou por esse trecho de codigo foi o administrador");//Segue executando outras operacoes sob o contexto do usuario "admin"}A classe implementa a interface IDisposable. Assim, podemos instanciar a classe usando a diretiva using e aninhar o codigo a ser "impersonado" nesse escopo. Como todos sabemos, assim que o codigo sai do escopo da diretiva using, o metodo Dipose e invocado atumaticamente.Como voces podem ver no codigo, o metodo Dispose esta implementado de forma a devolver o contexto para o usuario default assim que for chamado.Mas e se caso eu queira compilar essa classe e cede-la a alguem que pretenda usa-la num codigo VB .NET? Em VB .NET nao existe a diretiva "using".Basta chamar o Metodo Dispose explicitamente ou o metodo "UndoImpersonation();".Chega de conversa e vamos ao download do codigo.E isso ai.Abraco e ate o proximo postReferencias: A classe original foi desenvolvida por Uwe Keim e modificada por mim. Participei semana passada de um treinamento sobre o CRM 4.0, ministrado por Joe Hominick (Microsoft Regional Director).O treinamento e a experiencia com o pessoal que participou do treinamento foi muito bacana.Foram mostradas todas as novidades e melhorias com relacao a versao 3.0. E que melhorias.A mais aclamada pelo pessoal foi o famoso relacionamento N:N. Esqueca as gambiarras ("hackings") e as linker tables que voce costumava fazer pra conseguir o relacionamento N:N. Callouts agora sao "plugins". A novidade e que, alem de em disco, se pode armazenar a assembly no banco de dados.Quanto a maneira de se programar os plugins, isso nao mudou muito com relacao a 3.0. Praticamente a mesma coisa. Exceto por nao se usar mais o conceito de eventos (PreCreate, PreUpdate, PreSetState...). As classes SDK sao praticamente as mesmos. A diferenca e que agora temos servicos especificos para cada tipo de deploy do CRM (on premise - que e o que conhecemos hoje no CRM 3.0, live ou on-demand.). CRMs configurados como On-demand ou Live tem certas restricoes com relacao a plugins, mas para CRM configurado como On-Premise, o ceu e o limite.E possivel criar entidades e atributos de forma programatica. Os Workflows de workflow so mativeram o nome. Agora tudo e baseado no Windows Workflow Foundation. Outra novidade e a escalabilidade. A plataforma (o SDK) pode ser instalada em servidor diferente do servidor de aplicacao. A plataforma e capaz de validar diversas condicoes pre-configuradas, como duplicidade (tratamento de concorrencia) e validacao de dados. Tudo podendo ser configurado em ambiente visual, ou seja, atraves da aplicacao.Outra coisa bacana e o reporting server agora nao precisar estar em um dominio de confianca. Muito mais simples de se configurar.Foram apresentadas tambem muitas novidades sobre BI com CRM. Conteudo bastante extenso que pretendo comentar aqui num futuro post.Houve quem esperasse mais do