CRM 2013 Javascript Object Model - Utility

by Pedro Azevedo 22. April 2014 01:22

Boas pessoal,

Como vos tinha prometido aqui vão exemplos de chamada a cada uma das funções Javascript que apresentei no post sobre o novo object modelo do CRM. Vou dividir em vários posts e vou dividir pelo mesmo critério que separei em tabelas:

Por isso vou começar pelo Xrm.Utility

Xrm.Utility.alertDialog(message,onCloseCallback)

function testAlertDialog(){
                Xrm.Utility.alertDialog("Mensagem a dizer que vou mudar o Nome da Empresa", function () {
                               Xrm.Page.getAttribute("companyname").setValue("Novo Nome");
                });
}

Por isso já sabem pessoal deixem de utilizar o alert e passem a usar esta função suportada.

Xrm.Utility.confirmDialog(message,yesCloseCallback,noCloseCallback)

function confirmDialogTest() {
                Xrm.Utility.confirmDialog("Quer mudar o Nome da Empresa?", function () {
                                               Xrm.Page.getAttribute("companyname").setValue("Mudei o nome da empresa");
                               },
                               function () {
                                               Xrm.Page.getAttribute("companyname").setValue("Não mudei o nome da empresa");
                               }
                );
}

 

Xrm.Utility.isActivityType(entityName)

function isActivityTypeTest() {
                Xrm.Utility.alertDialog("Cliente Potencial é uma entidade de actividade" + Xrm.Utility.isActivityType("lead"));
                Xrm.Utility.alertDialog("Email é uma entidade de actividade" + Xrm.Utility.isActivityType("email"));
}

Xrm.Utility.openEntityForm(name,id,parameters)

Esta função já merece uma descrição mais pormenorizada, para além do que o nome sugere que é a abertura de um formulário com um determinado registo, caso não coloquemos nada no parâmetro id ele abre um formulário de criação. No parâmetro parameters pode receber alguns parâmetros:

  • formid para poder especificar um formulário, quando existe mais que um;
  • parâmetros para passar valores por defeito quando existe um formulário de criação;
  • parâmetros query string quando um formulário está configurado para receber query string customizadas – não vou dar nenhum exemplo pois implica outras alterações, já está marcado para realizar um post mais tarde.
function openEntityFormTest() {
                Xrm.Utility.openEntityForm("account");
                Xrm.Utility.openEntityForm("account","D045613F-3CBF-E311-88C5-D89D67632EAC");

                var parameters = {};
                parameters["name"] = "este é o meu nome";
                parameters["telephone1"] = "(351) 123456789";
                Xrm.Utility.openEntityForm("account", null, parameters);
}

 

Xrm.Utility.openWebResource(webResourceName,webResourceData,width, height) e Xrm.Utility.openWebResourceDialog(webResourceName, webResourceData, width, height)

Nesta função apenas referir que se o Recurso Web receber dados teremos que o passar no segundo parâmetro.

function openWebResourceTest() {
                Xrm.Utility.openWebResource("new_controlhtml", null, 600,300);
}

 

Começamos com duas funções que utilizávamos muito os métodos de Javascript, ou seja, alert e confirm. Devemos usar estas novas funções pois assim vamos garantir que vão funcionar em todos os ambientes.

 

PS: Todos os testes foram realizados no evento onload da entidade Oportunidade Potencial.

 

Até a próxima.

Tags: , , , , , ,

Aplicação Microsoft Dynamics CRM para Windows 8

by Pedro Azevedo 17. April 2014 00:18

Boas pessoal,

Estou aqui para falar sobre a aplicação para o Windows 8, uma aplicação optimizada principalmente para tablets. A primeira coisa é procurar a aplicação na loja:

Ao entrar na aplicação podemos ver uma breve descrição, vários screenshots, classificação actual, bem como detalhes e aplicações relacionadas:

 

Esta aplicação é gratuita mas só funciona de ligarmos a uma organização Microsoft Dynamics CRM.

