0

J'ai un petit outil pour transférer des Entités de microsoft dynamic 365 crm 2016 à un autre. J'ai transféré avec succès des entités qui n'ont aucune dépendance; mais quand j'essaie de transférer des entités que certains jeux d'options ont installées - comme la langue, les verticales, les départements - j'obtiens une erreur parce que ces jeux d'options n'existent pas sur l'instance cible.Comment puis-je transférer des Options/Extensions avec Microsoft Xrm Sdk

J'ai signé ces ensembles d'options à l'image ci-dessous. enter image description here

Mon problème est que je ne sais pas comment je peux récupérer ces extensions par programmation. J'ai déjà utilisé le code ci-dessous pour retriver toutes les options, mais les langages définis par l'utilisateur, les verticales et les autres options n'étaient pas disponibles à repsonse.

RetrieveAllOptionSetsRequest retrieveAllOptionSetsRequest = new RetrieveAllOptionSetsRequest(); 
     var retrieveAllOptionSetsResponse =(RetrieveAllOptionSetsResponse)sourceService.Execute(retrieveAllOptionSetsRequest); 

Une idée? Quelle requête dois-je envoyer à l'instance source crm pour obtenir toutes les options définies par l'utilisateur?

Répondre

1

Ces entités peuvent avoir des ensembles d'options privés. Vous pouvez récupérer ces ensembles d'options pour chaque entité à l'aide de ces méthodes (transmettez le nom logique de l'entité au paramètre d'entité):

using System; 
using Microsoft.Xrm.Sdk; 
using Microsoft.Xrm.Sdk.Messages; 
using Microsoft.Xrm.Sdk.Metadata; 
using Microsoft.Xrm.Tooling.Connector; 
using System.Collections.Generic; 
using System.Linq; 

    private List<AttributeMetadata> getPicklists(IOrganizationService svc, string entity) 
    { 
     return allAttributes(svc, entity).Where(a => a.AttributeType == AttributeTypeCode.Picklist).ToList(); 
    } 

    //Retrieve all attributes of an entity 
    private List<AttributeMetadata> allAttributes(IOrganizationService svc, string entity) 
    { 
     var req = new RetrieveEntityRequest(); 

     req.EntityFilters = EntityFilters.Attributes; 

     req.LogicalName = entity.ToLower(); 

     var response = (RetrieveEntityResponse)svc.Execute(req); 

     return response.EntityMetadata.Attributes.ToList(); 
    }