After upgrading to 1.7.913, services or shared processes with manual tasks get stuck in Queued
Problem
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.
Solution
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'