Getting an error when trying to load the Security tab: The given key was not present in the dictionary.
search cancel

Getting an error when trying to load the Security tab: The given key was not present in the dictionary.

book

Article ID: 248992

calendar_today

Updated On:

Products

IT Management Suite Client Management Suite Server Management Suite

Issue/Introduction

The "Security" tab page is not opening in the right-click> Properties for any folder.  The following generic error message is returned:

Symantec Management Server Error
An error has occurred that prevents the Symantec Management Console displaying correctly.

The other tabs load just fine, like the "General" tab:

The NS logs show the following entry:

Failed to process web request.Exception of type 'System.Web.HttpUnhandledException' was thrown.
   [System.Web.HttpUnhandledException @ System.Web]
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at Altiris.NS.UI.Controls.PageCachePage.ProcessRequest(HttpContext context)
   at Altiris.NS.UI.AltirisPage.ProcessRequest(HttpContext context)
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.NS.UI.RoleSecMgr.PermissionTreeProvider.BuildTree()
   at Altiris.NS.UI.RoleSecMgr.PermissionTreeProvider.GetTreeNodes()
   at Altiris.NS.UI.RoleSecMgr.PermissionTree.CreateChildControls()
   at System.Web.UI.Control.EnsureChildControls()
   at Altiris.NS.UI.RoleSecMgr.PermissionTree.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)Exception logged from:
   at Altiris.NS.UI.AltirisPage.ProcessRequest(System.Web.HttpContext)
   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), AppDomain [/LM/W3SVC/1/ROOT/Altiris/NS-1-133051725071285549]HTTP [GET]http://localhost/Altiris/NS/RoleSecMgr/ItemPermissions.aspx?ItemGuid=467c197e-c83b-4d89-b659-7f93f026769e&view=properties&ConsoleGuid={3faa8b67-250b-42ad-8186-fe2f49a9e707}
 ip: [127.0.0.1]; languages: [en-HK];
 timings: [[R] 00:00:16.1932109(W: 00:00:00.5468985)];
 response: [200 OK]; x-smp-nsversion: [8.5.5713.0];
-----------------------------------------------------------------------------------------------------
Date: 8/17/2022 8:21:01 AM, Tick Count: 501964625, Size: 3.47 KB
Process: w3wp (45136), Thread ID: 449, Module: Altiris.NS.UI.dll
Priority: 1, Source: Altiris.NS.UI.AltirisPage.ProcessRequest

 

which refers to "The given key was not present in the dictionary" causing the issue.

Environment

ITMS 8.x

Cause

This is some inconsistency with permissions and permission groups. The referenced item in the NS logs has some permission that references an unavailable permission group. It looks up a dictionary that gets created from spGetSecurityPermissionDisplayGroups output by DisplayGroupGuid returned for permission from spGetSecurityPermissions call. But this GUID does not exist in the created dictionary, so we get a specified failure. 
The missing security group is "asset permissions" that is installed along with Asset Management solution. 

Resolution

In this particular instance, Asset Management Solution was removed at some point. For some reason, not all of the proper references were removed.

In order to resolve this issue, reinstall Asset Management Solution thru SIM (Symantec Installation Manager)

Validate Issue

If you want to check what group is missing, do the following: 

  1. Run the following query:
    exec spGetSecurityPermissionDisplayGroups

    It should return something like this:

    Guid NameRef
    79495195-92B8-4760-BCF9-1BA1E904010E system permissions
    CF649BBC-EC2E-462A-B8D5-2852BC3B6424 asset permissions
    7F4A6F32-91EE-45FC-9F68-5A8F1F2FD3E9 report permissions
    1FE13A39-2483-42B6-A4B6-7FE3CDD82549 connection profile permissions
    22574A13-DD92-4515-821D-80E51BE3FB36 credential permissions
    E2787D31-A919-4A63-9AAF-A8E1648858C5 folder permissions
    A03A2DA1-6D7B-4613-AC18-AFABEAAF7C29 software update management permissions
    16358E5D-B7A2-469C-B102-B3884B428403 task server permissions
    2A863C85-FEB3-4FF5-B2F8-D1DC4981DE25 policy permissions
    FE04C752-0270-46D1-9242-DFCCD0409E68 resource management permissions
    85E1B000-BD21-49E0-9D51-F7BBC1204036 collection permissions

    For this situation, the following group was missing:

    CF649BBC-EC2E-462A-B8D5-2852BC3B6424 asset permissions
  2. Also, run this query (this query should find such permission):

    SELECT sp.[Guid][Name][Description][DisplayGroupGuid], sp.[Solution],
    spd.[Guid]
    FROM [dbo].[sec_Permission] as sp WITH (NOLOCK)
    LEFT JOIN SecurityPermissionDisplayGroup spd on spd.Guid = [DisplayGroupGuid]
    where spd.[Guid] is null

    In most cases, it should return nothing. For this situation, it returned the following:

    Guid Name Description DisplayGroupGuid Solution Guid
    2D48AFBC-0189-498B-9D83-2AF0DBC918EE Report on Owned Resources Report on owned resources CF649BBC-EC2E-462A-B8D5-2852BC3B6424 AE83A505-FFE2-4188-A0ED-D15F994FEB12 NULL

    where the item having problems refers to "DisplayGroupGuid" for "Asset Permissions" (CF649BBC-EC2E-462A-B8D5-2852BC3B6424)