Rechercher dans ce blog

Suivez-moi par Email

Affichage des articles dont le libellé est Personnalisation. Afficher tous les articles
Affichage des articles dont le libellé est Personnalisation. Afficher tous les articles

mercredi 11 septembre 2013

Définir la page d'accueil


Dans CRM 2013, les utilisateurs ont la possibilité de choisir leur page d’accueil. Ouvrir le menu par un click sur le boulon à coté du nom. Puis sélectionner Options.

mardi 10 septembre 2013

samedi 9 mars 2013

Affichage des groupes de liens Marketing et Outils dans l'Espace de travail

Dans le volet Espace de travail, les groupes de liens Marketing et Planification ne sont plus visibles par défaut. Le lien Importations n'est plus dans le groupe Mes tâches.


jeudi 10 janvier 2013

Techdays 2013 : Sessions Dynamics CRM


Sessions concernant Dynamics CRM


Mercredi
11h00-12h00 : Industrialisation des développements CRM 2011
Tanguy Touzard (MVP Javista), Philippe Laloum (Microsoft), Aymeric Mouillé (Microsoft)

Jeudi
11h00-12h00 : Solutions Email Marketing et Mobilité dans Dynamics CRM
Tanguy Touzard (MVP Javista), Imad Hajjar (Javista)

11h00-12h00 : Démo des nouvelles versions Dynamics CRM, l'utilisateur au centre des innovations

13h00-14h00 : La haute disponibilité avec Dynamics CRM 2011 et SQL Server 2012
Lassaad Attig (Microsoft), Karim Benzaghou (Microsoft)

13h00-14h00 : Lync + Skype + CRM = Centre de Contact UC avec témoignage client

16h00-17h00 : Comment orienter l'entreprise autour du client et générer du business ?
Découvrez l'association Microsoft Dynamics CRM et l'offre CCM Steria


mercredi 4 juillet 2012

Message de connexion : Erreur de licence


Lorsqu'un utilisateur tente de se connecter au CRM et obtient le message ci-avant, le profil de cet utilisateur ne possède pas de rôle. Il faut alors lui associer un rôle.

Avec le profil Administrateur, sélectionner le profil de l'utilisateur. Dans la liste de gauche, choisir  Rôles de sécurité. Cliquer sur Gérer les rôles.

Sélectionner le rôle correspondant à l'utilisateur puis valider en cliquant sur le bouton OK.


L'utilisateur peut maintenant se connecter au CRM.


LinkedIn pour Dynamics CRM

LinkedIn fournit un guide d'installation pour sa solution Linked for Microsoft Dynamics CRM et paramétrer le formulaire "Intégration LinkedIn" au niveau des entités.


Le lien a été ajouté à la liste Outils CRM.

lundi 4 juin 2012

Résoudre les problèmes de script suite à la prochaine mise à jour

Resolve breaking script Issues when upgrading to the next release of Microsoft Dynamics CRM

Pour supporter les différents navigateurs, beaucoup de changements internes ont été réalisés.

Voici des exemples de modification de script à faire:
  • getElementById
  • Problèmes avec crmForm:
    • crmForm.SetFieldReqLevel
    • crmForm.SubmitCrmForm
    • crmForm.detachCloseAlert
    • crmForm.IsValid
    • crmForm..Clear
  • Problèmes avec crmGrid
    • crmGrid.innerGrid
    • crmGrid.GetParameter
  • Problèmes avec le contrôle Lookup
    • LookupControl.AddParam
    • LookupControl.AddItems

jeudi 22 décembre 2011

Création d'un bouton dans un formulaire

Dans cette exemple, nous allons remplacer le champ Salutations du formulaire Contact par un bouton.

Créer une Web Resource nommée new_bouton de type jscript contenant le code suivant.

