.. _UC32:

Use Case 32 - Transfer Object Ownership
---------------------------------------

.. index:: Use Case 32, UC32, ownership change

Revisions
  View document revision history_.

Goal
  User or organization takes over 'ownership' of a set of objects (write
  access for orphaned records), or the existing owner of an object would
  like to transfer ownership to another principal.

Summary 
  Ownership transfer needs to be supported so that all there is always someone
  that has the ability to manage the object. There are many circumstances w
  where such changes are required, and the DataONE infrastructure should 
  support this operation both technically and operationally.

Actors
  - Current and new data owner
  - Data managers

Preconditions 
  - Content exists in the DataONE system
  - Owner wants to transfer ownership role
  - Organization needs to take control of objects (owner no longer filling 
    that role)
  
Triggers
  - Current owner no longer able to fill that role
 
Post Conditions
  - Object ownership has been changed
  - Updated to roles updated through the federation

.. 
   @startuml images/32_seq.png
   actor "User (User or Organization)" as user
   participant "Client" as app_client << Application >>
   user -> app_client
   note right
   Assume user authority for
   specifying restrictions
   end note
   participant "Authorization API" as c_authorize << Coordinating Node >>
   app_client -> c_authorize: takeOwnership (objectList)
   app_client <-- c_authorize: ack or fail
   note right
   Is there an authority for any
   given data / metadata object?
   end note
   @enduml

.. image::  images/32_seq.png

*Figure 1.* Interactions for use case 32. User or organization takes over
'ownership' of a set of objects\n(write access for orphaned records).

**Notes**

- Q. Is there an authority for any given data/metadata object? A. The
  authority for any object is expressed in the system metadata element
  :attr:`SystemMetadata.rightsHolder`.

.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/32_uc.txt