Bug - User does not have send-as privilege

by Pedro Azevedo 20. April 2013 23:26

Boas pessoal,

Esta semana perdi umas boas horitas atrás de um problema que ocorreu e que a sua resolução era muito fácil. Num cliente entrou um utilizador novo e as notificações geradas por aquele utilizador ficavam no estado rascunho.

Ao abrir a actividade esta estava no estado rascunho e ao tentar enviar novamente lançava um erro a dizer que não tinha permissões para o fazer e eu estava como administrador de sistema.

Uma visita ao trace do CRM deparei-me com a seguinte exceção:

“Crm Exception: Message: User does not have send-as privilege.”

A primeira verificação foi visualizar se as definições do utilizador, como por exemplo como estava configurado o acesso ao email e se tinha o email aprovado para poder enviar emails. Estava tudo bem. E no perfil deste utilizador não encontrei mais nada. Fui olhar para as roles que esse utilizador tinha e não consegui descobrir nenhuma que deve o tipo de permissão que o log referia.

Mas eu sabia que isto dava para colocar de alguma maneira. Por curiosidade fui ver o meu próprio perfil e confirmei que havia uma configuração para isto, vejam na imagem:

Mas atenção que caso o utilizador não tenha configurado o Email Router no Outgoing este setting não aparece como podem ver:

 

A solução então passava pelo utilizador ativar esta permissão, fui o que fiz e resultou.

Mas depois de resolver fui explorar melhor esta situação e aqui estou a documentar. Primeiramente quando é que isto acontece? Quando por exemplo fazemos um impersionate do utilizador e aí estamos a enviar um email por exemplo com um administrador mas quem vai oficialmente no enviar é outro utilizador. Isto também pode acontecer nos emails enviados em workflows.

Mas esta solução nem sempre é possível por isso explorei ao nível da base de dados onde estaria esta configuração. E com a query que apresento a seguir podemos dar esse previlégio a todos os utilizadores, ou para um utilizador especifico:

UPDATE UserSettings
SET IsSendAsAllowed = 1

Outra solução é a utilização de uma ferramenta que permite actualizar os settings dos utilizadores a ferramenta é esta.

Até a próxima.

Tags: , ,

Referência Rápida - Códigos de Entidade

by Pedro Azevedo 7. April 2013 23:34

Boas pessoal,

Hoje vou criar um post que principalmente me vai ser muito útil já que de vez em quando procuro por esta informação. Todas as entidades no CRM têm um código que representa essa entidade. Uma maneira de descobrir o código é ver no URL o código que vem a seguir ao texto:

&etc=<entity_type_code>

Outra maneira de aceder a este código é realizar por exemplo uma query directa a base de dados:

select Name, ObjectTypeCode from EntityView order by ObjectTypeCode

Obtém-se a seguinte lista:

Entity Name

Object Type Code

Account

1

Contact

2

Opportunity

3

Lead

4

Annotation

5

BusinessUnitMap

6

Owner

7

SystemUser

8

Team

9

BusinessUnit

10

PrincipalObjectAccess

11

RolePrivileges

12

SystemUserLicenses

13

SystemUserPrincipals

14

SystemUserRoles

15

AccountLeads

16

ContactInvoices

17

ContactQuotes

18

ContactOrders

19

ServiceContractContacts

20

ProductSalesLiterature

21

ContactLeads

22

TeamMembership

23

LeadCompetitors

24

OpportunityCompetitors

25

CompetitorSalesLiterature

26

LeadProduct

27

RoleTemplatePrivileges

28

Subscription

29

FilterTemplate

30

PrivilegeObjectTypeCodes

31

SalesProcessInstance

32

SubscriptionSyncInfo

33

SubscriptionTrackingDeletedObject

35

ClientUpdate

36

SubscriptionManuallyTrackedObject

37

TeamRoles

40

PrincipalEntityMap

41

SystemUserBusinessUnitEntityMap

42

PrincipalAttributeAccessMap

43

PrincipalObjectAttributeAccess

44

PrincipalObjectAccessReadSnapshot

90

RecordCountSnapshot

91

Incident

112

Competitor

123

DocumentIndex

126

KbArticle

127

Subject

129

BusinessUnitNewsArticle

132

ActivityParty

135

UserSettings

