CRM 2015 – Lançamento!

Pessoal,

Não estamos na data oficial de lançamento (acredito que seria nos primeiros dias de dezembro), porém, já temos acesso ao CRM 2015, para novas organizações no CRM Online já podemos encontrar as novas funcionalidades:

crm2015_1

Para organizações com a versão OnPremises, podemos baixar os instaladores:

http://www.microsoft.com/en-us/search/DownloadsDrillInResults.aspx?q=crm+2015&cateorder=2_5_1&site

Agora é testar as novas funcionalidades!

#GoDynamics!

[]’s,

Tiago Cardoso

Publicado em Dynamics CRM | Marcado com , , | Deixe um comentário

CRM 2015 – What’s New

Pessoal,

Do mesmo modo que tivemos nos releases anteriores, o Customer Center, está com uma página de What’s New do CRM 2015!

http://www.microsoft.com/en-us/dynamics/crm-customer-center/what-s-new.aspx

whatsnews2015

#GoDynamics!

[]’s,

Tiago Cardoso

Publicado em Dynamics CRM | Marcado com , | Deixe um comentário

CRM 2013 – Rollup 3

Pessoal,

Um pouco atrasado, mas em tempo. O rollup 3 do CRM 2013 foi lançado! Temos como premissa a instalação do Service Pack 1 e depois podemos instalar o rollup 3.

Para maiores informações vide:

http://support.microsoft.com/kb/2930480

[]’s,

Tiago Cardoso

Publicado em Dynamics CRM | Marcado com | Deixe um comentário

CRM 2015 – Ordem de Execução das Extensões (JScripts, Plugins, Worflows)

Pessoal,

Algo que não fica 100% clarificado no SDK seria a Ordem de Execução de nossas Extensões (Pipeline de Execução), observando a referência do SDK, não fica claro por exemplo em que ordem um real time workflow é executado, não estamos abrangendo as extensões do lado cliente, dentre outros pontos.

pipeline1

 

Assim realizei alguns testes, fiz a leitura de algumas documentações e cheguei a seguinte conclusão:

1 – JScript Core do CRM

2 – JScript (Síncrono)

3 – Regras de Negócio (Business Process)

4 – Plugin (Síncrono) – Pre Event

5 – Operações (Regras de Negócio) Core do CRM

6 – Plugin (Síncrono) – Post Event

7 – Workflow (Real Time – Síncrono)

Ai você vai me perguntar e se for Assíncrono, certo!? Qualquer processo que seja Assíncrono, será executado após todas as etapas acima!

*Este post também vale para CRM 2013

[]’s,

Tiago Cardoso

 

Publicado em Dynamics CRM | Marcado com , , , | Deixe um comentário

CRM 2015 – Cortana Vídeo Promocional

Pessoal,

Já temos o vídeo promocional do Cortana funcionando integrado com o Dynamics CRM 2015!!!

 

 

A mudança está vindo à passos largos!

#MobileFirst

#CloudFirst

#GoDynamics

 

[]’s,

Tiago Cardoso

 

Publicado em Dynamics CRM | Marcado com | Deixe um comentário

CRM 2013 – Execuções Múltiplas (Execute Multiple)

Pessoal,

Outra melhoria para o time de desenvolvimento que deu-se após o release Polaris no CRM 2011, foi a criação da classe “ExecuteMultipleRequest” que nos possibilita adicionarmos milhares de requisições com o WCF/Banco de Dados do CRM em um único objeto.

O resultado deste agrupamento de requisições é um ganho significativo na performance, mas eu também considero a possibilidade de “aceitarmos” erros nas transações como outro grande diferencial. Sim, podemos configurar para que caso existam erros não seja lançada uma exceção e as demais iterações irão ser executadas. Cabe a funcionalidades que estamos trabalhando determinar se precisaremos criar uma espécie de log ou simplesmente desconsiderarmos os erros transacionais.

Os lugares onde mais seria utilizado este recurso seriam em customizações que envolvem grande quantidade de iterações com o CRM, em pacotes ETL (SSIS) e principalmente no CRM Online para escalarmos nossas iterações (dividir para conquistar).

big-data

Bom, vamos ao termos mas técnicos e seu uso…

Precisamos de várias iterações ao sendo realizadas ao mesmo tempo, para isso, criei alguns objetos entities:

// Cria o objeto Entity com uma nova Account
Entity account1 = new Entity("account");
account1.Attributes.Add("name", "TESTE_1_" + DateTime.Now);

// Cria o objeto Entity com uma nova Account
Entity account2 = new Entity("account");
account2.Attributes.Add("name", "TESTE_2_" + DateTime.Now);

