diff --git a/_states/jenkins_credential.py b/_states/jenkins_credential.py
index 3009673..22d3e72 100644
--- a/_states/jenkins_credential.py
+++ b/_states/jenkins_credential.py
@@ -5,9 +5,10 @@
 create_credential_groovy = u"""\
 import com.cloudbees.plugins.credentials.domains.Domain;
 import com.cloudbees.plugins.credentials.CredentialsScope;
+import hudson.util.Secret
 
 def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
-        com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
+        com.cloudbees.plugins.credentials.common.StandardCredentials.class,
         Jenkins.instance
     )
 def key = \"\"\"${key}
@@ -24,7 +25,11 @@
     it.id == "${name}" &&
     ("${password}" == "" || it.passphrase.toString() == "${password}") &&
     it.description == "${desc}" &&
-    it.privateKeySource.privateKey.equals(key.trim()))
+    it.privateKeySource.privateKey.equals(key.trim())) ||
+  (it instanceof org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl &&
+    it.id == "${name}" &&
+    it.description == "${desc}" &&
+    it.secret == Secret.fromString("${secret}") )
 }
 
 if(result){
@@ -34,10 +39,17 @@
     store = Jenkins.instance.getExtensionList(
       'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
     )[0].getStore()
-
-    credentials_new = new ${clazz}(
-      ${params}
-    )
+    if ( "${clazz}" == "org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl" ){
+        Secret token = Secret.fromString("${secret}")
+        params = 'CredentialsScope.${scope}, ${name}, ${desc}'
+        credentials_new = new ${clazz}(
+             CredentialsScope.${scope}, "${name}", "${desc}", token
+        )
+    } else {
+        credentials_new = new ${clazz}(
+            ${params}
+        )
+    }
     // remove credentails with same if before created new one, if exists
     def existingCreds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
         com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
@@ -67,7 +79,7 @@
     return True
 
 
-def present(name, scope, username, password="", desc="", key=None):
+def present(name, scope, username, password="", desc="", key=None, secret=None):
     """
     Main jenkins credentials state method
 
@@ -97,13 +109,16 @@
             clazz = "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey"
             params = 'CredentialsScope.{}, "{}", "{}", new com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey.DirectEntryPrivateKeySource(key.trim()), "{}", "{}"'.format(
                 scope, name, username, password if password else "", desc if desc else "")
+        elif secret:
+            clazz = "org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl"
+            params = 'CredentialsScope.{}, "{}", "{}"'.format(
+                scope, name, desc if desc else "")
         else:
             clazz = "com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl"
             params = 'CredentialsScope.{}, "{}", "{}", "{}", "{}"'.format(
                 scope, name, desc if desc else "", username, password)
-
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            create_credential_groovy, {"name": name, "username": username, "password": password if password else "", "clazz": clazz, "params": params, "key": key if key else "", "desc": desc if desc else ""})
+            create_credential_groovy, {"scope": scope, "name": name, "username": username if username else "", "password": password if password else "", "clazz": clazz, "params": params, "key": key if key else "", "desc": desc if desc else "", "secret": secret if secret else ""})
         if call_result["code"] == 200 and call_result["msg"] in [
                 "CREATED", "EXISTS"]:
             status = call_result["msg"]