150

ActivityMimeAttachment

1001

Attachment

1002

InternalAddress

1003

CompetitorAddress

1004

CompetitorProduct

1006

Contract

1010

ContractDetail

1011

Discount

1013

KbArticleTemplate

1016

LeadAddress

1017

Organization

1019

OrganizationUI

1021

PriceLevel

1022

Privilege

1023

Product

1024

ProductAssociation

1025

ProductPriceLevel

1026

ProductSubstitute

1028

SystemForm

1030

UserForm

1031

Role

1036

RoleTemplate

1037

SalesLiterature

1038

SavedQuery

1039

StringMap

1043

UoM

1055

UoMSchedule

1056

SalesLiteratureItem

1070

CustomerAddress

1071

SubscriptionClients

1072

StatusMap

1075

DiscountType

1080

KbArticleComment

1082

OpportunityProduct

1083

Quote

1084

QuoteDetail

1085

UserFiscalCalendar

1086

SalesOrder

1088

SalesOrderDetail

1089

Invoice

1090

InvoiceDetail

1091

SavedQueryVisualization

1111

UserQueryVisualization

1112

RibbonTabToCommandMap

1113

RibbonContextGroup

1115

RibbonCommand

1116

RibbonRule

1117

RibbonCustomization

1120

RibbonDiff

1130

ReplicationBacklog

1140

FieldSecurityProfile

1200

FieldPermission

1201

SystemUserProfiles

1202

TeamProfiles

1203

 

As entidades nativas têm um valor abaixo do 10000 e as customizadas acima deste valor.

Mantenham este post nos vossos favoritos.

 

Até a próxima.

Tags: , , ,

CRM 2011 - UR13

by Pedro Azevedo 30. March 2013 00:23

 Boas pessoal,

Está disponível o Update Rollup 13 (UR13), descarreguem aqui. Todas as informações estão disponíveis aqui com todos os dados e todas as novidades.

Tenho a realçar como nova funcionalidade o suporte ao Microsoft SQL Server 2012, ficou também disponível como poderemos então migrar para esta versão do SQL Server.

 

Até a próxima.

Tags: , ,

Convergence 2013

by Pedro Azevedo 23. March 2013 01:07

Boas pessoal,

Quem foi ao Convergence 2013 entre 18 e 21 de Março em New Orleans? Estou com tanta inveja. Mais um evento fantástico e com muitas novidades na calha.

Utilizei principalmente e cada vez mais o twitter para acompanhar o evento (foram milhares de tweets, não esquecer que este evento é sobre o Microsoft Dynamics).

A primeira grande novidade surgiu no segundo dia com o anúncio da compra da NetBreeze por parte da Microsoft. A NetBreeze é uma empresa Suíça de análise as redes sociais. Vem reforçar a parte social do Dynamics CRM depois da compra do Yammer apesar de propósitos diferentes. Uma das grandes vantagens realçadas do NetBreeze é fazer uma análise semântica em 28 línguas, isto em contraponto com os concorrentes que traduzem o texto para determinar o sentimento de um determinado post. Já agora o grande concorrente seria o Radian6 da Salesforce.

E já existem imagens sobre o próximo produto:

 

 

Para além de determinar o sentimento de cada post. Podemos ver esses mesmos posts e responder directamente. Para além disso podemos configurar alertas para quando por exemplo o sentimento tiver muito baixo. Como podemos ver na primeira imagem temos a tendência da marca.

Outra das novidades foram imagens do MarketingPilot com o aspecto do Orion (que vamos falar mais adiante) depois da compra em Novembro de 2012:

Supostamente será a configuração de uma campanha de marketing com recurso a um componente gráfico. Muito bom. Pelo que percebi esta ferramenta já pode ser usada nos estados unidos. Como referi no post anterior (eXtreame CRM) esta ferramenta será uma aplicação a parte e terá integração com o Dynamics CRM e o conector está aqui.

Uma das demos existentes foi a aplicação para Windows 8, neste caso num Surface, diga-se de passagem que parece muito bonita:

 

Outro produto que está a ter visibilidade é o Yammer pode-se ver a seguir a sua integração no activity feed.

O que falta falar, nada mais nada menos que o roadmap (adoro estas imagens):

Podemos ver o rollup do Gemini um rollup online que tem as novidades do Marketing Pilot que vimos anteriormente. Outra coisa a notar é o Orion que vamos falar a seguir.

 

Em relação ao Orion, parece que não se falou muito, algumas imagens mas sem grande pormenor, primeiro o que o Orion nos tem para oferecer:

Depois a sua interface que vem consolidar o aspecto flat do Polaris e com uma novidade que já tínhamos visto no Marketing Pilot que é uma barra no topo, que pelo que percebo será uma barra de navegação, na segunda imagem podemos ver o drop down quando seleccionamos sobre o nome Microsoft Dynamics CRM.

 

Não deixem de ver os vídeos que dão muita informação. Já agora uma imagem engraçada que tirei de um dos tweets, numa apresentação da Microsoft:

 

Até a próxima,

 

Fontes:

http://yellowduckguy.wordpress.com/category/convergence-2013/

https://community.dynamics.com/crm/b/crmconnection/archive/2013/03/19/netbreeze.aspx

http://community.dynamics.com/crm/b/crmconnection/archive/2013/03/19/marketingpilot15.aspx

Tags: , , , , ,

Novidades sobre UR12 e Polaris

by Pedro Azevedo 22. February 2013 01:43

 

Boas Pessoal,

Hoje venho falar de mais recente rollup este é um major release apelidado de Polaris, vem ultrapassar uma das grandes queixas dos utilizadores e das equipas de TI era a necessidade de utilização do Internet Explorer. Vem ultrapassar esta dificuldade mas na minha opinião vem criar uma entropia com a mudança de alguns formulários, tais como, Clientes Potenciais, Contactos, Contas, Oportunidades e Incidentes.

A disponibilização deste rollup não foi fácil com uma primeira saída (10 de Janeiro) a não correr bem tendo sido retirado e ter que esperar mais algum tempo (29 de Janeiro) para podermos usar a nova versão no ambiente on-premise pois na versão online foi colocada em 21 de Janeiro.

Os browsers que vão passar a ser compatíveis são: Firefox, Chrome e Safari no Mac. Para além de suportar múltiplos browsers e da nova interface também traz como novidades ao nível do suporte para o Office 2013, integração nativa com skype (parece ser a ferramenta de eleição para comunicação) e mapas do bing.

Para saber todas as novidades do Polaris sugiro vivamente a ver os slides do Jukka Niiranen.

Existe uma diferença que eu gostava de esclarecer e que para mim também foi confuso, Polaris e UR12, pode parecer a mesma coisa mas não é, pois o Polaris é o nome do novo release para o CRM Online e o UR12 é o novo update rollup do CRM 2011. Aliás o “único” ponto em comum será a compatibilidade multi-browser.

Comparando com o que tinha sido previsto deixou-se cair a compatibilidade com iPad e adicionou-se a compatibilidade com o Windows 8.1:

 

E o que muda para nós programadores, MUITO. Para garantirmos a compatibilidade entre browsers temos que esquecer definitivamente a utilização do object model do javascript para o CRM 4.0 bem como a chamada SOAP feitas com ActiveXObject. Para validar este tipo de código podemos recorrer a esta ferramenta.

Existem também várias limitações nos novos formulários do UR12 já que por exemplo a impossibilidade de usar Javascript neste novos formulários. Uma das alternativas é voltar aos classic forms, veja aqui como. Para ver a totalidade de limitações pode ver neste blog.

Este rollup está disponível aqui sendo que este é o KB.

 

Até a próxima

 

Fontes:

http://niiranen.eu/crm/2013/01/whats-new-in-microsoft-dynamics-crm-polaris-release-slides/

http://blogs.msdn.com/b/crminthefield/archive/2013/01/29/podcast-and-overview-microsoft-dynamics-crm-2011-update-rollup-12.aspx

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

https://community.dynamics.com/crm/b/mscrmshop/archive/2013/03/15/how-to-switch-between-classic-and-new-process-flow-forms-in-crm-polaris.aspx

Tags: , , ,

Como modificar o filtro de um lookup no Dynamics CRM 2011

by Pedro Azevedo 11. February 2013 10:50

Boas pessoal,

Foi-me reportado um problema na escolha dos produtos no pipeline de vendas, aquando da escolha do produto estavam aparecer produtos inativos, ou seja, listava todos os produtos sem filtro. Bem este será o mote para apresentar várias soluções que segui para poder resolver este problema.

 

Aparentemente este problema seria de fácil resolução, primeira tentativa modificar a vista que esta associado por defeito ao lookup. Para acedermos a esta configuração, vamos a customização do formulário e duplo click no lookup e aparece a caixa em baixo. Mas esta (como podem verificar) encontrava-se bloqueada, vejam na imagem:

 

A segunda opção foi modificar esta vista e colocar mais um critério que seria o produto estar activo. Para isso teremos que ir a entidade produto e escolher a vista, infelizmente não é possível editar os critérios de pesquisa, veja na imagem:

Mais uma vez a solução não poderá ser aplicada. Tinha na manga uma última solução, para isso teria que recorrer ao Javascript.

O objectivo será adicionarmos uma nova vista por intermédio do Javascript com os critérios que queremos e depois colocar essa vista como defeito, já que não conseguimos seleccionar a vista.

 

O primeiro passo é criar este filtro no Advanced Find:

Quando abrimos o XML temos este aspecto: 

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="product">
    <attribute name="name" />
    <attribute name="productnumber" />
    <attribute name="ret_codigofinanceiro" />
    <attribute name="productid" />
    <order attribute="name" descending="false" />
    <filter type="and">
      <condition attribute="statecode" operator="eq" value="0" />
    </filter>
  </entity>
</fetch>

 

De seguida temos que definir qual o layout da nossa vista:

<grid name='resultset' object='1' jump='name' select='1' icon='1' preview='1'>
  <row name='result' id='productid'>
    <cell name='name' width='300' />
    <cell name='productnumber' width='100' />
    <cell name='ret_codigofinanceiro' width='100' />
  </row>
</grid>

 

Agora teremos que aplicar dois métodos que nos vai possibilitar inserir a vista e coloca-la como a vista por defeito.

Para adicionar uma nova vista utilizamos a função addCustomView que tem a seguinte assinatura:

controlObj.addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, isDefault)

 

Vejam aqui mais detalhes sobre esta função.

Para colocar esta vista como a vista por defeito teremos que utilizar a função setDefaultView (já agora para podermos obter a vista por defeito temos a função getDefaultView) com a seguinte assinatura:

controlObj.setDefaultView(viewGuid)

 

Vejam aqui mais detalhes.

Vejam a seguir todo o código:

NOTA: Quando vamos colocar o FetchXML em código Javascript devemos substituir as aspas por plicas:

 

var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                        "<entity name='product'>" +
                            "<attribute name='name' />" +
                            "<attribute name='productnumber' />" +
                            "<attribute name='ret_codigofinanceiro' />" +
                            "<attribute name='productid' /> " +
                            "<order attribute='name' descending='false' />" +
                            "<filter type='and'>" +
                                "<condition attribute='statecode' operator='eq' value='0' />" +
                            "</filter>" +
                        "</entity>" +
                   "</fetch>";
 
var layoutXml = "<grid name='resultset' object='1' jump='name' select='1' icon='1' preview='1'>" +
                        "<row name='result' id='productid'>" +
                            "<cell name='name' width='300' />" +
                            "<cell name='productnumber' width='100' />" +
                            "<cell name='ret_codigofinanceiro' width='100' />" +
                        "</row>" +
                    "</grid>";
 
var viewId = "{1DFB2B35-B07C-44D1-868D-258DEEAB88E2}";
var entityName = "product";
var viewDisplayName = "Produtos Activos";
 
Xrm.Page.getControl("productid").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
Xrm.Page.getControl("productid").setDefaultView(viewId);

 

NOTA: Esta abordagem pode ser reutilizada em outras situações, imaginem que podem por exemplo filtrar um lookup com base noutro valor do formulário. Para isso bastava por exemplo no FetchXml substituir o 0 por uma expressão válida.

 

Até aqui tudo bem o problema é que a história não terminou por aqui, como no lookup a seleção da vista está desativa o código acima não vai fazer nada, porque o controlo está disabled. A solução passa por habilitar este campo momentaneamente e executar o nosso código e coloca-la novamente no seu estado anterior.

