Skip to main content

Plugin Upgrade Guide

This guide explains how to identify, update, and validate OJS plugins when upgrading across OJS versions. It complements the individual migration guides by focusing specifically on plugin lifecycle management.

Focus versions

This guide covers plugin compatibility across OJS 3.3, OJS 3.4, and OJS 3.5 (including 3.5.0.4+). OJS 2.x plugins are not compatible with any OJS 3.x version.

Why Plugins Need to Be Upgradedโ€‹

OJS plugins are tightly coupled to the OJS framework through:

  • PKP-lib hooks โ€” the internal event system that plugins subscribe to
  • Template overrides โ€” Smarty/Twig template files that change with each release
  • Database interactions โ€” plugins may query or extend the OJS schema
  • Composer dependencies โ€” PHP library versions bundled with OJS change across releases

When OJS upgrades any of these layers, plugins built for older versions may fail silently or throw fatal errors.

Pre-Upgrade Plugin Workflowโ€‹

Follow this checklist before upgrading OJS:

  1. List all active plugins โ€” Administration โ†’ Website โ†’ Plugins (note name and version of each enabled plugin)
  2. Disable all custom or community plugins โ€” leave only PKP core plugins enabled
  3. Run the OJS upgrade
  4. Test core functionality without any custom plugins
  5. Re-enable plugins one by one, checking for errors after each

Checking Plugin Compatibilityโ€‹

Method 1: Plugin's GitHub Repositoryโ€‹

Most PKP plugins follow a branch naming convention tied to OJS versions:

Branch / TagCompatible OJS version
stable-3_3_0OJS 3.3.x.x
stable-3_4_0OJS 3.4.y.y
stable-3_5_0OJS 3.5.x.x
mainLatest development / nightly

Check the plugin's GitHub repository for the latest release on the branch matching your OJS version.

Method 2: Plugin version.xmlโ€‹

Each installed plugin contains a version.xml file that declares its compatible application versions:

cat /var/www/html/ojs/plugins/generic/myplugin/version.xml

Look for the <application> and <release> values.

Browse https://pkp.sfu.ca/ojs/ojs_plugins.html and filter by OJS version.

How to Upgrade a Pluginโ€‹

  1. Go to Website โ†’ Plugins โ†’ Plugin Gallery
  2. Find the plugin and click Upgrade if a newer version is available
  3. OJS will download and install the update automatically

Option B โ€” Manual Upgrade via ZIPโ€‹

  1. Download the plugin release ZIP from GitHub (use the stable-3_5_0 branch tag)
  2. In OJS: Website โ†’ Plugins โ†’ Upload a new plugin
  3. Upload the ZIP file
  4. The new version overwrites the existing installation

Option C โ€” Manual Upgrade via SSHโ€‹

# Navigate to the plugin directory
cd /var/www/html/ojs/plugins/generic/orcidProfile

# Pull the latest compatible release
git fetch origin
git checkout stable-3_5_0
git pull

# Or replace with a fresh download
cd /var/www/html/ojs/plugins/generic
rm -rf orcidProfile
wget https://github.com/pkp/orcidProfile/archive/refs/tags/v3.5.0.1.tar.gz
tar -xzf v3.5.0.1.tar.gz
mv orcidProfile-3.5.0.1 orcidProfile

After upgrading via SSH, clear the OJS plugin cache:

cd /var/www/html/ojs
php lib/pkp/tools/cacheClear.php

Plugin Compatibility Matrixโ€‹

OJS 3.3 โ†’ OJS 3.4 โ†’ OJS 3.5.0.4โ€‹

