diff --git a/mCordPortal/env/local.js b/mCordPortal/env/local.js
index c256c05..33fefbd 100644
--- a/mCordPortal/env/local.js
+++ b/mCordPortal/env/local.js
@@ -7,5 +7,6 @@
 // (works only for local environment as both application are served on the same domain)
 
 module.exports = {
-  host: 'http://xos.dev:9999/'
+  host: 'http://xos.dev:9999/',
+  onos_host: 'http://10.50.1.15:8181'
 };
diff --git a/mCordPortal/src/app/components/add-enodeb/add-enodeb.js b/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
index 0b92cc0..0ce89f5 100644
--- a/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
+++ b/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
@@ -37,23 +37,18 @@
                 minlength: 10
               }
             },
-            GpsCoordinate: {
-              type: 'object',
-              properties: {
-                Latitude: {
-                  type: 'string',
-                  validators: {
-                    required: true
-                  }
-                },
-                Longitude: {
-                  type: 'string',
-                  validators: {
-                    required: true
-                  }
-                }
+            eNBId: {
+              type: 'number',
+              validators: {
+                required: true
               }
             },
+            IpAddr: {
+              type: 'string',
+              validators: {
+                required: true
+              }
+            }
           },
           actions: [
             {
@@ -63,6 +58,7 @@
                 // TODO validate form (wait for arpit to commit)
                 Enodeb.save(enode).$promise
                 .then(() => {
+                  // TODO add to list
                   this.modal.close();
                 })
                 .catch(e => {
diff --git a/mCordPortal/src/app/components/add-imsi/add-imsi.js b/mCordPortal/src/app/components/add-imsi/add-imsi.js
index 5308a5c..34d7733 100644
--- a/mCordPortal/src/app/components/add-imsi/add-imsi.js
+++ b/mCordPortal/src/app/components/add-imsi/add-imsi.js
@@ -30,33 +30,7 @@
         this.config = {
           formName: 'createImsi',
           fields: {
-            Enodeb: {
-              type: 'select',
-              validators: {
-                required: true
-              },
-              options: [
-                {
-                  id: 591,
-                  label: '591'
-                },
-                {
-                  id: 592,
-                  label: '592'
-                },
-                {
-                  id: 593,
-                  label: '593'
-                }
-              ]
-            },
-            DlMeasBitRate: {
-              type: 'number',
-              validators: {
-                required: true
-              }
-            },
-            UlMeasBitRate: {
+            IMSI: {
               type: 'number',
               validators: {
                 required: true
@@ -71,6 +45,7 @@
                 // TODO validate form (wait for arpit to commit)
                 Imsi.save(imsi).$promise
                 .then(() => {
+                  // TODO add to list
                   this.modal.close();
                 })
                 .catch(e => {
@@ -89,17 +64,6 @@
             }
           ]
         };
-
-        // TODO use this once merged Arpit PR
-        Enodeb.query().$promise
-        .then(enodes => {
-          this.config.fields.Enodeb.options = _.reduce(enodes, (list, enode) => {
-            return list.concat([{
-              id: enode.eNBId,
-              label: enode.eNBId.toString()
-            }]);
-          }, []);
-        })
       }
     };
   });
diff --git a/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js b/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
index 15569d0..a4c291e 100644
--- a/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
+++ b/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
@@ -30,10 +30,16 @@
 
         Profile.query().$promise
         .then((profiles) => {
+          profiles = _.filter(profiles, p => {
+            console.log(p.Name, p.Name.indexOf('Default'), p.Name.indexOf('Default') === -1);
+            return p.Name.indexOf('Default') === -1
+          });
+          console.log(profiles);
           this.profiles = profiles;
           return this.item.getProfiles();
         })
         .then((itemProfiles) => {
+          console.log(this.profiles, itemProfiles);
           this.profiles = _.differenceBy(this.profiles, itemProfiles, 'Name');
         });
 
diff --git a/mCordPortal/src/app/services/rest/enodeb.js b/mCordPortal/src/app/services/rest/enodeb.js
index aa28702..d7d0f7c 100644
--- a/mCordPortal/src/app/services/rest/enodeb.js
+++ b/mCordPortal/src/app/services/rest/enodeb.js
@@ -2,7 +2,7 @@
   angular.module('mCord')
   .service('Enodeb', function($injector, $resource, $q, $http, baseUrl){
     const r = $resource(`${baseUrl}onos/progran/enodeb/:id`, {id: '@eNBId'}, {
-      save: {method: 'PUT'},
+      //save: {method: 'PUT'},
       query: {
         array: false,
         interceptor: {
@@ -23,6 +23,20 @@
       }
     });
 
+    // Override the default save method,
+    // Name is the key, so the $resource will try to update
+    r.save = function(data){
+      const d = $q.defer();
+      $http.post(`${baseUrl}onos/progran/enodeb/`, data)
+        .then(res => {
+          d.resolve(res.data);
+        })
+        .catch(err => {
+          d.reject(err)
+        });
+      return {$promise: d.promise};
+    };
+
     r.prototype.getProfiles = function(){
       const d = $q.defer();
 
@@ -37,6 +51,20 @@
       return d.promise;
     };
 
+    r.prototype.addProfile = function(data){
+      const d = $q.defer();
+      data = {'ProfileArray': [data.Name]};
+      $http.post(`${baseUrl}onos/progran/enodeb/${this.eNBId}/profile`, data)
+        .then(res => {
+          d.resolve(res.data);
+        })
+        .catch(err => {
+          d.reject(err)
+        });
+
+      return d.promise;
+    };
+
     r.prototype.getStats = function(){
       const d = $q.defer();
       $http.get(`${baseUrl}onos/progran/stats/enodeb/${this.eNBId}/10`)
diff --git a/mCordPortal/src/app/services/rest/imsi.js b/mCordPortal/src/app/services/rest/imsi.js
index 2359fe1..93bc88d 100644
--- a/mCordPortal/src/app/services/rest/imsi.js
+++ b/mCordPortal/src/app/services/rest/imsi.js
@@ -23,11 +23,40 @@
         }
       });
 
+      // Override the default save method,
+      // Name is the key, so the $resource will try to update
+      r.save = function(data){
+        const d = $q.defer();
+        $http.post(`${baseUrl}onos/progran/imsi/`, data)
+          .then(res => {
+            d.resolve(res.data);
+          })
+          .catch(err => {
+            d.reject(err)
+          });
+        return {$promise: d.promise};
+      };
+
       r.prototype.getProfiles = function(){
         const d = $q.defer();
 
         $http.get(`${baseUrl}onos/progran/imsi/${this.IMSI}/profile`)
           .then(res => {
+            d.resolve(res.data.ProfileArray);
+          })
+          .catch(err => {
+            d.reject(err)
+          });
+
+        return d.promise;
+      };
+
+      // this is under profile
+      r.prototype.addProfile = function(data){
+        const d = $q.defer();
+        let body = {'IMSIRuleArray': [this.IMSI]};
+        $http.post(`${baseUrl}onos/progran/profile/${data.Name}/imsi`, body)
+          .then(res => {
             d.resolve(res.data);
           })
           .catch(err => {
diff --git a/mCordPortal/src/app/services/rest/profiles.js b/mCordPortal/src/app/services/rest/profiles.js
index 6582784..5a7d435 100644
--- a/mCordPortal/src/app/services/rest/profiles.js
+++ b/mCordPortal/src/app/services/rest/profiles.js
@@ -2,7 +2,12 @@
   angular.module('mCord')
   .service('Profile', function($injector, $resource, $q, $http, baseUrl){
     const r = $resource(`${baseUrl}onos/progran/profile/:id`, {id: '@Name'}, {
-      save: {method: 'PUT'},
+      save: {
+        method: 'PUT'
+      },
+      $save: {
+        method: 'PUT'
+      },
       query: {
         array: false,
         interceptor: {
@@ -23,6 +28,20 @@
       }
     });
 
+    // Override the default save method,
+    // Name is the key, so the $resource will try to update
+    r.save = function(data){
+      const d = $q.defer();
+      $http.post(`${baseUrl}onos/progran/profile/`, data)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+      return {$promise: d.promise};
+    };
+
     r.prototype.getImsis = function(){
       const d = $q.defer();
 
@@ -37,6 +56,21 @@
       return d.promise;
     };
 
+    // this is under profile
+    r.prototype.addImsi = function(data){
+      const d = $q.defer();
+      let body = {'IMSIRuleArray': [data.IMSI]};
+      $http.post(`${baseUrl}onos/progran/profile/${this.Name}/imsi`, body)
+        .then(res => {
+          d.resolve(res.data);
+        })
+        .catch(err => {
+          d.reject(err)
+        });
+
+      return d.promise;
+    };
+
     r.prototype.deleteImsis = function(){
       const d = $q.defer();
 
@@ -96,7 +130,7 @@
     r.prototype.deleteEnode = function(id){
       const d = $q.defer();
 
-      $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/enodeb/${id}`)
+      $http.delete(`${baseUrl}onos/progran/enodeb/${id}/profile/${this.Name}`)
       .then(res => {
         d.resolve(res.data);
       })
diff --git a/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html b/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
index 55abba9..768d2e4 100644
--- a/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
+++ b/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
@@ -19,7 +19,7 @@
             </div>
             <div class="col-xs-9">
               <related-profiles model="vm.enode" config="{showHeader: false, colors: vm.colors}"></related-profiles>
-              <div class="row">
+              <div class="row" ng-show="vm.enode">
                 <div class="col-xs-12 text-right">
                   <a ng-click="vm.addProfile()" class="btn btn-primary-border">Add Profile</a>
                   <a href="" class="btn btn-primary-border">Create Profile</a>
diff --git a/mCordPortal/src/app/view/enode-details/enode-details.js b/mCordPortal/src/app/view/enode-details/enode-details.js
index a187893..717a8eb 100644
--- a/mCordPortal/src/app/view/enode-details/enode-details.js
+++ b/mCordPortal/src/app/view/enode-details/enode-details.js
@@ -69,9 +69,12 @@
               controller: function ($uibModalInstance) {
                 this.modal    = $uibModalInstance;
                 this.callback = (profile) => {
-                  $scope.$broadcast('profile.add', {targetId: _this.enode.eNBId, profile: profile});
-                  _this.profiles.push(profile);
-                  createChartData(_this.profiles);
+                  this.eNodeB.addProfile(profile)
+                  .then(p => {
+                    $scope.$broadcast('profile.add', {targetId: _this.enode.eNBId, profile: profile});
+                    _this.profiles.push(profile);
+                    createChartData(_this.profiles);
+                  });
                 };
                 this.eNodeB = _this.enode;
               }
diff --git a/mCordPortal/src/app/view/imsi-details/imsi-details.js b/mCordPortal/src/app/view/imsi-details/imsi-details.js
index 99204c4..683574f 100644
--- a/mCordPortal/src/app/view/imsi-details/imsi-details.js
+++ b/mCordPortal/src/app/view/imsi-details/imsi-details.js
@@ -43,8 +43,11 @@
               controller: function ($uibModalInstance) {
                 this.modal    = $uibModalInstance;
                 this.callback = (profile) => {
-                  console.log(_this.imsi);
-                  $scope.$broadcast('profile.add', {targetId: _this.imsi.IMSI, profile: profile});
+                  this.imsi.addProfile(profile)
+                  .then(p => {
+                    _this.profiles.push(profile);
+                    $scope.$broadcast('profile.add', {targetId: _this.imsi.IMSI, profile: profile});
+                  });
                 };
                 this.imsi = _this.imsi;
               }
diff --git a/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html b/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
index f6b0947..5633bcd 100644
--- a/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
+++ b/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
@@ -14,11 +14,11 @@
     <div class="col-xs-12">
       <related-profiles model="vm.imsi" config="{showHeader: false, delete: true}"></related-profiles>
     </div>
-    <div class="col-xs-12 text-right">
+    <div class="col-xs-12 text-right" ng-show="vm.imsi">
       <a ng-click="vm.addProfile()" href="" class="btn btn-primary-border">
         Add Profile
       </a>
-      <a href="" class="btn btn-primary-border">
+      <a href="#/profile/" class="btn btn-primary-border">
         Create Profile
       </a>
     </div>
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.js b/mCordPortal/src/app/view/profiles-details/profiles-details.js
index 4f03dcd..b6d73a7 100644
--- a/mCordPortal/src/app/view/profiles-details/profiles-details.js
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.js
@@ -121,13 +121,19 @@
                       required: true
                     }
                   },
-                  HysteresisA3: {
+                  A3Hysteresis: {
                     type: 'number',
                     validator: {
                       required: true
                     }
                   },
-                  A5TriggerType: {
+                  A3TriggerQuantity: {
+                    type: 'number',
+                    validator: {
+                      required: true
+                    }
+                  },
+                  A5TriggerQuantity: {
                     type: 'number',
                     validator: {
                       required: true
@@ -157,7 +163,7 @@
                       required: true
                     }
                   },
-                  HysteresisA5: {
+                  A5Hysteresis: {
                     type: 'number',
                     validator: {
                       required: true
@@ -175,6 +181,7 @@
                     Profile.save(profile).$promise
                     .then((profile) => {
                       // TODO save imsi and enodes
+                      // and redirect to profile list
                     });
                   }
                   else{
@@ -257,7 +264,7 @@
                 icon: 'remove',
                 color: 'red',
                 cb: (enode) => {
-                  this.profile.deleteImsi(enode.eNBId)
+                  this.profile.deleteEnode(enode.eNBId)
                   .then(() => {
                     _.remove(this.enodes, i =>i.eNBId === enode.eNBId);
                   });
@@ -282,8 +289,10 @@
               controller: function ($uibModalInstance) {
                 this.modal    = $uibModalInstance;
                 this.callback = (imsi) => {
-                  // TODO call BE (if !this.isNew)
-                  _this.imsis.push(imsi);
+                  this.profile.addImsi(imsi)
+                  .then(i => {
+                    _this.imsis.push(imsi);
+                  })
                 };
                 this.profile = _this.profile;
               }
