diff --git a/mCordPortal/src/app/services/config.js b/mCordPortal/src/app/services/config.js
index 9bba19f..ae7adbd 100644
--- a/mCordPortal/src/app/services/config.js
+++ b/mCordPortal/src/app/services/config.js
@@ -1,9 +1,10 @@
 (function () {
   angular.module('mCord')
     .value('baseUrl', (function(){
-      if (process.env.MOCK === 'true') {
+      if (process.env.MOCK === 'apiary') {
         return 'http://private-c85424-progranrestapi.apiary-mock.com/';
-      } else {
+      }
+      else {
         return '';
       }
     })())
diff --git a/mCordPortal/src/app/services/rest/enodeb.js b/mCordPortal/src/app/services/rest/enodeb.js
index d1b9e50..aa28702 100644
--- a/mCordPortal/src/app/services/rest/enodeb.js
+++ b/mCordPortal/src/app/services/rest/enodeb.js
@@ -1,14 +1,32 @@
 (function () {
   angular.module('mCord')
-  .service('Enodeb', function($resource, $q, $http, baseUrl){
-    const r = $resource(`${baseUrl}api/enodeb/:id`, {id: '@eNBId'}, {
-      save: {method: 'PUT'}
+  .service('Enodeb', function($injector, $resource, $q, $http, baseUrl){
+    const r = $resource(`${baseUrl}onos/progran/enodeb/:id`, {id: '@eNBId'}, {
+      save: {method: 'PUT'},
+      query: {
+        array: false,
+        interceptor: {
+          response: function(res){
+            const Enodeb = $injector.get('Enodeb');
+            return res.data.EnodeBArray.map(n => new Enodeb(n));
+          }
+        }
+      },
+      get: {
+        array: false,
+        interceptor: {
+          response: function(res){
+            const Enodeb = $injector.get('Enodeb');
+            return new Enodeb(res.data.EnodeBArray[0]);
+          }
+        }
+      }
     });
 
     r.prototype.getProfiles = function(){
       const d = $q.defer();
 
-      $http.get(`${baseUrl}api/enodeb/${this.eNBId}/profile`)
+      $http.get(`${baseUrl}onos/progran/enodeb/${this.eNBId}/profile`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -21,8 +39,7 @@
 
     r.prototype.getStats = function(){
       const d = $q.defer();
-
-      $http.get(`${baseUrl}api/stats/enodeb/${this.eNBId}/10`)
+      $http.get(`${baseUrl}onos/progran/stats/enodeb/${this.eNBId}/10`)
       .then(res => {
         d.resolve(res.data);
       })
diff --git a/mCordPortal/src/app/services/rest/imsi.js b/mCordPortal/src/app/services/rest/imsi.js
index 8e93aac..2359fe1 100644
--- a/mCordPortal/src/app/services/rest/imsi.js
+++ b/mCordPortal/src/app/services/rest/imsi.js
@@ -1,14 +1,32 @@
 (function () {
   angular.module('mCord')
-    .service('Imsi', function($resource, $q, $http, baseUrl){
-      const r = $resource(`${baseUrl}api/imsi/:id`, {id: '@IMSI'}, {
-        save: {method: 'PUT'}
+    .service('Imsi', function($injector, $resource, $q, $http, baseUrl){
+      const r = $resource(`${baseUrl}onos/progran/imsi/:id`, {id: '@IMSI'}, {
+        save: {method: 'PUT'},
+        query: {
+          array: false,
+          interceptor: {
+            response: function(res){
+              const Imsi = $injector.get('Imsi');
+              return res.data.ImsiArray.map(i => new Imsi(i));
+            }
+          }
+        },
+        get: {
+          array: false,
+          interceptor: {
+            response: function(res){
+              const Imsi = $injector.get('Imsi');
+              return new Imsi(res.data.ImsiArray[0]);
+            }
+          }
+        }
       });
 
       r.prototype.getProfiles = function(){
         const d = $q.defer();
 
-        $http.get(`${baseUrl}api/imsi/${this.IMSI}/profile`)
+        $http.get(`${baseUrl}onos/progran/imsi/${this.IMSI}/profile`)
           .then(res => {
             d.resolve(res.data);
           })
@@ -21,7 +39,7 @@
 
       r.prototype.deleteProfile = function(id){
         const d = $q.defer();
-        $http.delete(`${baseUrl}api/imsi/${this.IMSI}/profile/${id}`)
+        $http.delete(`${baseUrl}onos/progran/imsi/${this.IMSI}/profile/${id}`)
           .then(res => {
             d.resolve(res.data);
           })
diff --git a/mCordPortal/src/app/services/rest/profiles.js b/mCordPortal/src/app/services/rest/profiles.js
index a6e0d3c..6582784 100644
--- a/mCordPortal/src/app/services/rest/profiles.js
+++ b/mCordPortal/src/app/services/rest/profiles.js
@@ -1,12 +1,32 @@
 (function () {
   angular.module('mCord')
-  .service('Profile', function($resource, $q, $http, baseUrl){
-    const r = $resource(`${baseUrl}api/profile/:id`, {id: '@Name'});
+  .service('Profile', function($injector, $resource, $q, $http, baseUrl){
+    const r = $resource(`${baseUrl}onos/progran/profile/:id`, {id: '@Name'}, {
+      save: {method: 'PUT'},
+      query: {
+        array: false,
+        interceptor: {
+          response: function(res){
+            const Profile = $injector.get('Profile');
+            return res.data.ProfileArray.map(p => new Profile(p));
+          }
+        }
+      },
+      get: {
+        array: false,
+        interceptor: {
+          response: function(res){
+            const Profile = $injector.get('Profile');
+            return new Profile(res.data.ProfileArray[0]);
+          }
+        }
+      }
+    });
 
     r.prototype.getImsis = function(){
       const d = $q.defer();
 
-      $http.get(`${baseUrl}api/profile/${this.Name}/imsi`)
+      $http.get(`${baseUrl}onos/progran/profile/${this.Name}/imsi`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -20,7 +40,7 @@
     r.prototype.deleteImsis = function(){
       const d = $q.defer();
 
-      $http.delete(`${baseUrl}api/profile/${this.Name}/imsi`)
+      $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/imsi`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -34,7 +54,7 @@
     r.prototype.deleteImsi = function(id){
       const d = $q.defer();
 
-      $http.delete(`${baseUrl}api/profile/${this.Name}/imsi/${id}`)
+      $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/imsi/${id}`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -48,7 +68,7 @@
     r.prototype.getEnodes = function(){
       const d = $q.defer();
 
-      $http.get(`${baseUrl}api/profile/${this.Name}/enodeb`)
+      $http.get(`${baseUrl}onos/progran/profile/${this.Name}/enodeb`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -62,7 +82,7 @@
     r.prototype.deleteEnodes = function(){
       const d = $q.defer();
 
-      $http.delete(`${baseUrl}api/profile/${this.Name}/enodeb`)
+      $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/enodeb`)
       .then(res => {
         d.resolve(res.data);
       })
@@ -76,7 +96,7 @@
     r.prototype.deleteEnode = function(id){
       const d = $q.defer();
 
-      $http.delete(`${baseUrl}api/profile/${this.Name}/enodeb/${id}`)
+      $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/enodeb/${id}`)
       .then(res => {
         d.resolve(res.data);
       })
diff --git a/mCordPortal/src/app/services/users.js b/mCordPortal/src/app/services/users.js
index ebce988..5d4866d 100644
--- a/mCordPortal/src/app/services/users.js
+++ b/mCordPortal/src/app/services/users.js
@@ -58,8 +58,9 @@
       .then(function(subscribers){
         // subscribers are an array because the way Django perform query
         // but one user is related to only one subscriber
-
-        $cookies.put('subscriberId', subscribers.data[0].id);
+        if(subscribers.data[0]){
+          $cookies.put('subscriberId', subscribers.data[0].id);
+        }
         deferred.resolve(user);
       })
       .catch(function(e){
