diff --git a/_modules/avinetworks.py b/_modules/avinetworks.py
index e01edd6..7e329d8 100644
--- a/_modules/avinetworks.py
+++ b/_modules/avinetworks.py
@@ -383,3 +383,114 @@
         ret['result'] = False
         ret['comment'] = {"Error": "Cluster was not updates", "reason": result.json()['error']}
     return ret
+
+
+def user_list():
+    command = "user"
+    ret = send_request_get(command)
+    return ret.json()
+
+
+def user_get(name, **kwargs):
+    users = user_list()
+    for user in users['results']:
+        if name == user['username'] or name == user['uuid']:
+            return user
+    return {'result': False,
+            'Error': "Error in the retrieving user " + name + "."}
+
+
+def _compare_attr(origin, new):
+    if not new:
+        return origin
+    return new
+
+
+def user_create(name, uuid=None, username=None, password=None, email=None, full_name=None, is_superuser=None, local=None, **kwargs):
+    command = 'user'
+    ret = {'name': name,
+           'changes': {},
+           'result': True,
+           'comment': ''}
+
+    user = user_get(name)
+    if 'Error' not in user:
+        data = {}
+        data['username'] = _compare_attr(user['username'], username)
+        data['password'] = _compare_attr(user['password'], password)
+        data['email'] = _compare_attr(user['email'], email)
+        data['full_name'] = _compare_attr(user['full_name'], full_name)
+        data['is_superuser'] = _compare_attr(user['is_superuser'], is_superuser)
+        data['local'] = _compare_attr(user['local'], local)
+        # data['default_tenant_uuid'] = _compare_attr(user['default_tenant_uuid'], default_tenant_uuid)
+
+        if __opts__['test']:
+            ret['changes'] = None
+            ret['comment'] = "User " + name + " will be updated"
+            return ret
+
+        command += "/"+user["uuid"]
+        result = send_request_put(command, data)
+        ret['result'] = result
+        ret['comment'] = "User " + name + " has been updated"
+        return ret
+
+    data = {}
+    data['username'] = username
+    data['password'] = password
+    data['email'] = email
+    data['full_name'] = full_name
+    data['is_superuser'] = is_superuser
+    data['local'] = local
+
+    if __opts__['test']:
+        ret['changes'] = None
+        ret['comment'] = "User " + name + " will be created"
+        return ret
+
+    result = send_request_post(command, data)
+    ret['result'] = result
+    ret['comment'] = "User " + name + " has been created"
+    return ret
+
+
+def useraccount_get():
+    command = "useraccount"
+    ret = send_request_get(command)
+    return ret.json()
+
+
+def useraccount_update(old_password, password, full_name=None, email=None, **kwargs):
+    command = 'useraccount'
+    ret = {'name': "user_account",
+           'changes': {},
+           'result': True,
+           'comment': ''}
+    data = {}
+    data['old_password'] = old_password
+    data['password'] = password
+    account = useraccount_get()
+    if email:
+        data['email'] = email
+    elif (len(account["email"]) > 0):
+        data['email'] = str(account["email"])
+    else:
+        data['email'] = ""
+
+    if full_name:
+        data['full_name'] = full_name
+    elif (len(account["full_name"]) > 0):
+        data['full_name'] = str(account["full_name"])
+    else:
+        data['full_name'] = ""
+
+    if __opts__['test']:
+        ret['result'] = None
+        ret['comment'] = "User Account will be updated"
+        return ret
+
+    send_request_put(command, data)
+    ret['result'] = True
+    ret['changes'] = data
+    ret['comment'] = "User Account has been updated"
+    return ret
diff --git a/_states/avinetworks.py b/_states/avinetworks.py
index 9b7cba2..5e8ec86 100644
--- a/_states/avinetworks.py
+++ b/_states/avinetworks.py
@@ -100,6 +100,17 @@
           - name: avi03
             addr: 172.17.32.232
 
+Enforce the useraccount update
+------------------------------
+
+.. code-block:: yaml
+
+    update admin password:
+      avinetworks.useraccount_update:
+        - old_password: password1*
+        - new_password: password12*
+        - full_name: Administrator  (optional)
+        - email: admin@domain.com   (optional)
 '''
 
 
@@ -213,3 +224,18 @@
     if len(ret['changes']) == 0:
         pass
     return ret
+
+
+def useraccount_update(old_password, new_password, full_name=None, email=None, **kwargs):
+    '''
+    Update used user account.
+
+    :param old_password:   Password used for this api connection
+    :param new_password:   Traffic sent to servers will use this destination server port unless overridden by the server's specific port attribute.
+    :param full_name:      The load balancing algorithm will pick a server within the pool's list of available servers
+    :param email:          The pool directs load balanced traffic to this list of destination servers. The servers can be configured by IP address, name, network or via IP Address
+    '''
+    ret = __salt__['avinetworks.useraccount_update'](old_password=old_password, password=new_password, full_name=full_name, email=email, **kwargs)
+    if len(ret['changes']) == 0:
+        pass
+    return ret