PluginOJS 3.3OJS 3.4OJS 3.5.0.4Notes
ORCID Profileโœ…โœ…โœ…Re-authorise OAuth after each upgrade
CrossRef Exportโœ…โœ…โœ…โ€”
DOI Pluginโœ…โŒ RemovedโŒ Built-inDOIs are built-in from OJS 3.4; uninstall this plugin before upgrading to 3.4
Fundingโœ…โœ…โœ…โ€”
Google Analyticsโœ…โœ…โœ…โ€”
Matomo (Piwik)โœ…โœ…โœ…โ€”
PDF.js Viewerโœ…โœ…โœ…Fixed in 3.5.0.4 for HTTPS + strict CSP
JATS Parserโœ…โœ…โœ…Upgrade to latest stable
Lens Galleyโœ…โš ๏ธโš ๏ธLimited maintenance; test carefully
Browse By Sectionโœ…โœ…โœ…โ€”
Keyword Cloudโœ…โœ…โœ…โ€”
Custom Block Managerโœ…โœ…โœ…Built-in from 3.4; no separate install needed
Hypothesisโœ…โœ…โœ…โ€”
ClamAV Scannerโœ…โœ…โœ…โ€”
Crossref Reference Linkingโœ…โœ…โœ…โ€”
Plagiarism (iThenticate)โœ…โœ…โœ…โ€”
Stripe Paymentโœ…โœ…โœ…Reconfigure payment credentials after upgrade
PayPal Paymentโœ…โœ…โœ…โ€”
OpenAIREโœ…โš ๏ธโš ๏ธCheck for 3.4/3.5 release
Shariffโœ…โœ…โœ…โ€”
RORโš ๏ธโœ…โœ…Introduced in OJS 3.4 era
Reviewer Creditsโœ…โœ…โœ…โ€”
Static Pagesโœ…โœ…โœ…โ€”
Web Feedโœ…โœ…โœ…โ€”
Usage Statsโœ…โœ…โœ…COUNTER 5 support added in 3.4
Quick Submitโœ…โœ…โœ…โ€”
Native XML Import/Exportโœ…โœ…โœ…Export format changed in 3.4 โ€” re-export for new format
Subscription SSOโœ…โš ๏ธโš ๏ธCommunity-maintained; test carefully

Legend:
โœ… Fully compatible โ€” โš ๏ธ Partial or untested โ€” โŒ Removed or replaced

Special Casesโ€‹

DOI Plugin Removal (OJS 3.3 โ†’ OJS 3.4)โ€‹

The standalone DOI plugin (plugins/generic/doi) was removed in OJS 3.4. DOI management is now a built-in feature under Settings โ†’ Distribution โ†’ DOIs.

Before upgrading to OJS 3.4:

  1. Go to Website โ†’ Plugins
  2. Find DOI under Generic Plugins
  3. Click Disable (do not delete yet โ€” the upgrade script migrates existing DOIs)
  4. After running the upgrade, confirm DOIs appear in Settings โ†’ Distribution โ†’ DOIs
  5. Then you may delete the old plugin files:
    rm -rf /var/www/html/ojs/plugins/generic/doi

Custom Block Manager (OJS 3.4+)โ€‹

The Custom Block Manager is now a built-in component. If you installed it as a separate plugin on OJS 3.3, it will be superseded by the built-in version after upgrading to 3.4. Remove the standalone plugin after upgrading.

Native XML Export Format Changesโ€‹

The Native XML export format changed between OJS 3.3 and 3.4. Files exported from OJS 3.3 cannot be directly imported into OJS 3.4+. Re-export your data after upgrading if you need to move articles between installations.

Troubleshooting Plugin Issuesโ€‹

SymptomLikely CauseFix
Plugin shows "Failed" in dashboardIncompatible with current OJS versionDisable plugin; find compatible release
Fatal PHP error after enabling pluginConflicting class names with updated PKP-libUpdate plugin to latest stable release
Plugin settings page blankTemplate override incompatibleClear caches; update plugin
Plugin gallery shows "Up to date" but plugin is brokenPlugin gallery not yet updatedCheck plugin's GitHub for newer release and install manually
Plugin works but causes 500 errors on certain pagesHook signature changedReport to plugin developer; disable temporarily

Plugin Configuration After Upgradeโ€‹

Some plugins require reconfiguration after an OJS upgrade, even if they were previously working:

PluginWhat to Reconfigure
ORCID ProfileRe-register OAuth application on ORCID developer portal if callback URLs changed
CrossRef ExportVerify depositor credentials and DOI prefix
Stripe / PayPalVerify API keys (test mode vs live mode)
Google AnalyticsConfirm measurement ID is still in settings
ClamAV ScannerVerify ClamAV daemon path if server was updated
MatomoVerify tracker URL and site ID

Further Readingโ€‹