Here is my proposal for this Request
The SharePoint list to fulfill the Requests needs to contain a Title, the Request Type, the overall status, % Completed. I have added the numbers of steps completed and the Total numbers of steps in the view. It is more readable. I believe also that a Request is assigned to a responsible, so I have added an Assigned To column. The 3 statuses will be New (Default), In Progress, Completed.
After the creation of the Request, the view looks like this.
As the Manager needs to be able to add a new Request Type and its steps, I propose to use a List to configure them: Steps. The list contains 3 columns: Request Type, Step (Number), and Step Description.
For the steps I have created, the Inventory Request Type.
So, we need to be able to fill the Request Type from two lists. For that I have created a third list: Request Type with only one column the Request Type (=Title). Both lists will looked up this one.
For each Request, the process needs to create as many items as they are steps. For that, I decide to create Tasks to take all the advantages of Tasks in SharePoint like Gantt Chart, Subtask, Timeline, Overdue date, Mobile access, link with MS Project Professional, …
The Task list will have his own security as I want to avoid that people are able to change Status from Completed to In Progress and back to Completed as it will start the Workflow again and the %Complete will exceed 100%.
I will develop two workflows:
- Workflow on Request list: (Run when item is created) It will create all tasks as separated items and not as assigned tasks as tasks can be run in parallel. I do not want to wait a Task to be completed before the next one can be run. For that I query the Step list on Request Type (Sort Order: Step). I loop on all steps, create a task including, Step, Step Description, Request Type ID. At the end, update Total Steps in the Request.
Task list after the Workflow as run for the 3 steps.
- Workflow on Task list: Run only when Status is Completed
Update the following columns in the Request:
- Add 1 to Steps Completed
- Update %Complete
- If Completed Steps = Totals Steps, Update Status to Completed, else In Progress
- Set the Security of the Task to Read
Request list after the Workflow as run for 1 task
Request list after the Workflow as run for all tasks
In the Step list, we can add
- Default Assignee that we can add to the Task.
- Duration that we can add to the Task. After the Start Date is filled in, it is visible in a Gantt chart. Even more, but this is challenging, if the Request contains a Start Date, that all steps contains a duration, that we can deal will all week-end and bank holidays, we can plan on a Gantt chart, the full Request.
- Predecessors can be also automatically filled in based on step if really needed