namespace XrmSolutions.MarketingListImport.Plugins{ using System; using System.ServiceModel; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; public class PreCreateListMember: Plugin { public PreCreateListMember() : base(typeof(PreCreateListMember)) { base.RegisteredEvents.Add(new Tuple<int, string, string, Action<LocalPluginContext>> (10, "Create", "xrm_listmember", new Action<LocalPluginContext>(ExecutePreCreateListMember))); } protected void ExecutePreCreateListMember(LocalPluginContext localContext) { if (!localContext.PluginExecutionContext.MessageName.Equals("Create", StringComparison.InvariantCultureIgnoreCase)) return; Entity importedRecord = localContext.PluginExecutionContext.InputParameters["Target"] as Entity; if (!importedRecord.LogicalName.Equals("xrm_listmember")) return; if (!importedRecord.Contains("xrm_listid")) throw new InvalidPluginExecutionException("List was not mapped!"); EntityReference listitem = null; if (importedRecord.Contains("xrm_leadid")) listitem = importedRecord.GetAttributeValue<EntityReference>("xrm_leadid"); else if (importedRecord.Contains("xrm_accountid")) listitem = importedRecord.GetAttributeValue<EntityReference>("xrm_accountid"); else if (importedRecord.Contains("xrm_contactid")) listitem = importedRecord.GetAttributeValue<EntityReference>("xrm_contactid"); else throw new InvalidPluginExecutionException("Contact, Account and Lead fields don't contain information!"); AddMemberListRequest request = new AddMemberListRequest() { ListId = importedRecord.GetAttributeValue<EntityReference>("xrm_listid").Id, EntityId = listitem.Id }; localContext.OrganizationService.Execute(request); } }}