The
Associate Lead to Email Send custom workflow activity will accept a Lead and an
Email Send and associate the two via a CRM many-to-many relationship named
cdi_emailsend_lead
Inputs
Name
|
Type
|
Notes
|
Email Send
|
EntityReference
(cdi_emailsend)
|
Lookup to the
Email Send
|
Lead
|
EntityReference
(lead)
|
Lookup to the
Lead
|
Name
|
Type
|
Notes
|
Success
|
Boolean
|
Indicates Success or failure of the code
|
OutputsAssociate two records
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Workflow;
using System;
using System.Activities;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CustomWorkflow
{
public class AssociateContactToEmailSend : CodeActivity
{
#region Input Properties
[RequiredArgument]
[Input("Contact")]
[ReferenceTarget("contact")]
public InArgument<EntityReference> Guest { get; set; }
[RequiredArgument]
[Input("Email Send")]
[ReferenceTarget("cdi_emailsend")]
public InArgument<EntityReference> EmailSend { get; set; }
#endregion
protected override void Execute(CodeActivityContext context)
{
IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
//Create the tracing service
ITracingService tracingService = context.GetExtension<ITracingService>();
var guest = Guest.Get(context);
var emailSend = EmailSend.Get(context);
tracingService.Trace("Guest:" + guest.Id);
tracingService.Trace("Email Send:" + emailSend.Id);
Microsoft.Xrm.Sdk.EntityReference Moniker2 = new Microsoft.Xrm.Sdk.EntityReference();
Moniker2.Id = guest.Id;
Moniker2.LogicalName = "contact";//Entity Name
// Code Create Moniker for second Entity: New_CustomEntity
Microsoft.Xrm.Sdk.EntityReference Moniker1 = new Microsoft.Xrm.Sdk.EntityReference();
Moniker1.Id = emailSend.Id;
Moniker1.LogicalName = "cdi_emailsend";
tracingService.Trace("Started Assosiating");
AssociateManyToManyEntityRecords(service, Moniker1, Moniker2, "cdi_emailsend_contact");
tracingService.Trace("Completed Assosiating");
}
private bool AssociateManyToManyEntityRecords(IOrganizationService service, Microsoft.Xrm.Sdk.EntityReference moniker1, Microsoft.Xrm.Sdk.EntityReference moniker2, string strEntityRelationshipName)
{
try
{
AssociateRequest request = new AssociateRequest();
request.Target = moniker1;
request.RelatedEntities = new EntityReferenceCollection { moniker2 };
request.Relationship = new Relationship(strEntityRelationshipName);
// Execute the request.
service.Execute(request);
return true;
}
catch (Exception exp)
{
return false;
}
}
}
}
No comments:
Post a Comment