<script>
     var select = document.getElementById("id_confirm");
 
+    function processResponseText(json)
+    {
+        var dict = JSON.parse(json);
+
+        if( !dict["redir_url"] ) {
+            window.top.refresh_iframe();
+        } else {
+            top.window.location.href = dict["redir_url"];
+        }
+    }
+
     function delete_manager()
     {
         var form = $("#manager_delete_form");
         req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         req.onerror = function() { alert("problem with cleaning up session"); }
         req.onreadystatechange = function() { if(req.readyState === 4 ) {
-                window.top.refresh_iframe();
+                processResponseText(req.responseText);
                 }}
         req.send(formData);
     }
 
+++ /dev/null
-<!DOCTYPE html>
-<html>
-    <script>
-    top.window.location.href='/';
-    </script>
-</html>
 
             pass
         JobFactory.makeSnapshotTask(image, booking, host)
 
+        self.el[self.RESULT] = image
+        self.el[self.HAS_RESULT] = True
+
     def make_generic_resource_bundle(self):
         owner = self.el[self.SESSION_USER]
         if self.GRESOURCE_BUNDLE_MODELS in self.el:
             return "GRB no models given. CODE:0x0001"
 
         self.el[self.RESULT] = bundle
+        self.el[self.HAS_RESULT] = True
         return False
 
     def make_software_config_bundle(self):
         except Exception as e:
             return "BOOK, saving booking generated exception: " + str(e) + " CODE:0x0016"
 
+        self.el[self.RESULT] = booking
+        self.el[self.HAS_RESULT] = True
+
     def make_opnfv_config(self):
         opnfv_models = self.el[self.OPNFV_MODELS]
         config_bundle = self.el[self.SELECTED_CONFIG_BUNDLE]
             )
 
         self.el[self.RESULT] = opnfv_config
+        self.el[self.HAS_RESULT] = True
 
     def __init__(self):
         self.el = {}
         self.el[self.CONFIRMATION] = {}
         self.el["active_step"] = 0
+        self.el[self.HAS_RESULT] = False
+        self.el[self.RESULT] = None
         self.get_history = {}
         self.put_history = {}
 
 ##############################################################################
 
 
-from django.http import HttpResponse, HttpResponseGone
+from django.http import HttpResponseGone, JsonResponse
 from django.shortcuts import render
+from django.urls import reverse
 
 import uuid
 
 from workflow.workflow_manager import ManagerTracker, SessionManager
+from booking.models import Booking
 
 import logging
 logger = logging.getLogger(__name__)
         return None
 
 
+def get_redirect_response(result):
+    if not result:
+        return {}
+
+    # need to get type of result, and switch on the type
+    # since has_result, result must be populated with a valid object
+    if isinstance(result, Booking):
+        return {
+            'redir_url': reverse('booking:booking_detail', kwargs={'booking_id': result.id})
+        }
+    else:
+        return {}
+
+
 def delete_session(request):
     manager = attempt_auth(request)
 
     if not manager:
         return HttpResponseGone("No session found that relates to current request")
 
-    if manager.pop_workflow():
-        return HttpResponse('')
-    else:
-        del ManagerTracker.managers[request.session['manager_session']]
-        return render(request, 'workflow/exit_redirect.html')
+    not_last_workflow, result = manager.pop_workflow()
 
-    try:
+    if not_last_workflow:  # this was not the last workflow, so don't redirect away
+        return JsonResponse({})
+    else:
         del ManagerTracker.managers[request.session['manager_session']]
-        return HttpResponse('')
-    except Exception:
-        return None
+        return JsonResponse(get_redirect_response(result))
 
 
 def step_view(request):
 
         )
 
     def pop_workflow(self):
-        if(len(self.workflows) <= 1):
-            return False
-
-        if self.workflows[-1].repository.el[self.workflows[-1].repository.HAS_RESULT]:
-            key = self.workflows[-1].repository.el[self.workflows[-1].repository.RESULT_KEY]
-            result = self.workflows[-1].repository.el[self.workflows[-1].repository.RESULT]
-            self.workflows[-2].repository.el[key] = result
-        self.workflows.pop()
-        return True
+        multiple_wfs = len(self.workflows) > 1
+        if multiple_wfs:
+            if self.workflows[-1].repository.el[Repository.RESULT]:  # move result
+                key = self.workflows[-1].repository.el[Repository.RESULT_KEY]
+                result = self.workflows[-1].repository.el[Repository.RESULT]
+                self.workflows[-2].repository.el[key] = result
+            self.workflows.pop()
+        current_repo = self.workflows[-1].repository
+        return (multiple_wfs, current_repo.el[current_repo.RESULT])
 
     def status(self, request):
         try: