> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bagofwords.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenText Documentum

> Browse, search and read documents from a Documentum repository over REST Services, with the repository's own ACLs applied to every read

<Note>
  The OpenText Documentum connector is part of the **Enterprise Edition**, and is currently in **beta**.
</Note>

Bag of words reads an OpenText Documentum repository through **Documentum REST Services** (`https://host/dctm-rest`, hypermedia JSON; a D2 REST root also works). Documents become a searchable **file catalog** the agent can grep and read — not tables.

The connector is **read-only**. Documents are addressed by their stable `r_object_id`, and display paths are shown relative to the configured root folder.

## How scope and security work

Two independent limits apply to every call, and both are re-enforced on **every read** rather than only at indexing time:

1. **The connection's scope** — the root folder plus any include patterns. Anything outside it is invisible *and* unreadable.
2. **Documentum's own ACLs** — every call runs as the authenticated identity, so the repository does the security trimming. Nothing is pre-authorized by Bag of words.

That second point is what makes the per-user modes worth setting up: with OTDS impersonation or OTDS sign-in, each person's session is genuinely theirs, and Documentum evaluates its ACLs against their identity.

## Before you start

* The **REST Services base URL** and the **repository (docbase) name**. One connection reads one repository.
* An identity to connect as — a repository user, or a confidential OTDS OAuth client.
* For per-user access: **Allow impersonation** enabled on the OTDS OAuth client *and* on the repository resource.
* Decide the root folder before connecting. Narrowing scope later means re-indexing.

## Fields

| Field | Required | Default | Notes |
| :- | :- | :- | :- |
| `rest_url` | Yes | — | Documentum REST Services base URL, e.g. `https://dctm.example.com/dctm-rest`. |
| `repository` | Yes | — | Repository (docbase) name, e.g. `corp_docs`. |
| `root_path` | No | `/` | Cabinet or folder path bounding the connection, e.g. `/Finance/Reports`. Everything outside it is invisible and unreadable. |
| `include_globs` | No | — | Glob patterns relative to the root, comma-separated. When set, **only** matching documents are visible and readable — e.g. `2026/**/*.pdf`, `**/*.xlsx`. `**` crosses subfolders, `*` is one segment. |
| `object_types` | No | — | Comma-separated document types to expose, e.g. `bow_invoice, dm_document`. Blank (or including `dm_document`) exposes every type. |
| `recursive` | No | `true` | Enumerate subfolders when listing and indexing. |
| `index_mode` | No | `metadata` | `metadata` caches the document list on a schedule; `none` caches nothing and the agent lists live every time. **Reads are always live** either way. |
| `max_catalog_objects` | No | `5000` | Safety cap on documents enumerated into the catalog. Narrow the root folder or include patterns rather than raising this. |
| `max_file_size_mb` | No | `50` | Oversized downloads are rejected before parsing. Files are never silently truncated. |
| `allow_http` | No | `false` | Unencrypted HTTP, for an isolated test lab only. |

## Authentication modes

**Username / Password — `userpass`** (the default; scopes: system and user)

| Field | Required | Notes |
| :- | :- | :- |
| `username` | Yes | Documentum login name (`user_login_name`). On OTDS-backed repositories this is usually the UPN or `userid@partition`. |
| `password` | Yes | That user's password. |

HTTP Basic against the repository. At user scope this is the bring-your-own-password path.

<Warning>
  This mode does not work for **Entra-only OTDS users**, who have no password OTDS can validate. Use OTDS impersonation or OTDS sign-in for them.
</Warning>

**OTDS OAuth client (service identity) — `otds_client`** (system scope only)

| Field | Required | Notes |
| :- | :- | :- |
| `otds_url` | Yes | OpenText Directory Services base URL, e.g. `https://otds.example.com`. The `/otdsws` suffix is optional. |
| `client_id` | Yes | A confidential OTDS OAuth client. Enable **Allow impersonation** on it (and on the repository resource) if you want per-user access on top. |
| `client_secret` | Yes | That client's secret. |
| `partition` | No | Partition the users live in, appended as `userid@partition` when a login carries no `@`. Leave blank if logins already include it. |

A client-credentials grant: the connection acts as the OAuth client's own service user. This is **system scope only** — the client secret is admin-equivalent.

**OTDS impersonation — `otds_impersonation`** (user scope, an overlay)

| Field | Required | Notes |
| :- | :- | :- |
| `documentum_login` | Yes | Your Documentum user (`user_login_name`), e.g. `jane.doe@corp.example.com` or `jdoe@Corp` — usually your work email or UPN. |

The per-user path that stores **no secret per user**. The admin's OTDS client stays on the connection and performs an RFC 8693 token exchange to mint a token *for* each user, so the Documentum session — and its ACL evaluation — is genuinely theirs. It layers over the connection's `otds_client` credentials.

**Sign in with OTDS — `oauth`** (user scope, no fields). Each user completes an OTDS authorization-code flow and Bag of words stores and refreshes their token. Requires the OTDS client to be configured on the connection's system credentials.

<Note>
  Per-user authentication on file connections does not require an Enterprise license — but the Documentum connector itself does. See [Authentication and access](/data-sources/authentication).
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="A document is visible in Documentum but not in Bag of words">
    It is outside the connection's scope. Check `root_path` first, then `include_globs` — when include patterns are set, anything not matching them is both invisible and unreadable.
  </Accordion>

  <Accordion title="Fewer documents than expected were indexed">
    The catalog hit `max_catalog_objects` (5,000 by default). Narrow the root folder or add include patterns instead of raising the cap.
  </Accordion>

  <Accordion title="Impersonation is refused">
    **Allow impersonation** has to be enabled on the OTDS OAuth client *and* on the repository resource. Both.
  </Accordion>

  <Accordion title="An Entra-only user cannot connect with their password">
    They have no password OTDS can validate. Put them on OTDS impersonation or OTDS sign-in.
  </Accordion>

  <Accordion title="A large file fails to read">
    It exceeded `max_file_size_mb` (50 MB by default) and was rejected before parsing, rather than truncated.
  </Accordion>
</AccordionGroup>

## Related

* [SharePoint Server (on-prem)](/data-sources/connectors/sharepoint-server) — the same shape of connection for on-premises SharePoint libraries.
* [Files and Directories](/data-sources/connectors/files-and-directories) — file shares mounted on the backend host.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.