Upgrading to ME 1.17

Elentra ME 1.17 was released on December 20th, 2019.

Upgrade Instructions

Please note that Elentra ME v1.17 requires at least PHP 7.2, although we would recommend upgrading to PHP 7.3 at this time.

Part 1: Server Updates

For the following commands, please first check which user/group Apache is running as.

Production

usermod -G apache -a production
usermod -G production -a apache
chmod 777 storage/cache

Staging

usermod -G apache -a staging
usermod -G staging -a apache
chmod 777 storage/cache

Once you run the above commands, make sure you clear the contents of your storage/cache directory.

Part 2: Source Code Update

  1. From within Sourcetree on your developer workstation, open your existing local Elentra ME Branded Edition (i.e., uni-elentra-1x-me) repository.

  2. If you do not currently have an upstream Git remote that points to your up-to-date Institutional Fork or to the Consortium Edition elentra-1x-me repository, then ensure that you add one:

    git remote add upstream git@github.com:ElentraProject/elentra-1x-me.git
  3. Click the "Fetch" button (ensuring that "Fetch from all remotes" and "Prune tracking branches no longer present on remote(s)" options are checked) or type git fetch upstream.

  4. Checkout your Branded Edition staging branch (e.g., uni/staging) and create a new branch based on this branch (e.g., uni/staging-v115) just for easy restore purposes in case it's needed. Once that branch has been created, checkout the original Branded Edition staging branch (e.g., uni/staging) and continue.

  5. Within the "Remotes" section in Sourcetree sidebar, expand the upstream remote, then right click on release/1.17 and click Pull upstream/release/1.17 into uni/staging. At this point, you may be asked to resolve any merge conflicts that have been created by making modifications to your Branded Edition that conflict with changes that have been made to the Consortium Edition. Depending on your level of conflict, this could be as simple as a minor modification to the composer.lock file or something much more complex. If you require assistance, please book an appointment with the Elentra Consortium Core Team, or chat with us on Slack in the #Developers channel and we will provide you with some guidance on moving forward. As a point of note, we always recommend that Consortium Participants follow the Contribution best practices defined in our documentation, which may help reduce the number of conflicts that you encounter.

  6. Once the conflicts have been resolved, commit the merge to your uni/staging branch and continue to Part 2 of the instructions.

We would recommend against pushing your changes to your origin remote at this point. Wait until Part 2 has been completed and have finished some initial local testing.

Updating a Branded API

Branded API changes should be base off of the upstream release/3.x branch.

  1. To update your branded Elentra API, first clone or checkout the master branch of your Branded API to your local environment using Sourcetree.

  2. Click the "Fetch" button (ensuring that "Fetch from all remotes" and "Prune tracking branches no longer present on remote(s)" options are checked) or type git fetch upstream.

  3. Within the "Remotes" section in Sourcetree sidebar, expand the upstream remote, then right click on release/3.x and click Pull upstream/release/3.x into uni/master. There may be merge conflicts that must be resolved if customizations made to your branded API.

  4. Resolve any merge conflicts and commit the changes to the master branch of your Branded API. Push any changes to your Branded API remote.

  5. Using Sourcetree or your project service of choice, create a new tag that follows semantic versioning. For example at the time of writting, the latest tagged release of the api is v3.2.0 and the composer.json provided with Elentra 1.17 specifies that the major version of API version must be ~3.0. Create a new tag where the current date follows the patch version: 3.2.0.20190227. More information about tagging API releases can be found here.

  6. In your Branded Edition of Elentra ME, run composer update elentrapackages/elentra-1x-api and commit the changes to the composer.lock file.

