diff --git a/server_environment_files_sample/dev/base.conf b/server_environment_files_sample/dev/base.conf
index 72f75417663..036aea7a1ab 100644
--- a/server_environment_files_sample/dev/base.conf
+++ b/server_environment_files_sample/dev/base.conf
@@ -6,3 +6,7 @@ ged_folder = /tmp/ged/
 
 [wkhtml2pdf]
 lib_path = /myHome/lib/wkhtmltopdf-linux-i386-0-9-9
+
+[ir.config_parameter]
+ircp_from_config=config_value
+ircp_empty=
diff --git a/server_environment_ir_config_parameter/README.rst b/server_environment_ir_config_parameter/README.rst
new file mode 100644
index 00000000000..5bfd6d61114
--- /dev/null
+++ b/server_environment_ir_config_parameter/README.rst
@@ -0,0 +1,85 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+   :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+   :alt: License: AGPL-3
+
+======================================
+Server Environment Ir Config Parameter
+======================================
+
+Override System Parameters from server environment file.
+Before using this module, you must be familiar with the
+server_environment module.
+
+Installation
+============
+
+There is no specific installation instruction for this module.
+
+Configuration
+=============
+
+To configure this module, you need to add a section ``[ir.config_parameter]`` to
+you server_environment_files configurations, where the keys are the same
+as would normally be set in the Systems Parameter Odoo menu.
+
+When first using a value, the system will read it from the configuration file
+and override any value that would be present in the database, so the configuration
+file has precedence.
+
+When creating or modifying values that are in the configuration file, the
+module replace changes, enforcing the configuration value.
+
+For example you can use this module in combination with web_environment_ribbon:
+
+.. code::
+
+   [ir.config_parameter]
+   ribbon.name=DEV
+
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+   :alt: Try me on Runbot
+   :target: https://runbot.odoo-community.org/runbot/149/10.0
+
+Known issues / Roadmap
+======================
+
+* When the user modifies System Parameters that are defined in the config
+  file, the changes are ignored. It would be nice to display which system
+  parameters come from the config file and possibly make their key and value
+  readonly in the user interface.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues
+<https://github.com/OCA/server-tools/issues>`_. In case of trouble, please
+check there if your issue has already been reported. If you spotted it first,
+help us smashing it by providing a detailed and welcomed feedback.
+
+Credits
+=======
+
+Images
+------
+
+* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
+
+Contributors
+------------
+
+* Stéphane Bidoul <stephane.bidoul@acsone.eu>
+
+Maintainer
+----------
+
+.. image:: https://odoo-community.org/logo.png
+   :alt: Odoo Community Association
+   :target: https://odoo-community.org
+
+This module is maintained by the OCA.
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+To contribute to this module, please visit https://odoo-community.org.
diff --git a/server_environment_ir_config_parameter/__init__.py b/server_environment_ir_config_parameter/__init__.py
new file mode 100644
index 00000000000..0650744f6bc
--- /dev/null
+++ b/server_environment_ir_config_parameter/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/server_environment_ir_config_parameter/__manifest__.py b/server_environment_ir_config_parameter/__manifest__.py
new file mode 100644
index 00000000000..20b357f34fa
--- /dev/null
+++ b/server_environment_ir_config_parameter/__manifest__.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+    'name': 'Server Environment Ir Config Parameter',
+    'summary': """
+        Override System Parameters from server environment file""",
+    'version': '10.0.1.0.0',
+    'license': 'AGPL-3',
+    'author': 'ACSONE SA/NV,Odoo Community Association (OCA)',
+    'website': 'https://odoo-community.org/',
+    'depends': [
+        'server_environment',
+    ],
+    'data': [
+    ],
+    'demo': [
+    ],
+}
diff --git a/server_environment_ir_config_parameter/models/__init__.py b/server_environment_ir_config_parameter/models/__init__.py
new file mode 100644
index 00000000000..bd3aa9f1063
--- /dev/null
+++ b/server_environment_ir_config_parameter/models/__init__.py
@@ -0,0 +1 @@
+from . import ir_config_parameter
diff --git a/server_environment_ir_config_parameter/models/ir_config_parameter.py b/server_environment_ir_config_parameter/models/ir_config_parameter.py
new file mode 100644
index 00000000000..61116360d38
--- /dev/null
+++ b/server_environment_ir_config_parameter/models/ir_config_parameter.py
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, models, _
+from odoo.exceptions import UserError
+from odoo.addons.server_environment import serv_config
+
+
+SECTION = 'ir.config_parameter'
+
+
+class IrConfigParameter(models.Model):
+
+    _inherit = 'ir.config_parameter'
+
+    @api.model
+    def get_param(self, key, default=False):
+        value = super(IrConfigParameter, self).get_param(key, default=None)
+        if serv_config.has_option(SECTION, key):
+            cvalue = serv_config.get(SECTION, key)
+            if not cvalue:
+                raise UserError(_("Key %s is empty in "
+                                  "server_environment_file") %
+                                (key, ))
+            if cvalue != value:
+                # we write in db on first access;
+                # should we have preloaded values in database at,
+                # server startup, modules loading their parameters
+                # from data files would break on unique key error.
+                self.set_param(key, cvalue)
+                value = cvalue
+        if value is None:
+            return default
+        return value
+
+    @api.model
+    def create(self, vals):
+        key = vals.get('key')
+        if serv_config.has_option(SECTION, key):
+            # enforce value from config file
+            vals = dict(vals, value=serv_config.get(SECTION, key))
+        return super(IrConfigParameter, self).create(vals)
+
+    @api.multi
+    def write(self, vals):
+        for rec in self:
+            key = vals.get('key') or rec.key
+            if serv_config.has_option(SECTION, key):
+                # enforce value from config file
+                newvals = dict(vals, value=serv_config.get(SECTION, key))
+            else:
+                newvals = vals
+            super(IrConfigParameter, rec).write(newvals)
diff --git a/server_environment_ir_config_parameter/static/description/icon.png b/server_environment_ir_config_parameter/static/description/icon.png
new file mode 100644
index 00000000000..3a0328b516c
Binary files /dev/null and b/server_environment_ir_config_parameter/static/description/icon.png differ
diff --git a/server_environment_ir_config_parameter/tests/__init__.py b/server_environment_ir_config_parameter/tests/__init__.py
new file mode 100644
index 00000000000..83a250db1b8
--- /dev/null
+++ b/server_environment_ir_config_parameter/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_server_environment_ircp
diff --git a/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py b/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py
new file mode 100644
index 00000000000..bcffa9c5b1f
--- /dev/null
+++ b/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+# Copyright 2016 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from cStringIO import StringIO
+
+from odoo.exceptions import UserError
+from odoo.tests import common
+from odoo.tools import convert
+
+
+class TestEnv(common.TransactionCase):
+
+    def setUp(self):
+        super(TestEnv, self).setUp()
+        self.ICP = self.env['ir.config_parameter']
+
+    def test_get_param(self):
+        """ Get system parameter from config """
+        # it's not in db
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertFalse(res)
+        # read so it's created in db
+        value = self.ICP.get_param('ircp_from_config')
+        self.assertEqual(value, 'config_value')
+        # now it's in db
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertEqual(len(res), 1)
+        self.assertEqual(res.value, 'config_value')
+
+    def test_set_param_1(self):
+        """ We can't set parameters that are in config file """
+        # when creating, the value is overridden by config file
+        self.ICP.set_param('ircp_from_config', 'new_value')
+        value = self.ICP.get_param('ircp_from_config')
+        self.assertEqual(value, 'config_value')
+        # when writing, the value is overridden by config file
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertEqual(len(res), 1)
+        res.write({'value': 'new_value'})
+        value = self.ICP.get_param('ircp_from_config')
+        self.assertEqual(value, 'config_value')
+        # unlink works normally...
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertEqual(len(res), 1)
+        res.unlink()
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertEqual(len(res), 0)
+        # but the value is recreated when getting param again
+        value = self.ICP.get_param('ircp_from_config')
+        self.assertEqual(value, 'config_value')
+        res = self.ICP.search([('key', '=', 'ircp_from_config')])
+        self.assertEqual(len(res), 1)
+
+    def test_set_param_2(self):
+        """ We can set parameters that are not in config file """
+        self.ICP.set_param('some.param', 'new_value')
+        self.assertEqual(self.ICP.get_param('some.param'), 'new_value')
+        res = self.ICP.search([('key', '=', 'some.param')])
+        res.unlink()
+        res = self.ICP.search([('key', '=', 'some.param')])
+        self.assertFalse(res)
+
+    def test_empty(self):
+        """ Empty config values cause error """
+        with self.assertRaises(UserError):
+            self.ICP.get_param('ircp_empty')
+        self.assertEqual(self.ICP.get_param('ircp_nonexistant'), False)
+
+    def test_override_xmldata(self):
+        xml = """<odoo>
+            <data>
+                <record model="ir.config_parameter" id="some_record_id">
+                    <field name="key">ircp_from_config</field>
+                    <field name="value">value_from_xml</field>
+                </record>
+            </data>
+        </odoo>"""
+        convert.convert_xml_import(self.env.cr, 'testmodule', StringIO(xml))
+        value = self.ICP.get_param('ircp_from_config')
+        self.assertEqual(value, 'config_value')
diff --git a/setup/server_environment_ir_config_parameter/odoo/__init__.py b/setup/server_environment_ir_config_parameter/odoo/__init__.py
new file mode 100644
index 00000000000..de40ea7ca05
--- /dev/null
+++ b/setup/server_environment_ir_config_parameter/odoo/__init__.py
@@ -0,0 +1 @@
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/setup/server_environment_ir_config_parameter/odoo/addons/__init__.py b/setup/server_environment_ir_config_parameter/odoo/addons/__init__.py
new file mode 100644
index 00000000000..de40ea7ca05
--- /dev/null
+++ b/setup/server_environment_ir_config_parameter/odoo/addons/__init__.py
@@ -0,0 +1 @@
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/setup/server_environment_ir_config_parameter/odoo/addons/server_environment_ir_config_parameter b/setup/server_environment_ir_config_parameter/odoo/addons/server_environment_ir_config_parameter
new file mode 120000
index 00000000000..03cc1a8d38e
--- /dev/null
+++ b/setup/server_environment_ir_config_parameter/odoo/addons/server_environment_ir_config_parameter
@@ -0,0 +1 @@
+../../../../server_environment_ir_config_parameter
\ No newline at end of file
diff --git a/setup/server_environment_ir_config_parameter/setup.py b/setup/server_environment_ir_config_parameter/setup.py
new file mode 100644
index 00000000000..28c57bb6403
--- /dev/null
+++ b/setup/server_environment_ir_config_parameter/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+    setup_requires=['setuptools-odoo'],
+    odoo_addon=True,
+)
