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.
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.