OJS Upgrade & Migration Service
We upgrade Open Journal Systems safely, from OJS 3.3 to 3.4 or 3.5 and from legacy OJS 2.x to OJS 3, and move journals to new servers without breaking URLs, DOIs or Google Scholar indexing. Every upgrade is tested on a staging copy before it touches your live journal.
OJS upgrades and migrations, done carefully
An OJS upgrade looks simple on paper: replace the code, run the upgrade script, log in. In practice, upgrades fail because of things the release notes cannot know about: a custom theme, an abandoned plugin, an old database character set, or a host that has quietly switched PHP versions.
OJS Academy plans, tests and runs OJS upgrades and migrations for journals worldwide. The work is led by an academic-publishing professional with 10+ years of experience who has supported 80+ academic journals, so we test what matters to editors and authors, not just whether the homepage loads.
- Version upgrades: OJS 3.3 to 3.4 or 3.5, OJS 3.4 to 3.5, and newer builds within the same version.
- Legacy migrations: OJS 2.x to OJS 3 through PKP's supported intermediate versions.
- Server and hosting moves: shared hosting to a VPS, one provider to another, or onto our managed OJS hosting.
- Platform migrations: moving back issues from another publishing system into OJS, scoped case by case.
Starting a brand-new journal rather than upgrading? See our OJS installation service or the step-by-step guide on how to install OJS.
Why upgrade OJS?
Security fixes
PKP publishes security and bug fixes only for supported releases. An outdated OJS is a common way in for spam registrations and hacked journal sites.
PHP compatibility
Hosts retire PHP versions that no longer get security updates (PHP 7.x and 8.0 are already end of life). Older OJS releases often break with a blank page or HTTP 500 error when the host moves to a newer PHP. OJS 3.5 needs PHP 8.2 or later.
New features
OJS 3.4 brought a friendlier author submission process with auto-save and a final review step, a unified interface for managing DOIs, a new email composer, and a rewritten statistics toolset designed to support COUNTER R5.
Support status
At the time of writing (October 2026), PKP's download page lists OJS 3.5 as the current long-term support (LTS) release, says OJS 3.3 LTS will be supported until at least 1 January 2027, and does not list 3.4 as LTS.
Still on OJS 3.3? Plan the move now, while it still receives fixes, rather than in a hurry after a security incident.
Supported OJS upgrade paths
You cannot always jump straight from an old version to the latest release. PKP's official upgrade guide sets out the supported route, and each step is a separate, complete upgrade run:
| Your current version | Upgrade route | Notes |
|---|---|---|
| OJS 2.x older than 2.4.8 | Latest 2.4.8-x → 3.2.1-x → 3.3 or later | Three upgrade runs. Each step has its own PHP requirements. |
| OJS 2.4.8-x | 3.2.1-x → 3.3, 3.4 or 3.5 | Direct upgrades from 2.x to the latest 3.x releases are no longer supported. |
| OJS 3.0 – 3.2 | Depends on your exact build | We confirm the route for your build against PKP's guide before starting. |
| OJS 3.2.1-x or 3.3 | Directly to 3.4 or 3.5 | The most common upgrade today. 3.5 needs PHP 8.2+. |
| OJS 3.4 | Directly to 3.5 | Check plugin and theme releases for 3.5 first. |
| Older build of the same version | Newer build (for example a later 3.3.0-x) | A smaller change, but it still needs a backup and testing. |
Upgrading OJS 3.3 to 3.4 or 3.5
Both are supported direct upgrades. For most journals on 3.3, we recommend going straight to 3.5, PKP's current LTS line, if your server can run PHP 8.2 or newer. Choose 3.4 only if a plugin or theme you rely on has no 3.5 release yet. Your team will notice the new submission screens, DOI interface and email composer, so a short training refresher helps editors settle in.
OJS 2 to OJS 3 migration
Moving from OJS 2.x is more a migration than an upgrade: OJS 3 has a different interface, workflow, theme system and plugin architecture. PKP's upgrade scripts carry across articles, issues, users and submission history, but:
- Your OJS 2 theme cannot be reused and must be rebuilt (see our OJS theme design service).
- OJS 2 plugins do not work in OJS 3 and must be replaced with OJS 3 equivalents.
- Some content, such as supplementary files, is handled differently in OJS 3, so we check it after each step.
- The intermediate versions need different PHP versions, so we work on a staging server where PHP can be switched between steps.
What can break during an OJS upgrade, and how we check first
These issues turn a routine upgrade into an emergency. We look for each of them before the live upgrade is scheduled.
Custom themes
Themes built for an older version, or edited templates, can show errors or missing content.
Unmaintained plugins
Plugins from outside the Plugin Gallery may have no release for your target version. One incompatible plugin can stop the site loading.
Custom code
Direct edits to OJS core files are overwritten by the new release. They must be found and re-applied, ideally as a plugin.
PHP version
Each OJS release supports a specific range of PHP versions. The server must match the target release, and every intermediate step.
Database charset and collation
PKP's guide warns that encodings are a common source of upgrade problems. Mixed charsets or non-InnoDB tables can break the upgrade or garble non-English text.
Files directory paths
A wrong files_dir path or missing files leads to "file not found" errors on submissions and galleys after the upgrade.
Our compatibility review
- Every installed plugin is matched to a release for your target version, or a replacement.
- Your code is compared with the original release package to find edited core files and templates.
- PHP, database version, charset and table engine are checked against the OJS system requirements and the target release's README.
- The files directory and
config.inc.phpsettings are verified.
Our OJS upgrade process, step by step
- Full backup
A database dump, the files directory (all submissions and review files), the
public/folder (logos and uploaded images),config.inc.phpand any custom plugins or themes. Backups are stored off the server, and we confirm they restore. - Staging copy
We restore the backup to a separate staging site running the target PHP version. Your live journal keeps working as normal.
- Compatibility review
Plugins, theme, custom code, server and database are checked as described above. We agree with you what to update, replace or retire.
- Run the upgrade on staging
We install the new release package, carry
config.inc.phpacross and compare it with the new configuration template, then run PKP's command-line upgrade tool. The command line avoids browser timeouts on large journals. - Test what your journal depends on
A test submission, reviewer assignment, editorial decision, email delivery, DOI registration, statistics, search, the theme on desktop and mobile, and Google Scholar meta tags on article pages.
- Production upgrade in a quiet window
At an agreed time, the live site shows a maintenance message, scheduled tasks and background jobs are stopped, a fresh backup is taken and the tested procedure is repeated.
- Monitoring and rollback plan
For the following days we watch error logs, scheduled tasks and email delivery. A rollback to the pre-upgrade backup is planned before we start, so a serious problem never leaves the journal stranded.
The upgrade commands in PKP's upgrade guide for OJS 3.x look like this. Always check that guide and the documentation of your release, as details can change between versions:
# 1. Confirm the installed and new versions
php tools/upgrade.php check
# 2. Run the upgrade and keep a log
php -d memory_limit=2048M tools/upgrade.php upgrade | tee -a upgrade.log
Never test an upgrade on your live journal
PKP's own guide says to complete a test upgrade before touching production. If an upgrade fails halfway, the database can be left between versions, and the only clean fix is restoring the backup. Already in that situation? Our OJS technical support team can help, and our guide to common OJS errors covers many post-upgrade symptoms.
OJS migration to a new server or hosting provider
To migrate OJS to a new server, four things must move together: the OJS code, the database, the files directory and the public/ folder, plus the config.inc.php settings that connect them. Our usual sequence:
- Prepare the new server
Matching PHP version and extensions, database, SSL certificate, SMTP email and the cron job for scheduled tasks.
- Copy and restore
Restore the database and files, then update the database details,
files_dirand, if needed,base_urlinconfig.inc.php. - Test before the switch
We test the new server privately (hosts-file entry or temporary address) while the old one stays live.
- DNS cut-over
We lower the DNS TTL in advance, pause editorial activity briefly, do a final sync of the database and files, then point the domain to the new server.
- Keep a fallback
The old server stays untouched for a few days in case anything needs to be compared or recovered.
Keeping URLs, DOIs and Google Scholar indexing intact
If the domain and journal paths stay the same, every article URL stays the same. DOIs keep resolving and Google Scholar sees no change. If the domain must change, for example when moving a journal onto a university domain, we:
- Set up permanent 301 redirects from every old URL (articles, PDFs, issues) to its new address.
- Re-deposit your DOIs with Crossref so they resolve to the new URLs. The DOIs themselves do not change.
- Update Google Search Console and submit the new sitemap.
- Keep the clean URL setting (with or without
index.php) consistent, because changing it also changes every article address.
Migrating to OJS from another platform
Journals on a custom website, WordPress or other journal software can move to OJS. Depending on how structured the old data is, back issues can be imported with OJS's Native XML import, entered with the QuickSubmit plugin, or converted with a custom script. Every source is different, so we start with a sample and agree what will move (metadata, PDFs, authors, DOIs, redirects for old URLs) before committing to a plan, and we tell you upfront if something cannot move automatically.
Pre-upgrade checklist for OJS
Whether you upgrade OJS yourself or with us, check these points first:
| Check | Why it matters |
|---|---|
| Exact current version and build (Administration → System Information) | Decides your upgrade path and any intermediate steps. |
| PHP and database versions vs. the target release's README | OJS 3.5 needs PHP 8.2+. Multi-step 2.x upgrades need older PHP versions too. |
Backup of database, files directory, public/ and config.inc.php | Your only way back if anything fails. Test that it restores. |
| List of installed plugins, including third-party ones | Each one needs a compatible release or a replacement. |
| Theme type and any edited templates | Custom themes often need updating for the new version. |
| Edits to OJS core files | They are overwritten by the upgrade and must be re-applied. |
| Database charset, collation and table engine | Encoding problems are a common cause of failed upgrades. |
| Free disk space | Backups and the new release need room on the server. |
| Scheduled tasks and background jobs | They must be paused during the upgrade and working afterwards. |
| A quiet window agreed with editors | Avoids losing work from authors or reviewers mid-submission. |
| A written rollback plan | Decides in advance when and how to restore the backup. |
Frequently Asked Questions
Will my article URLs and DOIs change after an OJS upgrade?
No, not if the domain and journal path stay the same. An upgrade changes the software, not the addresses, so article pages, PDFs and DOI links keep working. If you also move to a new domain, we add permanent 301 redirects from every old URL and re-deposit your DOIs with Crossref so they resolve to the new address. The DOIs themselves never change.
How long does an OJS upgrade take?
The upgrade script runs for minutes on a small journal and longer on a large one with years of submissions and statistics. Including the staging copy, review and testing, a 3.3 to 3.4/3.5 upgrade usually takes a few working days. A 2.x migration with intermediate versions or a new theme takes longer. We give you a timeline after reviewing your installation.
Do you test the upgrade on a staging site first?
Always. We upgrade a full copy of your journal on a separate staging site and test the workflow, emails, DOIs, statistics and theme there. Your live journal runs normally until the tested procedure is repeated on production.
Can you upgrade OJS 2.x to OJS 3?
Yes. We follow PKP's supported route: the latest 2.4.8-x build, then 3.2.1-x, then the current release. Articles, issues, users and submission history are carried across. Your OJS 2 theme cannot be reused, so plan for a new OJS 3 theme.
Will my custom theme and plugins still work after the upgrade?
It depends on how they were built. Plugins and themes from the PKP Plugin Gallery usually have releases for newer versions; custom themes, edited templates and plugins from unknown sources often need updating. We check each one on staging first. See our list of well-maintained OJS plugins.
Will the journal be offline during the upgrade?
Only during the production upgrade window, when the site shows a maintenance message so nobody submits or reviews while the database changes. We schedule it at a quiet time agreed with your editors.
Can you upgrade OJS on shared cPanel hosting?
Usually, yes, if the host offers the PHP version the target release needs. SSH access makes upgrades more reliable. If your host cannot provide PHP 8.2 or newer, OJS 3.5 cannot run there, and moving to suitable OJS hosting is the practical fix.
Plan your OJS upgrade with confidence
Send us your current OJS version, hosting details and any custom theme or plugins. We will review your installation and recommend a safe upgrade or migration path. Email support@ojsacademy.com or call/WhatsApp +91-9625801660.