/* sample */
/* 'salutation','ButtonText','100px','functionName','Button Label' */
function ConvertToButton(fieldname, buttontext, buttonwidth,clickevent, title){
 
 /* check if object exists; else return */
  if (document.getElementById(fieldname) == null)
 {
   return;
  }
 
 
  functiontocall=clickevent;
  crmForm.all[fieldname].DataValue = buttontext;
  crmForm.all[fieldname].readOnly = true;
  crmForm.all[fieldname].style.borderRight="#3366cc 1px solid";
  crmForm.all[fieldname].style.paddingRight="5px";
  crmForm.all[fieldname].style.borderTop="#3366cc 1px solid";
  crmForm.all[fieldname].style.paddingLeft="5px";
  crmForm.all[fieldname].style.fontSize="11px";
  crmForm.all[fieldname].style.backgroundImage="url(/_imgs/btn_rest.gif)";
  crmForm.all[fieldname].style.borderLeft="#3366cc 1px solid";
  crmForm.all[fieldname].style.width=buttonwidth;
  crmForm.all[fieldname].style.cursor="hand";
  crmForm.all[fieldname].style.lineHeight="18px";
  crmForm.all[fieldname].style.borderBottom="#3366cc 1px solid";
  crmForm.all[fieldname].style.backgroundRepeat="repeat-x";
  crmForm.all[fieldname].style.fontFamily="Tahoma";
  crmForm.all[fieldname].style.height="20px";
  crmForm.all[fieldname].style.backgroundColor="#cee7ff";
  crmForm.all[fieldname].style.textAlign="center";
  crmForm.all[fieldname].style.overflow="hidden";
  crmForm.all[fieldname].attachEvent("onmousedown",push_button);
  crmForm.all[fieldname].attachEvent("onmouseup",release_button);
  crmForm.all[fieldname].attachEvent("onclick",functiontocall);
  crmForm.all[fieldname].style.lineHeight="14px";
  crmForm.all[fieldname+'_c'].style.visibility = 'hidden';
  crmForm.all[fieldname].title=title;
  window.focus();
  
 
 function push_button(){
   window.event.srcElement.style.borderWidth="2px";
   window.event.srcElement.style.borderStyle="groove ridge ridge groove";
   window.event.srcElement.style.borderColor="#3366cc #4080f0 #4080f0 #3366cc";
  }
 
 function release_button(){
   window.event.srcElement.style.border="1px solid #3366cc";
  }
 }
 
 
 
/* now the definition of the function to call on button click */
function FunctionName(){
alert("coucou"); 
}

Dans le formulaire Contact, ajouter l'appel de la fonction ConvertToButton sur le OnLoad avec comme paramètres : 'salutation','ButtonText','100px','FunctionName','Button Label'.


Après publication des modifications, nous obtenons l'écran suivant sur un contact.

vendredi 25 novembre 2011

Affichage de plus de 4 zones de liste

A partir de 4 zones de liste (ou de graphique associé une liste), le message "Pour charger les enregistrements ****, cliquez ici".


Si on souhaite afficher toutes les listes, charger le code suivant dans le Unload de l'entité.
Charger au préalable le fichier jquery1.4.1.min.js

/* Sub-Grid Load */
function SubGridLoad () {
$(document).ready(function(){
 var links = $("a.ms-crm-List-LoadOnDemand")
 for (i=0;i<= links.length;i++){
  try{links[i].click();}
  catch(e){}
 }
});
}

Toutes les listes sont maintenant chargées.

vendredi 4 novembre 2011

Ajout d'un groupe de navigation dans un formulaire

Voici la version pour CRM 2011 de mon précédent article http://dynamicscrmcustomization.blogspot.com/2011/10/ajouter-un-groupe-de-relation-dans-un.html

D'après l'article Change Form Navigation du SDK :

La zone de navigation est divisée en cinq zone : Éléments Communs, Ventes, Service, Marketing et Processus. Dans l'éditeur de formulaire, tu peux changer les éléments des groupes et aussi les noms des groupes. Tu peux obtenir le même résultat en utilisant FormXml, en localisant l'élément .

Tu ne peux pas ajouter de nouveau groupe de navigation ou en supprimer. Si un groupe de navigation ne contient pas d'éléments, il n'est pas affiché.

Nous allons créés un nouveau groupe de navigation nommé Demo dans le formulaire de Compte.

Créer d'abord une ressource jscript contenant le code suivant :

// =====================================================
// JsNavBar v1.0 - 11/04/2011 (CRM 2011)
// =====================================================
JsNavBar = function(displayName) {
 var navBarDisplayName = displayName;
 var navBarItemArray = new Array();

 JsNavBar.prototype.AddNavBarItem = function(navBarItemId) {
  navBarItemArray[navBarItemArray.length] = document.getElementById(navBarItemId);};

 JsNavBar.prototype.Show = function() {
  var crmNavBar = document.getElementById("crmFormNavSubareas");
  if (crmNavBar != null) {

   var navBarItems = document.createElement("UL");
   navBarItems.style.display = "inline";
   navBarItems.className = "ms-crm-Nav-Group-Subareas";

   for (i = 0; i < navBarItemArray.length; i++) {
    if (navBarItemArray[i] != null) {
     navBarItems.appendChild(navBarItemArray[i].parentNode);
    }
   }
   if (navBarItems.hasChildNodes()) {
    var newNavBar = document.createElement("LI");
    newNavBar.className = "ms-crm-Nav-Group";
    newNavBar.innerHTML = 'Expanded, click to collapse' + navBarDisplayName + '';
    newNavBar.appendChild(navBarItems);

    if (crmNavBar.childNodes.length > 1) {
     var secondNav = crmNavBar.childNodes[1];
     crmNavBar.insertBefore(newNavBar, secondNav);

    } else {
     crmNavBar.appendChild(newNavBar);
    }
   }
  }
 };
};
Ajouter aussi la fonction d'appel :
 
