Version 4.2.4

Released: April 29, 2022

Status: Stable



Trashed documents are now filtered from the cabinet document retrieval methods. This brings code parity with tag documents which work in a very similar way.


The LUT values used when masking an asset for pasting via Pillow’s point() are now typecasted to integer which is what the function expects.


Updated the Debian Docker image from version 11.2-slim to 11.3-slim.

Downgraded the Python Docker image from version 3.11-slim to 3.10-slim.

Pin Jinja2 version to workaround Sphinx bug. Sphinx Jinja2 dependency is not pinned or immutable, and causes the installation of an incompatible version breaking builds.


Fixes the paths to the OTP backends shown in the documentation.


Added community contributed Portainer installation files and documentation chapter.


Improved the document metadata edit form validation.

The disabled attribute was removed from the metadata type label field to avoid having its value removed after a refresh when there is a validation error.

Removed the required flag from the value field when there is a required metadata for a document. The previous behavior cause the tabular form to display “(required)” in column title confusing users and causing them to think that all metadata type fields were required.

Validation errors are now raised for specific required metadata entries and not for the entire form. This help users better understand which metadata field needs to be corrected.

Improved the required metadata validation logic to take into account existing values and empty forms when data was entered into the field but the update checkbox was left unchecked.


Improved Python 3.10 compatibility by adding a compatibility module to encapsulate import of the Iterable class.


Trashed documents are now filtered from the tag document count column.


  • Fix Docker pull counter.

  • Remove repeated Whoosh backend line of code from merge.


  • None

Upgrade process

Docker Compose

Check the Docker upgrading chapter for the complete upgrade process.

Direct deployment

Upgrading from Mayan EDMS 3.5.x


Supervisord must be upgraded to version 4.2.2. See troubleshooting section: After upgrade to version 4.1

  1. Stop supervisord:

    sudo systemctl stop supervisor
  2. Make a backup of your supervisord file:

    sudo cp /etc/supervisor/conf.d/mayan-edms.conf /etc/supervisor/conf.d/mayan-edms.conf.bck
  3. Make a backup of your database:

    Use the respective backup command for the database:

  4. Upgrade to the latest pip version:

    sudo --user=mayan /opt/mayan-edms/bin/pip install --upgrade pip
  5. Remove deprecated requirements:

    sudo --user=mayan curl --output /tmp/removals.txt \
    && sudo --user=mayan /opt/mayan-edms/bin/pip uninstall --requirement /tmp/removals.txt --yes
  6. Update the Mayan EDMS Python package:

    sudo --user=mayan /opt/mayan-edms/bin/pip install mayan-edms==4.4.7

    the requirements will also be updated automatically.

  7. Update the Redis configuration to serve at least 3 databases:


    databases ...


    databases 3
  8. Restart Redis for the changes to take effect:

    sudo systemctl restart redis
  9. Edit the config file at /opt/mayan-edms/media/config.yml:




    LOCK_MANAGER_BACKEND: mayan.apps.lock_manager.backends.redis_lock.RedisLock
    LOCK_MANAGER_BACKEND_ARGUMENTS: {'redis_url':'redis://:mayanredispassword@<IP address of Redis server>:6379/2'}
  10. Update the supervisord configuration file. Replace the environment variables values shown here with your respective settings. This step will refresh the supervisord configuration file with the new queues and the latest recommended layout:

    sudo --user=mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/ platformtemplate supervisord | sudo sh -c "cat > /etc/supervisor/conf.d/mayan-edms.conf"
  11. Edit the supervisord configuration file and update any setting specific to your installation:

    sudo vi /etc/supervisor/conf.d/mayan-edms.conf
  12. Migrate existing database schema and static media files with:

    sudo --user=mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/ performupgrade
  13. Start supervisord:

    sudo systemctl start supervisor
  14. Clear the browser cache to avoid loading old web assets.

The upgrade procedure is now complete.


Follow the solutions outlined in the troubleshooting section: After upgrade to version 4.1

Backward incompatible changes

  • None

Issues closed

  • GitLab issue #1083 python 3.10 AttributeError: module ‘collections’ has no attribute ‘Iterable’

  • GitLab issue #1098 Wrong or missleading API documentation

  • GitLab issue #1099 wrong config sting for AUTHENTICATION_BACKEND TOTP authentication in Version 4.2 Changes documentation