-
Notifications
You must be signed in to change notification settings - Fork 22
Features
CLARIN-DSpace extends DSpace 7 with features tailored to the CLARIN research infrastructure. This page catalogues every major extension — from the licensing framework and persistent-identifier subsystem to submission-workflow enhancements and operations tooling.
Tip: Each section links to the dedicated wiki page (where one exists) and to the relevant source code.
A comprehensive license administration framework that lets administrators define custom End User Licenses with configurable labels (PUB / ACA / RES), extended labels (BY, SA, NC, …), and per-license confirmation requirements. Submitters choose a license during submission — either via the Public License Selector guided wizard or by picking directly from the repository's license list.
When a non-admin user downloads a bitstream, the system can require a multi-step license agreement: the dialog collects user name, organisation, country, intended use, etc., depending on the license definition. Confirmation can be required always, only once, or not at all. An "allow anonymous" mode lets unauthenticated users agree too.
📖 Clarin-Licenses § License Agreement Dialog
A dedicated submission step lets submitters select a Creative Commons license for their item, alongside or instead of a CLARIN custom license.
Submission form fields can carry Access Control Lists that restrict read/write access per user or group. This enables admin-only fields (hidden from regular submitters) and fine-grained editing permissions on specific metadata.
Time-limited tokens enable secure, one-off bitstream downloads — useful for email-based distribution workflows where a user receives a download link with an embedded token that expires after a configurable period.
CLARIN-DSpace extends the standard DSpace handle subsystem with:
- Per-community handle prefixes — different communities can mint handles under different prefixes (with optional sub-prefixes).
- External handles — handle records that point to an arbitrary URL rather than a DSpace object, useful for aliasing old handles or linking to external services.
-
Content negotiation — appending
@format=cmdito a handle URL resolves to the CMDI metadata record via OAI-PMH instead of the landing page.
📖 PIDs-Persistent-Identifiers · Handle Server Setup (v7)
As an alternative to running a local handle server, CLARIN-DSpace can provision handles through the EPIC v2 API. The PID service backend (PIDServiceEPICv2) communicates with an EPIC endpoint to create, update, and resolve handles remotely. Configuration lives in lr.pid.* properties in clarin-dspace.cfg.
An administrative UI for browsing, creating, editing, and deleting handles. Supports creating external handles, editing internal/external handles with optional archiving of old values, and bulk-changing the global handle prefix (with automatic archiving of old handles as external redirects).
📖 For-users § Manage Handle table
DataCite DOI minting integrated into the item lifecycle. DOIs go through reservation → registration → update phases, managed by doi-organiser cron jobs. Versioned DOIs are supported via ClarinVersionedDOIIdentifierProvider. Custom DIM2DataCite.xsl crosswalks handle CLARIN-specific resource types.
📖 DOI
This feature allows admin to setup the DOI prefix and credentials per community, so for example the items in community A have DOIs started with '10.3897/rio.7-', while the items in community B have DOIs started with '10.3896/rio.6-'.
PR: https://github.com/ufal/clarin-dspace/pull/1370
An ORCID authority provider that resolves author identifiers without relying on Solr. ORCID IDs are stored as authority keys on dc.contributor.author and are exposed in DataCite dissemination.
The ROR integration allows to store ROR identifier to dc.publisher authority field (in metadatavalue table), that links this metadata to external ROR registry(Research Organization Registry). In the submission page -> publisher field, user is than allowed to search and select a subject registered in ROR.
PR: https://github.com/ufal/clarin-dspace/pull/1352
A "Save & Share" button generates a unique link that collaborators can use to assume the submitter role and continue an unfinished submission. The link is also emailed to the original submitter and remains valid until the submission is completed.
Composite field types group multiple sub-fields into a single form widget. Pre-defined complex types include:
- contact_person — given name, surname, email, affiliation
- funding — funding type, project code (with autocomplete), organisation, project name, OpenAIRE ID
- sizeInfo — size value + unit dropdown
Complex definitions are declared in submission-forms.xml under <form-complex-definitions> and referenced by fields via <input-type complex-definition-ref="…">complex</input-type>.
Using the ACL mechanism, fields can be restricted so that only administrators see and edit them. For example, the local.hasCMDI field ("Are you going to upload a CMDI file?") is hidden from regular submitters.
Submission fields can offer autocomplete suggestions from two sources:
-
Solr indexes — e.g.
solr-publisher_ac,solr-author_ac,solr-subject_ac,solr-handle_title_ac -
Static JSON files — e.g.
json_static-iso_langs.jsonfor ISO language codes
Configured per-field in submission-forms.xml via autocomplete-custom="…".
When the admin-only local.hasCMDI flag is set, the submitter can upload a .cmdi file. The system automatically moves it from the ORIGINAL bundle to a dedicated METADATA bundle (CMDIFileBundleMaintainer), where it is exposed via the OAI-PMH CMDI crosswalk (lindat_cmdi.xsl).
📖 WebLicht-Webservice-Registration-through-repository (CMDI workflow used for WebLicht registration)
Two custom submission steps enforce license selection:
- License Distribution — the submitter picks a license for the item.
- License Resource — maps the chosen license to the item's bitstreams.
A configurable notice/disclaimer displayed during submission.
Federated authentication via Shibboleth with DiscoJuice identity-provider discovery. The frontend loads DiscoJuice scripts dynamically and passes Shibboleth headers (SHIB-EMAIL, SHIB-NETID, SHIB-IDENTITY-PROVIDER, etc.) to the backend.
📖 Shibboleth · DiscoJuice setup · Shibboleth Accounts
When a user authenticates via Shibboleth for the first time, the system can automatically create an account using the IdP-provided attributes (email, name, organisation). If required attributes are missing, a dedicated error page guides the user. The backend implementation (ClarinShibAuthentication) also supports group mapping from Shibboleth headers.
A token-based email verification flow for user self-registration. The system generates a ClarinVerificationToken, sends a confirmation email, and activates the account upon verification. User metadata (name, organisation, etc.) is collected via ClarinUserMetadata entities.
Administrators and users can create time-limited API tokens for programmatic access. Tokens are created via the clarin-token CLI command or the REST API, with configurable maximum expiration (clarin.token.max.expiration.time.in.days). The encryption secret must be generated with dspace clarin-token -g.
📖 Personal Access Tokens · Release Notes § 2026.1
The "reference box" on item pages shows:
- Citation — formatted citation text with export in BibTeX, RIS, JSON, and other formats.
-
Featured services — links to external services (e.g. PML-TQ, KonText, TEITOK) associated with the item via
local.featuredService.<alias>metadata.
Service definitions live in clarin-dspace.cfg (featured.service.* properties). Association is done per-item via the Edit Item → Services tab.
Bitstreams can be previewed directly on the item page. The PreviewContent REST endpoint returns file listings (including directory trees for archives) and content previews. The frontend preview-section component renders file names, sizes, and descriptions.
Withdrawn or replaced items display a tombstone page instead of the full item view:
-
Replaced — shows the replacement destination from
dc.relation.isreplacedby. -
Withdrawn — shows the withdrawal reason from
local.withdrawn.reason.
Administrators see the full item with a withdrawal banner instead.
Users can download all bitstreams of an item as a single ZIP archive.
Enhanced versioning with CLARIN-specific versioned handle and DOI providers. The frontend displays version history with links to previous/next versions. Configuration options control whether submitters can create new versions (versioning.submitterCanCreateNewVersion) and whether previous versions remain archived (versioning.unarchive.previous.version).
📖 Versioning Guide · Versioning Theory
Webservices can be registered in the repository by submitting a CMDI metadata file to a dedicated collection. The collection is exposed via OAI-PMH, and WebLicht harvests the metadata to discover and integrate the service.
📖 WebLicht-Webservice-Registration-through-repository
Custom tracking of bitstream downloads and OAI-PMH requests via Matomo (formerly Piwik). Supports direct and cached tracking modes. Users can subscribe to periodic PDF statistics reports for specific items via MatomoReportSubscription.
A DB-backed health-check system (dspace health-report) that produces JSON snapshots covering general info, item summary, user summary, license summary, embargo check, and metadata check. Reports are stored in the report_result table. The dspace report-diff command compares two snapshots and produces an executive summary with deltas, optionally emailed to administrators.
Items that meet certain conditions get a <script type="application/ld+json"> block injected into their landing page, following the Google Dataset Search schema. Mapping is configurable via google-metadata.properties; items with blacklisted dc.type values or without bitstreams can be excluded.
📖 Support-for-Google-Dataset-Search
Bitstreams can be stored in S3-compatible object storage with optional presigned-URL direct downloads. Supports sync mode (dual local + S3 storage), configurable multipart uploads, and multiple deployment scenarios (new repo, retrofit existing repo).
📖 S3-Storage-Integration · S3 — CESNET
The file-downloader CLI script downloads a file from a URL and stores it as a bitstream on an item — useful for ingesting large files that cannot be uploaded through the browser.
Quality-assurance tasks that can be run against items, collections, or communities:
| Task | Key | Description |
|---|---|---|
| Required Metadata | requiredmetadata |
Checks that mandatory metadata fields are present |
| Metadata QA | metadataqa |
Quality checks on metadata values |
| Link Checker | checklinks |
Verifies URLs in metadata values |
| Handle Checker | checkhandles |
Verifies item handles resolve correctly |
| Register DOI | registerdoi |
Registers DOIs with DataCite |
| Profile Formats | profileformats |
Profiles bitstream content formats |
Tasks are registered in curate.cfg and can be invoked via CLI or the admin UI.
CLARIN-specific command-line tools:
| Command | Description |
|---|---|
clarin-token |
Create, invalidate, or generate encryption keys for Personal Access Tokens |
process-cleaner |
Clean up old process records (completed, failed, running) |
item-version-linker |
Link two items into a versioning relationship |
file-downloader |
Download a file from URL and add as bitstream |
file-preview |
Generate preview for files in item(s) |
health-report |
Generate a health-check snapshot |
report-diff |
Compare two health-report snapshots |
A set of import endpoints at /api/clarin/import/* for migrating data into CLARIN-DSpace:
- Handles, users (EPerson), licenses, user metadata, bitstreams, community/collection logos
REST API for reading and updating DSpace configuration files (e.g. item-submission.xml) at runtime. Controlled by config.admin.updateable.files property — only explicitly listed files can be modified.
A dedicated REST endpoint (/cmdi/oai-metadata) that returns CMDI-formatted metadata for items, supporting the CLARIN metadata infrastructure.
Getting Started
Features
- All Features — full categorised list
- CLARIN Licenses
- PIDs & Handles
- Featured Services / Refbox
- Field-Level Permissions
- File Previews
- Sharing a Submission
- Personal Access Tokens
- DOI Configuration per Community
- ROR Authority
Operations
- Kubernetes Deployment
- Samples (.env, Nginx)
- Nginx + Shibboleth
- Handle Server · Setup (v7)
- Shibboleth · DiscoJuice
- Shibboleth Accounts
- S3 Storage · CESNET S3
- Google Analytics
- Matomo
- Solr
- Logging
- Custom Namespace
- Health Report
For Users
Development
Reference
- Authorizations
- Metadata Info
- Citations (proposal)
- Repository Checklist
- Search, Browse & Filters
- Localization
- Importing Items (CLI)
- OpenAIRE
- DOI Registration
- Inclusion in OLAC
- Unit Testing
- Deploy Checks
- Troubleshooting
- Versioning Theory
- Dynamic Resource Versioning
- Metashare Import · Schema
- Web Server Overview
- LINDAT Common Theme
- Workshop 2016 Results
- WebLicht Integration
- Google Dataset Search
Archive (v5 / stale)
- Old Home (v5)
- Installation (v5)
- Prerequisites (v5)
- Connecting Tomcat with Apache
- Using Apache
- Building Shibboleth FastCGI
- Shibboleth Install (v5)
- EUDAT Replication
- Backup (v5)
- Spring Social / Google Drive (v5)
- Clarin (→ Repository Checklist)
- Control Panel (v5)
- Overlays (v5)
- Configuration (v5)
- Speeding Up Downloads
- Debugging (v5)
- Selenium (v5)
- Code Contributions (v5)
- Best Practices (v5)
- Testing Hudson
- Working on Windows
- Prerequisites Checklist (v5)
- Migration to DSpace 7.2.1
- Upgrade From Lindat
- Piwik (→ Matomo) · Piwik Cleaning