Documentum virtual documents

A virtual document (VD) is a SysObject that owns an ordered tree of other SysObjects. The root is still a document — type tag 09, the dm_document family — not a folder. Folder objects (type tag 0b) cannot be components.

r_is_virtual_doc

Non-zero on an object that has been used as a VD root (commonly 1). The flag does not make it a different type. Components of a VD can themselves be virtual documents; that is how you get depth.

select object_name, r_is_virtual_doc
from dm_sysobject
where r_is_virtual_doc > 0

dmr_containment

Each parent/child link is a dmr_containment object: parent id, component id, order, and the binding that decides which version of the child you get when the tree is resolved. You do not store a folder path on the VD; membership is this containment row, not i_folder_id.

select parent_id, component_id, order_no, version_label
from dmr_containment
where parent_id = id('09xxxxxxx')

Binding

Binding What you get at resolve time
CURRENT Whatever version of the component carries CURRENT when you open the VD. Late. A later checkin of the child shows up in the parent.
Version Early. The containment points at one version’s object id. Later checkins of the child do not replace it.
Label Follow a symbolic version label on the component (not necessarily CURRENT). If that label moves, so does the binding.
Snapshot An assembly taken at a point in time. Component versions are recorded so later edits of the children do not change what the snapshot contains.

Freeze and unfreeze

r_frozen_flag marks a frozen VD or assembly: components cannot be added, removed, or rebound until you unfreeze. r_immutable_flag is the broader “this object may not be modified” bit (also used by retention and other policies). Freeze typically sets both; unfreeze clears the freeze flag when policy still allows it. Immutable without frozen is a different lock — do not treat the two attributes as synonyms.

DQL: IN DOCUMENT

Direct children of one VD. Substitute the root’s id; do not paste a real one into notes or tickets.

select object_name
from dm_sysobject
in document id('09xxxxxxx')

The whole tree uses DESCEND (that spelling — not DESCENT):

select object_name
from dm_sysobject
in document id('09xxxxxxx') descend

Pin a version of the root with VERSION:

select object_name
from dm_sysobject
in document id('09xxxxxxx') version 'CURRENT'

Object ids are 16 hex characters. Examples use 09xxxxxxx: 09 is the dm_document type tag, and the rest is x because those digits include the docbase id.