Skip to main content

Plugins

OpenCDMP is built around a plugin architecture that allows you to extend the platform with custom services for file export/import, repository deposit, and plan evaluation. Each plugin is an independent Spring Boot microservice that registers with OpenCDMP and is then available to users through the standard UI.

Plugin Types

There are three plugin types:

Plugin TypePurposeBase Package
File TransformerExport plans/descriptions to custom file formats, or import from themorg.opencdmp:file-transformer-base
Deposit ServiceDeposit plans to external repositories and receive DOIsorg.opencdmp:repository-deposit-base
EvaluatorAssess plans and descriptions against standards or criteriaorg.opencdmp:evaluator-base

How Plugins Work

All plugin types follow the same pattern:

  1. Implement a client interface — contains your business logic (FileTransformerClient, DepositClient, EvaluatorClient).
  2. Implement a controller interface — exposes REST endpoints the platform calls (FileTransformerController, DepositController, EvaluatorController).
  3. Expose a configuration endpoint — the platform calls this at registration time to discover the plugin's capabilities (supported formats, benchmarks, auth methods, etc.).
  4. Register with OpenCDMP — add the running service URL in Tenant Configuration. The platform then makes the plugin available to users.

Shared Data Models

All plugins communicate with OpenCDMP using the Common Models package (org.opencdmp:common-models), which defines the data structures for plans, descriptions, and files. See Common Models for the full reference.

Plugin Documentation