Quantcast
Channel: Microsoft Dynamics CRM Forum - Recent Threads
Viewing all articles
Browse latest Browse all 82002

Error during calling custom Action from API

$
0
0

I get below error when i call custom action from API

{
"error": {
"code": "0x80040265",
"message": "Object reference not set to an instance of an object.",
"innererror": {
"message": "Object reference not set to an instance of an object.",
"type": "System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]",
"stacktrace": " at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request, InvocationContext invocationContext, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode, ExecutionContext executionContext, Dictionary`2 optionalParameters)\r\n at Microsoft.Crm.Extensibility.OData.CrmODataExecutionContext.Execute(OrganizationRequest request, ExecutionContext executionContext)\r\n at Microsoft.Crm.Extensibility.OData.CrmODataServiceDataProvider.ExecuteOperation(CrmODataExecutionContext context, EdmOperation edmOperation, Dictionary`2 parameters, Dictionary`2 boundParameters)\r\n at Microsoft.Crm.Extensibility.OData.ActionController.ProcessOperationRequest(String operationName, Dictionary`2 operationParameters, EntityReference entityReference, String boundEntityName, String boundEntityType)\r\n at Microsoft.Crm.Extensibility.OData.ActionController.<>c__DisplayClass9_0.<PostUnboundAction>b__0()\r\n at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func`1 func, IEnumerable`1 additionalCustomProperties)\r\n at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func`1 func)\r\n at Microsoft.Crm.Extensibility.OData.ActionController.PostUnboundAction(String operationName, ODataUntypedActionParameters parameters)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}
}
}

Below is my code

public class CustomAction : CodeActivity
    {

        [Input("Entity Metadata Id")]
        public InArgument<string> MetadataId { get; set; }

        [Output("Entity Details")]
        public OutArgument<string> EntityInfo { get; set; }


        protected override void Execute(CodeActivityContext executionContext)
        {

             //Retrieve the id
            string accountId = this.MetadataId.Get(executionContext);

            //Create the tracing service
            ITracingService tracingService = executionContext.GetExtension<ITracingService>();

            //Create the context
            IWorkflowContext workflowContext = executionContext.GetExtension<IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
            IOrganizationService orgService = serviceFactory.CreateOrganizationService(workflowContext.UserId);
            var  output= new EntityInfo();

             //Get the Entity Metadata from the entityName
            var retrieveEntityRequest = new RetrieveEntityRequest
            {
                EntityFilters = EntityFilters.All,
                MetadataId = Guid.Parse(MetadataId.Get(context))
            };

            var entityResponse = (RetrieveEntityResponse)orgService.Execute(retrieveEntityRequest);
            var entityMetadata = entityResponse.EntityMetadata;
            var entityName = entityMetadata.LogicalName;
            output.EntityName = entityName;
            output.PrimaryIdAttributeName = entityMetadata.PrimaryIdAttribute;

             //Get the column name to be used to query the count of the entity.
            var columnName = string.IsNullOrEmpty(entityMetadata.PrimaryIdAttribute)
                ? entityMetadata.Attributes.FirstOrDefault()?.LogicalName
                : entityMetadata.PrimaryIdAttribute;

             //get the column Count
            output.ColumnCount = entityMetadata.Attributes.ToList().Count;


             //fetchXml to retrieve count of entity
            var entityCountXml =
                $"<fetch distinct='false' mapping='logical' aggregate='true'>" +
                $"<entity name='{entityName}'>" +
                $"<attribute name='{columnName}' alias='rowCount' aggregate='count'/>" +
                $"</entity>" +
                $"</fetch>";

             // Retrieving cases using fetchXml  
            var rowCount = 0;
            var result = orgService.RetrieveMultiple(new FetchExpression(entityCountXml));
            foreach (var c in result.Entities)
            {
                rowCount = (Int32)((AliasedValue)c["rowCount"]).Value;
            }

            output.RowCount = rowCount;
            var customColumns = entityMetadata.Attributes.Count(s => s.IsCustomAttribute != null && (bool) s.IsCustomAttribute);
            var systemColumns = entityMetadata.Attributes.Count(s => s.IsCustomAttribute != null && !(bool)s.IsCustomAttribute);

        }
    }



Viewing all articles
Browse latest Browse all 82002

Latest Images

Trending Articles



Latest Images