diff --git a/rhodecode/integrations/views.py b/rhodecode/integrations/views.py
--- a/rhodecode/integrations/views.py
+++ b/rhodecode/integrations/views.py
@@ -179,7 +179,7 @@ class IntegrationSettingsViewBase(object
 
         try:
             valid_data = schema.deserialize(params)
-        except colander.Invalid, e:
+        except colander.Invalid as e:
             # Display error message and display form again.
             self.request.session.flash(
                 _('Errors exist when saving plugin settings. '
@@ -188,17 +188,17 @@ class IntegrationSettingsViewBase(object
             return self.settings_get(errors=e.asdict(), defaults=params)
 
         if not self.integration:
-            self.integration = Integration(
-                integration_type=self.IntegrationType.key)
+            self.integration = Integration()
+            self.integration.integration_type = self.IntegrationType.key
             if self.repo:
                 self.integration.repo = self.repo
-            Session.add(self.integration)
+            Session().add(self.integration)
 
         self.integration.enabled = valid_data.pop('enabled', False)
         self.integration.name = valid_data.pop('name')
         self.integration.settings = valid_data
 
-        Session.commit()
+        Session().commit()
 
         # Display success message and redirect.
         self.request.session.flash(
diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py
--- a/rhodecode/model/db.py
+++ b/rhodecode/model/db.py
@@ -3500,11 +3500,6 @@ class Integration(Base, BaseModel):
         nullable=True, unique=None, default=None)
     repo = relationship('Repository', lazy='joined')
 
-    def __init__(self, **kw):
-        settings = kw.pop('settings', {})
-        self.settings = settings
-        super(Integration, self).__init__(**kw)
-
     def __repr__(self):
         if self.repo:
             scope = 'repo=%r' % self.repo
@@ -3512,6 +3507,3 @@ class Integration(Base, BaseModel):
             scope = 'global'
 
         return '<Integration(%r, %r)>' % (self.integration_type, scope)
-
-    def settings_as_dict(self):
-        return json.loads(self.settings_json)
diff --git a/rhodecode/model/integration.py b/rhodecode/model/integration.py
--- a/rhodecode/model/integration.py
+++ b/rhodecode/model/integration.py
@@ -63,13 +63,13 @@ class IntegrationModel(BaseModel):
 
     def create(self, IntegrationType, enabled, name, settings, repo=None):
         """ Create an IntegrationType integration """
-        integration = Integration(
-            integration_type=IntegrationType.key,
-            settings={},
-            repo=repo,
-            enabled=enabled,
-            name=name
-        )
+        integration = Integration()
+        integration.integration_type = IntegrationType.key
+        integration.settings = {}
+        integration.repo = repo
+        integration.enabled = enabled
+        integration.name = name
+
         self.sa.add(integration)
         self.sa.commit()
         return integration
diff --git a/rhodecode/tests/integrations/test_slack.py b/rhodecode/tests/integrations/test_slack.py
--- a/rhodecode/tests/integrations/test_slack.py
+++ b/rhodecode/tests/integrations/test_slack.py
@@ -71,11 +71,10 @@ def slack_settings():
 
 @pytest.fixture
 def slack_integration(request, app, slack_settings):
-    integration = Integration(
-        name='test slack integration',
-        enabled=True,
-        integration_type=SlackIntegrationType.key
-    )
+    integration = Integration()
+    integration.name = 'test slack integration'
+    integration.enabled = True
+    integration.integration_type = SlackIntegrationType.key
     integration.settings = slack_settings
     Session().add(integration)
     Session().commit()