Our client is a large US based enterprise providing Moodle based Learning Management solution to educational institutions, training consultancies, government and corporate organizations from across different industries.
Upgrade to Moodle 4.1 is only possible from Moodle 3.9 or later.
So, the current version was upgraded to ver 3.9 as a first step.
Minimum server, client, database requirements were met.
A backup of the current system including the software (server/htdocs/moodle), data files (server/moodledata)and the database (Postgres or MySQL database dump) was taken, before performing the upgrade.
All upgrades and changes were initially done on a staging environment.
Before the upgrade, the site was put in maintenance mode. Any cron processes that were running was allowed to complete.
The latest Moodle version was downloaded on the server. The old files were moved to another location.
The new Moodle software program files were moved to the same location as the old files, so that it will also upgrade SQL and moodledata in the process.
Copied the old config.php file, custom plugins, .htaccess file back to the new Moodle directory, after verifying the custom plugins were the correct version for the new Moodle.
The config.php and other source code were set to be readable by the server, and not writable for maximum security.
Once the upgrade process started, Moodle performed all necessary SQL data and file system upgrades.
Modifications to source code were done through VSCode, and uploaded using Filezilla.
The required plugins for use with the 4.1 version were downloaded. The capabilities that came with the new Moodle version were enabled from Site Administration.
Plugin source code was deployed to Moodle installation directory. Web services and protocol were enabled.
The plugin code was placed in the right Moodle code tree for the plugin type. For eg. theme plugin was placed in /path/to/moodle/theme/ folder.
The plugins that were not deployed using administration web interface, were executed manually.
If client is using one of the older versions of Moodle, it cannot be upgraded to the latest version at once. For eg. the software will need to be upgraded to 3.6 or later before upgrading to 3.11, or upgrade to 3.9 or later before upgrading to 4.1. Hence the upgrade was done in a series of steps.
The server software such as PHP, should be upgraded to a compatible version of the Moodle version to be installed. This was verified and upgraded before installation.
The version of plugins that are already installed should be compatible with the new Moodle version. If not, then the plugin will have to be uninstalled before installing Moodle. A compatible version can then be installed. This was verified and installed accordingly.
A detailed study of the existing system, the versions installed and their compatibility with the new Moodle version was done before the upgrade.
A full backup of the system was taken, so that the system can be rolled back to the previous state, in case of any issues.
The upgrade was first done on a test server, so that any unexpected errors can be fixed before being performed on the production server.