Workflow Design Help

  • 25 February 2016
  • 1 reply
  • 0 views

Badge +2

I am a bit stuck on the design of this workflow....

Background:

The users want to submit a form that gets routed for approval. In the form they fill out, the will select users from different groups. They can select 0-multiple users for each group in the form (there is around 20 different groups). Once submitted, an approval email should be sent to any users that were selected. When approving, the user should be able to select Approve/Reject, enter comments, delegate, and add additional approvers from their specific group if they feel it's necessary. However, their Approval/Rejection doesn't actually matter. The only approval/rejection that matters is the originator's. Once the originator approves or rejects, the workflow can move forward. However, they would like to see what response the users they selected have for approve/reject.

How I started:

I created the form (works great) and got a workflow started. I am using a parallel action with request review for all users selected in the form. I have edited the task form and workflow task list to have an approve/reject column that they can fill out but doesn't actually drive anything within the workflow. In the other parallel branch, I have the request approval action for the originator. Once the originator responds, it cancels any remaining tasks from the request review action. THIS PART IS WORKING FINE. I am struggling with two pieces:

1. How do I allow the users to add additional approvers?

2. They would like each task name to contain the group that the selected user is in. How do I accomplish that without creating 20 different request review actions in parallel?

If I went about this the wrong way, please let me know.

Thanks!


1 reply

Badge +11

Hi Kaylee,

Q: "How do I allow the users to add additional approvers?"

A: What I've done before is manipulating the task form and create an additional people picker field, where the approver can select additional approvers if it is appropriate. In your workflow you will have to take the users entered in this field after task completion and create additional tasks for that users.

Q: "They would like each task name to contain the group that the selected user is in. How do I accomplish that without creating 20 different request review actions in parallel?"

A: That's not so easy because the assignee can be in multiple SharePoint groups. So it depends on how you receive this information on your item form. You will need exact field names for your groups on the initiation form (like "GroupA_Approvers", "GroupB_Approvers", ...) to know which users belong to which groups for that case. You can then configure the task name in your task action to include any variable that you previously set with the name of the respective group.

Since it sounds like your workflow could become very large, I strongly recommend to think about using a state machine. By using a state machine you can:

  1. Significantly increased clearness of your workflow, especially if it becomes bigger
  2. Much more control of your workflow stages (like first/second/third approval stages)
  3. Maintain your workflow much easier
  4. Avoid giant loopings (which you would probably need if you give your approvers the possibility to add additional approvers and therefore create additional tasks)

You will find a lot of useful information about using state machines in the community (just hit the search box). If you need more specific information, just ask again.

Reading your "Background" paragraph, I feel like you will face some other challenges as well, but let's take about that if you get there wink.png

Cheers

Philipp

Reply