Since the 2026.100.7 upgrade, some (all?) of our function libraries are intermittently returning as Disabled, whether called publicly via HTTP or internally from other libraries or directives. When the issue occurs publicly, I receive only a 404. However, if I try the request three or four more times, it eventually succeeds and the function is executed as normal.
For our most critical application, I implemented a stop gap that simply retries if a 404 is received. This stopgap doesn’t however solve all of the inter-function library calls, or calls from directives that are failing.
Here’s a stack trace from an inter-library call that’s failing. The library “CustomOrderSet” is not disabled.
Ice.Common.EpicorServerException: BPM runtime caught an unexpected exception of 'InvalidOperationException' type.
See more info in the Inner Exception section of Exception Details.
---> System.InvalidOperationException: The library 'CustomOrderSet' is disabled.
at Epicor.Functions.Runtime.EfxRuntimeExtensions.GetFunctionInfo(IFunctionsCatalog functionsCatalog, FunctionRefId refId, String forCompany) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Customization\Epicor.Functions.Runtime\EfxRuntimeExtensions.cs:line 27
at Epicor.Customization.Bpm.CustomizationBase2`2.InvokeFunction(String libraryId, String functionId, ITuple input) in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\CustomizationBase2.Plugins.cs:line 61
at Epicor.Customization.Bpm.BO.MasterUpdatePostProcessingDirective_Custom_CheckManufacturedInventory_757C06110ED345FD82C0316AC4CA1BC2.A002_InvokeEpicorFunctionAction2()
at Epicor.Customization.Bpm.BO.MasterUpdatePostProcessingDirective_Custom_CheckManufacturedInventory_757C06110ED345FD82C0316AC4CA1BC2.ExecuteCore(Int32 step)
at Epicor.Customization.Bpm.DirectiveBase`2.Execute() in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\DirectiveBase.Generic.cs:line 347
at Epicor.Customization.Bpm.DirectiveBase`2.Execute(TParam parameters) in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\DirectiveBase.Generic.cs:line 197
--- End of inner exception stack trace ---
at Epicor.Customization.Bpm.DirectiveBase`2.Execute(TParam parameters) in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\DirectiveBase.Generic.cs:line 213
at Epicor.Customization.Bpm.MethodCustomizationBase2`2.<>c__DisplayClass12_0.<RunDirectives>b__5(MethodDirectiveBase`2 dir) in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\MethodCustomizationBase2.cs:line 198
at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
at Epicor.Customization.Bpm.MethodCustomizationBase2`2.RunDirectives(TParam parameters)
at Epicor.Customization.Bpm.CustomizationBase2`2.Execute(TParam parameters) in C:\_releases\ICE\ICE5.2.100.7\Source\Server\Customization\Epicor.Customization.Bpm\CustomizationBase2.cs:line 99
at Epicor.Customization.Bpm.BO.SalesOrderSvcCustomization.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel, String& cAgingMessage, String& cShipByDateMessage, String& cNeedByDateMessage, String& cMsgTypeSaleable, SalesOrderTableset& ds)
at Erp.Services.BO.SalesOrderSvcFacade.MasterUpdate(Boolean lCheckForOrderChangedMsg, Boolean lcheckForResponse, String cTableName, Int32 iCustNum, Int32 iOrderNum, Boolean lweLicensed, Boolean& lContinue, String& cResponseMsg, String& cCreditShipAction, String& cDisplayMsg, String& cCompliantMsg, String& cResponseMsgOrdRel, String& cAgingMessage, String& cShipByDateMessage, String& cNeedByDateMessage, String& cMsgTypeSaleable, SalesOrderTableset& ds) in C:\_releases\ERP\ERP12.2.100.7\Source\Server\Services\BO\SalesOrder\SalesOrderSvcFacade.cs:line 7190
at InvokeStub_SalesOrderSvcFacade.MasterUpdate(Object, Object, IntPtr*)
at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
--- End of stack trace from previous location ---
at Epicor.RESTApi.RestApi.OperationInvokeHelper.CallInvoker(Type svcType, MethodInfo mi, Object[] inputs, Boolean isRoot) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Framework\Epicor.RESTApi.Common\RestApi\OperationInvokeHelper.cs:line 296
at Epicor.RESTApi.DataSources.CustomMethodCaller.CallMethodWithDynamicData(String serviceId, String methodName, IInputParamResolver inputResolver, Action`1 headersPublisher, Action`1 verifyMethod) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Framework\Epicor.RESTApi.Common\DataSources\Main\CustomMethodCaller.cs:line 71
at lambda_method279619(Closure, Object, Object[])
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
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.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
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__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at CoreWCF.Channels.ServiceModelHttpMiddleware.InvokeAsync(HttpContext context)
at CoreWCF.Channels.MetadataMiddleware.InvokeAsync(HttpContext context)
at Ice.Hosting.AspNetCore.Middleware.DynamicAssemblyPartMiddleware.Invoke(HttpContext context, CurrentCallInformationService currentCallInformation, ControllerLoader controllerLoader) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\DynamicAssemblyPartMiddleware.cs:line 32
at Ice.Hosting.AspNetCore.Middleware.IPEnforcerMiddleware.Invoke(HttpContext httpContext) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\IPEnforcerMiddleware.cs:line 169
at Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\ETags\ETagMiddleware.cs:line 89
at Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\ETags\ETagMiddleware.cs:line 107
at Ice.Hosting.AspNetCore.Middleware.DecompressRequestMiddleware.Invoke(HttpContext context) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\DecompressRequestMiddleware.cs:line 41
at Ice.Hosting.AspNetCore.Middleware.AuthenticationMiddleware.InvokeAsync(HttpContext httpContext, CurrentCallInformationService callInformation) in C:\_releases\ICE\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\AuthenticationMiddleware.cs:line 76
at Ice.Hosting.AspNetCore.Middleware.CallHeaderMiddleware.InvokeAsync(HttpContext httpContext) in C:\_releases\ICE\ICE5.2.100.0\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\ICE5.2.100.0\Source\Server\Hosting\AspNetCore\Ice.Hosting.AspNetCore\Middleware\OperationDisposerMiddleware.cs:line 22
Anyone experiencing something similar?