// Cria o objeto Entity com uma nova Account
Entity account3 = new Entity("account");
account3.Attributes.Add("nameXXXXX", "TESTE_3_" + DateTime.Now); // NOTEM QUE O ATRIBUTO "nameXXXXX" NÃO EXISTE NA ENTIDADE ACCOUNT, OU SEJA, CASO NÃO SEJA TRATADO TEREMOS UM EXCEÇÃO

Agora teremos que criar o objeto “ExecuteMultipleRequest”:

// Create an ExecuteMultipleRequest object.
ExecuteMultipleRequest requestMultiple = new ExecuteMultipleRequest()
{
 // Assign settings that define execution behavior: continue on error, return responses.
 Settings = new ExecuteMultipleSettings()
 {
 ContinueOnError = true, // ESTA PROPRIEDADE QUE PERMITE IGNORARMOS ERROS E CONTINUARMOS A EXECUTAR AS ITERAÇÕES
 ReturnResponses = false
 },
 // Create an empty organization request collection.
 Requests = new OrganizationRequestCollection()
};

 

Por fim, devemos adicionar as iterações no objeto de requisições múltiplas (requestMultiple), notem que estamos adicionando “CreateRequest” nos “Request’s”, isso deve-se a estarmos iterando “Create’s”, este objeto deve ser trocado para tipo diferente de iteração (Update, Delete, SetState, etc):

CreateRequest createRequest;

createRequest = new CreateRequest { Target = account1 };
requestMultiple.Requests.Add(createRequest);

createRequest = new CreateRequest { Target = account2 };
requestMultiple.Requests.Add(createRequest);

createRequest = new CreateRequest { Target = account3 };
requestMultiple.Requests.Add(createRequest);

// Realizar as Execuções Múltiplas
ExecuteMultipleResponse responseWithResults = (ExecuteMultipleResponse)localContext.OrganizationService.Execute(requestMultiple);

* Por já estarmos em uma requisição múltipla o método “ExecuteMultipleRequest” não é suportado.

 

O código completo é o a seguir:

// Create an ExecuteMultipleRequest object.
 ExecuteMultipleRequest requestMultiple = new ExecuteMultipleRequest()
 {
 // Assign settings that define execution behavior: continue on error, return responses.
 Settings = new ExecuteMultipleSettings()
 {
 ContinueOnError = true,
 ReturnResponses = false
 },
 // Create an empty organization request collection.
 Requests = new OrganizationRequestCollection()
 };

 // Cria o objeto Entity com uma nova Account
 Entity account1 = new Entity("account");
 account1.Attributes.Add("name", "TESTE_1_" + DateTime.Now);

 // Cria o objeto Entity com uma nova Account
 Entity account2 = new Entity("account");
 account2.Attributes.Add("name", "TESTE_2_" + DateTime.Now);

 // Cria o objeto Entity com uma nova Account
 Entity account3 = new Entity("account");
 account3.Attributes.Add("nameXXXXX", "TESTE_3_" + DateTime.Now);

 CreateRequest createRequest;

 createRequest = new CreateRequest { Target = account1 };
 requestMultiple.Requests.Add(createRequest);

 createRequest = new CreateRequest { Target = account2 };
 requestMultiple.Requests.Add(createRequest);

 createRequest = new CreateRequest { Target = account3 };
 requestMultiple.Requests.Add(createRequest);

 // Realizar as Execuções Múltiplas
 ExecuteMultipleResponse responseWithResults = (ExecuteMultipleResponse)localContext.OrganizationService.Execute(requestMultiple);

Como eu definido a propriedade ContinueOnError como “Verdadeira” não teremos uma exceção sendo criada, porém apenas os dois primeiros objetos Accounts serão criados no CRM:

executemultiple
Código simples mas ganhamos grandes!

[]’s,

Tiago Cardoso

Publicado em Dynamics CRM | Marcado com , , | Deixe um comentário

CRM 2015 – Cortana (Assistente Pessoal Digital)

Pessoal,

 

Um grande novidade tornou-se pública, no CRM 2015 teremos o Cortana (Assistente Pessoal Digital da Microsoft) embarcado. Deste modo, poderemos realizar algumas ações via voz, como pro exemplo pesquisar contatos, contas e atividades, visualizar a listagem de clientes e até criar novas contas! Tudo isso usando comandos de voz!!!

Cortana-578-80

Para saber mais sobre o Cortana acesse: Meet Cortana

#GoDynamics!

[]’s,

Tiago Cardoso

Publicado em Dynamics CRM | Marcado com | Deixe um comentário