Contact No:  +91-9625801660
  1. Home
  2. OJS Services
  3. OJS Upgrade & Migration
OJS Upgrade & Migration

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 versionUpgrade routeNotes
OJS 2.x older than 2.4.8Latest 2.4.8-x → 3.2.1-x → 3.3 or laterThree upgrade runs. Each step has its own PHP requirements.
OJS 2.4.8-x3.2.1-x → 3.3, 3.4 or 3.5Direct upgrades from 2.x to the latest 3.x releases are no longer supported.
OJS 3.0 – 3.2Depends on your exact buildWe confirm the route for your build against PKP's guide before starting.
OJS 3.2.1-x or 3.3Directly to 3.4 or 3.5The most common upgrade today. 3.5 needs PHP 8.2+.
OJS 3.4Directly to 3.5Check plugin and theme releases for 3.5 first.
Older build of the same versionNewer 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.php settings are verified.

Our OJS upgrade process, step by step

  1. Full backup

    A database dump, the files directory (all submissions and review files), the public/ folder (logos and uploaded images), config.inc.php and any custom plugins or themes. Backups are stored off the server, and we confirm they restore.

  2. Staging copy

    We restore the backup to a separate staging site running the target PHP version. Your live journal keeps working as normal.

  3. Compatibility review

    Plugins, theme, custom code, server and database are checked as described above. We agree with you what to update, replace or retire.

  4. Run the upgrade on staging

    We install the new release package, carry config.inc.php across 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.

  5. 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.

  6. 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.

  7. 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:

  1. Prepare the new server

    Matching PHP version and extensions, database, SSL certificate, SMTP email and the cron job for scheduled tasks.

  2. Copy and restore

    Restore the database and files, then update the database details, files_dir and, if needed, base_url in config.inc.php.

  3. Test before the switch

    We test the new server privately (hosts-file entry or temporary address) while the old one stays live.

  4. 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.

  5. 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:

CheckWhy 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 READMEOJS 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.phpYour only way back if anything fails. Test that it restores.
List of installed plugins, including third-party onesEach one needs a compatible release or a replacement.
Theme type and any edited templatesCustom themes often need updating for the new version.
Edits to OJS core filesThey are overwritten by the upgrade and must be re-applied.
Database charset, collation and table engineEncoding problems are a common cause of failed upgrades.
Free disk spaceBackups and the new release need room on the server.
Scheduled tasks and background jobsThey must be paused during the upgrade and working afterwards.
A quiet window agreed with editorsAvoids losing work from authors or reviewers mid-submission.
A written rollback planDecides 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.

WhatsApp