web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Plugin cant find entity
Power Apps
Unanswered

Plugin cant find entity

(0) ShareShare
ReportReport
Posted on by 27

Hello all,

 

I have been raddling my head on this one. I cannot figure out why my plugin is not able to see the entity rce_rateexception. The entity is there and available. I have admin access. The logical name is spelled correctly. The kicker is that I first made this in Dataverse accelerator to give it a try. When I first made it in the accelerator it worked for about a week, then it could not see the rce_rateexception entity and I was getting an error saying it does not exist. Thinking it was a fluke because the dataverse accelerator is still being developed I switched and make a traditional plugin with C#. Frustratingly I am getting the same error that the entity does not exist.

 

Below I got my script so you can check out what I am attempting. Does anyone know what is limiting my plugins from seeing other entity's then the one its registered on?

 

 

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.Linq;

namespace RateAcctUpdateTest
{
 /// <summary>
 /// Plugin development guide: https://docs.microsoft.com/powerapps/developer/common-data-service/plug-ins
 /// Best practices and guidance: https://docs.microsoft.com/powerapps/developer/common-data-service/best-practices/business-logic/
 /// </summary>
 public class SumAggBal : PluginBase
 {
 public SumAggBal(string unsecureConfiguration, string secureConfiguration)
 : base(typeof(SumAggBal))
 {
 // TODO: Implement your custom configuration handling
 // https://docs.microsoft.com/powerapps/developer/common-data-service/register-plug-in#set-configuration-data
 }

 // Entry point for custom business logic execution
 protected override void ExecuteDataversePlugin(ILocalPluginContext localPluginContext)
 {
 if (localPluginContext == null)
 {
 throw new ArgumentNullException(nameof(localPluginContext));
 }

 var context = localPluginContext.PluginExecutionContext;

 // TODO: Implement your custom business logic

 // Check for the entity on which the plugin would be registered
 if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
 {
 var entity = (Entity)context.InputParameters["Target"];

 // Check for entity name on which this plugin would be registered
 if (entity.LogicalName == "rce_rateexceptionaccount")
 {
 SumAndUpdate(localPluginContext.PluginUserService, entity.Id);
 }
 }
 }

 public void SumAndUpdate(IOrganizationService service, Guid recordID)
 {
 using (var context = new OrganizationServiceContext(service))
 {
 // Query the entity records that have the same lookup value
 var records = context.CreateQuery("rce_rateexceptionaccount")
 .Where(e => e.GetAttributeValue<EntityReference>("rce_rateexception").Id == recordID);

 // Sum the values from the specific column (Sum method is not supported in Dataverse LINQ queries)
 // var sum = records.Sum(e => e.GetAttributeValue<Money>("rce_collectedbalance").Value);

 // Manually sum the values from the specific column
 decimal sum = 0;
 foreach (var record in records)
 {
 sum += record.GetAttributeValue<Money>("rce_collectedbalance").Value;
 }

 // Retrieve the parent record
 var parentRecord = service.Retrieve("rce_rateexception", recordID, new ColumnSet("rce_aggregatedbalance"));

 // Update the field on the parent form
 parentRecord["rce_aggregatedbalance"] = new Money(sum);
 service.Update(parentRecord);
 }
 }
 }
}

 

 

Error:

 

System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: OrganizationServiceFault: Entity 'rce_rateexception' With Id = 5aae0e77-da19-ef11-9f89-0022482f0293 Does Not Exist (Fault Detail is equal to Exception details:
ErrorCode: 0x80040265
Message: OrganizationServiceFault: Entity 'rce_rateexception' With Id = 5aae0e77-da19-ef11-9f89-0022482f0293 Does Not Exist
TimeStamp: 2024-05-28T16:13:34.6817957Z
OriginalException: PluginExecution
ExceptionSource: PluginExecution
--
).

 

 

 

I have the same question (0)
  • MichaelFP Profile Picture
    1,847 Super User 2025 Season 2 on at

    Hello!

     

    How your plugin step is set? Looking at your code, you are trying to retrieve data from the target record.

    In that case if you are on the create process. You must configure pos-operation instead of pre-validation or operation.

     

    Because these two pre operations has not been committed the data on database, so you will not find the information using Retrieve.

     

    If this information help, please give me a kudo. If solve your problem please mark as solution. This is help the community.

     

    Kind Regards.

  • Guido Preite Profile Picture
    1,488 Super User 2024 Season 1 on at

    the error is not that is not finding an entity, the error is that is not finding an entity (in your case rce_rateexception) with that GUID.

    The reason is that you are passing a GUID (in your case the Primary Key) from the entity rce_rateexceptionaccount (where you are running the plugin) and trying to retriece a record of rce_rateexception

    service.Retrieve("rce_rateexception", recordID, ...

    keep in mind that also the first query

    var records = context.CreateQuery("rce_rateexceptionaccount") .Where(e => e.GetAttributeValue<EntityReference>("rce_rateexception").Id == recordID);

    it probably returns always 0 rows (I assume the lookup called rce_rateexception points to the rce_rateexception entity)

     

    I suggest you to use Rollup columns if you need aggregates, and if you need real-time calculations, that plugin is not enough also if is correct.

     

  • sstewarta Profile Picture
    27 on at

    @GuidoPreite and @Michaelfp  thank you both for replying. I had noticed that I was using the ID from the record that triggered the message. Also I already had it on PostOperation and the message is Update. The goal is to get the aggregate of all the child records (which is what is triggering the message) and write the value to the parent record (rce_rateexception entity). I had switched some things around, but I still get issues. Also, I don't want to use rollup columns.

     

    I had tried putting 

    "var rateexceptionID = entity.GetAttributeValue<EntityReference>("rce_rateexception").Id" to get the guid from the field before passing it to the function. But I get the error: "System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: Object reference not set to an instance of an object. (Fault Detail is equal to Exception details:
    ErrorCode: 0x80040224".
     
    Additionally I am trying to get retrieve the guid from the child record, but I still get the old error. I'm not the best at plugins/C# so any ideas you all have to help my script function would be appreciated.

     

     

    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Client;
    using Microsoft.Xrm.Sdk.PluginTelemetry;
    using Microsoft.Xrm.Sdk.Query;
    using System;
    using System.Linq;
    
    namespace RateAcctUpdateTest
    {
     /// <summary>
     /// Plugin development guide: https://docs.microsoft.com/powerapps/developer/common-data-service/plug-ins
     /// Best practices and guidance: https://docs.microsoft.com/powerapps/developer/common-data-service/best-practices/business-logic/
     /// </summary>
     public class SumAggBal : PluginBase
     {
    
     public SumAggBal(string unsecureConfiguration, string secureConfiguration)
     : base(typeof(SumAggBal))
     {
     // TODO: Implement your custom configuration handling
     // https://docs.microsoft.com/powerapps/developer/common-data-service/register-plug-in#set-configuration-data
     }
    
     // Entry point for custom business logic execution
     protected override void ExecuteDataversePlugin(ILocalPluginContext localPluginContext)
     {
     if (localPluginContext == null)
     {
     throw new ArgumentNullException(nameof(localPluginContext));
     }
    
     var context = localPluginContext.PluginExecutionContext;
    
     // TODO: Implement your custom business logic
    
     // Check for the entity on which the plugin would be registered
     if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
     {
     var entity = (Entity)context.InputParameters["Target"];
    
     // Check for entity name on which this plugin would be registered 
     if (entity.LogicalName == "rce_rateexceptionaccount")
     {
     // Get the lookup value from the entity
     //var rateexceptionID = entity.GetAttributeValue<EntityReference>("rce_rateexception").Id;
     SumAndUpdate(localPluginContext.PluginUserService, entity.Id);
     }
     }
     }
    
     public void SumAndUpdate(IOrganizationService service, Guid recordID)
     {
     using (var context = new OrganizationServiceContext(service))
     {
    
     var childRecord = service.Retrieve("rce_rateexceptionaccount", recordID, new ColumnSet("rce_rateexception"));
     // Query the entity records that have the same lookup value
     var records = context.CreateQuery("rce_rateexceptionaccount")
     .Where(e => e.GetAttributeValue<EntityReference>("rce_rateexception").Id == childRecord.Id);
    
     // Sum the values from the specific column (Sum method is not supported in Dataverse LINQ queries)
     // var sum = records.Sum(e => e.GetAttributeValue<Money>("rce_collectedbalance").Value);
    
     // Manually sum the values from the specific column
     decimal sum = 0;
     foreach (var record in records)
     {
     sum += record.GetAttributeValue<Money>("rce_collectedbalance").Value;
     }
    
     // Retrieve the parent record
     var parentRecord = service.Retrieve("rce_rateexception", childRecord.Id, new ColumnSet("rce_aggregatedbalance"));
    
     // Update the field on the parent form
     parentRecord["rce_aggregatedbalance"] = new Money(sum);
     service.Update(parentRecord);
     }
     }
     }
    }

     

  • MichaelFP Profile Picture
    1,847 Super User 2025 Season 2 on at

    @sstewarta 

     

    Regarding to the error that you related

     

    "var rateexceptionID = entity.GetAttributeValue<EntityReference>("rce_rateexception").Id" to get the guid from the field before passing it to the function. But I get the error: "System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: Object reference not set to an instance of an object. (Fault Detail is equal to Exception details:
    ErrorCode: 0x80040224".

     

    this is happen because your trying to get an attribute that has not been modified and is not on the Target entity record.  Because of that you the value is null and give this message, it is good to always validate if the object is null or not to continue the progress.

    try to use Query Expression instead of createQuery() , here below the code 

     

    var query = new QueryExpression("rce_rateexceptionaccount");
    
    query.ColumnSet.AddColumns( "rce_rateexception" ); query.Criteria.AddCondition("rce_rateexception", ConditionOperator.Equal, childRecord.Id);
    
     var response = service.RetrieveMultiple(query);
     var sum = (from rce in response.Enttities 
     select rce.GetAttributeValue<Money>("rce_collectedbalance").value)).Sum();



  • Fubar Profile Picture
    8,338 Super User 2025 Season 2 on at
  • Verified answer
    sstewarta Profile Picture
    27 on at

    Thank you all for responding. After some testing the below is what I found to be the only way to get this to work.

     

    public void SumAndUpdate(IOrganizationService service, Guid recordID)
     {
     using (var context = new OrganizationServiceContext(service))
     {
    
     ColumnSet column = new ColumnSet("rce_rateexception");
     Entity childParent = service.Retrieve("rce_rateexceptionaccount", recordID, column);
    
     EntityReference parentCustomer = childParent.GetAttributeValue<EntityReference>("rce_rateexception");
    
     // get the Guid of the parent record
     Guid parentCustomerId = parentCustomer.Id;
    
     QueryExpression query = new QueryExpression
     {
     EntityName = "rce_rateexceptionaccount",
     ColumnSet = new ColumnSet("rce_collectedbalance"),
     Criteria = new FilterExpression
     {
     Conditions =
     {
     new ConditionExpression
     {
     AttributeName = "rce_rateexception",
     Operator = ConditionOperator.Equal,
     Values = { parentCustomerId }
     }
     }
     }
     };
    
     EntityCollection result = service.RetrieveMultiple(query);
    
     // sum the balance of each child record. (Had issues using any sum() function.)
     decimal totalBalance = 0;
     foreach (Entity child in result.Entities)
     {
     Money balance = child.GetAttributeValue<Money>("rce_collectedbalance");
     if (balance != null)
     {
     totalBalance += balance.Value;
     }
     }
    
     Entity parent = new Entity("rce_rateexception", parentCustomerId);
     parent["rce_aggregatedbalance"] = new Money(totalBalance);
    
     service.Update(parent);
    
    
     }
     }

     

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

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Apps

#1
WarrenBelz Profile Picture

WarrenBelz 717 Most Valuable Professional

#2
Michael E. Gernaey Profile Picture

Michael E. Gernaey 329 Super User 2025 Season 2

#3
Power Platform 1919 Profile Picture

Power Platform 1919 268

Last 30 days Overall leaderboard