Mapping Parameters to Query Reference in BAQ Causes Error

Hello,

I have a BAQ that I am trying to create that references another BAQ. Both of these BAQs have the same parameters, so I am trying to pass the parameters from the outer BAQ to the query reference. If I have the query reference set to append it’s parameters to the parameter list, but prefix them with it’s name it works correctly, but has the additional parameters separate from my BAQ’s parameters. However, if I set the parameter mapping to map the query reference’s parameters to my BAQ’s parameters, I get a generic “something went wrong” error.

The server’s event viewer shows 2 error events when I do this.

First Event:

Ice.Common.EpicorServerException: Object reference not set to an instance of an object.
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Ice.Blaq.Execution.QueryParameterList.FillWithValuesAndCheck(QueryExecutionTableset executionParams, Boolean forAnalyze, List`1 tempParamList, QueryParameterBindingTable paramBindings, Guid refQueryId) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 436
   at Ice.Blaq.Execution.QueryParameterList.<>c__DisplayClass10_0.<CreateParameterListForQueries>g__createParameterList|0(DynamicQueryTableset queryDefinition, Guid refId, String subQueryName) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 109
   at Ice.Blaq.Execution.QueryCompose.QueryBundle.PrepareParameterList(Func`4 createParameterList, List`1 paramList) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryCompose\QueryBundle.cs:line 107
   at Ice.Blaq.Execution.QueryParameterList.CreateParameterListForQueries(QueryBundle queryBundle, QueryExecutionTableset executionParams, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 119
   at Ice.Blaq.Execution.QueryParameterList..ctor(BAQConstants baqConstants, String queryAlias, QueryBundle queryBundle, QueryExecutionTableset executionParams, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 49
   at Ice.Blaq.Execution.QueryCompose.QueryStructureBuilderCreator..ctor(BAQConstants baqConstants, String queryAlias, QueryBundle queryBundle, QueryExecutionTableset executionParams, IExtensionTableMapper extensionTableMapper, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryCompose\QueryStructureBuilderCreator.cs:line 44
   at Ice.Services.BO.DynamicQuerySvc.ExecuteInternal(DynamicQueryTableset queryDefinition, QueryExecutionTableset executionParams, Boolean updateExtSecurity) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuery.Impl.cs:line 631
   at Ice.Services.BO.DynamicQuerySvc.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuery.cs:line 125
   at Epicor.Customization.Bpm.BO.ExecuteImpl.ExecuteBase(ExecuteParameters parameters)
   at Epicor.Customization.Bpm.MethodCustomizationBase2`2.RunDirectives(TParam parameters) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Internal\Lib\Epicor.Customization.Bpm\MethodCustomizationBase2.cs:line 183
   at Epicor.Customization.Bpm.CustomizationBase2`2.Execute(TParam parameters) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Internal\Lib\Epicor.Customization.Bpm\CustomizationBase2.cs:line 106
   at Epicor.Customization.Bpm.BO.DynamicQuerySvcCustomization.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams)
   at Ice.Services.BO.DynamicQuerySvcFacade.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuerySvcFacade.cs:line 200
   --- End of inner exception stack trace ---
CorrelationId: e9acc5cb-f41d-48ef-a504-313f00ab8357

Second Event:

Ice.Common.EpicorServerException: Object reference not set to an instance of an object.
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Ice.Blaq.Execution.QueryParameterList.FillWithValuesAndCheck(QueryExecutionTableset executionParams, Boolean forAnalyze, List`1 tempParamList, QueryParameterBindingTable paramBindings, Guid refQueryId) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 436
   at Ice.Blaq.Execution.QueryParameterList.<>c__DisplayClass10_0.<CreateParameterListForQueries>g__createParameterList|0(DynamicQueryTableset queryDefinition, Guid refId, String subQueryName) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 109
   at Ice.Blaq.Execution.QueryCompose.QueryBundle.PrepareParameterList(Func`4 createParameterList, List`1 paramList) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryCompose\QueryBundle.cs:line 107
   at Ice.Blaq.Execution.QueryParameterList.CreateParameterListForQueries(QueryBundle queryBundle, QueryExecutionTableset executionParams, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 119
   at Ice.Blaq.Execution.QueryParameterList..ctor(BAQConstants baqConstants, String queryAlias, QueryBundle queryBundle, QueryExecutionTableset executionParams, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryParameterList.cs:line 49
   at Ice.Blaq.Execution.QueryCompose.QueryStructureBuilderCreator..ctor(BAQConstants baqConstants, String queryAlias, QueryBundle queryBundle, QueryExecutionTableset executionParams, IExtensionTableMapper extensionTableMapper, Boolean forAnalyze) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Internal\Lib\Ice.Lib.Blaq\Execution\QueryCompose\QueryStructureBuilderCreator.cs:line 44
   at Ice.Services.BO.DynamicQuerySvc.ExecuteInternal(DynamicQueryTableset queryDefinition, QueryExecutionTableset executionParams, Boolean updateExtSecurity) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuery.Impl.cs:line 631
   at Ice.Services.BO.DynamicQuerySvc.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuery.cs:line 125
   at Epicor.Customization.Bpm.BO.ExecuteImpl.ExecuteBase(ExecuteParameters parameters)
   at Epicor.Customization.Bpm.MethodCustomizationBase2`2.RunDirectives(TParam parameters) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Internal\Lib\Epicor.Customization.Bpm\MethodCustomizationBase2.cs:line 183
   at Epicor.Customization.Bpm.CustomizationBase2`2.Execute(TParam parameters) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Internal\Lib\Epicor.Customization.Bpm\CustomizationBase2.cs:line 106
   at Epicor.Customization.Bpm.BO.DynamicQuerySvcCustomization.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams)
   at Ice.Services.BO.DynamicQuerySvcFacade.Execute(DynamicQueryTableset queryDS, QueryExecutionTableset executionParams) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Services\BO\DynamicQuery\DynamicQuerySvcFacade.cs:line 200   at Ice.Hosting.RestApi.OperationInvokeHelper.CallInvoker(Type svcType, MethodInfo mi, Object[] inputs, Boolean isRoot, IceDataContext dataContext) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Framework\Epicor.Ice\Hosting\RestApi\OperationInvokeHelper.cs:line 403
   at Ice.Hosting.RestApi.OperationInvokeHelper.MakeServiceCall(IceDataContext dataContext, Type svcType, MethodInfo mi, Object[] parameters) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Framework\Epicor.Ice\Hosting\RestApi\OperationInvokeHelper.cs:line 356
   at Ice.Hosting.RestApi.OperationInvokeHelper.CallCustomMethod(String serviceName, MethodInfo mi, Object[] paramList) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Framework\Epicor.Ice\Hosting\RestApi\OperationInvokeHelper.cs:line 306
   at Epicor.RESTApi.DataSources.CustomMethodCaller.CallMethodWithDynamicData(String serviceId, String methodName, IInputParamResolver inputResolver, Action`1 headersPublisher, Action`1 verifyMethod) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Framework\Epicor.RESTApi.Common\DataSources\Main\CustomMethodCaller.cs:line 74
   at Ice.Hosting.AspNetCore.Controllers.ServiceMethodCallControllerBase.HandleServiceMethodCall(String serviceId, String methodName, IInputParamResolver inputResolver, Action`1 verifyMethod) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Controllers\ServiceMethodCallControllerBase.cs:line 62
   at Epicor.OData.V3.Controllers.CustomActionController.HandleCustomMethodCall(IInputParamResolver inputResolver, Action`1 verifyMethod) in C:\_releases\ICE\ICE4.2.400.0FW\Source\Server\Hosting\AspNetCore\RestApi\Epicor.OData.AspNetCore.V3\Controllers\CustomActionController.cs:line 53
   at lambda_method857(Closure , Object , Object[] )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Ice.Hosting.AspNetCore.Middleware.DynamicAssemblyPartMiddleware.Invoke(HttpContext context, CurrentCallInformationService currentCallInformation, ControllerLoader controllerLoader) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\DynamicAssemblyPartMiddleware.cs:line 33
   at Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\ETags\ETagMiddleware.cs:line 110
   at Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\ETags\ETagMiddleware.cs:line 110
   at Ice.Hosting.AspNetCore.Middleware.DecompressRequestMiddleware.Invoke(HttpContext context) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\DecompressRequestMiddleware.cs:line 42
   at Ice.Hosting.AspNetCore.Middleware.AuthenticationMiddleware.InvokeAsync(HttpContext httpContext, CurrentCallInformationService callInformation) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\AuthenticationMiddleware.cs:line 83
   at Ice.Hosting.AspNetCore.Middleware.CallHeaderMiddleware.InvokeAsync(HttpContext httpContext) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\CallHeaderMiddleware.cs:line 52
   at Ice.Hosting.AspNetCore.Middleware.OperationDisposerMiddleware.InvokeAsync(HttpContext httpContext) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\OperationDisposerMiddleware.cs:line 34
   at Epicor.RESTApi.Middleware.ApiKeyEnforcerMiddleware.Invoke(HttpContext context) in C:\_releases\ICE\ICE4.2.400.10\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\ApiKeyEnforcerMiddleware.cs:line 79
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   --- End of inner exception stack trace ---
CorrelationId: e9acc5cb-f41d-48ef-a504-313f00ab8357

@rhuebnerNNI Did you find the issue and were you able to resolve it?

I’m having the same issue at the moment.

Unfortunately not, I ended up avoiding using a BAQ as a query reference due to this issue.

I have not had a chance to test this, but I vaguely remember reading somewhere that this issue may have been fixed or improved upon in Kinetic 2024.

When I was creating this BAQ I was using Kinetic 2023.

Thanks for your feedback.

I still have the issue in Kinetic 2024.2. So logged a case for it. Will keep you updated on their responses.

1 Like