CRM 2013 Javascript Object Model - Contexto

by Pedro Azevedo 28. May 2014 20:04

Boas pessoal,

Chegou a vez de falarmos sobre o Xrm.Page.context. Aqui temos que obter primeiro o objecto de contexto.

context.client.getClient()

Valores de retorno possíveis deste método:

Cliente

Valor

Browser

Web

Outlook

Outlook

Mobile

Mobile

function getClientTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.client.getClient());

}

De referir que este método veio tornar o método isOutlookClient obsoleto.

 

context.client.getClientState()

Valores de retorno possíveis deste método:

Cliente

Valor

Web, Outlook, Mobile

Online

Outlook, Mobile

Offline

function getClientStateTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.client.getClientState());

}

Tal como o método anterior este método veio tornar obsoleto o método isOutlookOnline.

 

context.getClientUrl()

Valores possíveis no retorno:

Cliente

Valor

Microsoft Dynamics CRM (on-premises)

http(s)://server/org

Microsoft Dynamics CRM Online

https://org.crm.dynamics.com

Microsoft Dynamics CRM for Outlook with Offline Access when offline

http://localhost:2525

Na documentação o método getServerURL não vem documentado mas ainda funciona apesar de estar obsoleto deve-se usar sempre o getClientUrl.

 

context.getCurrentTheme()

Este método serve essencialmente para podermos customizar os nossos Recursos Web mediante o theme do Outlook. Valores possíveis de retorno para este método:

Valor

Theme

default

Microsoft Dynamics CRM web application

Office12Blue

Microsoft Dynamics CRM for Outlook 2007 or 2010 Blue Theme

Office14Silver

Microsoft Dynamics CRM for Outlook 2007 or 2010 Silver or Black Theme

function getCurrentThemeTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.getCurrentTheme());

}

Devem ter atenção que alguns destes métodos não funcionam por exemplo nos tablets por isso os métodos acima passam a ser essenciais. Por exemplo este método em específico não funciona nos tablets.

 

context.getOrgLcid()

Esta função permite devolver a linguagem base da organização.

 

function getOrgLcidTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.getOrgLcid());

}

Este valor representa o Português de Portugal. Já agora o Português do Brazil é o 1046.

 

context.getOrgUniqueName()

function getOrgUniqueNameTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.getOrgUniqueName());

}

context.getQueryStringParameters()

Este método serve para ler os query strings passados ao formulário para além dos parâmetros que o CRM envia pode-se passar parâmetros customizados, por exemplo usando a função que já testamos a openEntityForm.

 

function getQueryStringParametersTest() {

                var params = Xrm.Page.context.getQueryStringParameters();

                for(var par in params) {

                               Xrm.Utility.alertDialog("QueryString:" + par + " com o valor " + params[par]);

                }

}

 

 

context.getUserId()
function getUserIdTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.getUserId());

}

 

context.getUserId() 
function getUserLcidTest() {

                Xrm.Utility.alertDialog(Xrm.Page.context.getUserLcid());

}

 

context.getUserName()
Esta função retorna o nome do utilizador.
function getUserNameTest() {

                    Xrm.Utility.alertDialog(Xrm.Page.context.getUserName());

}

 

context.getUserRoles()

function getUserRolesTest() {

                var roles = Xrm.Page.context.getUserRoles();

                for(var role in roles) {

                               Xrm.Utility.alertDialog("Role ID:" + role);

                }

}

context.prependOrgName(sPath)

 

function prependOrgNameTest() {

Xrm.Utility.alertDialog(getClientUrlTest() + Xrm.Page.context.prependOrgName("/XRMServices/2011/OrganizationData.svc/"));

}

 

Neste contexto ainda tenho a referir que o método getAuthenticationHeader foi retirado definitivamente, este tinha permanecido por causa de compatibilidades com o CRM 4.0.

 

Até a próxima

 

Tags: , , , , , , ,

Plugin para intervir na operações especiais - Ganho e Perda da Oportunidade

by Pedro Azevedo 18. May 2014 19:21

Boas pessoal,

Na continuação deste post vou aqui relatar como realizar o dito plugin, um plugin que interfere em operações especiais. Neste caso vai-se referenciar as operações na entidade Oportunidade que permite marcar um registo como Ganho ou Perdido. Imaginamos que se quer verificar se um determinado campo está preenchido, neste caso quero obrigar que o utilizador preencha a descrição antes de fechar a oportunidade.

O código é o seguinte:

