diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
index f660c64..494fa2b 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/CordModelCache.java
@@ -42,15 +42,16 @@
 
     private static final String BUNDLE = "bundle";
     private static final String USERS = "users";
+    private static final String SUB_ID = "subId";
 
 
     // faked for the demo
-    private static final int SUBSCRIBER_ID = 92;
     private static final String MAC_1 = "010203040506";
     private static final String MAC_2 = "010203040507";
     private static final String MAC_3 = "010203040508";
     private static final String MAC_4 = "010203040509";
 
+    private int subscriberId;
     private Bundle currentBundle;
 
     // NOTE: use a tree map to maintain sorted order by user ID
@@ -62,13 +63,14 @@
      */
     CordModelCache() {
         currentBundle = new Bundle(BundleFactory.BASIC_BUNDLE);
-        initUsers();
+        subscriberId = XosManager.INSTANCE.getSubscriberId();
     }
 
     /**
      * Used to initialize users for the demo. These are currently fake.
      */
-    public void initUsers() {
+    @Deprecated
+    private void initUsers() {
         userMap.put(1, createUser(1, "Mom's MacBook", MAC_1));
         userMap.put(2, createUser(2, "Dad's iPad", MAC_2));
         userMap.put(3, createUser(3, "Dick's laptop", MAC_3));
@@ -109,7 +111,7 @@
             }
         }
 
-        XosManager.INSTANCE.setNewBundle(SUBSCRIBER_ID, currentBundle);
+        XosManager.INSTANCE.setNewBundle(subscriberId, currentBundle);
     }
 
 
@@ -144,7 +146,7 @@
         checkNotNull(func, "function not part of bundle: " + funcId);
 
         func.applyParam(user, param, value);
-        XosManager.INSTANCE.apply(SUBSCRIBER_ID, func, user);
+        XosManager.INSTANCE.apply(subscriberId, func, user);
     }
 
     // =============
@@ -159,6 +161,10 @@
 
     // ============= generate JSON for GUI rest calls..
 
+    private void addSubId(ObjectNode root) {
+        root.put(SUB_ID, subscriberId);
+    }
+
     /**
      * Returns the dashboard page data as JSON.
      *
@@ -168,6 +174,7 @@
         ObjectNode root = objectNode();
         root.put(BUNDLE, currentBundle.descriptor().displayName());
         root.set(USERS, userJsonArray());
+        addSubId(root);
         return root.toString();
     }
 
@@ -177,7 +184,9 @@
      * @return bundle page JSON data
      */
     public String jsonBundle() {
-        return BundleFactory.toJson(currentBundle);
+        ObjectNode root = BundleFactory.toObjectNode(currentBundle);
+        addSubId(root);
+        return root.toString();
     }
 
     /**
@@ -188,6 +197,7 @@
     public String jsonUsers() {
         ObjectNode root = objectNode();
         root.set(USERS, userJsonArray());
+        addSubId(root);
         return root.toString();
     }
 
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManager.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManager.java
index 20b1baf..2af231f 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManager.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManager.java
@@ -17,6 +17,10 @@
 
 package org.onosproject.cord.gui;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.cord.gui.model.Bundle;
 import org.onosproject.cord.gui.model.SubscriberUser;
 import org.onosproject.cord.gui.model.XosFunction;
@@ -24,6 +28,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
 import java.util.Set;
 
 /**
@@ -31,9 +36,15 @@
  */
 public class XosManager {
 
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
+    private static final String TEST_XOS_SERVER_ADDRESS = "10.254.1.22";
+    private static final int TEST_XOS_SERVER_PORT = 8000;
     private static final String URI_BASE = "/rs/subscriber/";
 
-    private final XosManagerRestUtils xosUtils = new XosManagerRestUtils(URI_BASE);
+    private final XosManagerRestUtils xosUtils =
+            new XosManagerRestUtils(TEST_XOS_SERVER_ADDRESS,
+                                    TEST_XOS_SERVER_PORT, URI_BASE);
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     /**
@@ -41,6 +52,38 @@
      */
     XosManager() {}
 
+    /**
+     * Returns the subscriber ID to use for calls to the XOS backend.
+     * Right now, this is implemented to get a list of all subscribers
+     * in the system and return the first one.
+     *
+     * @return subscriber ID
+     */
+    public int getSubscriberId() {
+        log.info("getSubscriberId() called");
+        String result = xosUtils.getRest();
+        log.info("from XOS: {}", result);
+
+        JsonNode node;
+        try {
+            node = MAPPER.readTree(result);
+        } catch (IOException e) {
+            log.error("failed to read subscriber JSON", e);
+            return 0;
+        }
+
+        ArrayNode subscribers = (ArrayNode) node.get("subscribers");
+        if (subscribers.size() == 0) {
+            log.error("no subscribers found");
+            return 0;
+        }
+
+        ObjectNode first = (ObjectNode) subscribers.get(0);
+        int id = first.get("id").asInt();
+        log.info("Using subscriber id {}.", id);
+        return id;
+    }
+
 
     private String subId(int subscriberId) {
         return String.format("%d/", subscriberId);
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManagerRestUtils.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManagerRestUtils.java
index b8e8a4c..bd9f5ae 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManagerRestUtils.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/XosManagerRestUtils.java
@@ -32,8 +32,6 @@
  * Utility RESTful methods for dealing with the XOS server.
  */
 public class XosManagerRestUtils {
-    private static final String TEST_XOS_SERVER_ADDRESS = "10.254.1.22";
-    private static final int TEST_XOS_SERVER_PORT = 8000;
     private static final String XOSLIB = "/xoslib";
     private static final String AUTH_USER = "padmin@vicci.org";
     private static final String AUTH_PASS = "letmein";
@@ -46,21 +44,6 @@
     private final int xosServerPort;
     private final String baseUri;
 
-    /**
-     * Constructs a utility class for the default server address and port,
-     * using the given base URI.
-     * <p>
-     * Note that the uri should start and end with a slash; for example:
-     * {@code "/volttenant/"}. This example would result in URIs of the form:
-     * <pre>
-     *     "http://10.254.1.22:8000/xoslib/volttenant/"
-     * </pre>
-     *
-     * @param baseUri base URI
-     */
-    public XosManagerRestUtils(String baseUri) {
-        this(TEST_XOS_SERVER_ADDRESS, TEST_XOS_SERVER_PORT, baseUri);
-    }
 
     /**
      * Constructs a utility class, using the supplied server address and port,
diff --git a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/BundleFactory.java b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/BundleFactory.java
index f951409..4c9e621 100644
--- a/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/BundleFactory.java
+++ b/apps/demo/cord-gui/src/main/java/org/onosproject/cord/gui/model/BundleFactory.java
@@ -97,12 +97,12 @@
     }
 
     /**
-     * Returns a JSON string representation of the given bundle.
+     * Returns an object node representation of the given bundle.
      *
      * @param bundle the bundle
-     * @return JSON string
+     * @return object node
      */
-    public static String toJson(Bundle bundle) {
+    public static ObjectNode toObjectNode(Bundle bundle) {
         ObjectNode root = objectNode();
         BundleDescriptor descriptor = bundle.descriptor();
 
@@ -127,6 +127,6 @@
             bundles.add(bdnode);
         }
         root.set(BUNDLES, bundles);
-        return root.toString();
+        return root;
     }
 }
