Rechercher dans ce blog

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

jeudi 2 juin 2011

Création d'un bouton dans un formulaire

Créer un attribut de type nvarchar de fomat texte.

Dans le Onload du formulaire, insérer le code suivant :
crmForm.all.hab_bouton_c.style.display = 'none'
crmForm.all.hab_bouton_d.innerHTML = "";

ButtonClick = function() { alert('Hello!'); }

On obtient un bouton qui contient un événement onclick.


samedi 14 mai 2011

Modifier le filtre de la recherche rapide

La recherche rapide pour certaines entités n'est pas bien paramétrée.
Dans le cas suivant, nous avons deux incidents, un résolu et un actif.

lundi 9 mai 2011

Correctif cumulatif 17 pour Microsoft Dynamics CRM 4.0

Version: 04.00.7333.3414
  • Recherche rapide
  • Recherche avançée
  • Gestion des Emails dans un rendez-vous
  • Sélection des heures dans une tâche
  • Déplacement d'un utilisateur vers une division
  • Code personnalisé pour définir un Email
  • Export Excel en mode hors connexion
  • Fonctionnement avec Internet Explorer 9 avec une campagne rapide

lundi 2 mai 2011

Créer une liste personnalisée d'utilisateurs dans le calendrier de service

Par défaut, dans le calendrier de service, la liste des utilisateurs est celle des utilisateurs activés.




L'exemple permet d'afficher seulement les commerciaux.
Les commerciaux sont les utilisateurs qui possèdent le rôle Commercial.



Dans la Zone Paramètres, sélectionner Personnalisation, puis Personnaliser les entités, cliquer sur la ligne 'Utilisateur'.
Sélectionner Formulaires et vues pour afficher la liste des vues.


Créer une nouvelle vue nommée Commerciaux.


Modifier le critère de filtre pour sélectionner seulement les utilisateurs possédant le rôle Commercial.

Enregistrer et publier l'entité.

Au niveau du Calendrier de service, nous avons maintenant la vue Commerciaux sur les Utilisateurs.

En sélectionnant cette vue, nous visualisons le planning des commerciaux. 

mardi 19 avril 2011

Désactiver un champ Lookup

Lookup normal

Lookup en lecture seul et désactivé


La fonction a mettre dans le OnLoad d'une entité.
function DesactiveLookup(sNomAttribut){

crmForm.all[sNomAttribut].Disabled=true;

var loSpan = document.getElementById(sNomAttribut + '_d').getElementsByTagName('SPAN');
for (var liSpan = 0; liSpan < loSpan.length; liSpan++){
loSpan[liSpan].onclick = function(){};
loSpan[liSpan].style.textDecoration ='none';
loSpan[liSpan].style.color = '#000000';
}}
Pour l'utiliser, il suffit d'appeler la fonction avec en argument le nom de l'attribut Lookup.
DesactiveLookup('parentcustomerid');

Dynamics CRM intégré à Microsoft Office Word 2007

Préalablement le composant Visual Studio pour Office doit être installé.

Le complément créé recherche les contacts par rapport au Nom complet.
Après sélection du contact, l'adresse est insérée au niveau du pointeur dans le document Office Word.


Voici les deux fonctions principales utilisées :
Les fonctions utilisent LINQ pour CRM.

Fonction de recherche des contacts :
        private void prvLectureContacts()
        {
            var loCrm = new Xrm.XrmDataContext("CRM");

            // Setup the Authentication Token
            CrmAuthenticationToken loToken = new CrmAuthenticationToken();
            loToken.AuthenticationType = AuthenticationType.AD;  
            loToken.OrganizationName =  "entreprise";

            CrmService loCrmService = new CrmService();
            
            UriBuilder loBuilder = new UriBuilder("http://entreprise:5555/entreprise");
            loBuilder.Path = "//MSCRMServices//2007//CrmService.asmx";
            loCrmService.Url = loBuilder.Uri.ToString();
            loCrmService.CrmAuthenticationTokenValue = loToken;
            

            loCrmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
            loCrmService.CrmAuthenticationTokenValue = loToken;

            WhoAmIRequest loRequest = new WhoAmIRequest();
            WhoAmIResponse loResponse = (WhoAmIResponse)loCrmService.Execute(loRequest); 

            var loRequetContact = from c in loCrm.contacts
                                  where c.ownerid.Value == loResponse.UserId
                                  && c.fullname == txtRecherche.Text  
                                select c;

            cbResultat.Items.AddRange(loRequetContact.ToArray());
            cbResultat.DisplayMember = "fullname"; 
        }

