After upgrading to 1.7.913, services or shared processes with manual tasks get stuck in Queued
After upgrading a ZervicePoint installation to 1.7.913, any existing service or shared process that contains a manual task activity will be stuck in queued and you receive the following message in the log:
Error when trying to get process workflow markup from configuration: System.NullReferenceException: Object reference not set to an instance of an object. at Zipper.ZervicePoint.ProcessSystem.Builders.TaskActivityGenerator.BuildCreateMultiTaskAndWait(TaskActivityData activityData, WorkflowExecutionContext context, Variable`1 assigneeList, String connectedFormName, BoundValue`1 notifyUsers)
This is caused by the manual task activity missing certain properties after upgrade.
There are two possible solutions that both will correct the issue. You can either make a modification to the service or run a sql script that fixes it for you. You can choose whichever solution suits your environment best
Option 1: Open and save
- Open any services/shared processes that uses a manual task and make some modification to it (i.e. change description, short description). By saving the service again, Zervicepoint automatically adds all missing properties
- Restart any failing orders with latest version (since existing orders stuck in queued will not continue)
Option 2: Run SQL fix
- Verify that your database is backed up properly
- Connect to the SQL server using SQL Management Studio and connect to the database server containing Zervicepoint database
- Open a new query window and select Zervicepoint as the database
- Paste the following script into the query window and the execute the script:
DECLARE @SourceProperties TABLE(Name NVARCHAR(MAX), BooleanValue bit, StringValue NVARCHAR(MAX)) INSERT INTO @SourceProperties (Name, BooleanValue, StringValue) VALUES ('taskResult_value', NULL, NULL) INSERT INTO @SourceProperties (Name, BooleanValue, StringValue) VALUES ('taskResult_isBoundToSystemVariable', 0, NULL) INSERT INTO @SourceProperties (Name, BooleanValue, StringValue) VALUES ('taskResult_isBound', 0, NULL) INSERT INTO @SourceProperties (Name, BooleanValue, StringValue) VALUES ('taskResult_boundTo', NULL, '') INSERT INTO ProcessComponent.ActivityProperties (ActivityId, Name, BooleanValue, StringValue) SELECT * FROM ( SELECT a.Id FROM ProcessComponent.Activities a INNER JOIN ProcessComponent.Workflows w ON w.Id = a.WorkflowId INNER JOIN ProcessComponent.Processes p ON p.id = w.ProcessId WHERE p.IsLatest = 1 AND p.IsDeleted = 0 AND a.ActivityType = 'Task' AND (SELECT COUNT(*) FROM ProcessComponent.ActivityProperties ap WHERE ap.ActivityId = a.Id and ap.Name = 'taskResult_value') = 0 ) AS Activities CROSS JOIN @SourceProperties UPDATE ConfigurationSystem.GlobalSettings SET Value = Value + 1 WHERE Name = 'WorkflowVersion'