diff --git a/gui/ngXosViews/serviceTopology/spec/sample.test.js b/gui/ngXosViews/serviceTopology/spec/sample.test.js
index 4ffec78..8b490e7 100644
--- a/gui/ngXosViews/serviceTopology/spec/sample.test.js
+++ b/gui/ngXosViews/serviceTopology/spec/sample.test.js
@@ -1,37 +1,126 @@
 'use strict';
 
-describe('The User List', () => {
+describe('The Service Relation Service', () => {
   
-  var scope, element, isolatedScope, httpBackend;
+  var Service;
 
   beforeEach(module('xos.serviceTopology'));
   beforeEach(module('templates'));
 
-  beforeEach(inject(function($httpBackend, $compile, $rootScope){
-    
-    httpBackend = $httpBackend;
-    // Setting up mock request
-    $httpBackend.expectGET('/xos/users/?no_hyperlinks=1').respond([
-      {
-        email: 'teo@onlab.us',
-        firstname: 'Matteo',
-        lastname: 'Scandolo' 
-      }
-    ]);
-  
-    scope = $rootScope.$new();
-    element = angular.element('<users-list></users-list>');
-    $compile(element)(scope);
-    scope.$digest();
-    isolatedScope = element.isolateScope().vm;
+  // inject the cartService
+  beforeEach(inject(function (_ServiceRelation_) {
+    // The injector unwraps the underscores (_) from around the parameter names when matching
+    Service = _ServiceRelation_;
   }));
 
-  it('should load 1 users', () => {
-    httpBackend.flush();
-    expect(isolatedScope.users.length).toBe(1);
-    expect(isolatedScope.users[0].email).toEqual('teo@onlab.us');
-    expect(isolatedScope.users[0].firstname).toEqual('Matteo');
-    expect(isolatedScope.users[0].lastname).toEqual('Scandolo');
+  describe('given a service', () => {
+
+    const levelRelations = [
+      {
+        subscriber_service: 1
+      },
+      {
+        subscriber_service: 1
+      },
+      {
+        subscriber_service: 2
+      }
+    ];
+
+    it('should find all involved relations', () => {
+      expect(typeof Service.findLevelRelation).toBe('function');
+      let levelRelation = Service.findLevelRelation(levelRelations, 1);
+      expect(levelRelation.length).toBe(2);
+    });
   });
 
+  describe('given a set of relation', () => {
+
+    const levelRelations = [
+      {
+        provider_service: 1
+      },
+      {
+        provider_service: 2
+      }
+    ];
+
+    const services = [
+      {
+        id: 1
+      },
+      {
+        id: 2
+      },
+      {
+        id: 3
+      }
+    ];
+
+    it('should find all the provider service', () => {
+      expect(typeof Service.findLevelServices).toBe('function');
+      let levelServices = Service.findLevelServices(levelRelations, services);
+      expect(levelServices.length).toBe(2);
+    });
+  });
+
+  describe('given a list of services and a list of relations', () => {
+
+    const services = [
+      {
+        id: 1,
+        humanReadableName: 'service-1'
+      },
+      {
+        id: 2,
+        humanReadableName: 'service-2'
+      },
+      {
+        id: 3,
+        humanReadableName: 'service-3'
+      },
+      {
+        id: 4,
+        humanReadableName: 'service-4'
+      }
+    ];
+
+    const relations = [
+      {
+        provider_service: 2,
+        subscriber_service: 1,
+      },
+      {
+        provider_service: 3,
+        subscriber_service: 2
+      },
+      {
+        provider_service: 4,
+        subscriber_service: 1
+      },
+      {
+        subscriber_root: 1,
+        provider_service: 1
+      }
+    ];
+
+    it('should return a tree ordered by relations', () => {
+      let tree = Service.buildServiceTree(services, relations);
+
+      expect(tree.name).toBe('fakeSubs');
+      expect(tree.parent).toBeNull();
+      expect(tree.children.length).toBe(1);
+
+      expect(tree.children[0].name).toBe('service-1');
+      expect(tree.children[0].parent).toBeNull();
+      expect(tree.children[0].children.length).toBe(2);
+
+      expect(tree.children[0].children[0].name).toBe('service-2');
+      expect(tree.children[0].children[0].children[0].name).toBe('service-3');
+
+      expect(tree.children[0].children[1].name).toBe('service-4');
+    });
+  });
+
+
 });
\ No newline at end of file
diff --git a/gui/ngXosViews/serviceTopology/src/js/services.js b/gui/ngXosViews/serviceTopology/src/js/services.js
index a39a1a6..d6d2fa8 100644
--- a/gui/ngXosViews/serviceTopology/src/js/services.js
+++ b/gui/ngXosViews/serviceTopology/src/js/services.js
@@ -14,6 +14,9 @@
   .service('Instances', function($resource){
     return $resource('/xos/instances', {id: '@id'});
   })
+  .service('Subscribers', function($resource){
+    return $resource('/xos/subscribers', {id: '@id'});
+  })
   .service('ServiceRelation', function($q, _, lodash, Services, Tenant){
 
     // find all the relation defined for a given root
@@ -35,8 +38,6 @@
 
     const buildLevel = (tenants, services, rootService, parentName = null) => {
 
-      console.log(rootService);
-
       const tree = {
         name: rootService.humanReadableName,
         parent: parentName,
@@ -64,20 +65,26 @@
       return tree;
     };
 
-    const buildServiceTree = (services, tenants) => {
+    const buildServiceTree = (services, tenants, subscriber = {id:1, name: 'fakeSubs'}) => {
 
       // find the root service
       // it is the one attached to subsriber_root
       // as now we have only one root so this can work
-      const rootServiceId = lodash.find(tenants, {subscriber_root: 1}).provider_service;
+      const rootServiceId = lodash.find(tenants, {subscriber_root: subscriber.id}).provider_service;
       const rootService = lodash.find(services, {id: rootServiceId});
 
       const serviceTree = buildLevel(tenants, services, rootService);
 
-      return serviceTree;
+      return {
+        name: subscriber.name,
+        parent: null,
+        children: [serviceTree]
+      };
+
+      //return serviceTree;
     };
 
-    this.get = () => {
+    const get = (subscriber) => {
       var deferred = $q.defer();
       var services, tenants;
       Services.query().$promise
@@ -87,7 +94,7 @@
       })
       .then((res) => {
         tenants = res;
-        deferred.resolve(buildServiceTree(services, tenants));
+        deferred.resolve(buildServiceTree(services, tenants, subscriber));
       })
       .catch((e) => {
         throw new Error(e);
@@ -95,6 +102,12 @@
 
       return deferred.promise;
     }
+
+    this.get = get;
+    this.buildLevel = buildLevel;
+    this.buildServiceTree = buildServiceTree;
+    this.findLevelRelation = findLevelRelation;
+    this.findLevelServices = findLevelServices;
   });
 
 }());
\ No newline at end of file
diff --git a/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js b/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
index 0df7bd6..a333adf 100644
--- a/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
+++ b/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
@@ -9,7 +9,7 @@
       bindToController: true,
       controllerAs: 'vm',
       templateUrl: 'templates/topology_canvas.tpl.html',
-      controller: function($element, $window, d3, serviceTopologyConfig, ServiceRelation, Slice, Instances){
+      controller: function($element, $window, d3, serviceTopologyConfig, ServiceRelation, Slice, Instances, Subscribers){
 
         this.instances = [];
         this.slices = [];
@@ -200,6 +200,10 @@
             .duration(duration)
             .attr('r', 30);
 
+          if(!d.service){
+            return;
+          }
+
           _this.selectedService = {
             id: d.id,
             name: d.name
@@ -248,7 +252,11 @@
           })
         };
 
-        ServiceRelation.get()
+        Subscribers.query().$promise
+        .then((subscribers) => {
+          this.subscribers = subscribers;
+          return ServiceRelation.get(subscribers[0])
+        })
         .then((tree) => {
           draw(tree);
         });
diff --git a/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html b/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html
deleted file mode 100644
index 2983ad0..0000000
--- a/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="row">
-  <h1>Users List</h1>
-  <p>This is only an example view.</p>
-</div>
-<div class="row">
-  <div class="span4">Email</div>
-  <div class="span4">First Name</div>
-  <div class="span4">Last Name</div>
-</div>  
-<div class="row" ng-repeat="user in vm.users">
-  <div class="span4">{{user.email}}</div>
-  <div class="span4">{{user.firstname}}</div>
-  <div class="span4">{{user.lastname}}</div>
-</div>  
\ No newline at end of file
