000029616 - RSA ArcherJobFramework 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 on Apr 27, 2020
Version 3Show Document
  • View in full screen mode

Article Content

Article Number000029616
Applies ToRSA Product Set: Archer
RSA Version/Condition: 6.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 the scheduled time, at the start of the 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 and Module Name containing the Level Id from the exception after replacing ### with Level Id:

    SELECT m.module_id, mt.module_name, m.* FROM tblModule M
    join tblModuleTranslation mt on mt.module_id=m.module_id
    WHERE m.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 = ###