Delegation - Means that a user X has been specifically assigned a task, but if he has set a delegate for a certain duration the task should get assigned to Y during that duration, any tasks after that duration will get assigned to X, e.g. he is on vacation and all tasks during vacation should get assigned to a peer/next in command. So we need to implement it before the task assignment happens. One way of doing this is to maintain a delegation schedule table and before assigning the task check the current delegate in the table and assign it to Y. Then comes the question if he is back early either Y can reassign it back to X or X can pick it up from Y. We will also need a stand alone Human Service UI to maintain the delegation schedule. We also need to keep in mind if a single delegation can happen or it is recursive delegation, to keep it simple we should avoid recursive delegation.To avoid cluttering in the Primary BPD we can use a sub-process and have a delegation check before assigning the task and update the user to a different user, we may also want to maintain the delegation state in a variable and pass it on to the task if something specific for a delegated task needs to be done along with the original user.