Heratio Help Center article. Category: Integration.
DOI Management - User Guide
What is a DOI?
A Digital Object Identifier (DOI) is a persistent, unique identifier for digital content. DOIs are globally recognized and ensure that your archival records can be reliably cited and found, even if URLs change.
Example DOI: 10.12345/archive.2024.00001
When someone visits https://doi.org/10.12345/archive.2024.00001, they are automatically redirected to your record.
Why Use DOIs?
| Benefit | Description |
|---|---|
| Permanent Links | URLs change, DOIs don't - citations remain valid forever |
| Citability | Researchers can properly cite your records in publications |
| Discoverability | DOIs are indexed by DataCite, Google Scholar, and academic databases |
| Metrics | Track how often your records are accessed via DOI resolution |
| Standards Compliance | Required by many funding agencies and journals |
DOI States
+------------------------------------------------------------------+
| DOI LIFECYCLE |
| |
| +---------+ +------------+ +-----------+ |
| | DRAFT | ---> | REGISTERED | ---> | FINDABLE | |
| +---------+ +------------+ +-----------+ |
| | | | |
| | | | |
| Reserved DOI exists DOI resolves |
| in DataCite but hidden and is public |
| |
| | |
| v |
| +-----------+ |
| | DELETED | (Tombstone page shown) |
| +-----------+ |
+------------------------------------------------------------------+
| State | Resolves? | In DataCite Search? | Use Case |
|---|---|---|---|
| Draft | No | No | Reserve a DOI before publishing |
| Registered | Yes | No | DOI works but not publicly indexed |
| Findable | Yes | Yes | Fully public and discoverable |
| Deleted | Tombstone | No | Record removed, shows explanation |
DOI Dashboard
Navigate to: Admin -> DOI Management
The dashboard shows:
- Total DOIs minted
- DOIs by status (Findable, Registered, Draft, Failed)
- Queue pending count
- Recently minted DOIs
Quick Actions
| Button | Action |
|---|---|
| Batch Mint | Mint DOIs for multiple records at once |
| Bulk Sync | Update all DOI metadata in DataCite |
| Export | Download DOI list as CSV or JSON |
| Configuration | DataCite API settings |
Minting a DOI
Method 1: From Record Page
- Navigate to any archival record
- Look for the DOI badge in the header area
- If no DOI exists, click "Mint DOI"
- Confirm the action
- DOI is minted and displayed
+------------------------------------------------------------+
| Record: Annual Report 1952 |
| |
| +---------------------------------------------+ |
| | DOI: 10.12345/archive.2024.00001 | |
| | Status: Findable | |
| | [View on DataCite] [Update Metadata] | |
| +---------------------------------------------+ |
| |
| OR (if no DOI): |
| |
| +---------------------------------------------+ |
| | [Mint DOI] (Admin only) | |
| +---------------------------------------------+ |
+------------------------------------------------------------+
Method 2: Batch Minting
- Go to Admin -> DOI Management -> Batch Mint
- Select records by:
- Repository
- Level of description
- Publication status
- Date range
- Preview selected records
- Click "Mint DOIs"
- Records are queued for minting
Method 3: Auto-Mint (If Configured)
When enabled, DOIs are automatically minted when:
- A record is published
- Record meets configured criteria (level, repository, etc.)
Managing DOIs
View DOI Details
- Go to Admin -> DOI Management -> Browse
- Click on any DOI to see:
- Full metadata
- Resolution status
- Minting history
- DataCite sync status
Update DOI Metadata
When record metadata changes, the DOI metadata in DataCite should be updated:
- Automatic: Bulk Sync updates all DOIs
- Manual: Click "Update" on individual DOI view
# CLI: Sync all DOI metadata
php symfony doi:sync --all
# CLI: Sync specific DOI
php symfony doi:sync --id=123
Verify DOI Resolution
- Go to DOI view page
- Click "Verify Resolution"
- System checks if DOI resolves correctly
Deactivating DOIs
When a record is deleted or should no longer be accessible:
Via Web Interface
- Go to Admin -> DOI Management -> Browse
- Find the DOI
- Click "Deactivate"
- Enter reason for deactivation
- Confirm
Via CLI
# Deactivate by DOI record ID
php symfony doi:deactivate --id=123 --reason="Record deleted"
# Deactivate by object ID
php symfony doi:deactivate --object-id=456 --reason="Duplicate record"
# List all deactivated DOIs
php symfony doi:deactivate --list-deleted
What Happens?
- DOI state changes to "deleted" in DataCite
- DOI still resolves but shows a tombstone page
- Record remains in your database for audit
- Can be reactivated if needed
Queue Management
DOI operations are processed via a queue to avoid API rate limits:
- Go to Admin -> DOI Management -> Queue
- View pending, processing, completed, and failed jobs
- Retry failed jobs
- Cancel pending jobs
Queue Statuses
| Status | Meaning |
|---|---|
| Pending | Waiting to be processed |
| Processing | Currently being minted |
| Completed | Successfully minted |
| Failed | Error occurred (can retry) |
Export DOI Data
Via Web Interface
- Go to DOI Dashboard
- Click Export dropdown
- Choose CSV or JSON format
- File downloads automatically
Export Columns
| Column | Description |
|---|---|
| DOI | The full DOI string |
| Title | Record title |
| Status | Current DOI state |
| Minted Date | When DOI was created |
| URL | Target URL |
| Repository | Source repository |
Reports
Navigate to: Admin -> DOI Management -> Reports
Available reports:
- DOIs minted per month
- DOIs by repository
- DOIs by status
- Failed minting attempts
- Queue processing times
Configuration
Navigate to: Admin -> DOI Management -> Configuration
Required Settings
| Setting | Description |
|---|---|
| DataCite Repository ID | Your DataCite repository identifier |
| DataCite Password | API password from DataCite Fabrica |
| DOI Prefix | Your assigned prefix (e.g., 10.12345) |
| Environment | Test or Production |
Optional Settings
| Setting | Description |
|---|---|
| Auto-Mint | Automatically mint DOIs on publish |
| Default State | Initial DOI state (draft, registered, findable) |
| URL Template | Pattern for target URLs |
| Shoulder | Sub-prefix for organization |
Test Connection
Click "Test Connection" to verify your DataCite credentials before saving.
CLI Commands
| Command | Description |
|---|---|
php symfony doi:mint --id=X |
Mint DOI for record X |
php symfony doi:mint --all --limit=100 |
Batch mint with limit |
php symfony doi:sync --all |
Sync all DOI metadata |
php symfony doi:sync --status=findable |
Sync only findable DOIs |
php symfony doi:deactivate --id=X |
Deactivate DOI |
php symfony doi:deactivate --reactivate --id=X |
Reactivate DOI |
Cron Jobs
Set up automatic DOI processing:
# Process DOI queue every 5 minutes
*/5 * * * * cd /usr/share/nginx/atom && php symfony doi:process-queue >> /var/log/atom/doi.log 2>&1
# Weekly metadata sync (Sundays at 4 AM)
0 4 * * 0 cd /usr/share/nginx/atom && php symfony doi:sync --all --limit=500 >> /var/log/atom/doi-sync.log 2>&1
Troubleshooting
DOI Not Resolving
- Check DOI status is "findable" or "registered"
- Verify target URL is accessible
- Allow 24 hours for DataCite propagation
- Use "Verify Resolution" to check
Minting Failed
- Check queue for error message
- Verify DataCite credentials
- Check required metadata is present (title, creator, year)
- Ensure API quota not exceeded
Metadata Not Updating
- Run
php symfony doi:sync --id=Xfor specific DOI - Check DataCite API response
- Verify record has all required fields
Best Practices
- Test First: Use DataCite test environment before production
- Batch Wisely: Don't mint DOIs for unpublished records
- Monitor Queue: Check failed jobs regularly
- Sync Regularly: Keep DOI metadata current with records
- Document: Add DOI policy to your repository guidelines
Integration with Other Systems
The DOI is available via:
- API:
GET /api/doi/status/{recordId} - OAI-PMH: Included in Dublin Core exports
- EAD3: Added to
<unitid>element - Record Display: Badge shown on public pages
Need Help?
- DataCite Support: https://support.datacite.org
- Test Environment: https://doi.test.datacite.org
- System Administrator: For API credential issues
Last updated: February 2026 Part of the AHG Extensions for Heratio 2.10