000033949 - RSA Archer Application copy fails with an unexpected error when a Tab on the Layout has no Section and no Fields

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

Article Content

Article Number000033949
Applies ToRSA Product Set: Archer
RSA Version/Condition: 5.5.4
IssueWhen copying an application, the user may receive an unexpected error with a Log Reference ID.
In the w3wp log file, you may find the following corresponding log entry:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
    <ApplicationData>
        <TraceData>
            <DataItem>
                <TraceRecord Severity="Error" xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord">
                    <TraceIdentifier>Archer.NET</TraceIdentifier>
                    <UserId>0</UserId>
                    <Description>Object reference not set to an instance of an object.</Description>
                    <AppDomain>/LM/W3SVC/1/ROOT-1-131145108012386968</AppDomain>
                    <Exception>
                        <ExceptionType>System.NullReferenceException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
                        <Message>Object reference not set to an instance of an object.</Message>
                        <Source>ArcherTech.Kernel</Source>
                        <StackTrace>
   at ArcherTech.Kernel.Brokers.ModuleCopyHelper.PopulateNewOldTab(IDictionary`2 sections, IDictionary`2 layoutItems, LevelLayoutTab layoutTab)
   at ArcherTech.Kernel.Brokers.ModuleCopyHelper.PopulateNewOldTab(IDictionary`2 sections, IDictionary`2 layoutItems, LevelLayoutTab layoutTab)
   at ArcherTech.Kernel.Brokers.ModuleCopyHelper.SaveLevelLayout(IDictionary`2 oldLevelNewLevelMap, IDictionary`2 fieldDefinitionsDictionary, IDictionary`2 oldFieldNewFieldIdMap, SaveResult saveResult, IDictionary`2 oldSectionNewSectionIdMap, IDictionary`2 oldLayoutItemNewLayoutItemIdMap)
   at ArcherTech.Kernel.Brokers.ModuleCopyHelper.CopyFields(Int32 copyModuleId, Int32 newModuleId, IDictionary`2 oldLevelNewLevelMap, IDictionary`2 oldFieldNewFieldIdMap, IDictionary`2 oldValueNewValueIdMap, IDictionary`2 oldValueListNewValueListIdMap, IDictionary`2 levelFilterValueIdMap, IDictionary`2 oldSectionNewSectionIdMap, IDictionary`2 oldLayoutItemNewLayoutItemIdMap, Nullable`1 newTargetLevelId, Nullable`1 newTargetModuleId)
   at ArcherTech.Kernel.Brokers.ApplicationModuleBrokerHelper.CopyDependentInformation(ModuleCopyHelper copyHelper, Int32 originalApplicationId, Application originalApplication, Int32 newApplicationId, Application newApplication, ApplicationModuleContainer applicationContainer, IModuleBroker moduleBroker)
   at ArcherTech.Kernel.Brokers.ApplicationModuleBrokerHelper.Copy(ModuleContainerBase moduleContainer, Boolean needsPermissioning, Boolean needsValidation)
   at ArcherTech.Kernel.Brokers.ModuleBroker.CopyInternal(ModuleContainerBase moduleContainer, Boolean needsPermissioning, Boolean needsValidation)
   at ArcherTech.Kernel.Managers.ModuleManager.Copy(SessionContext sessionContext, ModuleContainerBase moduleContainer)</StackTrace>
                    </Exception>
                </TraceRecord>
            </DataItem>
        </TraceData>
    </ApplicationData>
</E2ETraceEvent>

Additionally, the partially copied application will then appear in Application Builder and cause an error when accessed.  This error will have the following corresponding log file:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
    <ApplicationData>
        <TraceData>
            <DataItem>
                <TraceRecord Severity="Error" xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord">
                    <TraceIdentifier>Archer.Web</TraceIdentifier>
                    <LogReferenceId>090116-140833-7651</LogReferenceId>
                    <Description>[Arg_NullReferenceException]Arguments: Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.41212.00&File=mscorlib.dll&Key=Arg_NullReferenceException</Description>
                    <AppDomain>/LM/W3SVC/1/ROOT-1-131171892015164016</AppDomain>
                    <ContextData>
                        <BaseUrl>https://egrcb.archer.rsa.com/content/ModuleList.aspx</BaseUrl>
                        <PageId>module</PageId>
                    </ContextData>
                    <Exception>
                        <ExceptionType>ArcherTech.Web.UI.ArcherException, ArcherTech.Web, Version=5.5.40200.1016, Culture=neutral, PublicKeyToken=null</ExceptionType>
                        <Message>[Arg_NullReferenceException]Arguments: Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.41212.00&File=mscorlib.dll&Key=Arg_NullReferenceException</Message>
                        <Source>
                        </Source>
                        <StackTrace>
  at ArcherTech.Silverlight.PageLayoutApp.LevelLayoutNavigator.&lt;GetAllFieldIds&gt;d__0.MoveNext()
  at ArcherTech.Silverlight.PageLayoutApp.LevelLayoutNavigator.GetFieldIds()
  at ArcherTech.Silverlight.PageLayoutApp.LayoutDataLoader.GetLevelLayoutCompleted(Object sender, GetLevelLayoutCompletedEventArgs e)
  at ArcherTech.SL.ApplicationBuilder.Proxy.ApplicationBuilderService.ApplicationBuilderServiceClient.OnGetLevelLayoutCompleted(Object state)</StackTrace>
                    </Exception>
                </TraceRecord>
            </DataItem>
        </TraceData>
    </ApplicationData>
</E2ETraceEvent>
CauseThe issue is caused by a known defect, ARCHER-27805, where a tab object that with no valid layout section, and with no fields below it cannot be copied.
ResolutionThe defect, ARCHER-27805, is planned to be fixed in a future version.
Workaround
Remove the tab object that has no layout section or content associated with it.


  1. Run the following SQL query run against the Archer Instance database.
    SELECT MT.module_name, LTT.layout_tab_name FROM tblIVLayoutTab as LT
    LEFT JOIN tblIVLayoutSection as LS on LS.layout_tab_id = LT.layout_tab_id
    LEFT JOIN tblIVLayoutObject as LO on LS.layout_section_id = LO.layout_section_id
    LEFT JOIN tblIVLayoutModule as LM on LT.layout_module_id = LM.layout_module_id
    LEFT JOIN tblModuleTranslation as MT on LM.module_id = MT.module_id
    LEFT JOIN tblIVLayoutTabTranslation as LTT on LTT.layout_tab_id = LT.layout_tab_id
    LEFT JOIN tblModule as M on M.module_id = MT.module_id
    WHERE LS.layout_section_id is null AND M.deleted = 0


  2. From Navigation Menu, go to Administration -> Application Builder -> Manage Applications
  3. Open the Application (matching module_name as result of SQL query above) and select the Layout tab.
  4. Locate the Tab object by name as per the above SQL query.
  5. Remove the Tab object.
  6. Save changes.
  7. Attempt to copy the Application again.

Attachments

    Outcomes