Para isso recorri ao jQuery para realizar esta operação. Não se esqueçam que têm que adicionar a biblioteca do jQuery como WebResource e depois referenciá-la no formulário, há tempos escrevi um post de como adicionar esta e outras bibliotecas, vejam aqui.

Complementem o código anterior com isto:

 

//…
//o mesmo código
 
$("#productid").attr("disableViewPicker", "0");
Xrm.Page.getControl("productid").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
Xrm.Page.getControl("productid").setDefaultView(viewId);
$("#productid").attr("disableViewPicker", "1");

 

Para finalizar pegamos no código completo e colocámos o mesmo dentro de uma função de depois dentro de um WebResource. Nas propriedades do formulário (que contém o lookup) acrescentamos este WebResource e depois adicionamos um novo processamento no evento OnLoad do formulário para executar o método.

Até a próxima.

Tags: , , ,

eXtreme CRM 2013 Roma

by Pedro Azevedo 9. February 2013 00:38

Boas pessoal,

Estou aqui com um post rápido porque infelizmente as informações não foram muitas do evento eXtreme CRM e se não fosse o Jukka Niiranen e ainda tinha sido pior. Lá estou eu a reclamar Cool.

Decorreu entre os dias 3 e 6 de Fevereiro o eXtreme CRM 2013 em Roma. Para além dos habituais roadmaps, fica uma coisa a reter o release apelidado por Orion afinal não vai ser uma major release como o Polaris, será uma nova versão em princípio será o Microsoft Dynamics 2013. Nesta nova versão será o fim dos chamados “classic forms”, ou seja, vamos ter o ambiente flat para todas as entidades.

Outra das novidades foi a introdução de mais um release com o nome Gemini que trará novidades ao nível do Marketing e será consequência da aquisição da empresa Marketing Pilot. Este release está programado para sair no segundo trimestre de 2013.

Pelo que percebi será uma aplicação a parte mas com integração com o Dynamics CRM.

Para além do Gemini existe outra constelação a chegar (sim todos estes nomes têm surgido de constelações) é o Leo que está programado para o final de 2013.

 

Até a próxima

 

Fonte:

http://niiranen.eu/crm/2013/02/extreme-crm-2013-rome-takeaways/

http://blog.dorrekens.com/index.php/list/155-microsoft-crm-2013-roadmap

Tags: , , , ,

Roadmap CRM Dynamics - Polaris e Orion

by Pedro Azevedo 14. January 2013 01:59

 Boas pessoal,

Como sabem a tecnologia muda todos os dias e no mundo Microsoft Dynamics CRM não é diferente. Neste pouco tempo que tenho de Dynamics CRM descobri dois eventos onde se fala sobre o futuro deste produto. Estes eventos são o Convergence e o eXtreme CRM. Gostava de um dia poder participar num deles enquanto não acontece sigo estes eventos online e pelo twitter.

Hoje vou falar sobre o actual roadmap do Dynamics CRM e avizinha-se para breve grandes novidades. A seguir vou apresentar os dois próximos major releases e que foram falados no eXtremeCRM 2012 que decorreu entre 30 de Setembro e 3 de Outubro de 2012 e também tendo como base o release preview da Microsoft.

No total existem 4 major releases para sair, Polaris que deve sair ainda este mês, e depois o “Orion”, “Leo” e “Vega”. Hoje o grande foco será o próximo major release (Polaris) e vamos falar um pouco do Orion.

Polaris (2012 Q4)

Até a data este major release ainda não foi lançado mas por alguns anúncios estará para breve, até lá vamos dar uma olhadela para o que se fala sobre o Polaris. A seguir está uma imagem que resume as novas funcionalidades que o Dynamics CRM vai ter:

 

Novo interface

A Microsoft irá apresentar um novo interface, pelo que percebi em apenas algumas entidades, nomeadamente nas entidades Lead, Oportunidade e Incidente. Será uma interface flat, se vocês repararem nas duas imagens a baixo, não tem a imagem do controlo desenhado, parece que é tudo label.

 

Se repararem apenas quando seleccionamos o campo é que o desenho do controlo é mostrado.

 

Outra coisa a notar é a barra que aparece nas duas imagens no topo do formulário. Esta nova funcionalidade é algo que me parece muito interessante e como no documento diz permite guiar o utilizador pelas várias fases numa entidade, tendo debaixo da barra quais os principais passos dessa fase. Como podemos constatar na imagem em baixo, temos a configuração das várias fases que a oportunidade tem:

 

