public static RetrieveMetadataChangesResponse LoadEntityDetails(IOrganizationService service, string entityName) { if (service == null) { return(null); } var eqe = new EntityQueryExpression { Properties = new MetadataPropertiesExpression(entityProperties) }; eqe.Properties.PropertyNames.AddRange(entityDetails); eqe.Criteria.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName)); var aqe = new AttributeQueryExpression { Properties = new MetadataPropertiesExpression(attributeProperties) }; eqe.AttributeQuery = aqe; var req = new RetrieveMetadataChangesRequest { Query = eqe, ClientVersionStamp = null }; return(service.Execute(req) as RetrieveMetadataChangesResponse); }
public static List <EntityMetadata> GetStringFieldsFieldListForEntity(IOrganizationService service, string entityLogicalName) { MetadataFilterExpression EntityFilter = new MetadataFilterExpression(LogicalOperator.And); EntityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityLogicalName)); MetadataConditionExpression metadataExpression = new MetadataConditionExpression("AttributeType", MetadataConditionOperator.Equals, AttributeTypeCode.String); MetadataFilterExpression AttributeFilter = new MetadataFilterExpression(LogicalOperator.And); AttributeFilter.Conditions.Add(metadataExpression); AttributeQueryExpression Attributefilters = new AttributeQueryExpression() { Criteria = AttributeFilter }; EntityQueryExpression entityQueryExpression = new EntityQueryExpression() { Criteria = EntityFilter, AttributeQuery = Attributefilters }; RetrieveMetadataChangesResponse initialRequest = GetMetadataChanges(service, entityQueryExpression, null, DeletedMetadataFilters.All); return(initialRequest.EntityMetadata.ToList()); }
public void AddAttributes(List <string> attributeLogicalNames, List <string> propertiesToReturn) { // Attribute Query Properties - Which Properties to return AttributeQueryExpression attributeQuery = new AttributeQueryExpression(); attributeQuery.Properties = new MetadataPropertiesExpression(); attributeQuery.Properties.PropertyNames = propertiesToReturn; Request.Query.AttributeQuery = attributeQuery; // Attribute Query Criteria - Which Attributes to return MetadataFilterExpression critiera = new MetadataFilterExpression(); attributeQuery.Criteria = critiera; critiera.FilterOperator = LogicalOperator.Or; critiera.Conditions = new List <MetadataConditionExpression>(); foreach (string attribute in attributeLogicalNames) { MetadataConditionExpression condition = new MetadataConditionExpression(); condition.PropertyName = "LogicalName"; condition.ConditionOperator = MetadataConditionOperator.Equals; condition.Value = attribute; critiera.Conditions.Add(condition); } }
public void AddAttributes(List<string> attributeLogicalNames, List<string> propertiesToReturn) { this._attributeLogicalNames = attributeLogicalNames; this._attributePropertiesToReturn = propertiesToReturn; // Attribute Query Properties - Which Properties to return AttributeQueryExpression attributeQuery = new AttributeQueryExpression(); attributeQuery.Properties = new MetadataPropertiesExpression(); attributeQuery.Properties.PropertyNames.AddRange(propertiesToReturn); _request.Query.AttributeQuery = attributeQuery; // Attribute Query Criteria - Which Attributes to return MetadataFilterExpression critiera = new MetadataFilterExpression(); attributeQuery.Criteria = critiera; critiera.FilterOperator = LogicalOperator.Or; foreach (string attribute in attributeLogicalNames) { MetadataConditionExpression condition = new MetadataConditionExpression(); condition.PropertyName = "LogicalName"; condition.ConditionOperator = MetadataConditionOperator.Equals; condition.Value = attribute; critiera.Conditions.Add(condition); } }
private AttributeTypeCode?GetAttributeType(string attribute, string entityName) { log.StartSection(MethodBase.GetCurrentMethod().Name + " " + entityName + "." + attribute); AttributeTypeCode?type = null; var eqe = new EntityQueryExpression(); eqe.Properties = new MetadataPropertiesExpression(); eqe.Properties.PropertyNames.Add("Attributes"); eqe.Criteria.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName)); var aqe = new AttributeQueryExpression(); aqe.Properties = new MetadataPropertiesExpression("LogicalName", "AttributeType"); eqe.AttributeQuery = aqe; var req = new RetrieveMetadataChangesRequest() { Query = eqe, ClientVersionStamp = null }; var resp = (RetrieveMetadataChangesResponse)crmsvc.Execute(req); if (resp.EntityMetadata.Count == 1) { foreach (var attr in resp.EntityMetadata[0].Attributes) { if (attr.LogicalName == attribute) { type = attr.AttributeType; break; } } } log.Log("Type: {0}", type); log.EndSection(); return(type); }
public void AddAttributes(IList <string> attributeLogicalNames, IList <string> propertiesToReturn) { // Attribute Query Properties - Which Properties to return AttributeQueryExpression attributeQuery = new AttributeQueryExpression() { Properties = new MetadataPropertiesExpression() }; attributeQuery.Properties.PropertyNames.AddRange(propertiesToReturn); Request.Query.AttributeQuery = attributeQuery; // Attribute Query Criteria - Which Attributes to return MetadataFilterExpression critiera = new MetadataFilterExpression() { FilterOperator = LogicalOperator.Or }; attributeQuery.Criteria = critiera; foreach (string attribute in attributeLogicalNames) { MetadataConditionExpression condition = new MetadataConditionExpression() { PropertyName = "LogicalName", ConditionOperator = MetadataConditionOperator.Equals, Value = attribute }; critiera.Conditions.Add(condition); } }
private void LoadAttributes() { if (Service == null) { return; } Enabled = false; if (metadata == null) { var asyncinfo = new WorkAsyncInfo() { Message = "Loading entities and attributes", Work = (a, args) => { var eqe = new EntityQueryExpression(); eqe.Properties = new MetadataPropertiesExpression("DisplayName", "Attributes"); eqe.Criteria.Conditions.Add(new MetadataConditionExpression("IsCustomizable", MetadataConditionOperator.Equals, true)); var aqe = new AttributeQueryExpression(); aqe.Properties = new MetadataPropertiesExpression(); aqe.Properties.AllProperties = true; aqe.Criteria.Conditions.Add(new MetadataConditionExpression("AttributeType", MetadataConditionOperator.Equals, AttributeTypeCode.DateTime)); //aqe.Criteria.Conditions.Add(new MetadataConditionExpression("CanChangeDateTimeBehavior", MetadataConditionOperator.Equals, true)); eqe.AttributeQuery = aqe; var req = new RetrieveMetadataChangesRequest() { Query = eqe, ClientVersionStamp = null }; args.Result = Service.Execute(req) as RetrieveMetadataChangesResponse; }, PostWorkCallBack = (args) => { if (args.Error != null) { MessageBox.Show($"Failed to load metadata:\n{args.Error.Message}", "Load", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!(args.Result is RetrieveMetadataChangesResponse)) { MessageBox.Show($"Unexpected result:\n{args.Result}", "Load", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } metadata = ((RetrieveMetadataChangesResponse)args.Result).EntityMetadata; PopulateAttributes(); } }; WorkAsync(asyncinfo); } else { PopulateAttributes(); } }
private EntityDynamicPluginStepsConfig RefineEntityDynamicPluginStepsConfig(EntityDynamicPluginStepsConfig config) { var entityFilter = new MetadataFilterExpression(LogicalOperator.And); entityFilter.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, config.EntityName)); var entityProperties = new MetadataPropertiesExpression { AllProperties = false }; entityProperties.PropertyNames.AddRange("LogicalName", "Attributes"); var attributeFilter = new MetadataFilterExpression(LogicalOperator.And); attributeFilter.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.In, config.Attributes)); var attributeProperties = new MetadataPropertiesExpression() { AllProperties = false }; attributeProperties.PropertyNames.AddRange("LogicalName"); var attributeQuery = new AttributeQueryExpression() { Criteria = attributeFilter, Properties = attributeProperties }; var query = new EntityQueryExpression { Criteria = entityFilter, Properties = entityProperties, AttributeQuery = attributeQuery, }; var request = new RetrieveMetadataChangesRequest { Query = query }; var pluginContext = this.PluginContext; var respones = (RetrieveMetadataChangesResponse)pluginContext.OrgCtx.Execute(request); var entityMetadata = respones.EntityMetadata.FirstOrDefault(); if (entityMetadata == null || !entityMetadata.Attributes.Any()) { return(null); } return(new EntityDynamicPluginStepsConfig() { EntityName = config.EntityName, Attributes = entityMetadata.Attributes.Select(r => r.LogicalName).ToArray() }); }
public static AttributeMetadata GetAttributeMetadata( IOrganizationService service, string entityName, string attributeName, string[] attrPropNames) { var entityFilter = new MetadataFilterExpression(LogicalOperator.And); entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName)); var entityProperties = new MetadataPropertiesExpression { AllProperties = false }; entityProperties.PropertyNames.AddRange("LogicalName", "Attributes"); var attributeFilter = new MetadataFilterExpression(LogicalOperator.And); attributeFilter.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, attributeName)); var attributeProperties = new MetadataPropertiesExpression() { AllProperties = false }; attributeProperties.PropertyNames.AddRange(attrPropNames); var attributeQuery = new AttributeQueryExpression() { Criteria = attributeFilter, Properties = attributeProperties }; var query = new EntityQueryExpression { Criteria = entityFilter, Properties = entityProperties, AttributeQuery = attributeQuery, }; var request = new RetrieveMetadataChangesRequest { Query = query }; var response = (RetrieveMetadataChangesResponse)service.Execute(request); return(response.EntityMetadata.FirstOrDefault()?.Attributes.FirstOrDefault()); }
public bool QueryAllMetaData() { RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest(); request.Query = new EntityQueryExpression(); request.Query.Criteria = new MetadataFilterExpression(); request.Query.Criteria.FilterOperator = LogicalOperator.Or; request.Query.Criteria.Conditions = new List <MetadataConditionExpression>(); // Which entitiy to return MetadataConditionExpression condition = new MetadataConditionExpression(); condition.ConditionOperator = MetadataConditionOperator.Equals; condition.PropertyName = "LogicalName"; condition.Value = "account"; request.Query.Criteria.Conditions.Add(condition); request.Query.Properties = new MetadataPropertiesExpression(); request.Query.Properties.PropertyNames = new List <string>("Attributes"); // Attribute Query Properties - Which Properties to return AttributeQueryExpression attributeQuery = new AttributeQueryExpression(); attributeQuery.Properties = new MetadataPropertiesExpression(); attributeQuery.Properties.PropertyNames = new List <string>("OptionSet"); //attributeQuery.Properties.AllProperties = true; request.Query.AttributeQuery = attributeQuery; // Attribute Query Criteria - Which Attributes to return MetadataFilterExpression critiera = new MetadataFilterExpression(); attributeQuery.Criteria = critiera; critiera.FilterOperator = LogicalOperator.And; critiera.Conditions = new List <MetadataConditionExpression>(); RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)OrganizationServiceProxy.Execute(request); return(true); }
public bool QueryAllMetaData() { RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest(); request.Query = new EntityQueryExpression(); request.Query.Criteria = new MetadataFilterExpression(); request.Query.Criteria.FilterOperator = LogicalOperator.Or; request.Query.Criteria.Conditions = new List<MetadataConditionExpression>(); // Which entitiy to return MetadataConditionExpression condition = new MetadataConditionExpression(); condition.ConditionOperator = MetadataConditionOperator.Equals; condition.PropertyName = "LogicalName"; condition.Value = "account"; request.Query.Criteria.Conditions.Add(condition); request.Query.Properties = new MetadataPropertiesExpression(); request.Query.Properties.PropertyNames = new List<string>("Attributes"); // Attribute Query Properties - Which Properties to return AttributeQueryExpression attributeQuery = new AttributeQueryExpression(); attributeQuery.Properties = new MetadataPropertiesExpression(); attributeQuery.Properties.PropertyNames = new List<string>("OptionSet"); //attributeQuery.Properties.AllProperties = true; request.Query.AttributeQuery = attributeQuery; // Attribute Query Criteria - Which Attributes to return MetadataFilterExpression critiera = new MetadataFilterExpression(); attributeQuery.Criteria = critiera; critiera.FilterOperator = LogicalOperator.And; critiera.Conditions = new List<MetadataConditionExpression>(); RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)OrganizationServiceProxy.Execute(request); return true; }
public static RetrieveMetadataChangesResponse LoadEntityDetails(IOrganizationService service, string entityName) { if (service == null) { return null; } var eqe = new EntityQueryExpression(); eqe.Properties = new MetadataPropertiesExpression(entityProperties); eqe.Properties.PropertyNames.AddRange(entityDetails); eqe.Criteria.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName)); var aqe = new AttributeQueryExpression(); aqe.Properties = new MetadataPropertiesExpression(attributeProperties); eqe.AttributeQuery = aqe; var req = new RetrieveMetadataChangesRequest() { Query = eqe, ClientVersionStamp = null }; return service.Execute(req) as RetrieveMetadataChangesResponse; }
public static string SerialiseAttributeQueryExpression(AttributeQueryExpression item) { return(MetadataSerialiser.SerialiseMetadataQueryExpression(item)); }
private EntityMetadataCollection GetEntitiesMetadata() { var pluginContext = this.PluginContext; pluginContext.Trace("Retrieving Entity List..."); var entityFilter = new MetadataFilterExpression(LogicalOperator.And); entityFilter.Conditions.Add(new MetadataConditionExpression("IsCustomizable", MetadataConditionOperator.Equals, true)); entityFilter.Conditions.Add(new MetadataConditionExpression("IsIntersect", MetadataConditionOperator.Equals, false)); entityFilter.Conditions.Add(new MetadataConditionExpression("CanBeInManyToMany", MetadataConditionOperator.Equals, true)); var entityProperties = new MetadataPropertiesExpression { AllProperties = false }; entityProperties.PropertyNames.AddRange("LogicalName", "ObjectTypeCode", "DisplayName", "IsCustomEntity", "IconSmallName", "ManyToManyRelationships", "Attributes"); var relationshipProperties = new MetadataPropertiesExpression { AllProperties = false }; relationshipProperties.PropertyNames.AddRange("SchemaName", "Entity1LogicalName", "Entity2LogicalName"); var relationshipQuery = new RelationshipQueryExpression { Properties = relationshipProperties, }; var selectTextAttributesFilter1 = new MetadataFilterExpression(LogicalOperator.And); selectTextAttributesFilter1.Conditions.Add( new MetadataConditionExpression("AttributeType", MetadataConditionOperator.In, new [] { AttributeTypeCode.String, AttributeTypeCode.Memo, })); selectTextAttributesFilter1.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.NotIn, new[] { "traversedpath" })); var selectTextAttributesFilter2 = new MetadataFilterExpression(LogicalOperator.Or); selectTextAttributesFilter2.Conditions.Add( new MetadataConditionExpression("IsValidForUpdate", MetadataConditionOperator.Equals, true)); selectTextAttributesFilter2.Conditions.Add( new MetadataConditionExpression("IsPrimaryName", MetadataConditionOperator.Equals, true)); var selectTextAttributesFilter = new MetadataFilterExpression(LogicalOperator.And); selectTextAttributesFilter.Filters.AddRange(selectTextAttributesFilter1, selectTextAttributesFilter2); var selectPotentialStatusAttributesFilter = new MetadataFilterExpression(LogicalOperator.And); selectPotentialStatusAttributesFilter.Conditions.Add(new MetadataConditionExpression("AttributeType", MetadataConditionOperator.In, new[] { AttributeTypeCode.Boolean, AttributeTypeCode.State })); selectPotentialStatusAttributesFilter.Conditions.Add( new MetadataConditionExpression("IsValidForUpdate", MetadataConditionOperator.Equals, true)); var attributeFilter = new MetadataFilterExpression(LogicalOperator.Or); attributeFilter.Filters.AddRange(new List <MetadataFilterExpression>() { selectTextAttributesFilter, selectPotentialStatusAttributesFilter }); var attributeProperties = new MetadataPropertiesExpression() { AllProperties = false }; attributeProperties.PropertyNames.AddRange("LogicalName", "DisplayName", "IsCustomAttribute", "MaxLength"); var attributeQuery = new AttributeQueryExpression() { Criteria = attributeFilter, Properties = attributeProperties }; var query = new EntityQueryExpression { Criteria = entityFilter, Properties = entityProperties, AttributeQuery = attributeQuery, RelationshipQuery = relationshipQuery }; var request = new RetrieveMetadataChangesRequest { Query = query }; var respones = (RetrieveMetadataChangesResponse)pluginContext.OrgCtx.Execute(request); return(respones.EntityMetadata); }
public static string SerialiseAttributeQueryExpression(AttributeQueryExpression item) { return MetadataSerialiser.SerialiseMetadataQueryExpression(item); }
private void ValidateAttribute( string itemSetName, string entityLogicalName, string attrLogicalName, string itemSetConfigAttrDisplayName, bool mandatory, IEnumerable <AttributeTypeCode> validTypes) { if (string.IsNullOrWhiteSpace(attrLogicalName)) { if (mandatory) { throw new InvalidPluginExecutionException( $"{this.GetGenericItemSetSavingErrorMessage(itemSetName)} " + $"'{itemSetConfigAttrDisplayName}' is not specified."); } return; } var pluginContext = this.PluginContext; var entityFilter = new MetadataFilterExpression(LogicalOperator.And); entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityLogicalName)); var entityProperties = new MetadataPropertiesExpression { AllProperties = false }; entityProperties.PropertyNames.AddRange("LogicalName", "Attributes"); var attributeFilter = new MetadataFilterExpression(LogicalOperator.And); attributeFilter.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, attrLogicalName)); var attributeProperties = new MetadataPropertiesExpression() { AllProperties = false }; attributeProperties.PropertyNames.AddRange("LogicalName", "AttributeType"); var attributeQuery = new AttributeQueryExpression() { Criteria = attributeFilter, Properties = attributeProperties }; var query = new EntityQueryExpression { Criteria = entityFilter, Properties = entityProperties, AttributeQuery = attributeQuery, }; var request = new RetrieveMetadataChangesRequest { Query = query }; var respones = (RetrieveMetadataChangesResponse)pluginContext.OrgCtx.Execute(request); var entityMetadata = respones.EntityMetadata.FirstOrDefault(); if (entityMetadata == null || !entityMetadata.Attributes.Any()) { throw new InvalidPluginExecutionException( $"{this.GetGenericItemSetSavingErrorMessage(itemSetName)} " + $"'{attrLogicalName}' {itemSetConfigAttrDisplayName} is not an attribute of the {entityLogicalName} Entity."); } var attribute = entityMetadata.Attributes.FirstOrDefault(); // ReSharper disable once PossibleNullReferenceException var validType = validTypes.Any(r => r == attribute.AttributeType); if (!validType) { throw new InvalidPluginExecutionException( $"{this.GetGenericItemSetSavingErrorMessage(itemSetName)} {itemSetConfigAttrDisplayName} has incorrect data type."); } }