DAM (Digital Asset Management) Setup for 1C-Bitrix
We configure DAM on top of the 1C-Bitrix media library. The standard fileman module is a simple file tree without metadata, full-text search, or file-level permissions. Result: 30–40% duplicates, finding a file takes 15 minutes, no version control. Our engineers with 5+ years of experience solve the problem: we add hierarchical tags, UF fields, link files to products without duplication, and set up versioning. A typical project pays for itself in 3–4 months by cutting duplicates, leading to significant savings on storage.
Why the Standard Media Library Falls Short
The b_file table is the central registry of all files. It contains basic fields: ID, MODULE_ID, HEIGHT, WIDTH, FILE_SIZE, CONTENT_TYPE, SUBDIR, FILE_NAME, ORIGINAL_NAME, DESCRIPTION, HANDLER_ID. On top of it, the media library adds a folder structure (b_medialib_collection) and file-to-collection links (b_medialib_item). Each item has only a KEYWORD field (comma-separated tags) and DESCRIPTION. This is insufficient for a full DAM. Missing: hierarchical tags, versioning, per-file permissions, and content-based search. We address these.
How to Integrate DAM with the Product Catalog?
The main challenge is linking media files to products so that one image can be used in multiple items without file duplication. In Bitrix, this is done via an infoblock property of type "Link to media library elements" (E:MEDIALIB). When the file in the media library changes, all linked products automatically get the updated version. We also set up automatic linking via agents: when an image is uploaded to the media library, a product is created or its visuals are updated. This reduces manual linking time by 95%.
What UF Fields Are Needed for DAM?
User fields (UF) are added via the interface: Settings → Users → User fields → Object type MEDIALIB_ITEM. Typical set:
- UF_COPYRIGHT – copyright holder (string)
- UF_LICENSE – license type (list)
- UF_EXPIRY_DATE – rights expiry date (date)
- UF_USAGE_RIGHTS – usage scope (multiple list)
- UF_PHOTOGRAPHER – author (string)
After adding, fields are accessible via CMedialibItem::GetList() API. For full-text search on UF fields, we activate the search module and write an indexing agent.
| UF Field | Type | Example Value |
|---|---|---|
| UF_COPYRIGHT | string | "Acme Inc." |
| UF_LICENSE | list | "royalty-free", "editorial" |
| UF_EXPIRY_DATE | date | 2025-12-31 |
| UF_USAGE_RIGHTS | multiple | "web", "print", "social" |
| UF_PHOTOGRAPHER | string | "John Doe" |
Comparison: Standard Media Library vs DAM (Our Setup)
| Feature | Standard Media Library | DAM After Setup |
|---|---|---|
| Metadata | Only Name, Keywords, Description | Custom UF fields (license, author, rights expiry) |
| Search | By Name and Keywords | Full-text search over all UF fields via search module |
| Tag hierarchy | Absent | Multi-level dictionaries (HL blocks) linked to items |
| Product linking | No automatic | Via infoblock property E:MEDIALIB, sync agents |
| Versioning | None | Based on media library events |
| Access rights | Only per collection | Per file + custom groups |
| File search time | 5–15 minutes | 1–2 seconds |
| Duplicates | 30–40% | <5% |
Media Library Search: Custom Query
Standard search works only on NAME and KEYWORD. For UF field search you need a custom query:
$items = CMedialibItem::GetList([ 'order' => ['ID' => 'DESC'], 'filter' => [ 'KEYWORD' => 'product-photo', 'UF_LICENSE' => 'royalty-free', ], 'arSelectFields' => ['ID', 'NAME', 'FILE_ID', 'UF_COPYRIGHT'], ]); For full-text search over all metadata, activate the search module—in CSearch::Index() we index UF fields. We set up an agent with periodic indexing every 15 minutes.
Upload via API: Example
Programmatic file upload to media library with metadata:
CModule::IncludeModule('fileman'); $fileId = CFile::SaveFile([ 'name' => 'product-main.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/upload.jpg', 'MODULE_ID' => 'fileman', ], 'medialib'); $itemId = CMedialibItem::Add([ 'COLLECTION_ID' => $collectionId, 'FILE_ID' => $fileId, 'NAME' => 'Фото товара', 'KEYWORD' => 'каталог, сезон', 'FIELDS' => [ 'UF_COPYRIGHT' => 'Acme Studio', 'UF_LICENSE' => 'royalty-free', ], ]); Typical Mistakes When Setting Up DAM
- Not indexing UF fields for search – users won't find files by license or author.
- Using one field for different media types (photo, video, docs) – create separate UF fields instead.
- Not configuring collection access rights – confidential materials become accessible to all.
Work Process: From Audit to Deployment
- Audit – analyze current media library structure, file storage, duplicate count, metadata. (1–2 days)
- Design – design collection hierarchy, define UF fields, access rights, catalog linking scheme. (1 day)
- Implementation – create UF fields, configure search, versioning, agents, write custom display components. (3–5 days)
- Testing – verify upload, search, product linking, access rights, performance. (1–2 days)
- Deployment – release to production, train editors. You receive full documentation and source code.
Timeline – from 1 to 3 weeks depending on scope. We evaluate your project for free in 1 day. Contact us for a consultation.
What’s Included in the Setup
- Audit of current media library structure and file storage
- Creation of collection hierarchy tailored to the project
- Addition of UF fields for extended metadata
- Configuration of media library–catalog linking
- Implementation of extended metadata search
- Configuration of collection access rights by user groups
- Versioning via events (optional)
- Integration with REST API for external access
We guarantee the functionality specified in the technical requirements. Order the setup—get a DAM that reduces file search time by 3x and lowers duplicates to <5%. More details on media library capabilities in the official documentation.







