diff --git a/_modules/jenkins_common.py b/_modules/jenkins_common.py
index e4ae5d8..493aebe 100644
--- a/_modules/jenkins_common.py
+++ b/_modules/jenkins_common.py
@@ -6,12 +6,18 @@
 logger = logging.getLogger(__name__)
 
 
-def call_groovy_script(script, props):
+def call_groovy_script(script, props, username=None, password=None, success_status_codes=[200]):
     """
     Common method for call Jenkins groovy script API
 
-    :param script groovy script template
-    :param props groovy script properties
+    :param script: groovy script template
+    :param props: groovy script properties
+    :param username: jenkins username (optional,
+            if missing creds from sall will be used)
+    :param password: jenkins password (optional,
+            if missing creds from sall will be used)
+    :param success_status_codes: success response status code
+            (optional) in some cases we want to declare error call as success
     :returns: HTTP dict {status,code,msg}
     """
     ret = {
@@ -20,6 +26,11 @@
         "msg": ""
     }
     jenkins_url, jenkins_user, jenkins_password = get_jenkins_auth()
+    if username:
+        jenkins_user = username
+    if password:
+        jenkins_password = password
+
     if not jenkins_url:
         raise SaltInvocationError('No Jenkins URL found.')
 
@@ -33,7 +44,7 @@
                         auth=(jenkins_user, jenkins_password),
                         data=req_data)
     ret["code"] = req.status_code
-    if req.status_code == 200:
+    if req.status_code in success_status_codes:
         ret["status"] = "SUCCESS"
         ret["msg"] = req.text
         logger.debug("Jenkins script API call success: %s", ret)
@@ -72,15 +83,15 @@
                             auth=(jenkins_user, jenkins_password) if jenkins_user else None)
     if tokenReq.status_code == 200:
         return tokenReq.json()
-    elif tokenReq.status_code == 404:
-        # 404 means CSRF security is disabled, so api crumb is not necessary
+    elif tokenReq.status_code in [404, 401]:
+        # 404 means CSRF security is disabled, so api crumb is not necessary,
+        # 401 means unauthorized
         return None
     else:
         raise Exception("Cannot obtain Jenkins API crumb. Status code: %s. Text: %s" %
                         (tokenReq.status_code, tokenReq.text))
 
 
-
 def get_jenkins_auth():
     """
     Get jenkins params from salt
diff --git a/_states/jenkins_user.py b/_states/jenkins_user.py
index 29a2f64..6f37ec3 100644
--- a/_states/jenkins_user.py
+++ b/_states/jenkins_user.py
@@ -13,7 +13,7 @@
 instance.setAuthorizationStrategy(strategy)
 instance.save()
 print(result)
-"""  #noqa
+"""  # noqa
 
 
 create_user_groovy = u"""\
@@ -21,7 +21,6 @@
 print(result)
 """  # noqa
 
-
 def present(name, username, password, admin=False):
     """
     Main jenkins users state method
@@ -45,15 +44,29 @@
         ret['changes'][username] = status
         ret['comment'] = 'User %s %s' % (username, status.lower())
     else:
-        call_result = __salt__['jenkins_common.call_groovy_script'](create_admin_groovy if admin else create_user_groovy, {"username": username, "password":password})
-        if call_result["code"] == 200 and call_result["msg"].count(username) == 1:
-            status = "CREATED" if not admin else "ADMIN CREATED"
-            ret['changes'][username] = status
+        # try to call jenkins script api with given user and password to prove
+        # his existence
+        user_exists_result = __salt__['jenkins_common.call_groovy_script'](
+            "print(\"TEST\")", {"username": username}, username, password,[200, 401])
+        user_exists = user_exists_result and user_exists_result[
+            "code"] == 200 and user_exists_result["msg"].count("TEST") == 1
+        if not user_exists:
+            call_result = __salt__['jenkins_common.call_groovy_script'](
+                create_admin_groovy if admin else create_user_groovy, {"username": username, "password": password})
+            if call_result["code"] == 200 and call_result["msg"].count(username) == 1:
+                status = "CREATED" if not admin else "ADMIN CREATED"
+                ret['changes'][username] = status
+                ret['comment'] = 'User %s %s' % (username, status.lower())
+                result = True
+            else:
+                status = 'FAILED'
+                logger.error("Jenkins user API call failure: %s",
+                             call_result["msg"])
+                ret['comment'] = 'Jenkins user API call failure: %s' % (call_result[
+                                                                        "msg"])
+        else:
+            status = "EXISTS"
             ret['comment'] = 'User %s %s' % (username, status.lower())
             result = True
-        else:
-            status = 'FAILED'
-            logger.error("Jenkins user API call failure: %s", call_result["msg"])
-            ret['comment'] = 'Jenkins user API call failure: %s' % (call_result["msg"])
     ret['result'] = None if test else result
     return ret
