/// <summary>
        ///  Gets details of changes in metadata that have occurred for a particular entity, since the specified time stamp. Allows a subset of properties to be specified, and filters for information regarding deleted metadata that will be returned.
        /// </summary>
        /// <param name="entityLogicalName"></param>
        /// <param name="clientTimestamp"></param>
        /// <param name="properties"></param>
        /// <param name="deletedFilters"></param>
        /// <returns></returns>
        public RetrieveMetadataChangesResponse GetChanges(string entityLogicalName, string clientTimestamp, IEnumerable<string> properties, DeletedMetadataFilters deletedFilters)
        {
            // retrieve the current timestamp value;
            var entityFilter = new MetadataFilterExpression(LogicalOperator.And);
            entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityLogicalName));
            var props = new MetadataPropertiesExpression();
            if (properties == null)
            {
                props.AllProperties = true;
            }
            else
            {
                props.PropertyNames.AddRange(properties);
            }

            //LabelQueryExpression labels = new LabelQueryExpression();
            var entityQueryExpression = new EntityQueryExpression()
                {
                    Criteria = entityFilter,
                    Properties = props,
                    AttributeQuery = new AttributeQueryExpression()
                        {
                            Properties = props
                        }
                };

            var response = GetMetadataChanges(entityQueryExpression, clientTimestamp, deletedFilters);
            var timeStamp = response.ServerVersionStamp;
            Debug.WriteLine("Next Timestamp: " + timeStamp);
            return response;
        }
Beispiel #2
0
        static internal string GetDeletedMetadataFiltersAsString(DeletedMetadataFilters enumValue)
        {
            List <string> valueArray  = new List <string>();
            string        returnValue = "None";

            if (enumValue.HasFlag(DeletedMetadataFilters.Entity) || enumValue.HasFlag(DeletedMetadataFilters.All))
            {
                valueArray.Add("Entity");
            }
            if (enumValue.HasFlag(DeletedMetadataFilters.Attribute) || enumValue.HasFlag(DeletedMetadataFilters.All))
            {
                valueArray.Add("Attribute");
            }
            if (enumValue.HasFlag(DeletedMetadataFilters.Relationship) || enumValue.HasFlag(DeletedMetadataFilters.All))
            {
                valueArray.Add("Relationship");
            }
            if (enumValue.HasFlag(DeletedMetadataFilters.Label) || enumValue.HasFlag(DeletedMetadataFilters.All))
            {
                valueArray.Add("Label");
            }
            if (enumValue.HasFlag(DeletedMetadataFilters.OptionSet) || enumValue.HasFlag(DeletedMetadataFilters.All))
            {
                valueArray.Add("OptionSet");
            }
            if (returnValue == "None")
            {
                valueArray.Add("Entity");
            }
            returnValue = String.Join(" ", valueArray.ToArray());

            return(returnValue);
        }
Beispiel #3
0
        //<snippetgetMetadataChanges>
        protected RetrieveMetadataChangesResponse getMetadataChanges(
            EntityQueryExpression entityQueryExpression,
            String clientVersionStamp,
            DeletedMetadataFilters deletedMetadataFilter)
        {
            RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
            {
                Query = entityQueryExpression,
                ClientVersionStamp     = clientVersionStamp,
                DeletedMetadataFilters = deletedMetadataFilter
            };

            return((RetrieveMetadataChangesResponse)_service.Execute(retrieveMetadataChangesRequest));
        }
        private static RetrieveMetadataChangesResponse GetMetadataChanges(IOrganizationService service, EntityQueryExpression entityQueryExpression, String clientVersionStamp, DeletedMetadataFilters deletedMetadataFilter)
        {
            RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
            {
                Query = entityQueryExpression,
                ClientVersionStamp     = clientVersionStamp,
                DeletedMetadataFilters = deletedMetadataFilter
            };

            return((RetrieveMetadataChangesResponse)service.Execute(retrieveMetadataChangesRequest));
        }
        /// <summary>
        ///  Gets details of changes in metadata that have occurred for a particular entity, since the specified time stamp. Allows a subset of properties to be specified, and filters for information regarding deleted metadata that will be returned.
        /// </summary>
        /// <param name="entityLogicalName"></param>
        /// <param name="clientTimestamp"></param>
        /// <param name="properties"></param>
        /// <param name="deletedFilters"></param>
        /// <returns></returns>
        public RetrieveMetadataChangesResponse GetChanges(string entityLogicalName, string clientTimestamp, IEnumerable <string> properties, DeletedMetadataFilters deletedFilters)
        {
            // retrieve the current timestamp value;
            var entityFilter = new MetadataFilterExpression(LogicalOperator.And);

            entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityLogicalName));
            var props = new MetadataPropertiesExpression();

            if (properties == null)
            {
                props.AllProperties = true;
            }
            else
            {
                props.PropertyNames.AddRange(properties);
            }

            //LabelQueryExpression labels = new LabelQueryExpression();
            var entityQueryExpression = new EntityQueryExpression()
            {
                Criteria       = entityFilter,
                Properties     = props,
                AttributeQuery = new AttributeQueryExpression()
                {
                    Properties = props
                }
            };

            var response  = GetMetadataChanges(entityQueryExpression, clientTimestamp, deletedFilters);
            var timeStamp = response.ServerVersionStamp;

            Debug.WriteLine("Next Timestamp: " + timeStamp);
            return(response);
        }
        /// <summary>
        /// Executes the query and returns the results.
        /// </summary>
        /// <param name="entityQueryExpression"></param>
        /// <param name="clientVersionStamp"></param>
        /// <param name="deletedMetadataFilter"></param>
        /// <returns></returns>
        private RetrieveMetadataChangesResponse GetMetadataChanges(EntityQueryExpression entityQueryExpression, String clientVersionStamp, DeletedMetadataFilters deletedMetadataFilter)
        {
            var retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
            {
                Query = entityQueryExpression,
                ClientVersionStamp     = clientVersionStamp,
                DeletedMetadataFilters = deletedMetadataFilter
            };

            try
            {
                IOrganizationService service = _CrmServiceProvider.GetOrganisationService();
                using (service as IDisposable)
                {
                    return((RetrieveMetadataChangesResponse)service.Execute(retrieveMetadataChangesRequest));
                }
            }
            catch (Exception e)
            {
                throw new Exception("Unable to obtain changes in CRM metadata using client timestamp: " + clientVersionStamp + " as CRM returned a fault. See inner exception for details.", e);
            }
        }
 /// <summary>
 /// Executes the query and returns the results.
 /// </summary>
 /// <param name="entityQueryExpression"></param>
 /// <param name="clientVersionStamp"></param>
 /// <param name="deletedMetadataFilter"></param>
 /// <returns></returns>
 private RetrieveMetadataChangesResponse GetMetadataChanges(EntityQueryExpression entityQueryExpression, String clientVersionStamp, DeletedMetadataFilters deletedMetadataFilter)
 {
     var retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
         {
             Query = entityQueryExpression,
             ClientVersionStamp = clientVersionStamp,
             DeletedMetadataFilters = deletedMetadataFilter
         };
     try
     {
         IOrganizationService service = _CrmServiceProvider.GetOrganisationService();
         using (service as IDisposable)
         {
             return (RetrieveMetadataChangesResponse)service.Execute(retrieveMetadataChangesRequest);
         }
     }
     catch (Exception e)
     {
         throw new Exception("Unable to obtain changes in CRM metadata using client timestamp: " + clientVersionStamp + " as CRM returned a fault. See inner exception for details.", e);
     }
 }
  //<snippetgetMetadataChanges>
  protected RetrieveMetadataChangesResponse getMetadataChanges(
   EntityQueryExpression entityQueryExpression,
   String clientVersionStamp,
   DeletedMetadataFilters deletedMetadataFilter)
  {
   RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
   {
    Query = entityQueryExpression,
    ClientVersionStamp = clientVersionStamp,
    DeletedMetadataFilters = deletedMetadataFilter
   };

   return (RetrieveMetadataChangesResponse)_service.Execute(retrieveMetadataChangesRequest);

  }