Availability of the new Tuleap Documents plugin (Tuleap Enterprise Edition only)

Almost 1 year ago we started a major redesign of one of the Tuleap tools: the document manager. We are super proud today to mark remove the “under dev flag” and to declare the General Availability. All Tuleap Enterprise users are encouraged to install and activate the tuleap-plugin-document package.

It’s a good opportunity to have a quick recap of this new plugin and more generally Document Management in Tuleap.

First of all, a bit of internal tech about how Document is built: it’s a Vue.js app built on top of docman REST routes. While the UI is only shipped with Tuleap Enterprise, all the REST routes (APIs) are part of the good old docman plugin. It means that anyone benefit from the API (if you built something with old SOAP API, you should consider switching).


In Tuleap, the Document Manager is designed to be a leightweight tool when comes the time for project members to easily share documentation. It’s designed to be what a team need to be able to publish documentation to “The World”. It’s not designed to replace the Enterprise documentation tooling (SharePoint, Alfresco, Documentum, etc). Most of the time those tools that are too complex when teammates “just” need to publish some docs. This is were Tuleap Document shines: simple, easy to use and compatible with Enterprise usage (fine-grained permissions, validation workflow, etc).

Organize your documentation in a tree structure and upload any kind of files.


You can create file with classic “browse button” as well as drag’n drop of one or several files from your local explorer. If allowed by site administrator, you can upload very large files (without any upper size limit) with support of upload resume when there are network issues. Site administrators that are constraint in disk space can configure quota that are defined and enforced per project.

You can create several type of documents:

  • Files: any doc you can upload (.odt, .xlsx, .xml…)
  • Links: any valid HTTP(S) URL
  • Embedded documents: write your document with WYSIWYG editor directly inside your web browser
  • Empty documents: they are alike placeholders. Empty docs can be transparently replaced by any other kind of “real” document when needed. One of the usage is to show that a specific document is awaited at this location (see below for more info and what’s new in 11.6 section).
Docman upload progression
Document manager upload progression


For all those documents, Tuleap keep a record of each version of the document and you can easily navigate through the history of the versions.

Documents comes with a bunch of properties that allows to better manage them. Projects can define their own properties (see after) but Tuleap define a bunch of them:

  • Permission: on individual folder or document (who can read, write or manage them)
  • Status: is your document in Draft or Active.
  • Locked: help to manage concurrent edits or to ensure a given file version is no longer modified.
  • Obsolescence date: documents might not live forever, set a “Best Before Date” and the document will disappear at the given date (just hidden, can still be retrieved!).
  • Approval table: gather the list of users that need to give you feedback on a given doc, Tuleap will remind them to give you an answer and keep track of the evolutions until final version.

Those properties are visible in the Quick Look preview on the right hand side of the interface

Projects can defined their own properties (either free text or list of values), those values can be made mandatory to enforce classification or inherted from the parent folder.

Want more? Go ahead and discover the last two features that are unveiled with Tuleap 11.6!

Types of documents
Types of documents
Document preview
Document “Quick look” preview
Custom properties
Custom properties


This section focus on the differences between Tuleap 11.5 and Tuleap 11.6:

  • story #13208 create new version of empty document

Empty documents are handy when it comes to formal processes and certifications. Your internal process defines a set of document to be delivered (most of the time in a hierarchy of folders) at a given stage of your project maturity. With “Empty Documents”, the whole hierarchy can be defined at the beginning of the project (they are inherited so you can put them in a project template) and when the time comes to create the actual document, the “Empty” can become anything, a File, an Embedded doc, a Link, etc.

  • story #13424 Be able to share a preview link

Document now comes with a “Quick Look” that displays metadata of the document on the right hand side of the screen. This view can now be shared with the link of the browser.

An empty document
An empty document


  • request #13887 Permanent validity is no longer a valid option at new UI document creation
  • request #13859 Document cannot be created when the obsolescence date is not enabled
  • request #13848 Redirect to the current folder instead of root folder when user switch to old UI when quick look is displayed
  • request #13847 Events should not be triggered if database insertion fail at version creation
  • request #13814 Underline letters in document title are truncated
  • request #13809 Remove unsupported use of v-bind in translated strings
  • request #13809 No access is logged when user accesses a document on the new UI
  • request #13805 drag an drop reset parent custom metadata
  • request #13802 The unlock event is raised in the history when we update an unlocked item via the new document plugin
  • request #13785 can not update properties of root folder
  • request #13779 remove underconstruction notice of docman REST routes
  • request #13778 remove no more need link to old properties in document moda
  • request #13777 properly instantiate date picker in document


  • story #13669 permission delegation for a read-only site admin (REST)

This new delegated permission is meant to be used for tools that need a complete read access to the platform (as a site administrator would have) but without the ability to modify anything.

This new permission only works for REST API access, for regular web browsing, the user is considered as a regular, unprivileged user.

This permission is handy for any kind of search / search engine integration.

  • story #13856 have a REST end point to get my artifacts

Expose tracker artifacts that are visible in “My Artifact” personal widget.


  • request #13793 Add kanban entry in user history
  • request #13790 History should display more relevant quick links for artifact entry

The list of recently visited items now include the kanban boards and the scrum milestones with shortcuts to planning and cardwall views.

User’s history



  • request #13874 Support return type declaration for classes used in Simpletest mocking library
  • request #13774 Update to Psalm 3.4.12
  • request #13854 Update to vimeo/psalm 3.5.1
  • request #13804 Tuleap\Tracker\RecentlyVisited namespace is not PSR4
  • request #13780 Enforce the position of arguments and braces of methods in the PHP codebase
  • request #13765 Update to paragonie/easydb v2.10.0


  • request #13845 Replace easygettext by our own gettext extractor
  • request #13828 Upgrade to Typescript 3.6
  • request #13789 Move the release widget plugin to Jest
  • request #13775 Upgrade dev dependencies August 2019 edition
  • request #13836 Helper to inject TLP classes into an illustration
  • request #13792 JavaScript error whith color switcher in TLP doc

Releases Stats

  • 4257 files changed, 97576 insertions(+), 46900 deletions(-)
  • They made the release (number of commits, author, company)
    • 185 Thomas Gerbet, Enalean
    • 148 Marie Ange Garnier, Enalean
    • 117 Nicolas Terray, Enalean
    • 83 Clarck Robinson, Enalean
    • 77 Yannis ROSSETTO, Enalean
    • 70 Joris Masson, Enalean
    • 17 Manuel VACELET, Enalean
    • 16 Martin Goyot, Enalean
    • 9 Thomas Gorka, Enalean
    • 8 Benjamin Dauton, Enalean
    • 2 lorentzr, Enalean
    • 1 Nouha TERZI, STMicroelectronics

Bug fix


  • request #13863 Anonymous user can gain access to resources in public project on instances not allowing anonymous user


  • request #13824 Enhance Cross Tracker Search widget style
  • request #13818 Cross tracker search does no longer enable user to select project


  • request #13773 Dashboard styles should be separate from BurningParrot theme


  • request #13694 Get rid of RabbitMQ


  • request #13860 Embedded documentation index page does not fallback to /index.html


  • request #13815 Notifications of the bot Mattermost AgileDashboard plugin are not sent


  • request #13782 OpenGraph meta tags should be available in BurningParrot pages
  • request #13776 og:image is always blue


  • request #13850 Verify that a service is not a system service at deletion back-end-side
  • request #13819 The “Available” switch in the Edit service modal does not change
  • request #13822 Enhance Tuleap version visibility in sidebar
  • request #13786 Page displaying all references of a project is broken
  • request #13784 Do not use different icons for project
  • request #12791 Fix html purification for project privacy change


  • request #13817 Burnup representation must not contains wrongly cached values
  • request #13816 Daily burnup event must not cache value before the timeperiod startdate


  • request #13849 Processes launched by the ROOT_DAILY system event should not timeout after 60 seconds
  • request #13808 ROOT_DAILY event should be launched only once per day (RHEL7)


  • request #13772 null is displayed as title of a node in graph of dependencies


  • request #13791 Timetracking personnal widget should allow user to retrieve its times for one day


  • request #13855 Wrong path is provided at artifact attachements folder initialisation
  • request #13841 Mass change do not change artifact
  • request #13642 Int/float value says that field is “Empty” whereas it is 0
  • request #10684 Burndown in tracker report duration should be > 1


  • request #13770 Displaying bug because of special characters added in the Purpose field while “Create a new user” process
  • request #13769 Displaying bug because of space added in the Login Name field while “Create a new user” process