Part 3: Configuration and Branding Update

  1. Using a tool like Araxis Merge, compare www-root/core/config/settings.inc.php with the settings-staging.inc.php and settings-production.inc.php files in the same directory. If you have alternatively named or additional settings files, use those instead. When you compare the Consortium Edition settings.inc.php file with your Branded Edition files, you are looking to add additional settings that have been added to the stock settings.inc.php file and remove any settings that have been removed from the stock settings.inc.php file. In most cases, your Branded Edition settings files should have the same lines (albeit potentially different settings values) as the Consortium Edition. Once you have compared your settings files, commit the changes to your uni/staging branch.

  2. Using a tool like Araxis Merge, compare the www-root/templates/default directory with your own Branded Edition templates (e.g., www-root/templates/uni). In many cases, you will want to add missing files, update your language files, add any additions to the CSS files, add modifications to your header.tpl.php files, etc. This process can take a bit of time and should be repeated for each additional template that you have created. Once you have compared your templates, commit the changes to your uni/staging branch.

Part 4: Testing Locally

Now that you have upgraded your source code and updated your settings and templates. You should begin reviewing and testing the upgrade on your developer work station. Before testing can begin we need to do a few things.

  1. Log into your local elentra-developer Docker container, and change to your uni-elentra-1x-me directory:

    docker exec -it elentra-developer bash
    cd /var/www/vhosts/uni-elentra-1x-me
  2. Ensure that the latest Composer dependencies installed:

    composer install
  3. Ensure that the database migrations are completed:

    php elentra migrate --up
  4. Providing these steps were successful, you should now be able to visit https://uni-elentra-1x-me.localhost in your web browser and being your review.

At this point, providing you're satisfied with your local testing, we would recommend that you push your changes to your origin remote.

Part 5: Testing on Staging

Providing that you have pushed the changes to your uni/staging branch to your origin remote, you can now deploy the upgrade to your staging environment from within your Docker container.

  1. Log into your local elentra-developer Docker container, and change to your deployment directory:

    docker exec -it elentra-developer bash
    cd /var/www/vhosts/uni-elentra-1x-me/deployment
  2. Deploy changes to your staging server:

    cap staging deploy
  3. Providing the deployment was successful, you should now be able to visit https://elentra-staging.med.university.edu in your web browser to begin a thorough review of your upgraded Branded Edition implementation of Elentra ME.

For the most accurate review possible, we would recommend that you have a very recent version of your production databases installed and scrubbed on your staging database server. This is typically achieved using the scrub.sh shell script included with the Elentra Platform.

Part 6: Deploy to Production

Providing that you have thoroughly tested your upgraded Branded Edition implementation of Elentra ME on within your staging environment, it is safe to proceed with a production upgrade.

  1. From within Sourcetree on your developer workstation, open your existing local Elentra ME Branded Edition (i.e., uni-elentra-1x-me) repository.

  2. Checkout your uni/production branch.

  3. Right click on your uni/staging branch and click "Merge uni/staging into uni/production". This will merge all of the commits that have gone into creating the upgrade, into your uni/production branch.

  4. Push the commits in the uni/production branch to your origin remote.Log into your local elentra-developer Docker container, and change to your deployment directory:

    docker exec -it elentra-developer bash
    cd /var/www/vhosts/uni-elentra-1x-me/deployment
  5. Deploy changes to your production server:

    cap production deploy
  6. Providing the deployment was successful, you should now be able to visit https://elentra.med.university.edu in your web browser and enjoy the fact that you are now running the latest version of Elentra ME.

Part 7: Workflows and CBME Notes

  • Set up On-Demand Workflows as required by your organization. This allows users to initiate forms on-demand, whether or not CBME is not in use. See more information here.

  • If you are a CBME organization and you see the following message about enabling CBME features, do not click the button, as this will create duplicate tag sets.

  • Take a look at www-root/core/modules/admin/courses/cbme/cbme-setup.inc.php line 333. If that statement is stopping the script from properly running, it is an indication that your database might be missing assessment methods for specific organizations. To fix this, manually add the missing assessment method and associate that with the proper organization ID in cbl_assessment_method_organisations table

  • For schools using the CBME Program Dashboard cron job cron/cbme-learner-dashboard-statistics-generator.php should be set to run nightly.