Fonction d'insertion de l'adresse du contact:
         private void buInsererAdresse_Click(object sender, EventArgs e)
        {
            poRange = Globals.ThisAddIn.Application.ActiveDocument.Content;

            try
            {
                String loAdresseSelectionnee = ((Xrm.contact)cbResultat.SelectedItem).fullname + "\n";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_line1 + "\n";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_postalcode + " ";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_city + "\n";
                poRange.InsertAfter(loAdresseSelectionnee);
            }
            catch
            {
                MessageBox.Show("L'adresse du contact ne peut pas être ajoutée au document.");  
            }
        }

Code source disponible : ContactAddIn_mscrm4

vendredi 15 avril 2011

Mettre en lecture seule tous les champs d'un formulaire

function LectureSeule(){
var iLen = crmForm.all.length;
for (i = 0; i < iLen; i++)
{
   o = crmForm.all[i]; 
   if (o.id != ""){o.Disabled=true;}  
}
}

mercredi 13 avril 2011

Modification de la couleur des rendez-vous du calendrier de service

Par défaut les couleurs des rendez-vous sont :
- Blanc pour le statut Libre,
- Bleu pour le statut Occupé,
- Gris pour le statut Absent.








Le mappage des couleurs se situe dans la personnalisation Configuration ISV entre les balises .
Le code du type de l'entité Appointment (Rendez-vous) est le 4201.














Les valeurs des statuts sont définies dans l'aide du SDK.











Pour les trois exemples de statut : 
- Blanc pour le statut Libre - valeur : 1 - CssClass : gantBlockAppointmentStatus1,

- Bleu pour le statut Occupé - valeur : 5 - CssClass : gantBlockAppointmentStatus5,
- Gris pour le statut Absent - valeur : 6 - CssClass : gantBlockAppointmentStatus6.

La définition des CssClass se trouve dans le fichier :
../Microsoft Dynamics CRM\CRMWeb\SM\Gantt\style\GanttControl.css.aspx




 
Nous allons modifier la couleur des trois statuts, en s'appuyant sur le site http://www.color-hex.com/color/ pour définir les nouvelles valeurs hexadécimales des couleurs.  

Le fichier de définition des  CssClass devient :
































Résultat :

Après le redémarrage de IIS et le vidage du cache IE, le calendrier de service devient :

dimanche 10 avril 2011

LINQ pour Microsoft Dynamics CRM 4.0

LINQ (Language Integrated Query) est un ensemble de fonctionnalités introduites dans Visual Studio 2008 qui étend les fonctions de requête puissantes à la syntaxe des langages C# et Visual Basic.
LINQ introduit des modèles standard et facilement assimilables pour l'interrogation et la mise à jour de données.

Connexion au CRM.
var crm = new Xrm.XrmDataContext("CRM");

Voici deux exemples d'interrogation avec LINQ.

Le premier exemple implémente une condition.
System.Console.WriteLine("Liste des comptes situés à PARIS");
 System.Console.WriteLine("=========================================================");
var queryAccounts = from a in crm.accounts
                                where a.address1_city == "PARIS"
                                select a;

foreach (var a in queryAccounts)
{
    System.Console.WriteLine(a.name);
}
System.Console.ReadLine();

Le deuxième exemple implémente une condition sur une jointure.
System.Console.WriteLine("Liste des comptes qui ont au moins un contact à PARIS");
System.Console.WriteLine("====================================================");

var queryAccounts = from a in crm.accounts
                                join c in crm.contacts
                                    on a.accountid equals c.parentcustomerid.Value
                                where c.address1_city == "PARIS" 
                                select a;

foreach (var a in queryAccounts)
{
 System.Console.WriteLine(a.name);
 }
System.Console.ReadLine();

samedi 2 avril 2011

Mettre en surbrillance un champ

Comme exemple, nous allons mettre en surbrillance le 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.backgroundColor = 'yellow';
document.all.telephone1_d.style.backgroundColor = 'yellow';
Enregistrer et publier l'entité Compte.

Nous obtenons le formulaire pour l'entité Compte.

vendredi 18 mars 2011

Connexion impossible après redémarrage du serveur CRM

Après un redémarrage du serveur CRM, la connexion au CRM est impossible et le message suivant s'inscrit dans le journal application de l'observateur d'événement.

