Thanks for this nice challenge. It is nice to build something more complicated than a single list with a workflow attached.
I started by creating 3 lists.
- Service Request - to capture the request from the users. New request will hide some information and on Edit/Display will show some of the statistics in the top part of the form.
- Service Level Agreement (SLA) - list of steps / actions, Estimated days for completion, responsible person for step. This list also contains all the steps per Request type and will use these steps as a template to create all the tasks once a service request is created. SLA days will be used to calculate an Estimated Due Date for this task. Start date + SLA Days = Estimated Due date.
- Steps - This is a task list which will be used to capture all the necessary steps per service request.
The User will open a new service request and the workflow will start. It will read the SLA table based on the Request Type and get all the SLA steps required for the request type, as well as SLA Dates, and Assignees if certain tasks are only performed by certain people. Blank assignees is also acceptable. In the next step, the workflow will go an create all the tasks that was listed as steps below the request type from the SLA table.
Every time a step/task is completed, a workflow based on the Steps-list will start that will get the total amount of task, total completed task and calculate Completed %. It will also look at the task with the latest End date. This data will then be written back to the Service request List to give visibility to the initiator of the request. Data that the initiator will see is the % completed on his request, open tasks, total tasks and Due date (Estimated). I know that the Completed % only looks at Open tasks / Total tasks and that this isn't a true reflection but in version 2 of this workflow this will be added.
1. New Service Request Workflow
2. Update Task / Step Status (with a conditional start on the Status field)
That's it. This is the end of the process. Let me know if you have any questions or comments on improving the process.