diff --git a/doc/release-notes/10490-COAR-Notify.md b/doc/release-notes/10490-COAR-Notify.md deleted file mode 100644 index 0419466f424..00000000000 --- a/doc/release-notes/10490-COAR-Notify.md +++ /dev/null @@ -1,23 +0,0 @@ -### Support for COAR Notify Relationship Announcement - -Dataverse now supports sending and receiving [Linked Data Notification ](https://www.w3.org/TR/ldn/) messages involved in the -[COAR Notify Relationship Announcement Workflow](https://coar-notify.net/catalogue/workflows/repository-relationship-repository/). - -Dataverse can send messages to configured repositories announcing that a dataset has a related publication (as defined in the dataset metadata). This may be done automatically upon publication or triggered manually by a superuser. The receiving repository may do anything with the message, with the default expectation being that the repository will create a backlink from the publication to the dataset (assuming the publication exists in the repository, admins agree the link makes sense, etc.) - -Conversely, Dataverse can receive notices from other configured repositories announcing relationships between their publications and datasets. If the referenced dataset exists in the Dataverse instance, a notification will be sent to users who can publish the dataset, or, optionally, only superusers who can publish the dataset. They can then decide whether to create a backlink to the publication in the dataset metadata. - -(Earlier releases of Dataverse had experimental support in this area that was based on message formats defined prior to finalization of the COAR Notify specification for relationship announcements.) - -#### New Settings/JVM Options - -Configuration for sending messages involves specifying the -:COARNotifyRelationshipAnnouncementTargets and :COARNotifyRelationshipAnnouncementTriggerFields - -Configuration to receive messages involves specifying -DATAVERSE_LDN_ALLOWED_HOSTS (dataverse.ldn.allowed-hosts) - -Notifications are sent by default to users who can publish a dataset. The option below can be used to restrict notifications to superusers who can publish the dataset. - -DATAVERSE_COAR_NOTIFY_RELATIONSHIP_ANNOUNCEMENT_NOTIFY_SUPERSUSERS_ONLY - diff --git a/doc/release-notes/11387-modify-input-level-api.md b/doc/release-notes/11387-modify-input-level-api.md deleted file mode 100644 index ca18eabb515..00000000000 --- a/doc/release-notes/11387-modify-input-level-api.md +++ /dev/null @@ -1,3 +0,0 @@ -### Update Collection Input Level API Changed - -- This endpoint will no longer delete the custom input levels previously modified for the given collection. In order to update a previously modified custom input level, it must be included in the JSON provided to the api. diff --git a/doc/release-notes/11522-licenses-added.md b/doc/release-notes/11522-licenses-added.md deleted file mode 100644 index f20e2874ce4..00000000000 --- a/doc/release-notes/11522-licenses-added.md +++ /dev/null @@ -1,17 +0,0 @@ -### Additional licenses - -The following Open Data Commons licenses have been added: - -- Open Database License (ODbL) -- Open Data Commons Attribution License (ODC-By) -- Open Data Commons Public Domain Dedication and License (PDDL)) - -The following software license has been added: - -- European Union Public License (EUPL) - -The following country-specific license has been added: - -- Open Government Licence (OGL UK) - -The licenses above are widely recognized and used in Europe and beyond to promote data and software sharing. See [the guides](https://dataverse-guide--11522.org.readthedocs.build/en/11522/installation/config.html#configuring-licenses) and #11522. diff --git a/doc/release-notes/11612-RAHistory.md b/doc/release-notes/11612-RAHistory.md deleted file mode 100644 index 82df91c3913..00000000000 --- a/doc/release-notes/11612-RAHistory.md +++ /dev/null @@ -1,17 +0,0 @@ -# Role Assignment History Tracking - -Dataverse can now track the history of role assignments, allowing administrators to see who assigned or revoked roles, when these actions occurred, and which roles were involved. This feature helps with auditing and understanding permission changes over time. - -## Key components of this feature: - -- **Feature Flag**: The functionality can be enabled/disabled via the `ROLE_ASSIGNMENT_HISTORY` feature flag (default is `off`) -- **UI Integration**: New history panels on permission management pages showing the complete history of role assignments/revocations -- **CSV Export**: Administrators can download the role assignment history for a given collection or dataset (or files in a dataset) as a CSV file directly from the new panels -- **API Access**: New API endpoints provide access to role assignment history in both JSON and CSV formats: - - `/api/dataverses/{identifier}/assignments/history` - - `/api/datasets/{identifier}/assignments/history` - - `/api/datasets/{identifier}/files/assignments/history` - -All return JSON by default but will return an internationalized CSV if an `Accept: text/csv` header is adde - -For more information, see #11612 \ No newline at end of file diff --git a/doc/release-notes/11639-db-opts-idempotency.md b/doc/release-notes/11639-db-opts-idempotency.md deleted file mode 100644 index b01e3d955cb..00000000000 --- a/doc/release-notes/11639-db-opts-idempotency.md +++ /dev/null @@ -1,55 +0,0 @@ -## Database Settings Cleanup - -With this release, we remove some legacy specialties around Database Settings and provide better Admin API endpoints for them. - -Most important changes: - -1. Setting `BuiltinUsers.KEY` was renamed to `:BuiltinUsersKey`, aligned with our general naming pattern for options. -2. Setting `WorkflowsAdmin#IP_WHITELIST_KEY` was renamed to `:WorkflowsAdminIpWhitelist`, aligned with our general naming pattern for options. -3. Setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead. -4. If set, all three settings will be migrated to their new form automatically for you (Flyway migration). -5. You can no longer (accidentally) create or use arbitrary setting names or languages. - All Admin API endpoints for settings now validate setting names and languages for existence and compliance. - -As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API: - -1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too. -2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`. - This will create, update and remove settings as necessary in one atomic operation. - The new endpoint is especially useful to admins using GitOps or other automations. - It allows control over all Database Settings from a single source without risking an undefined state. - -Note: Despite the validation of setting names and languages, the content of any database setting is still not being validated when using the Settings Admin API! - -### Updated Database Settings - -The following database settings are were added to the official list within the code (to remain valid with the settings cleanup mentioned above): - -- `:BagGeneratorThreads` -- `:BagItHandlerEnabled` -- `:BagItLocalPath` -- `:BagValidatorJobPoolSize` -- `:BagValidatorJobWaitInterval` -- `:BagValidatorMaxErrors` -- `:BuiltinUsersKey` - formerly `BuiltinUsers.KEY` -- `:CreateDataFilesMaxErrorsToDisplay` -- `:DRSArchiverConfig` - a Harvard-specific setting -- `:DuraCloudContext` -- `:DuraCloudHost` -- `:DuraCloudPort` -- `:FileCategories` -- `:GoogleCloudBucket` -- `:GoogleCloudProject` -- `:LDNAnnounceRequiredFields` -- `:LDNTarget` -- `:WorkflowsAdminIpWhitelist` - formerly `WorkflowsAdmin#IP_WHITELIST_KEY` -- `:PrePublishDatasetWorkflowId` - formerly `WorkflowServiceBean.WorkflowId:PrePublishDataset` -- `:PostPublishDatasetWorkflowId` - formerly `WorkflowServiceBean.WorkflowId:PostPublishDataset` - -### Important Considerations During Upgrade Of Your Installation - -1. Running a customized fork? Make sure to add any custom settings to the SettingsServiceBean.Key enum before deploying! -2. Any database settings not contained in the `SettingServiceBean.Key` will be removed from your database during each deployment cycle. -3. As always when upgrading, make sure to backup your database beforehand! - You can also use the existing API endpoint `/api/admin/settings` to retrieve all settings as JSONish data for a quick backup before upgrading. - diff --git a/doc/release-notes/11695-11940-change-api-get-storage-driver.md b/doc/release-notes/11695-11940-change-api-get-storage-driver.md deleted file mode 100644 index 8fb05879871..00000000000 --- a/doc/release-notes/11695-11940-change-api-get-storage-driver.md +++ /dev/null @@ -1,12 +0,0 @@ -## Get Dataset/Dataverse Storage Driver API - -### Changed Json response - breaking change! - -The API for getting the Storage Driver info has been changed/extended. -/api/datasets/{identifier}/storageDriver -/api/admin/dataverse/{dataverse-alias}/storageDriver -Rather than returning just the name/id of the driver (with the key "message"), the api call now returns a JSONObject with the driver's "name", "type" and "label", and booleans indicating whether the driver has "directUpload", "directDownload", and/or "uploadOutOfBand" enabled. - -This change also affects the /api/admin/dataverse/{dataverse-alias}/storageDriver api call. In addition, this call now supports an optional ?getEffective=true to find the effective storageDriver (the driver that will be used for new datasets in the collection) - -See also [the guides](https://dataverse-guide--11664.org.readthedocs.build/en/11664/api/native-api.html#configure-a-dataset-to-store-all-new-files-in-a-specific-file-store), #11695, and #11664. diff --git a/doc/release-notes/11710-get-available-dataverses-api.md b/doc/release-notes/11710-get-available-dataverses-api.md deleted file mode 100644 index ac33c581848..00000000000 --- a/doc/release-notes/11710-get-available-dataverses-api.md +++ /dev/null @@ -1,5 +0,0 @@ -### New API endpoint for retrieving a list of Dataverse Collections to which a given Dataset or Dataverse Collection may be linked - --The end point also takes in a search term which currently must be part of the collections' names. --The user calling this API must have Link Dataset or Link Dataverse permission on the Dataverse Collections returned. --If the Collection has already been linked to the given Dataset or Collection, it will not be returned. diff --git a/doc/release-notes/11744-cors-echo-origin-vary.md b/doc/release-notes/11744-cors-echo-origin-vary.md deleted file mode 100644 index 48eaa3b96f9..00000000000 --- a/doc/release-notes/11744-cors-echo-origin-vary.md +++ /dev/null @@ -1,41 +0,0 @@ -# 11744: CORS handling improvements - -Modernizes CORS so browser integrations (previewers, external tools, JS clients) work correctly with multiple origins and proper caching. - -## Highlights - -- Echoes the request origin (`Access-Control-Allow-Origin`) when it matches `dataverse.cors.origin`. -- Adds `Vary: Origin` for per-origin responses (not for wildcard). -- Supports comma‑separated origin list; any `*` in the list = wildcard mode. -- CORS now only enabled when `dataverse.cors.origin` is set (removed `:AllowCors` no longer enables it). -- All comma-separated configuration settings (database properties and MicroProfile config) now ignore spaces around commas; tokens remain unchanged (no quote parsing). Examples: `dataverse.cors.methods`, `dataverse.cors.headers.allow`, `dataverse.cors.headers.expose`. See "Comma-separated configuration values" in the Installation Guide. -- Docs updated (Installation, Big Data Support, External Tools, File Previews); new tests cover edge cases. - -## Admin Action - -Set `dataverse.cors.origin` explicitly (required). Use explicit origins (not `*`) for credentialed requests. Ensure proxies keep `Vary: Origin`. - -Examples: - -``` -dataverse.cors.origin=https://example.org -dataverse.cors.origin=https://libis.github.io,https://gdcc.github.io -dataverse.cors.origin=* -``` - -Optional (unquoted): - -``` -dataverse.cors.methods=GET, POST, OPTIONS, PUT, DELETE -``` - -## Compatibility - -- Must configure `dataverse.cors.origin`; `:AllowCors` was deprecated and has now been removed. -- Any `*` triggers wildcard (no per-origin echo / no Vary header). - -## Docs - -See updated `dataverse.cors.origin` section and related notes in Big Data Support (S3), External Tools, and File Previews. - - diff --git a/doc/release-notes/11752-croissant-restricted.md b/doc/release-notes/11752-croissant-restricted.md deleted file mode 100644 index ced0ef4eaa7..00000000000 --- a/doc/release-notes/11752-croissant-restricted.md +++ /dev/null @@ -1,13 +0,0 @@ -- The optional Croissant exporter has been updated to 0.1.6 to prevent variable names, variable descriptions, and variable types from being exposed for restricted files. See https://github.com/gdcc/exporter-croissant/pull/20 and #11752. - -## Upgrade Instructions - -### Update Croissant exporter, if enabled, and reexport metadata - -If you have enabled the Croissant dataset metadata exporter, you should upgrade to version 0.1.6. - -- Stop Payara. -- Delete the old Croissant exporter jar file. It will be located in the directory defined by the `dataverse.spi.exporters.directory` setting. -- Download the updated Croissant jar from https://repo1.maven.org/maven2/io/gdcc/export/croissant/ and place it in the same directory. -- Restart Payara. -- Run reExportAll. diff --git a/doc/release-notes/11766-new-io.gdcc.dataverse-spi.md b/doc/release-notes/11766-new-io.gdcc.dataverse-spi.md deleted file mode 100644 index ef9e68f5719..00000000000 --- a/doc/release-notes/11766-new-io.gdcc.dataverse-spi.md +++ /dev/null @@ -1,2 +0,0 @@ -The ExportDataProvider framework in the dataverse-spi package has been extended, adding some extra options for developers of metadata exporter plugins. -See the [documentation](https://guides.dataverse.org/en/latest/developers/metadataexport.html#building-an-exporter) in the Metadata Export guide for details. \ No newline at end of file diff --git a/doc/release-notes/11771-update-dataset-license-api.md b/doc/release-notes/11771-update-dataset-license-api.md deleted file mode 100644 index e87f7e0f93f..00000000000 --- a/doc/release-notes/11771-update-dataset-license-api.md +++ /dev/null @@ -1,13 +0,0 @@ -## New Endpoint: `/datasets/{id}/license` - -A new endpoint has been implemented to manage dataset licenses. - -### Functionality -- Updates the license of a dataset by applying it to the draft version. -- If no draft exists, a new one is automatically created. - -### Usage -This endpoint supports two ways of defining a license: -1. **Predefined License** – Provide the license name (e.g., `CC BY 4.0`). -2. **Custom Terms of Use and Access** – Provide a JSON body with the `customTerms` object. - - All fields are optional **except** `termsOfUse`, which is required. diff --git a/doc/release-notes/11772-update-dataset-terms-of-access-api.md b/doc/release-notes/11772-update-dataset-terms-of-access-api.md deleted file mode 100644 index 04b85d81ca9..00000000000 --- a/doc/release-notes/11772-update-dataset-terms-of-access-api.md +++ /dev/null @@ -1,12 +0,0 @@ -## New Endpoint: `/datasets/{id}/access` - -A new endpoint has been implemented to manage dataset terms of access for restricted files. - -### Functionality -- Updates the terms of access for a dataset by applying it to the draft version. -- If no draft exists, a new one is automatically created. - -### Usage - -**Custom Terms of Access** – Provide a JSON body with the `customTermsOfAccess` object. - - All fields are optional **except** if there are restricted files in which case `fileAccessRequest` must be set to true or `termsOfAccess` must be provided. diff --git a/doc/release-notes/11777-MDC-citation-api-improvement.md b/doc/release-notes/11777-MDC-citation-api-improvement.md deleted file mode 100644 index 9441e9e0f44..00000000000 --- a/doc/release-notes/11777-MDC-citation-api-improvement.md +++ /dev/null @@ -1,7 +0,0 @@ -The /api/admin/makeDataCount/{id}/updateCitationsForDataset endpoint, which allows citations for a dataset to be retrieved from DataCite, is often called periodically for all datasets. However, allowing calls for many datasets to be processed in parallel can cause performance problems in Dataverse and/or cause calls to DataCite to fail due to rate limiting. The existing implementation was also inefficient w.r.t. memory use when used on datasets with many (>~1K) files. This release configures Dataverse to queue calls to this api, processes them serially, adds optional throttling to avoid hitting DataCite rate limits and improves memory use. - -New optional MPConfig setting: - -dataverse.api.mdc.min-delay-ms - number of milliseconds to wait between calls to DataCite. A value of ~100 should conservatively address DataCite's current 3000/5 minute limit. A value of 250 may be required for their test service. - -Backward compatibility: This api call is now asynchronous and will return an OK response when the call is queued or a 503 if the queue is full. \ No newline at end of file diff --git a/doc/release-notes/11783-Curation-Status-fixes.md b/doc/release-notes/11783-Curation-Status-fixes.md deleted file mode 100644 index 62b33165d0c..00000000000 --- a/doc/release-notes/11783-Curation-Status-fixes.md +++ /dev/null @@ -1 +0,0 @@ -In prior versions of Dataverse, publishing a dataset via the superuser only update-current-version option would not set the current curation status (if enabled/used) to none/empty and, in v6.7, would not maintain the curation status history. These issues are now resolved and the update current version option works the same as normal publication of a new version w.r.t. curation status. \ No newline at end of file diff --git a/doc/release-notes/11793 - ext. vocab. improvements.md b/doc/release-notes/11793 - ext. vocab. improvements.md deleted file mode 100644 index 46998e56b60..00000000000 --- a/doc/release-notes/11793 - ext. vocab. improvements.md +++ /dev/null @@ -1 +0,0 @@ -This version of Dataverse includes extensions of the Dataverse External Vocabulary mechanism (https://guides.dataverse.org/en/latest/admin/metadatacustomization.html#using-external-vocabulary-services) that improve Dataverse's ability to include metadata about vocabulary terms and external identifiers such as ORCID and ROR in it's metadata exports. More information on how to configure external vocabulary scripts to use this functionality can be found at https://github.com/gdcc/dataverse-external-vocab-support/blob/main/docs/readme.md and in the examples in the https://github.com/gdcc/dataverse-external-vocab-support repository. \ No newline at end of file diff --git a/doc/release-notes/11796-fix-list-dataverse-templates-api-permissions.md b/doc/release-notes/11796-fix-list-dataverse-templates-api-permissions.md deleted file mode 100644 index e15f9f4dfa1..00000000000 --- a/doc/release-notes/11796-fix-list-dataverse-templates-api-permissions.md +++ /dev/null @@ -1,10 +0,0 @@ -### Fixed: Permissions for `/{identifier}/templates` endpoint - -The `/{identifier}/templates` endpoint previously required **`editDataverse`** permissions to retrieve the list of dataverse templates. - -This has been corrected: the endpoint now requires **`addDataset`** permissions instead. - -**Impact:** -- The endpoint now works in scenarios such as the **Create Dataset form** in the SPA UI, without needing unnecessary elevated permissions. - -Related issues: #11796 \ No newline at end of file diff --git a/doc/release-notes/11800-qb-ra-fixes.md b/doc/release-notes/11800-qb-ra-fixes.md deleted file mode 100644 index 5c7ef82f7f2..00000000000 --- a/doc/release-notes/11800-qb-ra-fixes.md +++ /dev/null @@ -1,2 +0,0 @@ -This release fixes problems with guestbook questions being displayed at download when files are selected from the dataset files table -when guestbook-at-request is enabled and not displaying when they should when access is requested from the file page. \ No newline at end of file diff --git a/doc/release-notes/11804-notifications-api-updates.md b/doc/release-notes/11804-notifications-api-updates.md deleted file mode 100644 index a704442464c..00000000000 --- a/doc/release-notes/11804-notifications-api-updates.md +++ /dev/null @@ -1,21 +0,0 @@ -## Notifications API Update - -**Endpoint:** `notifications/all` - -**Enhancements:** - -* When the query parameter `inAppNotificationFormat=true` is set: - - * Notifications of types: - - * `REQUESTFILEACCESS` - * `REQUESTEDFILEACCESS` - * `GRANTFILEACCESS` - * `REJECTFILEACCESS` - - now return both the **dataset display name** and **dataset persistent identifier**. - - * Notifications of type `DATASETMENTIONED` now return a **formatted JSON** in the `additionalInfo` field when this field contains a valid persisted JSON string, instead of a raw JSON string. - -Related issue: #11804 -Related PR: #11851 diff --git a/doc/release-notes/11822-faster-permission-indexing.md b/doc/release-notes/11822-faster-permission-indexing.md deleted file mode 100644 index f716655232e..00000000000 --- a/doc/release-notes/11822-faster-permission-indexing.md +++ /dev/null @@ -1 +0,0 @@ -Permission reindexing, which occurs, e.g., after a user has been granted a role on a collection, has been made faster and less memory intensive in this release. \ No newline at end of file diff --git a/doc/release-notes/11827-Payara-6.2025.10.md b/doc/release-notes/11827-Payara-6.2025.10.md deleted file mode 100644 index 271b7dbb5ea..00000000000 --- a/doc/release-notes/11827-Payara-6.2025.10.md +++ /dev/null @@ -1,16 +0,0 @@ -The recommended Payara version has been updated to Payara-6.2025.10 - -Payara 6.2025.10 cannot be used with earlier versions of Dataverse, e.g. v6.8. - -Standard Payara upgrade instructions - as in the 6.7 release notes should be added, -but we should assure the instructions don't have you trying to run 6.8 with the latest Payara -and perhaps should explicitly note that you can't. - -We should also change the 'standard' language related to Payara updates to include copying the -*.p12 files from the distributed domain1/config directory into the Dataverse domain1/config directory, -at least if/when they are different. Those files include base certs and over time using the old files -can cause SSL errors. If the domain.xml file is old enough, it may also reference *.jks files instead -of the *.p12 ones. That should also be fixed (domain.xml having those lines updated to reference *.p12 files). -FWIW: I ran across this at TDL where a dev machine stopped being able to contact DataCite because the root -cert used by DataCite today is not in the *.jks files that had been copied forward during Payara updates.) - diff --git a/doc/release-notes/11828-unacceptable-performance-deleting-datasets.md b/doc/release-notes/11828-unacceptable-performance-deleting-datasets.md deleted file mode 100644 index dd970617a01..00000000000 --- a/doc/release-notes/11828-unacceptable-performance-deleting-datasets.md +++ /dev/null @@ -1 +0,0 @@ -This release adds database indexes on GuestbookResponse and DatasetMetrtics, speeding up Dataset deletes. It also adds a constraint preventing null VersionState, as a matter of good housekeeping practice. diff --git a/doc/release-notes/11832-DataCite-scaling.md b/doc/release-notes/11832-DataCite-scaling.md deleted file mode 100644 index 574ef05f94c..00000000000 --- a/doc/release-notes/11832-DataCite-scaling.md +++ /dev/null @@ -1,14 +0,0 @@ -This release adds functionality to retry calls to DataCite when their server is overloaded or Dataverse has hit their rate limit. - -It also introduces an option to only update DataCite metadata after checking to see if the current DataCite information is out of date. -(This adds a request to get information from DataCite before any potential write of new information which will be more efficient when -most DOIs have not changed but will result in an extra call to get info when a DOI has changed.) - -Both of these can help when DataCite is being used heavily, e.g. creating and publishing datasets with many datafiles and using file DOIs, -or doing bulk operations that involve DataCite with many datasets. - -### New Settings - -- dataverse.feature.only-update-datacite-when-needed - -The default is false - Dataverse will not check to see if DataCite's information is out of date before sending an update. diff --git a/doc/release-notes/11850-big-data-admin-guide.md b/doc/release-notes/11850-big-data-admin-guide.md deleted file mode 100644 index e7bd0b87781..00000000000 --- a/doc/release-notes/11850-big-data-admin-guide.md +++ /dev/null @@ -1,3 +0,0 @@ -### Big Data Admin Section - -- A new section - Scaling Dataverse with Data Size - has been added to the Admin Guide. It is intended to help administrators configure Dataverse appropriately to handle larger amounts of data. diff --git a/doc/release-notes/11852-notifications-api-pagination-and-only-unread.md b/doc/release-notes/11852-notifications-api-pagination-and-only-unread.md deleted file mode 100644 index c8c4aadff73..00000000000 --- a/doc/release-notes/11852-notifications-api-pagination-and-only-unread.md +++ /dev/null @@ -1,72 +0,0 @@ -## Notifications API Update - -**Endpoint:** `notifications/all` - -The user notifications endpoint has been enhanced with new optional query parameters to allow for more specific and -efficient data retrieval. - -**1. Filter by Unread Status** - -You can now fetch only unread notifications by using the `onlyUnread` boolean parameter. - -* **`onlyUnread`**: (Optional, boolean) When set to `true`, the API will only return notifications that the user has not - yet marked as read. - -**Example:** - -```bash -curl -H "X-Dataverse-key:$API_TOKEN" "$SERVER_URL/api/notifications/all?onlyUnread=true" -``` - -**2. Pagination Support** - -Pagination is now supported through the limit and offset parameters, allowing you to retrieve notifications in smaller, -manageable chunks. - -- **`limit`**: (Optional, integer) Specifies the maximum number of notifications to return. - -- **`offset`**: (Optional, integer) Specifies the number of notifications to skip before starting to return results. - -Example (Retrieve notifications 11 through 20): - -```bash -curl -H "X-Dataverse-key:$API_TOKEN" "$SERVER_URL/api/notifications/all?limit=10&offset=10" -``` - -**3 Breaking Change: API Response Format Updated** - -To support pagination and improve consistency across the API, the JSON response format for this endpoint has been -changed. This is a breaking change and will require updates to any client code currently using this endpoint. - -**Old Format:** - -Previously, the response nested the notification list inside a notifications object within the data field. - -``` -{ - "status": "OK", - "data": { - "notifications": [ - / ... / - ] - } -} -``` - -**New Format:** - -The response now includes a top-level totalCount field (required for pagination) and places the notification list -directly in the data field. This flattens the structure and makes it consistent with other paginated endpoints. - -``` -{ - "status": "OK", - "totalCount": 2, - "data": [ - / ... / - ] -} -``` - -Related issue: #11852 -Related PR: #11854 \ No newline at end of file diff --git a/doc/release-notes/11855-version-summaries-pagination-and-perfomance.md b/doc/release-notes/11855-version-summaries-pagination-and-perfomance.md deleted file mode 100644 index ca867ba9697..00000000000 --- a/doc/release-notes/11855-version-summaries-pagination-and-perfomance.md +++ /dev/null @@ -1,33 +0,0 @@ -### Pagination for API Version Summaries - -We've added pagination support to the following API endpoints: - -- File Version Differences: api/files/{id}/versionDifferences - -- Dataset Version Summaries: api/datasets/:persistentId/versions/compareSummary - -You can now use two new query parameters to control the results: - -- **limit**: An integer specifying the maximum number of results to return per page. - -- **offset**: An integer specifying the number of results to skip before starting to return items. This is used to - navigate to different pages. - -### Performance enhancements for API Version Summaries - -In addition to adding pagination, we've significantly improved the performance of these endpoints by implementing more -efficient database queries. - -These changes address performance bottlenecks that were previously encountered, especially with datasets or files -containing a large number of versions. - -### Fixes for File Version Summaries API - -The implementation for file version summaries was unreliable, leading to exceptions and functional inconsistencies, as -documented in issue #11561. This functionality has been reviewed and fixed to ensure correctness and stability. - -### Related issues and PRs - -- https://github.com/IQSS/dataverse/issues/11855 -- https://github.com/IQSS/dataverse/pull/11859 -- https://github.com/IQSS/dataverse/issues/11561 \ No newline at end of file diff --git a/doc/release-notes/11865-suppress-host-dataverse-field.md b/doc/release-notes/11865-suppress-host-dataverse-field.md deleted file mode 100644 index 0160831885d..00000000000 --- a/doc/release-notes/11865-suppress-host-dataverse-field.md +++ /dev/null @@ -1,3 +0,0 @@ -### Suppression of the Host Dataverse field - -When creating a dataset, the _host dataverse_ field is not shown when the user can only add datasets to one collection. \ No newline at end of file diff --git a/doc/release-notes/11904-LocalContexts-api-updates.md b/doc/release-notes/11904-LocalContexts-api-updates.md deleted file mode 100644 index 0e89fd8b4a1..00000000000 --- a/doc/release-notes/11904-LocalContexts-api-updates.md +++ /dev/null @@ -1,3 +0,0 @@ -### Updates to Local Contexts integration - -- Integration with Local Contexts (https://guides.dataverse.org/en/latest/installation/localcontexts.html) has been updated to support the change in their API w.r.t. how DOIs entered as "Optional Project Information" are represented. diff --git a/doc/release-notes/11921-dataset-version-summaries-metadatacount-fix.md b/doc/release-notes/11921-dataset-version-summaries-metadatacount-fix.md deleted file mode 100644 index df4e0e7c7aa..00000000000 --- a/doc/release-notes/11921-dataset-version-summaries-metadatacount-fix.md +++ /dev/null @@ -1,10 +0,0 @@ -### Dataset version summaries API changedFileMetaData count fix - -The endpoint ``{id}/versions/compareSummary`` was previously returning an incorrect count for -the ``changedFileMetaData`` field. -The logic for calculating this count has been fixed to accurately reflect the total number of file metadata changes -across all files in the dataset version. - -### Related issues - -- https://github.com/IQSS/dataverse/issues/11921 diff --git a/doc/release-notes/11954-CVoC-for-textarea-inputs.md b/doc/release-notes/11954-CVoC-for-textarea-inputs.md deleted file mode 100644 index 1102975332d..00000000000 --- a/doc/release-notes/11954-CVoC-for-textarea-inputs.md +++ /dev/null @@ -1,5 +0,0 @@ -### External Vocabulary Mechanism enhancement - -- The external vocabulary mechanism (see https://github.com/gdcc/dataverse-external-vocab-support/) now supports - assigning metadatablock dataset field types of fieldType textbox (multiline inputs) as managed fields. This new functionality is - being leveraged to support automated generation of citation text for Related Publications entries. (a url could be added once the work in the external vocabulary repo is done). diff --git a/doc/release-notes/11987-storage-quotas-on-datasets.md b/doc/release-notes/11987-storage-quotas-on-datasets.md deleted file mode 100644 index 79edba13cba..00000000000 --- a/doc/release-notes/11987-storage-quotas-on-datasets.md +++ /dev/null @@ -1,4 +0,0 @@ -It is now possible to define storage quotas on individual datasets. See the API guide for more information. -The practical use case is for datasets in the top-level, root collection. This does not address the use case of a user creating multiple datasets. But there is an open dev. issue for adding per-user storage quotas as well. - -A convenience API `/api/datasets/{id}/uploadlimits` has been added to show the remaining storage and/or number of files quotas, if present. \ No newline at end of file diff --git a/doc/release-notes/11990-controlled-vocab-edit-error.md b/doc/release-notes/11990-controlled-vocab-edit-error.md deleted file mode 100644 index 8e98d10b40a..00000000000 --- a/doc/release-notes/11990-controlled-vocab-edit-error.md +++ /dev/null @@ -1,5 +0,0 @@ -### Bug Fix - -Editing a controlled vocabulary field (i.e. one with values specified in the field's metadatablock) that only allows a single selection would also update the value in the prior published version if (and only if) the edit was made starting from the published version (versus an existing draft). This is now fixed. -The bug appears to be 11+ years old and previously unreported. As the value in the database was overwritten, there is no simple way to detect if/when this occurred without looking at backups or archival file copies. - diff --git a/doc/release-notes/6.9-release-notes.md b/doc/release-notes/6.9-release-notes.md new file mode 100644 index 00000000000..0211afc9acc --- /dev/null +++ b/doc/release-notes/6.9-release-notes.md @@ -0,0 +1,342 @@ +# Dataverse 6.9 + +Please note: To read these instructions in full, please go to https://github.com/IQSS/dataverse/releases/tag/v6.9 rather than the [list of releases](https://github.com/IQSS/dataverse/releases), which will cut them off. + +This release brings new features, enhancements, and bug fixes to Dataverse. Thank you to all of the community members who contributed code, suggestions, bug reports, and other assistance across the project! + +## Release Highlights + +Highlights for Dataverse 6.9 include: + +- Quickstart Guide +- Role Assignment History Tracking +- Scaling Dataverse with Data Size (Admin Guide) +- Storage Quotas on Individual Datasets +- Additional Licenses +- DataCite Scaling +- Support for COAR Notify Relationship Announcement +- Infrastructure upgrade: Payara +- New and improved APIs +- Bug fixes + +## Features Added + +### Quickstart Guide + +A new [Quickstart Guide](https://guides.dataverse.org/en/6.9/quickstart/index.html) has been added to help researchers understand what Dataverse is, how to publish datasets and collections, and how to find data. Buttons have been added to the top of the User Guide to direct people to these pages. Feedback on this new guide is welcome, such as through [Google Groups](https://groups.google.com/g/dataverse-community/c/TXOEFv9-0kY/m/RT5XV0QiAgAJ), [Zulip](https://dataverse.zulipchat.com/#narrow/channel/446770-docs/topic/Quickstart.20Guide.20'Publish.20a.20Dataset'/with/561675778), or the [Documentation Working Group](https://www.gdcc.io/working-groups/documentation.html). Special thanks to Dieuwertje Bloemen for writing most of the guide and to Vaida Plankytė for contributing. See https://guides.dataverse.org/en/6.9/quickstart and #11653. + +### Role Assignment History Tracking + +Dataverse can now track the history of role assignments, allowing administrators to see who assigned or revoked roles, when these actions occurred, and which roles were involved. This feature helps with auditing and understanding permission changes over time. An additional column called "Role Assignment History" has been added to the permission management page for collections. The information can also be downloaded via API in CSV and JSON formats. This feature is off by default but can be enabled with the "role-assignment-history" [feature flag](https://guides.dataverse.org/en/6.9/installation/config.html#feature-flags). See the [User Guide](https://guides.dataverse.org/en/6.9/user/dataverse-management.html#roles-permissions), [API Guide](https://guides.dataverse.org/en/6.9/api/native-api.html#dataverse-role-assignment-history), and #11612. + +### Scaling Dataverse with Data Size (Admin Guide) + +A new section, [Scaling Dataverse with Data Size](https://guides.dataverse.org/en/6.9/admin/big-data-administration.html), has been added to the Admin Guide. It is intended to help administrators configure Dataverse appropriately to handle larger amounts of data. See https://guides.dataverse.org/en/6.9/admin/big-data-administration.html and #11850. + +### Storage Quotas on Individual Datasets + +It is now possible to define storage quotas on individual datasets via API. The practical use case is for datasets in the top-level root collection. This feature does not address the use case of a user creating multiple datasets (#11529). A convenience API `/api/datasets/{id}/uploadlimits` has been added to show the "remaining storage" and "number of files" quotas, if present. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#storage-quotas-on-individual-datasets), #11987, and #11997. + +### Additional Licenses + +The following Open Data Commons licenses have been added: + +- Open Database License (ODbL) +- Open Data Commons Attribution License (ODC-By) +- Open Data Commons Public Domain Dedication and License (PDDL) + +The following software license has been added: + +- European Union Public License (EUPL) + +The following country-specific license has been added: + +- Open Government Licence (OGL UK) + +The licenses above are widely recognized and used in Europe and beyond to promote data and software sharing. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#configuring-licenses) and #11522. + +### DataCite Scaling + +Dataverse now retries calls to DataCite when their server is overloaded or when the Dataverse server has hit the DataCite rate limit. + +It also introduces an option to only update DataCite metadata after checking to see if the current DataCite information is out of date. (This adds a request to get information from DataCite before any potential write of new information which will be more efficient when most DOIs have not changed but will result in an extra call to get info when a DOI has changed.) This functionality is off by default but can be enabled with the `only-update-datacite-when-needed` feature flag. + +Both of these can help when DataCite is being used heavily, e.g. creating and publishing datasets with many datafiles and using file DOIs, or doing bulk operations that involve DataCite with many datasets. + +See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#dataverse-feature-only-update-datacite-when-needed) and #11832 + +### Support for COAR Notify Relationship Announcement + +Dataverse now supports sending and receiving [Linked Data Notification ](https://www.w3.org/TR/ldn/) messages involved in the [COAR Notify Relationship Announcement Workflow](https://coar-notify.net/catalogue/workflows/repository-relationship-repository/). + +Dataverse can send messages to configured repositories announcing that a dataset has a related publication (as defined in the dataset metadata). This may be done automatically upon publication or triggered manually by a superuser. The receiving repository may do anything with the message, with the default expectation being that the repository will create a backlink from the publication to the dataset (assuming the publication exists in the repository, admins agree the link makes sense, etc.) + +Conversely, Dataverse can receive notices from other configured repositories announcing relationships between their publications and datasets. If the referenced dataset exists in the Dataverse instance, a notification will be sent to users who can publish the dataset, or, optionally, only superusers who can publish the dataset. They can then decide whether to create a backlink to the publication in the dataset metadata. + +See [the guides](https://guides.dataverse.org/en/6.9/developers/workflows.html#coarnotifyrelationshipannouncement), #8914, and #10490. (Earlier releases of Dataverse had experimental support in this area that was based on message formats defined prior to finalization of the COAR Notify specification for relationship announcements.) + +### Other Features Added + +- When creating a dataset, the "Host Dataverse" field is not shown when the user can add datasets to only one collection. See #11865. +- In the UI for granting file access, restricted files in draft will now show "Draft/Unpublished". See #7618 and #11794. +- This version of Dataverse includes extensions of the Dataverse [external vocabulary mechanism](https://guides.dataverse.org/en/6.9/admin/metadatacustomization.html#using-external-vocabulary-services) that improve Dataverse's ability to include metadata about vocabulary terms and external identifiers such as ORCID and ROR in its metadata exports. More information on how to configure external vocabulary scripts to use this functionality can be found in [docs/readme.md](https://github.com/gdcc/dataverse-external-vocab-support/blob/main/docs/readme.md) and in the examples in the https://github.com/gdcc/dataverse-external-vocab-support repository. See #11793. +- The [external vocabulary mechanism](https://github.com/gdcc/dataverse-external-vocab-support) now supports assigning metadatablock dataset field types of fieldType textbox (multiline inputs) as managed fields. See #11954. +- It is now possible to configure all database settings at once with a JSON file. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#configure-all-database-settings), #11639, and #11654. +- CORS support has been modernized so browser integrations (previewers, external tools, JS clients) work correctly with multiple origins and proper caching. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#cors-settings), #11744, and #11745. +- Integration with Local Contexts has been updated to support the change in their API regarding how DOIs entered as "Optional Project Information" are represented. See [the guides](https://guides.dataverse.org/en/6.9/installation/localcontexts.html) and #11904. +- This release adds database indexes on GuestbookResponse and DatasetMetrics, speeding up Dataset deletes. It also adds a constraint preventing null VersionState, as a matter of good housekeeping practice. See #11828 and #11898. +- Permission reindexing, which occurs, e.g., after a user has been granted a role on a collection, has been made faster and less memory intensive in this release. See #11822. +- Performance has been improved when retrieving citations from DataCite. A related setting called `dataverse.api.mdc.min-delay-ms` has been added. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#dataverse-api-mdc-min-delay-ms), #11777, and #11781. +- Processing of comma-separated lists in settings has been centralized and now ignores spaces around commas. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#comma-separated-configuration-values) and #11745. + +## Bugs Fixed + +- Editing a controlled vocabulary field (i.e. one with values specified in the field's metadatablock) that only allows a single selection would also update the value in the prior published version if (and only if) the edit was made starting from the published version (versus an existing draft). This is now fixed. The bug appears to be 11+ years old and previously unreported. As the value in the database was overwritten, there is no simple way to detect if or when this occurred without looking at backups or archival file copies. See #11990 and #11991. +- In prior versions of Dataverse, publishing a dataset via the superuser-only update-current-version option would not set the current curation status (if enabled/used) to none/empty and, in v6.7, would not maintain the curation status history. These issues are now resolved and the update-current-version option works the same as normal publication of a new version with regard to curation status. See #11783 and #11784. +- This release fixes problems with guestbook questions being displayed at download when files are selected from the dataset files table when guestbook-at-request is enabled and not displaying when they should when access is requested from the file page. See #11800, #11808, and #11835. +- The optional Croissant exporter has been updated to 0.1.6 to prevent variable names, variable descriptions, and variable types from being exposed for restricted files. See https://github.com/gdcc/exporter-croissant/pull/20 and #11752. + +## API Updates + +- The Settings API no longer accepts keys (in the sense of key/value pairs) that are not defined in the code. See "Database Settings Cleanup" in these release notes for details, #11639 and #11654. +- A new API endpoint has been added for retrieving a list of collections to which a given dataset or collection can be linked. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#list-dataverse-collections-to-which-a-given-dataset-or-dataverse-collection-may-be-linked), #11710, and #11741. +- A new API endpoint has been added to manage dataset licenses. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#update-dataset-license), #11771, #11815, and #11958. +- A new API endpoint has been added to manage dataset terms of access for restricted files. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#update-dataset-terms-of-access), #11772, and #11893. +- A new API endpoint has been added for getting and setting the metadata language of a collection. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#list-the-allowed-metadata-languages-of-a-dataverse-collection), 11856, and #11857. +- The `/api/dataverses/{identifier}/templates` endpoint previously required editDataverse permissions to retrieve the list of dataverse templates. This has been corrected. The endpoint now addDataset permissions instead. See #11796 and #11801. +- The endpoint `/api/datasets/{id}/versions/compareSummary` was previously returning an incorrect count for +the `changedFileMetaData` field. The logic for calculating this count has been fixed to accurately reflect the total number of file metadata changes across all files in the dataset version. See #11921 and #11944. +- The "File Version Differences" and "Dataset Version Summaries" API endpoints have been improved with pagination support (with `limit` and `offset` parameters), performance improvements, and a bug fix. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#get-versions-of-a-dataset-with-summary-of-changes), #11561, #11855 and #11859. +The Notifications API has been improved (with `onlyUnread`, `limit`, and `offset` parameters) but also has some breaking changes. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#notifications), #11804, #11851, and #11854. +- The storage API driver endpoint now returns a JSON object with the driver's "name", "type" and "label", and booleans indicating whether the driver has "directUpload", "directDownload", and/or "uploadOutOfBand" enabled. This change also affects the /api/admin/dataverse/{dataverse-alias}/storageDriver api call. In addition, this call now supports an optional ?getEffective=true to find the effective storageDriver (the driver that will be used for new datasets in the collection), See [the guides](https://guides.dataverse.org/en/6.9/admin/dataverses-datasets.html#configure-a-dataverse-collection-to-store-all-new-files-in-a-specific-file-store), #11695, and #11716. + +## Security Updates + +This release contains important security updates such as an upgrade to Payara (#11827) and how CORS is handled (#11745). If you are not receiving security notices, please sign up by following [the steps](https://guides.dataverse.org/en/latest/installation/config.html#ongoing-security-of-your-installation) in the guides. + +## Backward Incompatible Changes + +Generally speaking, see the [API Changelog](https://guides.dataverse.org/en/latest/api/changelog.html) for a list of backward-incompatible API changes. + +- This release of Dataverse requires an upgrade to Payara. Please be aware that you need to upgrade Payara and Dataverse at the same time because older versions of Dataverse are not compatible with newer versions of Payara. See upgrade instructions for details. +- CORS is no longer enabled by default. See the upgrade instructions for details as well as #11745. +- See the "Database Settings Cleanup" section below. In the past, the settings API would accept any key and value. This is no longer the case because validation has been added. Also the way to set per-format size limits for tabular ingest has changed. JSON input is now used. See #11639 and #11654. +- The Update Collection Input Levels API endpoint no longer deletes the custom input levels previously modified for the given collection. In order to update a previously modified custom input level, it must be included in the JSON provided to the api. See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#update-collection-input-levels), #11387, and #11748. +- For `/api/admin/dataverse/{dataverse-alias}/storageDriver` and `/api/datasets/{identifier}/storageDriver` the driver name is no longer returned in data.message. Instead, it is returned as data.name (along with other information about the storageDriver). See [the guides](https://guides.dataverse.org/en/6.9/api/native-api.html#configure-a-dataset-to-store-all-new-files-in-a-specific-file-store), #11695, and #11664. +- The POST /api/admin/makeDataCount/{id}/updateCitationsForDataset processing is now asynchronous and the response no longer includes the number of citations. The response can be OK if the request is queued or 503 if the queue is full (default queue size is 1000). See #11777 and #11781. + +## End-Of-Life (EOL) Announcements + +### PostgreSQL 13 Reached EOL on 13 November 2025 + +We mentioned this in the Dataverse [6.6](https://github.com/IQSS/dataverse/releases/tag/v6.6) and [6.8](https://github.com/IQSS/dataverse/releases/tag/v6.8) release notes, but as a reminder, according to https://www.postgresql.org/support/versioning/ PostgreSQL 13 reached EOL on 13 November 2025. As mentioned in the [Installation Guide](https://guides.dataverse.org/en/6.9/installation/prerequisites.html#postgresql), we recommend running PostgreSQL 16 since it is the version we test with in our continuous integration ([since](https://github.com/gdcc/dataverse-ansible/commit/8ebbd84ad2cf3903b8f995f0d34578250f4223ff) February 2025). The [Dataverse 5.4 release notes](https://github.com/IQSS/dataverse/releases/tag/v5.4) explained the upgrade process from 9 to 13 (e.g. pg_dumpall, etc.) and the steps will be similar. If you have any problems, please feel free to reach out (see "getting help" in these release notes). + +### Payara 6 Reaching EOL with 6.2025.11 + +As explained in #12020 and https://payara.fish/blog/payara-6-community-end-of-life/ Payara 6.2025.11 is the last release in the 6.x series. A pull request at #12043 to upgrade to Payara 7 has already been made but won't make it into this release of Dataverse. You are welcome to try it out and give feedback. + +## Developer Updates + +- The ExportDataProvider framework in the dataverse-spi package has been extended, adding some extra options for developers of metadata exporter plugins. See [the guides](https://guides.dataverse.org/en/6.9/developers/metadataexport.html#building-an-exporter) #11766, and #11767. + +## Database Settings Cleanup + +With this release, we remove some legacy quirks around Database settings and provide better Admin API endpoints for managing settings. + +Most important changes: + +1. The setting `BuiltinUsers.KEY` was renamed to `:BuiltinUsersKey` to align with our naming pattern. +2. The setting `WorkflowsAdmin#IP_WHITELIST_KEY` was renamed to `:WorkflowsAdminIpWhitelist` to align with our naming pattern. +3. The setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#tabularingestsizelimit) for details. +4. If any of the settings above are set, they will be migrated to their new form automatically for you when the war file is deployed (Flyway migration). +5. You can no longer (accidentally) create or use arbitrary setting names or languages. + All Admin API endpoints for settings now validate setting names and languages for existence and compliance. + +As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API: + +1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too. +2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`. + This will create, update and remove settings as necessary in one atomic operation. + The new endpoint is especially useful to admins using GitOps or other automations. + It allows control over all Database Settings from a single source without risking an undefined state. + +Note: Despite the validation of setting names and languages, the content of any database setting is still not being validated when using the Settings Admin API! + +### Important Considerations During Upgrade Of Your Installation + +1. Running a customized fork? Make sure to add any custom settings to the SettingsServiceBean.Key enum before deploying! +2. Any database settings not contained in the `SettingServiceBean.Key` will be removed from your database during each deployment cycle. +3. As always when upgrading, make sure to backup your database beforehand! + You can also use the existing API endpoint `/api/admin/settings` to retrieve all settings as JSONish data for a quick backup before upgrading. + +See also #11639 and #11654. + +## New Settings + +### New JVM Options (MicroProfile Config Settings) + +- dataverse.api.mdc.min-delay-ms +- dataverse.coar-notify.relationship-announcement.notify-superusers-only +- dataverse.feature.only-update-datacite-when-needed +- dataverse.feature.role-assignment-history +- dataverse.ldn.allowed-hosts + +### New Database Settings + +- :COARNotifyRelationshipAnnouncementTargets +- :COARNotifyRelationshipAnnouncementTriggerFields + +### Updated Database Settings + +The following database settings were added to the official list within the code (to remain valid with the settings cleanup mentioned above): + +- `:BagGeneratorThreads` +- `:BagItHandlerEnabled` +- `:BagItLocalPath` +- `:BagValidatorJobPoolSize` +- `:BagValidatorJobWaitInterval` +- `:BagValidatorMaxErrors` +- `:BuiltinUsersKey` - formerly `BuiltinUsers.KEY` +- `:CreateDataFilesMaxErrorsToDisplay` +- `:DRSArchiverConfig` - a Harvard-specific setting +- `:DuraCloudContext` +- `:DuraCloudHost` +- `:DuraCloudPort` +- `:FileCategories` +- `:GoogleCloudBucket` +- `:GoogleCloudProject` +- `:LDNAnnounceRequiredFields` +- `:LDNTarget` +- `:WorkflowsAdminIpWhitelist` - formerly `WorkflowsAdmin#IP_WHITELIST_KEY` +- `:PrePublishDatasetWorkflowId` - formerly `WorkflowServiceBean.WorkflowId:PrePublishDataset` +- `:PostPublishDatasetWorkflowId` - formerly `WorkflowServiceBean.WorkflowId:PostPublishDataset` + +## Deleted Settings + +- In Dataverse 6.7 (#11454) the `:AllowCors` setting was deprecated in favor of a new `dataverse.cors.origin` setting and now, in Dataverse 6.9, the `:AllowCors` setting has been removed (#11745). See also the step on CORS in the upgrade instructions below. +- `BuiltinUsers.KEY` - now `:BuiltinUsersKey` +- `WorkflowsAdmin#IP_WHITELIST_KEY` - now `:WorkflowsAdminIpWhitelist` +- `WorkflowServiceBean.WorkflowId:PrePublishDataset` - now `:PrePublishDatasetWorkflowId` +- `WorkflowServiceBean.WorkflowId:PostPublishDataset` - now `:PostPublishDatasetWorkflowId` + +## Complete List of Changes + +For the complete list of code changes in this release, see the [6.9 milestone](https://github.com/IQSS/dataverse/issues?q=milestone%3A6.9+is%3Aclosed) in GitHub. + +## Getting Help + +For help with upgrading, installing, or general questions please see [getting help](https://guides.dataverse.org/en/latest/installation/intro.html#getting-help) in the Installation Guide. + +## Installation + +If this is a new installation, please follow our [Installation Guide](https://guides.dataverse.org/en/latest/installation/). Please don't be shy about [asking for help](https://guides.dataverse.org/en/latest/installation/intro.html#getting-help) if you need it! + +Once you are in production, we would be delighted to update our [map of Dataverse installations around the world](https://dataverse.org/installations) to include yours! Please [create an issue](https://github.com/IQSS/dataverse-installations/issues) or email us at support@dataverse.org to join the club! + +You are also very welcome to join the [Global Dataverse Community Consortium](https://www.gdcc.io/) (GDCC). + +## Upgrade Instructions + +NOTE: These instructions include an upgrade to Payara 6.2025.10. Do not attempt to run Dataverse 6.8 or lower on Payara 6.2025.10. It won't work. To see the changes that had to be made to the the Dataverse code to make it compatible with Payara 6.2025.10 see #11827. + +Upgrading requires a maintenance window and downtime. Please plan accordingly, create backups of your database, etc. + +When doing backups, make sure your settings are backed up. See "Database Settings Cleanup" above for details. + +0\. These instructions assume that you are upgrading from the immediate previous version. That is to say, you've already upgraded through all the 6.x releases and are now running Dataverse 6.8. See [tags on GitHub](https://github.com/IQSS/dataverse/tags) for a list of versions. If you are running an earlier version, the only supported way to upgrade is to progress through the upgrades to all the releases in between before attempting the upgrade to this version. + +If you are running Payara as a non-root user (and you should be!), **remember not to execute the commands below as root**. By default, Payara runs as the `dataverse` user. In the commands below, we use sudo to run the commands as a non-root user. + +Also, we assume that Payara 6 is installed in `/usr/local/payara6`. If not, adjust as needed. + +```shell +export PAYARA=/usr/local/payara6 +``` + +(or `setenv PAYARA /usr/local/payara6` if you are using a `csh`-like shell) + +1\. List deployed applications + +```shell +$PAYARA/bin/asadmin list-applications +``` + +2\. Undeploy the previous version (should match "list-applications" above) + +```shell +$PAYARA/bin/asadmin undeploy dataverse-6.8 +``` + +3\. Stop Payara + +```shell +sudo service payara stop +``` + +4\. Upgrade to Payara 6.2025.10 + +The recommended Payara version has been updated to Payara 6.2025.10. See #11827. + +As a reminder, Payara 6.2025.10 cannot be used with earlier versions of Dataverse, e.g. v6.8. + +The steps below reuse your existing domain directory with the new distribution of Payara. You may also want to review the Payara upgrade instructions as it could be helpful during any troubleshooting: +[Payara Release Notes](https://docs.payara.fish/community/docs/6.2025.10/Release%20Notes/Release%20Notes%206.2025.10.html). +We also recommend you ensure you followed all update instructions from the past releases regarding Payara. +(The most recent Payara update was for [Dataverse 6.7](https://github.com/IQSS/dataverse/releases/tag/v6.7).) + +Move the current Payara directory out of the way: + +```shell +mv $PAYARA $PAYARA.6.2025.3 +``` + +Download the new Payara version 6.2025.10 (from https://www.payara.fish/downloads/payara-platform-community-edition/ or https://nexus.payara.fish/repository/payara-community/fish/payara/distributions/payara/6.2025.10/payara-6.2025.10.zip), and unzip it in its place: + +```shell +cd /usr/local +unzip payara-6.2025.10.zip +``` + +Replace the brand new `payara6/glassfish/domains/domain1` with your old, preserved domain1: + +```shell +mv payara6/glassfish/domains/domain1 payara6/glassfish/domains/domain1_DIST +mv payara6.6.2025.3/glassfish/domains/domain1 payara6/glassfish/domains/ +``` + +Once your old, preserved domain1 directory is in place, copy the *.p12 files from distributed domain1/config directory into it, at least if they are different. These files include base certs. Over time, using the old cert files can cause SSL errors. If the domain.xml file is old enough, it may also reference *.jks files instead of the *.p12 ones. If so, update domain.xml so that these lines reference *.p12 files instead of *.jks files. + +```shell +cp payara6/glassfish/domains/domain1_DIST/*.p12 payara6/glassfish/domains/domain1 +``` + +5\. Download and deploy this version + +```shell +wget https://github.com/IQSS/dataverse/releases/download/v6.9/dataverse-6.9.war +$PAYARA/bin/asadmin deploy dataverse-6.9.war +``` + +Please note that, depending on your database, the initial deployment of this version may take a little longer than usual. This is because new database indexes will need to be created in real time. The time it should take is not even a function of the overall size of your database, but specifically the `GuestbookResponse` table. (In other words, not a function of how much content you have in the repository, but how *popular* it is). + +6\. For installations with internationalization or text customizations: + +Please remember to update translations via [Dataverse language packs](https://github.com/GlobalDataverseCommunityConsortium/dataverse-language-packs). + +If you have text customizations you can get the latest English files from . + +7\. Enable or re-enable CORS, if desired + +As of Dataverse 6.8 CORS was enabled by default but this is no longer the case. See #11745. + +If you are relying on CORS, e.g. using file previewers hosted at gdcc.github.io, and did not configure `dataverse.cors.origin` as recommended in the 6.7 release notes, you should do so now. With updates in 6.9, it is also possible to limit CORS support to specific internet hosts. See [the guides](https://guides.dataverse.org/en/6.9/installation/config.html#cors-settings) for details. + +8\. Update Croissant exporter, if enabled, and reexport metadata + +If you have enabled the Croissant dataset metadata exporter, you should upgrade to version 0.1.6. + +- Stop Payara. +- Delete the old Croissant exporter jar file. It will be located in the directory defined by the `dataverse.spi.exporters.directory` setting. +- Download the updated Croissant jar from https://repo1.maven.org/maven2/io/gdcc/export/croissant/ and place it in the same directory. +- Restart Payara. +- Run reExportAll. diff --git a/doc/release-notes/7618-file-level-permissions-restricted-draft.md b/doc/release-notes/7618-file-level-permissions-restricted-draft.md deleted file mode 100644 index 6b674ee7ec3..00000000000 --- a/doc/release-notes/7618-file-level-permissions-restricted-draft.md +++ /dev/null @@ -1,3 +0,0 @@ -File level permissions: Restricted files in Draft will now show a "Draft/Unpublished" tag in the UI when granting file access - -See #7618 diff --git a/doc/release-notes/metadataLanguage-API-call.md b/doc/release-notes/metadataLanguage-API-call.md deleted file mode 100644 index 9e2598cf159..00000000000 --- a/doc/release-notes/metadataLanguage-API-call.md +++ /dev/null @@ -1,6 +0,0 @@ -A new API endpoint has been implemented for getting the metadata language of a Dataverse Collection: - -`GET /dataverses/{alias}/allowedMetadataLanguages`: Returns the specified metadata language(s) in the collection if any. -`PUT /dataverses/{alias}/allowedMetadataLanguages{metadataLanguage}`: Sets a metadata language in the collection. - -For more information, see #11856 and #11856. \ No newline at end of file