Site-wide digital asset scanning, usage tracking, exportable reports, and ADA Title II–compliant archiving tools.
Drupal Compatibility: Drupal 10.x and 11.x
- File Scanning: Scans managed files, media entities, remote videos (YouTube/Vimeo), and orphan files
- Usage Tracking: Identifies which pages/content use each asset, including menu links
- Filtering: Filter by file type, source type, usage status, and more
- CSV Export: Download inventory reports with formatted file sizes
- Batch Processing: Handles large sites with thousands of files
- ADA Archive System: Archive documents for ADA Title II compliance
- Dual-Purpose Archives: Legacy Archives (pre-deadline, ADA exempt) vs General Archives (post-deadline)
- Archive-in-Use Support: Optionally archive documents while still referenced in content
- Link Routing: Automatic redirection to Archive Detail Pages for archived content
- Admin-Only Visibility: Control public vs admin-only disclosure of archived content
- Manual Entries: Archive web pages and external URLs
- Configurable Labels: Customize or disable the "(Archived)" label on links
- External URL Routing: Archived external URLs route to Archive Detail Page with normalized URL matching
- Archive Feature Toggle: Enable/disable archive functionality for phased rollout
This module will automatically install these dependencies:
views_data_export- For CSV export functionalitycsv_serialization- For CSV format supportbetter_exposed_filters- For enhanced filter UI
Choose your preferred installation method, then enable the module:
- Composer (Recommended) - Standard Composer workflow
- Install to custom directory - For institution-owned modules
- Manual Installation - Download and place manually
- Git Clone - Clone repository directly
- Enable the Module - Final step for all methods
- Configure Permissions - Assign user access
Add the GitHub repository to your project's composer.json.
Option A: Using Composer command
composer config repositories.digital_asset_inventory vcs https://github.com/ucsb/digital_asset_inventoryOption B: Manual edit
Add to the repositories section of your project's root composer.json:
{
"repositories": {
"digital_asset_inventory": {
"type": "vcs",
"url": "https://github.com/ucsb/digital_asset_inventory"
}
}
}composer require ucsb/digital_asset_inventoryThis downloads the module to web/modules/contrib/digital_asset_inventory
and automatically installs required dependencies:
drupal/views_data_exportdrupal/csv_serializationdrupal/better_exposed_filters
If your project keeps site-specific or institution-owned modules in
web/modules/custom instead of web/modules/contrib:
Step 1: Add the repository (same as above - see Step 1)
Step 2: Add an installer path override in your project's root composer.json.
The package-specific entry must appear before the generic type:drupal-module
entry to take precedence:
{
"repositories": {
"digital_asset_inventory": {
"type": "vcs",
"url": "https://github.com/ucsb/digital_asset_inventory"
}
},
"extra": {
"installer-paths": {
"web/modules/custom/{$name}": ["ucsb/digital_asset_inventory", "type:drupal-custom-module"],
"web/modules/contrib/{$name}": ["type:drupal-module"]
}
}
}Step 3: Require the package
composer require ucsb/digital_asset_inventoryIf the module is already installed to contrib, remove and reinstall:
composer remove ucsb/digital_asset_inventory
composer require ucsb/digital_asset_inventoryThe module will now install to web/modules/custom/digital_asset_inventory.
If you prefer not to use Composer:
- Download or clone the repository to
web/modules/contrib/digital_asset_inventory(orweb/modules/custom/digital_asset_inventory) - Install the required dependencies via Composer or manually
- Enable the module with Drush or the Extend page
cd web/modules/custom
git clone https://github.com/ucsb/digital_asset_inventory.gitThen install dependencies:
composer require drupal/views_data_export drupal/csv_serialization drupal/better_exposed_filtersAfter installing via any method above, enable the module:
drush en digital_asset_inventory -y
drush crNavigate to People > Permissions and assign permissions based on user roles:
| Permission | Description |
|---|---|
| View digital asset inventory | Browse the inventory page |
| Scan digital assets | Run the asset scanner |
| Delete digital assets | Delete assets from inventory |
| Archive digital assets | Manage archive records and add internal notes |
| View digital asset archives | View archive management and notes (read-only, for auditors) |
| Administer digital assets | Full access including settings |
Recommended role assignments:
| Role | Permissions |
|---|---|
| Site Editor | View, Scan |
| Site Manager | View, Scan, Delete |
| Accessibility Staff | View, Scan, Archive |
| Internal Auditor | View Digital Asset Archives (read-only) |
| Site Administrator | All permissions |
Delete entities in order: notes, archives, usage, items.
drush entity:delete dai_archive_note -y
drush entity:delete digital_asset_archive -y
drush entity:delete digital_asset_usage -y
drush entity:delete digital_asset_item -y
drush pm:uninstall digital_asset_inventory -y
drush crFor detailed documentation on scanning, filtering, archiving, and troubleshooting, see the Quick Reference Guide.
Quick start:
- Navigate to
/admin/digital-asset-inventory - Click "Scan Site for Digital Assets"
- View results, filter, and export CSV reports
Key routes:
| Path | Purpose |
|---|---|
/admin/digital-asset-inventory |
Main inventory |
/admin/digital-asset-inventory/archive |
Archive management |
/admin/digital-asset-inventory/archive/{id}/notes |
Internal notes for archive |
/admin/config/accessibility/digital-asset-inventory |
Module settings |
/archive-registry |
Public Archive Registry |
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | Dec 2025 | Initial release with full feature set |
| 1.0.1 | Dec 2025 | Added compressed file support (zip, tar, gz, 7z, rar) |
| 1.1.0 | Dec 2025 | Added ADA Title II archive system with public Archive Registry |
| 1.2.0 | Dec 2025 | Archive audit safeguards: immutable classification date, visibility toggle, file deletion with record preservation, CSV audit export |
| 1.3.0 | Jan 2026 | Private file support: detection of private files, File Storage/File Access filters, login prompts for anonymous users |
| 1.4.0 | Jan 2026 | Exemption void status: automatic detection when Legacy Archive content is modified after archiving |
| 1.5.0 | Jan 2026 | Archive feature toggle, Drupal 11 compatibility, manual archive entries for pages/URLs, admin menu icon |
| 1.6.0 | Jan 2026 | Source type label updates, usage tracking for external assets and manual uploads, category filter fixes |
| 1.7.0 | Jan 2026 | Archived content banner, edit protection with acknowledgment checkbox, automatic exemption voiding |
| 1.8.0 | Jan 2026 | Dual-purpose archive: Legacy Archives (pre-deadline, ADA exempt) vs General Archives (post-deadline) |
| 1.9.0 | Jan 2026 | Simplified archive lifecycle: removed requeue functionality, unarchiving sets archived_deleted status |
| 1.10.0 | Jan 2026 | WCAG accessibility improvements, visibility defaults to Public |
| 1.11.0 | Jan 2026 | Theme-agnostic admin UI with CSS variables for theming |
| 1.12.0 | Jan 2026 | Internal notes system: append-only notes log, dedicated notes page, archived_by records executor |
| 1.13.0 | Jan 2026 | Taxonomy term archiving, page URL autocomplete for manual archive form |
| 1.14.0 | Jan 2026 | Permission simplification: view digital asset archives for read-only auditor access |
| 1.15.0 | Jan 2026 | Usage page Media-aware enhancements: thumbnail, alt text status, Media actions |
| 1.16.0 | Jan 2026 | Remote video media scanning (YouTube, Vimeo via Media Library) |
| 1.17.0 | Jan 2026 | Archive-in-use support: archive documents/videos while still referenced in content |
| 1.18.0 | Jan 2026 | Menu link file scanning: detect file references in menu links |
| 1.19.0 | Jan 2026 | Archive link routing: automatic redirection to Archive Detail Pages |
| 1.20.0 | Jan 2026 | Admin-only visibility controls disclosure, conditional display for anonymous users |
| 1.21.0 | Feb 2026 | Universal archive link rewriting via Response Subscriber, Twig extension for templates |
| 1.22.0 | Feb 2026 | Configurable archived link label, external URL routing with normalized matching, archive badge for external assets |
| 1.23.0 | Feb 2026 | Archived page banner contextual notes for external resources: detects archived external URLs and displays appropriate status notes |