diff --git a/README.rst b/README.rst
index d721873..588d72b 100644
--- a/README.rst
+++ b/README.rst
@@ -798,6 +798,32 @@
               visible_for_project: ''
               timestamps: false
               timestamp_format: ''
+=======
+Gerrit trigger plugin configuration
+
+.. code-block:: yaml
+
+    jenkins:
+      client:
+        gerrit:
+          server1:
+            host: "gerrit.domain.local"
+            port: 29418
+            username: "jenkins"
+            email: "jenkins@domain.local"
+            auth_key_file: "/var/jenkins_home/.ssh/id_rsa"
+            frontendURL: "https://gerrit.domain.local"
+            authkey: |
+              SOMESSHKEY
+          server2:
+            host: "gerrit2.domain.local"
+            port: 29418
+            username: "jenkins"
+            email: "jenkins@domain.local"
+            auth_key_file: "/var/jenkins_home/.ssh/id_rsa"
+            frontendURL: "https://gerrit2.domain.local"
+            authkey: |
+              SOMESSHKEY
 
 Usage
 =====
diff --git a/_states/jenkins_gerrit.py b/_states/jenkins_gerrit.py
new file mode 100644
index 0000000..26b1259
--- /dev/null
+++ b/_states/jenkins_gerrit.py
@@ -0,0 +1,51 @@
+import logging
+
+logger = logging.getLogger(__name__)
+
+def __virtual__():
+    '''
+    Only load if jenkins_common module exist.
+    '''
+    if 'jenkins_common.call_groovy_script' not in __salt__:
+        return (
+            False,
+            'The jenkins_gerrit state module cannot be loaded: '
+            'jenkins_common not found')
+    return True
+
+
+def present(name, hostname, username, frontendurl, auth_key_file, authkey,
+            port="29418", auth_key_file_password=None, email="", proxy=""):
+    """
+    Jenkins gerrit-trigger state method
+
+    :param name: server name
+    :param host: server hostname
+    :param username: username
+    :param email: trigger email (optional)
+    :param port: server ssh port
+    :param proxy: proxy url (optional)
+    :param frontendurl: server frontend URL
+    :param auth_key_file: path to key file
+    :param authkey: ssh key
+    :param auth_key_file_password: password for keyfile (optional)
+    :returns: salt-specified state dict
+    """
+    template = __salt__['jenkins_common.load_template'](
+        'salt://jenkins/files/groovy/gerrit.template',
+        __env__)
+    return __salt__['jenkins_common.api_call'](name, template,
+                        ["CREATED", "EXISTS"],
+                        {
+                            "name": name,
+                            "hostname": hostname,
+                            "port": port if port else "29418",
+                            "proxy": proxy if proxy else "",
+                            "username": username,
+                            "email": email if email else "",
+                            "frontendurl": frontendurl,
+                            "auth_key_file": auth_key_file,
+                            "authkey": authkey,
+                            "auth_key_file_password": auth_key_file_password if auth_key_file_password else None
+                        },
+                        "Gerrit server")
diff --git a/jenkins/client/gerrit.sls b/jenkins/client/gerrit.sls
new file mode 100644
index 0000000..c540b20
--- /dev/null
+++ b/jenkins/client/gerrit.sls
@@ -0,0 +1,20 @@
+{% from "jenkins/map.jinja" import client with context %}
+{%- if client.gerrit is defined %}
+{% for name, gerrit in client.get('gerrit',{}).iteritems() %}
+jenkins_gerrit_trigger_{{ name }}:
+  jenkins_gerrit.present:
+  - name: {{ name }}
+  - hostname: {{ gerrit.get('host', '') }}
+  - port: {{ gerrit.get('port', '29418') }}
+  - proxy: {{ gerrit.get('proxy', '')  }}
+  - username: {{ gerrit.get('username', '') }}
+  - email: {{ gerrit.get('email', '') }}
+  - auth_key_file: {{ gerrit.get('auth_key_file', '') }}
+  - frontendurl: {{ gerrit.get('frontendURL','') }}
+  {%- if gerrit.authkey is defined %}
+  - authkey: |
+      {{ gerrit.get('authkey','')|indent(6) }}
+  {%- endif %}
+  - auth_key_file_password: {{ gerrit.get('auth_key_file_password', '') }}
+{% endfor %}
+{%- endif %}
diff --git a/jenkins/client/init.sls b/jenkins/client/init.sls
index 46fb104..f68d83d 100644
--- a/jenkins/client/init.sls
+++ b/jenkins/client/init.sls
@@ -59,6 +59,10 @@
   - jenkins.client.job_template
 {%- endif %}
 
+{%- if client.gerrit is defined %}
+  - jenkins.client.gerrit
+{%- endif %}
+
 
 jenkins_client_install:
   pkg.installed:
diff --git a/jenkins/files/groovy/gerrit.template b/jenkins/files/groovy/gerrit.template
new file mode 100644
index 0000000..1895494
--- /dev/null
+++ b/jenkins/files/groovy/gerrit.template
@@ -0,0 +1,56 @@
+#!groovy
+import jenkins.model.*;
+import net.sf.json.*;
+import com.sonyericsson.hudson.plugins.gerrit.trigger.*;
+
+if ( Jenkins.instance.pluginManager.activePlugins.find { it.shortName == "gerrit-trigger" } != null ) {
+    def gerritPlugin = Jenkins.instance.getPlugin(com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl.class)
+    gerritPlugin.getPluginConfig().setNumberOfReceivingWorkerThreads(3)
+    gerritPlugin.getPluginConfig().setNumberOfSendingWorkerThreads(1)
+
+    def authkey = """${authkey}
+    """
+
+    def serverName = "${name}"
+    def gerritServer = new GerritServer(serverName)
+
+    def gerritTriggerPlugin = PluginImpl.getInstance()
+    def gerritServers = gerritTriggerPlugin.getServerNames()
+    def gerritServerExists = false
+    gerritServers.each {
+        serverName = (String) it
+        if ( serverName == gerritServer.getName() ) {
+            gerritServerExists = true
+        }
+    }
+    if (!gerritServerExists){
+
+        def triggerConfig = new config.Config()
+
+        triggerConfig.setGerritHostName("${hostname}")
+        triggerConfig.setGerritUserName("${username}")
+        triggerConfig.setGerritFrontEndURL("${frontendurl}")
+        triggerConfig.setGerritSshPort(${port})
+        triggerConfig.setGerritProxy("${proxy}")
+        triggerConfig.setGerritEMail("${email}")
+
+        def gerritAuthKeyFile = new File("${auth_key_file}")
+        gerritAuthKeyFile.write(authkey)
+        if ( gerritAuthKeyFile.exists() ) {
+            triggerConfig.setGerritAuthKeyFile(gerritAuthKeyFile)
+        }
+
+        triggerConfig.setGerritAuthKeyFilePassword("${auth_key_file_password}")
+
+        gerritServer.setConfig(triggerConfig)
+
+        gerritPlugin.addServer(gerritServer)
+        gerritServer.start()
+        gerritServer.startConnection()
+        Jenkins.instance.save()
+        print("CREATED")
+    }
+    else {
+        print("EXISTS")
+    }
+}