Depois de instalar ficamos com a aplicação na lista de aplicações:

Ao abrirmos a aplicação pela primeira vez, temos vários ecrãs de configuração antes de trabalharmos na aplicação. Primeiro teremos que colocar a URL para a instância Dynamics CRM:

De seguida teremos que colocar com que utilizador queremos entrar na aplicação:

 Enquanto a aplicação faz download dos dados e na estrutura é mostrado algumas dicas de utilização:

A seguir informações da nossa organização:

Vimos neste post aplicação para Windows 8, ainda estamos limitados a determinadas entidades mas acredito que brevemente estarão disponíveis as restantes entidades.

 

Até a próxima

Tags: , , , ,

Recursos para o Workshop Dynamics CRM no ENEI 2014

by Pedro Azevedo 11. April 2014 22:48

Boas pessoal,

Para quem se inscreveu no Workshop acerca da plataforma Dynamics CRM, deixo aqui alguns recursos necessários para o Workshop:

1. Criar uma conta gratuita CRM Online (http://www.xptcrm.com/post/2013/05/23/Criar-uma-conta-CRM-Online.aspx)

2. Importar duas soluções para facilitar a criação de menus:

3. Importar a minha solução já com algumas entidades criadas e com bibliotecas genéricas:

 

Este workshop tem com requisitos: PC com internet e saber um pouco de Javascript.

Até a próxima.

Tags: , , , , ,

Participação no ENEI 2014

by Pedro Azevedo 1. April 2014 00:24

Boas pessoal,

Estou aqui para anunciar que no dia 12 de Abril vou realizar uma apresentação sobre a plataforma Microsoft Dynamics CRM no ENEI 2014 (http://eneiaveiro.pt/) que vai decorrer em Aveiro.

Uma boa oportunidade de re-visitar uma das cidades mais bonitas de Portugal e poder partilhar o meu conhecimento.

Irei realizar uma apresentação e um workshop prevejo que seja uma sessão iniciante.

Em próximos posts darei mais informações.

 

Até a próxima.

Tags: , , , , ,

CRM 2011 - Mudar label de campo bloqueado

by Pedro Azevedo 28. March 2014 08:27

Boas pessoal,

Mais um post rápido para responder a uma questão colocada no fórum do Dynamics CRM. A questão parece muito simples mas confesso que se complicou, por isso resolvi colocar aqui a solução e o porquê das várias soluções colocadas não funcionaram. E acabou por funcionar a primeira solução colocada (a minha por sinal Cool) que foi recorrer ao Javascript.

A questão era modificar a label do campo Opcional do formulário do Compromisso. Parece simples:

1ª Solução

Ir ao formulário e alterar a label (sei que não devia começar por esta solução mas dá jeito):

Isto vem assim por defeito e não há nada a fazer, vamos passar para a próxima solução.

2ª Solução

Alterar o nome da label directamente no campo, já que temos a opção de mudar o campo "Nome a Apresentar", diga-se que se nós modificarmos directamente no formulário e depois viermos a este campo, este deixa de funcionar passando a olhar só para o que colocarmos no formulário, mas como vimos anteriormente não conseguimos fazer isso. O nome lá colocado é "Participantes Opcionais" mudando para "Pessoal Opcional", vamos ver o que acontece:

Parece que não funcionou, o mais estranho é que aqui o nome da label do formulário já era diferente do nome a apresentar do campo. Então resta-nos uma alternativa, o javascript.

3ª Solução

Usar Javascript, ou seja no evento onload do formulário vamos colocar o seguinte código:

function onload() {
  var opAteendee = Xrm.Page.ui.controls.get('optionalattendees');
  opAteendee.setLabel('Novo Nome');
}

Vamos ver o resultado:

E finalmente funcionou.

Até a próxima.

Tags: , ,

Relatório Wizard - Limpar registos sem registos filho

by Pedro Azevedo 27. March 2014 02:54

Boas pessoal,

Hoje escrevo um post em resposta a uma dúvida do fórum de Dynamics CRM, como era difícil responder coloco aqui a resposta.

O objectivo é criar um relatório onde é listado por cliente as respectivas ordens de serviço. Este relatório é bastante simples e muito fácil de fazer através do wizard.

Vejam a configuração:

Nos ecrãs anteriores escolhi como registo primário o Cliente e como registo secundário o Incidente.

O problema é que o relatório coloca todos os clientes mesmo aqueles que não têm ordens de serviço e o objectivo é se o cliente não tiver ordens de serviço não aparecer no relatório. Vejam o resultado neste caso com incidentes.

Como podem verificar apenas o último cliente tem um incidente criado, como podemos limpar estes clientes sem incidentes. A solução foi simples:

Com isto previno que sejam mostrados clientes que não tenham tickets criados, não esquecer de colocar os mesmos critérios ao nível do cliente:

Uma solução simples e eficaz.

Até a próxima

Tags: , , ,

CRM 2013 - UR2

by Pedro Azevedo 25. March 2014 23:28

Boas pessoal,

Foi disponibilizado o UR2 do CRM 2013 e que podem transferir aqui. Para mais informações podem ver aqui.

Neste rollup para além da resolução de alguns issues também trás novidades ao nível do suporte para:

  • ·         Windows 8.1
  • ·         Internet Explorer 11
  • ·         iOS7 com o Safari no iPad e iPad air
  • ·         Windows Server 2012 R2

Outra novidade foi o retorno do botão Gravar e Fechar:

Até a próxima.

Tags: , , ,

CRM 2013 Javascript Object Model - Atributos

by Pedro Azevedo 15. March 2014 23:52

Boas pessoal,

 Como prometido vamos dar casos de chamadas de cada um dos métodos disponíveis ao nível do atributo. Para termos acesso a um atributo utilizámos a função Xrm.Page.data.entity.attributes.get(“…”) ou o “atalho” Xrm.Page.getAttribute(“…”).

 getAttributeType()

 Valores que pode devolver este método:

  • boolean
  • datetime
  • decimal
  • double
  • integer
  • lookup
  • memo
  • money
  • optionset
  • string
function getAttributeTypeTest() {

                var exampleOfAttributeTest = "subject do tipo " + Xrm.Page.getAttribute("subject").getAttributeType() + "\n";

                exampleOfAttributeTest += "fullname do tipo " + Xrm.Page.getAttribute("fullname").getAttributeType() + "\n";

                exampleOfAttributeTest += "telephone1 do tipo " + Xrm.Page.getAttribute("telephone1").getAttributeType() + "\n";

                exampleOfAttributeTest += "emailaddress1 do tipo " + Xrm.Page.getAttribute("emailaddress1").getAttributeType() + "\n";

                exampleOfAttributeTest += "websiteurl do tipo " + Xrm.Page.getAttribute("websiteurl").getAttributeType() + "\n";

                exampleOfAttributeTest += "revenue do tipo " + Xrm.Page.getAttribute("revenue").getAttributeType() + "\n";

                exampleOfAttributeTest += "numberofemployees do tipo " + Xrm.Page.getAttribute("numberofemployees").getAttributeType() + "\n";

                exampleOfAttributeTest += "industrycode do tipo " + Xrm.Page.getAttribute("industrycode").getAttributeType() + "\n";

                exampleOfAttributeTest += "campaignid do tipo " + Xrm.Page.getAttribute("campaignid").getAttributeType() + "\n";

                exampleOfAttributeTest += "lastusedincampaign do tipo " + Xrm.Page.getAttribute("lastusedincampaign").getAttributeType() + "\n";

                exampleOfAttributeTest += "decisionmaker do tipo " + Xrm.Page.getAttribute("decisionmaker").getAttributeType() + "\n";

               

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

getFormat()

Este método pode retornar os valores presentes na coluna “Valor do formato”, os outros valores representam o mapeamento que pode haver:

Tipo de Campo

Opção do Formato

Tipo de Atributo

Valor do formato

Date and Time

Date Only

datetime

date

Date and Time

Date and Time

datetime

datetime

Whole Number

Duration

integer

duration

Single Line of Text

E-mail

string

email

Whole Number

Language

optionset

language

Whole Number

None

integer

none

Single Line of Text

Text Area

string

textarea

Single Line of Text

Text

string

text

Single Line of Text

Ticker Symbol

string

tickersymbol

Single Line of Text

Phone

string

phone

Whole Number

Time Zone

optionset

timezone

Single Line of Text

Url

string

url

function getFormatTest() {

                var exampleOfAttributeTest = "subject tem o formato " + Xrm.Page.getAttribute("subject").getFormat() + "\n";

                exampleOfAttributeTest += "fullname tem o formato " + Xrm.Page.getAttribute("fullname").getFormat() + "\n";

                exampleOfAttributeTest += "telephone1 tem o formato " + Xrm.Page.getAttribute("telephone1").getFormat() + "\n";

                exampleOfAttributeTest += "emailaddress1 tem o formato " + Xrm.Page.getAttribute("emailaddress1").getFormat() + "\n";

                exampleOfAttributeTest += "websiteurl tem o formato " + Xrm.Page.getAttribute("websiteurl").getFormat() + "\n";

                exampleOfAttributeTest += "revenue tem o formato " + Xrm.Page.getAttribute("revenue").getFormat() + "\n";

                exampleOfAttributeTest += "numberofemployees tem o formato " + Xrm.Page.getAttribute("numberofemployees").getFormat() + "\n";

                exampleOfAttributeTest += "industrycode tem o formato " + Xrm.Page.getAttribute("industrycode").getFormat() + "\n";

                exampleOfAttributeTest += "campaignid tem o formato " + Xrm.Page.getAttribute("campaignid").getFormat() + "\n";

                exampleOfAttributeTest += "lastusedincampaign tem o formato " + Xrm.Page.getAttribute("lastusedincampaign").getFormat() + "\n";

                exampleOfAttributeTest += "decisionmaker tem o formato " + Xrm.Page.getAttribute("decisionmaker").getFormat() + "\n";

               

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

} 

getIsDirty()

function getIsDirtyTest() {

                Xrm.Utility.alertDialog(Xrm.Page.getAttribute("subject").getIsDirty());

}

De referir se tiver o autosave activado poderá não apanhar que o campo está dirty porque quando ocorre um save esse campo deixa de estar nesse estado.

getIsPartyList()

function getIsPartyListTest() {
                Xrm.Utility.alertDialog(Xrm.Page.getAttribute("ownerid").getIsPartyList());

}

getMaxLength()

function getMaxLengthTest() {

                var exampleOfAttributeTest = "subject tem o tamanho máximo " + Xrm.Page.getAttribute("subject").getMaxLength() + "\n";

                exampleOfAttributeTest += "fullname tem o tamanho máximo " + Xrm.Page.getAttribute("fullname").getMaxLength() + "\n";

                exampleOfAttributeTest += "telephone1 tem o tamanho máximo " + Xrm.Page.getAttribute("telephone1").getMaxLength() + "\n";

                exampleOfAttributeTest += "emailaddress1 tem o tamanho máximo " + Xrm.Page.getAttribute("emailaddress1").getMaxLength() + "\n";

                exampleOfAttributeTest += "websiteurl tem o tamanho máximo " + Xrm.Page.getAttribute("websiteurl").getMaxLength() + "\n";

               

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

} 

Se estavam com atenção utilizei o mesmo código que nos métodos anteriores, mas retirei alguns dos campos pois não contêm este método, só os atributos do tipo string e memo têm este método.

getName()

function getNameTest() {

                Xrm.Utility.alertDialog(Xrm.Page.getAttribute("subject").getName());

}

getParent()

getRequiredLevel()

Possíveis valores de retorno:

  • none
  • required
  • recommended
function getRequiredLevelTest() {         

                var exampleOfAttributeTest = "subject tem este nível de obrigatoriedade " + Xrm.Page.getAttribute("subject").getRequiredLevel() + "\n";

                exampleOfAttributeTest += "telephone1 tem este nível de obrigatoriedade " + Xrm.Page.getAttribute("telephone1").getRequiredLevel() + "\n";

                exampleOfAttributeTest += "companyname tem este nível de obrigatoriedade " + Xrm.Page.getAttribute("emailaddress1").getRequiredLevel() + "\n";

               

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

setSubmitMode(“mode”)

Este método define o modo que um campo se vai comportar aquando da sua gravação na BD. Por defeito tem o valor dirty e só vai ser gravado caso existe alterações nesse campo. Se queremos que o campo seja sempre gravado na BD utilizamos o valor always e never para nunca ser gravado. Este método é muito utilizado quando um controlo está disabled na UI, pois estando disabled o CRM coloca-o com o valor never, mas se o alterarmos em background teremos que colocar o valor always.

function setSubmitModeTest() {

                Xrm.Page.getAttribute("telephone1").setSubmitMode("always");

                Xrm.Page.getAttribute("companyname").setSubmitMode("never");

}

getSubmitMode()

function getSubmitModeTest() {           

                var exampleOfAttributeTest = "subject tem este modo de submissão " + Xrm.Page.getAttribute("subject").getSubmitMode() + "\n";

                exampleOfAttributeTest += "telephone1 tem este modo de submissão " + Xrm.Page.getAttribute("telephone1").getSubmitMode() + "\n";

                exampleOfAttributeTest += "companyname tem este modo de submissão " + Xrm.Page.getAttribute("companyname").getSubmitMode() + "\n";

               

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

getUserPrivilege()

Esta função retorna um objecto que nos diz que operações se pode realizar sobre o atributo mediante o nível de segurança (Field Level Security) sobre esse mesmo atributo. Este objecto tem três propriedades: canRead, canUpdate, canCreate.

function getUserPrivilegeTest() {

                var exampleOfAttributeTest = "Para o campo subject ele pode ler " + Xrm.Page.getAttribute("subject").getUserPrivilege()["canRead"] + "\n";

                exampleOfAttributeTest += "Para o campo subject ele pode criar " + Xrm.Page.getAttribute("subject").getUserPrivilege()["canCreate"] + "\n";

                exampleOfAttributeTest += "Para o campo subject ele pode actualizar " + Xrm.Page.getAttribute("subject").getUserPrivilege()["canUpdate"] + "\n";

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

getValue()

function getValueTest() {

                Xrm.Utility.alertDialog(Xrm.Page.getAttribute("subject").getValue());

}

Aqui gostava de ressalvar uma particularidade, quando estamos a tratar de lookups para obter informação teremos que fazer algo do género:

Xrm.Page.getAttribute("subject").getValue()[0].id //Obter o guid desse registo
Xrm.Page.getAttribute("subject").getValue()[0].name //Obter o guid o texto do registo
Xrm.Page.getAttribute("subject").getValue()[0]entityType //Obter o tipo de entidade desse registo

setValue(value)

function setValueTest() {

                Xrm.Page.getAttribute("subject").setValue("Novo Valor");

}

setRequiredLevel()

function setRequiredLevelTest() {

                Xrm.Page.getAttribute("jobtitle").setRequiredLevel("required");

} 

 

getMax()

function getMaxTest() {

                var exampleOfAttributeTest = "Valor máximo do campo revenue " + Xrm.Page.getAttribute("revenue").getMax() + "\n";

                exampleOfAttributeTest += "Valor máximo do campo número de empregados " + Xrm.Page.getAttribute("numberofemployees").getMax() + "\n";

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

Como podemos ver este método funciona apenas para campos numéricos.

getMin()

function getMinTest() {

                var exampleOfAttributeTest = "Valor mínimo do campo revenue " + Xrm.Page.getAttribute("revenue").getMin() + "\n";

                exampleOfAttributeTest += "Valor mínimo do campo número de empregados " + Xrm.Page.getAttribute("numberofemployees").getMin() + "\n";

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

getPrecision()

function getPrecisionTest() {

                var exampleOfAttributeTest = "Número de casas decimais no campo revenue " + Xrm.Page.getAttribute("revenue").getPrecision() + "\n";

                exampleOfAttributeTest += "Número de casas decimais no campo número de empregados " + Xrm.Page.getAttribute("numberofemployees").getPrecision() + "\n";

                Xrm.Utility.alertDialog(exampleOfAttributeTest);

}

setPrecision(value)

function setPrecisionTest() {

                Xrm.Page.getAttribute("new_float").setPrecision("2");

                Xrm.Utility.alertDialog(Xrm.Page.getAttribute("new_float").getPrecision());

}
 

Espero que tenham gostado deste nova categoria de posts. Mais virão...

 

Até a próxima.

Tags: , , , ,

Convergence 2014 Atalanta

by Pedro Azevedo 6. March 2014 01:21

Boas pessoal,

Decorreu mais um Convergence desta vez em Atalanta e decorreu entre os dias 4 e 7 de Março. Este ano promete muitos releases do Microsoft Dynamics CRM, depois de um ano de “compras”. Quem quiser (aconselho muito) ainda se pode inscrever no Convergence Virtual e ver os vídeos, vejam aqui.

Vamos começar com alguns dados interessantes actualmente existem 40.000 clientes com 4 milhões de utilizadores. E vejam na imagem a seguir com dados muito concretos e animadores:

Mas vamos ao que nos levou aqui: NOVIDADES. Como sempre nada melhor do que começar com o roadmap do Microsoft Dynamics CRM.

 

Como podemos visualizar temos três releases deste produto muito em breve com o Leo, Libra e Mira. E mais para o final do ano com mais quatro releases programados: Libra, Vega, Hydra e Electra, para além da integração efectiva do Parature, também para o final do ano.

Vamos falar primeiro deste próximos três releases que temos vindo a falar:

Microsoft Dynamics Marketing - Mira

Esta ferramenta promete tornar-se numa plataforma colaborativa na Cloud, para os profissionais de Marketing. Estou a denominar uma ferramenta, pois vai ser uma aplicação a parte do Dynamics CRM, mas como é óbvio com uma integração através de um conector. Vejam a seguir um resumo do que esta ferramenta se propõe:

Já com vários ecrãs conhecidos, podemos ver que foi garantida a consistência de look com o Dynamics CRM 2013, apesar de existir um novo menu drilldown. Até ao “Assets & Media” tudo bem, mas ao seleccionarmos este tile aparece outro menu com todas as opções. Uma pergunta que fica é se este menu vai ser expandido para o Dynamics CRM:

Outro ponto muito importante é o planeamento da campanha, uma forma visual e com um workflow e com caminhos alternativos, podemos fazer coisas do género: caso o cliente não abra o email realizar um telefonema passado uma semana.

A possibilidade de ter um sistema de pontuação de Leads será uma ferramenta muito importante. E vejam no slide a seguir que podemos dar uma pontuação diferente mediante a acção do cliente:

Como disse esta ferramenta vai trabalhar externamente do Dynamics CRM, por isso é importante sabermos como nos vamos poder conectar:

Como vamos ver mais a frente foi incluída um novo tipo de licença para podermos tirar partido desta nova ferramenta.

Microsoft Social Listening - Subra

Mais uma ferramenta que vem de outra compra da Microsoft a Netbreeze, mais uma vez vai trabalhar fora do Dynamics CRM. Toda a interface e funcionamento do NetBreeze foi revista para o ambiente Dynamics CRM e tecnologias Microsoft, por exemplo vai assentar totalmente sobre a plataforma Azure, vejam aqui mais alguns dos principais pontos desta “remodelação”:

 

Um dos grandes objectivos desta ferramenta é saber qual o sentimento que a nossa marca ou um concorrente tem na internet, para isso o cálculo do sentimento é uma parte muito importante:

Vejam a seguir a configuração de listas para podermos seguir tópicos nas redes sociais:

 

Apesar de este ser um grande acréscimo ao Dynamics CRM e ao contrário do Dynamics Marketing esta ferramenta poderá não acarretar novos custos, por exemplo uma empresa com mais que 10 licenças profissionais, vão receber as novas capacidades sociais sem aumento de preço, neste momento está em $65 por utilizador e por mês, isto no CRM Online porque nas versões On-Premise existirá um aumento de $20 por mês para ter estas novas capacidades sociais.

Módulo de Serviço – Leo

Antes da integração do Parature que foi comprado no início do ano e que vem reforçar este módulo com mais funcionalidades para o apoio ao cliente, este módulo vai reforçado com novas funcionalidades. O Leo foi confirmado que será tanto para online como para on-premisse Vejam a seguir um resumo dos objectivos deste novo release:

Sendo mais concreto ao nível das novas funcionalidades temos o seguinte:

  • ·         O cliente móvel irá ter mais entidades deste módulo;
  • ·         Gestão dos incidentes com a noção de pai-filho;
  • ·         Gestão embutida de SLAs:

  • ·         Unified Service Desk, que vem substituir o CCA (Customer Care Accelerator) com um nível de integração maior:

 

  • ·         Uma nova entidade Entitlement, daquilo que percebi uma melhor gestão de contrato;
  • ·         Melhoria na gestão das filas;

A seguir podem ver estas e outras melhorias anunciadas:

Mas este release não se fica apenas pelo módulo de serviço e inclui diversas melhorias:

  • ·         Foi retirado o iFrame para o sharepoint, tendo neste momento um processo de sincronização, presumo que utilizando a API do Sharepoint;
  • ·         Uma aplicação android para tablets;
  • ·         Sincronismo com o Exchange online, deixa de haver a necessidade de instalar o Email Router;
  • ·         Melhoria na gestão das instâncias online:

 

·         Outras melhorias na plataforma:

Alguns detalhes sobre os releases depois da “Spring Wave”:

Libra e Hydra

Vega

Electra

Parature Integration

 

 

Foram algumas informações recolhidas, mais uma vez via o twitter, são genéricas mas dá para ter uma ideia do que está para vir.

Já agora está combinado o próximo Convergence que será aqui “perto” em Barcelona.

 

Até a próxima.

Tags: , , , ,

Addon Microsoft Dynamics CRM

by Pedro Azevedo 26. February 2014 21:38

Boas pessoal,

Uma das resoluções que tinha era contribuir com uma solução que permita melhorar o Dynamics CRM. Inspirado nos live tiles do Windows Phone e Windows 8, penso que ter uma visualização rápida e apelativa de um conjunto de registos. Sempre adorei a ideia de ter quadrados vivos (e penso que é um dos grandes diferenciativos que existe perante outros sistemas operativos móveis) sempre a mostrar informação e por essa razão quero implementar a mesma ideia dentro do Dynamics CRM.

A ideia deste post é apresentar como funcionará este “addon”. Comecei com um teste de conceito, veja este pequeno vídeo:

Depois de ter comprovado a sua utilidade vem o mais difícil, conseguir uma configuração o mais genérica possível. Como vimos no vídeo este addon pode ter quatro tipos de “quadrados”, denominados por live-tile:

  • ·         Flip
  • ·         Slide
  • ·         Carrousel
  • ·         Quadrante

Para além de escolher o tipo de live-tile teremos que escolher a entidade relacionada, ou seja, num cliente por exemplo queremos ver todas as oportunidades e propostas em aberto, contactos e um resumo das actividades, no fundo ter uma forma visual das subgrids.

Depois dentro de cada entidade relacionada a mostrar quais as propriedades que vamos querer mostrar.

Depois de configurar é só colocarmos o Recurso Web daquele tipo e já está. Vamos ver se consigo uma primeira versão no meio de Maio.

 

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