Adminguide 1
Adminguide 1
Abstract
This document explains how to administrate SeedDMS. It rather
focuses on the person being in charge to run SeedDMS than the
end user.
CONTENTS 1
Contents
1 SeedDMS Administration 4
1.1 Admin-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
CONTENTS 2
1.8 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.9 Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.12 Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.14 Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2 Adding Content 28
2.3.4 WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.5 PHP-Script . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 Configuration 36
4 Fulltext 46
4.1 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5 Workflows 50
6 Notification 57
6.2 Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7 Authentication 61
7.3 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8 Data Model 62
8.1 Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.1.1 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1.2 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.1.3 Attachments . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.1.4 Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.2 Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.3 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1 SeedDMS Administration
After logging in to SeedDMS, you will find the link to the Admin-Tools within
the black menu bar on the very top.
1.1 Admin-Tools
The Admin-Tools are either reachable by the menu bar on the top or by using
the buttons as shown in the figure.
Here you manage all the users who should be able to login into SeedDMS.
If you are using SeedDMS in conjunction with Active Directory or an LDAP
server you should manage the users in the Active Directory and not in Seed-
DMS.
The page is split into a left column containing a menu to select a user or to
create a new one and a right column containing a form to modify an exiting
user or to fill in new user data. If a user is selected there will also be some
additional information below the select menu.
A user can either be selected by scrolling the menu or entering the first letters
of the user name in the input field which becomes visible when the menu is
unfold.
Open the Users management and select Add new user from the dropdown
menu.
Select the role for your user from the Role dropdown field. You can define
administrators, normal users and guests. Those roles are predefined and affect
the functions available and the access on documents. Administrators are not
restricted in any way. They always have unlimited rights on documents and
folders. Guests are very limited in using the system and accessing documents
and folders. Guest can search and browse the documents, but they will under
no circumstances have more then read access on folders and documents. If
access rights are limit further, guest won’t see the documents and folders at
all.
0 1 SEEDDMS ADMINISTRATION 8
If you already have some defined groups you can select the appropriate group
by clicking into the Groups field. If you do not yet have any groups you can
still do that later in the groups management. Groups are used for defining
access rights, notifications and workflow operation.
If you want to define a Home folder for the user, select it by either typing the
folder name to search for it or click the Folder... button to select one.
SeedDMS can restrict the maximum space on the disk used by a user by set-
ting the quota field to a value > 0. If there is already a system wide quota
this option will not be available. Only document versions will be counted
for the quota. Document attachments and comments uploaded as a file when
reviewing or approving a document are not taken into account.
If you want to hide the user from the users list, (user not visible for other
users but for admins) tick the option. Those users will not show up in any list
of users, e.g. in the search form.
If you want to have the account disabled, tick the box. Login for disabled
accounts isn’t possible anymore. A user will be automatically disabled if the
number of login failures exceeds the configured value in the configuration.
Reenabling a user will also reset the number of login failures.
If you want to assign a specific workflow to the new user, select one or more
workflows from the dropdown. Whenever the user uploads a new document
or adds a new version to an existing document, one of the configured work-
flows is mandatory. This option is only available if the advanced workflow
engine is turned on.
A user can have predefined reviewers and approvers for each document or
new version of a document uploaded by this user. This option is only available
if the traditional workflow is turn on.
For editing an existing user (e.g. to update the email address) go to the Users
management and select the user you want to edit from the dropdown menu.
Change the necessary field, then click Save at the bottom to save your changes.
If you do not want to delete a user but want to prevent him from accessing
your DMS simply go to the Users management, select the user from the drop-
down and tick the Disable account checkbox. Click Save once done. The
user will be unable to access the DMS and will not receive any notifications
0 1 SEEDDMS ADMINISTRATION 9
To remove an existing user, go to the Users management, select the user you
want to delete and click Remove this user. This will delete the user from
all user groups he/she has been a member of. A deleted user cannot be
recovered. Before the deletion you will be asked to select a user who will take
over the documents and folders of the users.
• private document links will be deleted and public document links will
be transferred to the replacement user
0 1 SEEDDMS ADMINISTRATION 10
Before the deletion you will be asked which user shall take over the docu-
ments of the user to be deleted. If the user is still in any (traditional and ad-
vanced) workflow process, then he/she will be deleted from each workflow
first, by adding another log message to that process indicating the deletion.
This happens for any review/approval regardless of its current state. So even
if the user has already approved/reviewed the document it will be marked
as ’user deleted from the process’. You need to check the review/approval
log to find out about the user’s previous actions. Be aware that removing a
user may have consequences for the review or approval of a document. Docu-
ments just having this user as a reviewer or approver will lose it, and therefore
will finish its current workflow step. The same is true, if the user is the last
approver/reviewer missing to enter the next state. As the review/approval
itself will not be deleted, it will still contain the user id which cannot be re-
solved anymore once the user has been deleted. The listing of reviewers and
approvers will therefore contain just a message that the user with id ’xx’ has
been removed. Removing users which are part of an advanced workflow can
possibly leave a transition without a user triggering that transition. If that
workflow is in use, it may never leave a certain state because the linking tran-
sition to the next state is not triggered anymore.
The figure shows information of a user who still needs to review four docu-
ments and to approve two documents. If the user is deleted those documents
0 1 SEEDDMS ADMINISTRATION 11
may enter the next state (either being released or waiting for approval). The
user also has a personal keyword list. Deleting it is not crucial because key-
words are just copied over into a text field of the document. Documents
having a keyword from that list will retain it, even if the list is deleted.
Instead of completely deleting a user, which leaves open references to the user
in the review and approval log, a user can only be deleted from the processes
he/she is involved in. This includes all reviews and approvals where the user
is assigned as an individual, but not as a member of a group, even if the user is
the only member of that group. It ensures that there is no document left wait-
ing for the review/approval by the user. Combining this with disabling the
account is often sufficient to keep the user from using the DMS, without run-
ning the risk of having documents which will never be reviewed or approved.
Keep in mind that the user may still be a mandatory reviewer/approver of
a user or is part of an advanded workflow. If the user is a mandatory re-
viewer/approver of another user, and if that user uploads a new document
version, the user will be added to a process again even if the user is disabled.
Before executing the deletion you can pick from a more fine grained list of
reviews/approvals to be actually deleted. Usually, it is sufficient to delete
only those reviews/approvals which has not been touched by the user, as
they are the only ones which stop a review/approval from finishing. But you
also remove the user from processes where he/she has already been active.
Disabling an account and possibly removing a user from all processes still
leaves documents, folders and attachment belonging to the user. This could
complicate further modifications, due to insufficient access rights by other
users. A simple way out is to transfer all objects to another user by chang-
ing the ownership. This covers all documents, folders, attachments, public
document links and calendar entries.
0 1 SEEDDMS ADMINISTRATION 12
Substitution of a user is a concept for acting as a different user than the user
currently logged in. It is inspired by the similar concept on Unix/Linux sys-
tems and it is only available to administrators. Once a user substitution has
been activated all operations are executed like if that user was logged in. There
will be later no way to tell if an operation was done after a user substitution
or a regular login. During an active user substitution the main menu will be
colored red. User substitution can be initiated either from the user manager
or the right most menu item in the main menu. User substitution also works
for disabled users which is often the only way to finish remaining tasks of that
user without reactivating the account. Leaving the substitution mode is like a
regular logout, but the button in the menu is labeled as ’Sign out user’.
If you plan to add several users to your DMS it makes sense to put them into
groups. This saves you a lot of work afterwards when defining user actions
(e.g. in workflows) or access rights where you can just add the group instead
of having to add each single user.
Select Groups management, in there select Add new group from the dropw-
down.
Define a name for your group and if required, write a description. Click Add
new group to create the group. Now you can define the members of the group
if you already created the users previously. Otherwise you can add the users
later once you created them.
To add a member to your group select the appropriate name from the drop-
down. If you want the user to be this group’s manager, tick the Manager
checkbox. There is currently no particular function behind a group manager.
Click Add once you’re done.
0 1 SEEDDMS ADMINISTRATION 13
Before you can add a user to a group, first select the group you want to add
a member. Now go to Add a member, select the user, decide if you want to
make her the group manager (you can have more than one group manager)
and click the Add button.
Within Groups management select the group you want to edit. Find the user
from where you want to remove the group administrator right and click the
Toggle manager button. The change becomes active immediately.
The group manager is able to add or remove users to the group he/she is the
manager of. This is only possible, if the Enable Users View is turned on in
the settings. In that case the MyAccount page has a subpage Groups which
lists all groups and its members in which the currently logged in user is a
member of. As a manager there will be buttons to remove and add users.
Within Group management select the group you want to edit. Find the user
you want to remove and click the Delete button. This will only remove the
user from the group, the user will still be able to log on to your DMS.
0 1 SEEDDMS ADMINISTRATION 14
This option creates a versioning file inside each document folder in the content
store on the hard disk. Select the folder you want to create the versioning file
for it and click the Versioning file creation button. Versioning files will be
created for each document within the selected folder. Versioning files are a
left over from the predecessors of SeedDMS and are kept for compatibility
reasons. They contain some meta data stored in the database.
With this option you can create archives containing the files of the entire DMS.
You have the possibility to select single folders or backup the whole DMS in
one single archive. The archive only contains the files and not the database.
All backup files will be placed within the data folder of your DMS.
To create a backup, either type the folder name into the search and hit the tab
key or click the Folder button to select the desired folder from the folder tree.
If you want to create a human readable archive tick the checkbox, otherwise
leave the box empty. Once done click Archive creation to start.
Depending on the size of your DMS and the power of your server it can take
several minutes to complete a backup.
Once the backup is completed it will appear within the Existing backup list.
By clicking the name of the backup you can download the file to your com-
puter.
If you want do delete a backup just click the Remove backup file button. Once
done you have to confirm the removal of the backup file.
Existing dumps will be shown in the Existing dump files section. To down-
load a file click it’s name, to delete a dump hit the Remove dump button.
Once you confirmed the removal of the dump you can’t undo it.
This option should only be used with care as it deletes all files within the
folder you choose.
Select the folder for which you want to delete the files either by searching
for it by typing it’s name and hit the tab key on your keyboard or click the
Folder. . . * button to select the folder from the folder tree. Once you are ready
click the Files Deletion button to proceed.
Click on Accept to delete all the files from the chosen folder. If you do not
want to proceed simply click the back button in your browser.
The log file manager is quite simple and straightforward, allowing you to
monitor several activities within the DMS and helps to track errors or events.
The logs are rotated hourly, daily, or weekly. For each period one file is being
created. Log files will only be created if in the given period any activity has
happened.
Logs are created for the web frontend and the webdav part of the DMS. No
other log files will be created by SeedDMS.
To remove a single file, click the Remove file button on the same line, to
delete multiple file tick the checkboxes of the files you want to delete, then
0 1 SEEDDMS ADMINISTRATION 18
If you click on Download you will get a file with .log extension.
To view a log you can either simply click it’s name to show it’s content directly
in the browser window or you can click the View button to the right to open
the file within the integrated viewer.
Keyword lists are just an aid for entering keywords of documents. Even key-
words in none of the keyword lists can be assigned to a document by simply
0 1 SEEDDMS ADMINISTRATION 19
After you installed SeedDMS, the keywords section is empty, there are no
keyword sets delivered by default.
To add a new category select Add category from the dropdown menu.
Type the desired name for the new category and click the Add category button
to continue.
In the next step you can add the keywords to your keyword category. At
the time of writing you can only add one keyword at once, if you finished
entering click Add keywords to save and continue.
From time to time you may need to update your keywords or delete obsolete
ones. From the dropdown menu select the keyword category you want to
update.
Now you have the possibility to update or delete the keywords in the chosen
category. If you want to update the keywords keep in mind that you can only
change one keyword at the same time. Once you updated the keyword click
Save to write the value to the database.
To delete a keyword just hit the Delete button beside the keyword. Warning:
If you click on Delete the keyword will be deleted immediately. This can’t be
undone.
To delete a keyword category, repeat the steps above, but instead of deleting
a single keyword press the Remove category button to get rid of the category.
0 1 SEEDDMS ADMINISTRATION 21
All keywords within this category will be deleted as well. There will be no
warning message, once you click on Remove category, the category will be
removed immediately.
1.7 Categories
From the dropdown choose Add category, the input field appears to the right.
Enter the desired name of your category and click on Add category.
To rename or remove a category, select the category name from the dropdown
menu. To rename it, change the name and click the Save button, to remove it
click on Remove category to delete it. The change will take effect immediately
and can’t be undone.
A category cannot be deleted if there are still documents linked to this cate-
gory.
0 1 SEEDDMS ADMINISTRATION 22
1.8 Attributes
Attributes are like tags which can be attached to folders, documents, and
document content. The attribute definition determines
1.9 Workflows
This will update an already existing fulltext index. Depending on the size
of your DMS it can take several minutes to complete. Once completed, a
0 1 SEEDDMS ADMINISTRATION 23
This button can be used to create a new fulltext index (if you never had one be-
fore) or to re-create the already existing fulltext. Once completed a summary
will be displayed (see picture above).
Clicking on this button will display the information gathered from the fulltext
index. If the index is out of date, the number of documents or terms may not
match the current state of your DMS. Therefore it’s recommended that you
update the fulltext index prior to using the fulltext index info.
The fulltext index info displays the following information: Number of docu-
ments and their names, number of terms and the terms themselves, splitted in
categories comment, document_id, keywords, mimetype, origfilename, owner
and title.
This tool displays information of all folders and documents in your DMS.
A tree view is shown on the left hand side while information about access
rights (user and group rights are shown) and statistical data is shown at the
right hand side. Depending on the size of your DMS it can take some time to
calculate the tree.
0 1 SEEDDMS ADMINISTRATION 24
1.12 Charts
Here you can gather various statistical data, prepared in nice graphs. Cur-
rently the following charts are available: Documents per user, Diskspace per
user, Documents per mime-type, Documents per category, Documents per
status, New documents per month and Number of documents.
This error occurs if a database entry for a document is present, but no docu-
ment has been found in the document content directory on disk. This error
0 1 SEEDDMS ADMINISTRATION 25
cannot be fixed automatically. You need to check the file system for the docu-
ment. If it is there you should check if the permissions are set propperly.
This is just the opposite of the previous check. It checks if all files in the
content directory on disk have a reference in the database.
This error occurs if the file size entry within the database is missing or wrong.
Click on Set file size to repair this problem. SeedDMS will search the docu-
ment in the data folder and write the size into the database.
This error occurs if the documents checksum entry in the database is missing.
Documents listed in this section has content with the same checksum as con-
tent belonging to another document. This is not necessarily an error.
1.14 Timeline
If many document changes occured in the selected date range, then the dia-
gram can become very crowdy. In such a case just exclude some of the changes
by checking one or more of the check boxes below the date range.
Clicking on one of the boxes in the diagram will show additional information
about the affected document.
Figure 32: The SeedDMS extension manager with the demo extension in-
stalled.
This feature shows you the installed version of SeedDMS. If you have Internet
connection (through the browser, not the DMS server), it checks if there is a
more current version available and notifies you with a yellow bar as shown in
the example below.
2 Adding Content
The following sections will first discuss the different access rights and after-
wards introduce the various ways to fill SeedDMS with content.
The access rights on documents and folders in SeedDMS are very similar to
those found in most regular file systems on Linux system. There four access
rights are
• no access
• read access
• read and write access
• unlimited access
They can be granted to a user or group for each document or folder individ-
ually. Beyond this, some user roles have special access rights which always
apply and cannot be changed.
All other modifications to a document or folder just need read and write
access.
Folders can be added by clicking on the ’Add Subfolder’ menu item in ’Folder
menu’.
This will open a page containing a form with input fields for the name, com-
ment and position of the new folder.
0 2 ADDING CONTENT 31
The only required field in this form is the name of the folder. The field Se-
quence sets the position of the new folder relative to existing subfolders, which
would be listed if there were any. In this particular case, there is no other sub-
folder and the only option is At the end. The warning below the select menu
is due to the fact, that the current sort method in the folder and document
listings is not set to sequence. So setting a position is possible but will have no
effect until the sort method is changed.
Once you have added user defined attributes the formular will contain more
input fields.
The most common way to add a document is by uploading a file from your
local computer.
0 2 ADDING CONTENT 32
The form for uploading a document is split into several sections. For now,
only the upper two sections Document information and Version information are
of interest. The document information will be displayed in all lists and de-
picts all versions of the document. The version information is only related
to the particular file, that is going to be uploaded. Documents have a name,
comment and position just like folders. Additionally a document can have
keywords, an expiration date and can be assigned to predefined categories.
The version has its own comment and a version number which is preset to 1.
The only required field to be set is the local file. Not even the document name
is required. It is taken from the uploaded file if not set explicitly.
If you set a comment, then keep in mind that document comments should be
applicable to all futher versions of the document. Comments like ’added more
info on how to install software’ is likely to be version specific and should be
stored in the version comment. A reasonable document comment would be
’Official Handbook for storing documents in SeedDMS’.
The expiration date of a document defines when the document becomes in-
valid. This will not have any influence on the accessibility of the document,
0 2 ADDING CONTENT 33
A convinient way to upload one or more files into the dms is the so called
’Fast upload’ option, which must be turned on in the configuration. It will
add a new section, next to the folder informationon on the folder view page.
Dragging one or more files from your local computer and dropping it onto
the yellow area, will upload each file as a new document into the current
folder. As there is no way to set any of the document nor version attributes,
the document name will be taken from the file name and the document will
be released right away.
After successful upload, a button with a link to the Edit document page will be
shown.
0 2 ADDING CONTENT 34
Uploading files by web formulars is often a tedious work and takes a con-
siderable amount of time if lots of documents or large documents have to be
added. In such situation it is often easier to upload the documents on the
server first (e.g. by rsync, ftp, nfs) and import them from there into SeedDMS.
It may even the case that the documents are already on server because, e.g. a
scanner has placed them there. The requirement for this to function to work,
is a folder on the servers file system, which is called Drop folder by SeedDMS
and must be configured in the configuration. The drop folder must have sub
directory with the same identical to the login name of those users, who are
allowed to use the drop folder. If that is the case, the upload form will have a
new field for choosing a file from the drop folder instead of uploading it.
Figure 39: Input field for uploading a file from the drop folder
The file from the drop folder will only be used, if the Local file field remains
empty. Clicking on the Choose file button is going to open a list of files within
the drop folder.
0 2 ADDING CONTENT 35
Figure 40: Dialog for choosing a file from the drop folder
For more than one file or possibly a complete file system structure containing
not just documents but also folders, there is second way to import files, which
also uses the drop folder. As this can be used to import massive amounts of
data, its use is restricted to administrators only. It can be found in the Misc
menu item on the Admin-Tool page.
Figure 41: Formular for importing files from the file system on the server
As the target folder in SeedDMS is not implicitly set, it must be set in the
first input field. The second field is similar to the file chooser on the Add
document page, but chooses a directory instead of a file from the drop folder.
The content of the selected directory is imported recursively into the target
folder.
2.3.4 WebDAV
a buildin WebDAV Server which provides access to all folders and documents.
All common operating systems and some applications (e.g. LibreOffice) have
client implementations of WebDAV.
2.3.5 PHP-Script
SeedDMS uses a very modular structure which seperates the database and file
operations (SeedDMS_Core) from the web application, the WebDAV Server
and the REST Api. Based on SeedDMS_Core other applications are possible.
Command line PHP scripts are one way to automate many processes and
can be used to import files into SeedDMS. The utils directory shipped with
SeedDMS contains some examples for adding documents and creating folders.
3 Configuration
This part of the documentation describes the various settings which can be
configured within SeedDMS. Advanced users can as well adapt the settings
in the file settings.xml with a regular editor. The configuration is split into
three sections.
Default language Language use for the user interface. English (GB)
If the language selector is enabled,
users can choose a different lan-
guage for their account.
Default theme The default style of the user interface bootstrap
If Theme selection is enabled, users
can change the used style for their
account.
Width of preview Define the width of preview images 40
images (list) used in lists.
Width of preview Define the width of preview images 100
images (detail) used in detail view.
Show complete Shows a full preview on the details Disabled
document page. This will only work for some
mimetypes which can be displayed
by the browser
Convert docu- Documents which cannot be pre- Disabled
ment to PDF for viewed will will be converted to pdf.
preview This is only implemented for some
office documents.
Strict Form check If enabled, then all fields in the Disabled
form will be checked for a value.
If unchecked, then (most) comments
and keyword fields become op-
tional. Comments are always re-
quired when submitting a review or
overriding document status
View Online File Define the file extensions which can .txt;.text;.html;
Types be viewed directly in the DMS with- .htm;.xml.pdf;.gif;
out prior download. .png;.jpg;.jpeg
Edit Online File Define the file extensions which can
Types be edited online. Only lower case
characters are accepted for exten-
sions.
Enable Convert- Enable or disable the conversion of Enabled
ing files. (not used anymore)
Enable E-mail Enables or disables the automated Enabled
email notifications.
Enable Users If checked, users can see users and Enabled
View groups set up within the DMS.
Enable Full text Enables or disables the full text Disabled
search search engine.
0 3 CONFIGURATION 38
SeedDMS depends on the help of external commands which are used to ex-
tract the text from a file with a given mimetype for feeding it into the full text
search engine. The commands are usually predefined in the configuration
shipped with SeedDMS but can all be changed or removed. Each command
must be able to read the document file and write a textual representation in
utf-8 format to stdout. That output data can be the content of the file, meta
data extracted from the document, the result of a character or speech recogni-
tion process. The input file is represented by the placeholder ’%s’. Only the
text of the latest document version will be fed into the full text search engine.
The two empty fields at the end of the list are for defining commands for
further mimetypes. Deleting a command will remove the complete definition
from the list. The string for the mimetype may either be the exact name of the
mimetype, or just the part of the mimetype left to the / suffixed with /* (e.g.
image/*), or just a *. The * stands for any string. Mimetypes are checked from
top to bottom and the command of the first matching mimetype will be used.
Hence, place mimetypes with wildcards at the end of the list.
The section about the fulltext Indexing contains a list of commonly used com-
mands for indexing various file formats.
SeedDMS cannot create preview images by itself but calls external programs
which create a png image from the document, which is cached by SeedDMS.
Preview images are currently created in two sizes. One size for document lists
and another size for the document details page. Usually the preview for the
document details page is larger than for the document list, but this does not
have to be so. The width of each preview image can be set in the settings as
well.
0 4 FULLTEXT 46
The command for creating the preview contains three mandatory placeholders
and one optional placeholder which are filled out by SeedDMS before the
command is executed.
The mimetype may contain a wildcard * which has the same meaning as
already described in the section Commands for extracting text from files.
SeedDMS can use external programs to convert a document into pdf and show
the result on the document’s details page, if Convert document to pdf for preview
is turned on. The resulting pdf document is cached just like preview images.
The overall process is similar to the creation of preview images, except for the
output format (which is pdf) and the placeholder %w, which is not available.
4 Fulltext
Basically, SeedDMS can index any document type as long as there is a piece of
software that converts the content into a plain text. The command to execute
this conversion process must be configured in the settings per mime type.
The command expects a filename and must output the text to stdout. The
0 4 FULLTEXT 47
• The older one is based on lucene and is provided by the Zend Frame-
work
The one to be used must be configured in the settings. While the lucene
based indexing is quite mature and stable it is also quite slow when indexing
documents. The sqlite based indexing is available since version 4.3.20 and is
much faster.
4.1 Indexing
When a document is uploaded only its meta data is indexed by default. The
indexing of the content must done later, either by running the indexer as a
cron job or in the admin tools. Consequently, a document can be found after
upload only by its meta data. This behaviour can be changed by setting the
configuration variable ’Maximum filesize for instant indexing’. Documents
with a size below this integer value will also be indexed by content right after
upload. Keep in mind, that indexing large documents may take some time
which will delay the upload process. Setting this configuration variable to 0
turns off the instant indexing of the document content.
When a document is deleted it will also be removed from the fulltext engine.
The management of the full index itself is done by three function in the admin
tools
Creating a fulltext index will remove an existing one and indexes all docu-
ments again. The may take some time and should not be necessary unless
you change the fulltext engine or want to make sure that your fulltext index
is in any case up to date. The indexing will in any case only read the latest
version of a document. Previous versions will not be indexed.
Once you start indexing documents, you will see a page with a hierachical list
of all documents and two progress bars on top of that page. The list contains
the names and the current status of all documents. Possible states are
• document unchanged
• Pending
• Processing ...
• Done
A document with status ’document unchanged’ will not be indexed again, be-
cause it has not been updated since the last indexing. If a document needs to
0 4 FULLTEXT 49
The admin tools contain besides updating and creating a fulltext index a third
function to list the current data in the fulltext index. It is helpful to check
whether the indexing is working at all. Once more documents are being in-
dexed the page gets quite large and may take some to fully load. There are
several sections on the page containing the terms which were indexed in the
meta data fields and the content. The by far largest section is titled ’content’.
It lists all terms found in the document’s content.
• Zend Lucene
• SQLiteFS
Zend Lucene is available since version 3.2.0 of SeedDMS. SQLiteFS has been
introduced in version 4.3.20. Both work well, thought SQLiteFS is faster and
does not depend on the Zend Framework which is only part of the distribution
because of the Zend Lucene fulltext engine. Hence, if you use SQLiteFS, you
will not need the Zend Framework for SeedDMS anymore.
The fulltext index can only index plain text content and reads it from the
standard output of a program. Hence, SeedDMS relies on external programs
which do the conversion of arbitrary file formats and provide an utf-8 encod-
ing output stream. Those commands need to be configured for each mimetype
in the configuration of SeedDMS. The command may contain the placeholder
%s which stands for the name of the file to be indexed. SeedDMS will fill in
the name, call the external program and index the text written to standard
out. This rather generic process allows to index almost any kind of file if
appropriate software is available, e.g. optical character recognition or speech
recognition software.
The following table contains some common commands which can be used on
a Linux/Unix system, if the required software is installed. If the programs are
0 5 WORKFLOWS 50
not installed within your search path, you might specify the complete path to
the program.
5 Workflows
Traditional workflow engine The traditional workflow is named like this, be-
cause it exists in SeedDMS (and its predecessors) for quite some time
and has been proven to cover many real world workflows. The tradi-
tional workflow has only one or two steps but a very flexible assignment
of users and groups to each step.
Advanced workflow engine The advanced workflow has been introduced in
version 4.0.0 of SeedDMS. It allows to have any number of steps and
even branching into subworkflows. Each step, the actions taken and the
users or groups involved can be defined and stored for later assignment
to a document.
This must continuously happen until the document is accepted and can be re-
leased. It is up to the person or group in charge for the document to keep this
cycle running. SeedDMS will support the user in finding document version
that has been rejected.
Whether you use the traditional or the advanced workflow engine mostly de-
pends on the complexity of your workflow. The decision is done globally for
all documents. There is no way to choose a workflow engine on document
basis. This can impose problems, if you start with one worklfow engine and
switch to the other one later. All documents still in the middle of the work-
flow cannot be finished, because the user interface will not allow it. Those
documents will remain in their last status until you switch back to the work-
flow engine used before and finish them. The easiest way to find out, whether
there are still documents within a workflow, is by searching for them.
Though, if you decide at some point to switch the workflow engine (e.g. for
testing purposes), then this will be possible. The switch itself does do any
modifications to the documents. Just take the above in mind, if you intend to
make a permanent switch.
Two very common workflows are the review/approve-workflow and the sim-
pler approve-workflow. Both can be done with the traditional workflow en-
gine. The approve-workflow is actually a review/approve-workflow without
0 5 WORKFLOWS 52
the review step. The decision on which one to use can either be done globally,
by configuring a traditional workflow engine without review in the settings or by
simply not assigning any reviewers to the document. If globally configured,
SeedDMS will not even provide input fields for entering reviewers, which
may be less confusing for users. No matter whether you use choose the one
or two step workflow, the persons assigned as approvers/reviewers have to
decide if a document may reach the next step or not. Technically both steps
are identical, they just use a different wording. Initiating a workflow is done
by setting approvers/reviewers when a document or a new document version
is added.
For more complex workflows the advanced workflow engine must be used. It
enables the user to define workflows with any number of steps, self defined
states and actions, and even sub workflows. The users involved in the work-
flow has to be set when defining the workflow, which is a major difference to
the traditional workflow engine, where the users doing the approval/review
are set when the document version is created. This makes the advanced work-
flow much more controlled by the administrator, who also defines the work-
flow. The users will not be able to add any users or groups to the workflow,
they just select one of the predefined workflows when adding a document or
a new document version.
into other states until no more transitions are possible. A final state in
the workflow is reached, when the state is associated with a document
status.
state: The current status of the workflow. A state can be for example ’rejected’,
’legally approved’, ’waiting for qm’. The workflow traverses from state
to state when transitions are executed. A workflow state is not to be
confused with a document state. Technically speaking, states are the
nodes in the workflow graph.
transition: A transition is the change from one state to the next state. Tran-
sitions are the edges of the workflow graph. A transition can only be
triggered by a given list of users and groups, when a defined action is
run. Such an action can be ’approve’, ’revise’, ’reject’, etc. transitions
may need more than one trigger to execute, e.g. if several users have to
approve a document.
trigger versus execute a transition: If a user runs an action on a document
version which possibly changes the state, then this is called triggering a
transition. If the workflow state changes, than this is called executing a
transition. Currently, triggering means that the user clicks on a button
and comments the action. Such a trigger may or may not be sufficient
to execute the transition, because there could be other users which also
have to trigger the transition. After each trigger of a transition it will
be checked whether all conditions are met to execute the transition and
whether to proceed to the next workflow state. Triggers are currently
only implemented for user interaction, but other triggers may be added
in the future.
action: the actual operation run on the document version. Each transition has
an action which when run, triggers the transition. Actions just have a
name and are basically for giving the trigger a contextual meaning.
sub workflow: The modelling of a sub workflow is identical to a regular
workflow. Any workflow can be used as a sub workflow. Branching
into a sub workflow is only possible if the current state is equal to the
initial state of the sub workflow and the user is allowed to trigger the
next transition in the current workflow.
A workflow and a sub workflow are just a list of transitions and an initial
state. There is no principal difference between the two and they are equally
modelled. Starting from an initial state there are a number of possible transi-
tions ending in a new state. Each transition can only be triggered if the user
has the right to do so.
workflow state is equal to the initial state of the sub workflow. In order to
return to the parent workflow two conditions must be met:
1. the state of the sub workflow must be a valid state in the parent work-
flow
2. the person initiating the return to the parent workflow must be allowed
to trigger the transition which was replaced by the sub workflow
The second condition requires all end states in the sub workflow, also being a
state in the parent workflow. Currently this is not checked before entering the
sub workflow.
A workflow can be assigned to a document version just like any other attribute
if the user has sufficient rights. Once a workflow is assigned, the document
version will change its document status to in workflow. As long as the work-
flow has not left its initial state, it can be removed from the document version
by any users with write permission on the document. Once it has left the
initial state it cannot be removed without rewinding the workflow to its initial
state. Rewinding the workflow will remove the log of triggered transitions
and set the document status on the initial state of the workflow. Rewinding
can only be done by administrators. The same procedure is true for sub work-
flows as well. Once a sub workflow has started it can only be left as long as it
is in its initial state or has reached a state in the parent workflow. Leaving a
workflow in between will required to rewind it to the beginning and dismiss
all transitions done so far.
While traversing the workflow, various users and groups are put in charge
to trigger a workflow transition. This requires at least read access on the
document, otherwise the user will not be able to access the document at all.
As there is no way to ensure read access for all involved users and groups
when the workflow is started, it will be checked whenever a new workflow
state is reached. All users and groups involved in the next transition will get
read access on the document, if it is missing. This read access will remain,
even after the document has left the workflow.
Creating a workflow can be very error prone, because various conditions have
to be met for a working workflow. The workflow manager tries to detect most
errors when creating the workflow. Errors which are being detected are:
SeedDMS does not keep you from using a workflow with one of the above
errors. The last condition may sound restrictive as there are real world work-
flows, which for example require to recheck a document once it was modified.
SeedDMS will not handle this in a single workflow, because editing a docu-
ment will result in a new document version which will start a new workflow.
Internally both steps are modelled with a list of users or groups (reviewers
or approvers), each having a list of operations done. Those lists are called
the review or approval log. Each entry in the log has a status, a comment,
and a user who has initiated the operation. Such a user can be the person
in charge for approving or rejecting the workflow step or any user allowed to
manipulate the workflow. Such an operation is for example the initial setup of
the workflow step, the deletion of the user from the workflow or the approval
or rejection of a workflow step. The document status is recalculated from the
last entries in the approval or review logs, whenever a new entry is added. In
the traditional workflow the workflow steps reflects the document status. This
differs from the advanced workflow where all workflow states are mapped
onto the document status ’in workflow’.
In a very simple example with just one user having to approve a document
there will be accordingly just one entry in the list of approvers and initially
also just one entry in the approval log indicating the start of the workflow and
also that there has been no action by the user so far. Once the user has ap-
proved the document the approval log will contain a second entry indicating
the approval and also containing the user’s comment. As this is the only user
in charge for approving the document, the document status will imediately
change to ’approved’. Keep in mind, that document status actually means the
status of the latest version. Be aware, that the same could happen if that only
user was removed, either as a approver or by deleting the whole user. In that
case the last log entry indicates the removal of that user, but that also means
there is no user in charge anymore for approving the document, just like the
approver has never been added. The document will be released.
user being a member of that group may review or approve the document and
it is sufficient if just one member of that group does the review or approval to
finish the workflow step.
Review and approval is only possible if the user/group has at least read ac-
cess rights on the document. For that reason the list of users/groups be-
ing selectable when adding a reviewer or approver is possibly missing some
users/groups. It is also imaginable that a user/group has been taken away
read access or the user being disabled after the user/group was assigned
as a reviewer/approver. In that case the document version can not be re-
view/approved anymore by that user/group, though the user will still have
that document counted on the my documents page. It is up to the admin-
istrator to resolve this issue either by granting read access or by replac-
ing/removing the user/group as an reviewer/approver. The list of review-
ers/approvers will also have a warning if a certain user cannot fullfil his/her
task.
Removing a user may also effect the workflow of a document. First of all
the removal of the user will remove him/her from all workflows, by adding
a log entry indicating that the user has been removed. Second the user will
be removed as a mandatory reviewer/approver from all other users, which
allows them to upload documents without review/approval, if this was the
only mandatory user.
The second case may allow users which previously had a mandatory re-
viewer/approver to upload documents without additional review/approval.
0 6 NOTIFICATION 57
6 Notification
In order to add a notification the user must have read access on the document
or folder. Each folder and document may have any number of notifications,
which is called the notification list of that document or folder. The notification
list will be cleaned up, whenn the access rights of the folder or document
change. Users or groups who loose read access will automatically be removed
from the notification list.
Notification must be explicitly set, but there is one exception. If ’Enable re-
viewer/approver notification’ or ’Send notification to users in next workflow
transition’ is set in the configuration then all users and groups involved in
the next workflow step will be notified. There is no way to turn this off for
individual documents, because the notification is rather implizit and cannot
be removed from the document.
added to the new document, just like it was added manually. This can be re-
moved at any time later and it will be removed automatically if the user looses
read access on the document. But, if the owner of the document changes, the
original owner will keep the notification. There is no way to tell later if the
notification was added automatically or manually.
SeedDMS distinguishes between the action that triggers a notification and the
type of notification. Actions can trigger several notifications and a certain type
of notification can be triggered by different actions.
6.2 Actions
Document added: Notifications are send to all users and groups watching
the new document and its parent folder. If ’Enable owner notification
by default’ is turned on, the owner of the document will automatically
be added to the list of notifications of the new document. If ’Enable
reviewer/approver notification’ and the traditional workflow mode is
turned on the reviewer will be notified or if there is not reviewer the
approver will be notified. If ’Send notification to users in next work-
flow transition’ and the advanced workflow is turned on, the users and
groups involved in the first workflow step will be notified.
Folder added: Notifications are send to all users and groups watching the
new folder and its parent folder.
Folder deleted: Notifications are send to all users and groups watching the
folder to be deleted.
Document deleted: Notifications are send to all users and groups watching
the document to be deleted and its parent folder.
Document moved: Notifications are send to all users and groups watching
the document to be moved, the old folder and the new folder.
Folder moved: Notifications are send to all users and groups watching the
folder to be moved, the old folder and the new folder.
0 6 NOTIFICATION 60
Document attributes changed Notifications are send to all users (plus the
owner of the document, if he or she is not currently logged in) and
groups watching the document. This action can trigger the notifications
’Document name changed’, ’Document comment changed’ and ’Docu-
ment expiration date changed’
Folder attributes changed Notifications are send to all users (plus the owner
of the folder, if he or she is not currently logged in) and groups watch-
ing the folder. This action can trigger the notifications ’Folder name
changed’, ’Folder comment changed’
Document owner changed Notifications are send to all users and groups
watching the document.
Folder owner changed Notifications are send to all users and groups watch-
ing the folder.
Document access permission changed Notifications are send to all users and
groups watching the document.
Folder access permission changed Notifications are send to all users and
groups watching the folder.
Document expiration date changed Notifications are send to all users (plus
the owner of the document, if he or she is not currently logged in) and
groups watching the document.
Document approved Notifications are send to all users and groups watching
the document. This may result in two notifications. One for submitting
an approval and one for a possible document status change.
Document reviewed Notifications are send to all users and groups watching
the document and the user who as uploaded the document version. This
may result in two notifications. One for submitting a review and one for
a possible document status change.
Workflow set Notifications are send to those users and groups who are in-
volved in the first workflow step.
Workflow transition triggered Notifications of type ’Request workflow ac-
tion’ are send to those users and groups who are involved in the next
workflow step. Notifications of type ’Workflow transition triggered’ are
send to all users and groups watching the document.
0 7 AUTHENTICATION 61
7 Authentication
SeedDMS has various mechanism to ensure passwords are save and hard to
compromise. SeedDMS can keep track on how old a password is and whether
a password has been used before, when the user is forced to choose a new
one. Passwords can be forced to have at least a given strength. There are two
possible strength algorithms. A rather simple one that takes the length and
the used chars into account, and thh advanced algorithm, which takes various
aspects into account, like the length, the use of special chars, the entropy of
the password, etc.
7.3 Roles
Guest logins have a password, just like any other account, but it is also possi-
ble to specify a guest login, which can be used to login without a password. A
guest login is only possible if explicitly allowed in the configuration. The login
page will then contain a link ’Login as guest’, which will login the configured
guest user without asking for a password. You can even allow automatic lo-
gin, if any other page of SeedDMS is accessed and there is currently no user
logged in. Turn this on by checking ’Enable auto login for guest’ in the con-
figuration.
8 Data Model
The underlying data model of SeedDMS is very similar to a regular file system
with documents and folders being organized in a hierarchical structure. Fold-
ers can contain subfolders and documents. Both are owned by a certain user
and have access restrictions for reading and writing. Besides that, SeedDMS
offers more features not regularly found in a file system:
The data model is fully implemented in what is called the SeedDMS Core. It
does all the database operations. Quite often the core provides a very basic
0 8 DATA MODEL 63
access on the data in general and puts no meaning to concepts like a document
status or access rights. It is up to the web application and the user interface
to provide reasonable operations by taking e.g. a document status or access
rights into account.
8.1 Document
• Name
• Comment
• Owner
• Keywords
• Access rights
• Date of creation
• Date of expiration
• Version number
• Comment
• Creator
• Mimetype
• Original filename
• File size
• Checksum
• Date of creation
Both, document and version have its own comment. For a document with just
one version, which is also unlikely to be updated in the future, the document
comment is more reasonable to be used. If there are more versions to come,
then choose a comment for the document that is unrelated to a specific ver-
sion and put those additional information related to the version itself into the
version comment.
Keywords can only be added to a document. In the data model this can be
any text, but SeedDMS provides a user interface to select keywords from a
predefined list and stores them comma separated into this attribute. Remov-
ing a keyword from one of the predefined lists will not remove the keyword
from the document.
The owner of the document is initially set by SeedDMS to the currently logged
in user, when a new document is created. The owner can be changed later
by the administrator. The owner is always somebody from the list of user
accounts. Being the owner of a document means to have full access on the
document. If other users are allowed to modify the document, they will also
be able to add new versions. The creator of such a version will be set to the
user adding the version. There are no access rights derived from the creator.
It is just for an informational purpose. The owner of the document remains
the user having done the initial creation of the document unless the owner is
changed afterwards.
Access rights will be discussed in detail later on. Just one note: access right
do not take the version into account. If a user has a particular access right on
a document, it has it for each version as well, regardless on who added that
version.
The date of creation is something stored for both documents and versions. For
the first version the date of creation is identical to the date of creation of the
document (though in theory they could differ because of minimal time lack
between the creation of the two). Later versions will have the current time.
The document creation date will never be updated.
A document has another date which specifies the point in time when the doc-
ument expires. Thought this date is a property of a document it has influence
on the status of the last version (see below for more information on the doc-
ument status). The way SeedDMS handles this is mostly driven by the user
interface and not the underlying core of SeedDMS. The core just provides
methods to set the expiration date and to recalculate the status of the latest
version. It is the user interface which calls those methods when needed.
A version has some more specific properties which are related to the actual
file being stored. The mimetype, file size and checksum could be derived
from the file itself but are also stored in the database for better performance,
security and redundancy. The original file name is the name provided by the
browser when the file was uploaded. It would get lost, if it was not stored in
the database, because SeedDMS renames the file when put into the data store.
The mimetype is either provided by the browser or determined on the server
when a new version of a document is uploaded. In general it is good advice to
let the server determine the mimetype, because browsers often deliver slightly
different mimetypes for the same file format which complicates the generation
of the preview images and fulltext index. The checksum of an uploaded file
is always calculated on the server. It is used to discover modifications of a
document content.
8.1.1 Status
• released
• expired
• obsolete
• waiting for review
• waiting for approval
• in workflow
• rejected
The first three values are possible for any document, the other values are only
possible for documents in the traditional or advanced workflow.
The status is not stored as a single value but as a list of status changes. Each
change will add a new entry containing the date of change, the new status, a
0 8 DATA MODEL 66
comment and the user in charge for the change. The core of SeedDMS pro-
vides methods for modifying this list of changes directly, but most of the time
this is done by a method which checks various parameters and recalculates a
new status, e.g. reviewing a document version. The core just keeps track of
the document status but does not interpret it in any way. This means for ex-
ample, that expired or obsolete document versions can still be altered at will.
It is completely up to the application to give the document status a meaning
and possibly restrict certain operations on a document.
8.1.2 Links
8.1.3 Attachments
Attachments are very much like attachments known from emails. It can be
any file associated with the document. Attachments have a name, a comment
and are always public if the document is readable by the user. All other
regular users will see the attachment only if it is explicitly marked public.
Since SeedDMS 5.1.0 attachments can be either linked to the document or a
specific version of the document. Files attached to a version of a document
will be deleted when the version itself is deleted.
8.1.4 Categories
8.2 Folder
Folders are containers for other folders (subfolders) and documents. Folders
have a very similar set of attributes like documents:
0 DOCUTILS SYSTEM MESSAGES 67
• Name
• Comment
• Owner
• Access rights
• Date of creation
8.3 Attributes
Beside some already described hard coded attributes - folder, documents and
versions can have user defined attributes. These attributes are key/value pairs
complying with an attribute definition previously set up by the administrator.
Attribute definitions declare various properties of an attribute:
The object type can limit the scope of where an attribute may be used. If it
is not set, it may be used for folders, documents and versions. The minimum
value determines whether an attribute is required. Any value greater then 0
will make the attribute mandatory. The maximum number of values is only
usable if a set of values is given. The regular expression is only used for
attributes of type string. SeedDMS core will not enforce any of the restrictions
mentioned above. The database will store the attribute value always as a
string. A given value set must be in the form <sep><value><sep><value>...
with <sep> (separator) being any character not used in a value itself. Any
white space right after and before a separator will be removed, when the
attribute definition is saved.
system-message
ERROR/3 in administration.txt, line 630
Duplicate target name, cannot be used as a unique reference: "work-
flows".