Microsoft Dynamics CRM - Services Web

Microsoft Dynamics CRM fournit deux services Web importants qui sont utilisés pour accéder à CRM à partir d'une application externe et invoquer des méthodes Web pour effectuer des opérations de données commerciales courantes telles que la création, la suppression, la mise à jour et la recherche dans CRM.

Considérez les scénarios suivants -

  • Vous disposez d'une application .NET externe, qui doit communiquer avec CRM. Par exemple, vous souhaiterez peut-être insérer un enregistrement de contact dans CRM lorsqu'un nouveau client est enregistré dans votre application externe.

  • Ou peut-être souhaitez-vous rechercher des enregistrements dans CRM et afficher les résultats de la recherche dans votre application externe.

Dans de tels scénarios, vous pouvez utiliser les services Web exposés par CRM pour les consommer dans votre application et effectuer des opérations de création, de suppression, de mise à jour et de recherche dans CRM.

Service Web IDiscoveryService

Ce service Web renvoie une liste des organisations auxquelles appartient l'utilisateur spécifié et le point de terminaison de l'URL pour chacune des organisations.

Service Web IOrganizationService

Ce service Web est le service Web principal utilisé pour accéder aux données et métadonnées dans CRM. Le IOrganizationService utilise deux assemblys importants -Microsoft.Xrm.Sdk.dll et Microsoft.Crm.Sdk.Proxy.dll. Ces assemblys se trouvent dans le package SDK CRM à l'intérieur duBin dossier.

Microsoft.Xrm.Sdk.dll

Cet assembly définit les méthodes et types xRM de base, y compris les classes proxy pour simplifier la connexion à Microsoft Dynamics CRM, les méthodes d'authentification et les contrats de service.

Microsoft.Crm.Sdk.Proxy.dll

Cet assembly définit les demandes et les réponses pour les messages non essentiels ainsi que les énumérations requises pour travailler avec les données de l'organisation. Voici les espaces de noms pris en charge par ces deux assemblys.

Chacun de ces assemblys prend en charge certains messages, qui seront utilisés pour travailler avec les données stockées dans n'importe quelle entité. Une liste complète des messages pris en charge par eux peut être trouvée dans les liens suivants -

Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx

Méthodes du service Web IOrganizationService

le IOrganizationService fournit huit méthodes qui vous permettent d'effectuer toutes les opérations courantes sur le système et les entités personnalisées ainsi que les métadonnées de l'organisation.

Sr.Non Méthode et description
1

IOrganizationService.Create

Crée un enregistrement.

2

IOrganizationService.Update

Met à jour un enregistrement existant.

3

IOrganizationService. Retrieve

Récupère un enregistrement.

4

IOrganizationService. RetrieveMultiple

Récupère une collection d'enregistrements.

5

IOrganizationService. Delete

Supprime un enregistrement.

6

IOrganizationService. Associate

Crée un lien entre les enregistrements.

sept

IOrganizationService.Disassociate

Supprime un lien entre les enregistrements.

8

IOrganizationService.Execute

Utilisé pour le traitement des enregistrements courants ainsi que pour les traitements spécialisés tels que la résolution de cas, la détection des doublons, etc.

Exemple de service Web

Pour comprendre comment les services Web fonctionnent dans CRM, nous examinerons un exemple fourni par CRM SDK. Dans cet exemple, nous allons créer un nouvel enregistrement de compte, le mettre à jour, puis finalement le supprimer à l'aide du CRMIOrganizationService service Web.

Step 1- Ouvrez le dossier dans lequel vous avez extrait le SDK CRM. Ouvrez maintenant la solution QuickStartCS.sln en accédant à l'emplacement suivant: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Nous explorerons le QuickStart avec Simplified Connectionprojet. Ouvertapp.configDans ce projet. Par défaut, leconnectionStrings la section de ce fichier sera commentée.

À partir de là, décommentez la première clé de chaîne de connexion et modifiez les trois détails suivants -

Url- Spécifiez l'URL de votre instance CRM. Dans notre cas, puisque nous utilisons la version en ligne de CRM, vous devrez mentionner cette URL.

Username - Votre nom d'utilisateur CRM Online.

Password - Votre mot de passe CRM Online.

Step 3 - Ouvrez le SimplifiedConnection.cs fichier dans ce projet et Runmethod à l'intérieur.

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

Step 4- Cette méthode montre essentiellement toutes les opérations CRUD utilisant les services Web CRM. Le code crée d'abord une instance d'organisation, puis crée un enregistrement de compte, met à jour l'enregistrement créé, puis le supprime finalement. Examinons les composants importants de ce code. Pour voir les modifications en cours d'exécution dans CRM lorsque ce code s'exécute, vous pouvez déboguer ce code étape par étape (comme nous le verrons ci-dessous) et voir simultanément les modifications dans CRM.

Step 4.1 - Établit la connexion à l'organisation en utilisant la chaîne de connexion que nous avions modifiée dans Step 2.

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

Step 4.2 - Obtient une instance proxy du service Web de l'organisation CRM.

_orgService = new OrganizationService(connection)

Step 4.3 - Crée un nouvel objet d'entité Account et définit son nom, AccountCategoryCode et CustomerTypeCode.

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor);

Step 4.4 - Crée le nouvel enregistrement à l'aide de la méthode Create du service d'organisation.

_accountId = _orgService.Create(account);

Si vous accédez à CRM, vous verrez un enregistrement de compte nouvellement créé.

Step 4.5 - Une fois le compte créé, le service récupère l'enregistrement du CRM à l'aide de la méthode du service Web Récupérer.

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols);

Step 4.6 - Une fois l'enregistrement récupéré, vous pouvez définir la valeur mise à jour de l'enregistrement.

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false;

Step 4.7 - Après avoir défini la valeur mise à jour de l'enregistrement, mettez à jour l'enregistrement dans la base de données CRM à l'aide de la méthode de service Web Mettre à jour.

_orgService.Update(retrievedAccount);

Si vous ouvrez l'enregistrement dans CRM, vous y verrez ces valeurs mises à jour.

Step 4.8 - Enfin, supprimez l'enregistrement à l'aide de la méthode de service Web Supprimer.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Si vous actualisez maintenant le même enregistrement dans CRM, vous verrez que l'enregistrement n'est plus disponible car il est déjà supprimé.

Conclusion

Dans ce chapitre, nous avons traité de deux services Web importants fournis par CRM et d'un exemple concret de la façon dont ces services Web peuvent être utilisés à partir d'une application externe pour effectuer diverses opérations CRUD.