protected override void Execute(CodeActivityContext executionContext) { #region "Load CRM Service from context" Common objCommon = new Common(executionContext); objCommon.tracingService.Trace("Load CRM Service from context --- OK"); #endregion #region "Read Parameters" EntityReference marketingList = this.MarketingList.Get(executionContext); objCommon.tracingService.Trace(String.Format("marketingList: {0} ", marketingList.Id.ToString())); EntityReference account = this.account.Get(executionContext); EntityReference contact = this.contact.Get(executionContext); EntityReference lead = this.lead.Get(executionContext); #endregion Guid idToAdd = Guid.Empty; if (account != null) { idToAdd = account.Id; } else if (contact != null) { idToAdd = contact.Id; } else if (lead != null) { idToAdd = lead.Id; } objCommon.tracingService.Trace(String.Format("idToAdd: {0} ", idToAdd.ToString())); AddMemberListRequest addRequest = new AddMemberListRequest(); addRequest.ListId = marketingList.Id; addRequest.EntityId = idToAdd; AddMemberListResponse addResponse = (AddMemberListResponse)objCommon.service.Execute(addRequest); }
/// <summary> /// Create and configure the organization service proxy. /// Initiate the method to create any data that this sample requires. /// Delete a new queue instance. /// Optionally delete any entity records that were created for this sample. /// </summary> /// <param name="serverConfig">Contains server connection information.</param> /// <param name="promptforDelete">When True, the user will be prompted to delete all /// created entities.</param> public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete) { try { // Connect to the Organization service. // The using statement assures that the service proxy will be properly disposed. using (_serviceProxy = ServerConnection.GetOrganizationProxy(serverConfig)) { // This statement is required to enable early-bound type support. _serviceProxy.EnableProxyTypes(); // Call the method to create any data that this sample requires. CreateRequiredRecords(); #region Run a QC with marketing list as input //<snippetQuickCampaign1> List newList = new List() { ListName = "TestList", CreatedFromCode = new OptionSetValue((int)ListCreatedFromCode.Account) }; _newListId = _serviceProxy.Create(newList); for (int j = 0; j < 5; j++) { AddMemberListRequest addMemberListRequest = new AddMemberListRequest(); addMemberListRequest.EntityId = _accountIdArray[j]; addMemberListRequest.ListId = _newListId; AddMemberListResponse addMemberListResponse = _serviceProxy.Execute(addMemberListRequest) as AddMemberListResponse; } Guid BOId = CreateAndRetrieveQuickCampaignForMarketingList( _templateLetterActivity, _newListId, PropagationOwnershipOptions.ListMemberOwner, true); //</snippetQuickCampaign1> #endregion #region Run a QC with a list of accounts as input // Construct a Query Expression(QE) which specifies which records QC should include QueryExpression query = new QueryExpression("account"); query.ColumnSet = new ColumnSet("accountid"); query.Criteria = new FilterExpression(); FilterExpression filter = query.Criteria.AddFilter(LogicalOperator.Or); for (int j = 0; j < 5; j++) { filter.AddCondition("accountid", ConditionOperator.Equal, _accountIdArray[j]); } _qcBOId = CreateAndRetrieveQuickCampaignForQueryExpression( _templateEmailActivity, query, PropagationOwnershipOptions.ListMemberOwner, true); #endregion DeleteRequiredRecords(promptforDelete); } } // Catch any service fault exceptions that Microsoft Dynamics CRM throws. catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> ) { // You can handle an exception here or pass it back to the calling method. throw; } }