Message Image  

Espanol Foro

 View Only
  • 1.  Registros Duplicados en Lead por medio de programación

    Posted Jul 06, 2020 04:30 PM
    Buen día

    Tengo un web service que me ayuda a insertar registros a una base mysql, estos registros después los subo a CRM 365 online por medio de un flujo de trabajo, el detalle es que si tengo cinco registros dentro de la base de mysql que se tienen que insertar y estos tienen el mismo nombre, correo o teléfono casa o teléfono móvil se insertan sin levantar las reglas de duplicados

    esta es parte de mi código:


    protected override void Execute(CodeActivityContext executionContext)
    {
    //Create the tracing service
    ITracingService tracingService = executionContext.GetExtension<ITracingService>();
    //Create the context
    IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
    IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
    ...
    recupero los registros que se tienen en una base de datos mysql por medio de un webservice

    ...

    mando llamar el siguiente metodo

    creaLead(service, WS, tracingService, cPersonaPeopleId, cPersonafirstname, cPersonanacer_segundonombre, cPersonalastname, ... algunos campos mas)




    public void creaLead(IOrganizationService service, String WsUrl, ITracingService tracingService, String PeopleId, String firstname, String segundonombre, String lastname, ... algunos campos mas)
    {

    #region Crea Persona
    Entity cPersona = new Entity("lead");

    cPersona.Attributes.Add("firstname", firstname);//Requerido
    tracingService.Trace("FCD: FirstName: " + firstname);
    if (segundonombre != "")
    {
    cPersona.Attributes.Add("segundonombre", segundonombre);
    tracingService.Trace("FCD: SegundoNombre: " + segundonombre);
    }
    //Requerido
    cPersona.Attributes.Add("lastname", lastname);//Requerido
    tracingService.Trace("FCD: LastName: " + lastname);
    if (apellidomaterno != "")
    {
    ...
    Despues de validar muchos otros campos creo el registro

    //Create
    Guid Idlead = service.Create(cPersona);


    Existe alguna forma de poder validar o activar las reglas de detección de duplicados en un programa así

    Gracias por su ayuda


    Este plugin lo llama un flujo de trabajo para que se active en varias ocasiones al día.

    Estoy trabajando en dynamics 365 Versión (9.1.0) online



    Gracias
    Federico Facio Delgado



    ------------------------------
    Federico Facio Delgado
    Nacer-Global.Com
    ------------------------------


  • 2.  RE: Registros Duplicados en Lead por medio de programación

    Posted Jul 07, 2020 01:51 PM
    Edited by Daniel Montiel Jul 07, 2020 02:05 PM
    Hola Federico,

    Si estoy entendiendo bien lo que estas haciendo es insertar registros en Dynamics 365 por medio del Web API...

    La detección de duplicados no esta disponible de manera estandar al insertar registros por ese método, puedes usar el metodo createRequest. Te incluyo un enlace a la documentacion:
    https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/org-service/entity-operations-create#use-the-createrequest-class
    https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.messages.createrequest?view=dynamics-general-ce-9

    Lo que se me ocurre que puedes tambien hacer es crear una Llave personalizada para identificar tus registros, y en ese caso evitar insertar registros duplicados o incluso hacer uso del método "Upsert" que te permitiría actualizar un registro cuando ya exista en el sistema. También te incluyo un enlace a esa documentacion:
    https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/use-upsert-insert-update-record


    Saludos!

    ------------------------------
    Daniel Montiel
    Consultor CRM
    Definity First
    ------------------------------



  • 3.  RE: Registros Duplicados en Lead por medio de programación

    Posted Jul 08, 2020 10:28 AM
    Buen día

    Gracias, como siempre me han ayudado en estos temas, super logre realizar la inserción sin duplicar registros, muchas gracias Daniel.

    se resolvió con la clase CreateRequest, de acuerdo al enlace https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/org-service/entity-operations-create#use-the-createrequest-class

    MUCHAS GRACIAS
    Federico Facio Delgado 



    ------------------------------
    Federico Facio Delgado
    Nacer-Global.Com
    ------------------------------



  • 4.  RE: Registros Duplicados en Lead por medio de programación

    Posted Jul 08, 2020 02:09 PM


    ------------------------------
    Xavier Villafuerte
    Especialista en Soluciones Cloud
    InnovaIT
    P
    ------------------------------



  • 5.  RE: Registros Duplicados en Lead por medio de programación

    Posted Jul 08, 2020 05:56 PM
    Buen día

    Muchas Gracias Xavier, logre resolver el tema de duplicados incluyendo una cuantas líneas al código utilce unas instrucciones como estas:


    var account = new Account(); account.Name = "Sample Account"; var request = new CreateRequest(); request.Target = account; request.Parameters.Add("SuppressDuplicateDetection", false); try { svc.Execute(request); } catch (FaultException<OrganizationServiceFault> ex) { switch (ex.Detail.ErrorCode) { case -2147220685: throw new InvalidOperationException(ex.Detail.Message); default: throw ex; } }

    Les agradezco por sus apoyos, ya que estos me ayudan a tener una aplicacion que no sea costosa en cuanto a recursos de sistema.

    Muchas gracias
    Federico Facio Delgado



    ------------------------------
    Federico Facio Delgado
    Nacer-Global.Com
    ------------------------------