diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index beec2e0..b39f444 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -2,8 +2,7 @@
 import 'angular-mocks';
 import 'angular-ui-router';
 
-import {IXosConfigHelpersService} from './config.helpers';
-import {xosCore} from '../../index';
+import {IXosConfigHelpersService, ConfigHelpers} from './config.helpers';
 import {IModeldef} from '../../../datasources/rest/modeldefs.rest';
 import {IXosTableCfg} from '../../table/table';
 import {IXosFormInput, IXosFormConfig} from '../../form/form';
@@ -50,7 +49,17 @@
 
 describe('The ConfigHelpers service', () => {
 
-  beforeEach(angular.mock.module(xosCore));
+  beforeEach(() => {
+    angular
+      .module('test', ['toastr'])
+      .service('ConfigHelpers', ConfigHelpers)
+      .value('AuthService', {
+        getUser: () => {
+          return {id: 1};
+        }
+      });
+    angular.mock.module('test');
+  });
 
   beforeEach(angular.mock.inject((
     ConfigHelpers: IXosConfigHelpersService,
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index 6b89856..1df2662 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -3,6 +3,7 @@
 import {IXosTableColumn, IXosTableCfg} from '../../table/table';
 import {IModeldef} from '../../../datasources/rest/modeldefs.rest';
 import {IXosFormConfig, IXosFormInput} from '../../form/form';
+import {IXosAuthService} from '../../../datasources/rest/auth.rest';
 
 export interface IXosModelDefsField {
   name: string;
@@ -44,7 +45,8 @@
   ];
 
   constructor(
-    private toastr: ng.toastr.IToastrService
+    private toastr: ng.toastr.IToastrService,
+    private AuthService: IXosAuthService
   ) {
     pluralize.addIrregularRule('xos', 'xosses');
     pluralize.addPluralRule(/slice$/i, 'slices');
@@ -165,18 +167,31 @@
   public modelToFormCfg(model: IModeldef): IXosFormConfig {
     return {
       formName: `${model.name}Form`,
-      exclude: ['backend_status'],
+      exclude: ['backend_status', 'creator'],
       actions: [{
         label: 'Save',
         class: 'success',
         icon: 'ok',
         cb: (item, form) => {
+          const model = angular.copy(item);
+
+          // TODO remove ManyToMany relations and save them separately (how??)
+          delete item.networks;
+
+          // adding userId as creator
+          item.creator = this.AuthService.getUser().id;
+
           item.$save()
-            .then(res => {
-              this.toastr.success(`${item.name} succesfully saved`);
+            .then((res) => {
+              if (res.status === 403 || res.status === 405 || res.status === 500) {
+                // TODO understand why 405 does not go directly in catch (it may be realted to ng-rest-gw)
+                throw new Error();
+              }
+              this.toastr.success(`${model.name} succesfully saved`);
             })
             .catch(err => {
-              this.toastr.error(`Error while saving ${item.name}`);
+              // TODO keep the edited model
+              this.toastr.error(`Error while saving ${model.name}`);
             });
         }
       }],
diff --git a/src/app/datasources/helpers/store.helpers.spec.ts b/src/app/datasources/helpers/store.helpers.spec.ts
index f0168b6..1793a7c 100644
--- a/src/app/datasources/helpers/store.helpers.spec.ts
+++ b/src/app/datasources/helpers/store.helpers.spec.ts
@@ -6,6 +6,7 @@
 import {BehaviorSubject} from 'rxjs';
 import {IWSEvent} from '../websocket/global';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IStoreHelpersService;
 let subject: BehaviorSubject<any>;
@@ -16,10 +17,11 @@
 
   beforeEach(() => {
     angular
-      .module('test', ['ngResource', 'toastr'])
+      .module('test', ['ngResource', 'toastr', 'ngCookies'])
       .service('ConfigHelpers', ConfigHelpers) // NOTE evaluate mock
       .service('ModelRest', ModelRest) // NOTE evaluate mock
-      .service('StoreHelpers', StoreHelpers);
+      .service('StoreHelpers', StoreHelpers)
+      .service('AuthService', AuthService);
 
     angular.mock.module('test');
   });
diff --git a/src/app/datasources/rest/model.rest.ts b/src/app/datasources/rest/model.rest.ts
index 51e41d3..8bd2c1f 100644
--- a/src/app/datasources/rest/model.rest.ts
+++ b/src/app/datasources/rest/model.rest.ts
@@ -6,7 +6,6 @@
 
 export class ModelRest implements IXosResourceService {
   static $inject = ['$resource'];
-  private resource: angular.resource.IResourceClass<any>;
 
   /** @ngInject */
   constructor(
@@ -16,6 +15,18 @@
   }
 
   public getResource(url: string): ng.resource.IResourceClass<ng.resource.IResource<any>> {
-    return this.resource = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'});
+    const resource: angular.resource.IResourceClass<any> = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'}, {
+      update: { method: 'PUT' }
+    });
+
+    resource.prototype.$save = function() {
+      if (this.id) {
+        return this.$update();
+      } else {
+        return resource.save(this).$promise;
+      }
+    };
+
+    return resource;
   }
 }
diff --git a/src/app/datasources/stores/model.store.spec.ts b/src/app/datasources/stores/model.store.spec.ts
index dd19c27..5bdc498 100644
--- a/src/app/datasources/stores/model.store.spec.ts
+++ b/src/app/datasources/stores/model.store.spec.ts
@@ -8,6 +8,7 @@
 import {ModelRest} from '../rest/model.rest';
 import {AppConfig} from '../../config/app.config';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IModelStoreService;
 let httpBackend: ng.IHttpBackendService;
@@ -37,12 +38,13 @@
 
   beforeEach(() => {
     angular
-      .module('ModelStore', ['ngResource', 'toastr'])
+      .module('ModelStore', ['ngResource', 'toastr', 'ngCookies'])
       .service('WebSocket', MockWs)
       .service('StoreHelpers', StoreHelpers) // TODO mock
       .service('ModelRest', ModelRest) // TODO mock
       .service('ModelStore', ModelStore)
-      .service('ConfigHelpers', ConfigHelpers); // TODO mock
+      .service('ConfigHelpers', ConfigHelpers) // TODO mock
+      .service('AuthService', AuthService);
 
     angular.mock.module('ModelStore');
   });
