private IEnumerable <EntityReference> GetStepImageReferences( IOrganizationService service, Guid stepId, string imageName, CrmData.SdkImageType imageType) { var query = new QueryExpression { EntityName = CrmData.SdkMessageProcessingStepImageEntityName }; query.Criteria.AddCondition( CrmData.SdkMessageProcessingStepImage_SdkMessageProcessingStepId, ConditionOperator.Equal, stepId); query.Criteria.AddCondition( CrmData.SdkMessageProcessingStepImage_Name, ConditionOperator.Equal, imageName); query.Criteria.AddCondition( CrmData.SdkMessageProcessingStepImage_ImageType, ConditionOperator.Equal, (int)imageType); var steps = service.RetrieveMultiple(query); return(steps.Entities.Select(e => e.ToEntityReference())); }
private void CreateMessageProcessingStepImage( IOrganizationService service, ITracingService tracer, Guid stepId, string imageName, CrmData.SdkImageType imageType, CrmData.SdkMessageName messageName, string attributes) { var existingImages = GetStepImageReferences(service, stepId, imageName, imageType); if (existingImages.Any()) { tracer.Trace("A step image named '{0}' of type '{1}' already exists.", imageName, imageType.ToString()); } else { var image = new Entity(CrmData.SdkMessageProcessingStepImageEntityName); image[CrmData.SdkMessageProcessingStepImage_SdkMessageProcessingStepId] = new EntityReference(CrmData.SdkMessageProccessingStepEntityName, stepId); image[CrmData.SdkMessageProcessingStepImage_Name] = imageName; image[CrmData.SdkMessageProcessingStepImage_EntityAlias] = imageName; image[CrmData.SdkMessageProcessingStepImage_ImageType] = new OptionSetValue((int)imageType); image[CrmData.SdkMessageProcessingStepImage_MessagePropertyName] = CrmData.GetMessageProperyName(messageName); if (!string.IsNullOrEmpty(attributes)) { image[CrmData.SdkMessageProcessingStepImage_Attributes] = attributes; } service.Create(image); } }