Em resumo e apesar de achar que a UI fica mais limpa e atractiva penso que poderá causar alguma estranheza aos utilizadores principalmente a utilizadores mas habituados a distinguir entre um formulário de edição e de leitura.

Mas esta funcionalidade poderá ser desfeita podendo voltar para os menus antigos conhecidos como “Classic Forms”.

Integração com produtos Microsoft

Uma das grandes vantagens que a Microsoft “vende” é ter uma grande integração e um look-and-feel semelhante entre as várias aplicações. O mesmo vai acontecer por exemplo com o Yammer.

Yammer

Desconhecia completamente e passou para mim a ser uma ferramenta muito interessante e aconselhável, resumindo é uma plataforma social empresarial, uma excelente ferramenta colaborativa e que pode ficar associado a um, negócio em específico. Aqui pode surgir posts\conversas entre colegas ou com clientes.

Skype & Lync

Em relação ao Skype uma interligação directa nos formulários, possibilitando uma chamada apenas com um click (a semelhança do que acontece com o Lync). Neste momento ainda é necessário que o Skype esteja instalado mas está previsto que tal não seja necessário.

Office 2013 e Bing Maps

Compatibilidade multi-browser

Esta feature pelo que tenho lido já deveria ter sido lançada em Julho de 2012 e vai permitir usar mais browsers para além do Internet Explorer. Apresento a seguir os browsers suportados de referir a utilização no iPad.

 

Esta feature vai ser uma grande mais-valia para este produto.

 

Todas estas novidades estarão disponíveis no CRM Online, existem algumas dúvidas no on-premise mas que pelo menos está prometido a parte do multi-browser.

Importante dizer também que existe uma maior aproximação e uniformização entre o que fazemos no on-premise e no online já que vão ser introduzidos Custom Assembly e Custom Workflow.

Orion (2013 Q2)

Outro major release que está planeado para o segundo trimestre de 2013 ainda não existem muitos detalhes, mas ficam aqui quatro pontos:

  • Windows 8 UI – que vai ser a base para aplicações entre dispositivos
  • Exchange Sync – melhorias no CRM Outlook
  • Office 2013 “Productivity” – Melhoria da compatibilidade
  • Colaboração social com o Yammer

 

Até a próxima

 

Fontes:

http://crmhobbit.wordpress.com/2012/10/04/extremecrm-recap-day-2-or-whats-in-the-crm-roadmap/

http://niiranen.eu/crm/2012/10/future-stars-dynamics-crm-roadmap-news-from-las-vegas/

http://blog.customereffective.com/blog/2012/10/microsoft-dynamics-crm-roadmap-update-from-extreme-crm-2012.html

Tags: , , , , , ,

Biblioteca XrmServiceToolkit

by Pedro Azevedo 5. January 2013 23:17

Boas pessoal,

Hoje queria ressalvar um grande projeto oferecido a comunidade. É a biblioteca XrmServiceToolkit que podemos fazer download daqui: https://xrmservicetoolkit.codeplex.com/.

Esta biblioteca que tem um ficheiro único XrmServiceToolkit.js e basta colocar como Recurso Web. Nela temos funções genéricas, SOAP ou REST e que esconde toda a construção destas chamadas e que ajuda muito especialmente em requisições SOAP. Existe também os chamados métodos extendidos que permite por exemplo trabalhar com OptionSet dependentes.

Temos a possibilidade de fazermos estas chamadas síncronas ou assíncronas. Para além de suportar qualquer deploy do Dynamics CRM 2011 (On-Prem; IFD e Online)

Em resumo um espectáculo e mais qualquer alteração por exemplo na questão de suportar outros browsers e não podermos usar esta declaração var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"), esta biblioteca foi logo atualizada por isso só mudou um sitio.

 

Esta biblioteca depende de outras duas bibliotecas jQuery e JSON. Vocês podem ver as versões necessárias no site que referi.

Exemplo funções genéricas:

XrmServiceToolkit.Common.enableField(fieldName);

Exemplo Actualizar REST:

var account = {};
account.Name = "My Name";
account.Address1_City = "Lisboa";
account.Address1_Line1 = "Minha Rua";
account.EMailAddress1 = "psa@psazevedo.com";

XrmServiceToolkit.Rest.Update(
	accountId,
	account,
	"AccountSet",
	function () {
		alert("Foi atualizado");
	},
	function (error) {
		alert("ups... Erro")
	},
	false
);


Exemplo Retorno Múltiplo em REST:

XrmServiceToolkit.Rest.RetrieveMultiple(
    "ContactSet",
    "$select=ContactId, FullName",
    function (results) {
        alert(results.length);
        var fullname = results[0].FullName;
        alert(fullname);
    },
    function (error) {
        alert(error)
    },
    function onComplete() {
        alert('completed')
    },
    false
);

Exemplo Criação em SOAP:

var createContact = new XrmServiceToolkit.Soap.BusinessEntity("contact");
createContact.attributes["firstname"] = "Pedro";
createContact.attributes["lastname"] = "Azevedo";
createContact.attributes["gendercode"] = { value: 2, type: "OptionSetValue" };
createContact.attributes["birthdate"] = birthDate;
createContact.attributes["donotemail"] = true;
createContact.attributes["donotphone"] = false;
createContact.attributes["parentcustomerid"] = { id: accountId, logicalName: "account", type: "EntityReference" };
contactId = XrmServiceToolkit.Soap.Create(createContact);

Exemplo Pesquisa pelo ID:

var contactid = Xrm.Page.getAttribute("primarycontactid").getValue()[0].id;
var cols = ["firstname", "lastname", "middlename", "familystatuscode"];
var retrievedContact = XrmServiceToolkit.Soap.Retrieve("contact", contactid, cols);
alert(retrievedContact.attributes['lastname'].value);

Aproveitem estas benesses que a comunidade nos dá. Futuramente irei falar de outras bilbliotecas\ferramentas para nos auxiliar no dia-a-dia. Um bem haja ao Jaimie.

Até a próxima

Tags: , , , ,

Ativar o trace no Dynamics CRM

by Pedro Azevedo 21. December 2012 03:36

Boas pessoal,

Uma das primeiras coisas que aprendi quando comecei a mexer no Dynamics CRM foi ativar o trace, para controlar erros que não se apanham na interface gráfica e para ver detalhes de erros reportados pelos utilizadores.

Trace CRM Dynamics

Para ativar o trace “basta” ir ao registry e mudar uma chave. O caminho do registry é este: HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSCRM e muda-se a chave TraceEnabled para 1. Quando é activado os logs vão para esta diretoria: C:\Program Files\Microsoft Dynamics CRM\Trace.

 

Costumo utilizar uma ferramenta para gerir estes logs: https://crmdiagtool2011.codeplex.com/. Lanço aqui um alerta para termos cuidado com o crescimento dos logs no disco. Se deixarmos muito tempo pode assumir rapidamente alguns GBs.

Event Viewer

Outro sítio onde costumo controlar erros que acontecem no CRM é no Event Viewer vejam aqui um exemplo.

 

Existem outros logs, que são "automáticos" pelos menos por defeito. Aqui vão a localização destes mesmos logs:

Reporting Services

%programfiles%\Microsoft SQL Server\MSRS10_50.(INSTANCENAME)\Reporting Services\LogFiles

Outlook

Outlook (Máquina do cliente) ou Logs de Instalação: Users\<User>\AppData\Roaming\Microsoft\MSCRM\Logs (Por vezes em alguma máquinas em vez de Roaming é Local penso que tenha a ver com a versão do windows):

 

PS: Tenciono melhorar este post com os logs de instalação, outlook, etc.

Email Router

Para o email router temos que ir a pasta de instalação C:\Program Files\Microsoft CRM Email\Service teremos que encontrar um ficheiro Microsoft.CRM.Tools.EmailAgent.xml. Dentro deste ficheiro temos o seguinte código:

<ConfigUpdatePeriod>3600000</ConfigUpdatePeriod>
<LogLevel>1</LogLevel>
<LogFile></LogFile>

Dentro deste XML colocamos colocamos o LogLevel a 3 e colocarmos um caminho para o log, por exemplo: C:\Program Files\Microsoft CRM Email\Setup\log.txt

 

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