public class CloseOpportunity : IPlugin {
	public void Execute(IServiceProvider serviceProvider) {
		ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
		IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

		if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity) {
			Guid oppId = ((EntityReference)((Entity)context.InputParameters["OpportunityClose"]).Attributes["opportunityid"]).Id;

			IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
			IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

			Entity opportunity = service.Retrieve("opportunity", oppId, new Xrm.Sdk.Query.ColumnSet(true));
			if (!opportunity.Contains("description") || string.IsNullOrEmpty(opportunity["description"].ToString()))
				throw new InvalidPluginExecutionException("Para fechar a Oportunidade terá que preencher a descrição");
		}
	}
}

O normal em plugins é esperarmos a entidade no parâmetro “Target” neste caso, esta informação está no parâmetro “OpportunityClose”, ou seja, vem na forma do objecto final, pois quando fechamos uma Oportunidade temos que preencher informações, do estado, receita real, data de fecho e caso seja perdida qual o concorrente que ganhou.

Para verificarmos as propriedades da Oportunidade teremos que obter e no objecto “OpportunityClose” tem o ID da Oportunidade e é com esse ID que vamos obter a Oportunidade relacionada.

No código ainda se pode ressalvar como cancelamos a operação, com recurso a excepção “InvalidPluginExecutionException”, a mensagem que colocamos na excepção é a mensagem que vai aparecer ao utilizador.

Depois do código completo temos que registar o plugin com as seguintes configurações:

  •         Mensagem: Win ou Lose
  •         Entidade Primária: Opportunity
  •         Entidade Secundária: Nenhuma

E registamos no event Pre-Operation para que não seja gravado na BD.

Vamos ver diretamente no Plugin Registration como fica, depois de realizarmos uma ligação, podemos registar o nosso assembly:

 Após selecionarmos a opção "Register New Assembly" aparecerá um formulário para colocarmos o caminho do assembly que contém o nosso plugin e escolhemos qual o Plugin que queremos registar, neste caso estou a selecionar o Plugin acima:

 Se tudo correr bem obtém-se a seguinte mensagem:

Irá aparecer um novo nó com o assembly que se acabou de criar e sobre este vamos adicionar um "passo" (Register New Step):

No formulário a seguir configuramos em que mensagem queremos nos registar, qual a entidade primária, em que fase do pipeline e o modo de execução:

Com isto temos o nosso Plugin registado e pronto a funcionar.

Até a próxima.

Tags: , , , ,

CRM 2013 - Spring Preview

by Pedro Azevedo 14. May 2014 22:04

Boas pessoal,

O Release Preview do próximo release já saiu e eu faço aqui uma análise do que nos espera. Podem fazer download do Release Preview aqui. Este será um dos maiores upgrades que já ocorreram, isto bem feito poderia ser considerado uma nova versão do Dynamics CRM. Hoje vamos explorar o documento.

Este update será automático para os utilizadores de Microsoft Dynamics CRM Online e virá através de um update. Estariam a imaginar um update rollup, mas não terá como denominação Service Pack, neste caso Service Pack 1 (SP1). Pelo que percebi os updates rollups vão continuar normalmente a ser lançados mas os major releases vão passar a denominar-se como service packs.

Como referi aquando do Convergence este release vai afectar três áreas:

Marketing

Como sabemos o módulo de marketing presente atualmente no Microsoft Dynamics CRM é bastante simples e não fornece todas as capacidades que uma equipa de Marketing necessita. E como é referido no documento as equipas de Marketing possuem muitas ferramentas que não se interligam entre elas para gerirem campanhas de Marketing.

Com este intuito a Microsoft desenvolveu este novo produto que se interliga com o Microsoft Dynamics CRM e que será específico para as equipas de Marketing, o Microsoft Dynamics Marketing.

Como podemos ver na imagem uma forma visual e drag and drop para configurarmos a nossa campanha com múltiplos canais, email, redes sociais, etc. com o objetivo de gerarmos Leads qualificadas.

A gestão do ciclo de vida de uma Lead uma das grandes funcionalidades deste novo produto, gerir desde a aquisição, pontuação, distribuição e segmentação entre o marketing e as vendas. A possibilidade de as equipas de marketing poderem construir um modelo de pontuação das leads permite que qualifiquemos com muita mais eficácia as Leads.

Na homepage desta ferramenta poderemos adicionar indicadores de performance, relatórios com informações sobre Leads geradas, efetividade dos emails, etc.

A configuração das mensagens de email são muito configuráveis com um editor (dava jeito ter um igual no Dynamics CRM) muito poderoso:

