The admin account is being locked multiple times without any intentional login attempts or known user activity, which appears to be unexpected behavior and requires further investigation. Under standard conditions, the account lockout mechanism functions as expected—after multiple failed login attempts (e.g., on the third invalid credential entry), the account is locked. This behavior was validated through testing with incorrect credentials.
However, there are also instances where the admin account is being locked without any failed login attempts or increments in the “bad login count,” which is inconsistent with expected system behavior. This suggests that the lockouts may be triggered by background processes, system-level activities, or an unidentified automated mechanism rather than manual login failures. Assistance is required to identify the root cause and provide recommendations to prevent these unexpected account lockouts.
Clarity All Supported Version
Since standard failed password attempts always increment the bad login counter before locking the account, a zero bad login count strongly suggests that the lockout is not being triggered by a user or an automated script entering incorrect passwords through the Clarity login interface or XOG API. Instead, it appears that the account status is being explicitly updated to “Locked” by an external mechanism, an automated background process, or a direct database update.
Below are the most probable causes
Recommended Diagnostic Steps: To identify the exact trigger, my recommendation would be to determine when the lockout occurs and what process is updating the account status.
select
u.id,
u.user_name,
u.user_status_id,
u.last_updated_date,
u.last_updated_by,
(
select
user_name
from
cmn_sec_users
where
id = u.last_updated_by ) as updated_by_user
from
cmn_sec_users u
where
u.user_name = 'admin';select
p.process_code,
nls.name as process_name,
step.step_code,
action.action_code,
script.script_text
from
bpm_def_processes p
join bpm_def_process_versions pv on
p.id = pv.process_id
join bpm_def_stages stage on
stage.process_version_id = pv.id
join bpm_def_steps step on
step.stage_id = stage.id
join bpm_def_step_actions action on
action.step_id = step.id
join cmn_custom_scripts script on
script.id = action.script_id
join cmn_captions_nls nls on
p.id = nls.pk_id
and nls.table_name = 'BPM_DEF_PROCESSES'
and nls.language_code = 'en'
where
LOWER(script.script_text) like '%admin%'
and ( LOWER(script.script_text) like '%password%'
or LOWER(script.script_text) like '%secret%' );