diff --git a/mCordPortal/bs-config.js b/mCordPortal/bs-config.js
index f078e45..e703aff 100644
--- a/mCordPortal/bs-config.js
+++ b/mCordPortal/bs-config.js
@@ -68,7 +68,6 @@
           req.headers['x-csrftoken'] = req.headers['x-csrftoken'];
           req.headers.cookie = `xoscsrftoken=${req.headers['x-csrftoken']}; xossessionid=${req.headers['sessionid']}`;
         }
-        // console.log(`proxied: ${req.url}`, req.headers['x-csrftoken'], req.headers.cookie);
         proxy.web(req, res);
       }
       else if(req.url.indexOf('/onos/') !== -1){
diff --git a/mCordPortal/env/mock.js b/mCordPortal/env/mock.js
new file mode 100644
index 0000000..84ae378
--- /dev/null
+++ b/mCordPortal/env/mock.js
@@ -0,0 +1,12 @@
+// This is a default configuration for your development environment.
+// You can duplicate this configuration for any of your Backend Environments.
+// Different configurations are loaded setting a NODE_ENV variable that contain the config file name.
+// `NODE_ENV=local npm start`
+//
+// If xoscsrftoken or xossessionid are not specified the browser value are used
+// (works only for local environment as both application are served on the same domain)
+
+module.exports = {
+  host: 'http://xos.dev:9999/',
+  onos_host: 'http://private-c85424-progranrestapi.apiary-mock.com/'
+};
diff --git a/mCordPortal/src/app/components/related-profiles/related-profiles.tpl.html b/mCordPortal/src/app/components/related-profiles/related-profiles.tpl.html
index 9120656..c87ba23 100644
--- a/mCordPortal/src/app/components/related-profiles/related-profiles.tpl.html
+++ b/mCordPortal/src/app/components/related-profiles/related-profiles.tpl.html
@@ -20,8 +20,8 @@
       {{profile.UlAllocRBRate}}
       <i class="glyphicon glyphicon-arrow-up"></i>
     </td>
-    <td>{{profile.Start}}</td>
-    <td>{{profile.End}}</td>
+    <td>{{profile.jsStart | date:'medium'}}</td>
+    <td>{{profile.jsEnd | date:'medium'}}</td>
     <td ng-if="vm.config.delete">
       <a href="" ng-click="vm.deleteProfile(profile.Name)">
         <i class="glyphicon glyphicon-remove"></i>
diff --git a/mCordPortal/src/app/services/helpers.js b/mCordPortal/src/app/services/helpers.js
index c8772a2..9386dd9 100644
--- a/mCordPortal/src/app/services/helpers.js
+++ b/mCordPortal/src/app/services/helpers.js
@@ -23,7 +23,26 @@
       return new Date(
         start.getTime() + Math.random() * (end.getTime() - start.getTime())
       );
-    }
+    };
+
+    this.stringToTime = (string) => {
+      let jsDate;
+      jsDate = new Date();
+
+      let [date, time] = string.split(' ');
+
+      let [day, month, year] = date.split('.');
+      let [hour, minute] = time.split(':');
+
+
+      jsDate.setYear(year);
+      jsDate.setMonth(month);
+      jsDate.setDate(day);
+      jsDate.setHours(hour);
+      jsDate.setMinutes(minute);
+
+      return jsDate;
+    };
   })
   .factory('_', function(){
     return window._;
diff --git a/mCordPortal/src/app/services/rest/enodeb.js b/mCordPortal/src/app/services/rest/enodeb.js
index d7d0f7c..9c1d2a2 100644
--- a/mCordPortal/src/app/services/rest/enodeb.js
+++ b/mCordPortal/src/app/services/rest/enodeb.js
@@ -1,6 +1,6 @@
 (function () {
   angular.module('mCord')
-  .service('Enodeb', function($injector, $resource, $q, $http, baseUrl){
+  .service('Enodeb', function($injector, $resource, $q, $http, baseUrl, Helpers){
     const r = $resource(`${baseUrl}onos/progran/enodeb/:id`, {id: '@eNBId'}, {
       //save: {method: 'PUT'},
       query: {
@@ -42,6 +42,11 @@
 
       $http.get(`${baseUrl}onos/progran/enodeb/${this.eNBId}/profile`)
       .then(res => {
+        res.data = res.data.map(p => {
+          p.jsStart = Helpers.stringToTime(p.Start);
+          p.jsEnd = Helpers.stringToTime(p.End);
+          return p;
+        })
         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 5a7d435..432c25a 100644
--- a/mCordPortal/src/app/services/rest/profiles.js
+++ b/mCordPortal/src/app/services/rest/profiles.js
@@ -1,6 +1,7 @@
 (function () {
+
   angular.module('mCord')
-  .service('Profile', function($injector, $resource, $q, $http, baseUrl){
+  .service('Profile', function($injector, $resource, $q, $http, baseUrl, Helpers){
     const r = $resource(`${baseUrl}onos/progran/profile/:id`, {id: '@Name'}, {
       save: {
         method: 'PUT'
@@ -13,7 +14,11 @@
         interceptor: {
           response: function(res){
             const Profile = $injector.get('Profile');
-            return res.data.ProfileArray.map(p => new Profile(p));
+            return res.data.ProfileArray.map(p => new Profile(p)).map(p => {
+              p.jsStart = Helpers.stringToTime(p.Start);
+              p.jsEnd = Helpers.stringToTime(p.End);
+              return p;
+            });
           }
         }
       },
@@ -22,6 +27,8 @@
         interceptor: {
           response: function(res){
             const Profile = $injector.get('Profile');
+            res.data.ProfileArray[0].jsStart = Helpers.stringToTime(res.data.ProfileArray[0].Start);
+            res.data.ProfileArray[0].jsEnd = Helpers.stringToTime(res.data.ProfileArray[0].End);
             return new Profile(res.data.ProfileArray[0]);
           }
         }
@@ -42,6 +49,18 @@
       return {$promise: d.promise};
     };
 
+    r.prototype.$save = function(){
+      const d = $q.defer();
+      $http.put(`${baseUrl}onos/progran/profile/${this.Name}`, this)
+        .then(res => {
+          d.resolve(res.data);
+        })
+        .catch(err => {
+          d.reject(err)
+        });
+      return {$promise: d.promise};
+    };
+
     r.prototype.getImsis = function(){
       const d = $q.defer();
 
diff --git a/mCordPortal/src/app/view/home/e-node-map.js b/mCordPortal/src/app/view/home/e-node-map.js
index 423a5c7..0771fa7 100644
--- a/mCordPortal/src/app/view/home/e-node-map.js
+++ b/mCordPortal/src/app/view/home/e-node-map.js
@@ -18,6 +18,7 @@
             this.enodes = enodes;
             bounds = new google.maps.LatLngBounds();
             enodes.forEach(node => {
+              console.log(node.GpsCoordinate);
               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);
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.js b/mCordPortal/src/app/view/profiles-details/profiles-details.js
index b6d73a7..2affd22 100644
--- a/mCordPortal/src/app/view/profiles-details/profiles-details.js
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.js
@@ -9,7 +9,7 @@
 (function () {
   'use strict';
   angular.module('mCord')
-    .directive('profileDetails', function ($uibModal, $q) {
+    .directive('profileDetails', function ($uibModal, $q, Helpers) {
       return {
         restrict: 'E',
         scope: {},
@@ -48,7 +48,7 @@
           ];
 
           this.formConfig = {
-            exclude: ['IMSIRuleArray'],
+            exclude: ['IMSIRuleArray', 'Start', 'End'],
             formName: 'updateProfiles',
             fields: {
               Name: {
@@ -83,14 +83,16 @@
                   required: true
                 }
               },
-              Start: {
-                type: 'date',
+              jsStart: {
+                type: 'datetime-local',
+                label: 'Start',
                 validator: {
                   required: true
                 }
               },
-              End: {
-                type: 'date',
+              jsEnd: {
+                type: 'datetime-local',
+                label: 'End',
                 validator: {
                   required: true
                 }
@@ -177,16 +179,31 @@
                 label: 'Save',
                 icon: 'ok',
                 cb: (profile) => {
+                  profile.Start = moment(profile.jsStart).format('DD.MM.YYYY HH:mm');
+                  profile.End = moment(profile.jsEnd).format('DD.MM.YYYY HH:mm');
+
+                  delete profile.jsStart;
+                  delete profile.jsEnd;
+
+                  let p;
                   if(this.isNew){
-                    Profile.save(profile).$promise
-                    .then((profile) => {
-                      // TODO save imsi and enodes
-                      // and redirect to profile list
-                    });
+                    p = Profile.save(profile).$promise
                   }
                   else{
-                    profile.$save();
+                    p = profile.$save().$promise;
                   }
+                  p.then(() => {
+                    profile.jsStart = Helpers.stringToTime(profile.Start);
+                    profile.jsEnd = Helpers.stringToTime(profile.End);
+
+                    console.log(profile);
+
+                    this.formConfig.feedback = {
+                      show: true,
+                      message: `Profile ${profile.Name} saved!`,
+                      type: 'success'
+                    };
+                  });
                 },
                 class: 'primary-border'
               }
diff --git a/mCordPortal/src/app/view/profiles-list/profiles-list.js b/mCordPortal/src/app/view/profiles-list/profiles-list.js
index 5cfdb56..66d1530 100644
--- a/mCordPortal/src/app/view/profiles-list/profiles-list.js
+++ b/mCordPortal/src/app/view/profiles-list/profiles-list.js
@@ -48,11 +48,13 @@
               },
               {
                 label: 'Start',
-                prop: 'Start'
+                prop: 'jsStart',
+                type: 'date'
               },
               {
                 label: 'End',
-                prop: 'End'
+                prop: 'jsEnd',
+                type: 'date'
               }
             ]
           };