Poderá personalizar o conteúdo por quem envia, recebe e pelo motivo. Algumas das funcionalidades:

  • APIs abertas para suportar envio de emails por aplicações externas, fazendo o controlo dentro do Dynamics Marketing.
  • Entrega de emails de uma forma massiva e transacional para escalar milhões de emails para clientes por dia.
  • Controlar o número de emails enviados num determinado período de tempo a um contacto para evitar o aborrecimento dos clientes.

Avaliar e analisar dados do Dynamics Marketing com relatórios específicos Power BI.

Vendas

A área das vendas foi a área que menos alterações obteve, mas absorve muitas das vantagens na melhoria dos outros módulos, pois receber Leads com mais informações e qualificadas da parte Marketing irá gerar mais vendas. Mesmo assim pode-se destacar melhorias nas aplicações tablet com suporte offline, onde todos os dados visualizados ficam em cache para permitindo assim a sua visualização quando se perde a conectividade.

A disponibilização do Insights que já tinha falado num post anterior quem vem melhorar a informação sobre os contactos, poupando muito tempo em pesquisas, estando tudo concentrado no próprio contacto ou cliente. Estará disponível para o CRM Online sem custos adicionais para clientes com licenças profissionais, neste momento apenas para os estados unidos, estando previsto para o final de 2014 a disponibilização global.

Serviço a Cliente

Um dos módulos com mais alterações é o módulo de serviço ao cliente. Um das atualizações mais interessantes para as equipas de apoio ao cliente com a disponibilização do Unified Service Desk (USD) quem vem substituir o antigo CCA.

Com uma configuração realizada dentro do Microsoft Dynamics CRM, permite ter num único sítio todas as aplicações necessárias para prestar o melhor serviço ao cliente através de qualquer canal, automatizando tarefas e poder gerir várias sessões de clientes em simultâneo:

Penso que todos os que tenham estado pelo menos um ano dentro de um CRM implementou algo para dar suporte a SLAs, com este novo upgrade este problema vem resolvido de raiz:

Isto traz o poder de customizar e automatizar regras quando um SLA estiver quase ultrapassado. Na imagem anterior estamos a ver várias novidades, um controlo de timer que pode mostrar quanto tempo falta ou o tempo decorrido de uma SLA:

O conceito de “entitlement” uma espécie de contrato de serviço, que rapidamente nos diz que nível de suporte poderemos dar ao nosso cliente:

Ainda sobre um incidente temos mais algumas novidades:

  • Noção de pai/filho

·         Podermos realizar merge de dois incidentes para o mesmo caso:

  •  Criação automática de incidentes:

Regras para criação de incidentes automáticos quando um email é recebido ou por análise as redes sociais, onde converte o email ou o post automaticamente num incidente.

Até aqui as aplicações mobile apenas suportavam entidades de vendas, a partir de agora existe um suporte as entidades de serviço a cliente nomeadamente:

  • Incidentes e itens de filas com suporte de leitura e escrita
  • Entitlements e filas com suporte de leitura

Parature

O grande poder desta ferramenta é oferecer uma ligação com o cliente independentemente do dispositivo e canal que este utiliza. Neste momento o Parature oferece:

  • Portal – um sítio central 24 horas nos 7 dias da semana que facilmente é integrado na página web da organização. Onde os clientes pesquisam sobre a base dados de conhecimento com as Perguntas e Respostas mais realizadas. Ainda é possível por exemplo submeter, controlar e receber notificações de um incidente.
  • Mobile – uma aplicação web mobile compatível com a maior parte dos dispositivos móveis.
  • Portal Facebook – clientes e consumidores podem ver as perguntas e respostas mais efetuadas, ver as últimas atualizações, bem como submeter incidentes. Outra das funcionalidades dentro do Facebook é a possibilidade de integrar o char ao vivo dentro da página da empresa.

Social

Com a ferramenta Microsoft Social Listening ficamos com o poder de seguir os nossos produtos, marcas, concorrentes e campanhas estão a ser vistos em múltiplos canais com o Facebook ou Twitter.

Podem ver posts anteriores em que falo em algumas funcionalidades desta ferramenta.

Plataforma

Uma funcionalidade mais genérica é a possibilidade de podermos criar regras nas transições de estado, ou seja, podermos que dizer que quando uma entidade estiver num determinado estado só pode ir para determinados estados:

No último grande release tinha sido introduzido a sincronização server-side de email, tarefas, apontamentos e contactos para os ambientes on-premise entre o Dynamics CRM e o Exchange. Com esta release também é disponível para os ambientes online e ambas as ferramentas. Para além do Exchange Online são suportados os fornecedores de email POP3\SMTP23 para o envio e sincronização de emails. A ferramenta Email Router ainda continua a ser suportada.

