The customer reported the following:
We have been encountering issues with some filters failing to load with the following message:
"An error has occurred while loading the filter. Check server logs for details."
The error seems to stem from filters containing columns from the [Operating System] data class. Even newly created filters including those columns seem to fail. However, the filter can be viewed and modified from the Filters management page.
Note:
You should see the same issue when saving a filter with the "[Operating System]. [Last Boot Up]" criteria.
Steps:
1. Create a new Filter under Manage>Computers
2. Add a Filter Criteria. Click on "Add Filter Criteria" and then the "Pencil" icon.
3. Search for the "Operating System" and select any of the available columns. In this example, I chose "OS Architecture". Click OK.
4. Then select the newly added Filter Criteria and add a value to it. For this example, OS Architecture and 64.
5. Then, save the Filter.
6. As soon as it saves, you get the error:
The NS logs show an error like this one:
MainController failure.
Column '[Operating System].[OS Architecture]' is not found
[System.ApplicationException @ Symantec.ActivityCenter.Api]
at Symantec.ActivityCenter.Api.Models.Filter.SavedSearchToFilter.FindColumn(String dataTableName, String columnName, SavedSearch savedSearch)
at Symantec.ActivityCenter.Api.Models.Filter.SavedSearchToFilter.GetFilterCriteria()
at Symantec.ActivityCenter.Api.Models.Filter.SavedSearchToFilter.Convert()
at Symantec.ActivityCenter.Api.Models.Filter.FilterProvider.GetFilter(Guid id)
at Symantec.ActivityCenter.Api.Controllers.MainController.GetFilter(Guid id)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c_DisplayClass6_2.<GetExecutor>b_2(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
Exception logged from:
at Symantec.ActivityCenter.Api.Controllers.ApiControllerExceptionHandlerAttribute.OnException(System.Web.Http.Filters.HttpActionExecutedContext)
at System.Web.Http.Filters.ExceptionFilterAttribute.OnExceptionAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute+<ExecuteExceptionFilterAsyncCore>d__3.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Filters.ExceptionFilterAttribute.ExecuteExceptionFilterAsyncCore(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute.System.Web.Http.Filters.IExceptionFilter.ExecuteExceptionFilterAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__6.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(System.Threading.CancellationToken)
at System.Web.Http.ApiController.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext, System.Threading.CancellationToken)
at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at Symantec.ActivityCenter.Api.Controllers.ApiControllerAntiForgeryHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.HttpServer+<SendAsync>d__24.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.WebHost.HttpControllerHandler+<ProcessRequestAsyncCore>d__12.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(System.Web.HttpContextBase)
at System.Web.TaskAsyncHelper.BeginTask(System.Func<System.Threading.Tasks.Task>, AsyncCallback, Object)
at System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(System.Web.HttpApplication+IExecutionStep)
at System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication+IExecutionStep, Boolean&)
at System.Web.HttpApplication+PipelineStepManager.ResumeSteps(Exception)
at System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, AsyncCallback)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
HTTP [GET]: https://smp-main.example.com/altiris/activitycenter/api/filters/01e4447c-a4e4-473a-a284-dc89e4ef4c0e
ip: [192.168.1.20]; languages: [en-US,en;q=0.9];
timings: [[R] 00:00:00.5620003(W: 00:00:00.0029990)];
response: [200 OK]; x-smp-nsversion: [8.6.1119.0];
-----------------------------------------------------------------------------------------------------
Date: 7/2/2021 12:20:43 PM, Tick Count: 866598828 (10.00:43:18.8280000), Size: 7.03 KB
Process: w3wp (3508), Thread ID: 219, Module: Symantec.ActivityCenter.Api.dll
Priority: 1, Source: Symantec.ActivityCenter.Api.Controllers.ApiControllerExceptionHandlerAttribute.OnException
ITMS 8.5 RU4, 8.6 GA
Known issue. Present with 8.5 RU4 and 8.6 GA releases.
The issue is related to incorrect dataclass name that we get when using core function:
string name = ((ResourceDataSource)DataSource).SourceResourceQuery.GetDataFieldByName(exp.Name).FullDisplayInvariantName;
exp.Name = name;
The FullDisplayInvariantName returns localized name.
This issue has been reported to the Broadcom Development team. A fix for this issue has been added to the ITMS 8.6 RU1 release.
For those still in ITMS 8.6 GA, this is the current workaround:
Attached "Altiris.Reporting.DataSource.zip" with the fix for this issue
Steps:
1. Download the Zip file and extract its content. Grab "Altiris.Reporting.DataSource.dll"
2. Open this location "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Altiris.Reporting.DataSource\v4.0_8.6.1119.0__d516cb311cfb6e4f" on required SMP Server version 8.6.1119 (8.6 GA release)
3. Rename original "Altiris.Reporting.DataSource.dll" and paste there "Altiris.Reporting.DataSource.dll" with fix
4. Restart IIS, restart Altiris Service, reopen the browser, and open SMP Console -> try to create this filter again.