diff --git a/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.html b/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.html
new file mode 100644
index 0000000..efd65e0
--- /dev/null
+++ b/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.html
@@ -0,0 +1,6 @@
+<div class="modal-header">
+    <h3 class="modal-title">Add Imsi</h3>
+</div>
+<div class="modal-body">
+    <xos-table data="vm.enodes" config="vm.config"></xos-table>
+</div>
\ No newline at end of file
diff --git a/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.js b/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.js
new file mode 100644
index 0000000..6d40929
--- /dev/null
+++ b/mCordPortal/src/app/components/add-enode-to-item/add-enode-to-item.js
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+angular.module('mCord')
+  .directive('addEnodeToItem', function () {
+    return {
+      restrict: 'E',
+      templateUrl: 'app/components/add-enode-to-item/add-enode-to-item.html',
+      scope: {
+        modal: '=',
+        cb: '=',
+        item: '='
+      },
+      bindToController: true,
+      controllerAs: 'vm',
+      controller: function(Enodeb){
+
+        Enodeb.query().$promise
+        .then((enodes) => {
+          this.enodes = enodes;
+          return this.item.getEnodes();
+        })
+        .then((itemEnodes) => {
+          console.log(itemEnodes, this.enodes);
+          this.enodes = _.differenceBy(this.enodes, itemEnodes, 'eNBId');
+        });
+
+        this.config = {
+          columns: [
+            {
+              label: '#',
+              prop: 'eNBId',
+              link: item => `#/enode/${item.eNBId}`
+            },
+            {
+              label: 'Ip Address',
+              prop: 'IpAddr'
+            },
+            {
+              label: 'Description',
+              prop: 'Description'
+            },
+            {
+              label: 'Status',
+              prop: 'Status',
+              type: 'boolean'
+            }
+          ],
+          actions: [
+            {
+              label: 'Add',
+              icon: 'plus',
+              cb: (enode) => {
+                _.remove(this.enodes, p => p.eNBId === enode.eNBId);
+                this.cb(enode);
+              },
+            }
+          ],
+          filter: 'field',
+          order: true
+        }
+      }
+    };
+  });
diff --git a/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.html b/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.html
new file mode 100644
index 0000000..7bbb358
--- /dev/null
+++ b/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.html
@@ -0,0 +1,6 @@
+<div class="modal-header">
+    <h3 class="modal-title">Add Imsi</h3>
+</div>
+<div class="modal-body">
+    <xos-table data="vm.imsis" config="vm.config"></xos-table>
+</div>
\ No newline at end of file
diff --git a/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.js b/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.js
new file mode 100644
index 0000000..4236ca9
--- /dev/null
+++ b/mCordPortal/src/app/components/add-imsi-to-item/add-imsi-to-item.js
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+angular.module('mCord')
+  .directive('addImsiToItem', function () {
+    return {
+      restrict: 'E',
+      templateUrl: 'app/components/add-imsi-to-item/add-imsi-to-item.html',
+      scope: {
+        modal: '=',
+        cb: '=',
+        item: '='
+      },
+      bindToController: true,
+      controllerAs: 'vm',
+      controller: function(Imsi){
+
+        Imsi.query().$promise
+        .then((imsis) => {
+          this.imsis = imsis;
+          return this.item.getImsis();
+        })
+        .then((itemImsi) => {
+          console.log(itemImsi, this.imsis);
+          this.imsis = _.differenceBy(this.imsis, itemImsi, 'IMSI');
+        });
+
+        this.config = {
+          columns: [
+            {
+              label: '#',
+              prop: 'IMSI',
+              link: item => `#/imsi/${item.IMSI}`
+            },
+            {
+              label: 'Enodeb',
+              prop: 'Enodeb'
+            },
+            {
+              label: 'DlMeasBitRate',
+              prop: 'DlMeasBitRate'
+            },
+            {
+              label: 'UlMeasBitRate',
+              prop: 'UlMeasBitRate'
+            },
+            {
+              label: 'Status',
+              prop: 'UeStatus',
+              type: 'boolean'
+            }
+          ],
+          actions: [
+            {
+              label: 'Add',
+              icon: 'plus',
+              cb: (imsi) => {
+                _.remove(this.imsis, p => p.IMSI === imsi.IMSI);
+                this.cb(imsi);
+              },
+            }
+          ],
+          filter: 'field',
+          order: true
+        }
+      }
+    };
+  });
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 17f0504..15569d0 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,7 +30,6 @@
 
         Profile.query().$promise
         .then((profiles) => {
-          // TODO diff all profile from item.getProfiles
           this.profiles = profiles;
           return this.item.getProfiles();
         })
