diff --git a/mCordPortal/bs-config.js b/mCordPortal/bs-config.js
index dcf8ce3..f078e45 100644
--- a/mCordPortal/bs-config.js
+++ b/mCordPortal/bs-config.js
@@ -27,13 +27,16 @@
   target: conf.host || 'http://0.0.0.0:9999'
 });
 
+var onos_proxy = httpProxy.createProxyServer({
+  target: conf.onos_host || 'http://10.50.1.15:8181'
+});
+
 proxy.on('error', function(error, req, res) {
-  console.log('------------------------------------------------------');
-  // res.writeHead(500, {
-  //   'Content-Type': 'text/plain'
-  // });
   console.error('[Proxy]', error);
-  console.log('------------------------------------------------------');
+});
+
+onos_proxy.on('error', function(error, req, res) {
+  console.error('[ONOS Proxy]', error);
 });
 
 module.exports = {
@@ -68,6 +71,9 @@
         // console.log(`proxied: ${req.url}`, req.headers['x-csrftoken'], req.headers.cookie);
         proxy.web(req, res);
       }
+      else if(req.url.indexOf('/onos/') !== -1){
+        onos_proxy.web(req, res);
+      }
       else{
         next();
       }
diff --git a/mCordPortal/src/app/components/related-stats/related-stats.js b/mCordPortal/src/app/components/related-stats/related-stats.js
index 08bc813..48da617 100644
--- a/mCordPortal/src/app/components/related-stats/related-stats.js
+++ b/mCordPortal/src/app/components/related-stats/related-stats.js
@@ -36,7 +36,9 @@
           this.model.getStats()
           .then((stats) => {
             this.selectedStats = 'download_data';
-            this.stats = formatStats(stats.ProfileArray);
+            if(angular.isDefined(stats.ProfileArray)){
+              this.stats = formatStats(stats.ProfileArray);
+            }
           });
         };
 
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){
diff --git a/mCordPortal/src/app/view/home/e-node-map.js b/mCordPortal/src/app/view/home/e-node-map.js
index b3818e7..423a5c7 100644
--- a/mCordPortal/src/app/view/home/e-node-map.js
+++ b/mCordPortal/src/app/view/home/e-node-map.js
@@ -15,12 +15,13 @@
 
           Enodeb.query().$promise
           .then((enodes) => {
-            console.log('loaded enodes for map');
             this.enodes = enodes;
             bounds = new google.maps.LatLngBounds();
             enodes.forEach(node => {
-              const latlng = new google.maps.LatLng(node.GpsCoordinate.Latitude, node.GpsCoordinate.Longitude);
-              bounds.extend(latlng);
+              if(angular.isDefined(node.GpsCoordinate.Latitude) && angular.isDefined(node.GpsCoordinate.Longitude)){
+                const latlng = new google.maps.LatLng(node.GpsCoordinate.Latitude, node.GpsCoordinate.Longitude);
+                bounds.extend(latlng);
+              }
             });
             return NgMap.getMap();
           })
diff --git a/mCordPortal/src/app/view/home/e-node-map.tpl.html b/mCordPortal/src/app/view/home/e-node-map.tpl.html
index afe6735..2c1dd95 100644
--- a/mCordPortal/src/app/view/home/e-node-map.tpl.html
+++ b/mCordPortal/src/app/view/home/e-node-map.tpl.html
@@ -1,7 +1,7 @@
 <ng-map center="[0, 0]" map-type-control="false" street-view-control="false" zoom-control="false" scale-control="false">
   <marker 
-    ng-repeat="enode in vm.enodes" 
-    position="[{{enode.GpsCoordinate.Latitude}}, {{enode.GpsCoordinate.Longitude}}]" 
+    ng-repeat="enode in vm.enodes"
+    position="[{{enode.GpsCoordinate.Latitude}}, {{enode.GpsCoordinate.Longitude}}]"
     on-click="vm.showEnodeDetails(enode)"
     no-watcher="false"></marker>
 </ng-map>
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.js b/mCordPortal/src/app/view/profiles-details/profiles-details.js
index 124db00..4f03dcd 100644
--- a/mCordPortal/src/app/view/profiles-details/profiles-details.js
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.js
@@ -16,30 +16,170 @@
         controllerAs: 'vm',
         templateUrl: 'app/view/profiles-details/profiles-details.tpl.html',
         controller: function ($uibModal, $stateParams, Profile, _) {
-          Profile.get({id: $stateParams.id}).$promise
-          .then((profile) => {
-            this.profile = profile;
-            return $q.all([
-              profile.getImsis(),
-              profile.getEnodes()
-            ]);
-          })
-          .then(res => {
-            const [imsis, enodes] = res;
-            this.imsis = imsis;
-            this.enodes = enodes;
-          })
-          .catch(e => console.log(e));
+          this.isNew = true;
+          if($stateParams.id){
+            Profile.get({id: $stateParams.id}).$promise
+            .then((profile) => {
+              this.profile = profile;
+              this.isNew = false;
+              this.formConfig.actions[0].label = 'Update';
+              return $q.all([
+                profile.getImsis(),
+                profile.getEnodes()
+              ]);
+            })
+            .then(res => {
+              const [imsis, enodes] = res;
+              this.imsis = imsis;
+              this.enodes = enodes;
+            })
+            .catch(e => console.log(e));
+          }
+          else {
+            this.profile = new Profile();
+            this.imsis = [];
+            this.enodes = [];
+          }
+
+          const UD_Types = [
+            {id: 'RR', label: 'RR'},
+            {id: 'PF', label: 'PF'},
+            {id: 'MAXCI', label: 'MAXCI'}
+          ];
 
           this.formConfig = {
             exclude: ['IMSIRuleArray'],
             formName: 'updateProfiles',
+            fields: {
+              Name: {
+                type: 'string',
+                validator: {
+                  required: true
+                }
+              },
+              DlSchedType: {
+                type: 'select',
+                validator: {
+                  required: true
+                },
+                options: UD_Types
+              },
+              DlAllocRBRate: {
+                type: 'number',
+                validator: {
+                  required: true
+                }
+              },
+              UlSchedType: {
+                type: 'select',
+                validator: {
+                  required: true
+                },
+                options: UD_Types
+              },
+              UlAllocRBRate: {
+                type: 'number',
+                validator: {
+                  required: true
+                }
+              },
+              Start: {
+                type: 'date',
+                validator: {
+                  required: true
+                }
+              },
+              End: {
+                type: 'date',
+                validator: {
+                  required: true
+                }
+              },
+              AdmControl: {
+                type: 'select',
+                validator: {
+                  required: true
+                },
+                options: [
+                  {id: 0, label: 'All'},
+                  {id: 1, label: 'Voice Only'},
+                  {id: 2, label: 'Data Only'}
+                ]
+              },
+              CellIndividualOffset: {
+                type: 'number',
+                validator: {
+                  required: true
+                }
+              },
+              Handover: {
+                type: 'object',
+                properties: {
+                  A3offset: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  HysteresisA3: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5TriggerType: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5Thresh1Rsrp: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5Thresh1Rsrq: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5Thresh2Rsrp: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5Thresh2Rsrq: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  HysteresisA5: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                }
+              }
+            },
             actions: [
               {
-                label: 'Update',
+                label: 'Save',
                 icon: 'ok',
-                cb: (imsi) => {
-                  imsi.$save();
+                cb: (profile) => {
+                  if(this.isNew){
+                    Profile.save(profile).$promise
+                    .then((profile) => {
+                      // TODO save imsi and enodes
+                    });
+                  }
+                  else{
+                    profile.$save();
+                  }
                 },
                 class: 'primary-border'
               }
@@ -142,6 +282,7 @@
               controller: function ($uibModalInstance) {
                 this.modal    = $uibModalInstance;
                 this.callback = (imsi) => {
+                  // TODO call BE (if !this.isNew)
                   _this.imsis.push(imsi);
                 };
                 this.profile = _this.profile;
@@ -158,6 +299,7 @@
               controller: function ($uibModalInstance) {
                 this.modal    = $uibModalInstance;
                 this.callback = (enode) => {
+                  // TODO call BE (if !this.isNew)
                   _this.enodes.push(enode);
                 };
                 this.profile = _this.profile;
diff --git a/mCordPortal/src/app/view/profiles-list/profiles-list.tpl.html b/mCordPortal/src/app/view/profiles-list/profiles-list.tpl.html
index f1c17f6..b02b98b 100644
--- a/mCordPortal/src/app/view/profiles-list/profiles-list.tpl.html
+++ b/mCordPortal/src/app/view/profiles-list/profiles-list.tpl.html
@@ -1,3 +1,8 @@
 <div class="container-fluid">
+    <div class="row">
+        <div class="col-xs-12 text-right">
+            <a ui-sref="profile-details" class="btn btn-success">Add Profile</a>
+        </div>
+    </div>
     <xos-table config="vm.tableConfig" data="vm.profiles"></xos-table>
 </div>
\ No newline at end of file
