Ready to Learn?Ex Libris products all provide open APIs

General Purpose

Rosetta is packaged with many bundled plug-in implementations, all described in the Plug-in Management section of the Rosetta Configuration Guide.

This page provides information for users who wish to extend Rosetta functionality by developing additional implementations.


Plugin Methods

Rosetta supports two plugin methods:

Java Plugin: A Java code plug-in wrapped as a JAR file
Script Plugin: An executable shell script plug-in (wrapped in a JAR package). Scripting language should be specified using the Shebang line.

Please refer to the Interface section for each plug-in type to learn which method is supported for the respective plug-in.


Plugin Types

NameType Examples
Access RightsARPluginjavadocORCID
Archive DecomposerDecomposerPluginjavadocUnzip
Converter (Publishing)ConverterRegistryPluginjavadocXEpicur
Custom FixityCustomFixityPluginjavadocDummy
Field ValidatorFieldValidatorPluginjavadocRegex
File Comparison (5.1+)FileComparisonPlugin PSNR
Format IdentifierFormatIdentificationPluginjavadocDummy
Migration ToolMigrationToolPlugin PDF to JPG
Persistent IdentifierPIGeneratorjavadoc 
Publisher (Publishing)PublisherRegistryPluginjavadocCustom NFS
Repository TaskRepositoryTaskPluginjavadocDC Replace
Risk ExtractorRiskExtractorjavadocDRMLINT
Start-up CheckStartUpCheckPluginjavadocDiskSpace
Storage HandlerStoragePluginjavadocAmazon S3
NFS in-place
NFS Pair-tree
Technical Metadata ExtractorMDExtractorPluginjavadocJpylyzer
Format Library Extractors
Viewer Pre-ProcessorVPPPluginjavadocFilePath
Customized Jpeg
IA BookReader (with ALTO)
IA BookReader (no ALTO)
Virus CheckVirusCheckPlugin ClamAV
ClamAv (V2)
For a full functional description of each of the Plug-in types, please see the Rosetta Configuration Guide - Plug-in Management.

Error Handling


Developers can log errors to the server log using log4j or system.out.



In case of a script error (or an initiated exit with a return value other than 0) - the script’s echo messages will be printed to the log as an ERROR message in the following format:

Execution of  {script_full_path} failed: {echo_message}



Each plugin JAR file must contain a metadata XML file in the /PLUGIN-INF/ directory. The filename should contain 'metadata' and have an xml extension (e.g. metadata_myFirstPlugin.xml).


General Attributes

AttributeDescription (values)Mandatory
pluginTypeNameThe Plug-in type (see above table).Yes
displayNameThe name that will be displayed in the UI.Yes
classNameThe Java full path class name.Yes (java plug-in only)
initParametersAn x-form defining the plugin parameters and default parameter values (see table below).No
descriptionA short description of the plugin.No
versionThe plugin version (double-precision floating-point format).Yes
materialTypealways 'DIGITAL'.Yes
implTypePlugin implementation type (script/java).Yes
contactPersonContact Info (see table below).Yes


Example (script):

<pl:metadata-config xmlns:pl="" xmlns:xsi="">
      <fr:x_form xmlns:fr="http://com/exlibris/digitool/common/forms/xmlbeans" />
      <contact_info xmlns="" />

X-form Attributes

AttributeDescription (values)Mandatory (default)
x_fieldsParameter declarationYes
x_fieldParameter configurationYes
labelParameter name in the UIYes
ui_tool_tipLabel tool-tipNo
default_valueA default value for the fieldNo
mandatoryIndication whether the parameter is mandatory (true/false) No (false)
x_ui_typeDetermines the UI component typeYes
css_classDetermines the CSS class of the field labelNo

Please see the x_form.xsd for more details.


<fr:x_form xmlns:fr="http://com/exlibris/digitool/common/forms/xmlbeans">
          <ui_tool_tip>record type</ui_tool_tip>


Make sure your plugin contains a method with the following signature:
Public void initParams(Map<String, String> initParams)
Retrieve the parameter values from the map by the field name and initialize the plug-in members. For a field named ‘recordType’:
String recordType = initParams.get(“recordType”);


Contact Info Attributes


contactTypeA description of the administrative jobNo
firstNameFirst nameNo
lastNameLast nameNo
telephone1Primary telephone numberNo
telephone2Additional telephone numberNo
emailE-mail addressNo



    <contact_info xmlns="">
      <address1>1 Agodat Hasport Hapoel</address1>
      <address2>Building 9</address2>


Deployment and Installation

To deploy the plug-in, copy the jar file to $op_dir/plugins/custom. The dps user should have rw permissions on your file. Rosetta will display the plug-in in the list of custom plug-ins available for installation. If you are installing a new plugin, there is no need to restart Rosetta. If you are upgrading an existing plugin a restart is necessary, and you must be sure to increment the plugin version (see above, 'General Attributes').