Send Birthday Email Custom Workflow MS CRM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Workflow;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Crm.Sdk.Messages;
namespace Birthday
{
public class Birthday : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
//Tracing service
ITracingService tracing = context.GetExtension<ITracingService>();
//workfow context
IWorkflowContext WorkflowContext = context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(WorkflowContext.UserId);
tracing.Trace("Birthday Workflow started");
//Query to get todays birthday contacts
QueryExpression birthdayContactsQuery = new QueryExpression
{
EntityName = "contact",
ColumnSet = new ColumnSet("contactid", "firstname"),
Criteria = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = "birthdate",
Operator = ConditionOperator.Equal,
Values = { DateTime.Today }
}
}
}
};
DataCollection<Entity> birthdayContacts = service.RetrieveMultiple(birthdayContactsQuery).Entities;
foreach (Entity contact in birthdayContacts)
{
//Create email
Entity email = new Entity("email");
Entity Fromparty = new Entity("activityparty");
Fromparty.Attributes.Add("partyid", new EntityReference("systemuser", WorkflowContext.UserId));
Entity Toparty = new Entity("activityparty");
Toparty.Attributes.Add("partyid", new EntityReference("contact", contact.Id));
email["from"] = new Entity[] { Fromparty };
email["to"] = new Entity[] { Toparty };
email["directioncode"] = true;
email["subject"] = "Wish you very Happy Birthday";
// Create the request
SendEmailFromTemplateRequest emailUsingTemplateReq = new SendEmailFromTemplateRequest
{
Target = email,
TemplateId = new Guid(TemplateID.Get(context).ToString()), //Guid("9CB6EC15-D3C2-E211-B090-00155D07ECE3"),
RegardingId = contact.Id,
RegardingType = contact.LogicalName
};
SendEmailFromTemplateResponse emailUsingTemplateResp = (SendEmailFromTemplateResponse)service.Execute(emailUsingTemplateReq);
//Update next birthday
contact["birthdate"] = DateTime.Today.AddYears(+1);
service.Update(contact);
}
tracing.Trace("email send successfully");
}
//input parameters
[Input("Template ID")]
[RequiredArgument]
public InArgument<string> TemplateID { get; set; }
[Input("frequently")]
[Default("1")]
public InArgument<string> Frequently { get; set; }
}
}
Comments
Post a Comment