Software Management 8.1 RU6 - User unable to open enhanced software portal.

book

Article ID: 171728

calendar_today

Updated On:

Products

Software Management Solution

Issue/Introduction

 User unable to open enhanced software portal.

Could not retrieve portal user object for user resource 'User Name' (1230b4f2-6be8-4c8e-ae72-cded2a882590)

Unable to determine directory entry from user resource 'User Name' (1230b4f2-6be8-4c8e-ae72-cded2a882590)
   [Altiris.NS.Exceptions.AeXException @ Altiris.SoftwarePortal]
   at Altiris.SoftwarePortal.Resources.PortalUserResource.EnsureMustHaveProperties(ResourceItem res)
   at Altiris.SoftwarePortal.Resources.PortalUserResource.FromUserResource(ResourceItem user)
   at Altiris.SoftwarePortal.Resources.PortalUserResource..ctor(UserResource userResource, String userName, String domainName)
   at Altiris.SoftwarePortal.Resources.PortalUserResource.GetUser(Guid userResourceGuid)

Exception logged from:
   at Altiris.SoftwarePortal.Resources.PortalUserResource.GetUser(System.Guid)
   at Symantec.SoftwarePortal.Api.Models.PortalUser.FromPortalUserResource(Altiris.SoftwarePortal.Resources.PortalUserResource, String)
   at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper+<>c__DisplayClass1_0.<GetCurrentPortalUser>b__0()
   at Altiris.NS.Security.SecurityContext+<>c__DisplayClass7.<ExecuteAsAppIdentity>b__5(Altiris.NS.Security.SecurityContext)
   at Altiris.NS.Security.SecurityContext.ExecuteAs<T,TK>(Altiris.NS.Security.EExecuteAs, TK, System.Func<TK,Altiris.NS.Security.SecurityContext>, System.Func<Altiris.NS.Security.SecurityContext,T>)
   at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper.GetCurrentPortalUser()
   at Symantec.SoftwarePortal.Api.Controllers.MainController.GetPortalUser()
   at .lambda_method(System.Runtime.CompilerServices.Closure, Object, Object[])
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor+ActionExecutor+<>c__DisplayClass10.<GetExecutor>b__9(Object, Object[])
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext, System.Collections.Generic.IDictionary<String,Object>, System.Threading.CancellationToken)
   at System.Web.Http.Controllers.ApiControllerActionInvoker+<InvokeActionAsyncCore>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.InvokeActionAsyncCore(System.Web.Http.Controllers.HttpActionContext, System.Threading.CancellationToken)
   at System.Web.Http.Controllers.ActionFilterResult+<ExecuteAsync>d__2.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Controllers.ActionFilterResult.ExecuteAsync(System.Threading.CancellationToken)
   at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(System.Threading.CancellationToken)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__1.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.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.Web.Http.HttpServer+<SendAsync>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.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.AsyncMethodBuilderCore.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.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)
Source: Altiris.SoftwarePortal.Resources.PortalUserResource.GetUser

-------------------------------------------------------------------------------------------------
MainController failure.

Object reference not set to an instance of an object.
   [System.NullReferenceException @ Symantec.SoftwarePortal.Api]
   at Symantec.SoftwarePortal.Api.Models.PortalUser.FromPortalUserResource(PortalUserResource user, String login)
   at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper.<>c__DisplayClass1_0.<GetCurrentPortalUser>b__0()
   at Altiris.NS.Security.SecurityContext.<>c__DisplayClass7.<ExecuteAsAppIdentity>b__5(SecurityContext ctx)
   at Altiris.NS.Security.SecurityContext.ExecuteAs[T,TK](EExecuteAs e, TK trustee, Func`2 createContext, Func`2 action)
   at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper.GetCurrentPortalUser()
   at Symantec.SoftwarePortal.Api.Controllers.MainController.GetPortalUser()
   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.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
Source: Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.OnException

Cause

The "User Name" in the error is a user that either Reports to the user logging into the Software Portal or is the users manager. At the same time the "User Name" refers to a nonexistent user.

Environment

Software Management Solution 8.1 RU6

Resolution

The reporting chain of the users can be fixed via the SMP Console.
In the Management Console go to Manage>Users>Find the user trying to open the Software Portal.
Right click on the user>Edit.
There should be a "User's Direct Reports" section.
See if :User Name" is listed here and if you can edit/remove him from the reports list.
Save the changes.

Also check if there if there is an invalid reporting chain in Active Directory for the 2 users.