diff --git a/mCordPortal/src/app/services/rest/enodeb.js b/mCordPortal/src/app/services/rest/enodeb.js
index 9ab289c..d1b9e50 100644
--- a/mCordPortal/src/app/services/rest/enodeb.js
+++ b/mCordPortal/src/app/services/rest/enodeb.js
@@ -1,7 +1,7 @@
 (function () {
   angular.module('mCord')
   .service('Enodeb', function($resource, $q, $http, baseUrl){
-    const r = $resource(`${baseUrl}api/enodeb/:id`, {id: '@id'}, {
+    const r = $resource(`${baseUrl}api/enodeb/:id`, {id: '@eNBId'}, {
       save: {method: 'PUT'}
     });
 
diff --git a/mCordPortal/src/app/services/rest/imsi.js b/mCordPortal/src/app/services/rest/imsi.js
index 16f4f19..8e93aac 100644
--- a/mCordPortal/src/app/services/rest/imsi.js
+++ b/mCordPortal/src/app/services/rest/imsi.js
@@ -1,7 +1,7 @@
 (function () {
   angular.module('mCord')
     .service('Imsi', function($resource, $q, $http, baseUrl){
-      const r = $resource(`${baseUrl}api/imsi/:id`, {id: '@id'}, {
+      const r = $resource(`${baseUrl}api/imsi/:id`, {id: '@IMSI'}, {
         save: {method: 'PUT'}
       });
 
diff --git a/mCordPortal/src/app/services/rest/profiles.js b/mCordPortal/src/app/services/rest/profiles.js
index ab9fca9..a6e0d3c 100644
--- a/mCordPortal/src/app/services/rest/profiles.js
+++ b/mCordPortal/src/app/services/rest/profiles.js
@@ -1,6 +1,92 @@
 (function () {
   angular.module('mCord')
-  .service('Profile', function($resource, baseUrl){
-    return $resource(`${baseUrl}api/profile/:id`, {id: '@id'});
+  .service('Profile', function($resource, $q, $http, baseUrl){
+    const r = $resource(`${baseUrl}api/profile/:id`, {id: '@Name'});
+
+    r.prototype.getImsis = function(){
+      const d = $q.defer();
+
+      $http.get(`${baseUrl}api/profile/${this.Name}/imsi`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    r.prototype.deleteImsis = function(){
+      const d = $q.defer();
+
+      $http.delete(`${baseUrl}api/profile/${this.Name}/imsi`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    r.prototype.deleteImsi = function(id){
+      const d = $q.defer();
+
+      $http.delete(`${baseUrl}api/profile/${this.Name}/imsi/${id}`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    r.prototype.getEnodes = function(){
+      const d = $q.defer();
+
+      $http.get(`${baseUrl}api/profile/${this.Name}/enodeb`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    r.prototype.deleteEnodes = function(){
+      const d = $q.defer();
+
+      $http.delete(`${baseUrl}api/profile/${this.Name}/enodeb`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    r.prototype.deleteEnode = function(id){
+      const d = $q.defer();
+
+      $http.delete(`${baseUrl}api/profile/${this.Name}/enodeb/${id}`)
+      .then(res => {
+        d.resolve(res.data);
+      })
+      .catch(err => {
+        d.reject(err)
+      });
+
+      return d.promise;
+    };
+
+    return r;
   })
 })();
\ No newline at end of file
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.js b/mCordPortal/src/app/view/profiles-details/profiles-details.js
new file mode 100644
index 0000000..124db00
--- /dev/null
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.js
@@ -0,0 +1,178 @@
+/**
+ * © OpenCORD
+ *
+ * Visit http://guide.xosproject.org/devguide/addview/ for more information
+ *
+ * Created by teone on 6/13/16.
+ */
+
+(function () {
+  'use strict';
+  angular.module('mCord')
+    .directive('profileDetails', function ($uibModal, $q) {
+      return {
+        restrict: 'E',
+        scope: {},
+        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.formConfig = {
+            exclude: ['IMSIRuleArray'],
+            formName: 'updateProfiles',
+            actions: [
+              {
+                label: 'Update',
+                icon: 'ok',
+                cb: (imsi) => {
+                  imsi.$save();
+                },
+                class: 'primary-border'
+              }
+            ]
+          };
+
+          this.imsiTableCfg = {
+            order: true,
+            filter: 'field',
+            columns: [
+              {
+                label: '#',
+                prop: 'IMSI',
+                link: item => `#/imsi/${item.IMSI}`
+              },
+              {
+                label: 'Enodeb',
+                prop: 'Enodeb'
+              },
+              {
+                label: 'DlMeasBitRate',
+                prop: 'DlMeasBitRate'
+              },
+              {
+                label: 'UlMeasBitRate',
+                prop: 'UlMeasBitRate'
+              },
+              {
+                label: 'Status',
+                prop: 'UeStatus',
+                type: 'boolean'
+              }
+            ],
+            actions: [
+              {
+                label: 'Delete',
+                icon: 'remove',
+                color: 'red',
+                cb: (imsi) => {
+                  this.profile.deleteImsi(imsi.IMSI)
+                  .then(() => {
+                    _.remove(this.imsis, i =>i.IMSI === imsi.IMSI);
+                  });
+                }
+              }
+            ]
+          };
+
+          this.enodeTableCfg = {
+            order: true,
+            filter: 'field',
+            columns: [
+              {
+                label: '#',
+                prop: 'eNBId',
+                link: item => `#/enode/${item.eNBId}`
+              },
+              {
+                label: 'Ip Address',
+                prop: 'IpAddr'
+              },
+              {
+                label: 'Description',
+                prop: 'Description'
+              },
+              {
+                label: 'Status',
+                prop: 'Status',
+                type: 'boolean'
+              }
+            ],
+            actions: [
+              {
+                label: 'Delete',
+                icon: 'remove',
+                color: 'red',
+                cb: (enode) => {
+                  this.profile.deleteImsi(enode.eNBId)
+                  .then(() => {
+                    _.remove(this.enodes, i =>i.eNBId === enode.eNBId);
+                  });
+                }
+              }
+            ]
+          };
+
+          this.deleteAllImsi = () => {
+            this.profile.deleteImsis()
+            .then(() => {
+              this.imsis = [];
+            });
+          };
+
+          this.addImsi = () => {
+            const _this = this;
+            this.modalInstance = $uibModal.open({
+              animation: true,
+              templateUrl: 'addImsiToProfile',
+              controllerAs: 'vm',
+              controller: function ($uibModalInstance) {
+                this.modal    = $uibModalInstance;
+                this.callback = (imsi) => {
+                  _this.imsis.push(imsi);
+                };
+                this.profile = _this.profile;
+              }
+            });
+          };
+
+          this.addEnode = () => {
+            const _this = this;
+            this.modalInstance = $uibModal.open({
+              animation: true,
+              templateUrl: 'addEnodeToProfile',
+              controllerAs: 'vm',
+              controller: function ($uibModalInstance) {
+                this.modal    = $uibModalInstance;
+                this.callback = (enode) => {
+                  _this.enodes.push(enode);
+                };
+                this.profile = _this.profile;
+              }
+            });
+          };
+
+          this.deleteAllEnodes = () => {
+            this.profile.deleteEnodes()
+            .then(() => {
+              this.enodes = [];
+            });
+          };
+        }
+      }
+    });
+})();
+
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.tpl.html b/mCordPortal/src/app/view/profiles-details/profiles-details.tpl.html
new file mode 100644
index 0000000..cdedf66
--- /dev/null
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.tpl.html
@@ -0,0 +1,50 @@
+<div class="container-fluid">
+    <div class="row">
+        <div class="col-xs-12">
+            <h1 class="primary">Profile {{vm.profile.Name}}</h1>
+        </div>
+        <div class="col-sm-12">
+            <xos-form ng-model="vm.profile" config="vm.formConfig"></xos-form>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-xs-12">
+            <h1 class="primary">IMSI:</h1>
+        </div>
+        <div class="col-xs-12">
+            <xos-table config="vm.imsiTableCfg" data="vm.imsis"></xos-table>
+        </div>
+        <div class="col-xs-12 text-right">
+            <a ng-show="vm.imsis.length > 0" ng-click="vm.deleteAllImsi()" href="" class="btn btn-danger-border">
+                Delete all IMSI
+            </a>
+            <a ng-click="vm.addImsi()" class="btn btn-primary-border">
+                Add IMSI
+            </a>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-xs-12">
+            <h1 class="primary">E Node B:</h1>
+        </div>
+        <div class="col-xs-12">
+            <xos-table config="vm.enodeTableCfg" data="vm.enodes"></xos-table>
+        </div>
+        <div class="col-xs-12 text-right">
+            <a ng-show="vm.enodes.length > 0" ng-click="vm.deleteAllEnodes()" href="" class="btn btn-danger-border">
+                Delete all E Node B
+            </a>
+            <a ng-click="vm.addEnode()" class="btn btn-primary-border">
+                Add E Node B
+            </a>
+        </div>
+    </div>
+</div>
+
+<script type="text/ng-template" id="addImsiToProfile">
+    <add-imsi-to-item modal="vm.modal" cb="vm.callback" item="vm.profile"></add-imsi-to-item>
+</script>
+
+<script type="text/ng-template" id="addEnodeToProfile">
+    <add-enode-to-item modal="vm.modal" cb="vm.callback" item="vm.profile"></add-enode-to-item>
+</script>
\ No newline at end of file
