This question frequently comes up during the USD (Unified Service Desk, not $) projects and training sessions: what is the most effective way to save/restore the entire USD session? This functionality would enable some interesting scenarios, e.g. transfer the entire session from one user to another with the call transfer, or simply save a complicated session in the end of the day and to be able to quickly resume it the following morning.

Create a custom save/restore/transfer entity where you can store data for session.

To save the session, create an action call to the CRM Global Manager’s CreateEntity action. In this action, you will want to populate the transfer entity custom fields with values that are needed to restore the various components.

For the Agent Scripting component, the Replacement parameter list has the task name. During the restore, you will call GotoTask with this name to restore the location. So in the CreateEntity, place this name in one of your customer fields.

For web controls, a URL is captured for this purpose.

Most other [well-designed] hosted controls would automatically pick up their state when these URL’s and Agent script are populated so you don’t really to do anything else. For example, the Session Overview will get it’s data from the replacement parameters, once the URL’s restore so we don’t need to pass anything for these.

Now that you have a created transfer entity and it’s corresponding ID, you can pass this ID with the phone call. Typically you use the UII parameter or various CTI fields that map to this.

Now create a CTI Window Navigation Rule. This rule will handle restoring the session when it recognizes this transfer guid in the UII field.

One of the benefits from making this transfer entity an actual activity is that we could set the RegardingObjectId to the phonecall or activity that was being transferred. It would then count the number of times the activity was transferred, which is a useful metric for customer service. Also, you can place these activities into a queue as well for an offline transfer. For example, you can add an escalate button in USD that does this save and places the activity into a supervisor queue. The agent would then notify the caller that they will receive a callback. The supervisor then looks at their queue, double clicks on the transfer item and instead of displaying it, your popup window navigation rule in USD can run the same action call sequence to do the restore in USD. They could then, of course, click the number and call the customer back.