AjouteNav = function(){
var demoNavBar = new JsNavBar("Demo");  
demoNavBar.AddNavBarItem("navContacts");  
demoNavBar.AddNavBarItem("navRelationships");  
demoNavBar.Show();
};

Lancer la fonction sur le OnLoad de l'entité Compte.
Le nouveau groupe a bien les mêmes fonctionnalités que les groupes standards.

lundi 31 octobre 2011

Ajout d'une zone de navigation

Dans cet article, nous allons ajouter une zone de navigation.


Il faut créer une solution avec l'entité SiteMap. Puis exporter cette solution en non managée.
Ajouter ensuite la section comme indiquer ci-dessous.


L'exemple est issu du Kit de développement http://msdn.microsoft.com/en-us/library/gg327933.aspx 
Mettre à jour la solution puis l'import. Faire un F5 pour voir la nouvelle zone de navigation.

samedi 29 octobre 2011

Ajouter un ToolTip à un champ de saisi

Ce code permet d'ajouter un ToolTip à un champ de saisi, comme pour informer l'utilisateur du format du numéro de téléphone.
L'exemple fourni affiche un ToolTip au niveau du Téléphone principal d'un compte.

Ajouter ce code dans le OnLoad d'une entité.
function AddToolTip(controlId, toolTip){
      var ctl = document.getElementById( controlId );
      ctl.ToolTip = toolTip; ctl.attachEvent( "onfocus" , ShowToolTip );
}