Exception type: CrmException
Exception message: The key specified to compute a hash value is expired, only active keys are valid. Expired Key : CrmKey(Id:c1bef2e2-efc5-de11-b538-005056a75caa, ScaleGroupId:00000000-0000-0000-0000-000000000000,
KeyType:CrmWRPCTokenKey, Expired:True, ValidOn:10/31/2009 07:34:57, ExpiresOn:12/03/2009 07:34:57, CreatedOn:10/31/2009 07:34:57, CreatedBy:NT AUTHORITY\NETWORK SERVICE.


Ce message survient car le service Asynchrone de Microsoft CRM n'a pas redémarré. Il faut donc redémarrer ce service manuellement sur le serveur CRM.

Le Rollup 7 corrige ce problème.

vendredi 11 mars 2011

Correctif cumulatif 16 pour Microsoft Dynamics CRM 4.0

Version: 04.00.7333.3335
  • Impossible de coller une date dans la ligne de condition dans la page recherche avancée
  • Rendez-vous en double dans le calendrier Outlook
  • Lancement de l'aperçu du compte dans Outlook
  • Ajouter une liste de prix à un produit
  • Synchronisation des rendez-vous dans Outlook
  • Erreur dans un rapport personnalisé dans SQL Server 2008
  • Erreur dans Outlook lors de l'annulation par plug-in d’envoi ou de modification de message
  • Erreur lors de l'installation d'un correctif ASP.NET
  • Lancement du rapport des comptes sur une recherche avancée
  • L'utilisateur peut supprimer les membres d'une liste marketing en étant en lecture seule
  • Fonctionnement avec Internet Explorer 9
  • Erreur lors de l'ajout d'un fichier de taille supérieur à 8 MB sur un compte
  • Création d'un workflow
  • Édition d'une page d'article
  • Erreur sur les champs Lookup
  • Erreur dans Outlook après publication d'une customisation
  • Création d'un devis avec un produit d'une monnaie différente
  • Synchronisation de donnée en mode offline vers le mode online
  • Email contenant une pièce jointe est illisible lors de son envoi

mardi 1 mars 2011

Erreur de délai d'expiration pour l'affichage

Cause:
Lorsque vous essayer d'accéder à certains affichages dans CRM, vous rencontrez des performances lentes ou des délais d'attente.

Résolution:
Dans la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM
Ajouter la clé EnableRetrieveMultipleOptimization de type DWORD avec comme valeur 1.

http://support.microsoft.com/kb/955138/fr

Erreur de délai d'attente d'importation

Un dépassement de délai se produit lorsque vous importer des fichiers de personnalisation dans Microsoft Dynamics CRM.

Causes:
* Le temps qui est utilisé pour l'importation des fichiers de personnalisation ou de mise à jour du CRM dépasse la valeur de OLEDBTimeout par défaut sur l'ordinateur qui exécute Microsoft SQL Serveur.

* Le temps qui est utilisé pour l'importation des fichiers de personnalisation ou de mise à jour du CRM dépasse la valeur ExtendeTimeout utilisée pour les opérations à long terme.

Résolutions:
* Méthode 1 : Ajouter les clés de registre ExtendedTimeout et OLEDBTimeout pour augmenter les valeurs de délai d'attente

Dans la clé de registre : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

Ajouter une clé OLEDBTimeout de type DWORD avec comme valeur Décimal 86400 (est équivalent à 24 heures, par défaut elle est de 30 secondes).

Ajouter une seconde clé ExtendedTimeout de type DWORD avec comme valeur Décimal 1000000 (mettre une valeur inférieure à 2147483647 représentant 0x7FFFFFF).

*Méthode 2 : Modifier les paramètres dans les fichiers Web.config

Ouvrir le fichier Web.config du Site Web Microsoft CRM 4.0 dans un bloc-notes.
Modifier la ligne avec executionTimeout="3600" et maxRequestLength="20000".

Ouvrir le fichier Web.config du dossier MSCRMService dans un bloc-notes.
Modifier la ligne avec maxRequestLength="20000".

http://support.microsoft.com/kb/918609/fr

jeudi 20 janvier 2011

Cacher un onglet

Le premier onglet a pour id : "tab0Tab", le deuxième : "tab1Tab" et ainsi de suite.

Code à mettre dans le OnLoad du formulaire.

/* Cache un élément graphique */
function CacheGraphique(sField){
var oField = document.getElementById(sField);
if (oField != null){oField.style.display = "none";}}

CacheGraphique("tab5Tab");

Onglet Non caché






Onglet caché

Piloter la contrainte d'un champ en fonction d'une case à cocher

Code à mettre dans le OnLoad du formulaire.

/* Champ requis */
function crmForm.ChampRequis(sField){
crmForm.all.item(sField).setAttribute("req", 2);
crmForm.all.item(sField + "_c").className = "req";
crmForm.all.item(sField + "_c").innerHTML = crmForm.all.item(sField + "_c").innerText + "Required";
}

/* Champ non requis */
function crmForm.ChampNonRequis(sField){
crmForm.all.item(sField).setAttribute("req", 0);
crmForm.all.item(sField +"_c").className = "n";
crmForm.all.item(sField +"_c").innerHTML = crmForm.all.item(sField +"_c").innerText;
}

crmForm.all.hab_prime.onclick= function(){
if (crmForm.all.hab_prime.DataValue=="1"){crmForm.ChampRequis("hab_valeur"); }
else{crmForm.ChampNonRequis("hab_valeur"); }}

Case à cocher non sélectionnée



Case à cocher sélectionnée

mercredi 19 janvier 2011

Désactivation du bouton CRM pour Outlook introduit par le Rollup 7

Le Rollup 7 de Microsoft Dynamics CRM 4.0 installe un bouton CRM pour Outlook en haut à droite du client Web Microsoft Dynamics CRM. Ce bouton fournit un lien pour télécharger Microsoft Dynamics CRM pour Outlook.





Pour ne pas que les utilisateurs puissent l'utiliser, il faut créer une clé dans la base de registre du serveur Microsoft Dynamics CRM :

HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM

La clé se nommant DisableOutlookSetupLink, doit être de type REG_DWORD avec comme valeur 1 pour rendre le bouton non visible.

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

mardi 18 janvier 2011

Modification des pages personnalisées asp.net pour une connexion sécurisée

// Cette ligne de code doit être appelée une seule fois, à l’initialisation de votre application

System.Net.ServicePointManager.ServerCertificateValidationCallback = new
System.Net.Security.RemoteCertificateValidationCallback (myCertificateValidation);

// Méthode myCertificateValidation
bool myCertificateValidation(Object sender,
System.Security.Cryptography.X509Certificates.X509Certificate cert,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors Errors)
{
return true; 
// Vous pouvez être beaucoup plus précis dans la sécurité à mettre en place
}

lundi 17 janvier 2011

Augmenter la sécurité des communications client-serveur

Avec la conception d'un réseau, il est important de considérer la sécurité des communications client-serveur de l'organisation. Pour protéger les données, voici les paramètres à modifier de Microsoft Dynamics CRM pour offrir des transmissions de données plus sûres.

Par défaut, les communications client_serveur de Microsoft Dynamics CRM ne sont pas cryptés. Les informations d'authentification des clients Microsoft Dynamics CRM est transmis en texte clair et donc, éventuellement vulnérable à une intention malveillante.

1. Obtenir un certificat

2. S 'assurer qu'il n'y a pas d'utilisateurs accédant à Internet Information Services (IIS). Pour ce faire, arrêtez le site Web Microsoft Dynamics CRM : cliquer-droit sur le site Web, puis Arrêter.

3. Configurer le site Web Microsoft Dynamics CRM pour utiliser SSL.
         a. Lancer Internet Information Services (IIS).
         b. Cliquer-droit sur le site Web Microsoft Dynamics CRM, puis cliquer sur Propriétés.
         c. Cliquer sur l'onglet Sécurité des répertoires, cliquer sur Certificat de serveur, puis suiver les instructions de l'Assistant Certificat de serveur Web.
         d. Si vous voulez que les clients d'utiliser uniquement SSL lorsqu'ils se connectent à l'application Microsoft Dynamics CRM, sur l'onglet Sécurité des répertoires dans la zone Communications sécurisées, cliquer sur Modifier.
         e. Au niveau de la boîte de dialogue Communications sécurisées, cocher la case Requérir un canal sécurisé (SSL)
         f. Fermer Internet Information Services (IIS).

4. Modifier manuellement les valeurs suivantes dans la base de données de configuration.
        a. Sur l'ordinateur exécutant Microsoft SQL Server, démarrer SQL Server Management Studio.
        b. Développer la base de données MSCRM_CONFIG, sélectionner la table dbo.DeploymentProperties pour l'ouvrir.
        c. Dans la table dbo.DeploymentProperties, au niveau de la ligne ADRootDomainScheme, changer la valeur de la colonne NVarCharColumn de http à https.        
        d. Dans la table dbo.DeploymentProperties, au niveau de la ligne ADSdkRootDomain, changer la valeur de la colonne NVarCharColumn en NomServeur: SSLPortNumber. Par défaut, le port TCP pour les connexions SSL est 443.
        e. Dans la table dbo.DeploymentProperties, au niveau de la ligne ADWebApplicationRootDomain, changer la valeur de la colonne NVarCharColumn en NomServeur: SSLPortNumber. Par défaut, le port TCP pour les connexions SSL est 443
        f. Enregistrer les modifications, puis fermer SQL Server Management Studio.

5. Modifier la valeur de la clé de Registre Windows LocalSDKPort.
       a. Lancer l'Éditeur de Registre, recherchez la clé HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \  MSCRM.
       b. Modifier la clé LocalSdkPort, en cliquant sur Décimal, pour inscrire le numéro du port TCP.
       c. Fermer l'Éditeur de Registre.

6. Relancer IIS avec la ligne de commande  iisreset.

7. Redémarrer le service de traitement asynchrone Microsoft Dynamics CRM.

8. Vérifier que vous pouvez vous connecter avec succès sur le site Web Microsoft Dynamics CRM en utilisant l'adresse suivante: https: / / ServerName / / OrganizationName loader.aspx.