Utilisation du Web Service

Certains d'entre vous m'ont demandé un petit tutorial sur la facon d'intégrer des données depuis un formulaire web dans Dynamics CRM...

C'est d'ailleurs un point qu'il est facile d'illustrer en avant vente, lors d'une présentation technique, pour démontrer la souplesse et l'ouverture de Dynamics CRM autour des web services...

Dans les slides de Philippe du Techdays (dispo sur le box.net) vous trouverez une présentation de l'architecture applicative, qui montre les deux web services, qui font le coeur de notre application.

 L'exercice que je propose aux débutants sur ces sujets est de créer une petite application web, qui ira créer un prospect dans CRM (besoin métier : un zone ''Contact'' sur un le site institutionnel,  directement connecter au CRM entrainant la création d'n prospect)

 Voici la méthode pas à pas :

1) aller dans VS Studio 2005 -> Fichier -> nouveau site web ASP.NET et selectionner le language C# plutot que VB.Net (on a chacun nos préférence)

2) dans l'explorateur clic droit pour ajouter une web référence sur le web service CRM : https://<servername[:port]>/mscrmservices/2007/crmservice.asmx avec le namespace : entreprise (ou celui de votre choix)
    dans le code behind (presser F7 sur la page default.asp), bien rajouter en haut la référence : using entreprise;

3) designer le ''pseudo'' site web : un peu de HTML pour avoir une page web sympa (rajouter des images...). Rajouter également des textbox dans lesquelles vous entrerez le nom, prenom, entreprise, email, description du projet.... pour créer le prospect dans CRM

4) le plus important : l'appel du web service : rajouter un bonton dans le design, double clic dessus pour associer du code à cet evenement

protected void Button1_Click(object sender, EventArgs e)
    {
        CrmAuthenticationToken token = new CrmAuthenticationToken();
        token.AuthenticationType = 0;
        token.OrganizationName = "VotreorganisationCRM" // attention, je crois que l'organisation est case sensitive

        CrmService service = new CrmService();
        service.Url = "https://entreprise:5555/mscrmservices/2007/crmservice.asmx";
        service.CrmAuthenticationTokenValue = token;
        service.Credentials = System.Net.CredentialCache.DefaultCredentials;

   // Reste à passer les informations collectées dans les textbox dans la bonne entité. Un textbox pour un attribut de l'entité... 
         lead entrepreneur = new lead();
         entrepreneur.subject = TextBox1.Text;
         entrepreneur.lastname = TextBox2.Text;
         entrepreneur.firstname = TextBox3.Text;
         entrepreneur.companyname = TextBox4.Text;
         entrepreneur.description = TextBox5.Text;
         entrepreneur.emailaddress1 = TextBox6.Text;

        Guid leadguid = service.Create(entrepreneur); //leadguid contient le GUID du prospect tout juste créé

    }

Ces quelques lignes suffissent pour cette illustration... libre à vous de raffiner un peu plus ce petit bout de code.

A noter : pour un compte, ou un contact, ou tout autre entité (même perso), c'est TOUJOURS pareil...

il faut juste instancier l'entité contact mycontact = new contact() ou new_myentite perso = new new_myentie(), remplir les attributs, et appeler le web service

La suite dans le SDK...

PS : dans ce scénario de démonstration, vous pouvez également illustrer le workflow !!! le prospect est directement intégré, attribué (en fonction du code postal par exemple à un utilisateur), CRM envoie un email personnalisé pour remercier le prosepct de sa visite sur le site web, avec les coordonnées d'une personne à contacter.... bref, la suite est à imaginer en fonction des besoins de vos clients pour le processus de qualification et suivi de de leur prospects....

 Vincent