function ShowToolTip(){
      var ctl = event.srcElement; TooltipPopup = window.createPopup();
      var ToolTipHTML  = "
" + ctl.ToolTip + "
";       TooltipPopup.document.body.innerHTML = ToolTipHTML;            var Pos = GetControlPosition ( ctl );             TooltipPopup.show( Pos.X + 8 , Pos.Y + 2 , 230 , 19 , null ); } function GetControlPosition( ctl ){       var Pos = new Object();  var ctlHeight = ctl.offsetHeight; var iY = 0, iX = 0;       while( ctl != null )  {  iY += ctl.offsetTop;  iX += ctl.offsetLeft; ctl = ctl.offsetParent;  }       Pos.X = iX + screenLeft; Pos.Y = iY + screenTop + ctlHeight;  return Pos;} AddToolTip('telephone1', 'Le format est : \"+33 01 23 45 67 89\"');

Ajouter un groupe de relation dans un formulaire

En standard, le CRM offre que quatre groupes de relation dans un formulaire : Détails, Ventes, Service et Marketing.


Le code suivant permet d'ajouter un nouveau groupe de relation. Il doit être ajouté dans l'événement OnLoad d'une entité.

// =====================================================
// JsNavBar v1.0 - 10/30/2009 (CRM 4.0)
// =====================================================
JsNavBar = function(displayName) {
 var navBarDisplayName = displayName;
 var navBarItemArray = new Array();

 JsNavBar.prototype.AddNavBarItem = function(navBarItemId) {
  navBarItemArray[navBarItemArray.length] = document.getElementById(navBarItemId);};

 JsNavBar.prototype.Show = function() {
  var crmNavBar = document.getElementById("crmNavBar");
  if (crmNavBar != null) {

   var navBarItems = document.createElement("UL");
   navBarItems.style.display = "inline";
   navBarItems.className = "ms-crm-Nav-Group-Subareas";

   for (i = 0; i < navBarItemArray.length; i++) {
    if (navBarItemArray[i] != null) {
     navBarItems.appendChild(navBarItemArray[i]).parentNode;
    }
   }
   if (navBarItems.hasChildNodes()) {
    var newNavBar = document.createElement("LI");
    newNavBar.className = "ms-crm-Nav-Group";
    newNavBar.innerHTML = '' + navBarDisplayName + ': Expanded, click to collapse';
    newNavBar.appendChild(navBarItems);

    if (crmNavBar.childNodes.length > 1) {
     var secondNav = crmNavBar.childNodes[1];
     crmNavBar.insertBefore(newNavBar, secondNav);

    } else {
     crmNavBar.appendChild(newNavBar);
    }
   }
  }
 };
};
L'appel de la fonction pour la création et l'ajout de groupe.
var demoNavBar = new JsNavBar("Demo");  
demoNavBar.AddNavBarItem("navSubAct");  
demoNavBar.AddNavBarItem("navRelationships");  
demoNavBar.Show();
Nous obtenons le groupe nommé Demo contenant les deux relations ajoutées.

Cacher le bouton Télécopie



Ce message explique comment cacher le bouton Télécopie dans le menu Nouveau des activités.


Créer une solution avec comme éléments : Activité et Rubans de l'application.


Ajouter dans le fichier customizations.xml, la partie comme ci-dessous.


Après modification de la solution, l'importer. Le bouton Télécopie n'est plus là.


lundi 15 août 2011

Changer la couleur et la police du texte de l'intitulé d'un attribut

Comme exemple, nous allons changer la couleur et la police de l'intitulé du champ Téléphone principal de l'entité Compte.

Dans la personnalisation du formulaire de l'entité compte, insérer dans le OnLoad le code:
document.all.telephone1_c.style.color = 'red';
document.all.telephone1_c.style.fontWeight = 'bold';

Nous obtenons le formulaire pour l'entité Compte.

samedi 6 août 2011

Développer avec le Framework xRM : conseils, astuces et bonnes pratiques

http://www.xrmvirtual.com/events/tips_and_tricks_CRM2011


Se former sur Dynamics CRM
- Planification
- Files d'attente
- Listes marketing
- Réorientation des entités
- Gestion de la sécurité
- Les utilisateurs peuvent avoir des fonctionnalités complétement différentes
- Gestion des doublons

Les projets ne sont pas tous xRM.

Penser xRM
-Déterminer le x dans ton xRM.
-Le x est normalement le nœud central de ton application

Bonnes pratiques
- Éviter d'utiliser du JavaScript qui appelle le serveur.
- Utiliser les Plug-ins PreCreate et PreUpdate.
- Modifier une entité sur le déclenchement de Plug-ins.
- Renseigner ou valider les champs à travers des Plug-ins.
- Établir des projets standards.
- Inclure des commentaires dans le code des Plug-ins.
- Ne pas sur dimensionner.
- Utiliser des messages d'exception personnalisés pour la validation.
- Utiliser des Plug-ins Asynchrones pour lancer des longs traitements.
- Enregistrer les résultats du Plug-in dans une entité.
- Générer les classes des entités avec CRMSVCUtil.
- Étendre les classes des entités pour un code réutilisable.
- Faire une bonne gestion du cache des Plug-ins.

Nettoyer le cache
public static void ClearCache(string entityName)
{
 const string format ="adxdependency:crm:entity:{0}";
 var dependency = string.Format(format,entityName).ToLower();
 var cache = Microsoft.Xrm.Client;Caching.CacheManager.GetBaseCache();
 cache.Remove(dependency);
}

- Créer des relations par ID non par objet
A la place de Account.PrimaryContact=ContactEntity utiliser Account.PrimaryContactId=Contactentity.ContactID

- Suivre les changements de personnalisation
- Planifier à l'avance
- Créer des checklists du déploiement
- Utiliser une seule organisation de développement pour le déploiement
- Enregistrer les Plug-ins dans la base de données.
- Enregistrer les Dlls dans le GAC.
- Placer tous les points de terminaisons et les fichiers de configuration Async.

Non supporté
- Documenter les modifications non supportées
- Les niveaux : Modification d'interface, changement de code
- Important pour les mises à jour

Débogage du CRM
- Visual Studio Remote Debugger
- Activer les fichiers de trace avec CRMDiagTool

dimanche 31 juillet 2011

Accent dans les menus personnalisés

Pour créer un menu personnalisé, nous modifions le fichier  ISV.config. 
Si le titre du menu contient un accent, le caractère accentué ne sera pas affiché dans l'interface du CRM.

  

Pour résoudre ce problème, il faut utiliser le code numérique du caractère.


Voici une liste non exhaustive des caractères accentués avec leur code numérique.


Lien avec Twitter - Partie 3

Dans cet article, nous allons utiliser le gadget de profil pour afficher les tweets du profil portant le même nom que le compte sélectionné.
Le paramétrage du gadget se trouve : http://twitter.com/about/resources/widgets/widget_profile

Tout d'abord, créons une page HTML avec le code suivant :


Dans l'onglet Twitter, nous obtenons les tweets du profil Microsoft. 

Pour l'entreprise Contoso :