I commonly hear the request to have an approval step in a workflow that is going to be variable. The other catch to this request is that the approvers change somewhat frequently, so there is a desire to not to have to make an administrative change each time the approver is going to change.
The best way to implement this is using an auxiliary table that will contain the user field with the defined approver and add permissions for a specified group of people to be able to update the auxiliary table records.
The challenge becomes, how do I get that approver field value copied to my workflow. Before the days of orchestrations, we commonly would use TeamScript/AppScript for this.
Orchestrations make implementing this very easy and WITHOUT any code! The attached document steps you through the configuration of the orchestration. You can either follow all of the instructions and build a sample orchestration, or jump to slide 16 and start with the transition action. Just make sure you review the Requirements slide to ensure you have all of the fields needed.
Also included in the zip file is the sample application where all of the elements are already built if you want to download that file for reference.
Approver Orchestration Documents: ApproverOrchestration.zip
NOTE: If you read my previous blog entry about the order of events in SBM then you may already know what I am about to say....If you put this orchestration on a submit transition to populate the owner of the first state in your workflow, you are likely going to get an error. This is because SBM is checking for the required fields before running your orchestration. Since you have ownership set to the user field in the orchestration, if it is blank, SBM is not even going to run your orchestration because it wants a value in that field. So a workaround is to set a default value to someone in that user list. It does not matter who because your orchestration will override it each time.