000029616 - RSA Archer 5.x JobFramework logs repeat the following error: Unable to get module for the level

Document created by RSA Customer Support Employee on Oct 14, 2016Last modified by RSA Customer Support Employee on Apr 21, 2017
Version 2Show Document
  • View in full screen mode

Article Content

Article Number000029616
Applies ToRSA Product Set: Archer
RSA Version/Condition: 5.x
IssueThe following exception is seen very often in the Archer JobFramework logs:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
  <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
    <SubType Name="Error">0</SubType> 
    <TimeCreated SystemTime="2015-01-07T07:00:03.8762563Z" /> 
    <Source Name="ArcherTech.Notifications" /> 
    <Correlation ActivityID="{99b925d6-9ac2-4619-b597-1a7c78c7f10e}" /> 
    <Execution ProcessName="ArcherTech.JobFramework.Job" ProcessID="9028" ThreadID="1" /> 
    <Channel /> 
        <TraceRecord Severity="Error" xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord">
          <Description>Throwing Exception</Description> 
            <ExceptionType>System.InvalidOperationException, mscorlib, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType> 
            <Message>Unable to get module for the level 15.</Message> 
              at ArcherTech.Notifications.Process.Validators.NotificationEnabledForLevelValidator.Validate(SessionContext sessionContext, Notification notification) 
              at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() 
              at System.Linq.Enumerable.Aggregate[TSource](IEnumerable`1 source, Func`3 func) 
              at ArcherTech.Notifications.Workflow.SendNotification.SendNotificationJobHandler.ProcessJob()

The reason why "Unable to get module for the level" is being logged is because there is a permission limitation as the modules are not licensed. Although the notification is set to inactive the schedule remains in the job framework. At scheduled time, at start of job, it checks active status of notification and ends job if notification is inactive. But as the modules are not licensed jobs won't be able to retrieve the module ID for the level in the log.
ResolutionDisable Notifications for the modules which are not licensed
  1. Run the following SQL command against the Instance database to get the Module Id containing the Level Id from the exception after replacing ### with Level Id:
    SELECT module_id FROM tblModule WHERE module_id = (SELECT module_id FROM tblLevel WHERE level_id = ###

  2. Run the following SQL command against the Instance database after replacing ### with the Module Id from step 1:
    UPDATE tblModule SET notification_flag = 0 WHERE notification_flag = 1 AND module_id = ###