A integração com Sharepoint foi melhorada entre os produtos online deixando de haver a necessidade de instalar o “CRM List Component”. Passará haver um aviso semelhante ao aviso do cliente Outlook a dizer que não existe integração com o Sharepoint.

Foram acrescentadas funcionalidades nos ambientes de desenvolvimento ou de testes (conhecidos como sandbox):

Na imagem anterior podemos ver o novo centro de administração de instâncias e desta tiramos as principais novas funcionalidades:

  • Cópia – Podemos realizar dois tipos de cópia. Copia simples que contém esquema e customizações de um ambiente para o outro. Cópia completa que inclui também dados, utilizadores.
  • Reset – poder fazer reset as instâncias sandbox, basicamente é apagar tudo e colocar uma instância nova.
  • Snapshot – Poder realizar um snapshot ou restaurar um, nas instâncias sandbox.

Foram também melhoradas algumas questões ao nível da plataforma. Uma novidade é quando vamos exportar podermos exportar para soluções que podem ser carregadas em versões inferiores a atual.

Temos acesso a novas ferramentas - CRM Package Deployment Tool e CRM Configuration Migration Tool. Houve melhorias no Plugin Registration Tool e no Toolkit para o Visual Studio. Existe um maior suporte ao Powershell. Uma nova API – Microsoft.Xrm.Tooling.xxx. OAuth discovery para suportar clientes ISV e Office. E o operador OR nos workflows.

Para finalizar o suporte a novas versões de várias tecnologias:

  • Windows 8.1
  • Internet Explorer 11
  • iOS7 Safari on iPad (web application)
  • iPad Air using Safari (web application)
  • Windows Server 2012 R2 (CRM server)
  • iPad Air using CRM for Tablets

Pessoal muita coisa para um único upgrade, por isso toca a pegar nas vossas instâncias e preparar-nos para o que aí vem.

 

Até a próxima.

Tags: , , , ,

CRM 2011 - UR17

by Pedro Azevedo 9. May 2014 01:21

 Boas pessoal,

Quando os olhos estão virados para a saída do SP1 do Dynamics CRM 2013, saiu mais um rollup para o Dynamics CRM 2011, UR17.

O grande destaque vai para os utilizadores do Internet Explorer 11 tanto para o Windows 8.1 e Windows 7, pois passam a ter suporte. O KB com mais de 60 issues resolvidos podem ser vistos aqui. Para fazer download pode ser aqui.

 

Até a próxima.

Tags: ,

Tudo sobre WebResources IV

by Administrator 2. May 2014 06:58

Boas pessoal,

Um post rápido só para acrescentar informação ao post sobre utilização de WebResources, tinha referido que havia quatro áreas (Dashboard; Navegação no Formulário; SiteMap – Sub Area; Ribbon) onde os WebResources se poderiam utilizar.

Existe uma outra área onde esta funcionalidade pode ser utilizada, que é na página de configuração de uma solução. Que obrigatoriamente se quisermos ter uma página de informação ou configuração teremos que associar uma página HTML. Confesso que a nível profissional nunca tinha utilizado, mas como ando a trabalhar em dois add-ons para o Dynamics CRM, esta página fez toda a diferença.

Para configurarmos a nossa página de configuração temos que ir a solução e no nó “Informações” temos um campo chamado “Página de Configuração” permite colocarmos a nossa página HTML, com informações e que caso seja necessários parâmetros para configurarmos a nossa solução:

 

Após colocarmos a página de configuração, aparecerá um novo nó intitulado como “Configuração” onde se visualiza a página de configuração adicionada:

A página de configuração é muito simples apenas para vermos a causa efeito. Mas aqui pode-se ter vários campos onde se guarda parâmetros da solução. Imaginemos que esta solução permitia enviar emails e estes teriam que ter uma assinatura da empresa, então haveria um campo de texto que permitia guardar o texto da assinatura, quando o componente de envio de email desta solução fosse utilizado iria-se ler este parâmetro.

A próxima pergunta é como podemos guardar este tipo de configuração, este assunto será alvo de um novo post após eu lançar um dos add-ons.

 

Até a próxima.

Tags: , , , ,

About

Muito bem casado, Pai babado e um gosto muito grande pela tecnologia.

Tenho um lema "Sharing is Learning"

Mais aqui -> http://www.psazevedo.com

Month List