Change Management Not Able to Load Form After Workflow HF5 Upgrade
search cancel

Change Management Not Able to Load Form After Workflow HF5 Upgrade

book

Article ID: 164290

calendar_today

Updated On:

Products

ServiceDesk

Issue/Introduction

After upgrading a 7.5x Servicedesk environment to 8.0 HF4, and subsequently upgrading the Workflow portion to 8.0 HF5 (8.0.3515.0), When attempting to create a Change Request recieved a white, "Application Error" screen, and are unable to add a change request.

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Exception: Execution Engine Exception  ---> System.Exception: Execution Exception ---> System.Exception: Execution Engine Exception  ---> System.Exception: Execution Exception ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Symantec.ServiceDesk.Cm.Core.DataTypes.ChangeApprovalTier.set_AssignedCab(ChangeApprovalBoard value)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at LogicBase.Core.Messaging.Implementations.RelationalMapperExchange.BuildObjectsFromSelectStatement(Type T, ReturnSetSQLStatement statement)
   at LogicBase.Core.Messaging.Implementations.RelationalMapperExchange.BuildObjectsFromSelectStatement(Type T, ReturnSetSQLStatement statement)
   at Symantec.ServiceDesk.Cm.Core.ChangeManagementDataService.ListChangePlanTemplates()
   at Symantec.ServiceDesk.Cm.Core.Components.ListChangePlanTemplatesComponent.DoRun(ChangeManagementDataService cmDataService, IData data)
   at LogicBase.Core.ExecutionEngine.SinglePathProcessComponentExecutionDelegate.Execute(IData data, IOrchestrationComponent comp, String& outputPath, IExecutionEngine engine, TLExecutionContext context)
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunComponent(TLExecutionContext context, IData data, IOrchestrationComponent comp)
   --- End of inner exception stack trace ---
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunEngine(List`1 executionQueue)
   --- End of inner exception stack trace ---
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunEngine(List`1 executionQueue)
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.ExecuteComponent(IData data, IOrchestrationComponent component)
   at LogicBase.Core.Models.EmbeddedDecisionModel.EmbeddedDecisionModelExecutionEngine.Run(IData data)
   at LogicBase.Components.Default.Process.EmbeddedModelComponent.Run(IData data)
   at LogicBase.Core.ExecutionEngine.SinglePathProcessComponentExecutionDelegate.Execute(IData data, IOrchestrationComponent comp, String& outputPath, IExecutionEngine engine, TLExecutionContext context)
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunComponent(TLExecutionContext context, IData data, IOrchestrationComponent comp)
   --- End of inner exception stack trace ---
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunEngine(List`1 executionQueue)
   --- End of inner exception stack trace ---
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.RunEngine(List`1 executionQueue)
   at LogicBase.Core.ExecutionEngine.AbstractExecutionEngine.ExecuteComponent(IData data, IOrchestrationComponent component)
   at LogicBase.Core.Models.Dialog.ASPXDialogExecutionDelegate.HandleOutcome(AbstractDialogExecutionEngine engine, ComposerForm page, String path)
   at LogicBase.Core.Models.Dialog.ComposerForm.OnLoadComplete(EventArgs e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   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 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Environment

8.0.3515.0

Cause

During some point of the upgrade, the change to add tiered level approval capabilities required a table change in SQL.  The CmChangeApprovalTier table needed to have a CmChangePlanTemplateId column, which would be created on the upgrade.  This table was never created.

Resolution

  1. Open the ObjectStructureCheck table.
  2. Delete the line in that table with the following SQL: Delete from ObjectStructureCheck where type_name =Symantec.ServiceDesk.Cm.Core.DataTypes.ChangePlanTemplate
  3. Copy and unlock the SD.ChangeManagementSimple.TemplateManagement project.  Disable all instances of the List Change Plan Templates, and Refresh Template List components.
  4. Run SD.ChangeManagementSimple.TemplateManagement in debug and create a basic template.
  5. Test.
  6. If there is no success, you will need to verify that the CmChangeApprovalTier table has the correct AssignedCABId references from the  CmChangeApprovalBoard table.  The following SQL query will show any discrepancies - Select * from CmChangeApprovalTier where AssignedCabId not in (Select CmChangeApprovalBoard_id from CmChangeApprovalBoard)
  7. If there are discrepancies, use the following SQL to fix them - Update CmChangeApprovalTier Set AssignedCabId = 'Enter correct CmChangeapprovalBoard_id Guid here'  where CmChangeApprovalTier_id = 'Get the corresponding  CmChangeApprovalTier_id Guid' --use the one that matches CmApprovalboard.CabName with the CmChangeApprovalTier.AssignedCabName
  8. This should resolve the issue.