[dspace-tickets] [DuraSpace JIRA] (DS-2588) Remove or merge pre-3.0 Embargo functionality with new Embargo

37 views
Skip to first unread message

Tim Donohue (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:23 PM8/17/15
to dspace-...@lists.sourceforge.net
Tim Donohue created an issue
 
DSpace / Improvement DS-2588
Remove or merge pre-3.0 Embargo functionality with new Embargo
Issue Type: Improvement Improvement
Assignee: Unassigned
Components: DSpace API
Created: 21/May/15 10:49 AM
Fix Versions: 6.0
Priority: Major Major
Reporter: Tim Donohue
Since DSpace 3.0, we've effectively had two "types" of Embargo within DSpace:

1) "Pre-3.0 Embargo" (added in 1.6, DS-317 ). This embargo type uses configured metadata fields to store the embargo "terms" and "lift date". This type of embargo can only be lifted by running the "./dspace embargo-lifter" command on a regular basis (e.g via cron), and can only be set by adding custom metadata fields (and enabling them in your deposit screens). See these docs for this type of embargo:
* https://wiki.duraspace.org/display/DSDOC5x/Embargo#Embargo-Pre-DSpace3.0Embargo
* https://wiki.duraspace.org/display/DSDOC5x/Pre-3.0+Embargo+Lifter+Commands

2) "3.0+ Embargo" (added in 3.0, DS-895 ). This embargo type uses DSpace's Resource Policies to define embargo permissions with specific end dates. Once those end dates pass, the embargo is automatically lifted (i.e. it expires). This type of Embargo can be enabled via custom submission steps (provided out of the box). See these docs for this type of embargo:
https://wiki.duraspace.org/display/DSDOC5x/Embargo

While is seems like the "3.0 Embargo" feature should have replaced the functionality of the "pre-3.0 Embargo", that hasn't ever happened in the codebase.

We should simplify our embargo options by either removing the "pre-3.0 Embargo" code entirely, or finding a way to merge its use cases into the "3.0 Embargo" code.

From what I can tell, the "pre-3.0 Embargo code looks to all be included mostly under the "org.dspace.embargo" package:

* https://github.com/DSpace/DSpace/tree/master/dspace-api/src/main/java/org/dspace/embargo

It is also used in the following places:
* https://github.com/DSpace/DSpace/blob/master/dspace/config/dspace.cfg#L798
* https://github.com/DSpace/DSpace/blob/master/dspace/config/launcher.xml#L79
* https://github.com/DSpace/DSpace/blob/master/dspace-api/src/main/java/org/dspace/content/InstallItem.java#L164
Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.2.6#6264-sha1:ee76422)
Atlassian logo

Ivan Masár (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:23 PM8/17/15
to dspace-...@lists.sourceforge.net
Ivan Masár commented on Improvement DS-2588
 
Re: Remove or merge pre-3.0 Embargo functionality with new Embargo

I disagree that the 1.6 embargo should be removed. While I welcomed the addition of 3.0 embargo as a much needed simplification, 1.6 embargo still allows for greater flexibility - writing custom embargo setter and lifter class. And that class doesn't have to depend just on presence of metadata, it can communicate with any external systems to find out whether the embargo should be set/lifted, whereas this is simply out of scope of the 3.0 embargo which works only with dates. So I argue that both features have their distinct uses and moreover I don't see additional burden in keeping proven, tested code.

Mark H. Wood (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:24 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark H. Wood commented on Improvement DS-2588

Could "new" embargo be seen as a special case of "old" embargo? That is: DSpace comes with date-based embargo, but you can provide other types. Viewed in that way, we do have duplication of function and probably should consolidate date-based embargo into a single implementation. (I would argue for the "new" one.) Where an embargo plugin gets the information it needs to function is a matter for that implementation but, since we have the support for date-based embargo in resource policies, designed for that purpose, I would say we ought to use it.

The current situation is confusing, with two ways of doing essentially the same thing, and no clear reason for having two ways. The reason is that one of them supports doing other things. Can we simplify this, without abandoning the good work that was done on policies?

Ivan Masár (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:26 PM8/17/15
to dspace-...@lists.sourceforge.net
Ivan Masár commented on Improvement DS-2588

While date-based embargo could be implemented in 1.6 and it seems it was indeed the most common use-case, I don't see how you could extend the resourcepolicy-based 3.0 embargo to be as general as the old one. The principles of operation are rather different.

3.0 embargo period start/end is triggered during item/bitstream access.
1.6 embargo period is set/lifted as a command-line job (could be seen as a curation task).

The old practice of doing date-based embargo checks using a periodically invoked setter/lifter was really far from optimal (I speak from experience, we used to do it this way). In essence, I can see how both trigger mechanisms can be justified for different use cases.

Mark H. Wood (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:27 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark H. Wood commented on Improvement DS-2588

I don't want to generalize the 3.0 dated-embargo to encompass other use cases; I want to use the 3.0 code to replace the old dated-embargo implementation. Where a particular embargo implementation keeps the information it needs is an implementation detail. We just need a way to plug in an embargo module, which will define how it does its work.

Tim Donohue (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:28 PM8/17/15
to dspace-...@lists.sourceforge.net
Tim Donohue commented on Improvement DS-2588

Ivan, can you better describe the use cases of the 1.6 Embargo system which are not achievable (yet) in the newer 3.0 Embargo system?

It seems like, given a set of use cases, we should be able to find a way to achieve both types of use cases. The current solution of having two separate systems with two separate ways to store embargo (resource policy & metadata) and two separate ways to release from embargo (UI vs commandline) is really messy. If an Item is under embargo and you wish to immediately release it, how would you know how to even do that (without having to first ask a sysadmin to determine which type of embargo is in use)?

While I completely agree we don't want to lose the high-interest features of the 1.6 Embargo system, I strongly disagree that we should maintain two Embargo systems in parallel. That's setting us up for difficulties in maintenance, testing, documentation, support, etc.

Mark H. Wood (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:37:29 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark H. Wood commented on Improvement DS-2588

It would perhaps make sense to have two different sets of embargo code if they did different jobs. But the don't; they do the same job with different internals and different configuration. (I am talking about the actual implementation of an embargo, not the framework.)

Pascal-Nicolas Becker (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:09 PM8/17/15
to dspace-...@lists.sourceforge.net

I'm currently working on DS-2358 and thought about writing a ticket like this one. I can see Ivan's point. Nevertheless we should look for a way to harmonize and simplify the code. Instead of preserving the pre 3.0 embargo code we should look for a way to extend the past 3.0 embargo code or to merge both.

Tim Donohue As far as I have understood Ivan Masár his use case is like the following example: Add items with embargo to the repository using the pre 3.0 embargo feature. Write a embargo lifter that does not look for a date to lift the embargo but which does check an external database by using a unique identifier like a DOI, a handle or some other meta data of the item. If the external database say it is free, lift the embargo, if the external database marks the item still as beeing under embargo, then leave the embargo as it is.

Ivan Masár (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:21 PM8/17/15
to dspace-...@lists.sourceforge.net
Ivan Masár commented on Improvement DS-2588

Sorry, I forgot to answer. Pascal-Nicolas Becker described the use case you can do with 1.6 but can't do with 3.0 embargo correctly.

Thinking about this some more, I changed my mind. Anything you can do with a 1.6 embargo setter and the lifter you can do with a couple of curation tasks. The only problem is that if you're using custom 1.6 setter/lifter (and I'm pretty sure anyone who uses 1.6 embargo has a custom setter/lifter) you'll have to make the effort to refactor it into the more general curation task framework.

I now suggest deprecating 1.6 embargo in 6.0 and removing it in 7.0.

As a side-note, we had a more general discussion about requirements and implementation for embargoes and resourcepolicies at OR15 with Mark Diggory, Roeland Dillen (@mire) and Jozef M.. The short summary of that would be that it's desirable to have as few resourcepolicies as possible on an item, therefore in some cases allow by default, in other cases deny by default ACLs would be reasonable (and embargoes might be more understandable as allow by default). Another take-home would be the idea of per-module (e.g. oai, sword, discovery) resourcepolicies instead of current item states which are not always clearly defined (https://wiki.duraspace.org/display/~bollini/DSpace+Item+state+definitions).

Mark Diggory (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:25 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark Diggory commented on Improvement DS-2588

Ivan, Mark and Pascal,

I would like to take a moment to describe the forms of embargo that are supported (and possibly another that I have seen discussed in the community):

1.) Embargo Terms: The Submitter provides a "term" that describes the requirement for the embargo (a date range) and that term is used on archiving to set the Embargo lift date on archiving, this is done by the EmbargoSetter class (in pre 3.0 this was stored in metadata and all resource policies stripped off the Item Bitstreams, in post 3.0 this date is the start date of an anonymous resourcepolicy on either the Item or the Bitstream)

2.) Embargo Date: The Submitter provides an embargo date and this date is assigned as the lift date on the Item (in pre 3.0 this was stored in metadata and all resource policies stripped off the Item Bitstreams, in post 3.0 this date is the start date of an anonymous resourcepolicy on either the Item or the Bitstream)

3.) Blackout Period: In this case, an external system / user maintains the embargo rules and regulates when Items/Bitstreams may become publically available. Not only are Bitstreams access limited, but the entire Item should not be publically advertised until the terms described are met. Blackout has been implemented in three ways in the community:

(a) by keeping the item in a workflow stage that keeps it out of the archive until the publication blackout has been lifted. In this case, the Item cannot be discovered in search and browse and is only accessible to admins and those assigned to the blackout step.

(b) adding an embargo policy on the Item itself limiting is exposure to anonymous users in Search, Discovery and so on.

(c) making the item private or withdrawn, which strips all policies and removes the item from search/browse.

---------

The topic at OR15 emerged from a problem with OAI allowing the exposure of Items embargoed under 3.b. and 3.c. There was a desire expressed to be able to "exclude/include" Items from being visible in different services based on some model level criteria. In this case, Blackout Items (3.b. or 3.c.) should not be visible in OAI.

group:annonymous
action:read
item:123
application:OAI

Additionally, it was expressed that it would be ideal to be able to assign rights for interacting via specific applications to specific users/groups.

user:joe
action:write
item:123
application:SWORD

It was clear that we "do not want to duplicate" READ policies on Items for each application in question as that would be exhaustive and bloating. However, we may want to allow the admin to flag an Item as not to be visible in OAI via some resource policy on it. This suggests that policies may need to have a richer model than they currently have, either by the ability to add one or more applications to a resource policy, or by allowing "restriction" polices that can be assigned to restrict access to specific applications.

Restriction Policy (Embargo)
group:annonymous
action:restrict
start:2015-06-15
end: 2015-06-20

Read Policy
group:annonymous
action:read
start:null
end:null

Restriction Policy (Limit in OAI)
group:annonymous
action:restrict
item:123
application:OAI

This would allow flexibility for administrators to add policies as a means to include/exclude Items in specific applications, it would also allow for the clear specification of limitations in access (Embargo) separate from more general access terms.

HOWEVER, I always try to look to external authorities /dependencies on the topic of expressing ACL to assure we can align with those authorities, for example METS Rights, which we use heavily in AIP/SIP tooling, it is important to note that Rights are groups by a context

<rights:Context rpName="" in-effect="false" start-date="2014-01-01" CONTEXTCLASS="GENERAL PUBLIC">
<rights:Permissions DISCOVER="true" DISPLAY="true" MODIFY="false" DELETE="false" />
</rights:Context>

Currently Allowed "actions" are:

DISCOVER : Resource is available for searching or other discovery activities.
DISPLAY : Rendering, playing, executing the resource.
COPY : Making verbatim copy for purposes of re-use of whole or part of the resource and creation of new resource.
DUPLICATE : Make exact copy of resource for file or repository management purposes.
MODIFY : Annotate, edit, excerpt, embed, extract resource for purposes of re-use or preservation.
DELETE : Remove resource from repository for purposes of resource or repository management.
PRINT : Rendering the resource onto paper or hard copy.
OTHER : Allows for localized permission types
OTHERPERMITTYPE : Naming of localized permission types.

We try to leverage these for our policies that should be assigned when an Item in ingested via AIP. It is clear they were not intended to be "explicitly mapped" to ACL, but we try to do so as much as possible. Thus it is important to answer the question if the "Application of Access" and "Restriction" could possibly be captured in such a serialization as METS Rights before adding such capabilities.

Best,
Mark

Mark H. Wood (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:26 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark H. Wood commented on Improvement DS-2588

I'm not sure that we need to have per-UI policies.

How much more machinery do we need? PMH doesn't have an authentication mechanism, so all PMH sessions are anonymous. Thus, if Anonymous is denied access to X, PMH should not be able to show it. SWORD does do authentication, so a SWORD session should be controlled by the access granted to the session's authenticated user.

If a session's roles were augmented with a role configured on the UI through which it comes, would that be enough information to control access well without being too clunky? We wouldn't have to extend the policy model with UI names.

Tim Donohue (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:27 PM8/17/15
to dspace-...@lists.sourceforge.net
Tim Donohue commented on Improvement DS-2588

+1 to Mark W's notes. I don't like the idea of different permissions per UI/interface, as it seems like an unnecessary complication (and I'm unaware of any real-life use cases which actually require those complications). Permissions should be managed at the API level (unfortunately, they currently are not, hence problems with OAI having access to stuff it shouldn't have access to).

In order to avoid all these "future ideas" getting detailed in a ticket related to merging the two embargo codebases, I'd recommend moving any future concepts around embargo needs into new embargo-related Use Cases. Otherwise, I worry they will be forgotten about, as soon as this ticket is closed.

New use cases may be added here: https://wiki.duraspace.org/display/DSPACE/Use+Cases

Mark Diggory (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:39:28 PM8/17/15
to dspace-...@lists.sourceforge.net
Mark Diggory commented on Improvement DS-2588

The architecture dialog summary aside...I agree that it should be enforced in the API.

This generally points to a problem in the "Private" status. Which was leveraged as an intermediary means to stop access, search and browse indexing while allowing access to a subset of DSpace non-admin users.

1. When an Item is anonymous:read and it is made private, the anonymous:read permission may still be present. This was an unintended use case, private items were generally meant to be used to limit exposure and still allow access to a sub-group of users. Leaving the anonymous read permission in place may make Private items visible in OAI when they are obscured in Search/Browse.

2. AuthorizeManager.authorize is certainly not checking Item states such as "withdrawn" or "private" when evaluating access rights. And the "withdrawn" and "private" states are conflated with access rights, when its the resourcepolicies that define the access rights. This conflation historically exists because when placed into a withdrawn state, Items get all their policies destroyed.

My thoughts on a solution are:

a.) The "Private" state could go away now that we have Access Controlled Discovery and are considering removing legacy Search and Legacy Browse. Private Items are just Items that have READ resource policies limited to a specific group.

and/or

b.) Authorize Manager could double check the other status' of the Item to determine if it is withdrawn/private and make those states "trump" the existing resource policies. Assuring private items never are evaluated to anonymous:read=true even if the policy exists.

I would opt for (a) given we are seeking to eliminate legacy search/browse and discovery continues to support access controls on its results.

The only other caveat I can think of is if work continues to support a facetted workflow overview (see Dryad) in DSpace, this would bring the entire submission/workflow/in_archive//withdrawn status into discovery, it is certainly the case that all states other than "in_archive" would want to have anonymous:read=true limited to prevent exposure of Items anonymously outside the in_archive state. And this would certainly provide added protection to assure cases such as OAI and SWORD apply similar access rules.

Mark

Tim Donohue (DuraSpace JIRA)

unread,
Aug 17, 2015, 12:46:49 PM8/17/15
to dspace-...@lists.sourceforge.net
Tim Donohue updated an issue
 
Change By: Tim Donohue
Status: Received Volunteer Needed

Tim Donohue (DuraSpace JIRA)

unread,
Jun 30, 2016, 1:24:00 PM6/30/16
to dspace-...@googlegroups.com
Tim Donohue updated an issue
Change By: Tim Donohue
Fix Version/s: 6.0
This message was sent by Atlassian JIRA (v7.0.0#70107-sha1:6cd5e8d)
Atlassian logo

Pascal-Nicolas Becker (DuraSpace JIRA)

unread,
Sep 20, 2016, 11:42:00 AM9/20/16
to dspace-...@googlegroups.com

Pascal-Nicolas Becker (DuraSpace JIRA)

unread,
Sep 20, 2016, 11:42:01 AM9/20/16
to dspace-...@googlegroups.com
Pascal-Nicolas Becker commented on Improvement DS-2588
 
Re: Remove or merge pre-3.0 Embargo functionality with new Embargo

As we talked about this ticket today in #dspace, I want to quote a summery by tdonohue:

The general discussion in that ticket (and as far as I recall) was that we need to only have one type of embargo, and that will (eventually) be the new (Advanced) embargo.
But, there are still a few use cases for the pre-3.0 Embargo that haven't been adopted fully by the new (Advanced) Embargo. Until we "merge" these use cases into one feature, we have two types of embargos
So, in DSpace 6 we will still have two types of Embargo. But, (hopefully) in DSpace 7 we can cut this down to one (the new Advanced Embargo).

Terry Brady (DuraSpace JIRA)

unread,
Sep 30, 2016, 7:43:00 PM9/30/16
to dspace-...@googlegroups.com
Terry Brady updated an issue
 
Change By: Terry Brady
Attachment: screenshot-1.png

Terry Brady (DuraSpace JIRA)

unread,
Sep 30, 2016, 7:49:00 PM9/30/16
to dspace-...@googlegroups.com
Terry Brady commented on Improvement DS-2588
 
Re: Remove or merge pre-3.0 Embargo functionality with new Embargo

I noticed this discussion, and I wanted to add a comment.

We make use of the old style embargo system.

We present a submitter with a standard set of approved embargo policies.

The Embargo Setter class computes and end date and generates appropriate Anonymous READ authorization policy records. (We expanded that approach to introduce a second type of embargo that is immediately available to the university community.)

The Embargo Lifter command is not required. It simply removes the lift date metadata field from the item record. The authorization policy records enforce the actual permissions.

Terry Brady (DuraSpace JIRA)

unread,
Jan 11, 2017, 10:56:00 AM1/11/17
to dspace-...@googlegroups.com

Tim Donohue (DuraSpace JIRA)

unread,
Apr 12, 2018, 4:40:01 PM4/12/18
to dspace-...@googlegroups.com
Tim Donohue assigned an issue to Terry Brady
Change By: Tim Donohue
Status: Volunteer Needed Accepted / Claimed
This message was sent by Atlassian JIRA (v7.3.3#73014-sha1:d5be8da)
Atlassian logo

Terry Brady (DuraSpace JIRA)

unread,
Apr 12, 2018, 4:50:06 PM4/12/18
to dspace-...@googlegroups.com
Terry Brady commented on Improvement DS-2588
 
Re: Remove or merge pre-3.0 Embargo functionality with new Embargo

Perhaps we should re-brand the remaining legacy embargo process as "named embargo policies".

Tim Donohue (DuraSpace JIRA)

unread,
Apr 13, 2018, 4:13:01 PM4/13/18
to dspace-...@googlegroups.com
Tim Donohue commented on Improvement DS-2588

FWIW, based on discussion with Terry Brady, I'm starting to agree and wonder if this is more of a documentation/marketing/cleanup issue.  I think legacy embargoes already get "translated" into advanced/new embargoes automatically by the setEmbargo() method:

https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoSetter.java#L88-L108

Notice how that method calls getEmbargoTermsAsDate(), which reads the embargo date set in embargo metadata fields:
https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoServiceImpl.java#L113-L146

And, then setEmbargo() takes that date and creates Resource Policies on all bundles/bitstreams to essentially "transform" this into a new-style embargo. (A new-style embargo never needs to be lifted, as the Resource Policy automatically applies the proper permissions based on the date set on it)

setEmbargo() is called in the InstallItemService.finishItem() method which is run for every item added into the archive: https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/content/InstallItemServiceImpl.java#L236

I wonder if we should simply turn this ticket into more of a "cleanup ticket".  It seems like we still have some "lifter" logic/code in the existing API (and Documentation).  It seems like any traditional embargo lifter logic should no longer be needed and can be simply removed.  We can then update the documentation to make it clear that Embargoes can either be added via a metadata field (traditional way) or via Resource Policies (new way), and that they are applied upon saving the Item into the archive. After that, they should be managed/updated via the Resource Policies.

Tim Donohue (DuraSpace JIRA)

unread,
Apr 20, 2018, 3:49:01 PM4/20/18
to dspace-...@googlegroups.com
Tim Donohue commented on Improvement DS-2588

Thinking more on this, I'd recommend the following:

  1. Simplify the Embargo Documentation (https://wiki.duraspace.org/display/DSDOC6x/Embargo) to make it clear we really only have one type of embargo, but we have two ways to initialize an Embargo (via metadata entry, i.e. in the legacy way) or via submission workflow (which adds embargo dates to resource policies directly).  After initialization, all Embargo management happens via the Resource Policies.
  2. In Docs, make it clear that after upgrading from pre-3.0 to recent versions, you will need to migrate your old embargos via https://wiki.duraspace.org/display/DSDOC6x/Embargo#Embargo-Pre-3.0EmbargoMigrationRoutine (As those old embargoes will not be initialized until migrated)
  3. In Docs, remove all mention of the commandline embargo-lifter (as this obsolete, even in 6.x, and no longer needed). This includes deleting this page: https://wiki.duraspace.org/display/DSDOC6x/Pre-3.0+Embargo+Lifter+Commands  
  4. Finally, remove the commandline embargo-lifter tool from source code, along with any other classes that are now obsolete. (see below list)

Here's a list of all code that I believe is now obsolete and can be REMOVED (even in 6.x).This list may not be 100% complete:

Essentially, I think for the ticket to be closed, we simply need to correct the documentation on how Embargoes now work (already), and remove the old (pre-3.0) lifting logic from our API layer (as embargoes no longer need lifting, they are managed automatically via dates on Resource Policies).

Tim Donohue (DuraSpace JIRA)

unread,
Apr 20, 2018, 3:49:01 PM4/20/18
to dspace-...@googlegroups.com
Tim Donohue edited a comment on Improvement DS-2588
Thinking more on this, I'd recommend the following:
# Simplify the Embargo Documentation ([https://wiki.duraspace.org/display/DSDOC6x/Embargo]) to make it clear we really only have one type of embargo, but we have two ways to _initialize an Embargo_ (via metadata entry, i.e. in the legacy way) or via submission workflow (which adds embargo dates to resource policies directly).  After initialization, all Embargo management happens via the Resource Policies.
# In Docs, make it clear that after upgrading from pre-3.0 to recent versions, you will need to migrate your old embargos via [https://wiki.duraspace.org/display/DSDOC6x/Embargo#Embargo-Pre-3.0EmbargoMigrationRoutine] (As those old embargoes will not be initialized until migrated)
# In Docs, remove all mention of the commandline embargo-lifter (as this obsolete, even in 6.x, and no longer needed). This includes deleting this page: [https://wiki.duraspace.org/display/DSDOC6x/Pre-3.0+Embargo+Lifter+Commands]  
# Finally, remove the commandline embargo-lifter tool from source code, along with any other classes that are now obsolete. (see below list)


Here's a list of all code that I believe is now obsolete and can be REMOVED (even in 6.x).This list may not be 100% complete:
* embargo-lifter command: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/launcher.xml#L93]
* EmbargoCLITool class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java]
* EmbargoLifter interface: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoLifter.java
* DefaultEmbargoLifter class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoLifter.java
* EmbargoLifter configuration: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/dspace.cfg#L704
* Any "lift" logic in the EmbargoService class & implementation: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/service/EmbargoService.java

Essentially, I think for the ticket to be closed, we simply need to correct the documentation on how Embargoes
now already work ( already even in 6.x ), and remove the old (pre-3.0) lifting logic from our API layer (as embargoes no longer need lifting, they are managed automatically via dates on Resource Policies).

Tim Donohue (DuraSpace JIRA)

unread,
Apr 20, 2018, 4:49:01 PM4/20/18
to dspace-...@googlegroups.com
Tim Donohue edited a comment on Improvement DS-2588
Thinking more on this, I'd recommend the following:
# Simplify the Embargo Documentation ([https://wiki.duraspace.org/display/DSDOC6x/Embargo]) to make it clear we really only have one type of embargo, but we have two ways to _initialize an Embargo_ (via metadata entry, i.e. in the legacy way) or via submission workflow (which adds embargo dates to resource policies directly).  After initialization, all Embargo management happens via the Resource Policies.
# In Docs, make it clear that after upgrading from pre-3.0 to recent versions, you will need to migrate your old embargos via [https://wiki.duraspace.org/display/DSDOC6x/Embargo#Embargo-Pre-3.0EmbargoMigrationRoutine] (As those old embargoes will not be initialized until migrated)
# In Docs, remove all mention of the commandline embargo-lifter (as this obsolete, even in 6.x, and no longer needed). This includes deleting this page: [https://wiki.duraspace.org/display/DSDOC6x/Pre-3.0+Embargo+Lifter+Commands]  
# Finally, remove the commandline embargo-lifter tool from source code, along with any other classes that are now obsolete. (see below list)

Here's a list of all code that I believe is now obsolete and can be REMOVED (even in 6.x).This list may not be 100% complete:
* embargo-lifter command: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/launcher.xml#L93]
* EmbargoCLITool class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java]
* EmbargoLifter interface: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoLifter.java
* DefaultEmbargoLifter class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoLifter.java
* EmbargoLifter configuration: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/dspace.cfg#L704
* Any "lift" logic in the EmbargoService class & implementation: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/service/EmbargoService.java

Essentially, I think for the ticket to be closed, we simply need to correct the documentation on how Embargoes already work (even in 6.x), and remove the old (pre-3.0) lifting logic from our API layer (as embargoes no longer need lifting, they are managed automatically via dates on Resource Policies).

*UPDATE:* I've made the Documentation changes that I recommended above in the 6.x Documentation. As the "Lifter" commands still exist in the codebase, I've just added warnings that the functionality is deprecated, and no longer used. See: [https://wiki.duraspace.org/display/DSDOC6x/Embargo

Tim Donohue (DuraSpace JIRA)

unread,
Apr 20, 2018, 4:56:01 PM4/20/18
to dspace-...@googlegroups.com
Tim Donohue edited a comment on Improvement DS-2588
Thinking more on this, I'd recommend the following:
# (COMPLETED) Simplify the Embargo Documentation ([https://wiki.duraspace.org/display/DSDOC6x/Embargo]) to make it clear we really only have one type of embargo, but we have two ways to _initialize an Embargo_ (via metadata entry, i.e. in the legacy way) or via submission workflow (which adds embargo dates to resource policies directly).  After initialization, all Embargo management happens via the Resource Policies.
#
(COMPLETED) In Docs, make it clear that after upgrading from pre-3.0 to recent versions, you will need to migrate your old embargos via [https://wiki.duraspace.org/display/DSDOC6x/Embargo#Embargo-Pre-3.0EmbargoMigrationRoutine] (As those old embargoes will not be initialized until migrated)
#
(COMPLETED, though just flagged as deprecated for now) In Docs, remove all mention of the commandline embargo-lifter (as this obsolete, even in 6.x, and no longer needed). This includes deleting this page: [https://wiki.duraspace.org/display/DSDOC6x/Pre-3.0+Embargo+Lifter+Commands]  

# Finally, remove the commandline embargo-lifter tool from source code, along with any other classes that are now obsolete. (see below list)

Here's a list of all code that I believe is now obsolete and can be REMOVED (even in 6.x).This list may not be 100% complete:
* embargo-lifter command: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/launcher.xml#L93]
* EmbargoCLITool class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoCLITool.java]
* EmbargoLifter interface: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/EmbargoLifter.java
* DefaultEmbargoLifter class: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/DefaultEmbargoLifter.java
* EmbargoLifter configuration: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/config/dspace.cfg#L704
* Any "lift" logic in the EmbargoService class & implementation: [https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/embargo/service/EmbargoService.java

Essentially, I think for the ticket to be closed, we simply need to correct the documentation on how Embargoes already work (even in 6.x), and remove the old (pre-3.0) lifting logic from our API layer (as embargoes no longer need lifting, they are managed automatically via dates on Resource Policies).

*UPDATE:* I've made the Documentation changes that I recommended above in the 6.x Documentation. As the "Lifter" commands still exist in the codebase, I've just added warnings that the functionality is deprecated, and no longer used. See: [https://wiki.duraspace.org/display/DSDOC6x/Embargo

Terry Brady (DuraSpace JIRA)

unread,
Jul 15, 2019, 1:54:01 PM7/15/19
to dspace-...@googlegroups.com
Terry Brady commented on Improvement DS-2588
This message was sent by Atlassian Jira (v7.13.5#713005-sha1:8d78f10)
Atlassian logo

Tim Donohue (LYRASIS JIRA)

unread,
Aug 3, 2021, 4:36:01 PM8/3/21
to dspace-...@googlegroups.com
Tim Donohue updated an issue
Change By: Tim Donohue
Fix Version/s: 7.0
This message was sent by Atlassian Jira (v8.13.2#813002-sha1:c495a97)
Atlassian logo
Reply all
Reply to author
Forward
0 new messages