📖
Eclipse PASS Documentation
PASS Documentation - DEV
PASS Documentation - DEV
  • Welcome to the Public Access Submission System (PASS) Documentation
  • PASS Welcome Guide
    • Research Submission Overview
    • PASS at JHU
    • PASS Demonstrations at Conferences
    • Technology Stack
    • PASS Architecture
    • Latest Release
    • Setup and Run PASS Locally
    • Collaboration with Other Institutions
    • Contributing to PASS
  • Community
    • Developer Guidelines
    • PASS Roadmap
    • Release Notes
  • Developer Documentation
    • Use Cases
    • PASS Core
      • Authentication & Authorization
      • API
        • DOI API
        • File API
        • Metadata Schema API
        • Policy API
        • User API
      • Model
        • Deposit
        • File
        • Funder
        • Grant
        • Journal
        • Policy
        • Publication
        • Repository
        • RepositoryCopy
        • Submission
        • SubmissionEvent
        • User
    • PASS UI
    • Data Loaders
      • Grant Loader
      • Journal Loader
      • NIHMS Loader
    • Deposit Services
      • Knowledge Needed / Skills Inventory
      • Technologies Utilized
      • Model
      • Statuses
      • Business Logic
      • Assemblers
      • Configuration
      • Next Steps / Institution Configuration
    • Notification Services
      • Knowledge Needed / Skills Inventory
      • Technologies Utilized
      • Model
      • Business Logic
      • Template
      • Dispatch
      • Configuration
      • Next Steps / Institution Configuration
    • PASS Acceptance Testing
    • PASS Docker
      • Testing InvenioRDM
    • Release
      • Automated Release
  • PASS Infrastructure
    • CI/CD
    • Code Quality Analysis
      • Code Coverage
    • Deployment
      • GitHub CI/CD
    • Operations/Production
      • Knowledge Needed / Skills Inventory
      • Technologies Utilized
      • PASS Design & AWS Architecture
      • AWS Cost Estimates
      • PASS Versioning
      • How to Deploy
      • Monitoring
      • Data Loaders
      • Data & Backups
      • Eclipse Operations
      • Next Steps / Institution Configuration
Powered by GitBook
On this page
  • Summary
  • Submission/Deposit Logical Flow
  1. Developer Documentation

Deposit Services

PreviousNIHMS LoaderNextKnowledge Needed / Skills Inventory

Last updated 1 month ago

Deposit Services (DS) facilitates the transfer of custodial content and metadata from end users to repositories, ensuring proper packaging, validation, and adherence to public specifications. The code for DS can be found in the repository.

Summary

Deposit Services are responsible for the transfer of custodial content and metadata from end users to repositories. End users transfer custody of their content to PASS by performing a submission through the HTML user interface, and Deposit Services subsequently transfers the custody of content to downstream repositories.

Custody transfer goes beyond the successful transfer of bytes. The package content may be validated (accepted or rejected) by the downstream repository, and this validation may occur asynchronously with respect to the transfer of bytes. Material consisting of one or more files from the end user submission is sent to the downstream repository in a single file known as the "package".

A package can be thought of as a zip file containing user submitted files plus metadata generated by DS. Public specifications govern the structure of the zip file and the kind of metadata provided:

  • BagIT

  • NIHMS bulk submission spec

In the context of documenting inputs and outputs, DS uses the public PASS model as input and output, and produces a package which adheres to a public specification and downstream repository requirements. The internal Deposit Service Model described below is never persisted, serialized, or provided to a caller. It is entirely internal to the Deposit Service.

DS is a backend service component in PASS written in the Java language and using the framework. It has no user-facing elements. DS reacts asynchronously to SubmissionMessage and DepositMessages messages emitted by the Pass-Core component.

Submission/Deposit Logical Flow

  1. Listener waits for "Submission Complete" message. Invokes the Builder.

  2. Builder retrieves Submission and metadata from the Archive, instantiates internal Deposit Services model.

  3. Listener invokes the Assembler. The Assembler:

    • Determines archive format (tar.gz, zip)

    • Builds content manifest for the archive

    • Uses a package provider to create the content stream

  4. Package Provider adds package-specific metadata according to downstream repository requirements.

  5. Transport is selected, establishes a session with remote archive, and streams the package.

  6. Later, a Deposit Status Processor (not shown) will update the Deposit status, confirming custody transfer. The Deposit Status Processor is optional.

In this guide we step through various topics on Deposit Services:

  • Technical Deep Dive

Knowledge Needed / Skills Inventory
Technologies Utilized
Model
Statuses
Business Logic
Assemblers
Configuration
Next Steps / Institution Configuration
Pass Support
Spring Boot
Submission & Deposit Logical Flow
Submission & Deposit Logical Flow