Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        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();
     }
 }
Exemplo n.º 8
0
        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());
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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;
        }
Exemplo n.º 12
0
 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));
 }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
 public static string SerialiseAttributeQueryExpression(AttributeQueryExpression item)
 {
     return MetadataSerialiser.SerialiseMetadataQueryExpression(item);
 }
Exemplo n.º 16
0
        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.");
            }
        }