VQL: query Vault users and group membership

In Documentum you start from dm_user / dm_group. In Vault, user lookup is a VQL query against the users target, and group membership is a separate object model (group__sys, group_membership__sys). Do not look for a Documentum-style USER keyword in VQL.

List users

Basic active-user inventory:

SELECT id, user_name__v, user_first_name__v, user_last_name__v,
       user_email__v, security_profile__v, license_type__v, status__v
FROM users
WHERE status__v = 'active__v'
ORDER BY user_name__v
MAXROWS 200

Find one account by login name (often an email-shaped string in Vault):

SELECT id, user_name__v, user_email__v, security_profile__v, license_type__v, status__v
FROM users
WHERE user_name__v = '[email protected]'

Filter by license when you are auditing seat types:

SELECT id, user_name__v, license_type__v, status__v
FROM users
WHERE license_type__v = 'full__v'
  AND status__v = 'active__v'
MAXROWS 500

Field API names vary slightly by Vault version and application family. When a field is missing, discover it rather than guessing:

SHOW FIELDS FROM users

No DQL-style USER keyword

VQL does not expand a session keyword the way Documentum expands USER. To answer “groups for this person,” pass the Vault user id or user_name__v you already know from the API session or Admin UI. Typical flow:

  1. Resolve the user row from users.
  2. Use that id against membership queries.

Groups

User-managed groups:

SELECT id, name__v, label__v, type__sys
FROM group__sys
WHERE type__sys = 'user_managed__sys'
MAXROWS 200

Find a group by API name:

SELECT id, name__v, label__v, type__sys
FROM group__sys
WHERE name__v = 'approvers__c'

Group membership

Which groups contain a given user (by user id):

SELECT group_id__sys, group__sysr.name__v, group__sysr.label__v
FROM group_membership__sys
WHERE user__sysr.id = 12345

Or filter by login on the related user:

SELECT group_id__sys, group__sysr.name__v, group__sysr.label__v
FROM group_membership__sys
WHERE user__sysr.user_name__v = '[email protected]'

Which users sit in a group:

SELECT user_id__sys, user__sysr.name__v, user__sysr.email__sys, user__sysr.status__v
FROM group_membership__sys
WHERE group__sysr.name__v = 'approvers__c'

Relationship field names (user__sysr, group__sysr) are the down-relationship aliases Vault exposes on membership. If a relationship name differs in your Vault, run:

SHOW RELATIONSHIPS FROM group_membership__sys

Security profile is not group membership

security_profile__v on the user answers “what capability pack does this account carry?” Group membership answers “which named groups include this account?” Both matter for access debugging, and neither replaces document roles or lifecycle state security. That layered model is covered in the series note on Permission Sets vs ACLs.

Quick Documentum → Vault map

DocumentumVault / VQLWatch out for
dm_userFROM usersDifferent field names; discover with SHOW FIELDS
USER keywordPass explicit user id / nameNo session keyword in VQL
dm_groupgroup__sysGroups are queryable objects, not ACL entries
users_names / i_all_users_namesgroup_membership__sysMembership is a join object, not a repeating attribute dump
Group nesting via groups_namesVault group types / membership modelDo not assume Documentum nesting semantics

Habits