When the Software Portal Managers try to approve the request, they receive the error:
A problem occurred while loading the Software Portal. Contact IT Helpdesk for assistance
The NS log shows an entry like:
MainController failure.An item with the same key has already been added.
Steps to Reproduce:
SMP Error:
"6/14/2021 4:55:41 PM","MainController failure.
The given key was not present in the dictionary.[System.Collections.Generic.KeyNotFoundException @ mscorlib]at System.ThrowHelper.ThrowKeyNotFoundException()at System.Collections.Generic.Dictionary`2.get_Item(TKey key)at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.MatchRequesters(AdUsersSearch helper, Guid managerGuid, Dictionary`2& allManagers, Dictionary`2& requesters, Dictionary`2& matchedReportees)at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.MatchRequesters(AdUsersSearch helper, Guid managerGuid, Dictionary`2& allManagers, Dictionary`2& requesters, Dictionary`2& matchedReportees)at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.FilterManagerSoftwareRequests(DataTable& allRequests, Guid managerGuid, Boolean onlyDirectRequests)at Symantec.SoftwarePortal.Api.Helpers.SoftwareRequestHelper.GetManagerSoftwareRequests(SoftwareRequestGetContext context, PortalUser user)at Symantec.SoftwarePortal.Api.Controllers.MainController.GetSoftwareRequests(SoftwareRequestGetContext softwareRequestGetContext)at lambda_method(Closure , Object , Object[] )at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c_DisplayClass10.<GetExecutor>b_9(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__0.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__2.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__0.MoveNext()
Exception logged from:at Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.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__0.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__0.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__1.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.SoftwarePortal.Api.Controllers.Extensions.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__0.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__0.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)
User [domain\administrator], Auth [domain\manager2], AppDomain [/LM/W3SVC/1/ROOT/Altiris/SoftwarePortal/Api-7-132681618271383073]
HTTP [POST]: http://NSserver.example.com/altiris/softwareportal/api/softwarerequestsip: [10.0.10.38]; languages: [en-US]; content-length: [118];timings: [[R] 00:00:00.1405991(W: 00:00:00)];response: [200 OK]; x-smp-nsversion: [8.6.1119.0];","Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.OnException","Symantec.SoftwarePortal.Api.dll","529","Errors"
ITMS 8.6, 8.6 RU1
Known issue. LDAP search logic needed some adjustments.
This issue was fixed in the ITMS 8.6 RU2 release.
A pointfix for those customers with ITMS 8.6 RU1 can be found in KB article CUMULATIVE POST ITMS 8.6 RU1 POINT FIXES