the docs for Configure When a Dataset Guestbook Appears (If Enabled) suggest that it can be configured in three ways:
a global default, collection-level settings, or directly at the dataset level via these API calls
however, i'm not sure whether it's possible to change the global default, or how to change this at the collection level. can anyone give me potential clues?
I'm pretty sure if you want the new behavior (at request), you have to start by turning it on globally: https://guides.dataverse.org/en/6.1/installation/config.html#dataverse-files-guestbook-at-request
The feature was added in this pull request: ADA/Guestbook-at-request #9599
But I don't see any more docs.
got it, thanks. once the current upload is done i'll give it a shot :big_smile:
I don't see in the code (or the docs) how to set it for a collection. :thinking:
But setting it for a dataset should work.
got it. and to make sure i understand, setting it at the instance/global level will only impact datasets that have restricted files, correct?
if that's the case then setting it globally should be fine for us for now
Well, I'm not so sure. Guestbooks should be orthogonal to restricted files. You can use them in combination or separately.
for what it's worth, our use case is providing a means to ensure users complete clickthrough agreements before downloading files in a dataset.
The combination of a guestbook and restricted files should help.
okay - i just enabled this with -Ddataverse.files.guestbook-at-request=true and i'm seeing some strange behavior. a guestbook has been assigned to this dataset, and when i try to download the files, i get the terms pop up, but it's not prompting for a response to the guestbook data.
also, clicking the "accept" button doesn't seem to do anything on the user's side other than dismiss the modal that pops up. i can confirm it's writing the guestbook response, but the file doesn't download for the user account.
oh, interesting. if i switch the behavior back (removing that setting from domain.xml and restarting), i do see the guestbook questions in the modal when i try to download, but the download still doesn't occur after completion.
Weird. What version of Dataverse are you using, please?
6.1, currently.
verified users with given specific email domains are granted the file downloader role, and i believe every account should be verified because we're currently only allowing login through shib through these domains.
A few fixes went in for "guestbook at request" in 6.2 and 6.3 but I don't see this one, specifically. :thinking:
That said, I've never used this feature myself.
yeah, i'm back to the previous default behavior (guestbook at download) and the download is not happening.
this is what i'm seeing in the logs:
[2024-07-29T12:47:58.871-0700] [Payara 6.2023.9] [SEVERE] [] [jakarta.enterprise.resource.webcontainer.faces.context] [tid: _ThreadID=109 _ThreadName=http-thread-pool::jk-connector(4)] [timeMillis: 1722282478871] [levelValue: 1000] [[
jakarta.ejb.EJBException: Cannot invoke "String.equals(Object)" because "downloadType" is null
Huh. Which line of which file? Can you tell?
here's a fuller excerpt:
[2024-07-29T12:47:58.871-0700] [Payara 6.2023.9] [SEVERE] [] [jakarta.enterprise.resource.webcontainer.faces.context] [tid: _ThreadID=109 _ThreadName=http-thread-pool::jk-connector(4)] [timeMillis: 1722282478871] [levelValue: 1000] [[
jakarta.ejb.EJBException: Cannot invoke "String.equals(Object)" because "downloadType" is null
jakarta.ejb.EJBException: Cannot invoke "String.equals(Object)" because "downloadType" is null
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
at jdk.proxy73/jdk.proxy73.$Proxy405.writeGuestbookAndStartBatchDownload(Unknown Source)
at edu.harvard.iq.dataverse.__EJB31_Generated__FileDownloadServiceBean__Intf____Bean__.writeGuestbookAndStartBatchDownload(Unknown Source)
at edu.harvard.iq.dataverse.FileDownloadHelper.writeGuestbookAndStartDownload(FileDownloadHelper.java:88)
at edu.harvard.iq.dataverse.FileDownloadHelper$Proxy$_$$_WeldClientProxy.writeGuestbookAndStartDownload(Unknown Source)
Ok, so here: https://github.com/IQSS/dataverse/blob/v6.1/src/main/java/edu/harvard/iq/dataverse/FileDownloadHelper.java#L88
ah, yep. i think this the issue reported in https://github.com/IQSS/dataverse/pull/10264.
i'd assume the best option would be to upgrade to 6.2+ (probably just 6.3 :smile: ) to address this?
Yeah, the fix makes sense, given what you're seeing.
And yeah, I'd suggest upgrading to 6.2 then 6.3.
sounds good. i'll get it on the hopper - we were going to do the upgrades after launch, but having guestbooks to represent a clickthrough for terms is a blocker for launch for us.
Sounds good. Sorry for the trouble.
no worries! thanks for your assistance. at least we have a path forward. :smiley:
Last updated: Oct 30 2025 at 05:14 UTC