Released: March 30, 2020
The Checkouts and Sources app have been decoupled. It is now possible to disable the Checkouts app.
Support was added to expand Outlook .msg files, and have its individual
content uploaded as separate documents. This support add a new
extract-msg Python library.
The converter system was updated to support generating previews of Outlook .msg is they are uploaded as a single file. The converter will now generate a preview show to the first text member of the file.
The project was updated to run on Django 2.2.10 as Django 1.11 is about to reach end-of-life status.
Django 2.2 is an LTS release and will be supported for several years. Since Django 2.2 itself doesn't support Python 2.7, likewise this version of Mayan EDMS is Python 3 only. Although Django 1.11 is approaching end-of-life status, Mayan EDMS version 3.3 (based on Django 1.11) will continue to receive security and bug fixes, but no new features will be developed for it.
Besides Django, almost every dependency was also updated to their most recent version.
Some dependencies were removed:
Docker Compose is now the prefered method of installation. The installation documentation was updated to reflect this. A Docker Compose files is provided along with new instructions. Data in Docker containers using the existing methods is safe and will be read when reinstalling using the Docker Compose method.
With the Docker Compose, the current Docker installation script is now deprecated and will be removed in the future.
The maximum size of the file caches was increased. The file cache model now uses a BigIntegerField instance for the size and supports up to 9223372036854775807 bytes or 8,192 PetaBytes per cache entry.
A column showing the percentage of usage of each cache entry was added.
preparestatic is now execute as part of the
performupgrade commands, thus removing one installation and one
upgrade step from direct deployments.
A new app was added to support quotas. Quotas allow limiting usage of system resources. Following Mayan EDMS's philosophy and like most apps, the quotas app works using backend and can be extended easily.
Two quotas backends are included, one to limit the document count and another to limit the size of documents that can be created. Both quotas backends support further logic filtering by allowing the quota to apply to all or some users, all or some groups, and all of some document types.
This version ships another incremental update of the search system. The search system now supports backend and the original search code that used the database is in itself a backend.
The support for search backends adds two new settings:
(which defaults to
This brings the search code closer to the roadmap goal of supporting dedicated full text search engines.
The key manager app was updated to support backends. The GnuPG code was converted into a backend and it is enabled by default. This change allowing integrators to add support for their own GPG key implementations without having to rewrite core code.
This update adds two new settings:
SIGNATURES_BACKEND_ARGUMENTS. This change also removes two settings:
has already been deprecated and was inactive.
now the component
gpg_path of the setting
The binary path for
gpg now changes based on the operating system
detected and provides sane default paths for Linux, FreeBSD, OpenBSD,
The storage system was updated to centralize even more how apps use storage. All app now register their storage in an uniform manner using the DefinedStorage system.
One of the advantages of the new DefinedStorage system is that storage usage is very deterministic. This allows to add stages to a storage setup. The existing compressed storage backend was updated to take advantage of this and now behaves like a storage stage and not as a final storage. This allows compressing files transparently regardless of the final type storage (block, object) or location (local, remote).
Similar to the compression stage, an encryption stage was added. This encryption stage uses AES and can transparently encrypt any storage stream ( document files, preview images, cached files). With this encryption stage Mayan EDMS can now provide ecnryption-at-a-rest regardless of the final storage medium.
Support for user impersonation was added. This new feature make testing permission setup very easily. It removeds the need to login using multiple browser windows to test a user access configuration.
The user impersonation features also allows using Mayan EDMS inside a portal very easy as only one account is used for the integration. Any content being shown in the portal, will be limited to the user being impersonated not the user account used for the integration.
Support was added to switch a view from the list mode to item mode and viceversa. A new icon is displayed in the list toolbal. Almost all views support this feature.
The icons of several app were improve using icon composition for a more intuitive visual languge. Some of the apps that received these icon updates were the OCR, file metadata, and document parsing apps.
The login view will now detect and stop redirect loops.
The HTTP request workflow action was updated to support any HTTP method. The HTTP method field is left open to use the most common methods like GET, POST, PUT, PATCH, DELETE, but can also be used for any method supported by the destination host.
The workflows now support conditional execution in two elements. The conditional support for transitions will cause transitions to be disabled or enabled depending on the result of their conditional code. This multiplies the usability of the transitions as they can be toggled based on document properties like metadata values or past workflow actions using the workflow context and workflow fields.
Like transitions, workflow state actions now also support conditional execution. This allows for multiple actions in a single state to be execute based on their respective conditional code results.
With conditional support is now possible to execute external actions, send emails or classify documents based on their content in a general manner, using the same solution.
A new workflow action was added to send documents to the trash can. Like all workflow actions, this one also supports conditional execution.
All apps were updated to use explicit URL parameters. This is only important for integrators if using direct URL requests instead of the API.
The document document type and document models where updated to avoid a double save when creating a new document. This results in a small optimization that is very benefitial when doing massive imports.
Several classes were updated to detect misconfiguration and provide explantions to help integrator pinpoint the source.
The SourceColumn class will now detect and halt using non field attributes as sortable columns.