Sunday, June 8, 2014

Associate two records

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;

namespace AssociatedLeadEmail_WF
    public class AssociatedLeadEmail_WF : CodeActivity
        #region Set the input mandatory parameters.
        //Input Value of Associated Lead Record
        [Input("Email Send")]
        public InArgument<EntityReference> EmailSend { get; set; }

        public InArgument<EntityReference> Lead { get; set; }

        public OutArgument<bool> Success { get; set; }


        protected override void Execute(CodeActivityContext context)
            //Create the tracing service
            ITracingService tracingService = context.GetExtension<ITracingService>();
            //Create the context
            IWorkflowContext workFlowContext = context.GetExtension<IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
            IOrganizationService service = serviceFactory.CreateOrganizationService(workFlowContext.UserId);

            string str_EmailSend = this.EmailSend.Get(context) == null ? Guid.Empty.ToString() : this.EmailSend.Get(context).Id.ToString();
            string str_lead = this.Lead.Get(context) == null ? Guid.Empty.ToString() : this.Lead.Get(context).Id.ToString();
                Microsoft.Xrm.Sdk.EntityReference Moniker2 = new Microsoft.Xrm.Sdk.EntityReference();
                Moniker2.Id = Lead.Get(context).Id;
                Moniker2.LogicalName = "lead";//Entity Name

                // Code Create Moniker for second Entity: New_CustomEntity
                Microsoft.Xrm.Sdk.EntityReference Moniker1 = new Microsoft.Xrm.Sdk.EntityReference();
                Moniker1.Id = EmailSend.Get(context).Id;
                Moniker1.LogicalName = "cdi_emailsend";
                tracingService.Trace("Started Assosiating");
                AssociateManyToManyEntityRecords(service, Moniker1, Moniker2, "cdi_emailsend_lead");

            catch (Exception ex)
                //throw new Exception(ex.Message.ToString());
                //tracingService.Trace("Exception" + ex.Message.ToString());
                this.Success.Set(context, false);

        private bool AssociateManyToManyEntityRecords(IOrganizationService service, Microsoft.Xrm.Sdk.EntityReference moniker1, Microsoft.Xrm.Sdk.EntityReference moniker2, string strEntityRelationshipName)
                AssociateRequest request = new AssociateRequest();
                request.Target = moniker1;
                request.RelatedEntities = new EntityReferenceCollection { moniker2 };
                request.Relationship = new Relationship(strEntityRelationshipName);

                // Execute the request.

                return true;
            catch (Exception exp)
                return false;


No comments:

Post a Comment

Get files of last hour in Azure Data Factory

  Case I have a Data Factory pipeline that should run each hour and collect all new files added to the data lake since the last run. What is...