diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
index d62cbde..9950c33 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
@@ -56,24 +56,39 @@
 @Component(immediate = true)
 @Service
 public class OnosXOSIntegrationManager implements VoltTenantService {
+    private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME =
+            "xosServerAddress";
+    private static final String XOS_SERVER_PORT_PROPERTY_NAME =
+            "xosServerPort";
+    private static final String XOS_PROVIDER_SERVICE_PROPERTY_NAME =
+            "xosProviderService";
 
     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 XOS_TENANT_BASE_URI = "/xoslib/volttenant/";
+    private static final int TEST_XOS_PROVIDER_SERVICE = 1;
 
     private final Logger log = getLogger(getClass());
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected CoreService coreService;
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected ComponentConfigService cfgService;
-    @Property(name = "XOSServerAddress",
+
+    @Property(name = XOS_SERVER_ADDRESS_PROPERTY_NAME,
               value = TEST_XOS_SERVER_ADDRESS,
               label = "XOS Server address")
     protected String xosServerAddress = TEST_XOS_SERVER_ADDRESS;
-    @Property(name = "XOSServerPort",
+
+    @Property(name = XOS_SERVER_PORT_PROPERTY_NAME,
               intValue = TEST_XOS_SERVER_PORT,
               label = "XOS Server port")
     protected int xosServerPort = TEST_XOS_SERVER_PORT;
+
+    @Property(name = XOS_PROVIDER_SERVICE_PROPERTY_NAME,
+            intValue = TEST_XOS_PROVIDER_SERVICE,
+            label = "XOS Provider Service")
+    protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE;
+
     private ApplicationId appId;
 
     @Activate
@@ -244,7 +259,16 @@
 
     @Override
     public VoltTenant addTenant(VoltTenant newTenant) {
-        String json = tenantToJson(newTenant);
+        long providerServiceId = newTenant.providerService();
+        if (providerServiceId == -1) {
+            providerServiceId = xosProviderService;
+        }
+        VoltTenant tenantToCreate = VoltTenant.builder()
+                .withProviderService(providerServiceId)
+                .withServiceSpecificId(newTenant.serviceSpecificId())
+                .withVlanId(newTenant.vlanId())
+                .build();
+        String json = tenantToJson(tenantToCreate);
         postRest(json);
         return newTenant;
     }
@@ -268,16 +292,23 @@
     private void readComponentConfiguration(ComponentContext context) {
         Dictionary<?, ?> properties = context.getProperties();
 
-        String newXosServerAddress = Tools.get(properties, "XOSServerAddress");
+        String newXosServerAddress =
+                Tools.get(properties, XOS_SERVER_ADDRESS_PROPERTY_NAME);
         if (!isNullOrEmpty(newXosServerAddress)) {
             xosServerAddress = newXosServerAddress;
         }
 
-        String newXosServerPortString = Tools.get(properties, "XOSServerPort");
+        String newXosServerPortString =
+                Tools.get(properties, XOS_SERVER_PORT_PROPERTY_NAME);
         if (!isNullOrEmpty(newXosServerPortString)) {
             xosServerPort = Integer.parseInt(newXosServerPortString);
         }
-        log.info("XOS URL is now http://{}:{}", xosServerAddress, xosServerPort);
+
+        String newXosProviderServiceString =
+                Tools.get(properties, XOS_PROVIDER_SERVICE_PROPERTY_NAME);
+        if (!isNullOrEmpty(newXosProviderServiceString)) {
+            xosProviderService = Integer.parseInt(newXosProviderServiceString);
+        }
     }
 }
 
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
index e35a630..18b24e1 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.xosintegration;
 
-
 import com.google.common.base.MoreObjects;
 
 public final class VoltTenant {
@@ -26,6 +25,15 @@
     private final String serviceSpecificId;
     private final String vlanId;
 
+    /**
+     * Constructs a vOLT tenant object.
+     *
+     * @param humanReadableName name string
+     * @param id identifier for the tenant
+     * @param providerService provider service ID
+     * @param serviceSpecificId id for the user
+     * @param vlanId vlan id for the user
+     */
     private VoltTenant(String humanReadableName, long id, long providerService,
                        String serviceSpecificId, String vlanId) {
         this.humanReadableName = humanReadableName;
@@ -35,62 +43,131 @@
         this.vlanId = vlanId;
     }
 
+    /**
+     * Fetches a builder to make a tenant.
+     *
+     * @return tenant builder
+     */
     public static Builder builder() {
         return new Builder();
     }
 
+    /**
+     * Fetches the name of the tenant.
+     *
+     * @return human readable name
+     */
     public String humanReadableName() {
         return humanReadableName;
     }
 
+    /**
+     * Fetches the ID of the tenant object.
+     *
+     * @return ID of tenant object.
+     */
     public long id() {
         return id;
     }
 
+    /**
+     * Fetches the identifier for the provider service.
+     *
+     * @return provider service ID
+     */
     public long providerService() {
         return providerService;
     }
 
+    /**
+     * Fetches the server specific ID (user id).
+     *
+     * @return server specific ID
+     */
     public String serviceSpecificId() {
         return serviceSpecificId;
     }
 
+    /**
+     * Fetches the vlan id for this tenant.
+     *
+     * @return VLAN ID
+     */
     public String vlanId() {
         return vlanId;
     }
 
+    /**
+     * Builder class to allow callers to assemble tenants.
+     */
+
     public static final class Builder {
         private String humanReadableName = "unknown";
         private long id = 0;
-        private long providerService = 0;
+        private long providerService = -1;
         private String serviceSpecificId = "unknown";
         private String vlanId = "unknown";
 
+        /**
+         * Sets the name string for the tenant.
+         *
+         * @param humanReadableName name
+         * @return self
+         */
         public Builder withHumanReadableName(String humanReadableName) {
             this.humanReadableName = humanReadableName;
             return this;
         }
 
+        /**
+         * Sets the identifier for the tenant.
+         *
+         * @param id identifier for the tenant
+         * @return self
+         */
         public Builder withId(long id) {
             this.id = id;
             return this;
         }
 
-        public Builder withProviderService(long providerService) {
-            this.providerService = providerService;
-            return this;
-        }
-
+        /**
+         * Sets the server specific id (user id) for the tenant.
+         *
+         * @param serviceSpecificId server specific (user) id
+         * @return self
+         */
         public Builder withServiceSpecificId(String serviceSpecificId) {
             this.serviceSpecificId = serviceSpecificId;
             return this;
         }
 
+        /**
+         * Sets the VLAN ID for the tenant.
+         *
+         * @param vlanId VLAN ID
+         * @return self
+         */
         public Builder withVlanId(String vlanId) {
             this.vlanId = vlanId;
             return this;
         }
 
+        /**
+         * Sets the provider service ID.
+         *
+         * @param providerService provider service ID
+         * @return self
+         */
+        public Builder withProviderService(long providerService) {
+            this.providerService = providerService;
+            return this;
+        }
+
+        /**
+         * Constructs a VoltTenant from the assembled data.
+         *
+         * @return constructed tenant object
+         */
         public VoltTenant build() {
             return new VoltTenant(humanReadableName, id, providerService,
                     serviceSpecificId, vlanId);
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
index 76605df..611446d 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
@@ -27,17 +27,13 @@
 @Command(scope = "onos", name = "add-tenant",
         description = "Lists the inventory of VOLT tenants and their contents")
 public class VoltTenantsCreateCommand extends AbstractShellCommand {
-    @Argument(index = 0, name = "provider service",
-            description = "Tenant ID",
-            required = true, multiValued = false)
-    long providerService;
 
-    @Argument(index = 1, name = "service specific ID",
+    @Argument(index = 0, name = "service specific ID",
             description = "service specific ID",
             required = true, multiValued = false)
     String serviceSpecificId;
 
-    @Argument(index = 2, name = "vlan ID",
+    @Argument(index = 1, name = "vlan ID",
             description = "vlan ID",
             required = true, multiValued = false)
     String vlanId;
@@ -47,7 +43,6 @@
         VoltTenantService service = get(VoltTenantService.class);
 
         VoltTenant newTenant = VoltTenant.builder()
-                .withProviderService(providerService)
                 .withServiceSpecificId(serviceSpecificId)
                 .withVlanId(vlanId)
                 .build();
