Skip to main content

Notifications

Announcements

No record found.

Customer experience | Sales, Customer Insights,...
Unanswered

Using Query Expression creates OrganizationServiceFault

Posted on by 25

I need some help. This is the first QueryExpression I've used since i had to update my SDK's to 365.

I'm not even doing anything hard at this point, but if I use QueryExpression in the code (like I have done 100s of times before) I get an OrganizationServiceFault.

So here is the basic code (and it's truly basic at this point)

using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;

namespace TrainerAppHistory.TransferHistory
{

    /// 
    /// PreOperationipmahr_trainerapplicationUpdate Plugin.
    /// Fires when the following attributes are updated:
    /// ipmahr_transferhistory
    ///     
    public class PreOperationipmahr_trainerapplicationUpdate : PluginBase
    {

        public PreOperationipmahr_trainerapplicationUpdate(string unsecure, string secure)
            : base(typeof(PreOperationipmahr_trainerapplicationUpdate))
        {

            // TODO: Implement your custom configuration handling.
        }
        private readonly string preImageAlias = "PreImage";
        protected override void ExecuteCrmPlugin(LocalPluginContext localContext)
        {
            if (localContext == null)
            {
                throw new InvalidPluginExecutionException("localContext");
            }

            IPluginExecutionContext context = localContext.PluginExecutionContext;
            IOrganizationService server = localContext.OrganizationService;
            Entity Training = (Entity)context.InputParameters["Target"];
            Entity preImageEntity = (context.PreEntityImages != null && context.PreEntityImages.Contains(this.preImageAlias)) ? context.PreEntityImages[this.preImageAlias] : null;
            EntityReference Contact = (EntityReference)preImageEntity.Attributes["ipmahr_contactid"];
            
            bool transfer = Training.GetAttributeValue("ipmahr_transferhistory");
            Guid recordID = Training.GetAttributeValue("ipmahr_trainerapplicationid");
            Guid contactid = Contact.Id;
            

            if (transfer == true)
            {
                QueryExpression TopRecord = new QueryExpression("ipmahr_trainerapplication");
                TopRecord.ColumnSet = new ColumnSet("ipmahr_trainerapplicationid");
                 EntityCollection results1 = server.RetrieveMultiple(TopRecord);

                if (results1.Entities.Count > 1)
                {
                    Training.Attributes["new_comments"] = "found them all";
                   
                }

                //End Code

            }
        }
    }
}


When I remove the QueryExpression and just use a simple update to the Record like this
                    Training.Attributes["new_comments" = "This works";
Then I have no errors updating the record.

I'm at a loss on what to look at next. Nothing I've found seems to be helping.  I used the Register Plugin Tool for generating this plugin.

Plugin Tracing shows the following, which I think is the key to this. But I'm not having much luck finding answers.

<OriginalException>System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
  • Iamoop Profile Picture
    Iamoop 25 on at
    RE: Using Query Expression creates OrganizationServiceFault

    I went and moved the Update line outside of the QE and just used the QE to populate a variable. But the same issue happens. Just thought I'd update on what I've done so far.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,280 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,214 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans