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
--
).```
Access checking and name validating.