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}`);
             });
         }
       }],
